cargo-hauler 0.9.11 → 0.9.13

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 (43) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +5 -4
  3. package/dist/.claude-plugin/marketplace.json +1 -1
  4. package/dist/.claude-plugin/plugin.json +1 -1
  5. package/dist/.codex-plugin/plugin.json +1 -1
  6. package/dist/.cursor-plugin/plugin.json +1 -1
  7. package/dist/INSTALL.md +1 -1
  8. package/dist/README.md +5 -4
  9. package/dist/agent-bundle.compile-evidence.json +1 -1
  10. package/dist/agent-bundle.manifest.json +1 -1
  11. package/dist/agent-bundle.package-compile-evidence.json +1 -1
  12. package/dist/bin/cargo-hauler-flight.mjs +25 -24
  13. package/dist/bin/cargo-hauler-install.js +5 -5
  14. package/dist/bin/cargo-hauler.mjs +110 -108
  15. package/dist/bin/hauler.js +101 -99
  16. package/dist/hooks/event-route-session-start.claude.mjs +2 -2
  17. package/dist/hooks/event-route-session-start.codex.mjs +2 -2
  18. package/dist/hooks/event-route-session-start.cursor.mjs +2 -2
  19. package/dist/hooks/event-route-stop.claude.mjs +2 -2
  20. package/dist/hooks/event-route-stop.codex.mjs +2 -2
  21. package/dist/hooks/event-route-stop.cursor.mjs +2 -2
  22. package/dist/hooks/event-route-tool-after.claude.execute.mjs +2 -2
  23. package/dist/hooks/event-route-tool-after.claude.mjs +7 -7
  24. package/dist/hooks/event-route-tool-after.codex.execute.mjs +2 -2
  25. package/dist/hooks/event-route-tool-after.codex.mjs +7 -7
  26. package/dist/hooks/event-route-tool-after.cursor.execute.mjs +2 -2
  27. package/dist/hooks/event-route-tool-after.cursor.mjs +7 -7
  28. package/dist/hooks/event-route-tool-before.claude.execute.mjs +2 -2
  29. package/dist/hooks/event-route-tool-before.claude.mjs +2 -2
  30. package/dist/hooks/event-route-tool-before.codex.execute.mjs +2 -2
  31. package/dist/hooks/event-route-tool-before.codex.mjs +2 -2
  32. package/dist/hooks/event-route-tool-before.cursor.execute.mjs +2 -2
  33. package/dist/hooks/event-route-tool-before.cursor.mjs +2 -2
  34. package/dist/hooks/hooks-flight.mjs +16 -16
  35. package/dist/install.mjs +1 -1
  36. package/dist/mcp/mcp-hauler-2b8242f9-flight.mjs +31 -30
  37. package/dist/mcp/mcp-hauler-2b8242f9.mjs +30 -29
  38. package/dist/mcp-apps/dashboard.html +9 -9
  39. package/dist/package.json +1 -1
  40. package/dist/plugin.json +1 -1
  41. package/dist/scripts/hauler.mjs +101 -99
  42. package/dist/skills/hauler-dashboard/SKILL.md +1 -1
  43. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.13
4
+
5
+ ### Patch Changes
6
+
7
+ - da39c2e: The auto-background notice for a caller whose stdout is redirected no longer sends them to `hauler result cc-N --full`, which shows only the last 768 KiB of a larger log. It now says `hauler result cc-N` names the ticket's full log once the run starts; the ticket is still queued when the notice prints, so its log does not exist yet.
8
+
9
+ ## 0.9.12
10
+
11
+ ### Patch Changes
12
+
13
+ - 950914f: The daemon no longer freezes when a client stops reading a large build. Once a write has waited 2 seconds on such a client, the daemon cuts that connection's queued output to 1 MiB. With tens of MiB queued, the cut used to evict one message at a time and rebuild the truncation notice on each eviction, which held the daemon's event loop for about 170 ms. Every other client, hook, and status call waited that long. The cut is now one pass, and the notice text is rendered once when it is written. A second connection's ping measured 164 to 172 ms at worst during the cut before and 15 to 27 ms after.
14
+ - 2bd942e: The notice a client gets when it falls behind now names the ticket's log file: `output truncated: client fell behind; N bytes dropped; full log: <stateDir>/tickets/cc-N.log`. It used to say `full output: hauler result cc-N --full`, but `--full` renders at most the last 768 KiB of the log, so the dropped output was often not there. A rider's notice names its leader's log. When no log is kept, the notice points at `hauler result cc-N`. `hauler result` and the `--full` help now say that `--full` shows the last 768 KiB of a larger log.
15
+
3
16
  ## 0.9.11
4
17
 
5
18
  ### Patch Changes
package/README.md CHANGED
@@ -371,7 +371,7 @@ diagnostics stream, not cargo's JSON — up to `CARGO_HAULER_TICKET_LOG_MAX_BYTE
371
371
  that attached to an in-flight run shares its leader's log, and the row records
372
372
  that path. `hauler result cc-N` names the file and its size, `--json` carries
373
373
  it as `request.outputPath`, and `hauler result cc-N --full` (or `hauler_result`
374
- with `full: true`) renders the log itself — so a red `cargo test` is triaged
374
+ with `full: true`) renders the log itself, its last 768 KiB when larger — so a red `cargo test` is triaged
375
375
  from the ticket's own `failures:` list and panic sections instead of a second
376
376
  run. The startup retention pass that prunes old ledger rows removes their logs
377
377
  too, along with any log whose row is gone. `hauler exec --bg -- cargo …` and
@@ -390,7 +390,8 @@ conversion exits `75` (`EX_TEMPFAIL`) with the ticket on stderr, so
390
390
  `cargo build && …` chains and scripts cannot mistake "submitted" for "built";
391
391
  explicit `--bg` keeps exit `0`. When the caller's stdout is not a terminal
392
392
  (`cargo test > out.log`), the notice adds that the redirect receives no
393
- output and to read it with `hauler result cc-N --full`. Failed runs feed the
393
+ output and that `hauler result cc-N` names the ticket's full log once it
394
+ runs. Failed runs feed the
394
395
  estimate history too, so a broken build is not re-estimated cold on every retry.
395
396
 
396
397
  A foreground `hauler exec` that receives SIGINT or SIGTERM (Ctrl-C, or a
@@ -906,7 +907,7 @@ assertion share one derivation.
906
907
  | `<AdmissionState>` | permits in use, load, memory clamp, sharing savings; calls out a paused admission gate |
907
908
  | `<KacheStats>` | kache coverage and freshness, slowest crates by profile, or an honest "not detected" |
908
909
  | `<LogTail>` | the captured output tail of a detail record, labelled live while the run is in progress; summary rows carry only `outputPreview` and render no tail |
909
- | `<FullOutput>` | where the ticket's whole output log lives and how large it is; under `full`, the log itself in code-block chunks |
910
+ | `<FullOutput>` | where the ticket's whole output log lives and how large it is; under `full`, the log itself (its last 768 KiB when larger) in code-block chunks |
910
911
  | `<BuildDiagnostics>` | an index of cargo `error[E…]`/`warning:` blocks (level / code / message / location) followed by every captured block verbatim |
911
912
  | `<BatchTestSummary>` | every observed binary result from a shared test log, with explicit composite-run and partial-evidence warnings |
912
913
  | `<DashboardLink>` | where the MCP App lives and how to open it elsewhere |
@@ -962,7 +963,7 @@ belongs to the server and not the calling conversation.
962
963
  | `tool:hauler/hauler_log` (`hauler log`) | recent requests, as summary rows | `LogStream` → `LogDocument` |
963
964
  | `tool:hauler/hauler_last` (`hauler last`) | most recent request, as a detail record with its tail | `LastDocument` |
964
965
  | `tool:hauler/hauler_await` (`hauler await`) | long-poll a ticket (≤ 2 h) | `AwaitStream` → `AwaitDocument` |
965
- | `tool:hauler/hauler_result` (`hauler result`) | one ticket as a detail record: the settled tail, or the whole live tail while running; `full` renders the whole on-disk output log | `ResultDocument` (`<FullOutput>`) |
966
+ | `tool:hauler/hauler_result` (`hauler result`) | one ticket as a detail record: the settled tail, or the whole live tail while running; `full` renders the on-disk output log, its last ~768 KiB when larger | `ResultDocument` (`<FullOutput>`) |
966
967
  | `tool:hauler/hauler_kill` (`hauler kill`) | stop a queued or running ticket | `KillDocument` |
967
968
  | `tool:hauler/hauler_request` (`hauler request`) | submit a background request | `RequestDocument` |
968
969
  | `cli:daemon` | `run` / `start` / `stop` / `status` / `restart` | plain JSON, exit code from the result |
@@ -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.11"}]}
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.13"}]}
@@ -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.11"}
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.13"}
@@ -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.11"}
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.13"}
@@ -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.11"}
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.13"}
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.11`
5
+ Version: `0.9.13`
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
package/dist/README.md CHANGED
@@ -371,7 +371,7 @@ diagnostics stream, not cargo's JSON — up to `CARGO_HAULER_TICKET_LOG_MAX_BYTE
371
371
  that attached to an in-flight run shares its leader's log, and the row records
372
372
  that path. `hauler result cc-N` names the file and its size, `--json` carries
373
373
  it as `request.outputPath`, and `hauler result cc-N --full` (or `hauler_result`
374
- with `full: true`) renders the log itself — so a red `cargo test` is triaged
374
+ with `full: true`) renders the log itself, its last 768 KiB when larger — so a red `cargo test` is triaged
375
375
  from the ticket's own `failures:` list and panic sections instead of a second
376
376
  run. The startup retention pass that prunes old ledger rows removes their logs
377
377
  too, along with any log whose row is gone. `hauler exec --bg -- cargo …` and
@@ -390,7 +390,8 @@ conversion exits `75` (`EX_TEMPFAIL`) with the ticket on stderr, so
390
390
  `cargo build && …` chains and scripts cannot mistake "submitted" for "built";
391
391
  explicit `--bg` keeps exit `0`. When the caller's stdout is not a terminal
392
392
  (`cargo test > out.log`), the notice adds that the redirect receives no
393
- output and to read it with `hauler result cc-N --full`. Failed runs feed the
393
+ output and that `hauler result cc-N` names the ticket's full log once it
394
+ runs. Failed runs feed the
394
395
  estimate history too, so a broken build is not re-estimated cold on every retry.
395
396
 
396
397
  A foreground `hauler exec` that receives SIGINT or SIGTERM (Ctrl-C, or a
@@ -906,7 +907,7 @@ assertion share one derivation.
906
907
  | `<AdmissionState>` | permits in use, load, memory clamp, sharing savings; calls out a paused admission gate |
907
908
  | `<KacheStats>` | kache coverage and freshness, slowest crates by profile, or an honest "not detected" |
908
909
  | `<LogTail>` | the captured output tail of a detail record, labelled live while the run is in progress; summary rows carry only `outputPreview` and render no tail |
909
- | `<FullOutput>` | where the ticket's whole output log lives and how large it is; under `full`, the log itself in code-block chunks |
910
+ | `<FullOutput>` | where the ticket's whole output log lives and how large it is; under `full`, the log itself (its last 768 KiB when larger) in code-block chunks |
910
911
  | `<BuildDiagnostics>` | an index of cargo `error[E…]`/`warning:` blocks (level / code / message / location) followed by every captured block verbatim |
911
912
  | `<BatchTestSummary>` | every observed binary result from a shared test log, with explicit composite-run and partial-evidence warnings |
912
913
  | `<DashboardLink>` | where the MCP App lives and how to open it elsewhere |
@@ -962,7 +963,7 @@ belongs to the server and not the calling conversation.
962
963
  | `tool:hauler/hauler_log` (`hauler log`) | recent requests, as summary rows | `LogStream` → `LogDocument` |
963
964
  | `tool:hauler/hauler_last` (`hauler last`) | most recent request, as a detail record with its tail | `LastDocument` |
964
965
  | `tool:hauler/hauler_await` (`hauler await`) | long-poll a ticket (≤ 2 h) | `AwaitStream` → `AwaitDocument` |
965
- | `tool:hauler/hauler_result` (`hauler result`) | one ticket as a detail record: the settled tail, or the whole live tail while running; `full` renders the whole on-disk output log | `ResultDocument` (`<FullOutput>`) |
966
+ | `tool:hauler/hauler_result` (`hauler result`) | one ticket as a detail record: the settled tail, or the whole live tail while running; `full` renders the on-disk output log, its last ~768 KiB when larger | `ResultDocument` (`<FullOutput>`) |
966
967
  | `tool:hauler/hauler_kill` (`hauler kill`) | stop a queued or running ticket | `KillDocument` |
967
968
  | `tool:hauler/hauler_request` (`hauler request`) | submit a background request | `RequestDocument` |
968
969
  | `cli:daemon` | `run` / `start` / `stop` / `status` / `restart` | plain JSON, exit code from the result |