changelog

{data.name} Sami Fouad made a commit to samifouad/cqx

v0.1.24

0.1.23 published four platform packages and not the CLI, so the version is burned. Nothing referenced it: the CLI never published, and the platform packages are not meant to be depended on directly.

Verified
+12 -12
Sep 22

{data.name} Sami Fouad made a commit to samifouad/cqx

lock the new version too

Cargo.toml moved to 0.1.23 and the lock did not, so every build failed with --locked refusing to update it.

Verified
+11 -11
Sep 22

{data.name} Sami Fouad made a commit to samifouad/cqx

v0.1.23

First release under @cqxai. The bin is still cqx and the install line people have in their notes still works; only the scope moved.

Verified
+1 -1
Sep 22

{data.name} Sami Fouad made a commit to samifouad/cqx

the CLI publishes as @cqxai/cli

The bare name cqx on npm belongs to somebody else entirely and always did, so scoping was never a choice. What changes is only the scope: the bin is still cqx, and npm i -g @cqxai/cli still gives you the command you typed before.

Four platform packages carry the executables as optional dependencies with os and cpu set, so a machine fetches the one binary it can run rather than all four.

Verified
+188 -135
Sep 22

{data.name} Sami Fouad made a commit to samifouad/cqx

Move npm CLI and platform packages to @cqxai

Verified
+188 -135
Sep 22

{data.name} Sami Fouad made a commit to samifouad/cqx

Merge pull request #49 from samifouad/claude/mcp-session

expose the MCP dispatch, so stdio is not the only way in

Verified
+52 -5
Sep 21

{data.name} Sami Fouad made a commit to samifouad/cqx

expose the MCP dispatch, so stdio is not the only way in

cqx mcp reads lines from stdin, and that is one transport rather than the only one. The desktop application wants to serve the same tools over HTTP on a port — so that an agent talks to the process that already has the tree warm instead of starting a fresh one for every question, and so that configuring an agent writes a URL rather than hunting for a binary on PATH.

What it must not be is a second implementation. An HTTP caller that answered tools/list from its own table would drift from this one, and the drift would show up as an agent that can see a tool it cannot call.

So Session is public, with new and handle(line) -> Option<String>, and the stdio loop uses the same type it always did. None still means the message was a notification: stdio writes nothing, and an HTTP caller answers 202 with no body.

The test is the door rather than the room — it goes through the exported type and counts five tools, because the way this breaks is somebody writing the second table.

Verified
+52 -5
Sep 21

{data.name} Sami Fouad made a commit to samifouad/cqx

Merge pull request #48 from samifouad/claude/propose-from

let a caller bring its own idea of what is in force

Verified
+85 -3
Sep 21

{data.name} Sami Fouad made a commit to samifouad/cqx

let a caller bring its own idea of what is in force

propose works out the current configuration by resolving the repository, which is right for the CLI and wrong for the desktop application. There, rules can come from ~/.config/cqx/rules.json when a repository has no cqx.json of its own — so "what is in force" is not something resolve can work out from the repository alone.

The second half matters more. When that application writes a repository's first cqx.json, the file has to be seeded from what was in force. Write one field into an empty document and every other setting silently falls back to a default: the change reports as one tightening while actually being several loosenings, and the ratchet would have approved it.

So propose_from takes the document and the configuration it produces, and propose becomes the two-line version that resolves them itself. Same classification, same writer, one more caller that cannot disagree with the others.

The test is the case itself: two rules already stricter than the defaults, coming from somewhere the repository cannot see. Seeded, one change is one change and the other two survive into the file. Unseeded, the document really does drop them.

Verified
+85 -3
Sep 21

{data.name} Sami Fouad made a commit to samifouad/cqx

Merge pull request #47 from samifouad/claude/propose-rule

propose_rule: an agent can raise the standard and cannot lower it

Verified
+796 -161
Sep 21