@namzu/sdk 1.0.0 → 1.1.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 +167 -0
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +5 -0
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/SupervisorAgent.d.ts +22 -1
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +47 -14
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/agents/__tests__/supervisor-ledger.test.d.ts +2 -0
- package/dist/agents/__tests__/supervisor-ledger.test.d.ts.map +1 -0
- package/dist/agents/__tests__/supervisor-ledger.test.js +131 -0
- package/dist/agents/__tests__/supervisor-ledger.test.js.map +1 -0
- package/dist/config/runtime.d.ts +24 -0
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/runtime.js +9 -0
- package/dist/config/runtime.js.map +1 -1
- package/dist/connector/builtins/webhook.test.js +17 -0
- package/dist/connector/builtins/webhook.test.js.map +1 -1
- package/dist/connector/index.d.ts +1 -0
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +1 -0
- package/dist/connector/index.js.map +1 -1
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +4 -0
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/index.d.ts +1 -0
- package/dist/connector/mcp/index.d.ts.map +1 -1
- package/dist/connector/mcp/index.js +1 -0
- package/dist/connector/mcp/index.js.map +1 -1
- package/dist/connector/mcp/streamable-http.d.ts +22 -0
- package/dist/connector/mcp/streamable-http.d.ts.map +1 -0
- package/dist/connector/mcp/streamable-http.js +128 -0
- package/dist/connector/mcp/streamable-http.js.map +1 -0
- package/dist/connector/mcp/streamable-http.test.d.ts +2 -0
- package/dist/connector/mcp/streamable-http.test.d.ts.map +1 -0
- package/dist/connector/mcp/streamable-http.test.js +132 -0
- package/dist/connector/mcp/streamable-http.test.js.map +1 -0
- package/dist/persona/assembler.d.ts.map +1 -1
- package/dist/persona/assembler.js +18 -9
- package/dist/persona/assembler.js.map +1 -1
- package/dist/provider/collect.d.ts.map +1 -1
- package/dist/provider/collect.js +4 -1
- package/dist/provider/collect.js.map +1 -1
- package/dist/public-runtime.d.ts +1 -1
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +1 -1
- package/dist/public-runtime.js.map +1 -1
- package/dist/registry/tool/execute.d.ts +27 -0
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +124 -21
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/registry/tool/execute.test.d.ts +9 -6
- package/dist/registry/tool/execute.test.d.ts.map +1 -1
- package/dist/registry/tool/execute.test.js +72 -10
- package/dist/registry/tool/execute.test.js.map +1 -1
- package/dist/registry/toolset/catalog.test.js +62 -0
- package/dist/registry/toolset/catalog.test.js.map +1 -1
- package/dist/runtime/query/__tests__/deferred-tools.test.js +43 -5
- package/dist/runtime/query/__tests__/deferred-tools.test.js.map +1 -1
- package/dist/runtime/query/__tests__/long-document-flow.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/long-document-flow.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/long-document-flow.test.js +154 -0
- package/dist/runtime/query/__tests__/long-document-flow.test.js.map +1 -0
- package/dist/runtime/query/__tests__/prompt.test.js +15 -11
- package/dist/runtime/query/__tests__/prompt.test.js.map +1 -1
- package/dist/runtime/query/index.d.ts +9 -0
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +23 -2
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +2 -0
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +99 -6
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/checkpoint.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/checkpoint.js +2 -2
- package/dist/runtime/query/iteration/phases/checkpoint.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts +8 -0
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +84 -3
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +12 -0
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js +53 -0
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/iteration/phases/hitl-abort-race.test.d.ts +2 -0
- package/dist/runtime/query/iteration/phases/hitl-abort-race.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/hitl-abort-race.test.js +73 -0
- package/dist/runtime/query/iteration/phases/hitl-abort-race.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/hitl-answer-question.test.d.ts +2 -0
- package/dist/runtime/query/iteration/phases/hitl-answer-question.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/hitl-answer-question.test.js +120 -0
- package/dist/runtime/query/iteration/phases/hitl-answer-question.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/tool-review.d.ts +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +7 -2
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/phases/working-memory-compaction.test.d.ts +19 -0
- package/dist/runtime/query/iteration/phases/working-memory-compaction.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/working-memory-compaction.test.js +177 -0
- package/dist/runtime/query/iteration/phases/working-memory-compaction.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/working-memory.d.ts +31 -0
- package/dist/runtime/query/iteration/phases/working-memory.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/working-memory.js +81 -0
- package/dist/runtime/query/iteration/phases/working-memory.js.map +1 -0
- package/dist/session/workspace/__tests__/shared-run.test.js +1 -1
- package/dist/session/workspace/__tests__/shared-run.test.js.map +1 -1
- package/dist/session/workspace/shared-run.js +1 -0
- package/dist/session/workspace/shared-run.js.map +1 -1
- package/dist/skills/loader.test.js +8 -8
- package/dist/skills/loader.test.js.map +1 -1
- package/dist/streaming/coalesce.test.js.map +1 -1
- package/dist/tools/builtins/__tests__/payload-budget.test.js +48 -0
- package/dist/tools/builtins/__tests__/payload-budget.test.js.map +1 -1
- package/dist/tools/builtins/__tests__/read-file.test.js +9 -0
- package/dist/tools/builtins/__tests__/read-file.test.js.map +1 -1
- package/dist/tools/builtins/read-file.d.ts.map +1 -1
- package/dist/tools/builtins/read-file.js +50 -2
- package/dist/tools/builtins/read-file.js.map +1 -1
- package/dist/tools/builtins/search-tools.d.ts.map +1 -1
- package/dist/tools/builtins/search-tools.js +32 -7
- package/dist/tools/builtins/search-tools.js.map +1 -1
- package/dist/tools/coordinator/__tests__/approve-plan.test.d.ts +2 -0
- package/dist/tools/coordinator/__tests__/approve-plan.test.d.ts.map +1 -0
- package/dist/tools/coordinator/__tests__/approve-plan.test.js +114 -0
- package/dist/tools/coordinator/__tests__/approve-plan.test.js.map +1 -0
- package/dist/tools/coordinator/__tests__/ask-user-question.test.d.ts +2 -0
- package/dist/tools/coordinator/__tests__/ask-user-question.test.d.ts.map +1 -0
- package/dist/tools/coordinator/__tests__/ask-user-question.test.js +309 -0
- package/dist/tools/coordinator/__tests__/ask-user-question.test.js.map +1 -0
- package/dist/tools/coordinator/index.d.ts +8 -0
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +195 -15
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/types/agent/index.d.ts +1 -0
- package/dist/types/agent/index.d.ts.map +1 -1
- package/dist/types/agent/index.js +1 -0
- package/dist/types/agent/index.js.map +1 -1
- package/dist/types/agent/reactive.d.ts +15 -0
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/agent/supervisor.d.ts +18 -0
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/agent/working-memory.d.ts +29 -0
- package/dist/types/agent/working-memory.d.ts.map +1 -0
- package/dist/types/agent/working-memory.js +2 -0
- package/dist/types/agent/working-memory.js.map +1 -0
- package/dist/types/common/index.d.ts +10 -0
- package/dist/types/common/index.d.ts.map +1 -1
- package/dist/types/common/index.js +18 -0
- package/dist/types/common/index.js.map +1 -1
- package/dist/types/common/usage-merge.test.d.ts +2 -0
- package/dist/types/common/usage-merge.test.d.ts.map +1 -0
- package/dist/types/common/usage-merge.test.js +48 -0
- package/dist/types/common/usage-merge.test.js.map +1 -0
- package/dist/types/connector/mcp.d.ts +9 -2
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/hitl/index.d.ts +42 -0
- package/dist/types/hitl/index.d.ts.map +1 -1
- package/dist/types/hitl/index.js +11 -0
- package/dist/types/hitl/index.js.map +1 -1
- package/dist/types/provider/chat.d.ts +9 -0
- package/dist/types/provider/chat.d.ts.map +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +25 -4
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/src/agents/ReactiveAgent.ts +5 -0
- package/src/agents/SupervisorAgent.ts +56 -16
- package/src/agents/__tests__/supervisor-ledger.test.ts +185 -0
- package/src/config/runtime.ts +9 -0
- package/src/connector/builtins/webhook.test.ts +21 -0
- package/src/connector/index.ts +1 -0
- package/src/connector/mcp/client.ts +4 -0
- package/src/connector/mcp/index.ts +1 -0
- package/src/connector/mcp/streamable-http.test.ts +169 -0
- package/src/connector/mcp/streamable-http.ts +152 -0
- package/src/persona/assembler.ts +18 -6
- package/src/provider/collect.ts +4 -1
- package/src/public-runtime.ts +1 -0
- package/src/registry/tool/execute.test.ts +85 -10
- package/src/registry/tool/execute.ts +124 -21
- package/src/registry/toolset/catalog.test.ts +68 -0
- package/src/runtime/query/__tests__/deferred-tools.test.ts +52 -5
- package/src/runtime/query/__tests__/long-document-flow.test.ts +180 -0
- package/src/runtime/query/__tests__/prompt.test.ts +15 -11
- package/src/runtime/query/index.ts +34 -2
- package/src/runtime/query/iteration/index.ts +98 -6
- package/src/runtime/query/iteration/phases/checkpoint.ts +7 -2
- package/src/runtime/query/iteration/phases/compaction.ts +89 -3
- package/src/runtime/query/iteration/phases/context.ts +58 -0
- package/src/runtime/query/iteration/phases/hitl-abort-race.test.ts +86 -0
- package/src/runtime/query/iteration/phases/hitl-answer-question.test.ts +139 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +7 -3
- package/src/runtime/query/iteration/phases/working-memory-compaction.test.ts +215 -0
- package/src/runtime/query/iteration/phases/working-memory.ts +86 -0
- package/src/session/workspace/__tests__/shared-run.test.ts +1 -1
- package/src/session/workspace/shared-run.ts +1 -0
- package/src/skills/loader.test.ts +8 -8
- package/src/streaming/coalesce.test.ts +3 -3
- package/src/tools/builtins/__tests__/payload-budget.test.ts +63 -0
- package/src/tools/builtins/__tests__/read-file.test.ts +12 -0
- package/src/tools/builtins/read-file.ts +50 -2
- package/src/tools/builtins/search-tools.ts +38 -7
- package/src/tools/coordinator/__tests__/approve-plan.test.ts +139 -0
- package/src/tools/coordinator/__tests__/ask-user-question.test.ts +370 -0
- package/src/tools/coordinator/index.ts +227 -17
- package/src/types/agent/index.ts +1 -0
- package/src/types/agent/reactive.ts +17 -0
- package/src/types/agent/supervisor.ts +20 -0
- package/src/types/agent/working-memory.ts +29 -0
- package/src/types/common/index.ts +19 -0
- package/src/types/common/usage-merge.test.ts +53 -0
- package/src/types/connector/mcp.ts +14 -2
- package/src/types/hitl/index.ts +52 -1
- package/src/types/provider/chat.ts +10 -0
- package/src/version.ts +26 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,172 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- ac85934: Add a model-authored `ask_user_question` HITL surface to the coordinator
|
|
8
|
+
toolset. `HITLDecisionRequest` gains a `user_question` variant carrying
|
|
9
|
+
`UserQuestionData` (questionId = the asking `tool_use_id`, question text,
|
|
10
|
+
optional header, 2-4 model-authored options, multiSelect, allowFreeText),
|
|
11
|
+
and `HITLResumeDecision` gains `answer_question` (selectedOptionIds,
|
|
12
|
+
optional freeText, optional questionId echo as a misdirection guard).
|
|
13
|
+
The tool registers only when `buildCoordinatorTools` receives BOTH a
|
|
14
|
+
`resumeHandler` and a `runId` (SupervisorAgent threads its configured
|
|
15
|
+
`resumeHandler` through automatically), parks the run through the same
|
|
16
|
+
ResumeHandler channel as plan approvals, and returns the user's answer
|
|
17
|
+
verbatim as the tool result — selections quote question and labels,
|
|
18
|
+
free text is rendered "in their own words", and an empty/misdirected/
|
|
19
|
+
mismatched answer yields an explicit "the user did not answer" sentinel
|
|
20
|
+
instead of fabricated consent. The tool is deliberately NOT
|
|
21
|
+
concurrency-safe so multiple questions in one assistant turn park
|
|
22
|
+
strictly one at a time against host run-keyed park registries.
|
|
23
|
+
Headless callers degrade safely: `autoApproveHandler` answers
|
|
24
|
+
`user_question` with the no-selection sentinel ("No user is available
|
|
25
|
+
to answer. Proceed using your best judgment."), so runs without an
|
|
26
|
+
interactive ResumeHandler never deadlock and never invent a choice.
|
|
27
|
+
Existing ResumeHandler implementations compile unchanged (additive
|
|
28
|
+
union widening); bare plan-approval and tool-review flows are
|
|
29
|
+
byte-identical.
|
|
30
|
+
- 9df35d1: Make a Stop abort the IN-FLIGHT model turn, not only between turns.
|
|
31
|
+
|
|
32
|
+
`ChatCompletionParams` gains an optional `signal?: AbortSignal`. The query
|
|
33
|
+
runtime threads the run's abort signal into every provider call (the streaming
|
|
34
|
+
turn and the forced-final summary) and now drives the provider stream through a
|
|
35
|
+
MANUAL iterator that RACES each `next()` against the abort — so a cancellation
|
|
36
|
+
tears the turn down within a tick even if a transport buffers or ignores the
|
|
37
|
+
signal, with the abort propagating out of the generator so the run settles as
|
|
38
|
+
`cancelled`. The stream consumer cleans up on every exit (removes the abort
|
|
39
|
+
listener, calls `iterator.return()`), and the natural-completion break
|
|
40
|
+
re-checks the signal so a Stop that lands exactly as the turn finishes is
|
|
41
|
+
recorded as cancelled rather than a normal end-of-turn.
|
|
42
|
+
|
|
43
|
+
Every provider now honours the signal at the transport: Anthropic
|
|
44
|
+
(`messages.create({ signal })`), OpenAI (`create(..., { signal })`), Bedrock
|
|
45
|
+
(`send(..., { abortSignal })`), OpenRouter + HTTP (compose with the request
|
|
46
|
+
timeout via `AbortSignal.any`), Ollama (the returned iterator's `.abort()`),
|
|
47
|
+
and LM Studio (`respond(..., { signal })` → the SDK's websocket cancel) — each
|
|
48
|
+
plus a cheap per-chunk `signal.throwIfAborted()` for promptness.
|
|
49
|
+
|
|
50
|
+
Fully additive and inert when unset: a never-aborted signal is behaviourally
|
|
51
|
+
identical to omitting it, so existing callers and uncancelled runs are
|
|
52
|
+
byte-identical.
|
|
53
|
+
|
|
54
|
+
- 6c09394: Add an optional feedback channel to plan approvals: `HITLResumeDecision`'s
|
|
55
|
+
`approve_plan` variant now carries `feedback?: string`, the plan-approval
|
|
56
|
+
resume handler forwards it as `PlanApprovalResponse.feedback`, and the
|
|
57
|
+
coordinator `approve_plan` tool embeds approve-with-edits feedback in the
|
|
58
|
+
model-visible tool result so the supervisor applies the user's edits
|
|
59
|
+
atomically with the approval. Bare approvals are byte-identical to before;
|
|
60
|
+
existing resume handlers compile and behave unchanged.
|
|
61
|
+
- 8c07556: Tool-loading economics: honor prompt caching in the Anthropic provider and
|
|
62
|
+
make deferred-tool discovery ranked and bounded.
|
|
63
|
+
|
|
64
|
+
`@namzu/anthropic`:
|
|
65
|
+
|
|
66
|
+
- `cacheControl` on `ChatCompletionParams` is now honored (it was silently
|
|
67
|
+
dropped; `cache_read_input_tokens` was always 0). The provider emits up to
|
|
68
|
+
three `cache_control: {type:'ephemeral'}` breakpoints per request: the
|
|
69
|
+
tools-array tail, the last `'cache'`-tagged system block, and the last
|
|
70
|
+
message block (render order tools → system → messages).
|
|
71
|
+
- System messages are sent as a block array preserving `SystemMessage.cacheHint`
|
|
72
|
+
segment boundaries instead of being joined into one string. The OAuth
|
|
73
|
+
Claude Code identity block stays first.
|
|
74
|
+
- `toolChoice: 'none'` now maps to Anthropic's first-class
|
|
75
|
+
`tool_choice: {type:'none'}` instead of `{type:'auto'}`, and `tool_choice`
|
|
76
|
+
is only sent alongside a `tools` param.
|
|
77
|
+
- `parallelToolCalls: false` now maps to `disable_parallel_tool_use: true`
|
|
78
|
+
on the `tool_choice` (previously unmapped).
|
|
79
|
+
|
|
80
|
+
`@namzu/sdk`:
|
|
81
|
+
|
|
82
|
+
- The runtime keeps the tools param byte-stable on forced-final iterations
|
|
83
|
+
(resource-limit finalization) and forbids tool use via `toolChoice: 'none'`
|
|
84
|
+
instead of omitting `tools` — omitting busted the whole prompt-cache prefix
|
|
85
|
+
and risked a 400 with `tool_use`/`tool_result` blocks in history.
|
|
86
|
+
- `ToolRegistry.toPromptSection()` lists active tools name-only (their
|
|
87
|
+
descriptions and schemas already ride the runtime tools param every
|
|
88
|
+
request) and gives deferred tools a first-sentence hint (≤100 chars) so the
|
|
89
|
+
model can discover what a deferred name does before searching.
|
|
90
|
+
- `ToolRegistry.searchDeferred()` is now a ranked weighted search (exact
|
|
91
|
+
name 12, name substring 8, description 5, argument names 3 — the
|
|
92
|
+
`ToolCatalog.searchTools` weights) with generic CRUD verbs (`list`,
|
|
93
|
+
`read`, `create`, `update`, `get`, `find`, `delete`, `search`) added to the
|
|
94
|
+
stop-token set. `search_tools` activates only the top-5 ranked matches and
|
|
95
|
+
reports up to 5 near-misses as name+hint WITHOUT activating them, so a
|
|
96
|
+
retrieval miss becomes a cheap re-query instead of a dead end. The
|
|
97
|
+
`search_tools` input wire shape (`{query}`) is unchanged.
|
|
98
|
+
|
|
99
|
+
### Patch Changes
|
|
100
|
+
|
|
101
|
+
- 999e4be: Context-management correctness fixes (Vandal round-3 architecture audit).
|
|
102
|
+
|
|
103
|
+
- **Compaction no longer orphans tool pairs.** `runCompactionCheck` now snaps
|
|
104
|
+
the recent-window boundary through `findSafeTrimIndex` (previously wired only
|
|
105
|
+
to the unused `ConversationManager` strategy classes), so a compaction cut can
|
|
106
|
+
never leave a `tool_result` at the head of the recent window whose `tool_use`
|
|
107
|
+
was summarized away. That orphan otherwise makes the provider reject the very
|
|
108
|
+
next turn with a 400 — compaction killing the long run it exists to keep alive.
|
|
109
|
+
- **Resume preserves the compaction summary + working-memory slot.** The
|
|
110
|
+
checkpoint-restore path used to drop EVERY system message, silently losing the
|
|
111
|
+
`[COMPACTED CONTEXT]` block (the only record of the older history a pass
|
|
112
|
+
deleted) on `resumeFromCheckpoint`. It now re-pushes the fresh static/dynamic
|
|
113
|
+
floor but preserves the compaction summary and the pinned working-memory slot.
|
|
114
|
+
- **Within-turn usage is merged, not last-write-wins.** `mergeTokenUsage`
|
|
115
|
+
(per-field high-water mark) replaces `usage = chunk.usage` in `collect()` and
|
|
116
|
+
the iteration stream reducer, so a late usage frame that omits input/cache
|
|
117
|
+
tokens no longer zeroes the counts captured earlier in the stream.
|
|
118
|
+
- **HITL parks are cancellable.** `awaitDecisionOrAbort` races the tool-review
|
|
119
|
+
and iteration-checkpoint `resumeHandler` parks against the run's abort signal,
|
|
120
|
+
so a Stop that arrives while parked resolves the park as `abort` instead of
|
|
121
|
+
hanging until the host answers. Degrades to a plain await when no controller
|
|
122
|
+
is wired; fails closed to `abort` if the handler rejects.
|
|
123
|
+
|
|
124
|
+
All changes are internal correctness fixes; the provider/message wire contract
|
|
125
|
+
is unchanged and existing consumers stay behaviourally identical outside the
|
|
126
|
+
buggy edge cases above.
|
|
127
|
+
|
|
128
|
+
- 42f577e: Recreate shared run workspace manifest directories before atomic writes.
|
|
129
|
+
- 9a0c5ee: Plan-rejection guidance now follows the user's feedback instead of baking in
|
|
130
|
+
an unconditional revise loop. The old output told the supervisor to "revise
|
|
131
|
+
your plan ... and call approve_plan again" even when the feedback explicitly
|
|
132
|
+
asked it to stop, so a rejection meant to halt kept generating new plans.
|
|
133
|
+
The output now instructs: follow the feedback — revise and re-submit only if
|
|
134
|
+
changes were requested; acknowledge and end the turn if asked to stop; ask
|
|
135
|
+
the user how to proceed when no feedback was given.
|
|
136
|
+
- 0d1fb7b: Harden file intake and ACI readiness failure handling.
|
|
137
|
+
|
|
138
|
+
The built-in read tool now guides Office and PDF packages through
|
|
139
|
+
extractor tooling instead of treating binary document containers as
|
|
140
|
+
UTF-8 text. The ACI Standby Pool backend now deletes a claimed
|
|
141
|
+
container group when IP or worker readiness polling fails before a
|
|
142
|
+
Sandbox handle is returned.
|
|
143
|
+
|
|
144
|
+
- 2c5dd7a: The supervisor's task ledger no longer fabricates success for workers that
|
|
145
|
+
produced no result. Previously, when a task handle had no `result`, the
|
|
146
|
+
synthesized entry took its status from `handle.state` (cast to a terminal
|
|
147
|
+
type) — so a handle reporting `state: 'completed'` but carrying no result was
|
|
148
|
+
counted toward `completedTasks`. The supervisor then reported "workers done"
|
|
149
|
+
with empty outputs when the workers never actually produced anything.
|
|
150
|
+
|
|
151
|
+
An absent result is now always synthesized as a terminal `'failed'`, so it can
|
|
152
|
+
never count as a completed task. Handles that carry a real `result` are
|
|
153
|
+
preserved verbatim, so genuine workers are unaffected. The synthesis and tally
|
|
154
|
+
are extracted into `synthesizeTaskResults` / `countCompletedTasks` and covered
|
|
155
|
+
by unit tests.
|
|
156
|
+
|
|
157
|
+
- 271e6cf: Accept plain-text `approve_plan` step lists and normalize them into canonical
|
|
158
|
+
step objects before execution. This keeps plan approval cards resilient when a
|
|
159
|
+
provider emits numbered prose instead of an array-shaped argument.
|
|
160
|
+
- b776acf: Make the package-version read bundle-safe. `version.ts` read `../package.json`
|
|
161
|
+
via `createRequire(import.meta.url)` at module-init with no guard. esbuild leaves
|
|
162
|
+
`createRequire` calls as runtime requires and collapses the dist tree into a
|
|
163
|
+
single file, so in a bundle `../package.json` no longer resolves and the read
|
|
164
|
+
threw at import time — crashing the whole process on any code path that touches
|
|
165
|
+
the SDK runtime (`Cannot find module '../package.json'`). Wrap the read in
|
|
166
|
+
try/catch with a `0.0.0` fallback, mirroring the CLI's existing
|
|
167
|
+
`readPackageVersion`. Unbundled behaviour is unchanged (real version is read);
|
|
168
|
+
a bundled build degrades the cosmetic version string instead of crashing.
|
|
169
|
+
|
|
3
170
|
## 1.0.0
|
|
4
171
|
|
|
5
172
|
### Major Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveAgent.d.ts","sourceRoot":"","sources":["../../src/agents/ReactiveAgent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,qBAAa,aAAc,SAAQ,aAAa,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IACzF,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAS;gBAEvB,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,CAAC;IAa5D,GAAG,CACR,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ReactiveAgent.d.ts","sourceRoot":"","sources":["../../src/agents/ReactiveAgent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,qBAAa,aAAc,SAAQ,aAAa,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IACzF,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAS;gBAEvB,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,CAAC;IAa5D,GAAG,CACR,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,mBAAmB,CAAC;IAiFhB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
|
|
@@ -28,6 +28,11 @@ export class ReactiveAgent extends AbstractAgent {
|
|
|
28
28
|
tools: config.tools,
|
|
29
29
|
...(config.verificationGate ? { verificationGate: config.verificationGate } : {}),
|
|
30
30
|
...(config.sandboxProvider ? { sandboxProvider: config.sandboxProvider } : {}),
|
|
31
|
+
// Working-memory / compaction seam (optional; absent => unchanged run path).
|
|
32
|
+
...(config.compactionConfig ? { compactionConfig: config.compactionConfig } : {}),
|
|
33
|
+
...(config.workingMemoryProvider
|
|
34
|
+
? { workingMemoryProvider: config.workingMemoryProvider }
|
|
35
|
+
: {}),
|
|
31
36
|
runConfig: {
|
|
32
37
|
model: config.model,
|
|
33
38
|
tokenBudget: config.tokenBudget,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactiveAgent.js","sourceRoot":"","sources":["../../src/agents/ReactiveAgent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReactiveAgent.js","sourceRoot":"","sources":["../../src/agents/ReactiveAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,27 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TaskHandle } from '../types/agent/gateway.js';
|
|
2
|
+
import type { AgentInput, AgentMetadata, AgentTaskResult, SupervisorAgentConfig, SupervisorAgentResult } from '../types/agent/index.js';
|
|
3
|
+
import type { RunId } from '../types/ids/index.js';
|
|
2
4
|
import type { RunEventListener } from '../types/run/index.js';
|
|
3
5
|
import { AbstractAgent } from './AbstractAgent.js';
|
|
6
|
+
/**
|
|
7
|
+
* Build the authoritative per-task ledger from the gateway's task handles.
|
|
8
|
+
*
|
|
9
|
+
* A handle carries a `result` only when its worker actually produced one. A
|
|
10
|
+
* handle with NO result never produced a verifiable outcome, so it MUST NOT be
|
|
11
|
+
* synthesized as a success: the synthesized status is always the terminal
|
|
12
|
+
* `'failed'`, regardless of the handle's reported `state` (which may itself be
|
|
13
|
+
* `'completed'`).
|
|
14
|
+
*
|
|
15
|
+
* The earlier implementation cast `handle.state` onto the synthesized result's
|
|
16
|
+
* status, letting a worker that ended without a result count toward
|
|
17
|
+
* `completedTasks`. That produced fabricated "done" workers with empty outputs
|
|
18
|
+
* (cowork task 02c5cf2b): the supervisor reported "3 workers done, 40KB
|
|
19
|
+
* reports" when the workers never started. Real workers (those with a present
|
|
20
|
+
* `result`) are unaffected — their `result` is preserved verbatim.
|
|
21
|
+
*/
|
|
22
|
+
export declare function synthesizeTaskResults(taskHandles: readonly TaskHandle[], runId: RunId, now?: number): AgentTaskResult[];
|
|
23
|
+
/** Count only the task results that genuinely completed. */
|
|
24
|
+
export declare function countCompletedTasks(taskResults: readonly AgentTaskResult[]): number;
|
|
4
25
|
export declare class SupervisorAgent extends AbstractAgent<SupervisorAgentConfig, SupervisorAgentResult> {
|
|
5
26
|
readonly type: "supervisor";
|
|
6
27
|
constructor(metadata: Omit<AgentMetadata, 'type' | 'capabilities'>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupervisorAgent.d.ts","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SupervisorAgent.d.ts","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,KAAK,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAW,KAAK,EAAU,MAAM,uBAAuB,CAAA;AAEnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACpC,WAAW,EAAE,SAAS,UAAU,EAAE,EAClC,KAAK,EAAE,KAAK,EACZ,GAAG,GAAE,MAAmB,GACtB,eAAe,EAAE,CAcnB;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAEnF;AAED,qBAAa,eAAgB,SAAQ,aAAa,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAC/F,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAS;gBAEzB,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,CAAC;IAa5D,GAAG,CACR,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,qBAAqB,CAAC;CAuKjC"}
|
|
@@ -6,6 +6,41 @@ import { buildCoordinatorTools } from '../tools/coordinator/index.js';
|
|
|
6
6
|
import { deriveChildState } from '../types/invocation/index.js';
|
|
7
7
|
import { ZERO_COST } from '../utils/cost.js';
|
|
8
8
|
import { AbstractAgent } from './AbstractAgent.js';
|
|
9
|
+
/**
|
|
10
|
+
* Build the authoritative per-task ledger from the gateway's task handles.
|
|
11
|
+
*
|
|
12
|
+
* A handle carries a `result` only when its worker actually produced one. A
|
|
13
|
+
* handle with NO result never produced a verifiable outcome, so it MUST NOT be
|
|
14
|
+
* synthesized as a success: the synthesized status is always the terminal
|
|
15
|
+
* `'failed'`, regardless of the handle's reported `state` (which may itself be
|
|
16
|
+
* `'completed'`).
|
|
17
|
+
*
|
|
18
|
+
* The earlier implementation cast `handle.state` onto the synthesized result's
|
|
19
|
+
* status, letting a worker that ended without a result count toward
|
|
20
|
+
* `completedTasks`. That produced fabricated "done" workers with empty outputs
|
|
21
|
+
* (cowork task 02c5cf2b): the supervisor reported "3 workers done, 40KB
|
|
22
|
+
* reports" when the workers never started. Real workers (those with a present
|
|
23
|
+
* `result`) are unaffected — their `result` is preserved verbatim.
|
|
24
|
+
*/
|
|
25
|
+
export function synthesizeTaskResults(taskHandles, runId, now = Date.now()) {
|
|
26
|
+
return taskHandles.map((handle, index) => ({
|
|
27
|
+
agentId: handle.agentId,
|
|
28
|
+
result: handle.result ?? {
|
|
29
|
+
runId,
|
|
30
|
+
status: 'failed',
|
|
31
|
+
usage: { ...EMPTY_TOKEN_USAGE },
|
|
32
|
+
cost: { ...ZERO_COST },
|
|
33
|
+
iterations: 0,
|
|
34
|
+
durationMs: now - handle.createdAt,
|
|
35
|
+
messages: [],
|
|
36
|
+
},
|
|
37
|
+
taskIndex: index,
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
/** Count only the task results that genuinely completed. */
|
|
41
|
+
export function countCompletedTasks(taskResults) {
|
|
42
|
+
return taskResults.filter((t) => t.result.status === 'completed').length;
|
|
43
|
+
}
|
|
9
44
|
export class SupervisorAgent extends AbstractAgent {
|
|
10
45
|
type = 'supervisor';
|
|
11
46
|
constructor(metadata) {
|
|
@@ -84,6 +119,10 @@ export class SupervisorAgent extends AbstractAgent {
|
|
|
84
119
|
onTaskLaunched: (agentTaskId, meta) => {
|
|
85
120
|
launchedTasks.set(agentTaskId, meta);
|
|
86
121
|
},
|
|
122
|
+
// With a resume handler present the coordinator surface gains
|
|
123
|
+
// ask_user_question — the model can park the run on a question
|
|
124
|
+
// routed through the same HITL channel as plan approvals.
|
|
125
|
+
...(config.resumeHandler ? { resumeHandler: config.resumeHandler } : {}),
|
|
87
126
|
});
|
|
88
127
|
const tools = new ToolRegistry();
|
|
89
128
|
if (config.tools) {
|
|
@@ -138,22 +177,16 @@ export class SupervisorAgent extends AbstractAgent {
|
|
|
138
177
|
...(config.resumeHandler ? { resumeHandler: config.resumeHandler } : {}),
|
|
139
178
|
...(config.verificationGate ? { verificationGate: config.verificationGate } : {}),
|
|
140
179
|
...(config.sandboxProvider ? { sandboxProvider: config.sandboxProvider } : {}),
|
|
180
|
+
// Working-memory / compaction seam (optional; absent => unchanged
|
|
181
|
+
// run path, byte-identical for every existing consumer).
|
|
182
|
+
...(config.compactionConfig ? { compactionConfig: config.compactionConfig } : {}),
|
|
183
|
+
...(config.workingMemoryProvider
|
|
184
|
+
? { workingMemoryProvider: config.workingMemoryProvider }
|
|
185
|
+
: {}),
|
|
141
186
|
}, listener);
|
|
142
187
|
const taskHandles = gateway.listTasks();
|
|
143
|
-
const taskResults = taskHandles
|
|
144
|
-
|
|
145
|
-
result: handle.result ?? {
|
|
146
|
-
runId,
|
|
147
|
-
status: handle.state,
|
|
148
|
-
usage: { ...EMPTY_TOKEN_USAGE },
|
|
149
|
-
cost: { ...ZERO_COST },
|
|
150
|
-
iterations: 0,
|
|
151
|
-
durationMs: Date.now() - handle.createdAt,
|
|
152
|
-
messages: [],
|
|
153
|
-
},
|
|
154
|
-
taskIndex: index,
|
|
155
|
-
}));
|
|
156
|
-
const completedTasks = taskResults.filter((t) => t.result.status === 'completed').length;
|
|
188
|
+
const taskResults = synthesizeTaskResults(taskHandles, runId);
|
|
189
|
+
const completedTasks = countCompletedTasks(taskResults);
|
|
157
190
|
return {
|
|
158
191
|
runId: run.id,
|
|
159
192
|
status: run.status === 'completed' ? 'completed' : 'failed',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupervisorAgent.js","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"SupervisorAgent.js","sourceRoot":"","sources":["../../src/agents/SupervisorAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor-ledger.test.d.ts","sourceRoot":"","sources":["../../../src/agents/__tests__/supervisor-ledger.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { countCompletedTasks, synthesizeTaskResults } from '../SupervisorAgent.js';
|
|
3
|
+
const RUN_ID = 'run-supervisor';
|
|
4
|
+
const NOW = 1_000_000;
|
|
5
|
+
function at(results, index) {
|
|
6
|
+
const entry = results[index];
|
|
7
|
+
if (!entry) {
|
|
8
|
+
throw new Error(`expected a task result at index ${index}, got ${results.length} results`);
|
|
9
|
+
}
|
|
10
|
+
return entry;
|
|
11
|
+
}
|
|
12
|
+
function handle(overrides) {
|
|
13
|
+
return {
|
|
14
|
+
taskId: 'task-1',
|
|
15
|
+
agentId: 'worker-1',
|
|
16
|
+
createdAt: NOW - 5_000,
|
|
17
|
+
...overrides,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function completedResult() {
|
|
21
|
+
return {
|
|
22
|
+
runId: 'run-worker',
|
|
23
|
+
status: 'completed',
|
|
24
|
+
usage: {
|
|
25
|
+
promptTokens: 10,
|
|
26
|
+
completionTokens: 20,
|
|
27
|
+
totalTokens: 30,
|
|
28
|
+
cachedTokens: 0,
|
|
29
|
+
cacheWriteTokens: 0,
|
|
30
|
+
},
|
|
31
|
+
cost: {
|
|
32
|
+
inputCostPer1M: 0,
|
|
33
|
+
outputCostPer1M: 0,
|
|
34
|
+
totalCost: 0,
|
|
35
|
+
cacheDiscount: 0,
|
|
36
|
+
},
|
|
37
|
+
iterations: 3,
|
|
38
|
+
durationMs: 4_200,
|
|
39
|
+
messages: [],
|
|
40
|
+
result: 'real worker output',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
describe('supervisor ledger truthfulness', () => {
|
|
44
|
+
describe('synthesizeTaskResults', () => {
|
|
45
|
+
it('synthesizes a FAILED result when a handle has no result, regardless of state', () => {
|
|
46
|
+
// A worker that ended with no result is NOT a success even when the
|
|
47
|
+
// handle reports a terminal 'completed' state — this is the exact
|
|
48
|
+
// fabrication that made the supervisor claim "3 workers done" with
|
|
49
|
+
// empty outputs (cowork task 02c5cf2b).
|
|
50
|
+
const results = synthesizeTaskResults([handle({ state: 'completed', result: undefined })], RUN_ID, NOW);
|
|
51
|
+
expect(results).toHaveLength(1);
|
|
52
|
+
expect(at(results, 0).result.status).toBe('failed');
|
|
53
|
+
expect(at(results, 0).result.status).not.toBe('completed');
|
|
54
|
+
expect(at(results, 0).result.runId).toBe(RUN_ID);
|
|
55
|
+
expect(at(results, 0).result.durationMs).toBe(NOW - (NOW - 5_000));
|
|
56
|
+
});
|
|
57
|
+
it('synthesizes a FAILED result for a genuinely failed handle', () => {
|
|
58
|
+
const results = synthesizeTaskResults([handle({ state: 'failed', result: undefined })], RUN_ID, NOW);
|
|
59
|
+
expect(at(results, 0).result.status).toBe('failed');
|
|
60
|
+
});
|
|
61
|
+
it('synthesizes a FAILED result for a canceled handle with no result', () => {
|
|
62
|
+
const results = synthesizeTaskResults([handle({ state: 'canceled', result: undefined })], RUN_ID, NOW);
|
|
63
|
+
expect(at(results, 0).result.status).toBe('failed');
|
|
64
|
+
});
|
|
65
|
+
it('preserves a present completed result verbatim (real workers unaffected)', () => {
|
|
66
|
+
const real = completedResult();
|
|
67
|
+
const results = synthesizeTaskResults([handle({ state: 'completed', result: real })], RUN_ID, NOW);
|
|
68
|
+
expect(at(results, 0).result).toBe(real);
|
|
69
|
+
expect(at(results, 0).result.status).toBe('completed');
|
|
70
|
+
expect(at(results, 0).result.result).toBe('real worker output');
|
|
71
|
+
});
|
|
72
|
+
it('preserves a present failed result verbatim', () => {
|
|
73
|
+
const failed = { ...completedResult(), status: 'failed' };
|
|
74
|
+
const results = synthesizeTaskResults([handle({ state: 'failed', result: failed })], RUN_ID, NOW);
|
|
75
|
+
expect(at(results, 0).result).toBe(failed);
|
|
76
|
+
expect(at(results, 0).result.status).toBe('failed');
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe('countCompletedTasks', () => {
|
|
80
|
+
it('excludes an absent-result handle from completedTasks', () => {
|
|
81
|
+
const taskResults = synthesizeTaskResults([
|
|
82
|
+
handle({
|
|
83
|
+
taskId: 'task-a',
|
|
84
|
+
agentId: 'a',
|
|
85
|
+
state: 'completed',
|
|
86
|
+
result: undefined,
|
|
87
|
+
}),
|
|
88
|
+
handle({
|
|
89
|
+
taskId: 'task-b',
|
|
90
|
+
agentId: 'b',
|
|
91
|
+
state: 'completed',
|
|
92
|
+
result: completedResult(),
|
|
93
|
+
}),
|
|
94
|
+
], RUN_ID, NOW);
|
|
95
|
+
// Two handles, both with handle.state === 'completed', but only the
|
|
96
|
+
// one that actually produced a result counts.
|
|
97
|
+
expect(taskResults).toHaveLength(2);
|
|
98
|
+
expect(countCompletedTasks(taskResults)).toBe(1);
|
|
99
|
+
});
|
|
100
|
+
it('counts every present completed result', () => {
|
|
101
|
+
const taskResults = synthesizeTaskResults([
|
|
102
|
+
handle({
|
|
103
|
+
taskId: 'task-a',
|
|
104
|
+
agentId: 'a',
|
|
105
|
+
state: 'completed',
|
|
106
|
+
result: completedResult(),
|
|
107
|
+
}),
|
|
108
|
+
handle({
|
|
109
|
+
taskId: 'task-b',
|
|
110
|
+
agentId: 'b',
|
|
111
|
+
state: 'completed',
|
|
112
|
+
result: completedResult(),
|
|
113
|
+
}),
|
|
114
|
+
], RUN_ID, NOW);
|
|
115
|
+
expect(countCompletedTasks(taskResults)).toBe(2);
|
|
116
|
+
});
|
|
117
|
+
it('reports zero completed when no worker produced a result', () => {
|
|
118
|
+
const taskResults = synthesizeTaskResults([
|
|
119
|
+
handle({
|
|
120
|
+
taskId: 'task-a',
|
|
121
|
+
agentId: 'a',
|
|
122
|
+
state: 'completed',
|
|
123
|
+
result: undefined,
|
|
124
|
+
}),
|
|
125
|
+
handle({ taskId: 'task-b', agentId: 'b', state: 'running', result: undefined }),
|
|
126
|
+
], RUN_ID, NOW);
|
|
127
|
+
expect(countCompletedTasks(taskResults)).toBe(0);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
//# sourceMappingURL=supervisor-ledger.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor-ledger.test.js","sourceRoot":"","sources":["../../../src/agents/__tests__/supervisor-ledger.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config/runtime.d.ts
CHANGED
|
@@ -28,6 +28,15 @@ export declare const TaskRouterConfigSchema: z.ZodOptional<z.ZodObject<{
|
|
|
28
28
|
}>>;
|
|
29
29
|
export declare const CompactionConfigSchema: z.ZodObject<{
|
|
30
30
|
strategy: z.ZodDefault<z.ZodEnum<["structured", "sliding-window", "disabled"]>>;
|
|
31
|
+
/**
|
|
32
|
+
* Optional model context-window size (tokens) the compaction trigger
|
|
33
|
+
* measures the CURRENT window against. NO default: when omitted the
|
|
34
|
+
* trigger falls back to the run-level cumulative `tokenBudget` exactly as
|
|
35
|
+
* before, so existing consumers are byte-identical. Hosts that keep
|
|
36
|
+
* `tokenBudget` unlimited (0) set this so compaction fires on
|
|
37
|
+
* window-pressure instead of being a silent no-op.
|
|
38
|
+
*/
|
|
39
|
+
contextWindowTokens: z.ZodOptional<z.ZodNumber>;
|
|
31
40
|
triggerThreshold: z.ZodDefault<z.ZodNumber>;
|
|
32
41
|
resetThreshold: z.ZodDefault<z.ZodNumber>;
|
|
33
42
|
keepRecentMessages: z.ZodDefault<z.ZodNumber>;
|
|
@@ -56,8 +65,10 @@ export declare const CompactionConfigSchema: z.ZodObject<{
|
|
|
56
65
|
maxCharsPerNote: number;
|
|
57
66
|
maxCharsPerRequirement: number;
|
|
58
67
|
maxCharsPerTask: number;
|
|
68
|
+
contextWindowTokens?: number | undefined;
|
|
59
69
|
}, {
|
|
60
70
|
strategy?: "disabled" | "structured" | "sliding-window" | undefined;
|
|
71
|
+
contextWindowTokens?: number | undefined;
|
|
61
72
|
triggerThreshold?: number | undefined;
|
|
62
73
|
resetThreshold?: number | undefined;
|
|
63
74
|
keepRecentMessages?: number | undefined;
|
|
@@ -157,6 +168,15 @@ export declare const RuntimeConfigSchema: z.ZodObject<{
|
|
|
157
168
|
}>>;
|
|
158
169
|
compaction: z.ZodDefault<z.ZodObject<{
|
|
159
170
|
strategy: z.ZodDefault<z.ZodEnum<["structured", "sliding-window", "disabled"]>>;
|
|
171
|
+
/**
|
|
172
|
+
* Optional model context-window size (tokens) the compaction trigger
|
|
173
|
+
* measures the CURRENT window against. NO default: when omitted the
|
|
174
|
+
* trigger falls back to the run-level cumulative `tokenBudget` exactly as
|
|
175
|
+
* before, so existing consumers are byte-identical. Hosts that keep
|
|
176
|
+
* `tokenBudget` unlimited (0) set this so compaction fires on
|
|
177
|
+
* window-pressure instead of being a silent no-op.
|
|
178
|
+
*/
|
|
179
|
+
contextWindowTokens: z.ZodOptional<z.ZodNumber>;
|
|
160
180
|
triggerThreshold: z.ZodDefault<z.ZodNumber>;
|
|
161
181
|
resetThreshold: z.ZodDefault<z.ZodNumber>;
|
|
162
182
|
keepRecentMessages: z.ZodDefault<z.ZodNumber>;
|
|
@@ -185,8 +205,10 @@ export declare const RuntimeConfigSchema: z.ZodObject<{
|
|
|
185
205
|
maxCharsPerNote: number;
|
|
186
206
|
maxCharsPerRequirement: number;
|
|
187
207
|
maxCharsPerTask: number;
|
|
208
|
+
contextWindowTokens?: number | undefined;
|
|
188
209
|
}, {
|
|
189
210
|
strategy?: "disabled" | "structured" | "sliding-window" | undefined;
|
|
211
|
+
contextWindowTokens?: number | undefined;
|
|
190
212
|
triggerThreshold?: number | undefined;
|
|
191
213
|
resetThreshold?: number | undefined;
|
|
192
214
|
keepRecentMessages?: number | undefined;
|
|
@@ -288,6 +310,7 @@ export declare const RuntimeConfigSchema: z.ZodObject<{
|
|
|
288
310
|
maxCharsPerNote: number;
|
|
289
311
|
maxCharsPerRequirement: number;
|
|
290
312
|
maxCharsPerTask: number;
|
|
313
|
+
contextWindowTokens?: number | undefined;
|
|
291
314
|
};
|
|
292
315
|
model: string;
|
|
293
316
|
temperature: number;
|
|
@@ -347,6 +370,7 @@ export declare const RuntimeConfigSchema: z.ZodObject<{
|
|
|
347
370
|
} | undefined;
|
|
348
371
|
compaction?: {
|
|
349
372
|
strategy?: "disabled" | "structured" | "sliding-window" | undefined;
|
|
373
|
+
contextWindowTokens?: number | undefined;
|
|
350
374
|
triggerThreshold?: number | undefined;
|
|
351
375
|
resetThreshold?: number | undefined;
|
|
352
376
|
keepRecentMessages?: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/config/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAE9B,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;GAUvB,CAAA;AAEZ,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/config/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAE9B,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;GAUvB,CAAA;AAEZ,eAAO,MAAM,sBAAsB;;IAElC;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeF,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAErE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAO/B,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,uBAAuB;;;;;;;;;EAGlC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAKpC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAnD/B;;;;;;;WAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyDF,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,aAAa,CAAiC,CAAA"}
|
package/dist/config/runtime.js
CHANGED
|
@@ -15,6 +15,15 @@ export const TaskRouterConfigSchema = z
|
|
|
15
15
|
.optional();
|
|
16
16
|
export const CompactionConfigSchema = z.object({
|
|
17
17
|
strategy: z.enum(['structured', 'sliding-window', 'disabled']).default('structured'),
|
|
18
|
+
/**
|
|
19
|
+
* Optional model context-window size (tokens) the compaction trigger
|
|
20
|
+
* measures the CURRENT window against. NO default: when omitted the
|
|
21
|
+
* trigger falls back to the run-level cumulative `tokenBudget` exactly as
|
|
22
|
+
* before, so existing consumers are byte-identical. Hosts that keep
|
|
23
|
+
* `tokenBudget` unlimited (0) set this so compaction fires on
|
|
24
|
+
* window-pressure instead of being a silent no-op.
|
|
25
|
+
*/
|
|
26
|
+
contextWindowTokens: z.number().positive().optional(),
|
|
18
27
|
triggerThreshold: z.number().min(0).max(1).default(0.7),
|
|
19
28
|
resetThreshold: z.number().min(0).max(1).default(0.4),
|
|
20
29
|
keepRecentMessages: z.number().positive().default(4),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/config/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/config/runtime.ts"],"names":[],"mappings":"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"}
|