@staix/agent-hub 0.12.33 → 0.12.35
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 +22 -0
- package/README.md +3 -3
- package/docs/agent-notes/adapters.md +9 -3
- package/docs/agent-notes/budget.md +7 -3
- package/docs/agent-notes/bus.md +2 -1
- package/docs/agent-notes/daemon.md +7 -3
- package/docs/agent-notes/local-worker.md +1 -1
- package/docs/agent-notes/tasks.md +6 -2
- package/docs/agent-notes/tests.md +2 -1
- package/docs/gsd-collaboration-analysis.md +5 -1
- package/docs/operations.md +80 -16
- package/docs/quickstart.md +10 -2
- package/docs/sdlc.md +59 -34
- package/docs/security.md +7 -4
- package/docs/smoke.md +1 -1
- package/docs/specs/2026-09-19-agent-hub-design.md +407 -10
- package/docs/verification/2026-10-18-0.12.34.md +48 -0
- package/docs/verification/2026-10-18-0.12.35.md +49 -0
- package/docs/verification/2026-10-18-493-claude-busy-channel.md +91 -0
- package/docs/verified.json +35 -19
- package/package.json +1 -1
- package/plugins/agent-hub/.claude-plugin/plugin.json +1 -1
- package/plugins/agent-hub/server.js +23567 -16606
- package/src/adapters/acp.ts +3 -1
- package/src/adapters/claude-channel.ts +59 -29
- package/src/adapters/codex-appserver.ts +82 -12
- package/src/adapters/definitions/builtin-metadata.ts +101 -7
- package/src/adapters/definitions/native-cli-claude-launch.ts +90 -0
- package/src/adapters/definitions/native-cli-claude-setup.ts +80 -0
- package/src/adapters/definitions/native-cli-codex-launch.ts +14 -0
- package/src/adapters/definitions/native-cli-doctor.ts +46 -0
- package/src/adapters/definitions/native-cli-entry-claude.ts +52 -0
- package/src/adapters/definitions/native-cli-entry-codex.ts +34 -0
- package/src/adapters/definitions/native-cli-entry-jcode.ts +27 -0
- package/src/adapters/definitions/native-cli-entry-kimi.ts +57 -0
- package/src/adapters/definitions/native-cli-entry-local.ts +15 -0
- package/src/adapters/definitions/native-cli-entry-pi.ts +53 -0
- package/src/adapters/definitions/native-cli-entry-qwen.ts +21 -0
- package/src/adapters/definitions/native-cli-entry-types.ts +41 -0
- package/src/adapters/definitions/native-cli-entry.ts +19 -0
- package/src/adapters/definitions/native-cli-jcode-mcp.ts +58 -0
- package/src/adapters/definitions/native-cli-launch-common.ts +17 -0
- package/src/adapters/definitions/native-cli-pi.ts +33 -0
- package/src/adapters/definitions/native-cli-preview-claude.ts +37 -0
- package/src/adapters/definitions/native-cli-preview-codex.ts +20 -0
- package/src/adapters/definitions/native-cli-preview-common.ts +57 -0
- package/src/adapters/definitions/native-cli-preview-jcode.ts +20 -0
- package/src/adapters/definitions/native-cli-preview-kimi.ts +28 -0
- package/src/adapters/definitions/native-cli-preview-pi.ts +36 -0
- package/src/adapters/definitions/native-cli-preview-qwen.ts +22 -0
- package/src/adapters/definitions/native-cli-preview.ts +16 -0
- package/src/adapters/definitions/native-config-defaults.ts +19 -0
- package/src/adapters/definitions/native-config-policy.ts +35 -0
- package/src/adapters/definitions/native-context.ts +35 -0
- package/src/adapters/definitions/native-daemon-kimi.ts +5 -0
- package/src/adapters/definitions/native-daemon-policy.ts +18 -0
- package/src/adapters/definitions/native-display.ts +18 -0
- package/src/adapters/definitions/native-factories.ts +48 -0
- package/src/adapters/definitions/native-policy-aux.ts +130 -0
- package/src/adapters/definitions/native-quota.ts +29 -0
- package/src/adapters/definitions/native-recovery-continuity.ts +12 -0
- package/src/adapters/definitions/native-recovery.ts +88 -0
- package/src/adapters/definitions/qwen-native.ts +2 -2
- package/src/adapters/definitions/qwen.ts +8 -4
- package/src/adapters/local-worker.ts +3 -2
- package/src/adapters/pi.ts +3 -1
- package/src/adapters/registry-types.ts +100 -10
- package/src/adapters/registry.ts +127 -11
- package/src/cli/console-state.ts +5 -5
- package/src/cli/identity.ts +8 -7
- package/src/cli/jcode-mcp.ts +2 -58
- package/src/cli/launch.ts +41 -102
- package/src/cli/main.ts +126 -290
- package/src/cli/output.ts +3 -2
- package/src/cli/preview.ts +26 -126
- package/src/cli/recovery-guidance.ts +43 -22
- package/src/cli/setup.ts +2 -80
- package/src/cli/shell-quote.ts +3 -0
- package/src/cli/terminal-recovery.ts +81 -22
- package/src/cli/upgrade-interactive.ts +4 -2
- package/src/cli/upgrade-restore-state.ts +17 -7
- package/src/cli/upgrade-runtime.ts +126 -147
- package/src/cli/upgrade.ts +44 -27
- package/src/hub/budget.ts +59 -31
- package/src/hub/bus.ts +1 -1
- package/src/hub/conductor.ts +19 -9
- package/src/hub/config-apply.ts +22 -15
- package/src/hub/config-reload.ts +18 -3
- package/src/hub/config-trust.ts +1 -1
- package/src/hub/context-window.ts +3 -27
- package/src/hub/control-client.ts +1 -1
- package/src/hub/crash.ts +15 -39
- package/src/hub/daemon.ts +506 -341
- package/src/hub/execution-budget.ts +3 -2
- package/src/hub/hub-tools.ts +19 -8
- package/src/hub/instance-budget.ts +73 -0
- package/src/hub/instance-config.ts +47 -0
- package/src/hub/instance-execution.ts +50 -0
- package/src/hub/instances.ts +100 -0
- package/src/hub/lifecycle-schema.ts +7 -3
- package/src/hub/peer-catalog.ts +4 -13
- package/src/hub/permission-mode.ts +14 -17
- package/src/hub/recovery-continuity.ts +6 -5
- package/src/hub/report.ts +9 -8
- package/src/hub/roster.ts +9 -9
- package/src/hub/routing.ts +94 -19
- package/src/hub/sdlc-queue.ts +2 -2
- package/src/hub/sdlc.ts +84 -38
- package/src/hub/settings.ts +39 -10
- package/src/hub/settled-roles.ts +1 -1
- package/src/hub/snapshots.ts +40 -9
- package/src/hub/start-mode.ts +13 -8
- package/src/hub/status-roster.ts +8 -0
- package/src/hub/tasks.ts +60 -27
- package/src/hub/text-projection.ts +7 -3
- package/src/hub/tooling.ts +4 -60
- package/src/hub/ui.ts +3 -1
- package/src/hub/workflow.ts +30 -52
- package/src/memory/recall.ts +4 -5
- package/src/models/route/signals.ts +3 -1
- package/src/pi/launch.ts +5 -3
- package/src/ui/index.html +4 -3
- package/src/ui/office-model.ts +3 -1
- package/src/ui/peer-palette.ts +16 -6
- package/templates/AGENTS.block.md +2 -1
- package/templates/routing.toml +2 -2
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Busy Claude channel notification receipt (#493)
|
|
2
|
+
|
|
3
|
+
## Result
|
|
4
|
+
|
|
5
|
+
Positive native interactive receipt: Claude Code 2.1.302, Sonnet 5.5 (the native
|
|
6
|
+
`sonnet` alias), consumed a channel notification during the original busy turn.
|
|
7
|
+
The model called the observation tool with the exact random token before its
|
|
8
|
+
first `end_turn`. This supports important-only channel steering in the tested
|
|
9
|
+
interactive mode. It does not prove an arbitrary notification was read merely
|
|
10
|
+
because its stdout write succeeded, nor does it prove delivery in print mode.
|
|
11
|
+
|
|
12
|
+
## Native experiment
|
|
13
|
+
|
|
14
|
+
- A new scratch project outside the repository used one explicitly selected
|
|
15
|
+
development MCP channel, `busy-probe`. The harness preserved the executing
|
|
16
|
+
agent marker, removed live hub binding variables, loaded no project/user
|
|
17
|
+
settings or hooks, and exposed only three fixed fixture tools. It connected
|
|
18
|
+
neither to the person's hub nor to another peer.
|
|
19
|
+
- The original instruction called `probe_hold`, then `probe_after_hold`, then
|
|
20
|
+
finished with `DONE`. It also asked the model to report any actually observed
|
|
21
|
+
channel token, without inventing one. The token was generated only after
|
|
22
|
+
`probe_hold` started; neither the prompt nor the hold result contained it.
|
|
23
|
+
- While that tool was pending, the MCP server wrote
|
|
24
|
+
`notifications/claude/channel` with `priority: important` and the random token.
|
|
25
|
+
The fixed hold result contained only `ready: true`.
|
|
26
|
+
- The interactive run used a real PTY. The operator confirmed that this was a
|
|
27
|
+
locally written development channel. No trust or tool-approval prompt was
|
|
28
|
+
answered automatically, and no second model prompt was sent. After the
|
|
29
|
+
original response completed, the operator exited with Ctrl-D.
|
|
30
|
+
|
|
31
|
+
| Evidence | UTC on 2026-10-18 |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Native tool barrier entered | 07:25:36.997 |
|
|
34
|
+
| Notification written while tool pending | 07:25:37.298 |
|
|
35
|
+
| Fixed hold result released | 07:25:38.801 |
|
|
36
|
+
| Correct token received by observation tool | 07:25:41.948 |
|
|
37
|
+
| First original assistant `end_turn`, `DONE` | 07:25:43.016 |
|
|
38
|
+
|
|
39
|
+
The native transcript's zero-based record positions were 29 for the hold call,
|
|
40
|
+
49 for the matching observation call, and 52 for the first original `end_turn`.
|
|
41
|
+
The observation was after the tool barrier released but before that original
|
|
42
|
+
turn ended. The TUI also displayed the channel notification during its busy
|
|
43
|
+
indicator. Native exit was 0; process-table verification found no remaining
|
|
44
|
+
probe-owned native, helper or MCP server processes. The 90-second deadline did
|
|
45
|
+
not fire.
|
|
46
|
+
|
|
47
|
+
The automatic resource controller initially deferred on ordinary Teams/Jump
|
|
48
|
+
Desktop processes with no repository attribution. Manual inspection identified
|
|
49
|
+
their application origins and confirmed normal memory/thermal state, CPU idle
|
|
50
|
+
above 50%, no competing repository job and one probe worker. No existing app
|
|
51
|
+
was stopped. Native account/session metadata writes were not suppressed or
|
|
52
|
+
audited; this receipt does not claim the native client made no home-directory
|
|
53
|
+
writes.
|
|
54
|
+
|
|
55
|
+
## Preserved evidence
|
|
56
|
+
|
|
57
|
+
Private run artifacts are retained under workspace-relative
|
|
58
|
+
`scratchpad/temp/ahub-493-probe/interactive-zaTWkS/`; the invocation receipt points
|
|
59
|
+
to the native client's own transcript. Raw account/profile paths and the random
|
|
60
|
+
token are not copied into this document.
|
|
61
|
+
|
|
62
|
+
| Artifact | SHA-256 |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| `receipt.json` | `5108a491e3469baf9de67860d7d3fff37b5eb89b980fa9f1835ff28510f524b7` |
|
|
65
|
+
| `server-events.jsonl` | `43b079866ec2c8ac0437d51d2fd50549fec035b1a76feaa8c20142a58cdb1258` |
|
|
66
|
+
| `native-tui.log` | `2fc9182a355038c0b26d662054ee7abee9fda78569ea6b07893afeb44fd6da51` |
|
|
67
|
+
| `pty-events.jsonl` | `5ab8c672ea56512a6bdce111fe6960fc85ceb47ff88d7a1b17d528b1fdb10229` |
|
|
68
|
+
| Native transcript | `0acfd6f66ec20f0cb5ad4fe020d044e326c240289019785c15f3af64ca188ede` |
|
|
69
|
+
|
|
70
|
+
Token SHA-256:
|
|
71
|
+
`ea4326fdc248ddc69ba250005a472f5393c2250b1876fbe039cbef0561125d08`.
|
|
72
|
+
|
|
73
|
+
An earlier isolated print/stream-json run (`run-YwEcfC`) initialized the same
|
|
74
|
+
channel and wrote a notification while the hold tool was pending, then finished
|
|
75
|
+
without an observation call. That result remains inconclusive for interactive
|
|
76
|
+
delivery. It was not treated as a negative, and steering was added only after
|
|
77
|
+
the positive interactive receipt above.
|
|
78
|
+
|
|
79
|
+
## Implementation boundary
|
|
80
|
+
|
|
81
|
+
- A channel-capable attached `WsPeer` exposes steer only while it owns a push
|
|
82
|
+
socket; detach and pull-only attachment remove that capability. The bus admits
|
|
83
|
+
important work only, retains its existing pause/recovery/uncertainty holds and
|
|
84
|
+
removes the queued item before transport hand-off.
|
|
85
|
+
- A steered notification uses the ordinary delivery id, connection generation,
|
|
86
|
+
accepted receipt and explicit completion/correlated-reply contract. A transport
|
|
87
|
+
failure stays uncertain. An idle transition must not deliver it again.
|
|
88
|
+
- Queued ordinary work can be read through `hub_inbox` during a busy turn using
|
|
89
|
+
the existing atomic pull completion path. This does not settle a previously
|
|
90
|
+
accepted push. Fake-transport regressions cover these contracts separately
|
|
91
|
+
from this native observation.
|
package/docs/verified.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"documents": {
|
|
4
4
|
"README.md": {
|
|
5
|
-
"verifiedAgainst": "
|
|
5
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
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": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
15
15
|
"paths": [
|
|
16
16
|
"src/",
|
|
17
17
|
"templates/"
|
|
18
18
|
]
|
|
19
19
|
},
|
|
20
20
|
"docs/operations.md": {
|
|
21
|
-
"verifiedAgainst": "
|
|
21
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
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": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
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": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
47
47
|
"paths": [
|
|
48
48
|
"src/adapters/",
|
|
49
49
|
"src/pi/",
|
|
@@ -58,11 +58,13 @@
|
|
|
58
58
|
"src/cli/identity.ts",
|
|
59
59
|
"src/local/tools.ts",
|
|
60
60
|
"src/hub/start-mode.ts",
|
|
61
|
-
"src/hub/terminal-open.ts"
|
|
61
|
+
"src/hub/terminal-open.ts",
|
|
62
|
+
"test/registry-guard.test.ts",
|
|
63
|
+
"test/registry-guard.baseline.json"
|
|
62
64
|
]
|
|
63
65
|
},
|
|
64
66
|
"docs/agent-notes/benchmarks.md": {
|
|
65
|
-
"verifiedAgainst": "
|
|
67
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
66
68
|
"paths": [
|
|
67
69
|
"scripts/benchmarks/",
|
|
68
70
|
"test/benchmarks/",
|
|
@@ -74,7 +76,7 @@
|
|
|
74
76
|
]
|
|
75
77
|
},
|
|
76
78
|
"docs/agent-notes/budget.md": {
|
|
77
|
-
"verifiedAgainst": "
|
|
79
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
78
80
|
"paths": [
|
|
79
81
|
"src/hub/budget.ts",
|
|
80
82
|
"src/cli/statusline-tee.ts",
|
|
@@ -82,11 +84,15 @@
|
|
|
82
84
|
"src/hub/delivery-journal.ts",
|
|
83
85
|
"src/hub/restart.ts",
|
|
84
86
|
"src/hub/context-window.ts",
|
|
85
|
-
"src/hub/daemon.ts"
|
|
87
|
+
"src/hub/daemon.ts",
|
|
88
|
+
"src/adapters/definitions/native-quota.ts",
|
|
89
|
+
"src/adapters/definitions/native-context.ts",
|
|
90
|
+
"src/adapters/registry.ts",
|
|
91
|
+
"src/hub/instance-budget.ts"
|
|
86
92
|
]
|
|
87
93
|
},
|
|
88
94
|
"docs/agent-notes/bus.md": {
|
|
89
|
-
"verifiedAgainst": "
|
|
95
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
90
96
|
"paths": [
|
|
91
97
|
"src/hub/bus.ts",
|
|
92
98
|
"src/hub/envelope.ts",
|
|
@@ -100,7 +106,7 @@
|
|
|
100
106
|
]
|
|
101
107
|
},
|
|
102
108
|
"docs/agent-notes/daemon.md": {
|
|
103
|
-
"verifiedAgainst": "
|
|
109
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
104
110
|
"paths": [
|
|
105
111
|
"src/hub/daemon.ts",
|
|
106
112
|
"src/hub/control-client.ts",
|
|
@@ -138,22 +144,30 @@
|
|
|
138
144
|
"src/hub/config-reload.ts",
|
|
139
145
|
"src/hub/config-apply.ts",
|
|
140
146
|
"src/hub/recovery-continuity.ts",
|
|
141
|
-
"src/cli/recovery-presentation-options.ts"
|
|
147
|
+
"src/cli/recovery-presentation-options.ts",
|
|
148
|
+
"src/adapters/definitions/native-recovery*.ts",
|
|
149
|
+
"src/adapters/definitions/native-policy-aux.ts",
|
|
150
|
+
"src/adapters/definitions/native-config-*.ts",
|
|
151
|
+
"src/adapters/definitions/native-cli-*.ts",
|
|
152
|
+
"src/hub/instances.ts",
|
|
153
|
+
"src/hub/instance-config.ts",
|
|
154
|
+
"src/hub/instance-execution.ts"
|
|
142
155
|
]
|
|
143
156
|
},
|
|
144
157
|
"docs/agent-notes/local-worker.md": {
|
|
145
|
-
"verifiedAgainst": "
|
|
158
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
146
159
|
"paths": [
|
|
147
160
|
"src/adapters/local-worker.ts",
|
|
148
161
|
"src/local/",
|
|
149
162
|
"src/memory/capture.ts",
|
|
150
163
|
"src/hub/facts.ts",
|
|
151
164
|
"src/hub/permission-mode.ts",
|
|
152
|
-
"src/hub/git.ts"
|
|
165
|
+
"src/hub/git.ts",
|
|
166
|
+
"src/hub/instance-execution.ts"
|
|
153
167
|
]
|
|
154
168
|
},
|
|
155
169
|
"docs/agent-notes/models.md": {
|
|
156
|
-
"verifiedAgainst": "
|
|
170
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
157
171
|
"paths": [
|
|
158
172
|
"src/models/",
|
|
159
173
|
"src/hub/inference.ts",
|
|
@@ -162,7 +176,7 @@
|
|
|
162
176
|
]
|
|
163
177
|
},
|
|
164
178
|
"docs/agent-notes/tasks.md": {
|
|
165
|
-
"verifiedAgainst": "
|
|
179
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
166
180
|
"paths": [
|
|
167
181
|
"src/hub/tasks.ts",
|
|
168
182
|
"src/hub/board.ts",
|
|
@@ -176,11 +190,13 @@
|
|
|
176
190
|
"src/hub/supervision.ts",
|
|
177
191
|
"src/hub/tool-refusal.ts",
|
|
178
192
|
"src/hub/daemon.ts",
|
|
179
|
-
"src/hub/settled-roles.ts"
|
|
193
|
+
"src/hub/settled-roles.ts",
|
|
194
|
+
"src/adapters/definitions/builtin-metadata.ts",
|
|
195
|
+
"src/hub/bus.ts"
|
|
180
196
|
]
|
|
181
197
|
},
|
|
182
198
|
"docs/agent-notes/tests.md": {
|
|
183
|
-
"verifiedAgainst": "
|
|
199
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
184
200
|
"paths": [
|
|
185
201
|
"test/",
|
|
186
202
|
"scripts/check.sh",
|
|
@@ -199,7 +215,7 @@
|
|
|
199
215
|
]
|
|
200
216
|
},
|
|
201
217
|
"docs/agent-notes/README.md": {
|
|
202
|
-
"verifiedAgainst": "
|
|
218
|
+
"verifiedAgainst": "03209040585a57c7c0a1f2b81f6be814df88267c",
|
|
203
219
|
"paths": [
|
|
204
220
|
"src/cli/console-state.ts",
|
|
205
221
|
"src/cli/attention.ts",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-hub",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.35",
|
|
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",
|