cargo-hauler 0.8.0 → 0.8.2
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.
- package/CHANGELOG.md +21 -0
- package/README.md +31 -8
- package/dist/.claude-plugin/marketplace.json +1 -1
- package/dist/.claude-plugin/plugin.json +1 -1
- package/dist/.codex-plugin/plugin.json +1 -1
- package/dist/.cursor-plugin/plugin.json +1 -1
- package/dist/AGENTS.md +6 -5
- package/dist/INSTALL.md +1 -1
- package/dist/README.md +31 -8
- package/dist/agent-bundle.compile-evidence.json +1 -1
- package/dist/agent-bundle.manifest.json +1 -1
- package/dist/agent-bundle.package-compile-evidence.json +1 -1
- package/dist/bin/cargo-hauler-flight.mjs +27 -27
- package/dist/bin/cargo-hauler.mjs +60 -60
- package/dist/bin/hauler.js +46 -46
- package/dist/hooks/event-route-session-start.claude.mjs +2 -2
- package/dist/hooks/event-route-session-start.codex.mjs +2 -2
- package/dist/hooks/event-route-session-start.cursor.mjs +2 -2
- package/dist/hooks/event-route-stop.claude.mjs +2 -2
- package/dist/hooks/event-route-stop.codex.mjs +2 -2
- package/dist/hooks/event-route-stop.cursor.mjs +2 -2
- package/dist/hooks/event-route-tool-after.claude.execute.mjs +2 -2
- package/dist/hooks/event-route-tool-after.claude.mjs +9 -9
- package/dist/hooks/event-route-tool-after.codex.execute.mjs +2 -2
- package/dist/hooks/event-route-tool-after.codex.mjs +9 -9
- package/dist/hooks/event-route-tool-after.cursor.execute.mjs +2 -2
- package/dist/hooks/event-route-tool-after.cursor.mjs +9 -9
- package/dist/hooks/event-route-tool-before.claude.execute.mjs +2 -2
- package/dist/hooks/event-route-tool-before.codex.execute.mjs +2 -2
- package/dist/hooks/event-route-tool-before.cursor.execute.mjs +2 -2
- package/dist/hooks/hooks-flight.mjs +23 -23
- package/dist/install.mjs +1 -1
- package/dist/mcp/mcp-hauler-2b8242f9-flight.mjs +32 -32
- package/dist/mcp/mcp-hauler-2b8242f9.mjs +30 -30
- package/dist/mcp-apps/dashboard.html +2 -2
- package/dist/package.json +1 -1
- package/dist/plugin.json +1 -1
- package/dist/scripts/hauler.mjs +46 -46
- package/dist/skills/hauler-dashboard/SKILL.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 7490839: Internal: the implementation behind the Agent Bundle entrypoints now lives
|
|
8
|
+
under `src/internal/<owner>/` (contracts, cargo, daemon/{runtime,broker,
|
|
9
|
+
scheduling,reporting}, storage, client, operations, host-hooks,
|
|
10
|
+
integrations/kache, platform, shim, ui/{documents,dashboard,shared}, util)
|
|
11
|
+
instead of `daemon/`, `lib/`, `hooks/`, and friends; `tests/` is grouped by
|
|
12
|
+
what a test executes (unit, integration, packaging, acceptance). A move-only
|
|
13
|
+
change: no route, executable, protocol, or scheduling behaviour changed.
|
|
14
|
+
`docs/architecture.md` is the ownership map and walkthrough.
|
|
15
|
+
|
|
16
|
+
## 0.8.1
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- ef7d00e: Dashboard: the Contention panel's CPU stat is labelled `1-min load average`
|
|
21
|
+
instead of `loadavg (1m)`, which read as a stuck "loading" timer. Same value:
|
|
22
|
+
the machine's Unix 1-minute load average over its cores.
|
|
23
|
+
|
|
3
24
|
## 0.8.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -787,7 +787,6 @@ argv parser, or string-concatenated Markdown; the `src/` tree is the app.
|
|
|
787
787
|
src/
|
|
788
788
|
layout.tsx the hauler shell around every rendered route
|
|
789
789
|
providers/hauler-daemon.ts request-scoped daemon configuration
|
|
790
|
-
components/ typed components over pure view-models
|
|
791
790
|
mcp/hauler/tools/*.tsx hauler_status, _dashboard, _log, _last, _await, _result, _request, _kill
|
|
792
791
|
mcp/hauler/tools/*.cli.ts each tool's `hauler <command>` projection (flags, positionals)
|
|
793
792
|
mcp/hauler/apps/dashboard.tsx the MCP App (ui://cargo-hauler/dashboard.html)
|
|
@@ -796,9 +795,26 @@ src/
|
|
|
796
795
|
events/tool/{before,after}.tsx the shell hook routes, gated by *.preflight.ts
|
|
797
796
|
skills/cargo-hauler/SKILL.md, skills/hauler-dashboard/SKILL.tsx
|
|
798
797
|
scripts/hauler.ts the `hauler` process entry hooks rewrite cargo to
|
|
799
|
-
|
|
798
|
+
internal/ the implementation the entrypoints import, by owner
|
|
799
|
+
contracts/ wire protocol, tool schemas, wire version
|
|
800
|
+
cargo/ argv, intent, workspace, topology, execution/
|
|
801
|
+
daemon/ composition (main, config), runtime/, broker/, scheduling/, reporting/
|
|
802
|
+
storage/ the SQLite ledger and per-ticket output logs
|
|
803
|
+
client/ socket clients: control, exec, tickets, ensure-daemon
|
|
804
|
+
operations/ what the routes call: tickets, status, inspection
|
|
805
|
+
host-hooks/ the shell/session hook handlers and their small RPC client
|
|
806
|
+
integrations/kache/ kache status and store pressure
|
|
807
|
+
platform/ state and socket paths, private-file policy, executable location
|
|
808
|
+
shim/ the PATH shim installer
|
|
809
|
+
ui/documents/, ui/dashboard/, ui/shared/ agent documents, the browser App, shared formatters
|
|
810
|
+
util/ guards, ids, text, ANSI
|
|
800
811
|
```
|
|
801
812
|
|
|
813
|
+
Everything above `internal/` is discovered by the framework's conventions;
|
|
814
|
+
everything under it is ordinary imported code. [docs/architecture.md](docs/architecture.md)
|
|
815
|
+
is the ownership map and walks the three main paths (submitting cargo, reading
|
|
816
|
+
status, processing a shell hook) file by file.
|
|
817
|
+
|
|
802
818
|
#### The shell (`src/layout.tsx`)
|
|
803
819
|
|
|
804
820
|
Every rendered route — MCP tool, CLI command, rendered script — composes
|
|
@@ -826,7 +842,7 @@ addition: each re-exports a `preflight` (`before.preflight.ts`,
|
|
|
826
842
|
`hooks/event-route-tool-before.<host>.mjs`, a few hundred KB with no React,
|
|
827
843
|
Flight worker, or Effect — and runs before the rendered route
|
|
828
844
|
(`*.execute.mjs`) is loaded. The gate decides on the raw command
|
|
829
|
-
(`src/hooks/tokens.ts`; `session-ping.ts` for the one bounded completion ping
|
|
845
|
+
(`src/internal/host-hooks/tokens.ts`; `session-ping.ts` for the one bounded completion ping
|
|
830
846
|
after a tool ran): `continue` for the shell calls that name neither cargo nor
|
|
831
847
|
hauler, `execute` for the rest. Both routes declare `providers: []`, so
|
|
832
848
|
neither mounts the daemon-config provider; the rendered route calls
|
|
@@ -843,7 +859,7 @@ socket, and ledger paths); active health and status I/O belongs to the operation
|
|
|
843
859
|
that needs it. Routes read the config through `requestDaemonConfig(context)`,
|
|
844
860
|
and tests inject a fixture through the harness `context.providers` seam.
|
|
845
861
|
|
|
846
|
-
#### Components (`src/
|
|
862
|
+
#### Components (`src/internal/ui/documents/`)
|
|
847
863
|
|
|
848
864
|
Components render view-models and nothing else. The models are pure functions
|
|
849
865
|
in `view-models.ts`, so the MCP document, the CLI Markdown, and a test
|
|
@@ -871,7 +887,7 @@ assertion share one derivation.
|
|
|
871
887
|
same operation render the same document with different command spellings
|
|
872
888
|
(`surface.ts`).
|
|
873
889
|
|
|
874
|
-
#### Streaming (`src/
|
|
890
|
+
#### Streaming (`src/internal/ui/documents/streaming.tsx`)
|
|
875
891
|
|
|
876
892
|
`hauler_await` and `hauler_log` are progressive documents. Each is a
|
|
877
893
|
valueless `Agent.Result` container around one `Suspense` boundary:
|
|
@@ -944,7 +960,7 @@ with the wait split by cause: *lane-bound* (a same-lane leader was still
|
|
|
944
960
|
compiling — before its `Finished` line or exit), *permit-bound* (every
|
|
945
961
|
admission permit was held and no same-lane compile was to blame), and *other*
|
|
946
962
|
(admission holds, `--after` prerequisites, scheduling latency). The
|
|
947
|
-
classification is a pure sweep over ledger rows (`src/daemon/wait-split.ts`)
|
|
963
|
+
classification is a pure sweep over ledger rows (`src/internal/daemon/reporting/wait-split.ts`)
|
|
948
964
|
run once per status refresh against the daemon's current permit count, which
|
|
949
965
|
the tile states; runs admitted under an earlier cap are classified against
|
|
950
966
|
today's. With `buildFinishedAtMs` on the row, the by-command split adds
|
|
@@ -957,12 +973,19 @@ the lane time the execution-phase hand-back released.
|
|
|
957
973
|
pnpm run check # validate + build + typecheck + Effect diagnostics + rstest + route tests
|
|
958
974
|
```
|
|
959
975
|
|
|
976
|
+
`tests/` is grouped by what a test executes: `unit/<subsystem>/` is scoped to
|
|
977
|
+
one owner under `src/internal/`; `integration/` runs a real broker
|
|
978
|
+
in-process through `tests/support/harness.ts`; `packaging/` reads the built
|
|
979
|
+
`artifact/` or spawns the package entries; `acceptance/` drives real `cargo`
|
|
980
|
+
against the workspaces under `evals/fixtures/`; `route-unit/` and
|
|
981
|
+
`browser-app/` are the framework-level suites below.
|
|
982
|
+
|
|
960
983
|
`tests/route-unit/` renders the app through the framework compiler with no
|
|
961
984
|
artifact build, at the harness proof levels:
|
|
962
985
|
|
|
963
986
|
| Level | Suite | What it proves |
|
|
964
987
|
| --- | --- | --- |
|
|
965
|
-
| route-unit | `routes`, `layout`, `streaming`, `events` | documents, shell metadata, Suspense fallbacks and settled values, lineage attribution, event decisions (the shell routes' preflight gates are unit-tested in `tests/event-preflight.test.ts` and against their compiled entries in `tests/hooks-simulate.test.ts`) |
|
|
988
|
+
| route-unit | `routes`, `layout`, `streaming`, `events` | documents, shell metadata, Suspense fallbacks and settled values, lineage attribution, event decisions (the shell routes' preflight gates are unit-tested in `tests/integration/event-preflight.test.ts` and against their compiled entries in `tests/integration/hooks-simulate.test.ts`) |
|
|
966
989
|
| cli-dispatch | `cli-dispatch`, `layout` | argv through the routed CLI shell; Markdown wrapped by the shell, `--json` bare |
|
|
967
990
|
| script-dispatch | `script-dispatch` | the `hauler` entry through its `main` envelope as its own process |
|
|
968
991
|
| mcp-in-memory | `mcp-surface`, `layout` | tool names, `outputSchema`, the dashboard resource link, `_meta.hauler`, and a live fixture broker over the in-memory transport |
|
|
@@ -971,7 +994,7 @@ artifact build, at the harness proof levels:
|
|
|
971
994
|
| workbench-surface | `workbench-surface` | what `agent-bundle dev` would show: catalog, provider, lifecycles per host, counts |
|
|
972
995
|
|
|
973
996
|
Daemon-backed cases run a real broker in-process with a fake `cargo`
|
|
974
|
-
(`tests/harness.ts`) and reach it either through the `haulerDaemon` provider
|
|
997
|
+
(`tests/support/harness.ts`) and reach it either through the `haulerDaemon` provider
|
|
975
998
|
seam or through `CARGO_HAULER_STATE_DIR`.
|
|
976
999
|
|
|
977
1000
|
### Development
|
|
@@ -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.8.
|
|
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.8.2"}]}
|
|
@@ -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.8.
|
|
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.8.2"}
|
|
@@ -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.8.
|
|
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.8.2"}
|
|
@@ -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.8.
|
|
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.8.2"}
|
package/dist/AGENTS.md
CHANGED
|
@@ -11,14 +11,15 @@
|
|
|
11
11
|
diagnostics, `rstest`, the route-unit suite, and browser App tests. Run it
|
|
12
12
|
before claiming a change is done.
|
|
13
13
|
- The plugin surface is an agent-bundle application: `src/layout.tsx` (the
|
|
14
|
-
shell), `src/providers/hauler-daemon.ts` (daemon connection),
|
|
15
|
-
(typed components over `view-models.ts`), `src/mcp/hauler/tools` and
|
|
14
|
+
shell), `src/providers/hauler-daemon.ts` (daemon connection),
|
|
15
|
+
`src/internal/ui/documents` (typed components over `view-models.ts`), `src/mcp/hauler/tools` and
|
|
16
16
|
`src/mcp/hauler/apps` (MCP; each tool's `<tool>.cli.ts` is its `hauler`
|
|
17
17
|
command), `src/events` (hook routes; `tool/before.preflight.ts` and
|
|
18
18
|
`tool/after.preflight.ts` decide on the raw command before the route
|
|
19
|
-
loads — keep them free of React and Effect), `src/hooks` (the
|
|
20
|
-
the routes call), `src/cli/daemon.ts`, `src/scripts/hauler.ts` (process
|
|
21
|
-
`src/skills`.
|
|
19
|
+
loads — keep them free of React and Effect), `src/internal/host-hooks` (the
|
|
20
|
+
handlers the routes call), `src/cli/daemon.ts`, `src/scripts/hauler.ts` (process
|
|
21
|
+
entry), `src/skills`. Everything else lives under `src/internal/<owner>/`
|
|
22
|
+
(`docs/architecture.md` is the ownership map); do not reintroduce a
|
|
22
23
|
hand-written server, argv parser, or string-concatenated documents — add a
|
|
23
24
|
component and a view-model.
|
|
24
25
|
- Documents must stay honest: a daemon the probe could not reach renders as
|
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.8.
|
|
5
|
+
Version: `0.8.2`
|
|
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
|
@@ -787,7 +787,6 @@ argv parser, or string-concatenated Markdown; the `src/` tree is the app.
|
|
|
787
787
|
src/
|
|
788
788
|
layout.tsx the hauler shell around every rendered route
|
|
789
789
|
providers/hauler-daemon.ts request-scoped daemon configuration
|
|
790
|
-
components/ typed components over pure view-models
|
|
791
790
|
mcp/hauler/tools/*.tsx hauler_status, _dashboard, _log, _last, _await, _result, _request, _kill
|
|
792
791
|
mcp/hauler/tools/*.cli.ts each tool's `hauler <command>` projection (flags, positionals)
|
|
793
792
|
mcp/hauler/apps/dashboard.tsx the MCP App (ui://cargo-hauler/dashboard.html)
|
|
@@ -796,9 +795,26 @@ src/
|
|
|
796
795
|
events/tool/{before,after}.tsx the shell hook routes, gated by *.preflight.ts
|
|
797
796
|
skills/cargo-hauler/SKILL.md, skills/hauler-dashboard/SKILL.tsx
|
|
798
797
|
scripts/hauler.ts the `hauler` process entry hooks rewrite cargo to
|
|
799
|
-
|
|
798
|
+
internal/ the implementation the entrypoints import, by owner
|
|
799
|
+
contracts/ wire protocol, tool schemas, wire version
|
|
800
|
+
cargo/ argv, intent, workspace, topology, execution/
|
|
801
|
+
daemon/ composition (main, config), runtime/, broker/, scheduling/, reporting/
|
|
802
|
+
storage/ the SQLite ledger and per-ticket output logs
|
|
803
|
+
client/ socket clients: control, exec, tickets, ensure-daemon
|
|
804
|
+
operations/ what the routes call: tickets, status, inspection
|
|
805
|
+
host-hooks/ the shell/session hook handlers and their small RPC client
|
|
806
|
+
integrations/kache/ kache status and store pressure
|
|
807
|
+
platform/ state and socket paths, private-file policy, executable location
|
|
808
|
+
shim/ the PATH shim installer
|
|
809
|
+
ui/documents/, ui/dashboard/, ui/shared/ agent documents, the browser App, shared formatters
|
|
810
|
+
util/ guards, ids, text, ANSI
|
|
800
811
|
```
|
|
801
812
|
|
|
813
|
+
Everything above `internal/` is discovered by the framework's conventions;
|
|
814
|
+
everything under it is ordinary imported code. [docs/architecture.md](docs/architecture.md)
|
|
815
|
+
is the ownership map and walks the three main paths (submitting cargo, reading
|
|
816
|
+
status, processing a shell hook) file by file.
|
|
817
|
+
|
|
802
818
|
#### The shell (`src/layout.tsx`)
|
|
803
819
|
|
|
804
820
|
Every rendered route — MCP tool, CLI command, rendered script — composes
|
|
@@ -826,7 +842,7 @@ addition: each re-exports a `preflight` (`before.preflight.ts`,
|
|
|
826
842
|
`hooks/event-route-tool-before.<host>.mjs`, a few hundred KB with no React,
|
|
827
843
|
Flight worker, or Effect — and runs before the rendered route
|
|
828
844
|
(`*.execute.mjs`) is loaded. The gate decides on the raw command
|
|
829
|
-
(`src/hooks/tokens.ts`; `session-ping.ts` for the one bounded completion ping
|
|
845
|
+
(`src/internal/host-hooks/tokens.ts`; `session-ping.ts` for the one bounded completion ping
|
|
830
846
|
after a tool ran): `continue` for the shell calls that name neither cargo nor
|
|
831
847
|
hauler, `execute` for the rest. Both routes declare `providers: []`, so
|
|
832
848
|
neither mounts the daemon-config provider; the rendered route calls
|
|
@@ -843,7 +859,7 @@ socket, and ledger paths); active health and status I/O belongs to the operation
|
|
|
843
859
|
that needs it. Routes read the config through `requestDaemonConfig(context)`,
|
|
844
860
|
and tests inject a fixture through the harness `context.providers` seam.
|
|
845
861
|
|
|
846
|
-
#### Components (`src/
|
|
862
|
+
#### Components (`src/internal/ui/documents/`)
|
|
847
863
|
|
|
848
864
|
Components render view-models and nothing else. The models are pure functions
|
|
849
865
|
in `view-models.ts`, so the MCP document, the CLI Markdown, and a test
|
|
@@ -871,7 +887,7 @@ assertion share one derivation.
|
|
|
871
887
|
same operation render the same document with different command spellings
|
|
872
888
|
(`surface.ts`).
|
|
873
889
|
|
|
874
|
-
#### Streaming (`src/
|
|
890
|
+
#### Streaming (`src/internal/ui/documents/streaming.tsx`)
|
|
875
891
|
|
|
876
892
|
`hauler_await` and `hauler_log` are progressive documents. Each is a
|
|
877
893
|
valueless `Agent.Result` container around one `Suspense` boundary:
|
|
@@ -944,7 +960,7 @@ with the wait split by cause: *lane-bound* (a same-lane leader was still
|
|
|
944
960
|
compiling — before its `Finished` line or exit), *permit-bound* (every
|
|
945
961
|
admission permit was held and no same-lane compile was to blame), and *other*
|
|
946
962
|
(admission holds, `--after` prerequisites, scheduling latency). The
|
|
947
|
-
classification is a pure sweep over ledger rows (`src/daemon/wait-split.ts`)
|
|
963
|
+
classification is a pure sweep over ledger rows (`src/internal/daemon/reporting/wait-split.ts`)
|
|
948
964
|
run once per status refresh against the daemon's current permit count, which
|
|
949
965
|
the tile states; runs admitted under an earlier cap are classified against
|
|
950
966
|
today's. With `buildFinishedAtMs` on the row, the by-command split adds
|
|
@@ -957,12 +973,19 @@ the lane time the execution-phase hand-back released.
|
|
|
957
973
|
pnpm run check # validate + build + typecheck + Effect diagnostics + rstest + route tests
|
|
958
974
|
```
|
|
959
975
|
|
|
976
|
+
`tests/` is grouped by what a test executes: `unit/<subsystem>/` is scoped to
|
|
977
|
+
one owner under `src/internal/`; `integration/` runs a real broker
|
|
978
|
+
in-process through `tests/support/harness.ts`; `packaging/` reads the built
|
|
979
|
+
`artifact/` or spawns the package entries; `acceptance/` drives real `cargo`
|
|
980
|
+
against the workspaces under `evals/fixtures/`; `route-unit/` and
|
|
981
|
+
`browser-app/` are the framework-level suites below.
|
|
982
|
+
|
|
960
983
|
`tests/route-unit/` renders the app through the framework compiler with no
|
|
961
984
|
artifact build, at the harness proof levels:
|
|
962
985
|
|
|
963
986
|
| Level | Suite | What it proves |
|
|
964
987
|
| --- | --- | --- |
|
|
965
|
-
| route-unit | `routes`, `layout`, `streaming`, `events` | documents, shell metadata, Suspense fallbacks and settled values, lineage attribution, event decisions (the shell routes' preflight gates are unit-tested in `tests/event-preflight.test.ts` and against their compiled entries in `tests/hooks-simulate.test.ts`) |
|
|
988
|
+
| route-unit | `routes`, `layout`, `streaming`, `events` | documents, shell metadata, Suspense fallbacks and settled values, lineage attribution, event decisions (the shell routes' preflight gates are unit-tested in `tests/integration/event-preflight.test.ts` and against their compiled entries in `tests/integration/hooks-simulate.test.ts`) |
|
|
966
989
|
| cli-dispatch | `cli-dispatch`, `layout` | argv through the routed CLI shell; Markdown wrapped by the shell, `--json` bare |
|
|
967
990
|
| script-dispatch | `script-dispatch` | the `hauler` entry through its `main` envelope as its own process |
|
|
968
991
|
| mcp-in-memory | `mcp-surface`, `layout` | tool names, `outputSchema`, the dashboard resource link, `_meta.hauler`, and a live fixture broker over the in-memory transport |
|
|
@@ -971,7 +994,7 @@ artifact build, at the harness proof levels:
|
|
|
971
994
|
| workbench-surface | `workbench-surface` | what `agent-bundle dev` would show: catalog, provider, lifecycles per host, counts |
|
|
972
995
|
|
|
973
996
|
Daemon-backed cases run a real broker in-process with a fake `cargo`
|
|
974
|
-
(`tests/harness.ts`) and reach it either through the `haulerDaemon` provider
|
|
997
|
+
(`tests/support/harness.ts`) and reach it either through the `haulerDaemon` provider
|
|
975
998
|
seam or through `CARGO_HAULER_STATE_DIR`.
|
|
976
999
|
|
|
977
1000
|
### Development
|