@namzu/sdk 8.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.
- package/CHANGELOG.md +215 -0
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +14 -1
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/agents/__tests__/a-policy-nobody-can-select.test.d.ts +2 -0
- package/dist/agents/__tests__/a-policy-nobody-can-select.test.d.ts.map +1 -0
- package/dist/agents/__tests__/a-policy-nobody-can-select.test.js +177 -0
- package/dist/agents/__tests__/a-policy-nobody-can-select.test.js.map +1 -0
- package/dist/gateway/__tests__/a-knob-nobody-can-turn.test.d.ts +2 -0
- package/dist/gateway/__tests__/a-knob-nobody-can-turn.test.d.ts.map +1 -0
- package/dist/gateway/__tests__/a-knob-nobody-can-turn.test.js +114 -0
- package/dist/gateway/__tests__/a-knob-nobody-can-turn.test.js.map +1 -0
- package/dist/gateway/local.d.ts.map +1 -1
- package/dist/gateway/local.js +19 -6
- package/dist/gateway/local.js.map +1 -1
- package/dist/manager/agent/__tests__/lifecycle.test.js +56 -0
- package/dist/manager/agent/__tests__/lifecycle.test.js.map +1 -1
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +62 -33
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.d.ts +2 -0
- package/dist/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.d.ts.map +1 -0
- package/dist/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.js +73 -0
- package/dist/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.js.map +1 -0
- package/dist/manager/plan/lifecycle.d.ts +48 -0
- package/dist/manager/plan/lifecycle.d.ts.map +1 -1
- package/dist/manager/plan/lifecycle.js +56 -0
- package/dist/manager/plan/lifecycle.js.map +1 -1
- package/dist/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.js +62 -0
- package/dist/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.js.map +1 -0
- package/dist/runtime/query/events.d.ts.map +1 -1
- package/dist/runtime/query/events.js +5 -0
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/store/task/disk.d.ts.map +1 -1
- package/dist/store/task/disk.js +14 -0
- package/dist/store/task/disk.js.map +1 -1
- package/dist/store/task/memory.d.ts.map +1 -1
- package/dist/store/task/memory.js +14 -0
- package/dist/store/task/memory.js.map +1 -1
- package/dist/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.d.ts +2 -0
- package/dist/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.d.ts.map +1 -0
- package/dist/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.js +101 -0
- package/dist/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.js.map +1 -0
- package/dist/tools/coordinator/__tests__/the-plan-a-human-approves.test.d.ts +2 -0
- package/dist/tools/coordinator/__tests__/the-plan-a-human-approves.test.d.ts.map +1 -0
- package/dist/tools/coordinator/__tests__/the-plan-a-human-approves.test.js +99 -0
- package/dist/tools/coordinator/__tests__/the-plan-a-human-approves.test.js.map +1 -0
- package/dist/tools/coordinator/agent.d.ts.map +1 -1
- package/dist/tools/coordinator/agent.js +17 -23
- package/dist/tools/coordinator/agent.js.map +1 -1
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +33 -3
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/coordinator/outcome.d.ts +60 -0
- package/dist/tools/coordinator/outcome.d.ts.map +1 -0
- package/dist/tools/coordinator/outcome.js +68 -0
- package/dist/tools/coordinator/outcome.js.map +1 -0
- package/dist/types/agent/gateway.d.ts +19 -2
- package/dist/types/agent/gateway.d.ts.map +1 -1
- package/dist/types/agent/supervisor.d.ts +38 -1
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/plan/index.d.ts +26 -0
- package/dist/types/plan/index.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +17 -0
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/task/index.d.ts +19 -1
- package/dist/types/task/index.d.ts.map +1 -1
- package/dist/types/task/index.js +10 -1
- package/dist/types/task/index.js.map +1 -1
- package/package.json +1 -1
- package/src/agents/SupervisorAgent.ts +14 -1
- package/src/agents/__tests__/a-policy-nobody-can-select.test.ts +202 -0
- package/src/gateway/__tests__/a-knob-nobody-can-turn.test.ts +139 -0
- package/src/gateway/local.ts +19 -7
- package/src/manager/agent/__tests__/lifecycle.test.ts +74 -0
- package/src/manager/agent/lifecycle.ts +72 -42
- package/src/manager/plan/__tests__/a-plan-that-succeeded-is-not-failed.test.ts +88 -0
- package/src/manager/plan/lifecycle.ts +61 -0
- package/src/runtime/query/__tests__/the-plan-graph-reaches-a-host.test.ts +79 -0
- package/src/runtime/query/events.ts +5 -0
- package/src/store/task/disk.ts +15 -0
- package/src/store/task/memory.ts +15 -0
- package/src/tools/coordinator/__tests__/a-failed-worker-is-not-an-answer.test.ts +133 -0
- package/src/tools/coordinator/__tests__/the-plan-a-human-approves.test.ts +121 -0
- package/src/tools/coordinator/agent.ts +17 -25
- package/src/tools/coordinator/index.ts +33 -3
- package/src/tools/coordinator/outcome.ts +70 -0
- package/src/types/agent/gateway.ts +19 -2
- package/src/types/agent/supervisor.ts +40 -1
- package/src/types/plan/index.ts +29 -0
- package/src/types/run/events.ts +17 -0
- package/src/types/task/index.ts +22 -3
|
@@ -10,7 +10,7 @@ import type { ToolRegistryContract } from '../tool/index.js';
|
|
|
10
10
|
import type { VerificationGateConfig } from '../verification/index.js';
|
|
11
11
|
import type { BaseAgentConfig, BaseAgentResult } from './base.js';
|
|
12
12
|
import type { AgentFactoryOptions } from './factory.js';
|
|
13
|
-
import type { TaskGateway } from './gateway.js';
|
|
13
|
+
import type { SiblingFailurePolicy, TaskGateway } from './gateway.js';
|
|
14
14
|
import type { AgentManagerContract } from './manager.js';
|
|
15
15
|
import type { WorkingMemoryProvider } from './working-memory.js';
|
|
16
16
|
export interface SupervisorAgentConfig extends BaseAgentConfig {
|
|
@@ -64,6 +64,43 @@ export interface SupervisorAgentConfig extends BaseAgentConfig {
|
|
|
64
64
|
* @deprecated Set `maxDepth` on the `AgentManagerConfig` instead.
|
|
65
65
|
*/
|
|
66
66
|
maxDepth?: number;
|
|
67
|
+
/**
|
|
68
|
+
* How many tools may execute at once in one turn — which, for a
|
|
69
|
+
* supervisor, is how wide a fan-out actually runs.
|
|
70
|
+
*
|
|
71
|
+
* The kernel has honoured this all along and `ReactiveAgent` forwards it.
|
|
72
|
+
* It was missing here, so the agent whose entire job is delegation could
|
|
73
|
+
* not set the gate that bounds delegation, while the agent that does not
|
|
74
|
+
* delegate could. A host wanting a narrower fan-out had to reach past the
|
|
75
|
+
* supervisor to `drainQuery`.
|
|
76
|
+
*
|
|
77
|
+
* Absent leaves the kernel default. Note what it does and does not bound:
|
|
78
|
+
* it limits how many delegated children run CONCURRENTLY, not how many a
|
|
79
|
+
* turn may launch — a model that emits twenty `create_task` blocks still
|
|
80
|
+
* launches twenty, and they queue.
|
|
81
|
+
*/
|
|
82
|
+
maxToolConcurrency?: number;
|
|
83
|
+
/**
|
|
84
|
+
* What a failed child means for the siblings still running. Defaults to
|
|
85
|
+
* `'continue'`.
|
|
86
|
+
*
|
|
87
|
+
* `LocalTaskGateway` has honoured this since it was written, and the
|
|
88
|
+
* cancellation machinery behind `'cancel-siblings'` is complete — but the
|
|
89
|
+
* policy was a constructor argument on a gateway the supervisor builds
|
|
90
|
+
* itself, and the supervisor passed nothing. So every host in existence
|
|
91
|
+
* ran `'continue'`, and the only way to reach the other value was to
|
|
92
|
+
* construct the gateway by hand and hand it in. A policy nobody can select
|
|
93
|
+
* is not a policy.
|
|
94
|
+
*
|
|
95
|
+
* `'continue'` stays the default deliberately: partial results are usually
|
|
96
|
+
* worth having, and tearing down healthy siblings on any failure lets one
|
|
97
|
+
* flaky child waste four good ones. `'cancel-siblings'` is for a fan-out
|
|
98
|
+
* whose parts only mean something together — if one leg of a comparison
|
|
99
|
+
* dies, the others are spending budget on an answer nobody can use.
|
|
100
|
+
*
|
|
101
|
+
* Ignored when the host supplies its own `gateway`, which owns its policy.
|
|
102
|
+
*/
|
|
103
|
+
siblingFailurePolicy?: SiblingFailurePolicy;
|
|
67
104
|
taskRouter?: TaskRouterConfig;
|
|
68
105
|
factoryOptions?: AgentFactoryOptions;
|
|
69
106
|
advisory?: AdvisoryConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../../src/types/agent/supervisor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../../src/types/agent/supervisor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC7D,QAAQ,EAAE,WAAW,CAAA;IAErB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAElB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,YAAY,CAAC,EAAE,oBAAoB,CAAA;IACnC,KAAK,CAAC,EAAE,oBAAoB,CAAA;IAE5B,YAAY,EAAE,MAAM,CAAA;IAEpB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAEhB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;;;;;;;;;;OAcG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAE3C,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAE7B,cAAc,CAAC,EAAE,mBAAmB,CAAA;IAEpC,QAAQ,CAAC,EAAE,cAAc,CAAA;IAEzB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAE7B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAE1B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;IAEzC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IAEnC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;CAC7C;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC7D,WAAW,EAAE,eAAe,EAAE,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;CAClB"}
|
|
@@ -5,6 +5,32 @@ export interface PlanStep {
|
|
|
5
5
|
id: string;
|
|
6
6
|
description: string;
|
|
7
7
|
toolName?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Which agent this step is to be delegated to, when it is delegated at all.
|
|
10
|
+
*
|
|
11
|
+
* `approve_plan` invites the model to name an agent per step, and that
|
|
12
|
+
* answer was reduced to a boolean: the step got `toolName: 'create_task'`
|
|
13
|
+
* if any agent was named and nothing if not. So the human approving the
|
|
14
|
+
* plan was shown THAT a step delegates and never TO WHOM — while the model
|
|
15
|
+
* had said, and the approval is the one moment where the difference can
|
|
16
|
+
* still be acted on. Approving "delegate this" is not approving "delegate
|
|
17
|
+
* this to the agent with shell access".
|
|
18
|
+
*
|
|
19
|
+
* Typed rather than folded into {@link estimatedInput}, which is `unknown`:
|
|
20
|
+
* an approval gate's whole job is being readable, and a field a host has to
|
|
21
|
+
* cast before it can render is one a host renders wrong or not at all.
|
|
22
|
+
*
|
|
23
|
+
* Absent means the step is the orchestrator's own work, which is what
|
|
24
|
+
* omitting `agent_id` in `approve_plan` says.
|
|
25
|
+
*/
|
|
26
|
+
agentId?: string;
|
|
27
|
+
/**
|
|
28
|
+
* **No producer and no reader.** Nothing in the SDK writes this and
|
|
29
|
+
* nothing reads it; it is declared here and that is all. Noted rather
|
|
30
|
+
* than removed because it is on the published typings — see
|
|
31
|
+
* {@link agentId}, which is the field the plan approval path actually
|
|
32
|
+
* needed and did not have.
|
|
33
|
+
*/
|
|
8
34
|
estimatedInput?: unknown;
|
|
9
35
|
dependsOn: string[];
|
|
10
36
|
status: 'pending' | 'running' | 'completed' | 'skipped' | 'failed';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/plan/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,MAAM,UAAU,GACnB,YAAY,GACZ,OAAO,GACP,kBAAkB,GAClB,UAAU,GACV,UAAU,GACV,WAAW,GACX,WAAW,GACX,QAAQ,CAAA;AAEX,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAEhE;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/plan/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,MAAM,UAAU,GACnB,YAAY,GACZ,OAAO,GACP,kBAAkB,GAClB,UAAU,GACV,UAAU,GACV,WAAW,GACX,WAAW,GACX,QAAQ,CAAA;AAEX,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAEhE;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,IAAI;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAA;CAC1B"}
|
|
@@ -441,6 +441,21 @@ type CoreRunEvent = {
|
|
|
441
441
|
taskId: TaskId;
|
|
442
442
|
subject: string;
|
|
443
443
|
status: TaskStatus;
|
|
444
|
+
/**
|
|
445
|
+
* What this unit waits on, and who claims it.
|
|
446
|
+
*
|
|
447
|
+
* The store maintains a full dependency graph — `blocks` and
|
|
448
|
+
* `blockedBy` are mirrored on both ends, written under a lock, and
|
|
449
|
+
* deadlock-avoided — and none of it reached the wire. So a host
|
|
450
|
+
* could show a flat list of units and nothing about their order,
|
|
451
|
+
* while the model was already maintaining the order.
|
|
452
|
+
*
|
|
453
|
+
* Absent rather than empty when the unit depends on nothing, so a
|
|
454
|
+
* reader can tell "no dependencies" from an emitter that predates
|
|
455
|
+
* these fields.
|
|
456
|
+
*/
|
|
457
|
+
blockedBy?: readonly TaskId[];
|
|
458
|
+
owner?: string;
|
|
444
459
|
} | {
|
|
445
460
|
type: 'task_updated';
|
|
446
461
|
runId: RunId;
|
|
@@ -448,6 +463,8 @@ type CoreRunEvent = {
|
|
|
448
463
|
subject: string;
|
|
449
464
|
status: TaskStatus;
|
|
450
465
|
owner?: string;
|
|
466
|
+
/** See `task_created`. Carried on updates because an edge can be added later. */
|
|
467
|
+
blockedBy?: readonly TaskId[];
|
|
451
468
|
} | {
|
|
452
469
|
type: 'plugin_hook_executing';
|
|
453
470
|
runId: RunId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/types/run/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,KAAK,EACX,UAAU,EACV,SAAS,EACT,MAAM,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,MAAM,EACN,SAAS,EACT,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,KAAK,EACX,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAErE;;;;;;;;GAQG;AACH,UAAU,gBAAgB;IACzB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,KAAK,YAAY,GACd;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9D;IACA,IAAI,EAAE,qBAAqB,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;CACpB;AACH;;;;;;;;GAQG;GACD;IACA,IAAI,EAAE,sBAAsB,CAAA;IAC5B,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,oEAAoE;IACpE,UAAU,EAAE,UAAU,GAAG,UAAU,CAAA;IACnC,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAA;IAClD;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAC9B;AACH;;;;;;;;;;;;;;;GAeG;GACD;IACA,IAAI,EAAE,mBAAmB,CAAA;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,EAAE,eAAe,GAAG,cAAc,GAAG,iBAAiB,CAAA;IAC3D,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAA;IAChB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;CACb,GACD;IACA,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACb;AACH;;;;;;;;;;;;;GAaG;GACD;IACA,IAAI,EAAE,eAAe,CAAA;IACrB,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAChB;AACH;;;;;;;;;;;;;GAaG;GACD;IACA,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,cAAc,EAAE,OAAO,CAAA;CACtB,GACD;IACA,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAA;CACvB;AACH;;;;;;;;GAQG;GACD;IACA,IAAI,EAAE,qBAAqB,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACf;AACH;;;;;;GAMG;GACD;IACA,IAAI,EAAE,wBAAwB,CAAA;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;CAChB,GACD;IACA,IAAI,EAAE,uBAAuB,CAAA;IAC7B,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;CAChB,GACD;IACA,IAAI,EAAE,uBAAuB,CAAA;IAC7B,KAAK,EAAE,KAAK,CAAA;IACZ,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;CAC7C,GACD;IACA,IAAI,EAAE,oBAAoB,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;CAChB,GACD;IACA,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,KAAK,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;CACb,GACD;IACA,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,KAAK,CAAA;IACZ,gBAAgB,EAAE,YAAY,CAAA;CAC7B;AACH;;;;;;GAMG;GACD;IACA,IAAI,EAAE,qBAAqB,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAA;IACzB,MAAM,EAAE,OAAO,GAAG,SAAS,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CACd;AACH;;;;;;;;;;;;GAYG;GACD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAAE;AAClF;;;;;;;;;;;;;;;GAeG;GACD;IACA,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,sBAAsB,EAAE,iBAAiB,CAAA;IAChE;;;;;;OAMG;IACH,WAAW,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1D,GAOD;IACA,IAAI,EAAE,oBAAoB,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CACd,GACD;IACA,IAAI,EAAE,qBAAqB,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,EAAE,QAAQ,CAAA;IACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,YAAY,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAA;CAClD,GACD;IACA,IAAI,EAAE,kBAAkB,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;CAClB,GACD;IACA,IAAI,EAAE,kBAAkB,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,cAAc,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACb,GACD;IACA,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACf,GACD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvD;IACA,IAAI,EAAE,eAAe,CAAA;IACrB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CACd,GACD;IACA,IAAI,EAAE,mBAAmB,CAAA;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;CACzB,GACD;IACA,IAAI,EAAE,eAAe,CAAA;IACrB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACZ,GACD;IACA,IAAI,EAAE,iBAAiB,CAAA;IACvB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;CACtB,GACD;IACA,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACZ,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IACA,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/types/run/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/types/run/events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/types/run/events.ts"],"names":[],"mappings":"AA0nBA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,qBAAqB,GAAkC,IAAI,GAAG,CAAmB;IACtF,YAAY;IACZ,kBAAkB;IAClB,mEAAmE;IACnE,6CAA6C;IAC7C,iBAAiB;IACjB,sEAAsE;IACtE,uEAAuE;IACvE,oCAAoC;IACpC,eAAe;CACf,CAAC,CAAA;AAEF,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC/C,OAAO,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC"}
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import type { RunId, TaskId, TenantId } from '../ids/index.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* `failed` exists because a unit that did not succeed had nowhere to say so.
|
|
4
|
+
*
|
|
5
|
+
* Delegation wrote a failed worker's task as `completed` with the failure
|
|
6
|
+
* encoded as prose in `description` — so a reader scanning statuses saw work
|
|
7
|
+
* that had been done, and only a reader of every description saw otherwise. A
|
|
8
|
+
* status nobody can set is a status nobody can act on: a dependent unit cannot
|
|
9
|
+
* decide whether to wait or give up, and a plan cannot report that it did not
|
|
10
|
+
* finish.
|
|
11
|
+
*/
|
|
12
|
+
export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'failed';
|
|
13
|
+
/**
|
|
14
|
+
* Terminal means "will not change on its own", not "succeeded".
|
|
15
|
+
*
|
|
16
|
+
* `failed` is terminal for the same reason `completed` is: nothing downstream
|
|
17
|
+
* should wait on it. That matters most to the blocker check in the task
|
|
18
|
+
* listing — a dependent unit blocked on something that failed would otherwise
|
|
19
|
+
* wait forever for a status that will never arrive.
|
|
20
|
+
*/
|
|
3
21
|
export declare function isTerminalTaskStatus(status: TaskStatus): boolean;
|
|
4
22
|
export declare function assertTaskStatus(status: TaskStatus): void;
|
|
5
23
|
export interface Task {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/task/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/task/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/task/index.js
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal means "will not change on its own", not "succeeded".
|
|
3
|
+
*
|
|
4
|
+
* `failed` is terminal for the same reason `completed` is: nothing downstream
|
|
5
|
+
* should wait on it. That matters most to the blocker check in the task
|
|
6
|
+
* listing — a dependent unit blocked on something that failed would otherwise
|
|
7
|
+
* wait forever for a status that will never arrive.
|
|
8
|
+
*/
|
|
1
9
|
export function isTerminalTaskStatus(status) {
|
|
2
|
-
return status === 'completed';
|
|
10
|
+
return status === 'completed' || status === 'failed';
|
|
3
11
|
}
|
|
4
12
|
export function assertTaskStatus(status) {
|
|
5
13
|
switch (status) {
|
|
6
14
|
case 'pending':
|
|
7
15
|
case 'in_progress':
|
|
8
16
|
case 'completed':
|
|
17
|
+
case 'failed':
|
|
9
18
|
return;
|
|
10
19
|
default: {
|
|
11
20
|
const _exhaustive = status;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/task/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/task/index.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAkB;IACtD,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IAClD,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,aAAa,CAAC;QACnB,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAM;QACP,OAAO,CAAC,CAAC,CAAC;YACT,MAAM,WAAW,GAAU,MAAM,CAAA;YACjC,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAA;QACtD,CAAC;IACF,CAAC;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -159,7 +159,14 @@ export class SupervisorAgent extends AbstractAgent<SupervisorAgentConfig, Superv
|
|
|
159
159
|
projectId,
|
|
160
160
|
parentActor,
|
|
161
161
|
}
|
|
162
|
-
|
|
162
|
+
// The only hop between the config and the gateway's policy. Omit it
|
|
163
|
+
// and the field is settable, documented, and read by nothing —
|
|
164
|
+
// which is exactly the state it was in before.
|
|
165
|
+
gateway = new LocalTaskGateway(config.agentManager, taskContext, listener, input, {
|
|
166
|
+
...(config.siblingFailurePolicy
|
|
167
|
+
? { siblingFailurePolicy: config.siblingFailurePolicy }
|
|
168
|
+
: {}),
|
|
169
|
+
})
|
|
163
170
|
} else {
|
|
164
171
|
throw new Error("SupervisorAgentConfig requires either 'gateway' or 'agentManager'")
|
|
165
172
|
}
|
|
@@ -300,6 +307,12 @@ export class SupervisorAgent extends AbstractAgent<SupervisorAgentConfig, Superv
|
|
|
300
307
|
},
|
|
301
308
|
questionParks,
|
|
302
309
|
pendingAnswers,
|
|
310
|
+
// How wide a fan-out actually runs. Absent leaves the kernel
|
|
311
|
+
// default — the same forwarding ReactiveAgent has always done,
|
|
312
|
+
// missing from the one agent whose job is delegation.
|
|
313
|
+
...(config.maxToolConcurrency !== undefined
|
|
314
|
+
? { maxToolConcurrency: config.maxToolConcurrency }
|
|
315
|
+
: {}),
|
|
303
316
|
agentId: this.metadata.id,
|
|
304
317
|
agentName: this.metadata.name,
|
|
305
318
|
workingDirectory: input.workingDirectory,
|
|
@@ -0,0 +1,202 @@
|
|
|
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
|
+
|
|
6
|
+
import { MockLLMProvider, registerMock } from '../../provider/index.js'
|
|
7
|
+
import { ToolRegistry } from '../../registry/index.js'
|
|
8
|
+
import type { Agent } from '../../types/agent/core.js'
|
|
9
|
+
import type { SiblingFailurePolicy } from '../../types/agent/gateway.js'
|
|
10
|
+
import type { AgentManagerContract } from '../../types/agent/manager.js'
|
|
11
|
+
import type {
|
|
12
|
+
AgentTask,
|
|
13
|
+
AgentTaskContext,
|
|
14
|
+
AgentTaskState,
|
|
15
|
+
SendMessageOptions,
|
|
16
|
+
} from '../../types/agent/task.js'
|
|
17
|
+
import type { RunId, TaskId } from '../../types/ids/index.js'
|
|
18
|
+
import { SupervisorAgent } from '../SupervisorAgent.js'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* `'cancel-siblings'` was unreachable from every entry point.
|
|
22
|
+
*
|
|
23
|
+
* `LocalTaskGateway` has honoured the policy since it was written and the
|
|
24
|
+
* cancellation machinery behind it is complete — but the policy was the fifth
|
|
25
|
+
* constructor argument of a gateway the supervisor builds itself, and the
|
|
26
|
+
* supervisor passed four. So every host in existence ran `'continue'`, and the
|
|
27
|
+
* only way to reach the other value was to construct the gateway by hand and
|
|
28
|
+
* hand it in through `config.gateway`. A policy nobody can select is not a
|
|
29
|
+
* policy, and the tests it had all constructed the gateway directly, so they
|
|
30
|
+
* passed while nothing upstream could turn it on.
|
|
31
|
+
*
|
|
32
|
+
* The assertion is deliberately the cancellation itself. Asserting that the run
|
|
33
|
+
* completed would pass with the forwarding deleted — a fan-out under
|
|
34
|
+
* `'continue'` completes too — and prove nothing.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
registerMock()
|
|
38
|
+
|
|
39
|
+
const FAILING = 'doomed' as const
|
|
40
|
+
const SLOW = 'patient' as const
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* A manager whose slow child only settles when someone cancels it — which is
|
|
44
|
+
* what an abort actually does, and what lets this run terminate at all.
|
|
45
|
+
*/
|
|
46
|
+
class FanOutManager implements AgentManagerContract {
|
|
47
|
+
readonly cancelled: TaskId[] = []
|
|
48
|
+
private readonly tasks = new Map<TaskId, AgentTask>()
|
|
49
|
+
private releaseSlow?: () => void
|
|
50
|
+
private readonly slowSettled = new Promise<void>((resolve) => {
|
|
51
|
+
this.releaseSlow = resolve
|
|
52
|
+
})
|
|
53
|
+
private markLaunched?: () => void
|
|
54
|
+
/**
|
|
55
|
+
* The doomed child does not settle until BOTH have launched.
|
|
56
|
+
*
|
|
57
|
+
* Without this the test is a race it usually wins: the sibling policy only
|
|
58
|
+
* cancels tasks the gateway is already tracking, so if the failure lands
|
|
59
|
+
* before the slow child finishes registering, nothing is cancelled, nothing
|
|
60
|
+
* releases the slow child, and the run hangs until the delegation timeout.
|
|
61
|
+
* That happened once here. A fan-out where one leg dies while another is
|
|
62
|
+
* genuinely in flight is the scenario being tested, so the harness states
|
|
63
|
+
* it instead of hoping for it.
|
|
64
|
+
*/
|
|
65
|
+
private readonly bothLaunched = new Promise<void>((resolve) => {
|
|
66
|
+
this.markLaunched = resolve
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
async sendMessage(options: SendMessageOptions): Promise<AgentTask> {
|
|
70
|
+
const failing = options.agentId === FAILING
|
|
71
|
+
const taskId = (failing ? 'task_doomed' : 'task_patient') as TaskId
|
|
72
|
+
const task = {
|
|
73
|
+
taskId,
|
|
74
|
+
agentId: options.agentId,
|
|
75
|
+
agent: {} as Agent<never, never>,
|
|
76
|
+
childAbortController: new AbortController(),
|
|
77
|
+
context: {} as AgentTaskContext,
|
|
78
|
+
// The failing child is `completed` at the gateway layer and
|
|
79
|
+
// `failed` in its own result — the two-authority split that makes
|
|
80
|
+
// this worth checking at all.
|
|
81
|
+
state: (failing ? 'completed' : 'running') as AgentTaskState,
|
|
82
|
+
pendingMessages: [],
|
|
83
|
+
createdAt: 1,
|
|
84
|
+
...(failing
|
|
85
|
+
? { result: { runId: 'run_child' as RunId, status: 'failed', result: 'it broke' } }
|
|
86
|
+
: {}),
|
|
87
|
+
} as AgentTask
|
|
88
|
+
|
|
89
|
+
this.tasks.set(taskId, task)
|
|
90
|
+
if (this.tasks.size === 2) this.markLaunched?.()
|
|
91
|
+
return task
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
cancel(taskId: TaskId): void {
|
|
95
|
+
this.cancelled.push(taskId)
|
|
96
|
+
const task = this.tasks.get(taskId)
|
|
97
|
+
if (task) task.state = 'failed' as AgentTaskState
|
|
98
|
+
this.releaseSlow?.()
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async waitForCompletion(taskId: TaskId): Promise<void> {
|
|
102
|
+
if (taskId === ('task_patient' as TaskId)) await this.slowSettled
|
|
103
|
+
// The doomed child fails only once its sibling is actually in flight —
|
|
104
|
+
// see `bothLaunched`. Registration happens inside `createTask` right
|
|
105
|
+
// after `sendMessage` returns, so waiting a further microtask turn is
|
|
106
|
+
// what puts this after it rather than racing it.
|
|
107
|
+
else {
|
|
108
|
+
await this.bothLaunched.then(() => undefined)
|
|
109
|
+
// Safety valve, and it is what makes a REGRESSION legible. If the
|
|
110
|
+
// policy never reaches the gateway, nothing cancels the slow child
|
|
111
|
+
// and this run hangs until the delegation timeout — so the test
|
|
112
|
+
// would report "timed out after 60s" instead of "the sibling was
|
|
113
|
+
// not cancelled". Releasing it here means the assertion below is
|
|
114
|
+
// what fails, and it fails in a second.
|
|
115
|
+
setTimeout(() => this.releaseSlow?.(), 250).unref?.()
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
getInstance(taskId: TaskId): AgentTask | undefined {
|
|
120
|
+
return this.tasks.get(taskId)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
cancelAll(): void {}
|
|
124
|
+
async continueTask(): Promise<void> {}
|
|
125
|
+
queueMessage(): void {}
|
|
126
|
+
drainMessages() {
|
|
127
|
+
return []
|
|
128
|
+
}
|
|
129
|
+
listByParent(): AgentTask[] {
|
|
130
|
+
return []
|
|
131
|
+
}
|
|
132
|
+
listActive(): AgentTask[] {
|
|
133
|
+
return []
|
|
134
|
+
}
|
|
135
|
+
getState(): AgentTaskState | undefined {
|
|
136
|
+
return undefined
|
|
137
|
+
}
|
|
138
|
+
on(): void {}
|
|
139
|
+
off(): void {}
|
|
140
|
+
cleanup(): void {}
|
|
141
|
+
dispose(): void {}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
async function fanOut(policy?: SiblingFailurePolicy): Promise<FanOutManager> {
|
|
145
|
+
const agentManager = new FanOutManager()
|
|
146
|
+
const agent = new SupervisorAgent({
|
|
147
|
+
id: 'sup_policy',
|
|
148
|
+
name: 'Supervisor',
|
|
149
|
+
version: '1',
|
|
150
|
+
category: 'test',
|
|
151
|
+
description: 'coordinates workers',
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
await agent.run(
|
|
155
|
+
{
|
|
156
|
+
messages: [{ role: 'user', content: 'go', timestamp: 1 }],
|
|
157
|
+
workingDirectory: await mkdtemp(join(tmpdir(), 'namzu-sibling-policy-')),
|
|
158
|
+
} as never,
|
|
159
|
+
{
|
|
160
|
+
provider: new MockLLMProvider({
|
|
161
|
+
turns: [
|
|
162
|
+
{
|
|
163
|
+
toolCalls: [
|
|
164
|
+
{
|
|
165
|
+
name: 'create_task',
|
|
166
|
+
args: { agent_id: SLOW, prompt: 'long work', description: 'the patient one' },
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: 'create_task',
|
|
170
|
+
args: { agent_id: FAILING, prompt: 'doomed work', description: 'the doomed one' },
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
},
|
|
174
|
+
{ text: 'done' },
|
|
175
|
+
],
|
|
176
|
+
}),
|
|
177
|
+
agentIds: [SLOW, FAILING],
|
|
178
|
+
agentManager,
|
|
179
|
+
tools: new ToolRegistry(),
|
|
180
|
+
systemPrompt: 'You coordinate.',
|
|
181
|
+
model: 'mock-model',
|
|
182
|
+
tokenBudget: 100_000,
|
|
183
|
+
timeoutMs: 30_000,
|
|
184
|
+
maxIterations: 3,
|
|
185
|
+
sessionId: 'ses_policy',
|
|
186
|
+
threadId: 'thd_policy',
|
|
187
|
+
projectId: 'prj_policy',
|
|
188
|
+
tenantId: 'tnt_policy',
|
|
189
|
+
...(policy ? { siblingFailurePolicy: policy } : {}),
|
|
190
|
+
} as never,
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
return agentManager
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
describe('a supervisor can say what a failed child means for its siblings', () => {
|
|
197
|
+
it('reaches the gateway, so cancel-siblings actually stops the rest', async () => {
|
|
198
|
+
const manager = await fanOut('cancel-siblings')
|
|
199
|
+
|
|
200
|
+
expect(manager.cancelled).toContain('task_patient' as TaskId)
|
|
201
|
+
}, 60_000)
|
|
202
|
+
})
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { Span } from '@opentelemetry/api'
|
|
2
|
+
import { describe, expect, it } from 'vitest'
|
|
3
|
+
|
|
4
|
+
import type { Agent } from '../../types/agent/core.js'
|
|
5
|
+
import type { AgentManagerContract } from '../../types/agent/manager.js'
|
|
6
|
+
import type {
|
|
7
|
+
AgentTask,
|
|
8
|
+
AgentTaskContext,
|
|
9
|
+
AgentTaskState,
|
|
10
|
+
SendMessageOptions,
|
|
11
|
+
} from '../../types/agent/task.js'
|
|
12
|
+
import type { AgentId, RunId, SessionId, TaskId, TenantId } from '../../types/ids/index.js'
|
|
13
|
+
import type { ProjectId, ThreadId } from '../../types/session/ids.js'
|
|
14
|
+
import { LocalTaskGateway } from '../local.js'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* `CreateTaskOptions.configOverrides` was declared, typed, and never read.
|
|
18
|
+
*
|
|
19
|
+
* `createTask` built its OWN `configOverrides` object out of `parentSpan`
|
|
20
|
+
* alone, so a caller pinning a delegated run to a cheaper model, or capping
|
|
21
|
+
* its iterations, got the agent's defaults and nothing to say otherwise. The
|
|
22
|
+
* field type-checked, the call succeeded, and the run was not the run that was
|
|
23
|
+
* asked for.
|
|
24
|
+
*
|
|
25
|
+
* Reachability, not behaviour: what `configOverrides` DOES once it lands on
|
|
26
|
+
* `sendMessage` is the agent manager's business and is tested there. What was
|
|
27
|
+
* broken is the hop.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/** Records what the gateway actually asked the manager for. */
|
|
31
|
+
class RecordingManager implements AgentManagerContract {
|
|
32
|
+
readonly sent: SendMessageOptions[] = []
|
|
33
|
+
|
|
34
|
+
async sendMessage(options: SendMessageOptions): Promise<AgentTask> {
|
|
35
|
+
this.sent.push(options)
|
|
36
|
+
return {
|
|
37
|
+
taskId: `task_${this.sent.length}` as TaskId,
|
|
38
|
+
agentId: options.agentId,
|
|
39
|
+
agent: {} as Agent<never, never>,
|
|
40
|
+
childAbortController: new AbortController(),
|
|
41
|
+
context: {} as AgentTaskContext,
|
|
42
|
+
state: 'completed' as AgentTaskState,
|
|
43
|
+
pendingMessages: [],
|
|
44
|
+
createdAt: 1,
|
|
45
|
+
} as AgentTask
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
cancel(): void {}
|
|
49
|
+
cancelAll(): void {}
|
|
50
|
+
async continueTask(): Promise<void> {}
|
|
51
|
+
queueMessage(): void {}
|
|
52
|
+
drainMessages() {
|
|
53
|
+
return []
|
|
54
|
+
}
|
|
55
|
+
async waitForCompletion(): Promise<void> {}
|
|
56
|
+
getInstance(): AgentTask | undefined {
|
|
57
|
+
return undefined
|
|
58
|
+
}
|
|
59
|
+
listByParent(): AgentTask[] {
|
|
60
|
+
return []
|
|
61
|
+
}
|
|
62
|
+
listActive(): AgentTask[] {
|
|
63
|
+
return []
|
|
64
|
+
}
|
|
65
|
+
getState(): AgentTaskState | undefined {
|
|
66
|
+
return undefined
|
|
67
|
+
}
|
|
68
|
+
on(): void {}
|
|
69
|
+
off(): void {}
|
|
70
|
+
cleanup(): void {}
|
|
71
|
+
dispose(): void {}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function context(): AgentTaskContext {
|
|
75
|
+
return {
|
|
76
|
+
parentRunId: 'run_parent' as RunId,
|
|
77
|
+
parentAgentId: 'supervisor',
|
|
78
|
+
parentAbortController: new AbortController(),
|
|
79
|
+
depth: 0,
|
|
80
|
+
budgetTracker: { total: 100_000, remaining: 100_000 },
|
|
81
|
+
tenantId: 'tnt_k' as TenantId,
|
|
82
|
+
threadId: 'thd_k' as ThreadId,
|
|
83
|
+
sessionId: 'ses_k' as SessionId,
|
|
84
|
+
projectId: 'prj_k' as ProjectId,
|
|
85
|
+
parentActor: { kind: 'agent', agentId: 'supervisor' as AgentId, tenantId: 'tnt_k' as TenantId },
|
|
86
|
+
} as AgentTaskContext
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
describe('a delegated run is built with the config its caller asked for', () => {
|
|
90
|
+
it('forwards configOverrides to the spawn', async () => {
|
|
91
|
+
const manager = new RecordingManager()
|
|
92
|
+
const gateway = new LocalTaskGateway(manager, context())
|
|
93
|
+
|
|
94
|
+
await gateway.createTask({
|
|
95
|
+
agentId: 'worker',
|
|
96
|
+
prompt: 'work',
|
|
97
|
+
workingDirectory: '/tmp',
|
|
98
|
+
configOverrides: { model: 'cheap-model', maxIterations: 3 },
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
expect(manager.sent[0]?.configOverrides).toMatchObject({
|
|
102
|
+
model: 'cheap-model',
|
|
103
|
+
maxIterations: 3,
|
|
104
|
+
})
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
it('keeps the dedicated parentSpan option winning when both name a span', async () => {
|
|
108
|
+
// A caller who sets both is saying the same thing twice, and the named
|
|
109
|
+
// field is the specific one for the job — so it is applied last.
|
|
110
|
+
const manager = new RecordingManager()
|
|
111
|
+
const gateway = new LocalTaskGateway(manager, context())
|
|
112
|
+
const named = { spanContext: () => ({ traceId: 'named' }) } as unknown as Span
|
|
113
|
+
const buried = { spanContext: () => ({ traceId: 'buried' }) } as unknown as Span
|
|
114
|
+
|
|
115
|
+
await gateway.createTask({
|
|
116
|
+
agentId: 'worker',
|
|
117
|
+
prompt: 'work',
|
|
118
|
+
workingDirectory: '/tmp',
|
|
119
|
+
parentSpan: named,
|
|
120
|
+
configOverrides: { parentSpan: buried, model: 'cheap-model' },
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
expect(manager.sent[0]?.configOverrides?.parentSpan).toBe(named)
|
|
124
|
+
// ...and the rest of the caller's overrides survive alongside it.
|
|
125
|
+
expect(manager.sent[0]?.configOverrides?.model).toBe('cheap-model')
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
it('still sends no configOverrides at all when the caller set neither', async () => {
|
|
129
|
+
// The absent case has to stay absent: an empty object here would put
|
|
130
|
+
// `configOverrides: {}` on every spawn and override nothing, which is
|
|
131
|
+
// harmless until something starts reading its presence as intent.
|
|
132
|
+
const manager = new RecordingManager()
|
|
133
|
+
const gateway = new LocalTaskGateway(manager, context())
|
|
134
|
+
|
|
135
|
+
await gateway.createTask({ agentId: 'worker', prompt: 'work', workingDirectory: '/tmp' })
|
|
136
|
+
|
|
137
|
+
expect(manager.sent[0]).not.toHaveProperty('configOverrides')
|
|
138
|
+
})
|
|
139
|
+
})
|