@excitedjs/dreamux 0.22.0 → 0.23.0-alpha.gfd00db650f43

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 (365) hide show
  1. package/README.md +32 -26
  2. package/dist/admin/client.js +37 -15
  3. package/dist/admin/client.js.map +1 -1
  4. package/dist/admin/protocol.js +5 -10
  5. package/dist/admin/protocol.js.map +1 -1
  6. package/dist/admin/socket.js +64 -13
  7. package/dist/admin/socket.js.map +1 -1
  8. package/dist/agent-runtime/capabilities.js +107 -0
  9. package/dist/agent-runtime/capabilities.js.map +1 -0
  10. package/dist/agent-runtime/catalog.js +30 -9
  11. package/dist/agent-runtime/catalog.js.map +1 -1
  12. package/dist/agent-runtime/external-provider.js +37 -55
  13. package/dist/agent-runtime/external-provider.js.map +1 -1
  14. package/dist/agent-runtime/host-context.js +1 -1
  15. package/dist/agent-runtime/index.js +1 -0
  16. package/dist/agent-runtime/index.js.map +1 -1
  17. package/dist/agent-runtime/skill-sources.js +32 -0
  18. package/dist/agent-runtime/skill-sources.js.map +1 -1
  19. package/dist/channel/catalog.js +10 -8
  20. package/dist/channel/catalog.js.map +1 -1
  21. package/dist/channel/conversation-projection.js +189 -0
  22. package/dist/channel/conversation-projection.js.map +1 -0
  23. package/dist/channel/core-port.js +22 -0
  24. package/dist/channel/core-port.js.map +1 -0
  25. package/dist/channel/external-channel-provider.js +13 -6
  26. package/dist/channel/external-channel-provider.js.map +1 -1
  27. package/dist/cli/commands/dispatcher.js +0 -1
  28. package/dist/cli/commands/dispatcher.js.map +1 -1
  29. package/dist/cli/commands/index.js +4 -10
  30. package/dist/cli/commands/index.js.map +1 -1
  31. package/dist/cli/commands/mcp.js +35 -0
  32. package/dist/cli/commands/mcp.js.map +1 -0
  33. package/dist/cli/doctor.js +7 -13
  34. package/dist/cli/doctor.js.map +1 -1
  35. package/dist/cli/server-ctl.js +0 -3
  36. package/dist/cli/server-ctl.js.map +1 -1
  37. package/dist/cli/server.js +1 -2
  38. package/dist/cli/server.js.map +1 -1
  39. package/dist/command/catalog.js +28 -0
  40. package/dist/command/catalog.js.map +1 -0
  41. package/dist/command/errors.js +21 -0
  42. package/dist/command/errors.js.map +1 -0
  43. package/dist/command/host.js +38 -0
  44. package/dist/command/host.js.map +1 -0
  45. package/dist/command/payload.js +102 -0
  46. package/dist/command/payload.js.map +1 -0
  47. package/dist/command/port.js +51 -0
  48. package/dist/command/port.js.map +1 -0
  49. package/dist/command/registry.js +150 -0
  50. package/dist/command/registry.js.map +1 -0
  51. package/dist/command/schema.js +38 -0
  52. package/dist/command/schema.js.map +1 -0
  53. package/dist/command/validate.js +347 -0
  54. package/dist/command/validate.js.map +1 -0
  55. package/dist/config/config-helpers.js +1 -16
  56. package/dist/config/config-helpers.js.map +1 -1
  57. package/dist/config/config.js +15 -15
  58. package/dist/config/config.js.map +1 -1
  59. package/dist/mcp/catalog.js +207 -0
  60. package/dist/mcp/catalog.js.map +1 -0
  61. package/dist/mcp/server.js +19 -26
  62. package/dist/mcp/server.js.map +1 -1
  63. package/dist/mcp/shim.js +106 -0
  64. package/dist/mcp/shim.js.map +1 -0
  65. package/dist/onboard/config-files.js +1 -6
  66. package/dist/onboard/config-files.js.map +1 -1
  67. package/dist/onboard/wizard.js +5 -5
  68. package/dist/onboard/wizard.js.map +1 -1
  69. package/dist/platform/errors.js +92 -0
  70. package/dist/platform/errors.js.map +1 -0
  71. package/dist/platform/json-value.js +178 -0
  72. package/dist/platform/json-value.js.map +1 -0
  73. package/dist/platform/paths.js +64 -82
  74. package/dist/platform/paths.js.map +1 -1
  75. package/dist/provider-diagnostics.js +2 -2
  76. package/dist/provider-diagnostics.js.map +1 -1
  77. package/dist/registry/provider-loader.js +20 -20
  78. package/dist/registry/provider-loader.js.map +1 -1
  79. package/dist/server-commands.js +26 -0
  80. package/dist/server-commands.js.map +1 -0
  81. package/dist/server.js +46 -42
  82. package/dist/server.js.map +1 -1
  83. package/dist/service/agent-entity/activity-errors.js +48 -0
  84. package/dist/service/agent-entity/activity-errors.js.map +1 -0
  85. package/dist/service/agent-entity/activity-reader.js +181 -0
  86. package/dist/service/agent-entity/activity-reader.js.map +1 -0
  87. package/dist/service/agent-entity/agent-config.js +9 -2
  88. package/dist/service/agent-entity/agent-config.js.map +1 -1
  89. package/dist/service/agent-entity/history-query.js +46 -0
  90. package/dist/service/agent-entity/history-query.js.map +1 -0
  91. package/dist/service/agent-entity/identity-store.js +248 -241
  92. package/dist/service/agent-entity/identity-store.js.map +1 -1
  93. package/dist/service/agent-entity/read-helpers.js +8 -8
  94. package/dist/service/agent-entity/read-helpers.js.map +1 -1
  95. package/dist/service/agent-entity/runtime-profile.js +10 -7
  96. package/dist/service/agent-entity/runtime-profile.js.map +1 -1
  97. package/dist/service/agent-entity/runtime-state.js +140 -17
  98. package/dist/service/agent-entity/runtime-state.js.map +1 -1
  99. package/dist/service/agent-entity/types.js.map +1 -1
  100. package/dist/service/channel-service/index.js +114 -317
  101. package/dist/service/channel-service/index.js.map +1 -1
  102. package/dist/service/channel-service/mcp-delegate.js +106 -0
  103. package/dist/service/channel-service/mcp-delegate.js.map +1 -0
  104. package/dist/service/channel-service/mcp-delegates.js +20 -0
  105. package/dist/service/channel-service/mcp-delegates.js.map +1 -0
  106. package/dist/service/channel-submission.js +28 -0
  107. package/dist/service/channel-submission.js.map +1 -0
  108. package/dist/service/completion-router/index.js +20 -2
  109. package/dist/service/completion-router/index.js.map +1 -1
  110. package/dist/service/deduplicate.js +42 -0
  111. package/dist/service/deduplicate.js.map +1 -0
  112. package/dist/service/dispatcher-core-events/index.js +45 -18
  113. package/dist/service/dispatcher-core-events/index.js.map +1 -1
  114. package/dist/service/dispatcher-core-events/scoped-source.js +8 -11
  115. package/dist/service/dispatcher-core-events/scoped-source.js.map +1 -1
  116. package/dist/service/dispatcher-core-events/seal.js +27 -0
  117. package/dist/service/dispatcher-core-events/seal.js.map +1 -0
  118. package/dist/service/dispatcher-service/agent.js +7 -3
  119. package/dist/service/dispatcher-service/agent.js.map +1 -1
  120. package/dist/service/dispatcher-service/base-prompt.js +3 -3
  121. package/dist/service/dispatcher-service/base-prompt.js.map +1 -1
  122. package/dist/service/dispatcher-service/identity.js +3 -7
  123. package/dist/service/dispatcher-service/identity.js.map +1 -1
  124. package/dist/service/dispatcher-service/index.js +201 -156
  125. package/dist/service/dispatcher-service/index.js.map +1 -1
  126. package/dist/service/dispatcher-service/input-source-lifecycle.js +115 -59
  127. package/dist/service/dispatcher-service/input-source-lifecycle.js.map +1 -1
  128. package/dist/service/dispatcher-service/input-source-start-rollback.js +19 -21
  129. package/dist/service/dispatcher-service/input-source-start-rollback.js.map +1 -1
  130. package/dist/service/dispatcher-service/mcp-delegates.js +67 -0
  131. package/dist/service/dispatcher-service/mcp-delegates.js.map +1 -0
  132. package/dist/service/dispatcher-service/restart-notice.js +6 -2
  133. package/dist/service/dispatcher-service/restart-notice.js.map +1 -1
  134. package/dist/service/dispatcher-service/runtime-helpers.js +2 -18
  135. package/dist/service/dispatcher-service/runtime-helpers.js.map +1 -1
  136. package/dist/service/dispatcher-service/runtime-status.js +3 -3
  137. package/dist/service/dispatcher-service/runtime-status.js.map +1 -1
  138. package/dist/service/dispatcher-service/team-leader-handle.js +2 -2
  139. package/dist/service/dispatcher-service/team-leader-handle.js.map +1 -1
  140. package/dist/service/dispatcher-service/team-runtime-stop.js +2 -2
  141. package/dist/service/dispatcher-service/team-runtime-stop.js.map +1 -1
  142. package/dist/service/dispatchers/commands.js +72 -0
  143. package/dist/service/dispatchers/commands.js.map +1 -0
  144. package/dist/service/dispatchers/errors.js +8 -0
  145. package/dist/service/dispatchers/errors.js.map +1 -0
  146. package/dist/service/dispatchers/index.js +30 -11
  147. package/dist/service/dispatchers/index.js.map +1 -1
  148. package/dist/service/frozen-snapshot.js +16 -0
  149. package/dist/service/frozen-snapshot.js.map +1 -0
  150. package/dist/service/index.js +0 -1
  151. package/dist/service/index.js.map +1 -1
  152. package/dist/service/legacy-state.js +17 -5
  153. package/dist/service/legacy-state.js.map +1 -1
  154. package/dist/service/mcp/commands.js +94 -0
  155. package/dist/service/mcp/commands.js.map +1 -0
  156. package/dist/service/mcp/descriptor.js +51 -0
  157. package/dist/service/mcp/descriptor.js.map +1 -0
  158. package/dist/{mcp/task-dispatch-reminder.js → service/mcp/dispatch-reminders.js} +13 -18
  159. package/dist/service/mcp/dispatch-reminders.js.map +1 -0
  160. package/dist/service/mcp/leases.js +257 -0
  161. package/dist/service/mcp/leases.js.map +1 -0
  162. package/dist/service/mcp/projection.js +68 -0
  163. package/dist/service/mcp/projection.js.map +1 -0
  164. package/dist/{mcp/tool-catalog.js → service/mcp/tool-metadata.js} +31 -48
  165. package/dist/service/mcp/tool-metadata.js.map +1 -0
  166. package/dist/service/mcp/types.js +2 -0
  167. package/dist/service/mcp/types.js.map +1 -0
  168. package/dist/service/name-allocator.js +25 -17
  169. package/dist/service/name-allocator.js.map +1 -1
  170. package/dist/service/scheduler/commands.js +120 -0
  171. package/dist/service/scheduler/commands.js.map +1 -0
  172. package/dist/service/scheduler/mcp-delegate.js +162 -0
  173. package/dist/service/scheduler/mcp-delegate.js.map +1 -0
  174. package/dist/service/scheduler/service.js +46 -165
  175. package/dist/service/scheduler/service.js.map +1 -1
  176. package/dist/service/scheduler/store.js +15 -34
  177. package/dist/service/scheduler/store.js.map +1 -1
  178. package/dist/service/submission-sources.js +41 -0
  179. package/dist/service/submission-sources.js.map +1 -0
  180. package/dist/service/team-collection/commands.js +354 -0
  181. package/dist/service/team-collection/commands.js.map +1 -0
  182. package/dist/service/team-collection/create-request.js +73 -0
  183. package/dist/service/team-collection/create-request.js.map +1 -0
  184. package/dist/service/team-collection/errors.js +57 -17
  185. package/dist/service/team-collection/errors.js.map +1 -1
  186. package/dist/service/team-collection/index.js +214 -354
  187. package/dist/service/team-collection/index.js.map +1 -1
  188. package/dist/service/team-collection/mcp-delegate.js +327 -0
  189. package/dist/service/team-collection/mcp-delegate.js.map +1 -0
  190. package/dist/service/team-collection/projections.js +33 -0
  191. package/dist/service/team-collection/projections.js.map +1 -0
  192. package/dist/service/team-collection/read-model.js +51 -13
  193. package/dist/service/team-collection/read-model.js.map +1 -1
  194. package/dist/service/team-collection/roster-reader.js +52 -0
  195. package/dist/service/team-collection/roster-reader.js.map +1 -0
  196. package/dist/service/team-collection/runtime-registry.js +268 -113
  197. package/dist/service/team-collection/runtime-registry.js.map +1 -1
  198. package/dist/service/team-collection/store.js +228 -202
  199. package/dist/service/team-collection/store.js.map +1 -1
  200. package/dist/service/team-collection/types.js +11 -0
  201. package/dist/service/team-collection/types.js.map +1 -1
  202. package/dist/service/team-collection/worktree-cleanup.js +45 -0
  203. package/dist/service/team-collection/worktree-cleanup.js.map +1 -0
  204. package/dist/service/team-service/closed-fact.js +54 -0
  205. package/dist/service/team-service/closed-fact.js.map +1 -0
  206. package/dist/service/team-service/closing.js +280 -0
  207. package/dist/service/team-service/closing.js.map +1 -0
  208. package/dist/service/team-service/collaborators.js +82 -0
  209. package/dist/service/team-service/collaborators.js.map +1 -0
  210. package/dist/service/team-service/completion-targets.js +72 -0
  211. package/dist/service/team-service/completion-targets.js.map +1 -0
  212. package/dist/service/team-service/index.js +360 -286
  213. package/dist/service/team-service/index.js.map +1 -1
  214. package/dist/service/team-service/leader-agent.js +105 -30
  215. package/dist/service/team-service/leader-agent.js.map +1 -1
  216. package/dist/service/team-service/roster-projection.js +69 -0
  217. package/dist/service/team-service/roster-projection.js.map +1 -0
  218. package/dist/service/team-service/team-view.js +0 -3
  219. package/dist/service/team-service/team-view.js.map +1 -1
  220. package/dist/service/teammate-collection/commands.js +243 -0
  221. package/dist/service/teammate-collection/commands.js.map +1 -0
  222. package/dist/service/teammate-collection/dissolve-members.js +44 -0
  223. package/dist/service/teammate-collection/dissolve-members.js.map +1 -0
  224. package/dist/service/teammate-collection/index.js +179 -97
  225. package/dist/service/teammate-collection/index.js.map +1 -1
  226. package/dist/service/teammate-collection/mcp-delegate.js +306 -0
  227. package/dist/service/teammate-collection/mcp-delegate.js.map +1 -0
  228. package/dist/service/teammate-collection/mcp-tool-descriptors.js +279 -0
  229. package/dist/service/teammate-collection/mcp-tool-descriptors.js.map +1 -0
  230. package/dist/service/teammate-service/admission-ledger.js +85 -0
  231. package/dist/service/teammate-service/admission-ledger.js.map +1 -0
  232. package/dist/service/teammate-service/index.js +469 -413
  233. package/dist/service/teammate-service/index.js.map +1 -1
  234. package/dist/service/teammate-service/runtime-owner.js +236 -71
  235. package/dist/service/teammate-service/runtime-owner.js.map +1 -1
  236. package/dist/service/teammate-service/submission.js +68 -0
  237. package/dist/service/teammate-service/submission.js.map +1 -0
  238. package/dist/service/teammate-service/turn-coordinator.js +113 -12
  239. package/dist/service/teammate-service/turn-coordinator.js.map +1 -1
  240. package/dist/service/teammate-service/turn-recording.js +55 -23
  241. package/dist/service/teammate-service/turn-recording.js.map +1 -1
  242. package/dist/service/workflow-service/commands.js +86 -0
  243. package/dist/service/workflow-service/commands.js.map +1 -0
  244. package/dist/service/workflow-service/index.js +265 -212
  245. package/dist/service/workflow-service/index.js.map +1 -1
  246. package/dist/service/workflow-service/run-terminal.js +18 -4
  247. package/dist/service/workflow-service/run-terminal.js.map +1 -1
  248. package/dist/service/workflow-service/run.js +6 -4
  249. package/dist/service/workflow-service/run.js.map +1 -1
  250. package/dist/service/worktree/manager.js +62 -23
  251. package/dist/service/worktree/manager.js.map +1 -1
  252. package/dist/service/worktree/repo-request.js +87 -0
  253. package/dist/service/worktree/repo-request.js.map +1 -0
  254. package/dist/service/worktree/workspaces.js +20 -6
  255. package/dist/service/worktree/workspaces.js.map +1 -1
  256. package/package.json +7 -7
  257. package/skills/dispatcher/dispatcher-workflow/SKILL.md +48 -45
  258. package/skills/dispatcher/dreamux-maintenance/SKILL.md +2 -2
  259. package/skills/dispatcher/dreamux-maintenance/references/builtin-feishu.md +20 -0
  260. package/skills/dispatcher/dreamux-maintenance/references/config-envelope.md +5 -9
  261. package/skills/dispatcher/dreamux-maintenance/references/feishu-access-v3.md +8 -8
  262. package/skills/dispatcher/dreamux-maintenance/references/service-lifecycle.md +69 -52
  263. package/skills/team-leader/team-workflow/SKILL.md +49 -31
  264. package/dist/admin/methods.js +0 -600
  265. package/dist/admin/methods.js.map +0 -1
  266. package/dist/admin/params.js +0 -221
  267. package/dist/admin/params.js.map +0 -1
  268. package/dist/admin/team-method-params.js +0 -55
  269. package/dist/admin/team-method-params.js.map +0 -1
  270. package/dist/admin/teammate-target.js +0 -21
  271. package/dist/admin/teammate-target.js.map +0 -1
  272. package/dist/admin/transcript-errors.js +0 -68
  273. package/dist/admin/transcript-errors.js.map +0 -1
  274. package/dist/cli/commands/channel-mcp.js +0 -97
  275. package/dist/cli/commands/channel-mcp.js.map +0 -1
  276. package/dist/cli/commands/collaboration-space-mcp.js +0 -25
  277. package/dist/cli/commands/collaboration-space-mcp.js.map +0 -1
  278. package/dist/cli/commands/cron-mcp.js +0 -38
  279. package/dist/cli/commands/cron-mcp.js.map +0 -1
  280. package/dist/cli/commands/team-mcp.js +0 -42
  281. package/dist/cli/commands/team-mcp.js.map +0 -1
  282. package/dist/cli/commands/teammate-mcp.js +0 -49
  283. package/dist/cli/commands/teammate-mcp.js.map +0 -1
  284. package/dist/config/collaboration-space-config.js +0 -74
  285. package/dist/config/collaboration-space-config.js.map +0 -1
  286. package/dist/mcp/channel-mcp.js +0 -255
  287. package/dist/mcp/channel-mcp.js.map +0 -1
  288. package/dist/mcp/collaboration-space-mcp.js +0 -163
  289. package/dist/mcp/collaboration-space-mcp.js.map +0 -1
  290. package/dist/mcp/cron-mcp.js +0 -192
  291. package/dist/mcp/cron-mcp.js.map +0 -1
  292. package/dist/mcp/task-dispatch-reminder.js.map +0 -1
  293. package/dist/mcp/team-mcp.js +0 -370
  294. package/dist/mcp/team-mcp.js.map +0 -1
  295. package/dist/mcp/teammate-mcp.js +0 -515
  296. package/dist/mcp/teammate-mcp.js.map +0 -1
  297. package/dist/mcp/tool-catalog.js.map +0 -1
  298. package/dist/service/agent-entity/transcript-reader.js +0 -191
  299. package/dist/service/agent-entity/transcript-reader.js.map +0 -1
  300. package/dist/service/binding-events.js +0 -125
  301. package/dist/service/binding-events.js.map +0 -1
  302. package/dist/service/channel-binding/preflight.js +0 -32
  303. package/dist/service/channel-binding/preflight.js.map +0 -1
  304. package/dist/service/channel-binding/store.js +0 -289
  305. package/dist/service/channel-binding/store.js.map +0 -1
  306. package/dist/service/channel-service/channel-sessions.js +0 -233
  307. package/dist/service/channel-service/channel-sessions.js.map +0 -1
  308. package/dist/service/channel-service/errors.js +0 -16
  309. package/dist/service/channel-service/errors.js.map +0 -1
  310. package/dist/service/channel-service/mcp-descriptors.js +0 -63
  311. package/dist/service/channel-service/mcp-descriptors.js.map +0 -1
  312. package/dist/service/collaboration-space/default-binding.js +0 -47
  313. package/dist/service/collaboration-space/default-binding.js.map +0 -1
  314. package/dist/service/collaboration-space/detach-active-targets.js +0 -50
  315. package/dist/service/collaboration-space/detach-active-targets.js.map +0 -1
  316. package/dist/service/collaboration-space/index.js +0 -261
  317. package/dist/service/collaboration-space/index.js.map +0 -1
  318. package/dist/service/collaboration-space/mcp-config.js +0 -17
  319. package/dist/service/collaboration-space/mcp-config.js.map +0 -1
  320. package/dist/service/collaboration-space/naming.js +0 -37
  321. package/dist/service/collaboration-space/naming.js.map +0 -1
  322. package/dist/service/collaboration-space/operation-error.js +0 -9
  323. package/dist/service/collaboration-space/operation-error.js.map +0 -1
  324. package/dist/service/collaboration-space/route-reconciliation.js +0 -336
  325. package/dist/service/collaboration-space/route-reconciliation.js.map +0 -1
  326. package/dist/service/collaboration-space/store.js +0 -317
  327. package/dist/service/collaboration-space/store.js.map +0 -1
  328. package/dist/service/collaboration-space/strict-operations.js +0 -117
  329. package/dist/service/collaboration-space/strict-operations.js.map +0 -1
  330. package/dist/service/collaboration-space/support.js +0 -45
  331. package/dist/service/collaboration-space/support.js.map +0 -1
  332. package/dist/service/collaboration-space/target-close-lifecycle.js +0 -222
  333. package/dist/service/collaboration-space/target-close-lifecycle.js.map +0 -1
  334. package/dist/service/collaboration-space/target-lifecycle.js +0 -462
  335. package/dist/service/collaboration-space/target-lifecycle.js.map +0 -1
  336. package/dist/service/collaboration-space/target.js +0 -85
  337. package/dist/service/collaboration-space/target.js.map +0 -1
  338. package/dist/service/collaboration-space/types.js +0 -2
  339. package/dist/service/collaboration-space/types.js.map +0 -1
  340. package/dist/service/collaboration-space/view.js +0 -66
  341. package/dist/service/collaboration-space/view.js.map +0 -1
  342. package/dist/service/dispatcher-service/channel-tool-invocation.js +0 -21
  343. package/dist/service/dispatcher-service/channel-tool-invocation.js.map +0 -1
  344. package/dist/service/dispatcher-service/collaboration-routing.js +0 -510
  345. package/dist/service/dispatcher-service/collaboration-routing.js.map +0 -1
  346. package/dist/service/dispatcher-service/mcp-descriptors.js +0 -37
  347. package/dist/service/dispatcher-service/mcp-descriptors.js.map +0 -1
  348. package/dist/service/dispatcher-service/scoped-channel-routing.js +0 -87
  349. package/dist/service/dispatcher-service/scoped-channel-routing.js.map +0 -1
  350. package/dist/service/dispatcher-service/team-channel-coordinator.js +0 -90
  351. package/dist/service/dispatcher-service/team-channel-coordinator.js.map +0 -1
  352. package/dist/service/scheduler/mcp-config.js +0 -18
  353. package/dist/service/scheduler/mcp-config.js.map +0 -1
  354. package/dist/service/team-collection/dissolve-controller.js +0 -480
  355. package/dist/service/team-collection/dissolve-controller.js.map +0 -1
  356. package/dist/service/team-collection/dissolve-lifecycle.js +0 -83
  357. package/dist/service/team-collection/dissolve-lifecycle.js.map +0 -1
  358. package/dist/service/team-collection/dissolve-runner.js +0 -321
  359. package/dist/service/team-collection/dissolve-runner.js.map +0 -1
  360. package/dist/service/team-collection/mcp-config.js +0 -35
  361. package/dist/service/team-collection/mcp-config.js.map +0 -1
  362. package/dist/service/team-service/delivery-result.js +0 -17
  363. package/dist/service/team-service/delivery-result.js.map +0 -1
  364. package/dist/service/teammate-collection/mcp-config.js +0 -20
  365. package/dist/service/teammate-collection/mcp-config.js.map +0 -1
package/README.md CHANGED
@@ -60,23 +60,23 @@ Design background:
60
60
  behavior. Bundled skills are injected at runtime by role (not written into
61
61
  the dispatcher cwd).
62
62
  - **Inbound state is in memory.** The server keeps only process-local turn
63
- queues, message dedupe, coalescing state, and received-reaction ownership.
64
- Restarting the server drops unprocessed inbound messages and may leave
65
- received reactions behind.
63
+ queues, message dedupe, and coalescing state. Restarting the server drops
64
+ unprocessed inbound messages.
66
65
  - **Outbound is MCP reply-only.** Assistant text emitted by a runtime is never
67
66
  forwarded to a channel automatically. The model must call provider-specific
68
67
  channel MCP tools such as `reply` or `react`, and those tools exist only when
69
68
  the Channel provider exposes the capability.
70
- - **Team binding is a Team MCP capability.** `bind_channel` and `transfer_back`
71
- live on the Dreamux-owned Team MCP. The channel MCP shim never owns binding;
72
- it only forwards provider-owned tools for the selected channel.
69
+ - **Routing belongs to the Channel.** Which conversation reaches which Team is
70
+ decided and stored by the Channel provider that owns the conversation, and is
71
+ changed through that provider's own MCP tools. Dreamux Core has no binding
72
+ table and no Collaboration Space container; a Channel names a Team when it
73
+ submits, and Core takes it from there.
73
74
  - **TeamMate is server-hosted.** `spawn` starts a named, semi-resident TeamMate
74
75
  and returns its concrete name; `send` submits follow-up turns and reopens a
75
- closed TeamMate when the runtime can resume it. Direct `spawn` and `send`
76
- receipts include the current validated native `transcript_path`, or `null`
77
- before a session exists. `last` reads bounded, pageable completed turns from
78
- that provider-native transcript without starting a runtime; `history` remains
79
- an identity/lifecycle recovery view.
76
+ closed TeamMate. `last` reads the provider's recent Activity Records — bounded
77
+ and pageable, including a turn that is still running — without starting a
78
+ runtime; `history` remains an identity/lifecycle recovery view. Native
79
+ session identifiers and transcript paths are never published.
80
80
  - **No webhook surface in the current contract.** Feishu inbound uses the SDK long-connection
81
81
  WebSocket path. Webhook-only verification/encryption fields are not part of
82
82
  the config schema.
@@ -353,8 +353,10 @@ The Channel provider contributes its provider-specific MCP server. For
353
353
  `builtin:feishu`, the stdio shim does not read Feishu secrets. It serves the
354
354
  provider's static `tools/list` metadata and forwards `tools/call` to the serve
355
355
  process over the admin socket, where the live channel session handles the tool.
356
- This MCP surface is not the binding surface; Team handoff stays on the Team MCP
357
- as `bind_channel` / `transfer_back`.
356
+ This is also the binding surface: `builtin:feishu` exposes `bind_channel`,
357
+ `unbind_channel`, and `list_bindings`, plus its own collaboration-space policy
358
+ tools, because only that provider knows what a chat, a topic, and a parent
359
+ group are.
358
360
 
359
361
  The model-facing channel tools are supplied by the active Channel provider. Use
360
362
  the provider's `tools/list` metadata as the current authority; the generic
@@ -372,17 +374,21 @@ MCP servers. Dispatcher-facing TeamMate tools are:
372
374
  - `list`, `status`, `history`, `last`, `get_capabilities`: inspect and recover
373
375
  TeamMate state by concrete name.
374
376
 
375
- `last` accepts `turns` (default 1, range 1 through 50), an opaque backward
376
- pagination `cursor`, and `include_tools`. It returns provider-neutral message
377
- and tool blocks under a fixed 262144-byte output budget. It exposes neither
378
- native IDs nor filesystem paths. Native `transcript_path` is intentionally
379
- limited to direct `spawn` and `send` receipts; treat that machine-local path as
380
- operator-private.
377
+ `last` accepts `limit` (default 20, range 1 through 200), an opaque backward
378
+ pagination `cursor`, and `include_tools`. It returns provider-neutral assistant
379
+ messages and tool records oldest first, with `next_cursor` and `truncated`. Tool
380
+ arguments and tool output are never exposed, and it publishes no native IDs or
381
+ filesystem paths.
382
+
383
+ The same server also carries the Workflow tools `workflow_run`,
384
+ `workflow_status`, `workflow_stop`, and `workflow_list`.
381
385
 
382
386
  Dispatcher-facing Team tools are `create`, `send`, `list`, `status`, `history`,
383
- `dissolve`, `bind_channel`, and `transfer_back`. TeamLeader callers receive only
384
- `transfer_back`. Cron tools are `cron_create`, `cron_list`,
385
- `cron_update`, and `cron_delete`.
387
+ and `dissolve`. A TeamLeader receives only `dissolve`, scoped to its own Team.
388
+ `dissolve` answers with a submission receipt: the Team is stopped and closed
389
+ behind it, and dirty or unmerged work in a managed worktree leaves the Team open
390
+ instead. Cron tools are `cron_create`, `cron_list`, `cron_update`, and
391
+ `cron_delete`.
386
392
 
387
393
  There is no dispatcher-facing `complete` tool. Completion ingest is a
388
394
  server/admin seam, so a dispatcher model cannot fake a TeamMate completion.
@@ -395,7 +401,7 @@ their own config and visible-reply tools.
395
401
  1. `dreamux onboard --dispatcher-id flow --dispatcher-cwd <WORKSPACE> --agent flow=builtin:codex --agent-config-json flow='{"bin":"codex"}' --channel primary=builtin:feishu --channel-config-json primary='{"app_id":"<APP_ID>","app_secret":"<APP_SECRET>"}'`
396
402
  2. `dreamux serve` starts dispatcher `flow`.
397
403
  3. Invite the bot to a Feishu group, send a mention that passes the access gate.
398
- 4. The selected runtime assembles the inbound into a `<channel source="feishu" …>` block (the channel layer hands it neutral structured pieces; #164).
404
+ 4. Dreamux renders the inbound into a `<channel source="feishu" …>` block from the neutral pieces the Channel supplied, and hands the runtime final text.
399
405
  5. The runtime calls the Feishu channel MCP `reply` tool; the reply is delivered to Feishu.
400
406
  6. Send another accepted message from a different chat in the same trust
401
407
  domain; it enters the same dispatcher runtime context.
@@ -413,9 +419,9 @@ node common/scripts/install-run-rush.js test
413
419
  ```
414
420
 
415
421
  - `tests/smoke.test.ts` — fake-Codex dispatcher behavior: access gate,
416
- per-message turn/start inbound submission, process-local dedupe, reaction
417
- tri-state, MCP reply-only outbound, thread resume, app-server restart
418
- behavior, and approval fail-fast.
422
+ per-message turn/start inbound submission, process-local dedupe, MCP
423
+ reply-only outbound, thread resume, app-server restart behavior, and
424
+ approval fail-fast.
419
425
  - `tests/bin-launcher.test.ts` — real launcher and repo-root shim behavior from
420
426
  arbitrary cwd and through symlinks.
421
427
  - `tests/doctor.test.ts` — standalone doctor checks for config, Codex home,
@@ -1,5 +1,21 @@
1
+ /**
2
+ * The admin socket, bound to the shared one-request/one-result JSON invoker.
3
+ *
4
+ * This is the whole of what an out-of-process caller needs: it names a Command,
5
+ * hands it a payload, and gets one JSON answer back. Nothing above it knows a
6
+ * socket is involved, and nothing here knows what any Command means — the same
7
+ * neutral port Core binds in-process for a Channel, bound to a different
8
+ * transport.
9
+ *
10
+ * The two failure kinds stay distinct on purpose. An {@link AdminClientError}
11
+ * means the request reached a Command and that Command refused it; a
12
+ * {@link TransportError} means no answer was ever produced, which is a fact
13
+ * only this side can observe.
14
+ */
1
15
  import { connect } from 'node:net';
16
+ import { errorMessage, TransportError } from '../platform/errors.js';
2
17
  import { adminSocketPath as defaultAdminSocketPath } from '../platform/paths.js';
18
+ /** A failure the SERVER reported, carrying the server's own stable code. */
3
19
  export class AdminClientError extends Error {
4
20
  code;
5
21
  constructor(code, message) {
@@ -10,17 +26,21 @@ export class AdminClientError extends Error {
10
26
  }
11
27
  const DEFAULT_TIMEOUT_MS = 10_000;
12
28
  let nextRequestId = 1;
13
- export function sendAdminRequest(method, params, options = {}) {
29
+ export function adminJsonInvoker(options = {}) {
14
30
  const socketPath = options.socketPath ?? defaultAdminSocketPath();
15
- const request = {
16
- id: options.requestId ?? adminRequestId(),
17
- method,
18
- params,
31
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
32
+ return {
33
+ invoke(method, params) {
34
+ const request = {
35
+ id: adminRequestId(),
36
+ method,
37
+ // A Command payload is a JSON object; the envelope frames it unchanged.
38
+ params: params,
39
+ };
40
+ // Whatever came back crossed the wire as JSON and parsed as JSON.
41
+ return sendOne(socketPath, request, timeoutMs);
42
+ },
19
43
  };
20
- return sendOne(socketPath, request, options.timeoutMs ?? DEFAULT_TIMEOUT_MS);
21
- }
22
- export function sendOneAdminRequest(socketPath, request, timeoutMs = DEFAULT_TIMEOUT_MS) {
23
- return sendOne(socketPath, request, timeoutMs);
24
44
  }
25
45
  function sendOne(socketPath, request, timeoutMs) {
26
46
  return new Promise((resolve, reject) => {
@@ -28,7 +48,7 @@ function sendOne(socketPath, request, timeoutMs) {
28
48
  let settled = false;
29
49
  let sock = null;
30
50
  const timer = setTimeout(() => {
31
- settle(new Error(`admin socket request timed out after ${timeoutMs}ms`));
51
+ settle(new TransportError(`admin socket request timed out after ${timeoutMs}ms`));
32
52
  try {
33
53
  sock?.destroy();
34
54
  }
@@ -51,7 +71,7 @@ function sendOne(socketPath, request, timeoutMs) {
51
71
  sock = connect(socketPath);
52
72
  }
53
73
  catch (err) {
54
- settle(err);
74
+ settle(new TransportError(`cannot reach admin socket at ${socketPath} - ${errorMessage(err)}`));
55
75
  return;
56
76
  }
57
77
  sock.setEncoding('utf8');
@@ -72,7 +92,9 @@ function sendOne(socketPath, request, timeoutMs) {
72
92
  settle(new AdminClientError(response.error.code, response.error.message));
73
93
  }
74
94
  catch (err) {
75
- settle(err);
95
+ // A reply that will not parse never delivered an answer, whatever it
96
+ // was meant to say.
97
+ settle(new TransportError(`admin socket returned a malformed response - ${errorMessage(err)}`));
76
98
  }
77
99
  sock.end();
78
100
  });
@@ -81,14 +103,14 @@ function sendOne(socketPath, request, timeoutMs) {
81
103
  return;
82
104
  const code = err.code;
83
105
  if (code === 'ENOENT' || code === 'ECONNREFUSED') {
84
- settle(new Error(`cannot reach admin socket at ${socketPath} - is the server running?`));
106
+ settle(new TransportError(`cannot reach admin socket at ${socketPath} - is the server running?`));
85
107
  }
86
108
  else {
87
- settle(err);
109
+ settle(new TransportError(`admin socket connection to ${socketPath} failed - ${errorMessage(err)}`));
88
110
  }
89
111
  });
90
112
  sock.on('close', () => {
91
- settle(new Error('admin socket closed without a response'));
113
+ settle(new TransportError('admin socket closed without a response'));
92
114
  });
93
115
  });
94
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/admin/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/admin/client.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,10 @@
1
1
  /**
2
- * NDJSON Unix-socket protocol for admin commands (issue #2 §"管理接口").
2
+ * NDJSON Unix-socket transport framing for Core Commands (issue #2 §"管理接口").
3
3
  *
4
4
  * One line in / one line out. Permissions on the socket are 0600 (only the
5
- * owner). Method names use dotted lowercase; error codes use SCREAMING_SNAKE_CASE.
5
+ * owner). `method` is a Core Command name and `params` its payload; the
6
+ * envelope carries no meaning of its own. Command names use dotted lowercase;
7
+ * error codes use SCREAMING_SNAKE_CASE.
6
8
  */
7
- export class AdminError extends Error {
8
- code;
9
- constructor(code, message) {
10
- super(message);
11
- this.code = code;
12
- this.name = 'AdminError';
13
- }
14
- }
9
+ export {};
15
10
  //# sourceMappingURL=protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/admin/protocol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACP;IAA5B,YAA4B,IAAY,EAAE,OAAe;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/admin/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,16 +1,22 @@
1
1
  /**
2
- * The admin Unix-socket server.
2
+ * The admin Unix-socket server: one adapter over the Core Command registry.
3
3
  *
4
- * One client gets one line-delimited NDJSON stream of requests; we reply
5
- * with one line per request. Permissions on the socket are 0600 to keep
6
- * other local users out (issue #2 §"管理接口").
4
+ * One client gets one line-delimited NDJSON stream of requests; we reply with
5
+ * one line per request. Permissions on the socket are 0600 to keep other local
6
+ * users out (issue #2 §"管理接口").
7
+ *
8
+ * The adapter owns transport only. It frames a request, lifts the caller's
9
+ * `dispatcher_id` out of the payload into the Command context, and maps a typed
10
+ * Command failure onto the wire error. It holds no method table, no schema, no
11
+ * payload validation, and no exposure policy — it invokes the same admitted
12
+ * Command port the in-process Channel invoker does, which is where bounding,
13
+ * schema validation, and shutdown admission happen for both.
7
14
  */
8
15
  import { createServer } from 'node:net';
9
16
  import { chmod, readFile, rm, writeFile } from 'node:fs/promises';
10
17
  import { dirname } from 'node:path';
11
18
  import { ensureOwnerOnlyDir } from '@excitedjs/dreamux-utils';
12
- import { AdminError, } from './protocol.js';
13
- import { adminMethods } from './methods.js';
19
+ import { DreamuxError, TransportError, ValidationError, } from '../command/errors.js';
14
20
  /**
15
21
  * Max attempts to reclaim a stale pidfile before yielding to a competitor.
16
22
  * Mirrors claudemux's instance-lock policy.
@@ -235,25 +241,42 @@ async function processLine(server, sock, line) {
235
241
  }
236
242
  }
237
243
  catch (err) {
238
- const msg = err instanceof Error ? err.message : String(err);
239
- write(sock, { id: '?', ok: false, error: { code: 'BAD_REQUEST', message: msg } });
244
+ // A line that cannot be framed never reached a Command: this is the one
245
+ // genuine transport failure this adapter owns.
246
+ const error = new TransportError(err instanceof Error ? err.message : String(err));
247
+ write(sock, {
248
+ id: '?',
249
+ ok: false,
250
+ error: { code: error.code, message: error.message },
251
+ });
240
252
  return;
241
253
  }
242
- const handler = adminMethods[req.method];
243
- if (handler === undefined) {
254
+ let context;
255
+ let payload;
256
+ try {
257
+ ({ context, payload } = adminInvocation(req));
258
+ }
259
+ catch (err) {
260
+ const error = err instanceof DreamuxError
261
+ ? err
262
+ : new ValidationError(err instanceof Error ? err.message : String(err));
244
263
  write(sock, {
245
264
  id: req.id,
246
265
  ok: false,
247
- error: { code: 'UNKNOWN_METHOD', message: `unknown method '${req.method}'` },
266
+ error: { code: error.code, message: error.message },
248
267
  });
249
268
  return;
250
269
  }
251
270
  try {
252
- const result = await server.admitAdminRequest(() => handler(server, req.params));
271
+ // The same admitted port the in-process Channel invoker uses: shutdown
272
+ // admission is a property of invoking a Command, not of this transport.
273
+ const result = await server.commands.invoke(context, req.method, payload);
253
274
  write(sock, { id: req.id, ok: true, result });
254
275
  }
255
276
  catch (err) {
256
- if (err instanceof AdminError) {
277
+ // A Dreamux failure already carries its own stable code; anything else is
278
+ // an unclassified implementation failure and is reported as such.
279
+ if (err instanceof DreamuxError) {
257
280
  write(sock, {
258
281
  id: req.id,
259
282
  ok: false,
@@ -269,6 +292,34 @@ async function processLine(server, sock, line) {
269
292
  });
270
293
  }
271
294
  }
295
+ /**
296
+ * Split one wire request into caller context and Command payload.
297
+ *
298
+ * `dispatcher_id` is addressing, not a domain field: an admin caller states
299
+ * which dispatcher it is talking to, exactly as a Channel session's invoker
300
+ * binds its own. Lifting it here — and removing it from the payload — is what
301
+ * lets every Command input schema stay closed around domain fields alone, while
302
+ * the wire shape CLI and MCP callers already send is unchanged.
303
+ */
304
+ function adminInvocation(req) {
305
+ const params = req.params;
306
+ if (params !== undefined && (typeof params !== 'object' || Array.isArray(params))) {
307
+ throw new ValidationError("request 'params' must be an object");
308
+ }
309
+ const { dispatcher_id: dispatcherId, ...rest } = params ?? {};
310
+ if (dispatcherId !== undefined && typeof dispatcherId !== 'string') {
311
+ throw new ValidationError("param 'dispatcher_id' must be a string");
312
+ }
313
+ return {
314
+ context: {
315
+ source: 'admin_socket',
316
+ ...(dispatcherId !== undefined ? { dispatcher_id: dispatcherId } : {}),
317
+ },
318
+ // The envelope was produced by `JSON.parse`, so its values are JSON by
319
+ // construction; the wire type is only declared loosely.
320
+ payload: rest,
321
+ };
322
+ }
272
323
  function write(sock, response) {
273
324
  try {
274
325
  sock.write(`${JSON.stringify(response)}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/admin/socket.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAyC,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,UAAU,GAGX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA4B5C;;;GAGG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,UAAkB,EAClB,UAA8B,EAAE;IAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAG,UAAU,OAAO,CAAC;IACtC,IAAI,SAAS,GAAqB,IAAI,CAAC;IACvC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO;QACL,UAAU;QAEV,KAAK,CAAC,KAAK;YACT,oEAAoE;YACpE,oEAAoE;YACpE,kEAAkE;YAClE,mEAAmE;YACnE,kEAAkE;YAClE,gEAAgE;YAChE,gEAAgE;YAChE,oEAAoE;YACpE,8CAA8C;YAC9C,mEAAmE;YACnE,yEAAyE;YACzE,mEAAmE;YACnE,MAAM,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9C,MAAM,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC/C,QAAQ,GAAG,IAAI,CAAC;YAEhB,IAAI,CAAC;gBACH,wDAAwD;gBACxD,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEtC,SAAS,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACnE,MAAM,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACnC,SAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAC9B,SAAU,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;gBAEH,kEAAkE;gBAClE,sEAAsE;gBACtE,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,QAAQ,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC5D,MAAM,IAAI,KAAK,CACb,gBAAgB,UAAU,sCAAsC,QAAQ,+CAA+C,CACxH,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,iEAAiE;gBACjE,gEAAgE;gBAChE,iBAAiB;gBACjB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACvB,MAAM,OAAO,GAAG,SAAS,CAAC;oBAC1B,SAAS,GAAG,IAAI,CAAC;oBACjB,MAAM,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxC,CAAC;gBAAC,MAAM,CAAC;oBACP,iBAAiB;gBACnB,CAAC;gBACD,MAAM,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACtC,QAAQ,GAAG,KAAK,CAAC;gBACjB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,KAAK;YACT,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE,CAAC,SAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAChE,SAAS,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxC,CAAC;gBAAC,MAAM,CAAC;oBACP,KAAK;gBACP,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACtC,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,cAAc,CAC3B,QAAgB,EAChB,KAAa,EACb,OAAiC;IAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,GAAG,CAAC;QAClE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,kEAAkE;YAClE,OAAO;QACT,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,uDAAuD,MAAM,KAAK;gBACjG,uDAAuD;gBACvD,oDAAoD,CACvD,CAAC;QACJ,CAAC;QACD,iEAAiE;QACjE,qEAAqE;QACrE,wEAAwE;QACxE,+CAA+C;QAC/C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,gCAAgC,gBAAgB,qBAAqB;QACpG,oEAAoE,CACvE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,KAAa;IAC3D,IAAI,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK;QAAE,OAAO;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,uEAAuE;QACvE,OAAQ,CAA2B,CAAC,IAAI,KAAK,OAAO,CAAC;IACvD,CAAC;AACH,CAAC;AASD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAsC;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,sCAAsC;YACjF,kBAAkB,OAAO,CAAC,cAAc,2CAA2C;YACnF,kFAAkF;YAClF,oFAAoF;YACpF,oFAAoF;YACpF,0DAA0D,CAC7D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,IAAY;IACpD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACxB,GAAG,IAAI,KAAK,CAAC;QACb,IAAI,GAAW,CAAC;QAChB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,EAAE;gBAAE,SAAS;YAC1B,KAAK,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACpB,qDAAqD;IACvD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,IAAY,EAAE,IAAY;IACnE,IAAI,GAAiB,CAAC;IACtB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC;QACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,EAAE;YACV,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE;SAC7E,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,EAAE;gBACV,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;aAChD,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,EAAE;YACV,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,IAAY,EAAE,QAAuB;IAClD,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/admin/socket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * The single Core-owned capability snapshot for an Agent Runtime provider.
3
+ *
4
+ * `getCapabilities()` returns a provider-owned, mutable object, so Core reads it
5
+ * exactly once per loaded implementation and keeps the validated, frozen result.
6
+ * Both consumers — the loader's contract check and the catalog's public
7
+ * projection — go through {@link agentRuntimeCapabilitySnapshot}, so a provider
8
+ * cannot pass a valid object at load and return a different or invalid one when
9
+ * the catalog later asks.
10
+ */
11
+ import { canonicalJsonValue, isPlainObject, JsonValueError, } from '../platform/json-value.js';
12
+ /** Core's independent bounds on a provider's declared capabilities. */
13
+ const MAX_TAGS = 32;
14
+ const MAX_TAG_LENGTH = 64;
15
+ const PUBLIC_CONFIG_BOUNDS = {
16
+ maxDepth: 4,
17
+ maxEntries: 32,
18
+ maxBytes: 4096,
19
+ };
20
+ export class InvalidAgentRuntimeCapabilitiesError extends Error {
21
+ providerRef;
22
+ detail;
23
+ constructor(providerRef,
24
+ /** The violation alone, without the ref prefix, for callers that add one. */
25
+ detail) {
26
+ super(`agent runtime provider ${JSON.stringify(providerRef)} declared invalid capabilities: ${detail}`);
27
+ this.providerRef = providerRef;
28
+ this.detail = detail;
29
+ this.name = 'InvalidAgentRuntimeCapabilitiesError';
30
+ }
31
+ }
32
+ /**
33
+ * One snapshot per implementation object, taken the first time Core reads it.
34
+ *
35
+ * The key is the implementation identity rather than a registration id, so the
36
+ * loader (which has no catalog) and the catalog (which has no loader) share the
37
+ * same entry, and a garbage-collected implementation takes its snapshot with it.
38
+ */
39
+ const snapshots = new WeakMap();
40
+ /**
41
+ * Return the frozen capability snapshot for `implementation`, taking it on the
42
+ * first call and reusing it forever after.
43
+ */
44
+ export function agentRuntimeCapabilitySnapshot(implementation, ref) {
45
+ const cached = snapshots.get(implementation);
46
+ if (cached !== undefined)
47
+ return cached;
48
+ let declared;
49
+ try {
50
+ declared = implementation.getCapabilities();
51
+ }
52
+ catch (error) {
53
+ throw new InvalidAgentRuntimeCapabilitiesError(ref, `getCapabilities threw: ${error instanceof Error ? error.message : String(error)}`);
54
+ }
55
+ const snapshot = normalizeCapabilities(declared, ref);
56
+ snapshots.set(implementation, snapshot);
57
+ return snapshot;
58
+ }
59
+ function normalizeCapabilities(declared, ref) {
60
+ if (!isPlainObject(declared)) {
61
+ throw new InvalidAgentRuntimeCapabilitiesError(ref, 'getCapabilities must return an object');
62
+ }
63
+ return Object.freeze({
64
+ tags: normalizeTags(declared['tags'], ref),
65
+ publicConfig: normalizePublicConfig(declared['publicConfig'], ref),
66
+ });
67
+ }
68
+ function normalizeTags(value, ref) {
69
+ if (!Array.isArray(value)) {
70
+ throw new InvalidAgentRuntimeCapabilitiesError(ref, 'tags must be an array');
71
+ }
72
+ if (value.length > MAX_TAGS) {
73
+ throw new InvalidAgentRuntimeCapabilitiesError(ref, `tags may hold at most ${MAX_TAGS} entries`);
74
+ }
75
+ const seen = new Set();
76
+ const tags = [];
77
+ for (const entry of value) {
78
+ if (typeof entry !== 'string' ||
79
+ entry.length === 0 ||
80
+ entry.length > MAX_TAG_LENGTH) {
81
+ throw new InvalidAgentRuntimeCapabilitiesError(ref, `each tag must be a non-empty string of at most ${MAX_TAG_LENGTH} characters`);
82
+ }
83
+ // Declaration order is the provider's; duplicates are simply collapsed.
84
+ if (seen.has(entry))
85
+ continue;
86
+ seen.add(entry);
87
+ tags.push(entry);
88
+ }
89
+ return Object.freeze(tags);
90
+ }
91
+ function normalizePublicConfig(value, ref) {
92
+ if (value === undefined)
93
+ return null;
94
+ if (!isPlainObject(value)) {
95
+ throw new InvalidAgentRuntimeCapabilitiesError(ref, 'publicConfig must be an object when present');
96
+ }
97
+ try {
98
+ return canonicalJsonValue(value, PUBLIC_CONFIG_BOUNDS);
99
+ }
100
+ catch (error) {
101
+ if (error instanceof JsonValueError) {
102
+ throw new InvalidAgentRuntimeCapabilitiesError(ref, `publicConfig ${error.message}`);
103
+ }
104
+ throw error;
105
+ }
106
+ }
107
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/agent-runtime/capabilities.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { formatProviderRef, ReservedExternalProviderError, } from '../registry/index.js';
2
+ import { agentRuntimeCapabilitySnapshot, } from './capabilities.js';
2
3
  export class UnsupportedAgentRuntimeProviderError extends Error {
3
4
  providerRef;
4
5
  reason;
@@ -26,7 +27,7 @@ export class AgentRuntimeProviderCatalog {
26
27
  list() {
27
28
  return this.registry
28
29
  .listByKind('agentRuntime')
29
- .map((descriptor) => this.runtimeProviderForDescriptor(descriptor))
30
+ .map((descriptor) => this.registeredProviderFor(descriptor))
30
31
  .filter((provider) => provider !== null);
31
32
  }
32
33
  resolve(ref) {
@@ -44,24 +45,44 @@ export class AgentRuntimeProviderCatalog {
44
45
  throw new WrongProviderKindError(descriptor);
45
46
  }
46
47
  const canonicalRef = formatProviderRef(descriptor.ref);
47
- const provider = this.runtimeProviderForDescriptor(descriptor);
48
+ const provider = this.registeredProviderFor(descriptor);
48
49
  if (provider === null) {
49
50
  throw new UnsupportedAgentRuntimeProviderError(canonicalRef, 'the provider is registered but has no runtime implementation wired in this phase');
50
51
  }
51
52
  return provider;
52
53
  }
53
- runtimeProviderForDescriptor(descriptor) {
54
- const implementation = this.registry.getImplementation(descriptor.id);
55
- return asAgentRuntimeProvider(implementation);
54
+ registeredProviderFor(descriptor) {
55
+ const implementation = asAgentRuntimeProvider(this.registry.getImplementation(descriptor.id));
56
+ if (implementation === null)
57
+ return null;
58
+ return {
59
+ descriptor,
60
+ implementation,
61
+ capabilities: this.capabilitiesFor(descriptor, implementation),
62
+ };
63
+ }
64
+ /**
65
+ * The one snapshot for this implementation. The loader already took it while
66
+ * asserting the contract, so this normally returns that exact object; a
67
+ * directly registered implementation (no loader involved) takes it here on
68
+ * first read. Either way `getCapabilities()` is called once per
69
+ * implementation, and the catalog never trusts a second call.
70
+ */
71
+ capabilitiesFor(descriptor, implementation) {
72
+ return agentRuntimeCapabilitySnapshot(implementation, formatProviderRef(descriptor.ref));
56
73
  }
57
74
  }
58
- function asAgentRuntimeProvider(value) {
75
+ /**
76
+ * Structural check for a loaded Agent Runtime implementation. It asserts the
77
+ * facade methods only: registration identity lives on the {@link
78
+ * RegisteredProvider} wrapper, so there is no `ref`/`descriptor` member to test.
79
+ */
80
+ export function asAgentRuntimeProvider(value) {
59
81
  if (typeof value !== 'object' || value === null)
60
82
  return null;
61
83
  const candidate = value;
62
- if (typeof candidate.ref !== 'string' ||
63
- candidate.descriptor === undefined ||
64
- typeof candidate.getCapabilities !== 'function' ||
84
+ if (typeof candidate.getCapabilities !== 'function' ||
85
+ typeof candidate.readRecentActivity !== 'function' ||
65
86
  typeof candidate.createRuntime !== 'function') {
66
87
  return null;
67
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/agent-runtime/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/agent-runtime/catalog.ts"],"names":[],"mappings":"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"}