@staix/agent-hub 0.23.1 → 0.25.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.
Files changed (95) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +32 -5
  3. package/docs/agent-notes/adapters.md +5 -2
  4. package/docs/agent-notes/bus.md +1 -0
  5. package/docs/agent-notes/daemon.md +16 -2
  6. package/docs/agent-notes/tasks.md +9 -2
  7. package/docs/agent-notes/tests.md +3 -0
  8. package/docs/dogfood.md +16 -2
  9. package/docs/memory.md +1 -1
  10. package/docs/operations.md +198 -5
  11. package/docs/profiles.md +2 -0
  12. package/docs/quickstart.md +19 -4
  13. package/docs/security.md +225 -8
  14. package/docs/specs/2026-09-19-agent-hub-design.md +54 -1
  15. package/docs/specs/2026-09-19-multi-project-design.md +12 -1
  16. package/docs/specs/2026-11-01-research-campaigns-design.md +351 -0
  17. package/docs/verification/2026-10-31-0.24.0.md +63 -0
  18. package/docs/verification/2026-10-31-claude-implementer-2.1.316.md +65 -0
  19. package/docs/verification/2026-11-01-0.25.0.md +91 -0
  20. package/docs/verification/claude-shell-wrapper-native.py +1 -1
  21. package/docs/verified.json +31 -15
  22. package/package.json +4 -3
  23. package/plugins/agent-hub/.claude-plugin/plugin.json +1 -1
  24. package/plugins/agent-hub/server.js +5120 -4710
  25. package/src/adapters/claude-channel.ts +29 -6
  26. package/src/adapters/compat.ts +3 -3
  27. package/src/adapters/definitions/native-cli-claude-setup.ts +4 -0
  28. package/src/adapters/definitions/native-cli-doctor.ts +30 -0
  29. package/src/adapters/jcode.ts +3 -0
  30. package/src/adapters/registry.ts +1 -1
  31. package/src/cli/acon-register.ts +29 -0
  32. package/src/cli/autonomy-homes.ts +33 -0
  33. package/src/cli/autonomy-offline.ts +75 -0
  34. package/src/cli/autonomy-projects.ts +103 -0
  35. package/src/cli/autonomy.ts +44 -0
  36. package/src/cli/claude-homes.ts +123 -0
  37. package/src/cli/claude-profile-hook.ts +130 -0
  38. package/src/cli/handoff-args.ts +27 -0
  39. package/src/cli/handoff-output.ts +25 -0
  40. package/src/cli/help.ts +8 -4
  41. package/src/cli/identity.ts +8 -1
  42. package/src/cli/main.ts +174 -33
  43. package/src/cli/output.ts +8 -5
  44. package/src/cli/schedule-output.ts +8 -4
  45. package/src/cli/setup-homes.ts +46 -0
  46. package/src/cli/setup.ts +1 -1
  47. package/src/cli/study-output.ts +71 -0
  48. package/src/cli/study.ts +58 -0
  49. package/src/cli/task-output.ts +1 -0
  50. package/src/hub/action-class.ts +203 -14
  51. package/src/hub/action-enforce.ts +8 -6
  52. package/src/hub/action-policy.ts +95 -9
  53. package/src/hub/autonomy-consent.ts +173 -0
  54. package/src/hub/autonomy-defaults.ts +58 -0
  55. package/src/hub/autonomy.ts +232 -0
  56. package/src/hub/board.ts +871 -2
  57. package/src/hub/channel-project.ts +61 -0
  58. package/src/hub/config-apply.ts +3 -2
  59. package/src/hub/confirmation-matrix.ts +202 -0
  60. package/src/hub/control-client.ts +10 -1
  61. package/src/hub/daemon.ts +546 -27
  62. package/src/hub/envelope.ts +2 -0
  63. package/src/hub/events.ts +4 -1
  64. package/src/hub/execution-budget.ts +12 -0
  65. package/src/hub/handoff.ts +126 -0
  66. package/src/hub/hub-tools.ts +12 -2
  67. package/src/hub/manager.ts +64 -57
  68. package/src/hub/no-writes.ts +1 -1
  69. package/src/hub/path-policy.ts +12 -8
  70. package/src/hub/project.ts +14 -5
  71. package/src/hub/provenance.ts +30 -0
  72. package/src/hub/research-campaign.ts +265 -0
  73. package/src/hub/research-experiments.ts +445 -0
  74. package/src/hub/restart.ts +26 -0
  75. package/src/hub/schedules.ts +210 -9
  76. package/src/hub/session-identity.ts +49 -0
  77. package/src/hub/settings.ts +105 -8
  78. package/src/hub/task-repository.ts +11 -6
  79. package/src/hub/tasks.ts +894 -22
  80. package/src/hub/ui.ts +15 -6
  81. package/src/memory/capture.ts +2 -2
  82. package/src/ui/index.html +5 -3
  83. package/src/ui/office-space.ts +118 -0
  84. package/src/ui/plugin.ts +293 -0
  85. package/templates/AGENTS.block.md +1 -0
  86. package/templates/presets/autonomous.json +161 -0
  87. package/templates/presets/confirmation-matrix.json +943 -0
  88. package/templates/profiles/general.json +1 -1
  89. package/templates/profiles/research.json +4 -4
  90. package/templates/profiles/writing.json +1 -1
  91. package/templates/roles/research/analyst.md +1 -0
  92. package/templates/roles/research/fact-checker.md +1 -0
  93. package/templates/roles/research/research-lead.md +1 -0
  94. package/templates/roles/research/researcher.md +1 -0
  95. package/templates/roles/research/statistician.md +1 -0
@@ -68,7 +68,7 @@ results=[]
68
68
  for raw_binary in args.claude:
69
69
  binary=pathlib.Path(raw_binary).resolve(); identity=ROOT/('identity-'+binary.name); identity.mkdir()
70
70
  version=subprocess.run([str(binary),'--version'],env={'HOME':str(identity),'CLAUDE_CONFIG_DIR':str(identity/'config'),'PATH':'/usr/bin:/bin'},capture_output=True,text=True,timeout=10)
71
- assert version.returncode==0 and version.stdout.strip().split()[0] in ('2.1.309','2.1.310','2.1.314'),(version.returncode,version.stdout)
71
+ assert version.returncode==0 and version.stdout.strip().split()[0] in ('2.1.309','2.1.310','2.1.314','2.1.316'),(version.returncode,version.stdout)
72
72
  label=version.stdout.strip().split()[0]; digest=sha(binary)
73
73
  for mode in ('context','normalized'):
74
74
  d=ROOT/(label+'-'+mode); d.mkdir(); home=d/'home';home.mkdir(); work=d/"work 'quoted'";work.mkdir();(work/'sub').mkdir()
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": 1,
3
3
  "documents": {
4
4
  "README.md": {
5
- "verifiedAgainst": "5b63fa3809f5bee0002d01685abac8b2fadc0cdd",
5
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
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": "5b63fa3809f5bee0002d01685abac8b2fadc0cdd",
14
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
15
15
  "paths": [
16
16
  "src/",
17
17
  "templates/"
18
18
  ]
19
19
  },
20
20
  "docs/operations.md": {
21
- "verifiedAgainst": "5b63fa3809f5bee0002d01685abac8b2fadc0cdd",
21
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
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": "5b63fa3809f5bee0002d01685abac8b2fadc0cdd",
38
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
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": "5b63fa3809f5bee0002d01685abac8b2fadc0cdd",
46
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
47
47
  "paths": [
48
48
  "src/adapters/",
49
49
  "src/pi/",
@@ -93,7 +93,7 @@
93
93
  ]
94
94
  },
95
95
  "docs/agent-notes/budget.md": {
96
- "verifiedAgainst": "ce8da3ec141f7ef17e2e1cd6a8104ddc36304efe",
96
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
97
97
  "paths": [
98
98
  "src/hub/budget.ts",
99
99
  "src/cli/statusline-tee.ts",
@@ -117,7 +117,7 @@
117
117
  ]
118
118
  },
119
119
  "docs/agent-notes/bus.md": {
120
- "verifiedAgainst": "ce8da3ec141f7ef17e2e1cd6a8104ddc36304efe",
120
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
121
121
  "paths": [
122
122
  "src/hub/bus.ts",
123
123
  "src/hub/envelope.ts",
@@ -132,7 +132,7 @@
132
132
  ]
133
133
  },
134
134
  "docs/agent-notes/daemon.md": {
135
- "verifiedAgainst": "ce8da3ec141f7ef17e2e1cd6a8104ddc36304efe",
135
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
136
136
  "paths": [
137
137
  "src/hub/daemon.ts",
138
138
  "src/hub/control-client.ts",
@@ -201,11 +201,20 @@
201
201
  "src/hub/memory-code-head.ts",
202
202
  "src/hub/memory-stale-anchors.ts",
203
203
  "src/memory/brief.ts",
204
- "src/hub/memory-plan-guard.ts"
204
+ "src/hub/memory-plan-guard.ts",
205
+ "src/ui/plugin.ts",
206
+ "src/ui/office-space.ts",
207
+ "src/cli/acon-register.ts",
208
+ "src/cli/study.ts",
209
+ "src/cli/study-output.ts",
210
+ "src/hub/session-identity.ts",
211
+ "src/hub/provenance.ts",
212
+ "src/hub/channel-project.ts",
213
+ "src/hub/project.ts"
205
214
  ]
206
215
  },
207
216
  "docs/agent-notes/local-worker.md": {
208
- "verifiedAgainst": "ce8da3ec141f7ef17e2e1cd6a8104ddc36304efe",
217
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
209
218
  "paths": [
210
219
  "src/adapters/local-worker.ts",
211
220
  "src/local/",
@@ -225,7 +234,7 @@
225
234
  ]
226
235
  },
227
236
  "docs/agent-notes/tasks.md": {
228
- "verifiedAgainst": "ce8da3ec141f7ef17e2e1cd6a8104ddc36304efe",
237
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
229
238
  "paths": [
230
239
  "src/hub/tasks.ts",
231
240
  "src/hub/board.ts",
@@ -260,11 +269,18 @@
260
269
  "src/hub/deliverable-files.ts",
261
270
  "src/hub/sdlc-merge.ts",
262
271
  "src/hub/sdlc-mirror.ts",
263
- "src/hub/ci-watch.ts"
272
+ "src/hub/ci-watch.ts",
273
+ "src/hub/research-campaign.ts",
274
+ "src/hub/research-experiments.ts",
275
+ "src/hub/schedules.ts",
276
+ "src/hub/folder-trigger.ts",
277
+ "src/hub/handoff.ts",
278
+ "src/cli/handoff-args.ts",
279
+ "src/cli/handoff-output.ts"
264
280
  ]
265
281
  },
266
282
  "docs/agent-notes/tests.md": {
267
- "verifiedAgainst": "5b63fa3809f5bee0002d01685abac8b2fadc0cdd",
283
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
268
284
  "paths": [
269
285
  "test/",
270
286
  "scripts/check.sh",
@@ -292,7 +308,7 @@
292
308
  ]
293
309
  },
294
310
  "docs/agent-notes/README.md": {
295
- "verifiedAgainst": "ce8da3ec141f7ef17e2e1cd6a8104ddc36304efe",
311
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
296
312
  "paths": [
297
313
  "src/cli/console-state.ts",
298
314
  "src/cli/attention.ts",
@@ -301,7 +317,7 @@
301
317
  ]
302
318
  },
303
319
  "src/cli/help.ts": {
304
- "verifiedAgainst": "ce8da3ec141f7ef17e2e1cd6a8104ddc36304efe",
320
+ "verifiedAgainst": "aaccc30bd32653ba1925220334445e020be21732",
305
321
  "paths": [
306
322
  "src/cli/main.ts",
307
323
  "src/cli/launch.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@staix/agent-hub",
3
- "version": "0.23.1",
3
+ "version": "0.25.0",
4
4
  "description": "Native multi-agent hub: Claude Code, Codex, Kimi Code, Pi and local inference as peers in one project",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -17,7 +17,7 @@
17
17
  "bun": ">=1.4.2"
18
18
  },
19
19
  "dependencies": {
20
- "@staix/agent-mem": "0.14.0"
20
+ "@staix/agent-mem": "0.18.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@modelcontextprotocol/sdk": "^1.27.1",
@@ -49,6 +49,7 @@
49
49
  },
50
50
  "exports": {
51
51
  "./adapter": "./src/adapters/public.ts",
52
- "./conformance": "./src/adapters/conformance/index.ts"
52
+ "./conformance": "./src/adapters/conformance/index.ts",
53
+ "./ui-plugin": "./src/ui/plugin.ts"
53
54
  }
54
55
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-hub",
3
- "version": "0.23.1",
3
+ "version": "0.25.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",