@namzu/sdk 7.0.0 → 9.0.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 (206) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  3. package/dist/agents/SupervisorAgent.js +186 -163
  4. package/dist/agents/SupervisorAgent.js.map +1 -1
  5. package/dist/agents/__tests__/a-policy-nobody-can-select.test.d.ts +2 -0
  6. package/dist/agents/__tests__/a-policy-nobody-can-select.test.d.ts.map +1 -0
  7. package/dist/agents/__tests__/a-policy-nobody-can-select.test.js +177 -0
  8. package/dist/agents/__tests__/a-policy-nobody-can-select.test.js.map +1 -0
  9. package/dist/agents/__tests__/supervisor-inbox-scope.test.d.ts +2 -0
  10. package/dist/agents/__tests__/supervisor-inbox-scope.test.d.ts.map +1 -0
  11. package/dist/agents/__tests__/supervisor-inbox-scope.test.js +125 -0
  12. package/dist/agents/__tests__/supervisor-inbox-scope.test.js.map +1 -0
  13. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  14. package/dist/bridge/a2a/mapper.js +4 -0
  15. package/dist/bridge/a2a/mapper.js.map +1 -1
  16. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  17. package/dist/bridge/sse/mapper.js +24 -0
  18. package/dist/bridge/sse/mapper.js.map +1 -1
  19. package/dist/contracts/api.d.ts +1 -1
  20. package/dist/contracts/api.d.ts.map +1 -1
  21. package/dist/gateway/__tests__/a-knob-nobody-can-turn.test.d.ts +2 -0
  22. package/dist/gateway/__tests__/a-knob-nobody-can-turn.test.d.ts.map +1 -0
  23. package/dist/gateway/__tests__/a-knob-nobody-can-turn.test.js +114 -0
  24. package/dist/gateway/__tests__/a-knob-nobody-can-turn.test.js.map +1 -0
  25. package/dist/gateway/__tests__/completion-inbox.test.js +292 -2
  26. package/dist/gateway/__tests__/completion-inbox.test.js.map +1 -1
  27. package/dist/gateway/completion-inbox.d.ts +94 -6
  28. package/dist/gateway/completion-inbox.d.ts.map +1 -1
  29. package/dist/gateway/completion-inbox.js +235 -15
  30. package/dist/gateway/completion-inbox.js.map +1 -1
  31. package/dist/gateway/local.d.ts.map +1 -1
  32. package/dist/gateway/local.js +19 -6
  33. package/dist/gateway/local.js.map +1 -1
  34. package/dist/manager/agent/__tests__/lifecycle.test.js +56 -0
  35. package/dist/manager/agent/__tests__/lifecycle.test.js.map +1 -1
  36. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  37. package/dist/manager/agent/lifecycle.js +62 -33
  38. package/dist/manager/agent/lifecycle.js.map +1 -1
  39. package/dist/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.d.ts +2 -0
  40. package/dist/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.d.ts.map +1 -0
  41. package/dist/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.js +73 -0
  42. package/dist/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.js.map +1 -0
  43. package/dist/manager/plan/lifecycle.d.ts +48 -0
  44. package/dist/manager/plan/lifecycle.d.ts.map +1 -1
  45. package/dist/manager/plan/lifecycle.js +56 -0
  46. package/dist/manager/plan/lifecycle.js.map +1 -1
  47. package/dist/manager/run/persistence.d.ts +8 -0
  48. package/dist/manager/run/persistence.d.ts.map +1 -1
  49. package/dist/manager/run/persistence.js +12 -0
  50. package/dist/manager/run/persistence.js.map +1 -1
  51. package/dist/run/reporter.d.ts.map +1 -1
  52. package/dist/run/reporter.js +11 -0
  53. package/dist/run/reporter.js.map +1 -1
  54. package/dist/runtime/query/__tests__/completion-does-not-erase-the-answer.test.d.ts +2 -0
  55. package/dist/runtime/query/__tests__/completion-does-not-erase-the-answer.test.d.ts.map +1 -0
  56. package/dist/runtime/query/__tests__/completion-does-not-erase-the-answer.test.js +142 -0
  57. package/dist/runtime/query/__tests__/completion-does-not-erase-the-answer.test.js.map +1 -0
  58. package/dist/runtime/query/__tests__/completion-notification.test.js +414 -32
  59. package/dist/runtime/query/__tests__/completion-notification.test.js.map +1 -1
  60. package/dist/runtime/query/__tests__/context-size-on-the-wire.test.d.ts +2 -0
  61. package/dist/runtime/query/__tests__/context-size-on-the-wire.test.d.ts.map +1 -0
  62. package/dist/runtime/query/__tests__/context-size-on-the-wire.test.js +100 -0
  63. package/dist/runtime/query/__tests__/context-size-on-the-wire.test.js.map +1 -0
  64. package/dist/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.d.ts +2 -0
  65. package/dist/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.d.ts.map +1 -0
  66. package/dist/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.js +62 -0
  67. package/dist/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.js.map +1 -0
  68. package/dist/runtime/query/events.d.ts.map +1 -1
  69. package/dist/runtime/query/events.js +5 -0
  70. package/dist/runtime/query/events.js.map +1 -1
  71. package/dist/runtime/query/guard.d.ts +28 -0
  72. package/dist/runtime/query/guard.d.ts.map +1 -1
  73. package/dist/runtime/query/guard.js +31 -0
  74. package/dist/runtime/query/guard.js.map +1 -1
  75. package/dist/runtime/query/iteration/__tests__/settle-grace.test.d.ts +2 -0
  76. package/dist/runtime/query/iteration/__tests__/settle-grace.test.d.ts.map +1 -0
  77. package/dist/runtime/query/iteration/__tests__/settle-grace.test.js +226 -0
  78. package/dist/runtime/query/iteration/__tests__/settle-grace.test.js.map +1 -0
  79. package/dist/runtime/query/iteration/index.d.ts +92 -0
  80. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  81. package/dist/runtime/query/iteration/index.js +814 -566
  82. package/dist/runtime/query/iteration/index.js.map +1 -1
  83. package/dist/runtime/query/iteration/phases/__tests__/compaction-declined.test.d.ts +2 -0
  84. package/dist/runtime/query/iteration/phases/__tests__/compaction-declined.test.d.ts.map +1 -0
  85. package/dist/runtime/query/iteration/phases/__tests__/compaction-declined.test.js +95 -0
  86. package/dist/runtime/query/iteration/phases/__tests__/compaction-declined.test.js.map +1 -0
  87. package/dist/runtime/query/iteration/phases/compaction.d.ts +34 -0
  88. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  89. package/dist/runtime/query/iteration/phases/compaction.js +61 -4
  90. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  91. package/dist/store/task/disk.d.ts.map +1 -1
  92. package/dist/store/task/disk.js +14 -0
  93. package/dist/store/task/disk.js.map +1 -1
  94. package/dist/store/task/memory.d.ts.map +1 -1
  95. package/dist/store/task/memory.js +14 -0
  96. package/dist/store/task/memory.js.map +1 -1
  97. package/dist/tools/__tests__/untrusted-envelope.test.js +16 -0
  98. package/dist/tools/__tests__/untrusted-envelope.test.js.map +1 -1
  99. package/dist/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.d.ts +2 -0
  100. package/dist/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.d.ts.map +1 -0
  101. package/dist/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.js +101 -0
  102. package/dist/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.js.map +1 -0
  103. package/dist/tools/coordinator/__tests__/completion-delivery.test.js +117 -0
  104. package/dist/tools/coordinator/__tests__/completion-delivery.test.js.map +1 -1
  105. package/dist/tools/coordinator/__tests__/task-list.test.js +57 -0
  106. package/dist/tools/coordinator/__tests__/task-list.test.js.map +1 -1
  107. package/dist/tools/coordinator/__tests__/the-plan-a-human-approves.test.d.ts +2 -0
  108. package/dist/tools/coordinator/__tests__/the-plan-a-human-approves.test.d.ts.map +1 -0
  109. package/dist/tools/coordinator/__tests__/the-plan-a-human-approves.test.js +99 -0
  110. package/dist/tools/coordinator/__tests__/the-plan-a-human-approves.test.js.map +1 -0
  111. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  112. package/dist/tools/coordinator/agent.js +17 -23
  113. package/dist/tools/coordinator/agent.js.map +1 -1
  114. package/dist/tools/coordinator/index.d.ts.map +1 -1
  115. package/dist/tools/coordinator/index.js +142 -14
  116. package/dist/tools/coordinator/index.js.map +1 -1
  117. package/dist/tools/coordinator/outcome.d.ts +60 -0
  118. package/dist/tools/coordinator/outcome.d.ts.map +1 -0
  119. package/dist/tools/coordinator/outcome.js +68 -0
  120. package/dist/tools/coordinator/outcome.js.map +1 -0
  121. package/dist/tools/untrusted-envelope.d.ts.map +1 -1
  122. package/dist/tools/untrusted-envelope.js +9 -1
  123. package/dist/tools/untrusted-envelope.js.map +1 -1
  124. package/dist/types/agent/gateway.d.ts +37 -2
  125. package/dist/types/agent/gateway.d.ts.map +1 -1
  126. package/dist/types/agent/supervisor.d.ts +38 -1
  127. package/dist/types/agent/supervisor.d.ts.map +1 -1
  128. package/dist/types/plan/index.d.ts +26 -0
  129. package/dist/types/plan/index.d.ts.map +1 -1
  130. package/dist/types/provider/interface.d.ts +35 -0
  131. package/dist/types/provider/interface.d.ts.map +1 -1
  132. package/dist/types/run/entity.d.ts +16 -0
  133. package/dist/types/run/entity.d.ts.map +1 -1
  134. package/dist/types/run/events.d.ts +92 -0
  135. package/dist/types/run/events.d.ts.map +1 -1
  136. package/dist/types/run/events.js.map +1 -1
  137. package/dist/types/run/prepare-step.d.ts +17 -2
  138. package/dist/types/run/prepare-step.d.ts.map +1 -1
  139. package/dist/types/task/index.d.ts +19 -1
  140. package/dist/types/task/index.d.ts.map +1 -1
  141. package/dist/types/task/index.js +10 -1
  142. package/dist/types/task/index.js.map +1 -1
  143. package/dist/types/verification/index.d.ts +98 -0
  144. package/dist/types/verification/index.d.ts.map +1 -1
  145. package/dist/types/verification/index.js +10 -0
  146. package/dist/types/verification/index.js.map +1 -1
  147. package/dist/verification/__tests__/argument-pattern.test.d.ts +2 -0
  148. package/dist/verification/__tests__/argument-pattern.test.d.ts.map +1 -0
  149. package/dist/verification/__tests__/argument-pattern.test.js +122 -0
  150. package/dist/verification/__tests__/argument-pattern.test.js.map +1 -0
  151. package/dist/verification/gate.d.ts.map +1 -1
  152. package/dist/verification/gate.js +44 -0
  153. package/dist/verification/gate.js.map +1 -1
  154. package/dist/verification/rules.d.ts.map +1 -1
  155. package/dist/verification/rules.js +27 -0
  156. package/dist/verification/rules.js.map +1 -1
  157. package/package.json +1 -1
  158. package/src/agents/SupervisorAgent.ts +189 -167
  159. package/src/agents/__tests__/a-policy-nobody-can-select.test.ts +202 -0
  160. package/src/agents/__tests__/supervisor-inbox-scope.test.ts +149 -0
  161. package/src/bridge/a2a/mapper.ts +4 -0
  162. package/src/bridge/sse/mapper.ts +25 -0
  163. package/src/contracts/api.ts +1 -0
  164. package/src/gateway/__tests__/a-knob-nobody-can-turn.test.ts +139 -0
  165. package/src/gateway/__tests__/completion-inbox.test.ts +348 -2
  166. package/src/gateway/completion-inbox.ts +248 -16
  167. package/src/gateway/local.ts +19 -7
  168. package/src/manager/agent/__tests__/lifecycle.test.ts +74 -0
  169. package/src/manager/agent/lifecycle.ts +72 -42
  170. package/src/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.ts +88 -0
  171. package/src/manager/plan/lifecycle.ts +61 -0
  172. package/src/manager/run/persistence.ts +12 -0
  173. package/src/run/reporter.ts +12 -0
  174. package/src/runtime/query/__tests__/completion-does-not-erase-the-answer.test.ts +163 -0
  175. package/src/runtime/query/__tests__/completion-notification.test.ts +486 -34
  176. package/src/runtime/query/__tests__/context-size-on-the-wire.test.ts +122 -0
  177. package/src/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.ts +79 -0
  178. package/src/runtime/query/events.ts +5 -0
  179. package/src/runtime/query/guard.ts +32 -0
  180. package/src/runtime/query/iteration/__tests__/settle-grace.test.ts +265 -0
  181. package/src/runtime/query/iteration/index.ts +902 -636
  182. package/src/runtime/query/iteration/phases/__tests__/compaction-declined.test.ts +124 -0
  183. package/src/runtime/query/iteration/phases/compaction.ts +83 -10
  184. package/src/store/task/disk.ts +15 -0
  185. package/src/store/task/memory.ts +15 -0
  186. package/src/tools/__tests__/untrusted-envelope.test.ts +23 -0
  187. package/src/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.ts +133 -0
  188. package/src/tools/coordinator/__tests__/completion-delivery.test.ts +147 -0
  189. package/src/tools/coordinator/__tests__/task-list.test.ts +72 -0
  190. package/src/tools/coordinator/__tests__/the-plan-a-human-approves.test.ts +121 -0
  191. package/src/tools/coordinator/agent.ts +17 -25
  192. package/src/tools/coordinator/index.ts +155 -18
  193. package/src/tools/coordinator/outcome.ts +70 -0
  194. package/src/tools/untrusted-envelope.ts +9 -1
  195. package/src/types/agent/gateway.ts +37 -2
  196. package/src/types/agent/supervisor.ts +40 -1
  197. package/src/types/plan/index.ts +29 -0
  198. package/src/types/provider/interface.ts +39 -0
  199. package/src/types/run/entity.ts +17 -0
  200. package/src/types/run/events.ts +92 -0
  201. package/src/types/run/prepare-step.ts +17 -2
  202. package/src/types/task/index.ts +22 -3
  203. package/src/types/verification/index.ts +61 -0
  204. package/src/verification/__tests__/argument-pattern.test.ts +158 -0
  205. package/src/verification/gate.ts +45 -0
  206. package/src/verification/rules.ts +28 -0
@@ -121,7 +121,14 @@ export class SupervisorAgent extends AbstractAgent {
121
121
  projectId,
122
122
  parentActor,
123
123
  };
124
- gateway = new LocalTaskGateway(config.agentManager, taskContext, listener, input);
124
+ // The only hop between the config and the gateway's policy. Omit it
125
+ // and the field is settable, documented, and read by nothing —
126
+ // which is exactly the state it was in before.
127
+ gateway = new LocalTaskGateway(config.agentManager, taskContext, listener, input, {
128
+ ...(config.siblingFailurePolicy
129
+ ? { siblingFailurePolicy: config.siblingFailurePolicy }
130
+ : {}),
131
+ });
125
132
  }
126
133
  else {
127
134
  throw new Error("SupervisorAgentConfig requires either 'gateway' or 'agentManager'");
@@ -143,171 +150,187 @@ export class SupervisorAgent extends AbstractAgent {
143
150
  // implements, so a host gateway needs no change to take part.
144
151
  const completionInbox = new CompletionInbox();
145
152
  completionInbox.attach(gateway);
146
- const coordinatorToolDefs = buildCoordinatorTools({
147
- gateway,
148
- completionInbox,
149
- workingDirectory: input.workingDirectory,
150
- runtimeContext: input.runtimeContext,
151
- allowedAgentIds: config.agentIds,
152
- // The only hop between the config and the decision. Omit it and
153
- // everything still compiles: the field is settable, documented, and
154
- // read by nothing — which is the shape of a declaration this repo
155
- // has had to go and delete before.
156
- allowDelegation: config.allowDelegation,
157
- taskStore: input.taskStore,
158
- runId,
159
- getPlanManager: () => planManagerRef,
160
- onTaskLaunched: (agentTaskId, meta) => {
161
- launchedTasks.set(agentTaskId, meta);
162
- },
163
- // With a resume handler present the coordinator surface gains
164
- // ask_user_question — the model can park the run on a question
165
- // routed through the same HITL channel as plan approvals.
166
- ...(config.resumeHandler ? { resumeHandler: config.resumeHandler } : {}),
167
- questionParks,
168
- pendingAnswers,
169
- });
170
- const tools = new ToolRegistry();
171
- if (config.tools) {
172
- for (const tool of config.tools.getAll()) {
173
- tools.register(tool, config.tools.getAvailability(tool.name));
153
+ // From here to the return in a try/finally, so the listener is released
154
+ // on every way out. The registration loop below can throw
155
+ // ToolNameCollisionError, and a host that hits that fixes its config and
156
+ // runs again — which is how a leak of one listener per run becomes a leak
157
+ // of one per ATTEMPT.
158
+ try {
159
+ const coordinatorToolDefs = buildCoordinatorTools({
160
+ gateway,
161
+ completionInbox,
162
+ workingDirectory: input.workingDirectory,
163
+ runtimeContext: input.runtimeContext,
164
+ allowedAgentIds: config.agentIds,
165
+ // The only hop between the config and the decision. Omit it and
166
+ // everything still compiles: the field is settable, documented, and
167
+ // read by nothing — which is the shape of a declaration this repo
168
+ // has had to go and delete before.
169
+ allowDelegation: config.allowDelegation,
170
+ taskStore: input.taskStore,
171
+ runId,
172
+ getPlanManager: () => planManagerRef,
173
+ onTaskLaunched: (agentTaskId, meta) => {
174
+ launchedTasks.set(agentTaskId, meta);
175
+ },
176
+ // With a resume handler present the coordinator surface gains
177
+ // ask_user_question the model can park the run on a question
178
+ // routed through the same HITL channel as plan approvals.
179
+ ...(config.resumeHandler ? { resumeHandler: config.resumeHandler } : {}),
180
+ questionParks,
181
+ pendingAnswers,
182
+ });
183
+ const tools = new ToolRegistry();
184
+ if (config.tools) {
185
+ for (const tool of config.tools.getAll()) {
186
+ tools.register(tool, config.tools.getAvailability(tool.name));
187
+ }
174
188
  }
175
- }
176
- // Registered the way every other kernel-mounted tool in this SDK is
177
- // registered: honouring `runtimeToolOverrides`, and refusing to take a
178
- // name the host already used.
179
- //
180
- // Both halves were missing here and nowhere else. `runtimeToolOverrides`
181
- // is declared on `AgentInput`, is forwarded into this very `drainQuery`
182
- // call below, and is consulted for the task tools and for the advisory
183
- // tools but the coordinator tools were registered before that and
184
- // unconditionally, so `{ create_task: 'disabled' }` was honoured
185
- // everywhere except the one surface a host would most want to decline.
186
- // A run that must not delegate had prompt text and a gateway refusal as
187
- // its only defences.
188
- //
189
- // Collision REFUSES rather than overwrites, and the principle is
190
- // complete mediation rather than fail-safe defaults: "proposals to gain
191
- // performance by remembering the result of an authority check [must] be
192
- // examined skeptically. If a change in authority occurs, such remembered
193
- // results must be systematically updated" (Saltzer & Schroeder 1975,
194
- // §I.A.3(c)). A registry entry is a remembered binding of a name to an
195
- // authority, and a later write that rebinds the name leaves every
196
- // decision made about the old binding stale.
197
- //
198
- // The counter-argument is that today the host's tool merely loses
199
- // quietly and the run still works, so six reserved names is a real cost
200
- // on a name a consumer may have chosen long ago. It does not hold,
201
- // because "loses quietly" is not what happens. `registerOne` ends with
202
- // `availability.set(id, state)` and this call passes no state, so a tool
203
- // the host registered `deferred` or `suspended` is silently PROMOTED to
204
- // active under someone else's implementation; and because the store is a
205
- // Map, the replacement inherits the host's insertion position in the
206
- // prompt-cache prefix. That is a different authorization surface, not a
207
- // lost registration. CWE-390 is the shape `ManagedRegistry` has here
208
- // detection of an error condition without action and CWE-694's own
209
- // mitigation is nearly this fix: do not operate any resource with a
210
- // non-unique identifier, and report the error.
211
- //
212
- // Refusing is also what the peer set does. One runtime's registry
213
- // primitive throws on both duplicate and reserved names; another refuses
214
- // its injected delegation name in a pre-flight that tells the author to
215
- // rename. Closer to home, `ProviderRegistry.register` already throws
216
- // unless the caller passes `{ replace: true }` declared intent is what
217
- // separates a legitimate replacement from an accidental one, and no such
218
- // intent is expressible here.
219
- const overrides = input.runtimeToolOverrides;
220
- for (const tool of coordinatorToolDefs) {
221
- const override = overrides?.[tool.name];
222
- if (override === 'disabled')
223
- continue;
224
- if (config.tools?.has(tool.name)) {
225
- throw new ToolNameCollisionError(tool.name, 'the supervisor coordinator surface');
189
+ // Registered the way every other kernel-mounted tool in this SDK is
190
+ // registered: honouring `runtimeToolOverrides`, and refusing to take a
191
+ // name the host already used.
192
+ //
193
+ // Both halves were missing here and nowhere else. `runtimeToolOverrides`
194
+ // is declared on `AgentInput`, is forwarded into this very `drainQuery`
195
+ // call below, and is consulted for the task tools and for the advisory
196
+ // tools but the coordinator tools were registered before that and
197
+ // unconditionally, so `{ create_task: 'disabled' }` was honoured
198
+ // everywhere except the one surface a host would most want to decline.
199
+ // A run that must not delegate had prompt text and a gateway refusal as
200
+ // its only defences.
201
+ //
202
+ // Collision REFUSES rather than overwrites, and the principle is
203
+ // complete mediation rather than fail-safe defaults: "proposals to gain
204
+ // performance by remembering the result of an authority check [must] be
205
+ // examined skeptically. If a change in authority occurs, such remembered
206
+ // results must be systematically updated" (Saltzer & Schroeder 1975,
207
+ // §I.A.3(c)). A registry entry is a remembered binding of a name to an
208
+ // authority, and a later write that rebinds the name leaves every
209
+ // decision made about the old binding stale.
210
+ //
211
+ // The counter-argument is that today the host's tool merely loses
212
+ // quietly and the run still works, so six reserved names is a real cost
213
+ // on a name a consumer may have chosen long ago. It does not hold,
214
+ // because "loses quietly" is not what happens. `registerOne` ends with
215
+ // `availability.set(id, state)` and this call passes no state, so a tool
216
+ // the host registered `deferred` or `suspended` is silently PROMOTED to
217
+ // active under someone else's implementation; and because the store is a
218
+ // Map, the replacement inherits the host's insertion position in the
219
+ // prompt-cache prefix. That is a different authorization surface, not a
220
+ // lost registration. CWE-390 is the shape `ManagedRegistry` has here
221
+ // detection of an error condition without action and CWE-694's own
222
+ // mitigation is nearly this fix: do not operate any resource with a
223
+ // non-unique identifier, and report the error.
224
+ //
225
+ // Refusing is also what the peer set does. One runtime's registry
226
+ // primitive throws on both duplicate and reserved names; another refuses
227
+ // its injected delegation name in a pre-flight that tells the author to
228
+ // rename. Closer to home, `ProviderRegistry.register` already throws
229
+ // unless the caller passes `{ replace: true }` declared intent is what
230
+ // separates a legitimate replacement from an accidental one, and no such
231
+ // intent is expressible here.
232
+ const overrides = input.runtimeToolOverrides;
233
+ for (const tool of coordinatorToolDefs) {
234
+ const override = overrides?.[tool.name];
235
+ if (override === 'disabled')
236
+ continue;
237
+ if (config.tools?.has(tool.name)) {
238
+ throw new ToolNameCollisionError(tool.name, 'the supervisor coordinator surface');
239
+ }
240
+ tools.register(tool, override ?? 'active');
226
241
  }
227
- tools.register(tool, override ?? 'active');
242
+ const childInvocationState = deriveChildState(config.invocationState ?? { tenantId }, this.metadata.id);
243
+ const run = await drainQuery({
244
+ systemPrompt: config.systemPrompt,
245
+ skills: config.skills,
246
+ provider: config.provider,
247
+ tools,
248
+ runConfig: {
249
+ model: config.model,
250
+ tokenBudget: config.tokenBudget,
251
+ timeoutMs: config.timeoutMs,
252
+ maxIterations: config.maxIterations,
253
+ temperature: config.temperature,
254
+ env: config.env,
255
+ // See ReactiveAgent: a hand-listed literal drops what nobody
256
+ // remembered to add, and reports nothing when it does.
257
+ ...(config.thinking ? { thinking: config.thinking } : {}),
258
+ ...(config.effort ? { effort: config.effort } : {}),
259
+ },
260
+ questionParks,
261
+ pendingAnswers,
262
+ // How wide a fan-out actually runs. Absent leaves the kernel
263
+ // default — the same forwarding ReactiveAgent has always done,
264
+ // missing from the one agent whose job is delegation.
265
+ ...(config.maxToolConcurrency !== undefined
266
+ ? { maxToolConcurrency: config.maxToolConcurrency }
267
+ : {}),
268
+ agentId: this.metadata.id,
269
+ agentName: this.metadata.name,
270
+ workingDirectory: input.workingDirectory,
271
+ messages: input.messages,
272
+ signal: input.signal,
273
+ sessionId,
274
+ threadId,
275
+ projectId,
276
+ tenantId,
277
+ runId,
278
+ parentRunId: config.parentRunId,
279
+ depth: config.depth,
280
+ contextLevel: 'full',
281
+ onContextCreated: ({ planManager }) => {
282
+ planManagerRef = planManager;
283
+ },
284
+ taskStore: input.taskStore,
285
+ runtimeToolOverrides: input.runtimeToolOverrides,
286
+ runtimeContext: input.runtimeContext,
287
+ taskGateway: gateway,
288
+ completionInbox,
289
+ launchedTasks,
290
+ advisory: config.advisory,
291
+ invocationState: childInvocationState,
292
+ // HITL surface: forward optional review-time hooks so hosts can
293
+ // run "Ask before acting" supervisors instead of the default
294
+ // auto-approve. drainQuery falls back to autoApproveHandler
295
+ // when resumeHandler is omitted (= same behaviour as before).
296
+ ...(config.resumeHandler ? { resumeHandler: config.resumeHandler } : {}),
297
+ // Forwarded for the same reason the handler is. A capability the
298
+ // kernel honours in `drainQuery` but that never reaches the
299
+ // surface a host actually constructs is a capability nobody can
300
+ // use — which is the shape of defect this file has already been
301
+ // corrected for twice.
302
+ ...(config.steering ? { steering: config.steering } : {}),
303
+ ...(config.verificationGate ? { verificationGate: config.verificationGate } : {}),
304
+ ...(config.sandboxProvider ? { sandboxProvider: config.sandboxProvider } : {}),
305
+ // Working-memory / compaction seam (optional; absent => unchanged
306
+ // run path, byte-identical for every existing consumer).
307
+ ...(config.compactionConfig ? { compactionConfig: config.compactionConfig } : {}),
308
+ ...(config.workingMemoryProvider
309
+ ? { workingMemoryProvider: config.workingMemoryProvider }
310
+ : {}),
311
+ }, listener);
312
+ const taskHandles = gateway.listTasks();
313
+ const taskResults = synthesizeTaskResults(taskHandles, runId);
314
+ const completedTasks = countCompletedTasks(taskResults);
315
+ return {
316
+ runId: run.id,
317
+ status: run.status === 'completed' ? 'completed' : 'failed',
318
+ stopReason: run.stopReason,
319
+ usage: run.tokenUsage,
320
+ cost: run.costInfo,
321
+ iterations: run.currentIteration,
322
+ durationMs: Date.now() - startTime,
323
+ messages: run.messages,
324
+ result: run.result,
325
+ lastError: run.lastError,
326
+ taskResults,
327
+ completedTasks,
328
+ totalTasks: taskResults.length,
329
+ };
330
+ }
331
+ finally {
332
+ completionInbox.close();
228
333
  }
229
- const childInvocationState = deriveChildState(config.invocationState ?? { tenantId }, this.metadata.id);
230
- const run = await drainQuery({
231
- systemPrompt: config.systemPrompt,
232
- skills: config.skills,
233
- provider: config.provider,
234
- tools,
235
- runConfig: {
236
- model: config.model,
237
- tokenBudget: config.tokenBudget,
238
- timeoutMs: config.timeoutMs,
239
- maxIterations: config.maxIterations,
240
- temperature: config.temperature,
241
- env: config.env,
242
- // See ReactiveAgent: a hand-listed literal drops what nobody
243
- // remembered to add, and reports nothing when it does.
244
- ...(config.thinking ? { thinking: config.thinking } : {}),
245
- ...(config.effort ? { effort: config.effort } : {}),
246
- },
247
- questionParks,
248
- pendingAnswers,
249
- agentId: this.metadata.id,
250
- agentName: this.metadata.name,
251
- workingDirectory: input.workingDirectory,
252
- messages: input.messages,
253
- signal: input.signal,
254
- sessionId,
255
- threadId,
256
- projectId,
257
- tenantId,
258
- runId,
259
- parentRunId: config.parentRunId,
260
- depth: config.depth,
261
- contextLevel: 'full',
262
- onContextCreated: ({ planManager }) => {
263
- planManagerRef = planManager;
264
- },
265
- taskStore: input.taskStore,
266
- runtimeToolOverrides: input.runtimeToolOverrides,
267
- runtimeContext: input.runtimeContext,
268
- taskGateway: gateway,
269
- completionInbox,
270
- launchedTasks,
271
- advisory: config.advisory,
272
- invocationState: childInvocationState,
273
- // HITL surface: forward optional review-time hooks so hosts can
274
- // run "Ask before acting" supervisors instead of the default
275
- // auto-approve. drainQuery falls back to autoApproveHandler
276
- // when resumeHandler is omitted (= same behaviour as before).
277
- ...(config.resumeHandler ? { resumeHandler: config.resumeHandler } : {}),
278
- // Forwarded for the same reason the handler is. A capability the
279
- // kernel honours in `drainQuery` but that never reaches the
280
- // surface a host actually constructs is a capability nobody can
281
- // use — which is the shape of defect this file has already been
282
- // corrected for twice.
283
- ...(config.steering ? { steering: config.steering } : {}),
284
- ...(config.verificationGate ? { verificationGate: config.verificationGate } : {}),
285
- ...(config.sandboxProvider ? { sandboxProvider: config.sandboxProvider } : {}),
286
- // Working-memory / compaction seam (optional; absent => unchanged
287
- // run path, byte-identical for every existing consumer).
288
- ...(config.compactionConfig ? { compactionConfig: config.compactionConfig } : {}),
289
- ...(config.workingMemoryProvider
290
- ? { workingMemoryProvider: config.workingMemoryProvider }
291
- : {}),
292
- }, listener);
293
- const taskHandles = gateway.listTasks();
294
- const taskResults = synthesizeTaskResults(taskHandles, runId);
295
- const completedTasks = countCompletedTasks(taskResults);
296
- return {
297
- runId: run.id,
298
- status: run.status === 'completed' ? 'completed' : 'failed',
299
- stopReason: run.stopReason,
300
- usage: run.tokenUsage,
301
- cost: run.costInfo,
302
- iterations: run.currentIteration,
303
- durationMs: Date.now() - startTime,
304
- messages: run.messages,
305
- result: run.result,
306
- lastError: run.lastError,
307
- taskResults,
308
- completedTasks,
309
- totalTasks: taskResults.length,
310
- };
311
334
  }
312
335
  }
313
336
  //# sourceMappingURL=SupervisorAgent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SupervisorAgent.js","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SupervisorAgent.js","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=a-policy-nobody-can-select.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a-policy-nobody-can-select.test.d.ts","sourceRoot":"","sources":["../../../src/agents/__tests__/a-policy-nobody-can-select.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,177 @@
1
+ import { mkdtemp } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { describe, expect, it } from 'vitest';
5
+ import { MockLLMProvider, registerMock } from '../../provider/index.js';
6
+ import { ToolRegistry } from '../../registry/index.js';
7
+ import { SupervisorAgent } from '../SupervisorAgent.js';
8
+ /**
9
+ * `'cancel-siblings'` was unreachable from every entry point.
10
+ *
11
+ * `LocalTaskGateway` has honoured the policy since it was written and the
12
+ * cancellation machinery behind it is complete — but the policy was the fifth
13
+ * constructor argument of a gateway the supervisor builds itself, and the
14
+ * supervisor passed four. So every host in existence ran `'continue'`, and the
15
+ * only way to reach the other value was to construct the gateway by hand and
16
+ * hand it in through `config.gateway`. A policy nobody can select is not a
17
+ * policy, and the tests it had all constructed the gateway directly, so they
18
+ * passed while nothing upstream could turn it on.
19
+ *
20
+ * The assertion is deliberately the cancellation itself. Asserting that the run
21
+ * completed would pass with the forwarding deleted — a fan-out under
22
+ * `'continue'` completes too — and prove nothing.
23
+ */
24
+ registerMock();
25
+ const FAILING = 'doomed';
26
+ const SLOW = 'patient';
27
+ /**
28
+ * A manager whose slow child only settles when someone cancels it — which is
29
+ * what an abort actually does, and what lets this run terminate at all.
30
+ */
31
+ class FanOutManager {
32
+ cancelled = [];
33
+ tasks = new Map();
34
+ releaseSlow;
35
+ slowSettled = new Promise((resolve) => {
36
+ this.releaseSlow = resolve;
37
+ });
38
+ markLaunched;
39
+ /**
40
+ * The doomed child does not settle until BOTH have launched.
41
+ *
42
+ * Without this the test is a race it usually wins: the sibling policy only
43
+ * cancels tasks the gateway is already tracking, so if the failure lands
44
+ * before the slow child finishes registering, nothing is cancelled, nothing
45
+ * releases the slow child, and the run hangs until the delegation timeout.
46
+ * That happened once here. A fan-out where one leg dies while another is
47
+ * genuinely in flight is the scenario being tested, so the harness states
48
+ * it instead of hoping for it.
49
+ */
50
+ bothLaunched = new Promise((resolve) => {
51
+ this.markLaunched = resolve;
52
+ });
53
+ async sendMessage(options) {
54
+ const failing = options.agentId === FAILING;
55
+ const taskId = (failing ? 'task_doomed' : 'task_patient');
56
+ const task = {
57
+ taskId,
58
+ agentId: options.agentId,
59
+ agent: {},
60
+ childAbortController: new AbortController(),
61
+ context: {},
62
+ // The failing child is `completed` at the gateway layer and
63
+ // `failed` in its own result — the two-authority split that makes
64
+ // this worth checking at all.
65
+ state: (failing ? 'completed' : 'running'),
66
+ pendingMessages: [],
67
+ createdAt: 1,
68
+ ...(failing
69
+ ? { result: { runId: 'run_child', status: 'failed', result: 'it broke' } }
70
+ : {}),
71
+ };
72
+ this.tasks.set(taskId, task);
73
+ if (this.tasks.size === 2)
74
+ this.markLaunched?.();
75
+ return task;
76
+ }
77
+ cancel(taskId) {
78
+ this.cancelled.push(taskId);
79
+ const task = this.tasks.get(taskId);
80
+ if (task)
81
+ task.state = 'failed';
82
+ this.releaseSlow?.();
83
+ }
84
+ async waitForCompletion(taskId) {
85
+ if (taskId === 'task_patient')
86
+ await this.slowSettled;
87
+ // The doomed child fails only once its sibling is actually in flight —
88
+ // see `bothLaunched`. Registration happens inside `createTask` right
89
+ // after `sendMessage` returns, so waiting a further microtask turn is
90
+ // what puts this after it rather than racing it.
91
+ else {
92
+ await this.bothLaunched.then(() => undefined);
93
+ // Safety valve, and it is what makes a REGRESSION legible. If the
94
+ // policy never reaches the gateway, nothing cancels the slow child
95
+ // and this run hangs until the delegation timeout — so the test
96
+ // would report "timed out after 60s" instead of "the sibling was
97
+ // not cancelled". Releasing it here means the assertion below is
98
+ // what fails, and it fails in a second.
99
+ setTimeout(() => this.releaseSlow?.(), 250).unref?.();
100
+ }
101
+ }
102
+ getInstance(taskId) {
103
+ return this.tasks.get(taskId);
104
+ }
105
+ cancelAll() { }
106
+ async continueTask() { }
107
+ queueMessage() { }
108
+ drainMessages() {
109
+ return [];
110
+ }
111
+ listByParent() {
112
+ return [];
113
+ }
114
+ listActive() {
115
+ return [];
116
+ }
117
+ getState() {
118
+ return undefined;
119
+ }
120
+ on() { }
121
+ off() { }
122
+ cleanup() { }
123
+ dispose() { }
124
+ }
125
+ async function fanOut(policy) {
126
+ const agentManager = new FanOutManager();
127
+ const agent = new SupervisorAgent({
128
+ id: 'sup_policy',
129
+ name: 'Supervisor',
130
+ version: '1',
131
+ category: 'test',
132
+ description: 'coordinates workers',
133
+ });
134
+ await agent.run({
135
+ messages: [{ role: 'user', content: 'go', timestamp: 1 }],
136
+ workingDirectory: await mkdtemp(join(tmpdir(), 'namzu-sibling-policy-')),
137
+ }, {
138
+ provider: new MockLLMProvider({
139
+ turns: [
140
+ {
141
+ toolCalls: [
142
+ {
143
+ name: 'create_task',
144
+ args: { agent_id: SLOW, prompt: 'long work', description: 'the patient one' },
145
+ },
146
+ {
147
+ name: 'create_task',
148
+ args: { agent_id: FAILING, prompt: 'doomed work', description: 'the doomed one' },
149
+ },
150
+ ],
151
+ },
152
+ { text: 'done' },
153
+ ],
154
+ }),
155
+ agentIds: [SLOW, FAILING],
156
+ agentManager,
157
+ tools: new ToolRegistry(),
158
+ systemPrompt: 'You coordinate.',
159
+ model: 'mock-model',
160
+ tokenBudget: 100_000,
161
+ timeoutMs: 30_000,
162
+ maxIterations: 3,
163
+ sessionId: 'ses_policy',
164
+ threadId: 'thd_policy',
165
+ projectId: 'prj_policy',
166
+ tenantId: 'tnt_policy',
167
+ ...(policy ? { siblingFailurePolicy: policy } : {}),
168
+ });
169
+ return agentManager;
170
+ }
171
+ describe('a supervisor can say what a failed child means for its siblings', () => {
172
+ it('reaches the gateway, so cancel-siblings actually stops the rest', async () => {
173
+ const manager = await fanOut('cancel-siblings');
174
+ expect(manager.cancelled).toContain('task_patient');
175
+ }, 60_000);
176
+ });
177
+ //# sourceMappingURL=a-policy-nobody-can-select.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a-policy-nobody-can-select.test.js","sourceRoot":"","sources":["../../../src/agents/__tests__/a-policy-nobody-can-select.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=supervisor-inbox-scope.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor-inbox-scope.test.d.ts","sourceRoot":"","sources":["../../../src/agents/__tests__/supervisor-inbox-scope.test.ts"],"names":[],"mappings":""}