cargo-hauler 0.9.7 → 0.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/.claude-plugin/marketplace.json +1 -1
  3. package/dist/.claude-plugin/plugin.json +1 -1
  4. package/dist/.codex-plugin/plugin.json +1 -1
  5. package/dist/.cursor-plugin/plugin.json +1 -1
  6. package/dist/INSTALL.md +35 -34
  7. package/dist/agent-bundle.compile-evidence.json +1 -1
  8. package/dist/agent-bundle.manifest.json +1 -1
  9. package/dist/agent-bundle.package-compile-evidence.json +1 -1
  10. package/dist/bin/cargo-hauler-flight.mjs +899 -290
  11. package/dist/bin/cargo-hauler-install.js +1074 -1078
  12. package/dist/bin/cargo-hauler.mjs +1173 -721
  13. package/dist/bin/hauler.js +163 -109
  14. package/dist/hooks/event-route-session-start.claude.mjs +1084 -1128
  15. package/dist/hooks/event-route-session-start.codex.mjs +1084 -1128
  16. package/dist/hooks/event-route-session-start.cursor.mjs +1084 -1128
  17. package/dist/hooks/event-route-stop.claude.mjs +1084 -1128
  18. package/dist/hooks/event-route-stop.codex.mjs +1084 -1128
  19. package/dist/hooks/event-route-stop.cursor.mjs +1084 -1128
  20. package/dist/hooks/event-route-tool-after.claude.execute.mjs +1084 -1128
  21. package/dist/hooks/event-route-tool-after.claude.mjs +1029 -813
  22. package/dist/hooks/event-route-tool-after.codex.execute.mjs +1084 -1128
  23. package/dist/hooks/event-route-tool-after.codex.mjs +1029 -813
  24. package/dist/hooks/event-route-tool-after.cursor.execute.mjs +1084 -1128
  25. package/dist/hooks/event-route-tool-after.cursor.mjs +1029 -813
  26. package/dist/hooks/event-route-tool-before.claude.execute.mjs +1084 -1128
  27. package/dist/hooks/event-route-tool-before.claude.mjs +1024 -808
  28. package/dist/hooks/event-route-tool-before.codex.execute.mjs +1084 -1128
  29. package/dist/hooks/event-route-tool-before.codex.mjs +1024 -808
  30. package/dist/hooks/event-route-tool-before.cursor.execute.mjs +1084 -1128
  31. package/dist/hooks/event-route-tool-before.cursor.mjs +1024 -808
  32. package/dist/hooks/hooks-flight.mjs +58 -91
  33. package/dist/install.mjs +66 -142
  34. package/dist/mcp/mcp-hauler-2b8242f9-flight.mjs +311 -348
  35. package/dist/mcp/mcp-hauler-2b8242f9.mjs +1390 -1378
  36. package/dist/mcp-apps/dashboard.html +2 -2
  37. package/dist/package.json +3 -3
  38. package/dist/plugin.json +1 -1
  39. package/dist/scripts/hauler.mjs +163 -109
  40. package/dist/skills/hauler-dashboard/SKILL.md +1 -1
  41. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.8
4
+
5
+ ### Patch Changes
6
+
7
+ - 1c3691f: Build against agent-bundle main (`1d661b4`). The `hauler_*` MCP tools are `defineTool` definitions, which agent-bundle now requires. Tool names, inputs, results, and `hauler` CLI commands are unchanged. Built artifacts no longer embed the checkout path, so the same commit builds to the same bytes in any directory.
8
+ - 1ba9a1d: The daemon scans the kache index in a worker thread, so a large index no longer stalls `hauler status`, ticket reads, or pings while it refreshes. A 4.5 GB index held the socket for about 590 ms per refresh; it now answers within a few milliseconds. The kache section names why the index could not be read (`not detected`, `index unreadable`, or `index read timed out` after 30 s) instead of reporting every failure as not detected.
9
+
3
10
  ## 0.9.7
4
11
 
5
12
  ### Patch Changes
@@ -1 +1 @@
1
- {"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","name":"cargo-hauler-marketplace","owner":{"name":"cargo-hauler"},"plugins":[{"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","keywords":["cargo","rust","agent","mcp","claude-code","codex","cursor","build-orchestration"],"license":"MIT","name":"cargo-hauler","repository":"https://github.com/ScriptedAlchemy/cargo-hauler","source":"./","version":"0.9.7"}]}
1
+ {"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","name":"cargo-hauler-marketplace","owner":{"name":"cargo-hauler"},"plugins":[{"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","keywords":["cargo","rust","agent","mcp","claude-code","codex","cursor","build-orchestration"],"license":"MIT","name":"cargo-hauler","repository":"https://github.com/ScriptedAlchemy/cargo-hauler","source":"./","version":"0.9.8"}]}
@@ -1 +1 @@
1
- {"author":{"name":"cargo-hauler"},"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","name":"cargo-hauler","version":"0.9.7"}
1
+ {"author":{"name":"cargo-hauler"},"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","name":"cargo-hauler","version":"0.9.8"}
@@ -1 +1 @@
1
- {"author":{"name":"cargo-hauler"},"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","hooks":"./.codex-plugin/hooks.json","interface":{"capabilities":["mcp","hooks","skills"],"category":"Productivity","defaultPrompt":["Help me use cargo-hauler."],"developerName":"cargo-hauler","displayName":"cargo-hauler","longDescription":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","shortDescription":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks."},"keywords":["cargo","rust","agent","mcp","claude-code","codex","cursor","build-orchestration"],"license":"MIT","mcpServers":"./.codex-plugin/mcp.json","name":"cargo-hauler","repository":"https://github.com/ScriptedAlchemy/cargo-hauler","skills":"./skills/","version":"0.9.7"}
1
+ {"author":{"name":"cargo-hauler"},"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","hooks":"./.codex-plugin/hooks.json","interface":{"capabilities":["mcp","hooks","skills"],"category":"Productivity","defaultPrompt":["Help me use cargo-hauler."],"developerName":"cargo-hauler","displayName":"cargo-hauler","longDescription":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","shortDescription":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks."},"keywords":["cargo","rust","agent","mcp","claude-code","codex","cursor","build-orchestration"],"license":"MIT","mcpServers":"./.codex-plugin/mcp.json","name":"cargo-hauler","repository":"https://github.com/ScriptedAlchemy/cargo-hauler","skills":"./skills/","version":"0.9.8"}
@@ -1 +1 @@
1
- {"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","displayName":"cargo-hauler","hooks":"./.cursor-plugin/hooks.json","keywords":["cargo","rust","agent","mcp","claude-code","codex","cursor","build-orchestration"],"license":"MIT","mcpServers":"./.cursor-plugin/mcp.json","name":"cargo-hauler","repository":"https://github.com/ScriptedAlchemy/cargo-hauler","skills":"./skills/","version":"0.9.7"}
1
+ {"description":"Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.","displayName":"cargo-hauler","hooks":"./.cursor-plugin/hooks.json","keywords":["cargo","rust","agent","mcp","claude-code","codex","cursor","build-orchestration"],"license":"MIT","mcpServers":"./.cursor-plugin/mcp.json","name":"cargo-hauler","repository":"https://github.com/ScriptedAlchemy/cargo-hauler","skills":"./skills/","version":"0.9.8"}
package/dist/INSTALL.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Coalesce, schedule, and stream cargo so concurrent agent sessions share compiles instead of fighting locks.
4
4
 
5
- Version: `0.9.7`
5
+ Version: `0.9.8`
6
6
 
7
7
  Run these commands from this bundle directory. The bundle is self-contained: every command below is
8
8
  a host command or the bundled installer, and nothing requires the `agent-bundle` CLI. Where that CLI is
@@ -33,7 +33,7 @@ claude plugin install cargo-hauler@cargo-hauler-marketplace --scope user
33
33
 
34
34
  With the optional `agent-bundle` CLI, `agent-bundle install claude --from ./` runs this sequence
35
35
  automatically when the installed copy has the same version but a different content hash; `--replace`
36
- (alias `--force`) forces it.
36
+ forces it.
37
37
 
38
38
  ### Uninstall
39
39
 
@@ -42,7 +42,7 @@ claude plugin uninstall cargo-hauler@cargo-hauler-marketplace --scope user --kee
42
42
  ```
43
43
 
44
44
  Match the scope the plugin was installed with (`user`, `project`, or `local`). `--keep-data` keeps durable
45
- runtime state (Claude orphans the cached copy, `state/` included, for its ~14-day grace period); omit it to
45
+ runtime state (Claude orphans the cached copy for its ~14-day grace period); omit it to
46
46
  remove `~/.claude/plugins/data/<id>/` immediately.
47
47
 
48
48
  The marketplace `cargo-hauler-marketplace` stays registered. Remove it only when nothing else installs from it:
@@ -61,8 +61,8 @@ would be removed and `agent-bundle uninstall claude --from ./` reverses the reco
61
61
  (or under `$CLAUDE_CONFIG_DIR`; `user` is the install scope, pass `--scope project` or `--scope local` to match
62
62
  a scoped install), and `uninstall` consumes it, running the two commands above in order and retaining the
63
63
  marketplace while any other plugin, scope, or project still installs from it. Durable runtime state
64
- is kept by default; `--purge-data --confirm-purge` removes `state/` and `~/.claude/plugins/data/<id>/`
65
- immediately. A missing receipt or a cached copy that no longer matches it is refused unless `--force`; a
64
+ is kept by default; `--purge-data --confirm-purge` removes the receipt-owned state roots and
65
+ `~/.claude/plugins/data/<id>/` immediately. A missing receipt or a cached copy that no longer matches it is refused unless `--force`; a
66
66
  second run is a `not-installed` no-op.
67
67
 
68
68
  ## Codex
@@ -92,7 +92,7 @@ or omits `enabled` (`AB7004`) and leaves that install unchanged. Enable the plug
92
92
 
93
93
  With the optional `agent-bundle` CLI, `agent-bundle install codex --from ./` runs this sequence
94
94
  automatically when the installed copy has the same version but a different content hash; `--replace`
95
- (alias `--force`) forces it.
95
+ forces it.
96
96
 
97
97
  ### Uninstall
98
98
 
@@ -100,8 +100,7 @@ automatically when the installed copy has the same version but a different conte
100
100
  codex plugin remove cargo-hauler@cargo-hauler-marketplace
101
101
  ```
102
102
 
103
- Codex 0.147.0 deletes the cached plugin tree, `state/` included, on `plugin remove` and has no keep-data
104
- option.
103
+ Codex 0.147.0 deletes the cached plugin tree on `plugin remove` and has no keep-data option.
105
104
 
106
105
  The marketplace `cargo-hauler-marketplace` stays registered. Remove it only when nothing else installs from it:
107
106
  `codex plugin list` shows every other plugin from it.
@@ -114,7 +113,8 @@ With the optional `agent-bundle` CLI, `agent-bundle uninstall codex --from ./ --
114
113
  would be removed and `agent-bundle uninstall codex --from ./` reverses the recorded registrations.
115
114
  `agent-bundle install codex` records a receipt at `~/.codex/agent-bundle/receipts/cargo-hauler.cargo-hauler-marketplace.user.json` (or
116
115
  under `$CODEX_HOME`), and `uninstall` consumes it, running the two commands above in order. `--keep-data`
117
- cannot preserve durable state on Codex; the result says so (`unavailable`). A missing receipt or a cached
116
+ keeps the framework state roots the receipt records outside the cached tree (`kept`); with nothing there the
117
+ result says so (`unavailable`). A missing receipt or a cached
118
118
  copy that no longer matches it is refused unless `--force`; a second run is a `not-installed` no-op.
119
119
 
120
120
  ## Cursor
@@ -137,37 +137,38 @@ manifest-declared `hooks/hooks.json` from that directory; plugin hooks run from
137
137
  The installer writes an install receipt (`.agent-bundle-install.json`: plugin, version, content hash,
138
138
  owned files) beside the plugin manifest. Re-running `node ./install.mjs` on an identical artifact
139
139
  is a no-op that says so. When the installed copy has the same version but different content, the
140
- installer replaces its owned files in place and leaves runtime state (`state/`) untouched:
140
+ installer replaces its owned files in place and leaves unowned entries untouched:
141
141
 
142
142
  ```sh
143
143
  node ./install.mjs # same-version content drift of a receipt-managed copy is replaced
144
- node ./install.mjs --replace # also replace a different installed version, or adopt a pre-receipt copy
144
+ node ./install.mjs --replace # also replace a different installed version
145
145
  ```
146
146
 
147
- `--force` is an alias for `--replace`. A directory that is not an agent-bundle install of this
148
- plugin is always refused with an installed-versus-artifact content-hash comparison; remove it
149
- manually. The optional `agent-bundle` CLI applies the same policy through
147
+ A directory without a receipt naming this plugin (including a copy placed before install receipts
148
+ existed) is foreign and always refused with an installed-versus-artifact content-hash comparison;
149
+ remove it manually and reinstall. The optional `agent-bundle` CLI applies the same policy through
150
150
  `agent-bundle install cursor --from ./ [--replace]`.
151
151
 
152
152
  ### Uninstall
153
153
 
154
154
  ```sh
155
155
  node ./install.mjs --uninstall --plan # print exactly what would be removed
156
- node ./install.mjs --uninstall # remove the receipt-owned files; keep state/
157
- node ./install.mjs --uninstall --purge-data --confirm-purge # also remove durable runtime state
156
+ node ./install.mjs --uninstall # remove the receipt-owned files; keep durable state
157
+ node ./install.mjs --uninstall --purge-data --confirm-purge # also remove receipt-owned durable runtime state
158
158
  node ./install.mjs --uninstall --mode marketplace # remove a staged marketplace repository
159
159
  ```
160
160
 
161
161
  Uninstall removes exactly what the receipt owns: the listed files, the directories the installer
162
162
  created (including `~/.cursor/plugins/local` when the installer made it), and nothing else. Durable
163
- runtime state under `state/` (state kernel, notices journal) — and, for an Agent Plugins pack with a stdio
164
- server, the `~/.cursor/agent-bundle/plugin-data/<name>` directory the receipt records as `PLUGIN_DATA` — is kept
165
- unless `--purge-data --confirm-purge` is passed (a kept data directory leaves a remnant receipt behind so a later
166
- purge still finds it; an empty one is pruned); unowned files are left in place and listed. A supported older
167
- receipt with no recorded state location retains the current environment's default as unproven; a keep-data run
168
- cannot turn that observation into later purge authority. A directory without a receipt is refused unless
169
- `--force` (which removes a pre-receipt legacy copy by its inventory); owned content that no longer matches
170
- the receipt is refused unless `--force`; a directory that is not this plugin's install is always refused.
163
+ runtime state (the framework state roots the receipt records with ownership evidence) — and, for an Agent
164
+ Plugins pack with a stdio server, the `~/.cursor/agent-bundle/plugin-data/<name>` directory the receipt records
165
+ as `PLUGIN_DATA` — is kept unless `--purge-data --confirm-purge` is passed (a kept data directory leaves a
166
+ remnant receipt behind so a later purge still finds it; an empty one is pruned); unowned entries, including a
167
+ `state/` directory beside the plugin, are left in place and listed. A receipt with no recorded state location
168
+ (written before the install could record it) retains the current environment's default as unproven; a
169
+ keep-data run cannot turn that observation into later purge authority. A directory without a receipt naming
170
+ this plugin is foreign and always refused, with or without `--force`; owned content that no longer matches
171
+ the receipt is refused unless `--force`.
171
172
  A second run is a `Not installed` no-op. With the optional `agent-bundle` CLI,
172
173
  `agent-bundle uninstall cursor --from ./ [--mode marketplace]` applies the same policy, and
173
174
  `agent-bundle doctor --from ./` shows the lifecycle stage (placed, registered, enabled, active) with
@@ -254,21 +255,21 @@ other clients; the recorded clients above name which of them expand the placehol
254
255
  ### Reinstall after a same-version rebuild
255
256
 
256
257
  The installer records an install receipt (`.agent-bundle-install.json`) and replaces its owned files in
257
- place when the same version was rebuilt with different content; runtime state (`state/`) is never
258
- touched. Pass `--replace` (alias `--force`) to replace a different installed version or to adopt a
259
- copy installed before receipts existed. Foreign directories are refused with a content-hash
260
- comparison. For a client that manages its own copy, remove and re-add the plugin through that client
261
- when only content changed at the same version.
258
+ place when the same version was rebuilt with different content; unowned entries are never
259
+ touched. Pass `--replace` to replace a different installed version. A directory without a receipt
260
+ naming this plugin (including a copy installed before receipts existed) is foreign and refused with a
261
+ content-hash comparison; remove it manually. For a client that manages its own copy, remove and re-add
262
+ the plugin through that client when only content changed at the same version.
262
263
 
263
264
  ### Uninstall
264
265
 
265
266
  ```sh
266
267
  node ./install.mjs --uninstall --plan # print exactly what would be removed
267
- node ./install.mjs --uninstall # remove the receipt-owned files; keep state/
268
- node ./install.mjs --uninstall --purge-data --confirm-purge # also remove durable runtime state
268
+ node ./install.mjs --uninstall # remove the receipt-owned files; keep durable state
269
+ node ./install.mjs --uninstall --purge-data --confirm-purge # also remove receipt-owned durable runtime state
269
270
  ```
270
271
 
271
272
  Uninstall removes exactly what the receipt owns (files, installer-created directories) and keeps
272
- durable runtime state under `state/` (and the recorded `PLUGIN_DATA` directory of an Agent Plugins pack)
273
- unless `--purge-data --confirm-purge` is passed. A missing
274
- receipt or modified owned content is refused unless `--force`; foreign directories are always refused.
273
+ the durable runtime state the receipt records (and the recorded `PLUGIN_DATA` directory of an Agent Plugins
274
+ pack) unless `--purge-data --confirm-purge` is passed. Modified owned content is refused unless `--force`;
275
+ a directory without a receipt naming this plugin is foreign and always refused.