@staix/agent-hub 0.13.0 → 0.15.0
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 +30 -0
- package/README.md +19 -7
- package/docs/agent-notes/README.md +4 -0
- package/docs/agent-notes/adapters.md +18 -4
- package/docs/agent-notes/budget.md +5 -4
- package/docs/agent-notes/bus.md +1 -0
- package/docs/agent-notes/daemon.md +19 -7
- package/docs/agent-notes/tasks.md +15 -7
- package/docs/agent-notes/tests.md +4 -4
- package/docs/dogfood.md +18 -10
- package/docs/events.md +21 -7
- package/docs/operations.md +131 -27
- package/docs/profiles.md +1 -0
- package/docs/quickstart.md +13 -3
- package/docs/sdlc.md +40 -2
- package/docs/security.md +45 -14
- package/docs/specs/2026-09-19-agent-hub-design.md +112 -10
- package/docs/verification/2026-10-22-codex-reviewer-isolation.md +14 -0
- package/docs/verification/2026-10-23-0.14.0.md +69 -0
- package/docs/verification/2026-10-23-0.15.0.md +80 -0
- package/docs/verification/2026-10-23-daemon-responsiveness.md +44 -0
- package/docs/verification/2026-10-23-headless-claude-permissions.md +47 -0
- package/docs/verification/2026-10-23-terminal-claude-execution-root.md +41 -0
- package/docs/verified.json +34 -17
- package/package.json +1 -1
- package/plugins/agent-hub/.claude-plugin/plugin.json +1 -1
- package/plugins/agent-hub/server.js +1078 -327
- package/src/adapters/acp.ts +43 -7
- package/src/adapters/claude-channel.ts +26 -4
- package/src/adapters/claude-implementer.ts +243 -0
- package/src/adapters/claude-print-child.ts +90 -0
- package/src/adapters/claude-task-sessions.ts +80 -0
- package/src/adapters/codex-review-isolation.ts +18 -7
- package/src/adapters/compat.ts +4 -0
- package/src/adapters/conformance/enrollment.ts +2 -1
- package/src/adapters/conformance/fakes/acp-server.ts +3 -1
- package/src/adapters/definitions/builtin-metadata.ts +15 -3
- package/src/adapters/definitions/native-channel-state.ts +1 -1
- package/src/adapters/definitions/native-cli-entry-claude.ts +13 -8
- package/src/adapters/definitions/native-cli-entry-codex.ts +13 -0
- package/src/adapters/definitions/native-cli-entry-types.ts +2 -0
- package/src/adapters/definitions/native-factories.ts +8 -0
- package/src/adapters/kimi-wire-usage.ts +303 -0
- package/src/adapters/registry-types.ts +7 -3
- package/src/adapters/registry.ts +14 -2
- package/src/adapters/reviewer-print.ts +64 -60
- package/src/cli/console-config.ts +123 -0
- package/src/cli/console-state.ts +28 -1
- package/src/cli/console.ts +25 -1
- package/src/cli/facts-hook.ts +9 -5
- package/src/cli/help.ts +6 -4
- package/src/cli/launch.ts +10 -4
- package/src/cli/main.ts +52 -9
- package/src/cli/output.ts +75 -2
- package/src/cli/reset.ts +1 -1
- package/src/cli/settings-edit.ts +89 -0
- package/src/cli/status-lines.ts +1 -1
- package/src/cli/terminal-recovery.ts +1 -6
- package/src/hub/action-enforce.ts +82 -0
- package/src/hub/action-policy.ts +22 -10
- package/src/hub/board.ts +48 -3
- package/src/hub/budget.ts +5 -0
- package/src/hub/bus.ts +5 -5
- package/src/hub/claude-launch-proof.ts +33 -0
- package/src/hub/config-apply.ts +5 -0
- package/src/hub/config-edit-host.ts +173 -0
- package/src/hub/config-edit.ts +282 -0
- package/src/hub/config-tier.ts +89 -0
- package/src/hub/control-client.ts +24 -3
- package/src/hub/daemon.ts +450 -71
- package/src/hub/deliverable-files.ts +131 -0
- package/src/hub/deliverables.ts +125 -0
- package/src/hub/delivery-journal.ts +18 -2
- package/src/hub/events.ts +3 -1
- package/src/hub/hub-tools.ts +21 -4
- package/src/hub/instances.ts +19 -6
- package/src/hub/kimi-usage.ts +144 -0
- package/src/hub/manager.ts +3 -3
- package/src/hub/peers.ts +7 -0
- package/src/hub/permission-payload.ts +15 -0
- package/src/hub/routing.ts +118 -3
- package/src/hub/sdlc-metrics.ts +260 -0
- package/src/hub/sdlc.ts +5 -3
- package/src/hub/settings.ts +1 -1
- package/src/hub/spec-read.ts +31 -0
- package/src/hub/task-code-group.ts +52 -0
- package/src/hub/tasks.ts +374 -37
- package/src/hub/token-window.ts +33 -0
- package/src/hub/ui.ts +3 -0
- package/src/hub/usage-rollup.ts +74 -6
- package/src/hub/workflow.ts +16 -0
- package/src/ui/index.html +388 -3
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Terminal Claude execution-root receipt
|
|
2
|
+
|
|
3
|
+
Date: 2026-10-23. Native version: Claude Code 2.1.309. Scope: #525 R5b, slice 525-5.
|
|
4
|
+
|
|
5
|
+
## Native cwd evidence
|
|
6
|
+
|
|
7
|
+
An isolated HOME and CLAUDE_CONFIG_DIR, empty of authentication, loaded one fixture stdio MCP server. The native session ran from a separate fixture cwd with:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
claude --bare --print --input-format stream-json --output-format stream-json --verbose --strict-mcp-config --mcp-config <fixture.json> --no-session-persistence --tools ''
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The driver sent exactly one `control_request` with `request.subtype: initialize` and no user messages. The native control response was success. The fixture observed MCP initialize and tools/list. The MCP process's canonical cwd matched the native session cwd. Stderr was empty. The owned native session group was terminated and reaped afterwards; no fixture MCP process remained. No model request, login, real credential HOME or person's live session was used.
|
|
14
|
+
|
|
15
|
+
A separate `claude mcp list` health check from two different fixture directories also started the server in each caller's canonical cwd. The actual session initialization, rather than that health check alone, is the basis for hello cwd.
|
|
16
|
+
|
|
17
|
+
## Host admission and limits
|
|
18
|
+
|
|
19
|
+
The launcher and daemon independently use the existing managed-worktree resolver. A matching launch id, private record executionCwd, native hello cwd and validated noncanonical worktree are all required. The proof is tied to the attached socket and claim generation. Missing or mismatched root stays unisolated; explicit routing refuses a write owner. A launch replacement or detach invalidates proof. Facts use the verified root, and recovery revalidates it against the declaration.
|
|
20
|
+
|
|
21
|
+
The native observation covers this installed version's initialize-only session. It does not certify a real implementation turn, native --worktree behavior, a user hook that changes cwd, other native versions or kernel write isolation. The daemon rejects differing reported cwd regardless of those reasons. A real account/model turn remains the manual smoke leg.
|
|
22
|
+
|
|
23
|
+
Runtime proof revalidates the worktree before owner reads/effects, sharing evidence only within synchronous code in one event-loop turn. This uses the existing resolver's aggregate 5-second Git budget per peer (up to four Git subprocesses). No terminal Claude implementer is declared in this repository, so this receipt makes no live multi-instance CPU claim. The existing resolver's ponytail applies: an asynchronous validation/admission boundary or correctly invalidated semantic inventory cache is the upgrade if that cost becomes material.
|
|
24
|
+
|
|
25
|
+
## Verification
|
|
26
|
+
|
|
27
|
+
Candidate checks are recorded in the PR and task handoff at the exact head. Focused tests cover positive ownership/facts, absent and mismatched evidence, replacement/detach, private-record and size fences, native launch cwd versus canonical hub root, and terminal recovery root/identity drift.
|
|
28
|
+
|
|
29
|
+
Native candidate validation with pinned Bun 1.4.2: `scripts/check.sh --changed` passed 3,618 tests across 285 files, 194,424 assertions, 0 failures (753.24 seconds). The gate ended `check: no current-invocation agent-hub daemon leaks` and `check: OK (changed)`. Bundle freshness and npm package contents passed. The new mismatch test fails on a named assertion when the cwd comparison is removed, then passes with the source restored. CI on both OSes remains a separate exact-head review gate; no CI pass is claimed here.
|
|
30
|
+
|
|
31
|
+
## R1 follow-up
|
|
32
|
+
|
|
33
|
+
The review found that verifier-only declarations bypassed the implementer-only facts guard. Every declared worktree now requires current owner-root proof before facts permission or tree observations; absent/revoked proof returns no grant and no canonical-tree fallback. The regression establishes a real hook generation, changes permission through the console, then checks revoked and missing roots under both ask-when-needed and never-ask. It fails against the former facts guard.
|
|
34
|
+
|
|
35
|
+
The channel resolves its cwd best-effort on each connection. A deleted native cwd omits root evidence while preserving hub messaging; an actual removed-directory reconnect regression fails against the former unguarded lookup and passes with the fix. This never upgrades missing evidence into owner isolation.
|
|
36
|
+
|
|
37
|
+
The readonly-glob seed now targets the verified-root expression and still removes only readonly policy enforcement. Shard 14/64 passed all seven sequential green-to-named-assertion detections, including that seed.
|
|
38
|
+
|
|
39
|
+
The original macOS CI failure at 9dc3cf03 was `hdiutil create` returning 1 before the HFS+ sandbox body ran, rather than an accepted forbidden write. This PR changes no sandbox/deny implementation or HFS+ test. The unchanged named HFS+ test passed three consecutive native runs (307 assertions each) on the R1 candidate. This does not establish the new head's GitHub macOS result; both-OS exact-head CI remains required.
|
|
40
|
+
|
|
41
|
+
R1 local gate with pinned Bun 1.4.2: `scripts/check.sh --changed` passed 3,634 tests across 286 selected files, 194,501 assertions, 0 failures (762.35 seconds), no current-invocation daemon leaks, `check: OK (changed)`. The watchdog used the hosted macOS 1,260-second setting; per-test timeout stayed 20 seconds. This was the changed gate, not a 506-file full-suite claim. New-head CI remains unobserved until the reviewer reads its results.
|
package/docs/verified.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"documents": {
|
|
4
4
|
"README.md": {
|
|
5
|
-
"verifiedAgainst": "
|
|
5
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
6
6
|
"paths": [
|
|
7
7
|
"package.json",
|
|
8
8
|
"src/",
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
]
|
|
12
12
|
},
|
|
13
13
|
"docs/security.md": {
|
|
14
|
-
"verifiedAgainst": "
|
|
14
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
15
15
|
"paths": [
|
|
16
16
|
"src/",
|
|
17
17
|
"templates/"
|
|
18
18
|
]
|
|
19
19
|
},
|
|
20
20
|
"docs/operations.md": {
|
|
21
|
-
"verifiedAgainst": "
|
|
21
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
22
22
|
"paths": [
|
|
23
23
|
"package.json",
|
|
24
24
|
"src/",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
]
|
|
36
36
|
},
|
|
37
37
|
"docs/quickstart.md": {
|
|
38
|
-
"verifiedAgainst": "
|
|
38
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
39
39
|
"paths": [
|
|
40
40
|
"package.json",
|
|
41
41
|
"src/",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
45
|
"docs/agent-notes/adapters.md": {
|
|
46
|
-
"verifiedAgainst": "
|
|
46
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
47
47
|
"paths": [
|
|
48
48
|
"src/adapters/",
|
|
49
49
|
"src/pi/",
|
|
@@ -69,11 +69,13 @@
|
|
|
69
69
|
"src/cli/configured-acp-entry.ts",
|
|
70
70
|
"src/cli/preview.ts",
|
|
71
71
|
"src/hub/roster.ts",
|
|
72
|
-
"src/hub/instances.ts"
|
|
72
|
+
"src/hub/instances.ts",
|
|
73
|
+
"src/hub/action-enforce.ts",
|
|
74
|
+
"src/hub/permission-payload.ts"
|
|
73
75
|
]
|
|
74
76
|
},
|
|
75
77
|
"docs/agent-notes/benchmarks.md": {
|
|
76
|
-
"verifiedAgainst": "
|
|
78
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
77
79
|
"paths": [
|
|
78
80
|
"scripts/benchmarks/",
|
|
79
81
|
"test/benchmarks/",
|
|
@@ -85,7 +87,7 @@
|
|
|
85
87
|
]
|
|
86
88
|
},
|
|
87
89
|
"docs/agent-notes/budget.md": {
|
|
88
|
-
"verifiedAgainst": "
|
|
90
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
89
91
|
"paths": [
|
|
90
92
|
"src/hub/budget.ts",
|
|
91
93
|
"src/cli/statusline-tee.ts",
|
|
@@ -99,11 +101,15 @@
|
|
|
99
101
|
"src/adapters/registry.ts",
|
|
100
102
|
"src/hub/instance-budget.ts",
|
|
101
103
|
"src/hub/claude-state.ts",
|
|
102
|
-
"src/adapters/definitions/native-channel-state.ts"
|
|
104
|
+
"src/adapters/definitions/native-channel-state.ts",
|
|
105
|
+
"src/hub/usage-rollup.ts",
|
|
106
|
+
"src/adapters/kimi-wire-usage.ts",
|
|
107
|
+
"src/hub/kimi-usage.ts",
|
|
108
|
+
"src/hub/token-window.ts"
|
|
103
109
|
]
|
|
104
110
|
},
|
|
105
111
|
"docs/agent-notes/bus.md": {
|
|
106
|
-
"verifiedAgainst": "
|
|
112
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
107
113
|
"paths": [
|
|
108
114
|
"src/hub/bus.ts",
|
|
109
115
|
"src/hub/envelope.ts",
|
|
@@ -118,7 +124,7 @@
|
|
|
118
124
|
]
|
|
119
125
|
},
|
|
120
126
|
"docs/agent-notes/daemon.md": {
|
|
121
|
-
"verifiedAgainst": "
|
|
127
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
122
128
|
"paths": [
|
|
123
129
|
"src/hub/daemon.ts",
|
|
124
130
|
"src/hub/control-client.ts",
|
|
@@ -175,7 +181,13 @@
|
|
|
175
181
|
"src/adapters/configured-acp.ts",
|
|
176
182
|
"src/hub/config-trust.ts",
|
|
177
183
|
"src/cli/memory.ts",
|
|
178
|
-
"src/adapters/definitions/native-channel-state.ts"
|
|
184
|
+
"src/adapters/definitions/native-channel-state.ts",
|
|
185
|
+
"src/hub/task-code-group.ts",
|
|
186
|
+
"src/cli/status-lines.ts",
|
|
187
|
+
"src/hub/config-tier.ts",
|
|
188
|
+
"src/hub/config-edit.ts",
|
|
189
|
+
"src/hub/config-edit-host.ts",
|
|
190
|
+
"src/hub/claude-launch-proof.ts"
|
|
179
191
|
]
|
|
180
192
|
},
|
|
181
193
|
"docs/agent-notes/local-worker.md": {
|
|
@@ -199,7 +211,7 @@
|
|
|
199
211
|
]
|
|
200
212
|
},
|
|
201
213
|
"docs/agent-notes/tasks.md": {
|
|
202
|
-
"verifiedAgainst": "
|
|
214
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
203
215
|
"paths": [
|
|
204
216
|
"src/hub/tasks.ts",
|
|
205
217
|
"src/hub/board.ts",
|
|
@@ -226,11 +238,16 @@
|
|
|
226
238
|
"src/hub/no-writes.ts",
|
|
227
239
|
"src/adapters/registry.ts",
|
|
228
240
|
"src/hub/review-findings.ts",
|
|
229
|
-
"src/hub/plan-conformance.ts"
|
|
241
|
+
"src/hub/plan-conformance.ts",
|
|
242
|
+
"src/hub/sdlc-metrics.ts",
|
|
243
|
+
"src/hub/spec-read.ts",
|
|
244
|
+
"src/hub/workflow.ts",
|
|
245
|
+
"src/hub/deliverables.ts",
|
|
246
|
+
"src/hub/deliverable-files.ts"
|
|
230
247
|
]
|
|
231
248
|
},
|
|
232
249
|
"docs/agent-notes/tests.md": {
|
|
233
|
-
"verifiedAgainst": "
|
|
250
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
234
251
|
"paths": [
|
|
235
252
|
"test/",
|
|
236
253
|
"scripts/check.sh",
|
|
@@ -249,7 +266,7 @@
|
|
|
249
266
|
]
|
|
250
267
|
},
|
|
251
268
|
"docs/agent-notes/README.md": {
|
|
252
|
-
"verifiedAgainst": "
|
|
269
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
253
270
|
"paths": [
|
|
254
271
|
"src/cli/console-state.ts",
|
|
255
272
|
"src/cli/attention.ts",
|
|
@@ -258,7 +275,7 @@
|
|
|
258
275
|
]
|
|
259
276
|
},
|
|
260
277
|
"src/cli/help.ts": {
|
|
261
|
-
"verifiedAgainst": "
|
|
278
|
+
"verifiedAgainst": "ea32305fafd9bdac6b5e6f9d9048006f3c1ba060",
|
|
262
279
|
"paths": [
|
|
263
280
|
"src/cli/main.ts",
|
|
264
281
|
"src/cli/launch.ts",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-hub",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Channel between Claude Code and the agent-hub daemon: peer messages from Codex, Kimi and the local worker arrive as channel events; hub_send replies.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Young Joon Lee",
|