maestro-agent-sdk 0.1.25 → 0.1.26
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/README.md +11 -264
- package/dist/core/agent.d.ts +3 -1
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +5 -1
- package/dist/core/agent.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/pool-cache.d.ts.map +1 -1
- package/dist/mcp/pool-cache.js +7 -1
- package/dist/mcp/pool-cache.js.map +1 -1
- package/dist/provider.d.ts +28 -22
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +54 -35
- package/dist/provider.js.map +1 -1
- package/dist/state/tasks.d.ts +10 -0
- package/dist/state/tasks.d.ts.map +1 -1
- package/dist/state/tasks.js +6 -0
- package/dist/state/tasks.js.map +1 -1
- package/dist/sub-agent/runner.d.ts.map +1 -1
- package/dist/sub-agent/runner.js +3 -8
- package/dist/sub-agent/runner.js.map +1 -1
- package/dist/tools/builtin/agent.d.ts +1 -1
- package/dist/tools/builtin/agent.js +1 -1
- package/dist/tools/builtin/agent.js.map +1 -1
- package/dist/tools/builtin/ask_user_question.d.ts +24 -0
- package/dist/tools/builtin/ask_user_question.d.ts.map +1 -0
- package/dist/tools/builtin/ask_user_question.js +67 -0
- package/dist/tools/builtin/ask_user_question.js.map +1 -0
- package/dist/tools/builtin/tasks.d.ts +20 -4
- package/dist/tools/builtin/tasks.d.ts.map +1 -1
- package/dist/tools/builtin/tasks.js +99 -1
- package/dist/tools/builtin/tasks.js.map +1 -1
- package/dist/tools/file-state.d.ts +1 -1
- package/dist/tools/file-state.d.ts.map +1 -1
- package/dist/tools/file-state.js.map +1 -1
- package/dist/tools/index.d.ts +1 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/path-guard.d.ts +1 -1
- package/dist/tools/path-guard.js +2 -2
- package/dist/types.d.ts +19 -14
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/tools/builtin/multi_edit.d.ts +0 -16
- package/dist/tools/builtin/multi_edit.d.ts.map +0 -1
- package/dist/tools/builtin/multi_edit.js +0 -292
- package/dist/tools/builtin/multi_edit.js.map +0 -1
package/README.md
CHANGED
|
@@ -15,8 +15,7 @@ A generalizable agent runtime. Swap providers, inject your own logger/MCP resolv
|
|
|
15
15
|
|
|
16
16
|
- **Agent loop** — provider-driven tool-calling loop with iteration cap, abort signal, LLM pre/post guardrail hooks, and event stream.
|
|
17
17
|
- **Pluggable providers** — first-class adapters for Anthropic (Claude) and DeepSeek V4; provider-neutral message schema so adding OpenAI / Gemini / Ollama is a thin file.
|
|
18
|
-
- **Built-in tools** — `bash
|
|
19
|
-
- **Multimodal Read (v0.1.18+)** — `.png/.jpg/.webp/.gif` files return a native vision content block (Anthropic `image.source`, DeepSeek `image_url` data URI) so the model sees the image directly. `.pdf` text-extracts via `pdfjs-dist` and returns line-numbered text per page.
|
|
18
|
+
- **Built-in tools** — `bash`, `Read`, `Write`, `Edit`, `MultiEdit`, `Glob`, `Grep`, `Agent` (sub-agent delegation), `TaskCreate`/`TaskUpdate`/`TaskList`/`TaskGet`, `WebFetch` (optional SSRF policy via `createWebFetchTool`), `skill_view`, `skill_write`. Bring your own via `ToolRegistry`. Grep shells out to ripgrep (`rg`) so install it if you want the tool active; the SDK surfaces a structured error pointing to the install path when missing. Tool primitives are also importable from the `maestro-agent-sdk/tools` subpath when you don't need the rest of the runtime.
|
|
20
19
|
- **MCP** — built-in client pool (stdio + SSE) so any MCP server (`@modelcontextprotocol/sdk`) shows up as tools.
|
|
21
20
|
- **Skills** — per-workspace `.skills/<skillKey>/<name>/skill.md` packages with FTS-style indexing, on-demand body load (`skill_view`), and agent-autonomous authoring (`skill_write`).
|
|
22
21
|
- **Memory** — automatic context compression (summarization + pruning) when the token budget is hit. Reuses the agent's own model for compaction — no separate model knob.
|
|
@@ -101,265 +100,17 @@ for await (const event of runConversation(agent, "Summarize today's news.")) {
|
|
|
101
100
|
}
|
|
102
101
|
```
|
|
103
102
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
import { ToolRegistry, createReadTool } from "maestro-agent-sdk";
|
|
108
|
-
|
|
109
|
-
const tools = new ToolRegistry();
|
|
110
|
-
// Read auto-detects images (PNG/JPG/WebP/GIF → native vision block) and PDFs
|
|
111
|
-
// (text-extracted via pdfjs-dist, page-paginated by offset/limit).
|
|
112
|
-
tools.register(createReadTool());
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Background bash (v0.1.18+ / v0.1.19+ one-knob)
|
|
116
|
-
|
|
117
|
-
**v0.1.19 (recommended — host uses `maestroProvider`):**
|
|
118
|
-
|
|
119
|
-
```ts
|
|
120
|
-
import { maestroProvider } from "maestro-agent-sdk";
|
|
121
|
-
|
|
122
|
-
for await (const event of maestroProvider({
|
|
123
|
-
agent: "maestro",
|
|
124
|
-
prompt: "Start the dev server and tail it for errors",
|
|
125
|
-
cwd: "/repo",
|
|
126
|
-
systemPrompt: "...",
|
|
127
|
-
abortController: new AbortController(),
|
|
128
|
-
enableBackgroundBash: true, // ← single knob
|
|
129
|
-
})) {
|
|
130
|
-
// Bash(run_in_background:true) / BashOutput / KillBash all available.
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Cascade-kill on `abortController.abort()` is wired automatically.
|
|
135
|
-
|
|
136
|
-
**v0.1.18 (host builds its own ToolRegistry):**
|
|
137
|
-
|
|
138
|
-
```ts
|
|
139
|
-
import {
|
|
140
|
-
ToolRegistry,
|
|
141
|
-
createBashTool,
|
|
142
|
-
createBackgroundBashRegistry,
|
|
143
|
-
createBashOutputTool,
|
|
144
|
-
createKillBashTool,
|
|
145
|
-
} from "maestro-agent-sdk";
|
|
146
|
-
|
|
147
|
-
const ac = new AbortController();
|
|
148
|
-
// One registry handle wires the three tools together — bash_id from
|
|
149
|
-
// one plugs directly into the others. abortSignal cascade-kills every
|
|
150
|
-
// still-running process when the loop aborts.
|
|
151
|
-
const bgRegistry = createBackgroundBashRegistry({ abortSignal: ac.signal });
|
|
152
|
-
|
|
153
|
-
const tools = new ToolRegistry();
|
|
154
|
-
tools.register(createBashTool({ signal: ac.signal, background: bgRegistry }));
|
|
155
|
-
tools.register(createBashOutputTool(bgRegistry));
|
|
156
|
-
tools.register(createKillBashTool(bgRegistry));
|
|
157
|
-
// Now the model can run `Bash(run_in_background:true, command:"npm run dev")`,
|
|
158
|
-
// poll via `BashOutput(bash_id)`, and stop via `KillBash(bash_id)`.
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### Session fork at message N (v0.1.18+)
|
|
162
|
-
|
|
163
|
-
```ts
|
|
164
|
-
import { forkSessionAt } from "maestro-agent-sdk";
|
|
165
|
-
|
|
166
|
-
// "Branch session A at turn 12 and try a different question."
|
|
167
|
-
const { sessionId: forkId } = forkSessionAt({
|
|
168
|
-
parentSessionId: "a1b2c3d4-...",
|
|
169
|
-
messageIndex: 12, // copy first 12 turns
|
|
170
|
-
metadata: { reason: "exploring alt path" },
|
|
171
|
-
});
|
|
172
|
-
// forkId is a brand-new sessionId. `maestroProvider.query({ sessionId: forkId, ... })`
|
|
173
|
-
// resumes from the forked prefix as if it were a fresh resume.
|
|
174
|
-
// The parent JSONL is untouched.
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
> **What happens on the wire.** Anthropic gets `tool_result.content` as an
|
|
178
|
-
> array of `text` + `image` blocks (`source.type: "base64"`); DeepSeek gets
|
|
179
|
-
> the same image as an OpenAI-style `image_url` content part with a
|
|
180
|
-
> `data:image/<type>;base64,<bytes>` URI. Hosts don't see any of this —
|
|
181
|
-
> the tool result UnifiedEvent carries a short text preview
|
|
182
|
-
> (`<image image/png 12345B>`) so existing render code keeps working.
|
|
183
|
-
>
|
|
184
|
-
> **Web search?** Not a builtin — search backends vary too much (Tavily,
|
|
185
|
-
> Brave, Serper, Anthropic-native `web_search_20250305`, …) and each has
|
|
186
|
-
> its own auth + result shape. Hosts wire whichever they want as a
|
|
187
|
-
> `ToolHandler` (or use Claude's server-side `web_search` via provider
|
|
188
|
-
> config). Keeping it out of the SDK avoids forcing every consumer to
|
|
189
|
-
> carry a search-API dep + key.
|
|
190
|
-
|
|
191
|
-
> **Effort scale (v0.1.16+).** `effort` controls two orthogonal knobs:
|
|
192
|
-
>
|
|
193
|
-
> 1. **Reasoning depth** — thinking budget on Anthropic (`thinking.budget_tokens`),
|
|
194
|
-
> `reasoning_effort` on DeepSeek.
|
|
195
|
-
> 2. **Working-mode persona** — a `## Working mode` block injected into the
|
|
196
|
-
> system prompt with imperative verbs the model conditions on from turn 1
|
|
197
|
-
> (e.g. `low` → "answer fast, one Read max", `max` → "exhaustive,
|
|
198
|
-
> enumerate failure modes"). Pure function of `effort`, prefix-cache stable.
|
|
199
|
-
>
|
|
200
|
-
> The **tool-iteration cap is no longer derived from effort** as of v0.1.16 —
|
|
201
|
-
> it's a single host-tunable default (`DEFAULT_MAX_ITERATIONS = 90`) that you
|
|
202
|
-
> override per call via `AgentQueryOptions.maxIterations`. The default
|
|
203
|
-
> matches v0.1.15's old `xhigh` cap (the "extended exploration" baseline)
|
|
204
|
-
> so existing callers that didn't pin a value see no behavior change. This
|
|
205
|
-
> lets a host mix and match: `effort: "low"` + `maxIterations: 90` (terse,
|
|
206
|
-
> but don't trip on a surprise sub-task), or `effort: "max"` +
|
|
207
|
-
> `maxIterations: 30` (think hard, but stay snappy).
|
|
208
|
-
>
|
|
209
|
-
> | effort | thinking budget (Anthropic) | DeepSeek `reasoning_effort` |
|
|
210
|
-
> |---------|----------------------------:|:---------------------------:|
|
|
211
|
-
> | `low` | 2 048 | `low` |
|
|
212
|
-
> | `medium`| 8 192 | `medium` |
|
|
213
|
-
> | `high` | 16 384 | `high` |
|
|
214
|
-
> | `xhigh` | 16 384 | `high` |
|
|
215
|
-
> | `max` | 32 768 | `max` |
|
|
216
|
-
>
|
|
217
|
-
> **`xhigh` shares `high`'s thinking ceiling** — the difference is persona,
|
|
218
|
-
> not budget. `xhigh` tells the model to use the same allowance more broadly
|
|
219
|
-
> (hold multiple hypotheses, survey, name edge cases). On sonnet-4-6 /
|
|
220
|
-
> haiku-4-5 the answer-quality return on thinking above ~16K dropped off
|
|
221
|
-
> sharply in practice, so the lever became persona instead of more tokens.
|
|
222
|
-
>
|
|
223
|
-
> **`max` is halved from v0.1.15's 65 536** — 64K thinking is rarely fully
|
|
224
|
-
> utilized in a single turn; the latency penalty was unrecouped. 32K is the
|
|
225
|
-
> ceiling for "really chew on this" without paying for headroom the model
|
|
226
|
-
> doesn't reach.
|
|
227
|
-
>
|
|
228
|
-
> DeepSeek's API ships four tiers; maestro's `xhigh` maps to DeepSeek `high`
|
|
229
|
-
> (not `max`) so that `max` stays reserved for the explicit "deepest
|
|
230
|
-
> reasoning" opt-in.
|
|
231
|
-
>
|
|
232
|
-
> **Turn-adaptive budget (v0.1.16).** The per-turn thinking budget the loop
|
|
233
|
-
> actually sends to the API is *not* constant — it's resolved through
|
|
234
|
-
> `thinkingBudgetForTurn(base, iter, maxIter)`:
|
|
235
|
-
>
|
|
236
|
-
> - **First turn** (`iter == 0`) — full base. Planning gets the full
|
|
237
|
-
> allowance because a careful first-turn plan saves tool calls later.
|
|
238
|
-
> - **Middle turns** — full base. Interleaved thinking between tool calls
|
|
239
|
-
> is what Anthropic's interleaved-thinking beta is for; cutting it
|
|
240
|
-
> mid-flow defeats the beta.
|
|
241
|
-
> - **Last 3 turns** (wrap-up zone) — `base / 4`, floored at 1024 (the
|
|
242
|
-
> Anthropic API minimum). The iteration reminder has already flipped to
|
|
243
|
-
> "finalize NOW"; spending another 16K thinking on a turn that mostly
|
|
244
|
-
> emits final text is pure latency waste.
|
|
245
|
-
>
|
|
246
|
-
> The model still sees a remaining-iteration count in the per-turn
|
|
247
|
-
> `<system-reminder>` so it can self-pace within the cap you set.
|
|
248
|
-
>
|
|
249
|
-
> **Wrap-up zone hard enforcement (v0.1.17).** In the same last-3-turn
|
|
250
|
-
> window the loop also sends `tools: []` on the wire. Anthropic's API
|
|
251
|
-
> can't emit a `tool_use` block when no tools are declared, so the next
|
|
252
|
-
> assistant turn is forced to pure text and the loop's natural-termination
|
|
253
|
-
> branch fires deterministically. The previous text-only signal ("[wrap-up
|
|
254
|
-
> zone] stop new tool calls") was ignorable — the model could still
|
|
255
|
-
> reach for a tool if it judged one worthwhile. Now the gate is real:
|
|
256
|
-
> three layers (thinking trim, tools disable, reminder overlay) all fire
|
|
257
|
-
> on the same boundary via the shared `isWrapUpZone(iter, maxIter)`
|
|
258
|
-
> helper. Tiny caps (`maxIter <= 3`) opt out — at that scale every turn
|
|
259
|
-
> is already a wrap-up turn and gating tools would defeat the cap's
|
|
260
|
-
> purpose.
|
|
261
|
-
>
|
|
262
|
-
> **Multimodal Read + stop-reason fan-out + fork + bg bash (v0.1.18).**
|
|
263
|
-
> Four additions land together:
|
|
264
|
-
>
|
|
265
|
-
> 1. **Multimodal Read.** `.png/.jpg/.webp/.gif` files return a
|
|
266
|
-
> `MaestroToolResultBlock[]` containing a text bookend + an `image`
|
|
267
|
-
> content block; PDFs text-extract via `pdfjs-dist` and return
|
|
268
|
-
> line-numbered text per page. `ToolHandler.execute` now returns
|
|
269
|
-
> `string | MaestroToolResultBlock[]` (non-breaking: every existing
|
|
270
|
-
> tool still returns a string). Each provider adapter serializes per
|
|
271
|
-
> its native wire shape — Anthropic uses `image.source: { type: "base64",
|
|
272
|
-
> media_type, data }`, DeepSeek wraps as an OpenAI `image_url` with
|
|
273
|
-
> `data:<mime>;base64,<bytes>` URI.
|
|
274
|
-
> 2. **Stop-reason fan-out.** `pause_turn` now continues the loop with
|
|
275
|
-
> the same `messages` array (no new user turn), matching Anthropic's
|
|
276
|
-
> long-output contract; `refusal` propagates through `result.stopReason`
|
|
277
|
-
> as a distinct terminal so hosts can branch on safety-policy declines
|
|
278
|
-
> without confusing them with `end_turn`. Both bump the iteration
|
|
279
|
-
> counter so pathological runs still hit the `maxIterations` ceiling.
|
|
280
|
-
> 3. **`forkSessionAt`.** Claude-Code-style message-N branching for
|
|
281
|
-
> `~/.maestro/sessions/<sessionId>.jsonl`. Given a parent session +
|
|
282
|
-
> message index, writes a new JSONL with `{parentSessionId, forkedAtMessageIndex}`
|
|
283
|
-
> in its `_meta` header. Parent JSONL is left untouched. The slice
|
|
284
|
-
> is run through `trimToSafePrefix` so an orphan `tool_use` at the
|
|
285
|
-
> cut point can't 400 the next API call. Lets a host UI render
|
|
286
|
-
> branch trees ("session B is a fork of A at turn 12") and lets the
|
|
287
|
-
> model retry an earlier turn without polluting the original history.
|
|
288
|
-
> 4. **Background bash (`run_in_background:true` + `BashOutput` + `KillBash`).**
|
|
289
|
-
> Same triad Claude Code ships: start a long-running shell with
|
|
290
|
-
> `Bash(run_in_background:true)` → returns a `bash_id`; poll
|
|
291
|
-
> incremental output via `BashOutput(bash_id)`; selectively stop via
|
|
292
|
-
> `KillBash(bash_id)` (SIGTERM with a 5s SIGKILL escalation). When
|
|
293
|
-
> the parent agent loop's `AbortController` fires, every still-
|
|
294
|
-
> running background process registered under that loop is killed —
|
|
295
|
-
> no detached children left behind.
|
|
296
|
-
>
|
|
297
|
-
> **What's NOT in v0.1.18:** WebSearch tool. Search backends vary too
|
|
298
|
-
> much (Tavily/Brave/Serper/Anthropic server-side) and forcing one keeps
|
|
299
|
-
> the SDK opinion-heavy. Hosts wire their preferred search backend as a
|
|
300
|
-
> `ToolHandler` directly — clawgram, for example, exposes the
|
|
301
|
-
> Anthropic-native `web_search_20250305` via the provider call when the
|
|
302
|
-
> active provider is Claude.
|
|
303
|
-
>
|
|
304
|
-
> **`maxTokens` wire-through + model-aware default (v0.1.21).** Prior
|
|
305
|
-
> versions exposed `maxIterations` on `AgentQueryOptions` but not
|
|
306
|
-
> `maxTokens`, and `AIAgent` silently fell back to a flat 4096 on every
|
|
307
|
-
> call. Long outputs got truncated mid-string and Write/Edit tool calls
|
|
308
|
-
> generating large file bodies failed to parse their tool_input JSON
|
|
309
|
-
> (the truncation landed inside an unclosed string). Two fixes ship
|
|
310
|
-
> together:
|
|
311
|
-
>
|
|
312
|
-
> 1. **`AgentQueryOptions.maxTokens`** — caller surface for the
|
|
313
|
-
> per-call output ceiling. Wired through `provider.ts` → `AIAgent`
|
|
314
|
-
> → provider request body for both Anthropic and DeepSeek.
|
|
315
|
-
> 2. **Model-catalog default** — when the caller omits `maxTokens`,
|
|
316
|
-
> `AIAgent` resolves the default through
|
|
317
|
-
> `getNativeMaxOutputTokens(model)`: Sonnet 4.6 → 64K, Opus 4.7 →
|
|
318
|
-
> 128K, Haiku 4.5 → 64K, DeepSeek V4-Pro → 64K, V4-Flash → 32K,
|
|
319
|
-
> unknown model → 32K. Claude entries match Anthropic's native cap
|
|
320
|
-
> (same behavior as `@anthropic-ai/claude-agent-sdk`); DeepSeek
|
|
321
|
-
> entries are conservative because the V4 native ceiling (384K)
|
|
322
|
-
> would let one runaway turn rack up cost / wall time before the
|
|
323
|
-
> iteration cap notices — Pro is pinned to 64K so it lines up with
|
|
324
|
-
> the Claude Sonnet/Haiku reference point (a topic switching
|
|
325
|
-
> providers sees the same default ceiling), Flash sits one tier
|
|
326
|
-
> lower at 32K because the latency-tier user intent is "snappy
|
|
327
|
-
> first answer, escalate to Pro if you need length". Callers
|
|
328
|
-
> wanting the full 384K still get it via the explicit `maxTokens`
|
|
329
|
-
> override.
|
|
330
|
-
>
|
|
331
|
-
> Migration: zero-config callers see a higher implicit ceiling
|
|
332
|
-
> (4096 → 16K-128K depending on model). Cost per call only goes up
|
|
333
|
-
> on responses that previously truncated at 4K — those are the cases
|
|
334
|
-
> the fix targets. Callers that want the old behavior can pin
|
|
335
|
-
> `maxTokens: 4096` explicitly.
|
|
336
|
-
>
|
|
337
|
-
> **ToolSearch + MCP auto-defer (v0.1.22).** Claude-Code-style two-tier
|
|
338
|
-
> tool surface: built-in tools (Read/Write/Edit/Bash/Glob/Grep/Task/skills)
|
|
339
|
-
> always ride the wire; MCP tools register as **deferred** when
|
|
340
|
-
> `AgentQueryOptions.enableToolSearch` is set, and their schemas stay off
|
|
341
|
-
> the wire until the model activates them. The system-reminder grows a
|
|
342
|
-
> compact `name → 80-char summary` catalog of still-deferred tools; the
|
|
343
|
-
> model promotes the ones it needs by calling
|
|
344
|
-
> `ToolSearch("select:Name1,Name2")` (exact-name) or
|
|
345
|
-
> `ToolSearch("keyword")` (fuzzy match against name + description).
|
|
346
|
-
> Activated tools become callable from the next turn, and the active set
|
|
347
|
-
> persists across resume via the rollout `_meta` header — a multi-turn
|
|
348
|
-
> conversation doesn't re-promote the same tools every resume.
|
|
349
|
-
>
|
|
350
|
-
> Token economics: a topic with 50 deferred MCP tools spends ~1.5K
|
|
351
|
-
> tokens/turn on the catalog vs ~25K tokens/turn on full schemas — order-
|
|
352
|
-
> of-magnitude savings. The trade is one extra turn the first time a
|
|
353
|
-
> deferred tool is needed (the `ToolSearch` call itself), which is
|
|
354
|
-
> usually worth it on long sessions with large MCP setups. Pre-v0.1.22
|
|
355
|
-
> callers opt out by leaving `enableToolSearch` unset (default false) —
|
|
356
|
-
> behavior is byte-identical to v0.1.21.
|
|
103
|
+
> **Effort scale.** `effort` drives both the thinking budget _and_ the
|
|
104
|
+
> tool-iteration cap. The model also sees its remaining-iteration count in a
|
|
105
|
+
> `<system-reminder>` block every turn so it can self-pace. Knobs:
|
|
357
106
|
>
|
|
358
|
-
>
|
|
359
|
-
>
|
|
360
|
-
>
|
|
361
|
-
>
|
|
362
|
-
>
|
|
107
|
+
> | effort | thinking budget | iteration cap |
|
|
108
|
+
> |---------|----------------:|--------------:|
|
|
109
|
+
> | `low` | 2 048 | 5 |
|
|
110
|
+
> | `medium`| 8 192 | 20 |
|
|
111
|
+
> | `high` | 16 384 | 50 |
|
|
112
|
+
> | `xhigh` | 32 768 | 90 |
|
|
113
|
+
> | `max` | 65 536 | 200 |
|
|
363
114
|
|
|
364
115
|
More runnable scripts live under [`examples/`](./examples) — Anthropic, DeepSeek,
|
|
365
116
|
a custom-tool walkthrough, and a `skill_write` demo.
|
|
@@ -371,10 +122,6 @@ Per-call options on `AgentQueryOptions`:
|
|
|
371
122
|
| Option | Required | Purpose |
|
|
372
123
|
|---|---|---|
|
|
373
124
|
| `cwd` | ✓ | Workspace root. Drives `.skills/` location, rollout `_meta`, and the `mkdir` invariant. |
|
|
374
|
-
| `effort` | — | Reasoning depth + working-mode persona (`low`/`medium`/`high`/`xhigh`/`max`). See the effort table above. |
|
|
375
|
-
| `maxIterations` | — | Tool-iteration cap. Omit for `DEFAULT_MAX_ITERATIONS = 90`. Decoupled from `effort` as of v0.1.16 — controls turn budget, not reasoning depth. |
|
|
376
|
-
| `maxTokens` | — | Per-call `max_tokens` ceiling on assistant output. Omit for the model-catalog default (`getNativeMaxOutputTokens`): sonnet=64K, opus=128K, deepseek-pro=64K, deepseek-flash=32K, unknown=32K. v0.1.21+. |
|
|
377
|
-
| `enableToolSearch` | — | Claude-Code-style deferred tool catalog. When `true`, every MCP tool registers as deferred — schemas stay off the wire until the model promotes them via `ToolSearch("select:Name1,Name2")` or `ToolSearch("keyword")`. Active set persists across resume. Built-ins are never deferred. v0.1.22+. |
|
|
378
125
|
| `skillKey` | — | Named skill profile within `<cwd>/.skills/`. Omit for `default`. |
|
|
379
126
|
| `allowedSkills` | — | Per-call name whitelist applied before curation. |
|
|
380
127
|
| `sessionMetadata` | — | Opaque host bag round-tripped via the rollout `_meta` header. |
|
package/dist/core/agent.d.ts
CHANGED
|
@@ -16,7 +16,9 @@ export interface AIAgentConfig {
|
|
|
16
16
|
model: string;
|
|
17
17
|
/** System prompt — usually composed by the host before each query. */
|
|
18
18
|
systemPrompt: string;
|
|
19
|
-
/** Hard cap on tool-calling iterations.
|
|
19
|
+
/** Hard cap on tool-calling iterations. Omit for unbounded (the loop
|
|
20
|
+
* runs until `end_turn` / abort). Set a finite number when the host
|
|
21
|
+
* needs to bound turn budget. */
|
|
20
22
|
maxIterations?: number;
|
|
21
23
|
/**
|
|
22
24
|
* Per-API-call max output tokens.
|
package/dist/core/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpE;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpE;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB;;sCAEkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACnE,iEAAiE;IACjE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oFAAoF;IACpF,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,OAAO;IAClB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CACvB,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC,CAC9E,GAAG;QACF,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,iBAAiB,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;QACnE,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,CAAC;gBAEU,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa;CAyB3E"}
|
package/dist/core/agent.js
CHANGED
|
@@ -9,7 +9,11 @@ export class AIAgent {
|
|
|
9
9
|
this.config = {
|
|
10
10
|
model: config.model,
|
|
11
11
|
systemPrompt: config.systemPrompt,
|
|
12
|
-
|
|
12
|
+
// v0.1.26+: default is unbounded so the loop runs until the model
|
|
13
|
+
// ends the turn or the host aborts. Callers that need a finite cap
|
|
14
|
+
// pin one via `AIAgentConfig.maxIterations` (mirrored to
|
|
15
|
+
// `AgentQueryOptions.maxIterations` in the provider layer).
|
|
16
|
+
maxIterations: config.maxIterations ?? Number.POSITIVE_INFINITY,
|
|
13
17
|
// v0.1.21+: model-aware default replaces the flat 4096 fallback. See
|
|
14
18
|
// `getNativeMaxOutputTokens` for the per-model catalog and the
|
|
15
19
|
// `AIAgentConfig.maxTokens` docstring for the rationale.
|
package/dist/core/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAmFtD,MAAM,OAAO,OAAO;IACT,QAAQ,CAAW;IACnB,KAAK,CAAe;IACpB,MAAM,CASb;IAEF,YAAY,QAAkB,EAAE,KAAmB,EAAE,MAAqB;QACxE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG;YACZ,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,kEAAkE;YAClE,mEAAmE;YACnE,yDAAyD;YACzD,4DAA4D;YAC5D,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB;YAC/D,qEAAqE;YACrE,+DAA+D;YAC/D,yDAAyD;YACzD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC;YACrE,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC;gBACpD,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE;gBAC3C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -38,7 +38,6 @@ export { type BackgroundBashRegistry, createBackgroundBashRegistry, createBashOu
|
|
|
38
38
|
export { createEditTool } from "./tools/builtin/edit.js";
|
|
39
39
|
export { compileGlob, globTool } from "./tools/builtin/glob.js";
|
|
40
40
|
export { grepTool } from "./tools/builtin/grep.js";
|
|
41
|
-
export { createMultiEditTool } from "./tools/builtin/multi_edit.js";
|
|
42
41
|
export { createReadTool } from "./tools/builtin/read.js";
|
|
43
42
|
export { createSkillViewTool } from "./tools/builtin/skill_view.js";
|
|
44
43
|
export { createSkillWriteTool } from "./tools/builtin/skill_write.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -42,7 +42,6 @@ export { createBackgroundBashRegistry, createBashOutputTool, createKillBashTool,
|
|
|
42
42
|
export { createEditTool } from "./tools/builtin/edit.js";
|
|
43
43
|
export { compileGlob, globTool } from "./tools/builtin/glob.js";
|
|
44
44
|
export { grepTool } from "./tools/builtin/grep.js";
|
|
45
|
-
export { createMultiEditTool } from "./tools/builtin/multi_edit.js";
|
|
46
45
|
export { createReadTool } from "./tools/builtin/read.js";
|
|
47
46
|
export { createSkillViewTool } from "./tools/builtin/skill_view.js";
|
|
48
47
|
export { createSkillWriteTool } from "./tools/builtin/skill_write.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAA+B,CAAC;AAUzE,gFAAgF;AAChF,OAAO,EAAE,OAAO,EAAsB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,gFAAgF;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/D,gFAAgF;AAChF,OAAO,EAA2B,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAuC,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,gFAAgF;AAChF,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,oBAAoB,EAGpB,aAAa,EACb,sBAAsB,EAEtB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAmB,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AACzE,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAmC,MAAM,eAAe,CAAC;AAE7F,OAAO,EAA2B,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,gFAAgF;AAChF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAEL,4BAA4B,EAC5B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool-cache.d.ts","sourceRoot":"","sources":["../../src/mcp/pool-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAI3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,QAAgE,CAAC;AAElG;uEACuE;AACvE,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;+CAC2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;0EAC0E;AAC1E,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,KAAK,gBAAgB,CAAC;AAGpF;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAW3D;AAaD;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"pool-cache.d.ts","sourceRoot":"","sources":["../../src/mcp/pool-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAI3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,QAAgE,CAAC;AAElG;uEACuE;AACvE,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;+CAC2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;0EAC0E;AAC1E,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,KAAK,gBAAgB,CAAC;AAGpF;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAW3D;AAaD;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAkD3B;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAc/D;AA2BD,kDAAkD;AAClD,wBAAsB,SAAS,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CASzE;AAeD,sDAAsD;AACtD,wBAAgB,WAAW,IAAI,IAAI,CAKlC;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9D;AAYD;iDACiD;AACjD,wBAAgB,eAAe,IAAI,IAAI,CAKtC;AAED;sEACsE;AACtE,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAEvE;AAED,kCAAkC;AAClC,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,CACxB,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,oBAAoB,GACzB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAG/C"}
|
package/dist/mcp/pool-cache.js
CHANGED
|
@@ -96,9 +96,15 @@ export async function getOrStartClient(ctx, serverName, spec) {
|
|
|
96
96
|
await client.start();
|
|
97
97
|
// Race check: a concurrent acquire of the same key could have raced ahead
|
|
98
98
|
// while we were in `await client.start()`. If so, drop ours and use theirs.
|
|
99
|
+
// Swallowing a `close()` failure here used to be silent, but if it fails
|
|
100
|
+
// the just-spawned MCP subprocess leaks — surface it at warn so a leak
|
|
101
|
+
// pattern is visible in logs without escalating to an error that callers
|
|
102
|
+
// would have to handle (the race winner is already returned successfully).
|
|
99
103
|
const racer = cache.get(key);
|
|
100
104
|
if (racer) {
|
|
101
|
-
await client.close().catch(() => {
|
|
105
|
+
await client.close().catch((err) => {
|
|
106
|
+
logger.warn({ err, serverName, key }, "mcp pool-cache: race-win client.close() failed — subprocess may leak");
|
|
107
|
+
});
|
|
102
108
|
racer.refcount++;
|
|
103
109
|
racer.lastUsed = Date.now();
|
|
104
110
|
return racer.client;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool-cache.js","sourceRoot":"","sources":["../../src/mcp/pool-cache.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pool-cache.js","sourceRoot":"","sources":["../../src/mcp/pool-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -32,20 +32,25 @@ import type { AgentQueryOptions, UnifiedEvent } from "./types.js";
|
|
|
32
32
|
*/
|
|
33
33
|
/**
|
|
34
34
|
* Default tool-iteration cap when the caller doesn't supply
|
|
35
|
-
* `opts.maxIterations`.
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
35
|
+
* `opts.maxIterations`. **No cap** is the default as of v0.1.26: the SDK
|
|
36
|
+
* runs until the model emits `end_turn`, the host aborts via
|
|
37
|
+
* `AgentQueryOptions.abortSignal`, or a hard wall (token budget, network
|
|
38
|
+
* error) trips. Use `AgentQueryOptions.maxIterations` per call when a
|
|
39
|
+
* host genuinely needs a turn ceiling — interactive surfaces with a
|
|
40
|
+
* tight latency contract, sub-agents with a sub-task slice, etc.
|
|
41
|
+
*
|
|
42
|
+
* Earlier versions shipped a fixed turn default. v0.1.26 lifted the cap
|
|
43
|
+
* because (a) the in-loop tone line ("finalize NOW", "pace yourself")
|
|
44
|
+
* was nudging models to stop early on long, legitimate multi-file
|
|
45
|
+
* tasks, and (b) hosts that need a ceiling can supply one cheaply —
|
|
46
|
+
* keeping the SDK default unlimited is the less surprising baseline.
|
|
47
|
+
* When `maxIterations` is finite the v0.1.17 wrap-up zone (last 3
|
|
48
|
+
* turns) still fires; when unlimited the wrap-up gates and the
|
|
49
|
+
* iteration-remaining reminder line are all skipped (see
|
|
50
|
+
* `buildIterReminder` below — `isFinite(maxIter)` guards the iteration
|
|
51
|
+
* line so the model isn't told "1/Infinity remaining — finalize NOW").
|
|
47
52
|
*/
|
|
48
|
-
export declare const DEFAULT_MAX_ITERATIONS
|
|
53
|
+
export declare const DEFAULT_MAX_ITERATIONS: number;
|
|
49
54
|
export declare function maestroProvider(opts: AgentQueryOptions): AsyncGenerator<UnifiedEvent>;
|
|
50
55
|
/**
|
|
51
56
|
* Compose the "Tool iterations remaining: N/M — <tone>" line that rides
|
|
@@ -54,12 +59,10 @@ export declare function maestroProvider(opts: AgentQueryOptions): AsyncGenerator
|
|
|
54
59
|
* Tone shifts with PROPORTION of `maxIter` remaining (v0.1.16+), not an
|
|
55
60
|
* absolute count. The previous v0.1.15 version keyed off raw `remaining`
|
|
56
61
|
* (>= 10 → "plenty of room", < 2 → "finalize NOW"), which made sense
|
|
57
|
-
* when the cap was effort-derived
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* one correctly routes to "start wrapping up" — the tone tracks the
|
|
62
|
-
* budget consistently across cap sizes now.
|
|
62
|
+
* when the cap was effort-derived and small but broke once v0.1.16
|
|
63
|
+
* unified the cap on a host-tunable budget. The proportional logic now
|
|
64
|
+
* tracks the budget consistently regardless of whether the host pins a
|
|
65
|
+
* 30-turn ceiling or a 200-turn one.
|
|
63
66
|
*
|
|
64
67
|
* Percentage thresholds (calibrated for both small and large caps):
|
|
65
68
|
* - >= 50% → plenty of room. (no urgency, explore freely)
|
|
@@ -69,9 +72,12 @@ export declare function maestroProvider(opts: AgentQueryOptions): AsyncGenerator
|
|
|
69
72
|
*
|
|
70
73
|
* Each tier scales with the host's chosen budget: at `maxIter = 30`
|
|
71
74
|
* (chat-grade) the wrap-up tier kicks in around 6 turns left; at
|
|
72
|
-
* `maxIter =
|
|
73
|
-
*
|
|
74
|
-
* regardless of cap, which matches Claude Code's pacing intuition.
|
|
75
|
+
* `maxIter = 100` it kicks in around 20 left; at `maxIter = 200`
|
|
76
|
+
* (deep work) around 40. The model gets the same proportional cue
|
|
77
|
+
* regardless of cap, which matches Claude Code's pacing intuition. This
|
|
78
|
+
* whole pacing path is bypassed when `maxIter` is unbounded — the
|
|
79
|
+
* v0.1.26 default — so the line never reaches the model unless the host
|
|
80
|
+
* supplies a finite cap.
|
|
75
81
|
*
|
|
76
82
|
* Edge case — `max <= 0`: defensive guard for callers passing nonsense.
|
|
77
83
|
* Falls back to absolute thresholds (the v0.1.15 behavior) so the line
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAsBrD,OAAO,KAAK,EAAE,QAAQ,EAAyC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAsBrD,OAAO,KAAK,EAAE,QAAQ,EAAyC,MAAM,kBAAkB,CAAC;AAyCxF,OAAO,KAAK,EAAE,iBAAiB,EAAc,YAAY,EAAE,MAAM,SAAS,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,sBAAsB,QAA2B,CAAC;AAE/D,wBAAuB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,CAAC,YAAY,CAAC,CA0jB5F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAa1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI/E;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,EAAG,SAAkB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5D,MAAM,EAAE,CAAC,EAAE,EACX,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,CAAC,EAAE,CAGL;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,CAKhE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIjG;AAED;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,YAAY,EAAE,CAAC"}
|