zidane 5.8.4 → 5.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +3 -1
  2. package/dist/{agent-CL4nT5Ti.d.ts → agent-CHemm-6O.d.ts} +45 -14
  3. package/dist/agent-CHemm-6O.d.ts.map +1 -0
  4. package/dist/chat/pure.d.ts +3 -3
  5. package/dist/chat.d.ts +6 -6
  6. package/dist/chat.js +2 -2
  7. package/dist/{headless-AnwtKahq.js → headless-CZuZ_565.js} +3 -3
  8. package/dist/{headless-AnwtKahq.js.map → headless-CZuZ_565.js.map} +1 -1
  9. package/dist/headless.d.ts +1 -1
  10. package/dist/headless.js +1 -1
  11. package/dist/{index-BDMVtgHD.d.ts → index-DjIJ2qWV.d.ts} +2 -2
  12. package/dist/{index-BDMVtgHD.d.ts.map → index-DjIJ2qWV.d.ts.map} +1 -1
  13. package/dist/{index-DtLfTUXt.d.ts → index-OfPNcoad.d.ts} +2 -2
  14. package/dist/{index-DtLfTUXt.d.ts.map → index-OfPNcoad.d.ts.map} +1 -1
  15. package/dist/index.d.ts +3 -3
  16. package/dist/index.js +6 -6
  17. package/dist/{login-9b_Q2DVg.js → login-BouPxVYR.js} +3 -3
  18. package/dist/{login-9b_Q2DVg.js.map → login-BouPxVYR.js.map} +1 -1
  19. package/dist/{mcp-Bp4tWsdM.js → mcp-adAkHM-0.js} +4 -1
  20. package/dist/mcp-adAkHM-0.js.map +1 -0
  21. package/dist/mcp.d.ts +1 -1
  22. package/dist/mcp.js +1 -1
  23. package/dist/{presets-J9EyUhvT.js → presets-Cugb5FrA.js} +2 -2
  24. package/dist/{presets-J9EyUhvT.js.map → presets-Cugb5FrA.js.map} +1 -1
  25. package/dist/presets.d.ts +2 -2
  26. package/dist/presets.js +1 -1
  27. package/dist/{providers-ByITfqRA.js → providers-CHV6e9Ik.js} +2 -2
  28. package/dist/{providers-ByITfqRA.js.map → providers-CHV6e9Ik.js.map} +1 -1
  29. package/dist/providers.d.ts +1 -1
  30. package/dist/providers.js +1 -1
  31. package/dist/restate.d.ts +67 -4
  32. package/dist/restate.d.ts.map +1 -1
  33. package/dist/restate.js +226 -25
  34. package/dist/restate.js.map +1 -1
  35. package/dist/session/sqlite.d.ts +1 -1
  36. package/dist/session.d.ts +1 -1
  37. package/dist/skills.d.ts +2 -2
  38. package/dist/{tool-formatters-D-aWpu2N.d.ts → tool-formatters-pndTz5iT.d.ts} +2 -2
  39. package/dist/{tool-formatters-D-aWpu2N.d.ts.map → tool-formatters-pndTz5iT.d.ts.map} +1 -1
  40. package/dist/tools/fetch-url.d.ts +1 -1
  41. package/dist/tools/web-search.d.ts +1 -1
  42. package/dist/{tools-DCFiAUel.js → tools-CSmcSu_B.js} +403 -10
  43. package/dist/tools-CSmcSu_B.js.map +1 -0
  44. package/dist/tools.d.ts +2 -2
  45. package/dist/tools.js +1 -1
  46. package/dist/{transcript-anchors-DYsnGyel.d.ts → transcript-anchors-BROJfwC8.d.ts} +4 -4
  47. package/dist/{transcript-anchors-DYsnGyel.d.ts.map → transcript-anchors-BROJfwC8.d.ts.map} +1 -1
  48. package/dist/{transcript-anchors-D-X067Sc.js → transcript-anchors-Bncn747q.js} +5 -5
  49. package/dist/{transcript-anchors-D-X067Sc.js.map → transcript-anchors-Bncn747q.js.map} +1 -1
  50. package/dist/tui.d.ts +3 -3
  51. package/dist/tui.js +4 -4
  52. package/dist/{turn-operations-D-fypW6K.d.ts → turn-operations-BYnXjY80.d.ts} +3 -3
  53. package/dist/{turn-operations-D-fypW6K.d.ts.map → turn-operations-BYnXjY80.d.ts.map} +1 -1
  54. package/dist/types-BPw_i5vb.js.map +1 -1
  55. package/dist/types.d.ts +2 -2
  56. package/docs/RESTATE.md +75 -19
  57. package/docs/SKILL.md +2 -2
  58. package/package.json +6 -1
  59. package/dist/agent-CL4nT5Ti.d.ts.map +0 -1
  60. package/dist/mcp-Bp4tWsdM.js.map +0 -1
  61. package/dist/tools-DCFiAUel.js.map +0 -1
package/README.md CHANGED
@@ -129,6 +129,8 @@ bun start \
129
129
  --mcp '{"name":"fs","transport":"stdio","command":"npx","args":["-y","@modelcontextprotocol/server-filesystem","."]}'
130
130
  ```
131
131
 
132
+ `bun start --restate` runs the same start flow through a local Restate endpoint for durable-execution demos and fixture testing. It starts the service, probes readiness, registers the deployment, invokes `zidane-start-agent`, and exposes `run` / `status` / `history` handlers. See [docs/RESTATE.md](./docs/RESTATE.md) for production wiring and the advanced ReState flags.
133
+
132
134
  ## Providers
133
135
 
134
136
  All providers accept runtime credentials via params. Env vars are fallbacks.
@@ -805,7 +807,7 @@ Benchmark harnesses live in [`benchmarks/`](./benchmarks). First integration: [T
805
807
  | [docs/SKILL.md](./docs/SKILL.md) | Authoritative reference for `createAgent` + hooks + tools + sessions + skills + MCP. Long-form. |
806
808
  | [docs/CHAT.md](./docs/CHAT.md) | `zidane/chat` — renderer-agnostic chat engine (auth, sessions, safe-mode, settings, theme). Consumed by the TUI and any future GUI. |
807
809
  | [docs/TUI.md](./docs/TUI.md) | `zidane/tui` — terminal shell built on `zidane/chat`. `runTui()`, screens, modals, keyboard, theming. |
808
- | [docs/RESTATE.md](./docs/RESTATE.md) | `zidane/restate` — optional durable-execution adapter (Restate). Journals LLM + tool calls for exactly-once semantics across crashes. |
810
+ | [docs/RESTATE.md](./docs/RESTATE.md) | `zidane/restate` — optional durable-execution adapter (Restate). Journals LLM + completed tool calls, with strict defaults and opt-in durable parallel tools. |
809
811
 
810
812
  ## License
811
813
 
@@ -449,15 +449,12 @@ type ThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'adaptive';
449
449
  * wall-clock progress.
450
450
  *
451
451
  * `now()` is allowed to return a `Promise<number>` so durable-execution
452
- * adapters can journal each timestamp (Restate's `ctx.date.now()` is
453
- * async because it routes through `ctx.run`). The loop awaits at every
454
- * callsite. `randomUUID()` stays synchronous because Restate's
455
- * `ctx.rand.uuidv4()` is deterministic-from-seed and doesn't need
456
- * journaling. The native default returns sync values for both.
452
+ * adapters can journal each timestamp. The loop awaits at every callsite.
453
+ * `randomUUID()` stays synchronous so adapters can provide replay-stable
454
+ * identifiers without introducing async metadata plumbing.
457
455
  *
458
- * Durable-execution adapters (Restate, Temporal, …) inject a journaled
459
- * variant Restate: `{ now: () => ctx.date.now(), randomUUID: () => ctx.rand.uuidv4() }` —
460
- * so replay regenerates byte-identical session metadata across attempts.
456
+ * Durable-execution adapters inject a journaled variant so replay
457
+ * regenerates byte-identical session metadata across attempts.
461
458
  *
462
459
  * Precedence: `AgentRunOptions.clock` > `AgentOptions.clock` >
463
460
  * {@link DEFAULT_AGENT_CLOCK}.
@@ -465,12 +462,11 @@ type ThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'adaptive';
465
462
  interface AgentClock {
466
463
  /**
467
464
  * Current wall-clock time in ms (epoch). May be async so journaled
468
- * implementations (Restate) can plumb through their durable timer.
465
+ * implementations can plumb through their durable timer.
469
466
  */
470
467
  now: () => number | Promise<number>;
471
468
  /**
472
- * RFC-4122 v4 UUID string. Always sync — Restate's `rand.uuidv4()`
473
- * is seeded from the invocation ID and replay-stable by construction.
469
+ * RFC-4122 v4 UUID string. Always sync.
474
470
  */
475
471
  randomUUID: () => string;
476
472
  }
@@ -849,6 +845,20 @@ interface AgentBehavior {
849
845
  * runs. Values `< 1` are clamped to `1`.
850
846
  */
851
847
  maxConcurrentTools?: number;
848
+ /**
849
+ * Optional per-turn tool batch scheduler. When unset, Zidane uses its
850
+ * native sliding-window scheduler. Durable-execution adapters can install
851
+ * a scheduler that preserves the same single-tool dispatch path while
852
+ * coordinating waits through their own replay-safe primitives.
853
+ */
854
+ toolBatchExecutor?: ToolBatchExecutor;
855
+ /**
856
+ * Tool errors matching this predicate are re-thrown instead of being
857
+ * converted into model-visible `Tool error: ...` results. Durable runtimes
858
+ * use this for control-flow errors such as terminal failures or
859
+ * suspension/attempt-ending signals that must escape the agent loop.
860
+ */
861
+ shouldRethrowToolError?: (error: unknown) => boolean;
852
862
  /**
853
863
  * Max agent loop iterations.
854
864
  *
@@ -1546,6 +1556,20 @@ interface AgentBehavior {
1546
1556
  */
1547
1557
  fetchUrlCacheTtlMs?: number;
1548
1558
  }
1559
+ interface ToolBatchExecutionContext {
1560
+ toolCalls: readonly ToolCall[];
1561
+ turnId: string;
1562
+ maxConcurrentTools: number;
1563
+ signal: AbortSignal;
1564
+ steeringQueue: readonly string[];
1565
+ isConcurrencySafe: (index: number) => boolean;
1566
+ execute: (index: number) => Promise<ToolResult>;
1567
+ canExecuteDurably: (index: number) => boolean;
1568
+ executeDurable: (indices: readonly number[], all: <T>(values: readonly Promise<T>[]) => Promise<readonly T[]>) => Promise<ToolResult[]>;
1569
+ interruptedResult: (index: number) => ToolResult;
1570
+ skippedResult: (index: number) => ToolResult;
1571
+ }
1572
+ type ToolBatchExecutor = (ctx: ToolBatchExecutionContext) => Promise<ToolResult[]>;
1549
1573
  /**
1550
1574
  * One block of a multimodal user prompt.
1551
1575
  *
@@ -3648,7 +3672,7 @@ interface ToolContext {
3648
3672
  * Time + UUID source resolved for the owning run. Tools that mint ids
3649
3673
  * or stamp timestamps that may land in persisted state should prefer
3650
3674
  * this over `Date.now()` / `crypto.randomUUID()` so durable-execution
3651
- * adapters (Restate, Temporal) get replay-stable values. Optional on
3675
+ * adapters can provide replay-stable values. Optional on
3652
3676
  * the type so hand-built contexts (tests, direct invocations) don't
3653
3677
  * have to synthesize one — callers may fall back to the native APIs.
3654
3678
  */
@@ -3675,6 +3699,13 @@ interface ToolDef {
3675
3699
  * companion-user-message fallback (OpenAI Chat Completions).
3676
3700
  */
3677
3701
  execute: (input: Record<string, unknown>, ctx: ToolContext) => Promise<string | ToolResultContent[]>;
3702
+ /**
3703
+ * Optional durable-execution body hook used by runtime adapters. It should
3704
+ * start the raw side effect and return the runtime's durable promise without
3705
+ * wrapping it in native async combinators. The agent loop still owns gate,
3706
+ * validation, hooks, transforms, cancellation metadata, and result shaping.
3707
+ */
3708
+ durableExecute?: (input: Record<string, unknown>, ctx: ToolContext) => Promise<string | ToolResultContent[]>;
3678
3709
  /**
3679
3710
  * Whether this tool is safe to dispatch in parallel with siblings inside
3680
3711
  * one assistant turn. The scheduler treats safe tools as
@@ -5292,5 +5323,5 @@ declare function createAgent({
5292
5323
  clock: agentClock
5293
5324
  }: AgentOptions): Agent;
5294
5325
  //#endregion
5295
- export { TurnInterruptionState as $, McpToolHookContext as $t, SkillResource as A, AgentProviderError as An, mapOAIFinishReason as At, RemoteStoreOptions as B, ContextBreakdownOptions as Bn, AnthropicParams as Bt, ReadStateMap as C, TurnFinishReason as Cn, sanitizeToolSpecs as Ct, resolveReadStateMap as D, AgentAbortedError as Dn, OpenAICompatHttpError as Dt, readStateKey as E, toolResultToText as En, OpenAICompatAuthHeader as Et, SessionData as F, ClassifiedErrorKind as Fn, local as Ft, createFileMapStore as G, ContextMcpGroup as Gn, AgentRunOptions as Gt, createMemoryStore as H, ContextCategoryId as Hn, applyAnthropicCacheBreakpoints as Ht, SessionRun as I, errorMessage as In, CursorParams as It, PairingRepair as J, buildContextBreakdown as Jn, CompactFunction as Jt, EnsureToolResultPairingOptions as K, ContextSnapshot as Kn, AgentStats as Kt, SessionStore as L, matchesContextExceeded as Ln, cursor as Lt, SkillsConfig as M, AgentToolPairingError as Mn, OpenAIParams as Mt, CreateSessionOptions as N, CONTEXT_EXCEEDED_MESSAGE_PATTERNS as Nn, openai as Nt, SkillConfig as O, AgentBudgetExceededError as On, OpenAICompatParams as Ot, Session as P, ClassifiedError as Pn, LocalParams as Pt, ToWireMessagesOptions as Q, McpServerConfig as Qt, createSession as R, toTypedError as Rn, CerebrasParams as Rt, ReadStateEntry as S, ToolResultTextContent as Sn, sanitizeToolSchema as St, hashContent as T, toolOutputByteLength as Tn, openrouter as Tt, FileMapAdapter as U, ContextExactCounts as Un, AgentBehavior as Ut, createRemoteStore as V, ContextCategory as Vn, anthropic as Vt, FileMapStoreOptions as W, ContextItem as Wn, AgentClock as Wt, SYNTHETIC_TOOL_RESULT_PLACEHOLDER as X, DedupHasher as Xt, PairingRepairMode as Y, DEFAULT_AGENT_CLOCK as Yt, TOOL_USE_INTERRUPTED_MARKER as Z, DedupToolConfig as Zt, normalizeMcpServers as _, ThinkingLevel as _n, ToolSpec as _t, createAgent as a, PromptTextPart as an, fromAnthropic as at, ToolDef as b, ToolResultContent as bn, SchemaSanitizeProfile as bt, DeactivationReason as c, RetryConfig as cn, toOpenAI as ct, createSkillActivationState as d, SessionEndStatus as dn, ProviderCapabilities as dt, McpToolSchema as en, autoDetectAndConvert as et, ConnectMcpServersOptions as f, SessionHookContext as fn, StreamCallbacks as ft, normalizeMcpBlocks as g, StreamHookContext as gn, ToolResult as gt, connectMcpServers as h, SpawnHookContext as hn, ToolCall as ht, AgentOptions as i, PromptPart as in, filterUnresolvedToolUses as it, SkillSource as j, AgentToolNotAllowedError as jn, openaiCompat as jt, SkillDiagnostic as k, AgentContextExceededError as kn, classifyOpenAICompatError as kt, SkillActivationState as l, RunHookMap as ln, toWireMessages as lt, attachStderrWarnPump as m, SessionTurn as mn, TokenCountPayload as mt, AgentHookMap as n, PromptDocumentPart as nn, ensureEndsWithUserMessage as nt, ActivationVia as o, RepeatGuardConfig as on, fromOpenAI as ot, McpConnection as p, SessionMessage as pn, StreamOptions as pt, ORPHANED_TOOL_RESULT_MARKER as q, ContextUsageSplit as qn, ChildRunStats as qt, AgentHooks as r, PromptImagePart as rn, ensureToolResultPairing as rt, ActiveSkill as s, RepeatGuardToolMatcher as sn, toAnthropic as st, Agent as t, OAuthRefreshHookContext as tn, detectTurnInterruption as tt, SkillActivationStateOptions as u, SessionContentBlock as un, Provider as ut, resultToString as v, ToolHookContext as vn, TurnResult as vt, getReadState as w, TurnUsage as wn, OpenRouterParams as wt, ToolMap as x, ToolResultImageContent as xn, SchemaSanitizeResult as xt, ToolContext as y, ToolOutcome as yn, SchemaSanitizeOptions as yt, loadSession as z, ContextBreakdown as zn, cerebras as zt };
5296
- //# sourceMappingURL=agent-CL4nT5Ti.d.ts.map
5326
+ export { TurnInterruptionState as $, McpToolHookContext as $t, SkillResource as A, AgentContextExceededError as An, mapOAIFinishReason as At, RemoteStoreOptions as B, ContextBreakdown as Bn, AnthropicParams as Bt, ReadStateMap as C, ToolResultTextContent as Cn, sanitizeToolSpecs as Ct, resolveReadStateMap as D, toolResultToText as Dn, OpenAICompatHttpError as Dt, readStateKey as E, toolOutputByteLength as En, OpenAICompatAuthHeader as Et, SessionData as F, ClassifiedError as Fn, local as Ft, createFileMapStore as G, ContextItem as Gn, AgentRunOptions as Gt, createMemoryStore as H, ContextCategory as Hn, applyAnthropicCacheBreakpoints as Ht, SessionRun as I, ClassifiedErrorKind as In, CursorParams as It, PairingRepair as J, ContextUsageSplit as Jn, CompactFunction as Jt, EnsureToolResultPairingOptions as K, ContextMcpGroup as Kn, AgentStats as Kt, SessionStore as L, errorMessage as Ln, cursor as Lt, SkillsConfig as M, AgentToolNotAllowedError as Mn, OpenAIParams as Mt, CreateSessionOptions as N, AgentToolPairingError as Nn, openai as Nt, SkillConfig as O, AgentAbortedError as On, OpenAICompatParams as Ot, Session as P, CONTEXT_EXCEEDED_MESSAGE_PATTERNS as Pn, LocalParams as Pt, ToWireMessagesOptions as Q, McpServerConfig as Qt, createSession as R, matchesContextExceeded as Rn, CerebrasParams as Rt, ReadStateEntry as S, ToolResultImageContent as Sn, sanitizeToolSchema as St, hashContent as T, TurnUsage as Tn, openrouter as Tt, FileMapAdapter as U, ContextCategoryId as Un, AgentBehavior as Ut, createRemoteStore as V, ContextBreakdownOptions as Vn, anthropic as Vt, FileMapStoreOptions as W, ContextExactCounts as Wn, AgentClock as Wt, SYNTHETIC_TOOL_RESULT_PLACEHOLDER as X, DedupHasher as Xt, PairingRepairMode as Y, buildContextBreakdown as Yn, DEFAULT_AGENT_CLOCK as Yt, TOOL_USE_INTERRUPTED_MARKER as Z, DedupToolConfig as Zt, normalizeMcpServers as _, ThinkingLevel as _n, ToolSpec as _t, createAgent as a, PromptTextPart as an, fromAnthropic as at, ToolDef as b, ToolOutcome as bn, SchemaSanitizeProfile as bt, DeactivationReason as c, RetryConfig as cn, toOpenAI as ct, createSkillActivationState as d, SessionEndStatus as dn, ProviderCapabilities as dt, McpToolSchema as en, autoDetectAndConvert as et, ConnectMcpServersOptions as f, SessionHookContext as fn, StreamCallbacks as ft, normalizeMcpBlocks as g, StreamHookContext as gn, ToolResult as gt, connectMcpServers as h, SpawnHookContext as hn, ToolCall as ht, AgentOptions as i, PromptPart as in, filterUnresolvedToolUses as it, SkillSource as j, AgentProviderError as jn, openaiCompat as jt, SkillDiagnostic as k, AgentBudgetExceededError as kn, classifyOpenAICompatError as kt, SkillActivationState as l, RunHookMap as ln, toWireMessages as lt, attachStderrWarnPump as m, SessionTurn as mn, TokenCountPayload as mt, AgentHookMap as n, PromptDocumentPart as nn, ensureEndsWithUserMessage as nt, ActivationVia as o, RepeatGuardConfig as on, fromOpenAI as ot, McpConnection as p, SessionMessage as pn, StreamOptions as pt, ORPHANED_TOOL_RESULT_MARKER as q, ContextSnapshot as qn, ChildRunStats as qt, AgentHooks as r, PromptImagePart as rn, ensureToolResultPairing as rt, ActiveSkill as s, RepeatGuardToolMatcher as sn, toAnthropic as st, Agent as t, OAuthRefreshHookContext as tn, detectTurnInterruption as tt, SkillActivationStateOptions as u, SessionContentBlock as un, Provider as ut, resultToString as v, ToolBatchExecutor as vn, TurnResult as vt, getReadState as w, TurnFinishReason as wn, OpenRouterParams as wt, ToolMap as x, ToolResultContent as xn, SchemaSanitizeResult as xt, ToolContext as y, ToolHookContext as yn, SchemaSanitizeOptions as yt, loadSession as z, toTypedError as zn, cerebras as zt };
5327
+ //# sourceMappingURL=agent-CHemm-6O.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-CHemm-6O.d.ts","names":[],"sources":["../src/chat/context-breakdown.ts","../src/errors.ts","../src/types.ts","../src/providers/oauth.ts","../src/providers/anthropic.ts","../src/providers/cerebras.ts","../src/providers/cursor.ts","../src/providers/local.ts","../src/providers/openai.ts","../src/providers/openai-compat.ts","../src/providers/openrouter.ts","../src/providers/schema-sanitize.ts","../src/providers/index.ts","../src/session/messages.ts","../src/session/file-map.ts","../src/session/memory.ts","../src/session/remote.ts","../src/session/index.ts","../src/skills/types.ts","../src/tools/read-state.ts","../src/tools/types.ts","../src/mcp/index.ts","../src/skills/activation.ts","../src/agent.ts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Bn as ContextBreakdownOptions, Gn as ContextMcpGroup, Hn as ContextCategoryId, Jn as buildContextBreakdown, Kn as ContextSnapshot, Un as ContextExactCounts, Vn as ContextCategory, Wn as ContextItem, qn as ContextUsageSplit, zn as ContextBreakdown } from "../agent-CL4nT5Ti.js";
2
- import { B as collectReferences, F as CompletionContext, H as mergeReferences, I as CompletionItem, L as CompletionProvider, P as ActiveTrigger, R as CompletionReference, V as findActiveTrigger, _ as isEditErrorResult, a as formatToolCall, b as selectableTurnIds, c as splitPromptSegments, g as EDIT_TOOL_NAMES, i as displayNameFor, n as ToolDisplayMeta, o as PromptSegment, r as ToolFormatLine, s as PromptSegmentRef, t as TOOL_DISPLAY, v as isTurnHighlighted, x as turnSelectionOwnership, y as isVisible, z as applyInsert } from "../tool-formatters-D-aWpu2N.js";
3
- import { $ as uniqueFilesFromReferences, A as buildUnifiedDiff, C as EditSummary, D as PreviewResult, E as InlineSegment, F as previewEditPayload, I as splitLines, J as SKILLS_TRIGGER, L as summarizeEditPayload, M as computeLineDiff, N as extractEditPayload, O as applyEditPayload, P as filetypeFromPath, Q as createFilesCompletionProvider, R as tokenize, S as EditHunkSummary, T as InlineDiff, X as uniqueSkillNamesFromReferences, Y as createSkillsCompletionProvider, Z as FILES_TRIGGER, _ as formatTaskSummary, a as finalizeStreamingMarkdown, b as DiffLine, c as CatalogEntry, d as indexOfEntry, f as ageString, g as formatTaskStatus, h as formatDuration, i as turnAsText, it as buildLinearRamp, j as computeInlineDiff, k as buildContextualDiff, l as buildModelCatalog, m as fmtTokens, n as deleteTurnSafely, o as finalizeStreamingMarkdownForOwner, p as compactPath, q as summarizeOutcomes, r as truncateTurnsAt, rt as blendHsl, s as turnContextSize, t as countNeighbors, u as filterModelCatalog, v as previewLine, w as HunkResolution, x as DiffOp, y as shortId } from "../turn-operations-D-fypW6K.js";
1
+ import { Bn as ContextBreakdown, Gn as ContextItem, Hn as ContextCategory, Jn as ContextUsageSplit, Kn as ContextMcpGroup, Un as ContextCategoryId, Vn as ContextBreakdownOptions, Wn as ContextExactCounts, Yn as buildContextBreakdown, qn as ContextSnapshot } from "../agent-CHemm-6O.js";
2
+ import { B as collectReferences, F as CompletionContext, H as mergeReferences, I as CompletionItem, L as CompletionProvider, P as ActiveTrigger, R as CompletionReference, V as findActiveTrigger, _ as isEditErrorResult, a as formatToolCall, b as selectableTurnIds, c as splitPromptSegments, g as EDIT_TOOL_NAMES, i as displayNameFor, n as ToolDisplayMeta, o as PromptSegment, r as ToolFormatLine, s as PromptSegmentRef, t as TOOL_DISPLAY, v as isTurnHighlighted, x as turnSelectionOwnership, y as isVisible, z as applyInsert } from "../tool-formatters-pndTz5iT.js";
3
+ import { $ as uniqueFilesFromReferences, A as buildUnifiedDiff, C as EditSummary, D as PreviewResult, E as InlineSegment, F as previewEditPayload, I as splitLines, J as SKILLS_TRIGGER, L as summarizeEditPayload, M as computeLineDiff, N as extractEditPayload, O as applyEditPayload, P as filetypeFromPath, Q as createFilesCompletionProvider, R as tokenize, S as EditHunkSummary, T as InlineDiff, X as uniqueSkillNamesFromReferences, Y as createSkillsCompletionProvider, Z as FILES_TRIGGER, _ as formatTaskSummary, a as finalizeStreamingMarkdown, b as DiffLine, c as CatalogEntry, d as indexOfEntry, f as ageString, g as formatTaskStatus, h as formatDuration, i as turnAsText, it as buildLinearRamp, j as computeInlineDiff, k as buildContextualDiff, l as buildModelCatalog, m as fmtTokens, n as deleteTurnSafely, o as finalizeStreamingMarkdownForOwner, p as compactPath, q as summarizeOutcomes, r as truncateTurnsAt, rt as blendHsl, s as turnContextSize, t as countNeighbors, u as filterModelCatalog, v as previewLine, w as HunkResolution, x as DiffOp, y as shortId } from "../turn-operations-BYnXjY80.js";
4
4
  export { type ActiveTrigger, type CatalogEntry, type CompletionContext, type CompletionItem, type CompletionProvider, type CompletionReference, type ContextBreakdown, type ContextBreakdownOptions, type ContextCategory, type ContextCategoryId, type ContextExactCounts, type ContextItem, type ContextMcpGroup, type ContextSnapshot, type ContextUsageSplit, type DiffLine, type DiffOp, EDIT_TOOL_NAMES, type EditHunkSummary, type EditSummary, FILES_TRIGGER, type HunkResolution, type InlineDiff, type InlineSegment, type PreviewResult, type PromptSegment, type PromptSegmentRef, SKILLS_TRIGGER, TOOL_DISPLAY, type ToolDisplayMeta, type ToolFormatLine, ageString, applyEditPayload, applyInsert, blendHsl, buildContextBreakdown, buildContextualDiff, buildLinearRamp, buildModelCatalog, buildUnifiedDiff, collectReferences, compactPath, computeInlineDiff, computeLineDiff, countNeighbors, createFilesCompletionProvider, createSkillsCompletionProvider, deleteTurnSafely, displayNameFor, extractEditPayload, filetypeFromPath, filterModelCatalog, finalizeStreamingMarkdown, finalizeStreamingMarkdownForOwner, findActiveTrigger, fmtTokens, formatDuration, formatTaskStatus, formatTaskSummary, formatToolCall, indexOfEntry, isEditErrorResult, isTurnHighlighted, isVisible, mergeReferences, previewEditPayload, previewLine, selectableTurnIds, shortId, splitLines, splitPromptSegments, summarizeEditPayload, summarizeOutcomes, tokenize, truncateTurnsAt, turnAsText, turnContextSize, turnSelectionOwnership, uniqueFilesFromReferences, uniqueSkillNamesFromReferences };
package/dist/chat.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { Bn as ContextBreakdownOptions, Gn as ContextMcpGroup, Hn as ContextCategoryId, Jn as buildContextBreakdown, Kn as ContextSnapshot, M as SkillsConfig, O as SkillConfig, P as Session, Qt as McpServerConfig, Un as ContextExactCounts, Vn as ContextCategory, Wn as ContextItem, en as McpToolSchema, mn as SessionTurn, qn as ContextUsageSplit, r as AgentHooks, ut as Provider, zn as ContextBreakdown } from "./agent-CL4nT5Ti.js";
2
- import { H as McpCredentialEntry, U as McpCredentialStore, t as Preset } from "./index-BDMVtgHD.js";
3
- import { m as SourcedScanPath } from "./index-DtLfTUXt.js";
4
- import { $ as useInteractionsQueue, $t as parseBindingSpec, A as InteractionsProvider, At as marginTopFor, B as QuestionPayload, Bt as KEYBINDING_DEF_BY_ACTION, C as ASK_USER_TOOL, Ct as TuiState, D as InteractionRequest, Dt as lastContextSizeFromTurns, E as CreateInteractionToolsOptions, Et as eventsFromTurns, F as PlanRequest, Ft as toolCallPreview, G as TextQuestion, Gt as KeyBindings, H as QuestionResponse, Ht as KeyAction, I as PlanResponse, It as toolResultText, J as isInteractionTool, Jt as formatBindingForDisplay, K as buildResumedToolResultsTurn, Kt as ParsedBinding, L as PlanStep, Lt as updateToolEventOutcomes, M as PendingInteractionEntry, Mt as stripSpawnTokensLine, N as PlanDecision, Nt as sumRunCosts, O as InteractionResponse, Ot as listSessionMeta, P as PlanPayload, Pt as titleFromTurns, Q as useInteractionsActions, Qt as mergeKeybindings, R as Question, Rt as DEFAULT_KEYBINDINGS, S as splitMarkdownCodeBlocks, St as StateStoreApi, T as ConfirmQuestion, Tt as deriveSessionTitle, U as QuestionType, Ut as KeyBindingDef, V as QuestionRequest, Vt as KEYBINDING_KEY_COL_WIDTH, W as SelectQuestion, Wt as KeyBindingSection, X as pendingInteractionsFromTurns, Xt as keybindingsPath, Y as makeRequestInteraction, Yt as groupBindings, Z as serializeInteractionResponse, Zt as matchesBinding, _ as SessionExportTarget, _n as PLAN_AGENT, _t as ResolveStorageDirsOptions, a as ChipColorMap, an as Hint, at as DiscoveryResult, b as writeSessionExport, bn as singleAgentRegistry, bt as StorageSlot, c as SyntaxTokenStyle, cn as truncateTrailing, ct as discoverProjectMcps, d as ThemeSelect, dn as AgentRegistry, dt as ChatOptions, en as readKeybindings, et as EnabledAllowlistKey, f as ThemeSurfaces, fn as BUILD_AGENT, ft as ProviderRegistry, g as SessionExportFormat, gn as DEFAULT_PERSIST_EXCLUDE_TOOLS, gt as resolveStoragePaths, h as SessionExportAnchor, hn as DEFAULT_BUDGET_EXCLUDE_TOOLS, ht as resolveConfig, i as ChipColor, in as EMPTY_HINTS, it as DiscoveryError, j as PRESENT_PLAN_TOOL, jt as saveState, k as InteractionsActions, kt as loadState, l as Theme, ln as AgentAccent, lt as parseMcpsFile, m as resolveTheme, mn as DEFAULT_AGENT_ID, mt as ResolvedPaths, n as computeTurnAnchors, nn as CompletionState, nt as useEnabledToggleSet, o as DEFAULT_THEME, on as clipHintsToWidth, ot as buildMcpServers, p as resolveChipColor, pn as BUILTIN_AGENTS, pt as ResolvedConfig, q as createInteractionTools, qt as ensureKeybindingsFile, r as BUILTIN_THEMES, rn as useCompletion, rt as DiscoveredMcp, s as SyntaxStyles, sn as hintsLength, st as defaultMcpsConfigPaths, t as TranscriptItem, tn as stripJsonComments, tt as EnabledToggleSet, u as ThemeColors, un as AgentProfile, ut as AutoUpdateConfig, v as renderSession, vn as accentColor, vt as StorageDirs, w as AnswerValue, wt as createStateStore, x as MarkdownSegment, xt as resolveStorageDirs, y as resolveSessionExportTarget, yn as resolveAgentId, yt as StorageMode, z as QuestionChoice, zt as KEYBINDING_DEFS } from "./transcript-anchors-DYsnGyel.js";
5
- import { $ as anthropicDescriptor, A as SessionMeta, B as collectReferences, C as EditHunk, D as Owner, E as EditPayload, F as CompletionContext, G as ProviderKey, H as mergeReferences, I as CompletionItem, J as CustomField, K as detectAuth, L as CompletionProvider, M as StreamEvent, N as ToolCallDisplay, O as Picked, P as ActiveTrigger, Q as ProviderDescriptor, R as CompletionReference, S as EditDiffDisplay, T as EditOutcomeKind, U as AuthMethod, V as findActiveTrigger, W as ProviderAuth, X as ModelOption, Y as ModelInfo, Z as OUTPUT_RESERVE_TOKENS, _ as isEditErrorResult, a as formatToolCall, at as getModelInfo, b as selectableTurnIds, c as splitPromptSegments, ct as modelSupportsReasoning, d as RequestApproval, dt as openrouterDescriptor, et as cerebrasDescriptor, f as SafeModeActions, ft as piIdOf, h as useSafeModeQueue, i as displayNameFor, it as getContextWindow, j as Settings, k as Screen, l as ApprovalDecision, lt as modelsForDescriptor, m as useSafeModeActions, n as ToolDisplayMeta, nt as effectiveContextWindow, o as PromptSegment, ot as localDescriptor, p as SafeModeProvider, pt as restoreModelOptions, q as BUILTIN_PROVIDERS, r as ToolFormatLine, rt as enabledModelOptions, s as PromptSegmentRef, st as modelOptionsFor, t as TOOL_DISPLAY, tt as credKeyOf, u as ApprovalRequest, ut as openaiDescriptor, v as isTurnHighlighted, w as EditOutcome, x as turnSelectionOwnership, y as isVisible, z as applyInsert } from "./tool-formatters-D-aWpu2N.js";
6
- import { $ as uniqueFilesFromReferences, A as buildUnifiedDiff, B as buildEditOutcomesAnnotation, C as EditSummary, D as PreviewResult, E as InlineSegment, F as previewEditPayload, G as rewriteMultiEditHeader, H as mergeApprovalAndBodyOutcomes, I as splitLines, J as SKILLS_TRIGGER, K as stripEditOutcomesAnnotation, L as summarizeEditPayload, M as computeLineDiff, N as extractEditPayload, O as applyEditPayload, P as filetypeFromPath, Q as createFilesCompletionProvider, R as tokenize, S as EditHunkSummary, T as InlineDiff, U as parseEditOutcomesFromResult, V as maskToOutcomeKinds, W as resolveApprovalForPayload, X as uniqueSkillNamesFromReferences, Y as createSkillsCompletionProvider, Z as FILES_TRIGGER, _ as formatTaskSummary, a as finalizeStreamingMarkdown, b as DiffLine, c as CatalogEntry, d as indexOfEntry, et as FileEntry, f as ageString, g as formatTaskStatus, h as formatDuration, i as turnAsText, it as buildLinearRamp, j as computeInlineDiff, k as buildContextualDiff, l as buildModelCatalog, m as fmtTokens, n as deleteTurnSafely, nt as listProjectFiles, o as finalizeStreamingMarkdownForOwner, p as compactPath, q as summarizeOutcomes, r as truncateTurnsAt, rt as blendHsl, s as turnContextSize, t as countNeighbors, tt as ListProjectFilesOptions, u as filterModelCatalog, v as previewLine, w as HunkResolution, x as DiffOp, y as shortId, z as ResolvedApproval } from "./turn-operations-D-fypW6K.js";
1
+ import { Bn as ContextBreakdown, Gn as ContextItem, Hn as ContextCategory, Jn as ContextUsageSplit, Kn as ContextMcpGroup, M as SkillsConfig, O as SkillConfig, P as Session, Qt as McpServerConfig, Un as ContextCategoryId, Vn as ContextBreakdownOptions, Wn as ContextExactCounts, Yn as buildContextBreakdown, en as McpToolSchema, mn as SessionTurn, qn as ContextSnapshot, r as AgentHooks, ut as Provider } from "./agent-CHemm-6O.js";
2
+ import { H as McpCredentialEntry, U as McpCredentialStore, t as Preset } from "./index-DjIJ2qWV.js";
3
+ import { m as SourcedScanPath } from "./index-OfPNcoad.js";
4
+ import { $ as useInteractionsQueue, $t as parseBindingSpec, A as InteractionsProvider, At as marginTopFor, B as QuestionPayload, Bt as KEYBINDING_DEF_BY_ACTION, C as ASK_USER_TOOL, Ct as TuiState, D as InteractionRequest, Dt as lastContextSizeFromTurns, E as CreateInteractionToolsOptions, Et as eventsFromTurns, F as PlanRequest, Ft as toolCallPreview, G as TextQuestion, Gt as KeyBindings, H as QuestionResponse, Ht as KeyAction, I as PlanResponse, It as toolResultText, J as isInteractionTool, Jt as formatBindingForDisplay, K as buildResumedToolResultsTurn, Kt as ParsedBinding, L as PlanStep, Lt as updateToolEventOutcomes, M as PendingInteractionEntry, Mt as stripSpawnTokensLine, N as PlanDecision, Nt as sumRunCosts, O as InteractionResponse, Ot as listSessionMeta, P as PlanPayload, Pt as titleFromTurns, Q as useInteractionsActions, Qt as mergeKeybindings, R as Question, Rt as DEFAULT_KEYBINDINGS, S as splitMarkdownCodeBlocks, St as StateStoreApi, T as ConfirmQuestion, Tt as deriveSessionTitle, U as QuestionType, Ut as KeyBindingDef, V as QuestionRequest, Vt as KEYBINDING_KEY_COL_WIDTH, W as SelectQuestion, Wt as KeyBindingSection, X as pendingInteractionsFromTurns, Xt as keybindingsPath, Y as makeRequestInteraction, Yt as groupBindings, Z as serializeInteractionResponse, Zt as matchesBinding, _ as SessionExportTarget, _n as PLAN_AGENT, _t as ResolveStorageDirsOptions, a as ChipColorMap, an as Hint, at as DiscoveryResult, b as writeSessionExport, bn as singleAgentRegistry, bt as StorageSlot, c as SyntaxTokenStyle, cn as truncateTrailing, ct as discoverProjectMcps, d as ThemeSelect, dn as AgentRegistry, dt as ChatOptions, en as readKeybindings, et as EnabledAllowlistKey, f as ThemeSurfaces, fn as BUILD_AGENT, ft as ProviderRegistry, g as SessionExportFormat, gn as DEFAULT_PERSIST_EXCLUDE_TOOLS, gt as resolveStoragePaths, h as SessionExportAnchor, hn as DEFAULT_BUDGET_EXCLUDE_TOOLS, ht as resolveConfig, i as ChipColor, in as EMPTY_HINTS, it as DiscoveryError, j as PRESENT_PLAN_TOOL, jt as saveState, k as InteractionsActions, kt as loadState, l as Theme, ln as AgentAccent, lt as parseMcpsFile, m as resolveTheme, mn as DEFAULT_AGENT_ID, mt as ResolvedPaths, n as computeTurnAnchors, nn as CompletionState, nt as useEnabledToggleSet, o as DEFAULT_THEME, on as clipHintsToWidth, ot as buildMcpServers, p as resolveChipColor, pn as BUILTIN_AGENTS, pt as ResolvedConfig, q as createInteractionTools, qt as ensureKeybindingsFile, r as BUILTIN_THEMES, rn as useCompletion, rt as DiscoveredMcp, s as SyntaxStyles, sn as hintsLength, st as defaultMcpsConfigPaths, t as TranscriptItem, tn as stripJsonComments, tt as EnabledToggleSet, u as ThemeColors, un as AgentProfile, ut as AutoUpdateConfig, v as renderSession, vn as accentColor, vt as StorageDirs, w as AnswerValue, wt as createStateStore, x as MarkdownSegment, xt as resolveStorageDirs, y as resolveSessionExportTarget, yn as resolveAgentId, yt as StorageMode, z as QuestionChoice, zt as KEYBINDING_DEFS } from "./transcript-anchors-BROJfwC8.js";
5
+ import { $ as anthropicDescriptor, A as SessionMeta, B as collectReferences, C as EditHunk, D as Owner, E as EditPayload, F as CompletionContext, G as ProviderKey, H as mergeReferences, I as CompletionItem, J as CustomField, K as detectAuth, L as CompletionProvider, M as StreamEvent, N as ToolCallDisplay, O as Picked, P as ActiveTrigger, Q as ProviderDescriptor, R as CompletionReference, S as EditDiffDisplay, T as EditOutcomeKind, U as AuthMethod, V as findActiveTrigger, W as ProviderAuth, X as ModelOption, Y as ModelInfo, Z as OUTPUT_RESERVE_TOKENS, _ as isEditErrorResult, a as formatToolCall, at as getModelInfo, b as selectableTurnIds, c as splitPromptSegments, ct as modelSupportsReasoning, d as RequestApproval, dt as openrouterDescriptor, et as cerebrasDescriptor, f as SafeModeActions, ft as piIdOf, h as useSafeModeQueue, i as displayNameFor, it as getContextWindow, j as Settings, k as Screen, l as ApprovalDecision, lt as modelsForDescriptor, m as useSafeModeActions, n as ToolDisplayMeta, nt as effectiveContextWindow, o as PromptSegment, ot as localDescriptor, p as SafeModeProvider, pt as restoreModelOptions, q as BUILTIN_PROVIDERS, r as ToolFormatLine, rt as enabledModelOptions, s as PromptSegmentRef, st as modelOptionsFor, t as TOOL_DISPLAY, tt as credKeyOf, u as ApprovalRequest, ut as openaiDescriptor, v as isTurnHighlighted, w as EditOutcome, x as turnSelectionOwnership, y as isVisible, z as applyInsert } from "./tool-formatters-pndTz5iT.js";
6
+ import { $ as uniqueFilesFromReferences, A as buildUnifiedDiff, B as buildEditOutcomesAnnotation, C as EditSummary, D as PreviewResult, E as InlineSegment, F as previewEditPayload, G as rewriteMultiEditHeader, H as mergeApprovalAndBodyOutcomes, I as splitLines, J as SKILLS_TRIGGER, K as stripEditOutcomesAnnotation, L as summarizeEditPayload, M as computeLineDiff, N as extractEditPayload, O as applyEditPayload, P as filetypeFromPath, Q as createFilesCompletionProvider, R as tokenize, S as EditHunkSummary, T as InlineDiff, U as parseEditOutcomesFromResult, V as maskToOutcomeKinds, W as resolveApprovalForPayload, X as uniqueSkillNamesFromReferences, Y as createSkillsCompletionProvider, Z as FILES_TRIGGER, _ as formatTaskSummary, a as finalizeStreamingMarkdown, b as DiffLine, c as CatalogEntry, d as indexOfEntry, et as FileEntry, f as ageString, g as formatTaskStatus, h as formatDuration, i as turnAsText, it as buildLinearRamp, j as computeInlineDiff, k as buildContextualDiff, l as buildModelCatalog, m as fmtTokens, n as deleteTurnSafely, nt as listProjectFiles, o as finalizeStreamingMarkdownForOwner, p as compactPath, q as summarizeOutcomes, r as truncateTurnsAt, rt as blendHsl, s as turnContextSize, t as countNeighbors, tt as ListProjectFilesOptions, u as filterModelCatalog, v as previewLine, w as HunkResolution, x as DiffOp, y as shortId, z as ResolvedApproval } from "./turn-operations-BYnXjY80.js";
7
7
  import { Hookable } from "hookable";
8
8
  import { OAuthCredentials, OAuthDeviceCodeInfo, OAuthPrompt, OAuthPrompt as OAuthPrompt$1, OAuthSelectPrompt } from "@earendil-works/pi-ai/oauth";
9
9
  import { spawn } from "node:child_process";
package/dist/chat.js CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as useMcpAuthDispatch, $n as BUILD_AGENT, $t as deriveSessionTitle, A as runOAuthLogin, An as buildUpdateHint, Ar as SUBAGENT_GUIDANCE, B as refreshMcpToolsCatalog, Bn as AUTO_COMPACT_MIN_GROWTH_FRACTION, Bt as CATPPUCCIN_LATTE, C as projectsFilePath, Cn as parseBindingSpec, Cr as COMMUNICATION_DOCTRINE, Ct as listProjectFiles, D as formatPathForCwd, Dn as tryOpenBrowser, Dr as INTERACTION_GUIDANCE_NO_PROMPTS, Dt as SETTINGS_CHOICES, E as writeProjects, En as useCompletion, Er as INTERACTION_GUIDANCE, Et as SETTINGS_CATEGORIES, F as parseMcpsFile, Fn as detectPackageManager, Ft as resolveTheme, G as useMcpToolToggleSet, Gn as readCredentials, Gt as useDiscovery, H as subscribeMcpToolsCache, Hn as detectAuth, Ht as CATPPUCCIN_MOCHA, I as projectUserPaths, In as parseSemver, It as VAPORWAVE_THEME, J as parentServerName, Jn as setProviderCredential, Jt as useConfig, K as buildVisibleMcpRows, Kn as readProviderCredential, Kt as useDiscoveryOptional, L as clearMcpToolsCache, Ln as performInPlaceSelfUpdate, Lt as GRUVBOX_DARK, M as buildMcpServers, Mn as checkForUpdate, Mr as buildBuildSystem, Mt as BUILTIN_THEMES, N as defaultMcpsConfigPaths, Nn as compareSemver, Nr as buildPlanSystem, Nt as DEFAULT_THEME, O as fetchOAuthRedirect, On as bootProfileEnabled, Or as PLAN_MODE_DOCTRINE, Ot as SETTINGS_TOGGLES, P as discoverProjectMcps, Pn as detectLibc, Pr as envSection, Pt as resolveChipColor, Q as McpAuthProvider, Qn as findGitRoot, Qt as createStateStore, R as loadMcpToolsCache, Rn as performSelfUpdate, Rt as GRUVBOX_LIGHT, S as matchesSafelistEntry, Sn as mergeKeybindings, Sr as ACTIONS_WITH_CARE_DOCTRINE, St as shortChord, T as suggestSafelistEntry, Tn as stripJsonComments, Tr as IDENTITY_PREFIX, Tt as DEFAULT_SETTINGS, U as buildToolToggle, Un as applyApiKeyEnv, Ut as createDiscoverySlot, V as saveMcpToolsCache, Vn as shouldAutoCompact, Vt as CATPPUCCIN_MACCHIATO, W as useMcpToolToggleMap, Wn as credentialsPath, Wt as DiscoveryProvider, X as mcpCredentialsPath, Xn as discoverAgentsMd, Xt as resolveStoragePaths, Y as createFileMcpCredentialStore, Yn as writeCredentials, Yt as resolveConfig, Z as patchMcpCredential, Zn as renderAgentsMdBlock, Zt as resolveStorageDirs, _ as useSafeModeQueue, _n as ensureKeybindingsFile, _r as pickActiveRunId, _t as hintsLength, a as useSurfaces, an as saveState, ar as accentColor, at as InteractionsProvider, b as getSafelist, bn as keybindingsPath, br as setTodosForRun, bt as generateSessionTitle, c as useStreamBuffer, cn as sumRunCosts, cr as TODOREAD_TOOL, ct as createInteractionTools, d as discoverProjectSkills, dn as toolResultText, dr as TODO_STATUS_GLYPHS, dt as pendingInteractionsFromTurns, en as eventsFromTurns, er as BUILTIN_AGENTS, et as useMcpAuthState, f as renderSession, fn as updateToolEventOutcomes, fr as TODO_WRITE_COUNTS_METADATA_KEY, ft as serializeInteractionResponse, g as useSafeModeActions, gn as KEYBINDING_KEY_COL_WIDTH, gr as isTodoTool, gt as clipHintsToWidth, h as SafeModeProvider, hn as KEYBINDING_DEF_BY_ACTION, hr as getTodosForRun, ht as EMPTY_HINTS, i as useSelectStyle, in as marginTopFor, ir as PLAN_AGENT, it as ASK_USER_TOOL, j as supportsOAuth, jn as useUpdateCheck, jr as TOKEN_DISCIPLINE_DOCTRINE, jt as useSettings, k as oauthUsesManualCodePaste, kn as bootTick, kr as PLAN_MODE_DOCTRINE_NO_PROMPTS, kt as SettingsProvider, l as buildSkillsConfig, ln as titleFromTurns, lr as TODOS_METADATA_KEY, lt as isInteractionTool, m as writeSessionExport, mn as KEYBINDING_DEFS, mr as getArchivedTodosForRun, mt as useInteractionsQueue, n as ThemeProvider, nn as listSessionMeta, nr as DEFAULT_BUDGET_EXCLUDE_TOOLS, nt as reduceMcpAuth, o as useSyntaxStyles, or as resolveAgentId, ot as PRESENT_PLAN_TOOL, p as resolveSessionExportTarget, pn as DEFAULT_KEYBINDINGS, pr as createTodoTools, pt as useInteractionsActions, q as indexOfServerRow, qn as removeProviderCredential, qt as ConfigProvider, r as useColors, rn as loadState, rr as DEFAULT_PERSIST_EXCLUDE_TOOLS, rt as splitMarkdownCodeBlocks, s as useTheme, sn as stripSpawnTokensLine, sr as singleAgentRegistry, st as buildResumedToolResultsTurn, t as computeTurnAnchors, tn as lastContextSizeFromTurns, tr as DEFAULT_AGENT_ID, tt as getMcpAuthStatus, u as defaultSkillScanPaths, un as toolCallPreview, ur as TODOWRITE_TOOL, ut as makeRequestInteraction, v as IMPLICITLY_SAFE_TOOLS, vn as formatBindingForDisplay, vr as pruneTodosByRun, vt as truncateTrailing, w as readProjects, wn as readKeybindings, wr as DOING_TASKS_DOCTRINE, wt as useEnabledToggleSet, x as isOnSafelist, xn as matchesBinding, xr as useActiveTodos, xt as buildHints, y as addToSafelist, yn as groupBindings, yr as selectActiveTodos, yt as cleanTitle, z as mcpToolsCachePath, zn as resolvePlatformPackage, zt as CATPPUCCIN_FRAPPE } from "./transcript-anchors-D-X067Sc.js";
2
- import { B as effectiveContextWindow, F as BUILTIN_PROVIDERS, G as modelOptionsFor, H as getContextWindow, I as OUTPUT_RESERVE_TOKENS, J as openaiDescriptor, K as modelSupportsReasoning, L as anthropicDescriptor, R as cerebrasDescriptor, U as getModelInfo, V as enabledModelOptions, W as localDescriptor, X as piIdOf, Y as openrouterDescriptor, Z as restoreModelOptions, q as modelsForDescriptor, z as credKeyOf } from "./tools-DCFiAUel.js";
1
+ import { $ as useMcpAuthDispatch, $n as BUILD_AGENT, $t as deriveSessionTitle, A as runOAuthLogin, An as buildUpdateHint, Ar as SUBAGENT_GUIDANCE, B as refreshMcpToolsCatalog, Bn as AUTO_COMPACT_MIN_GROWTH_FRACTION, Bt as CATPPUCCIN_LATTE, C as projectsFilePath, Cn as parseBindingSpec, Cr as COMMUNICATION_DOCTRINE, Ct as listProjectFiles, D as formatPathForCwd, Dn as tryOpenBrowser, Dr as INTERACTION_GUIDANCE_NO_PROMPTS, Dt as SETTINGS_CHOICES, E as writeProjects, En as useCompletion, Er as INTERACTION_GUIDANCE, Et as SETTINGS_CATEGORIES, F as parseMcpsFile, Fn as detectPackageManager, Ft as resolveTheme, G as useMcpToolToggleSet, Gn as readCredentials, Gt as useDiscovery, H as subscribeMcpToolsCache, Hn as detectAuth, Ht as CATPPUCCIN_MOCHA, I as projectUserPaths, In as parseSemver, It as VAPORWAVE_THEME, J as parentServerName, Jn as setProviderCredential, Jt as useConfig, K as buildVisibleMcpRows, Kn as readProviderCredential, Kt as useDiscoveryOptional, L as clearMcpToolsCache, Ln as performInPlaceSelfUpdate, Lt as GRUVBOX_DARK, M as buildMcpServers, Mn as checkForUpdate, Mr as buildBuildSystem, Mt as BUILTIN_THEMES, N as defaultMcpsConfigPaths, Nn as compareSemver, Nr as buildPlanSystem, Nt as DEFAULT_THEME, O as fetchOAuthRedirect, On as bootProfileEnabled, Or as PLAN_MODE_DOCTRINE, Ot as SETTINGS_TOGGLES, P as discoverProjectMcps, Pn as detectLibc, Pr as envSection, Pt as resolveChipColor, Q as McpAuthProvider, Qn as findGitRoot, Qt as createStateStore, R as loadMcpToolsCache, Rn as performSelfUpdate, Rt as GRUVBOX_LIGHT, S as matchesSafelistEntry, Sn as mergeKeybindings, Sr as ACTIONS_WITH_CARE_DOCTRINE, St as shortChord, T as suggestSafelistEntry, Tn as stripJsonComments, Tr as IDENTITY_PREFIX, Tt as DEFAULT_SETTINGS, U as buildToolToggle, Un as applyApiKeyEnv, Ut as createDiscoverySlot, V as saveMcpToolsCache, Vn as shouldAutoCompact, Vt as CATPPUCCIN_MACCHIATO, W as useMcpToolToggleMap, Wn as credentialsPath, Wt as DiscoveryProvider, X as mcpCredentialsPath, Xn as discoverAgentsMd, Xt as resolveStoragePaths, Y as createFileMcpCredentialStore, Yn as writeCredentials, Yt as resolveConfig, Z as patchMcpCredential, Zn as renderAgentsMdBlock, Zt as resolveStorageDirs, _ as useSafeModeQueue, _n as ensureKeybindingsFile, _r as pickActiveRunId, _t as hintsLength, a as useSurfaces, an as saveState, ar as accentColor, at as InteractionsProvider, b as getSafelist, bn as keybindingsPath, br as setTodosForRun, bt as generateSessionTitle, c as useStreamBuffer, cn as sumRunCosts, cr as TODOREAD_TOOL, ct as createInteractionTools, d as discoverProjectSkills, dn as toolResultText, dr as TODO_STATUS_GLYPHS, dt as pendingInteractionsFromTurns, en as eventsFromTurns, er as BUILTIN_AGENTS, et as useMcpAuthState, f as renderSession, fn as updateToolEventOutcomes, fr as TODO_WRITE_COUNTS_METADATA_KEY, ft as serializeInteractionResponse, g as useSafeModeActions, gn as KEYBINDING_KEY_COL_WIDTH, gr as isTodoTool, gt as clipHintsToWidth, h as SafeModeProvider, hn as KEYBINDING_DEF_BY_ACTION, hr as getTodosForRun, ht as EMPTY_HINTS, i as useSelectStyle, in as marginTopFor, ir as PLAN_AGENT, it as ASK_USER_TOOL, j as supportsOAuth, jn as useUpdateCheck, jr as TOKEN_DISCIPLINE_DOCTRINE, jt as useSettings, k as oauthUsesManualCodePaste, kn as bootTick, kr as PLAN_MODE_DOCTRINE_NO_PROMPTS, kt as SettingsProvider, l as buildSkillsConfig, ln as titleFromTurns, lr as TODOS_METADATA_KEY, lt as isInteractionTool, m as writeSessionExport, mn as KEYBINDING_DEFS, mr as getArchivedTodosForRun, mt as useInteractionsQueue, n as ThemeProvider, nn as listSessionMeta, nr as DEFAULT_BUDGET_EXCLUDE_TOOLS, nt as reduceMcpAuth, o as useSyntaxStyles, or as resolveAgentId, ot as PRESENT_PLAN_TOOL, p as resolveSessionExportTarget, pn as DEFAULT_KEYBINDINGS, pr as createTodoTools, pt as useInteractionsActions, q as indexOfServerRow, qn as removeProviderCredential, qt as ConfigProvider, r as useColors, rn as loadState, rr as DEFAULT_PERSIST_EXCLUDE_TOOLS, rt as splitMarkdownCodeBlocks, s as useTheme, sn as stripSpawnTokensLine, sr as singleAgentRegistry, st as buildResumedToolResultsTurn, t as computeTurnAnchors, tn as lastContextSizeFromTurns, tr as DEFAULT_AGENT_ID, tt as getMcpAuthStatus, u as defaultSkillScanPaths, un as toolCallPreview, ur as TODOWRITE_TOOL, ut as makeRequestInteraction, v as IMPLICITLY_SAFE_TOOLS, vn as formatBindingForDisplay, vr as pruneTodosByRun, vt as truncateTrailing, w as readProjects, wn as readKeybindings, wr as DOING_TASKS_DOCTRINE, wt as useEnabledToggleSet, x as isOnSafelist, xn as matchesBinding, xr as useActiveTodos, xt as buildHints, y as addToSafelist, yn as groupBindings, yr as selectActiveTodos, yt as cleanTitle, z as mcpToolsCachePath, zn as resolvePlatformPackage, zt as CATPPUCCIN_FRAPPE } from "./transcript-anchors-Bncn747q.js";
2
+ import { B as effectiveContextWindow, F as BUILTIN_PROVIDERS, G as modelOptionsFor, H as getContextWindow, I as OUTPUT_RESERVE_TOKENS, J as openaiDescriptor, K as modelSupportsReasoning, L as anthropicDescriptor, R as cerebrasDescriptor, U as getModelInfo, V as enabledModelOptions, W as localDescriptor, X as piIdOf, Y as openrouterDescriptor, Z as restoreModelOptions, q as modelsForDescriptor, z as credKeyOf } from "./tools-CSmcSu_B.js";
3
3
  import { a as compactPath, c as formatTaskStatus, d as shortId, f as buildContextBreakdown, i as ageString, l as formatTaskSummary, o as fmtTokens, s as formatDuration, u as previewLine } from "./edit-utils-DnfNoj16.js";
4
4
  import { A as splitLines, B as summarizeOutcomes, C as buildContextualDiff, D as extractEditPayload, E as computeLineDiff, F as mergeApprovalAndBodyOutcomes, G as createFilesCompletionProvider, H as createSkillsCompletionProvider, I as parseEditOutcomesFromResult, J as collectReferences, K as uniqueFilesFromReferences, L as resolveApprovalForPayload, M as tokenize, N as buildEditOutcomesAnnotation, O as filetypeFromPath, P as maskToOutcomeKinds, Q as buildLinearRamp, R as rewriteMultiEditHeader, S as applyEditPayload, T as computeInlineDiff, U as uniqueSkillNamesFromReferences, V as SKILLS_TRIGGER, W as FILES_TRIGGER, X as mergeReferences, Y as findActiveTrigger, Z as blendHsl, _ as isEditErrorResult, a as TOOL_DISPLAY, b as selectableTurnIds, c as finalizeStreamingMarkdown, d as turnContextSize, f as splitPromptSegments, h as indexOfEntry, i as turnAsText, j as summarizeEditPayload, k as previewEditPayload, l as finalizeStreamingMarkdownForOwner, m as filterModelCatalog, n as deleteTurnSafely, o as displayNameFor, p as buildModelCatalog, q as applyInsert, r as truncateTurnsAt, s as formatToolCall, t as countNeighbors, v as isTurnHighlighted, w as buildUnifiedDiff, x as turnSelectionOwnership, y as isVisible, z as stripEditOutcomesAnnotation } from "./turn-operations-CCHfR9eC.js";
5
5
  //#region src/chat/auto-update-cli.ts
@@ -1,9 +1,9 @@
1
- import { d as createAgent } from "./tools-DCFiAUel.js";
1
+ import { d as createAgent } from "./tools-CSmcSu_B.js";
2
2
  import { s as ensureToolResultPairing } from "./messages-Dhva-Ewy.js";
3
3
  import { n as createProcessContext } from "./contexts-BD2U_xpi.js";
4
4
  import { r as toolResultToText } from "./types-BPw_i5vb.js";
5
5
  import { i as statsByModel } from "./stats-DAKBEKjc.js";
6
- import { i as basic_default } from "./presets-J9EyUhvT.js";
6
+ import { i as basic_default } from "./presets-Cugb5FrA.js";
7
7
  import { i as createMemoryStore, t as createSession } from "./session-7CKYn9qT.js";
8
8
  //#region src/run-summary.ts
9
9
  /**
@@ -521,4 +521,4 @@ function installEventAdapter(hooks, onEvent) {
521
521
  //#endregion
522
522
  export { createRunSummaryCollector as i, runHeadless as n, transcriptToOpenAIMessages as r, headlessEventToJsonl as t };
523
523
 
524
- //# sourceMappingURL=headless-AnwtKahq.js.map
524
+ //# sourceMappingURL=headless-CZuZ_565.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"headless-AnwtKahq.js","names":["basic"],"sources":["../src/run-summary.ts","../src/headless.ts"],"sourcesContent":["/**\n * Run summary collector — one JSON postmortem per `agent.run()`.\n *\n * `AgentStats` is great for billing and per-turn accounting but doesn't\n * carry a record of the *interesting* events that happened during a run\n * (errors, gate blocks, validation rejects, budget hits, MCP failures).\n * Reconstructing that from a hook stream after the fact is exactly the\n * kind of plumbing every consumer ends up re-implementing.\n *\n * This module ships:\n *\n * - {@link RunSummary} — a serializable shape that bundles totals,\n * per-model breakdown, and all the per-run incident lists.\n * - {@link createRunSummaryCollector} — installs hook listeners that\n * build up a {@link RunSummary} during the run and surfaces it on\n * `agent:done`. Calls an optional `onSummary` callback so the host can\n * forward to a log aggregator / DB / postmortem dashboard without\n * touching `agent.run()`'s return value.\n *\n * The collector is purely additive — it doesn't touch the agent loop,\n * doesn't change return shapes, and doesn't suppress any other hook\n * handlers. Drop it in alongside tracing / metrics / logging or use it\n * standalone when you only need the summary.\n */\n\nimport type { Hookable } from 'hookable'\nimport type { AgentHooks } from './agent'\nimport type { AgentStats } from './types'\nimport { statsByModel } from './stats'\n\n// ---------------------------------------------------------------------------\n// Public shape\n// ---------------------------------------------------------------------------\n\nexport interface RunSummaryTokens {\n input: number\n output: number\n cacheRead: number\n cacheCreation: number\n cost?: number\n /** First observable byte from the provider, ms from run start. */\n ttftMs?: number\n}\n\nexport interface RunSummaryByModel {\n modelId: string\n input: number\n output: number\n cacheRead: number\n cacheCreation: number\n cost: number\n turns: number\n}\n\nexport interface RunSummaryError {\n kind: 'stream' | 'tool' | 'mcp-tool' | 'mcp' | 'spawn'\n message: string\n errorType?: string\n turnId?: string\n callId?: string\n server?: string\n toolName?: string\n childId?: string\n statusCode?: number\n requestId?: string\n}\n\nexport interface RunSummaryBlock {\n callId: string\n toolName: string\n outcome: 'gate-block' | 'unknown' | 'invalid-input'\n reason?: string\n}\n\nexport interface RunSummaryValidation {\n callId: string\n toolName: string\n reason: string\n}\n\nexport interface RunSummaryBudget {\n kind: 'bytes' | 'tool-count'\n /** Tool name (for `'tool-count'`); absent for byte budgets. */\n toolName?: string\n /** `mode` for `'tool-count'`; absent for byte budgets. */\n mode?: 'steer' | 'block'\n observed: number\n limit: number\n turnId?: string\n}\n\nexport interface RunSummaryRepeatGuard {\n toolName: string\n /** Consecutive identical calls including the one that tripped the guard. */\n count: number\n threshold: number\n action: 'block' | 'abort'\n turnId?: string\n}\n\n/**\n * Postmortem snapshot of one `agent.run()`. Strictly serializable — every\n * field round-trips through `JSON.stringify` / `JSON.parse` without loss\n * so a log aggregator can ingest it as-is.\n */\nexport interface RunSummary {\n runId?: string\n parentRunId?: string\n depth: number\n agentName?: string\n startedAt: number\n endedAt: number\n durationMs: number\n status: 'completed' | 'aborted'\n turns: number\n totals: RunSummaryTokens\n byModel: RunSummaryByModel[]\n errors: RunSummaryError[]\n blocks: RunSummaryBlock[]\n validationRejects: RunSummaryValidation[]\n budgetEvents: RunSummaryBudget[]\n /**\n * Consecutive-identical repeat-guard escalations. An `action: 'abort'`\n * entry means the guard terminated the run via the agent's\n * `AbortController` (the run finalizes as `'aborted'`).\n */\n repeatGuardEvents: RunSummaryRepeatGuard[]\n /** Counts of pairing repairs, keyed by repair mode. */\n pairingRepairs: Record<string, number>\n /**\n * Postmortem snapshots of child runs that bubbled their stats up via\n * `spawn:complete`. Only present when the run actually spawned.\n */\n children?: RunSummary[]\n}\n\n// ---------------------------------------------------------------------------\n// Collector\n// ---------------------------------------------------------------------------\n\nexport interface RunSummaryCollectorOptions {\n /**\n * Called with the assembled {@link RunSummary} on every `agent:done`.\n * Synchronous — heavy I/O should be deferred (e.g. via `setImmediate`).\n */\n onSummary?: (summary: RunSummary) => void\n}\n\nexport interface RunSummaryCollector {\n /** Install the collector's hook handlers. Returns an uninstall fn. */\n install: (hooks: Hookable<AgentHooks>) => () => void\n /** Most-recent summary; `undefined` until the first `agent:done` fires. */\n latest: () => RunSummary | undefined\n}\n\n/**\n * Build a run-summary collector. State is created fresh inside each\n * `install()` call, so a single collector instance can be installed\n * across multiple agents without attribution cross-talk. `latest()`\n * returns the most-recent summary across **any** install — install\n * per-agent collectors if you need separate post-run snapshots.\n *\n * @example\n * ```ts\n * const collector = createRunSummaryCollector({\n * onSummary: s => console.log(JSON.stringify(s)),\n * })\n * const uninstall = collector.install(agent.hooks)\n * try { await agent.run({ prompt }) }\n * finally { uninstall() }\n * ```\n */\nexport function createRunSummaryCollector(\n options: RunSummaryCollectorOptions = {},\n): RunSummaryCollector {\n let last: RunSummary | undefined\n\n return {\n latest: () => last,\n install(hooks: Hookable<AgentHooks>): () => void {\n // Per-run in-progress accumulators. The hookable bus serializes\n // agent.run lifecycles per agent — we reset between runs on\n // `agent:start` and consume on `agent:done`.\n let runId: string | undefined\n let parentRunId: string | undefined\n let depth = 0\n let agentName: string | undefined\n let startedAt = Date.now()\n let aborted = false\n const errors: RunSummaryError[] = []\n const blocks: RunSummaryBlock[] = []\n const validationRejects: RunSummaryValidation[] = []\n const budgetEvents: RunSummaryBudget[] = []\n const repeatGuardEvents: RunSummaryRepeatGuard[] = []\n const pairingRepairs: Record<string, number> = {}\n const children: RunSummary[] = []\n\n function resetForNewRun(): void {\n aborted = false\n errors.length = 0\n blocks.length = 0\n validationRejects.length = 0\n budgetEvents.length = 0\n repeatGuardEvents.length = 0\n for (const k of Object.keys(pairingRepairs))\n delete pairingRepairs[k]\n children.length = 0\n }\n\n const unregisters: Array<() => void> = []\n\n unregisters.push(hooks.hook('agent:start', (ctx) => {\n resetForNewRun()\n runId = ctx.runId\n parentRunId = ctx.parentRunId\n depth = ctx.depth\n agentName = ctx.agentName\n startedAt = ctx.startedAt\n }))\n\n unregisters.push(hooks.hook('agent:abort', () => {\n aborted = true\n }))\n\n unregisters.push(hooks.hook('stream:error', (ctx) => {\n const msg = ctx.err instanceof Error ? ctx.err.message : String(ctx.err)\n const errorType = ctx.err instanceof Error ? ctx.err.name : 'unknown'\n errors.push({\n kind: 'stream',\n message: msg,\n errorType,\n turnId: ctx.turnId,\n ...(ctx.statusCode !== undefined ? { statusCode: ctx.statusCode } : {}),\n ...(ctx.requestId !== undefined ? { requestId: ctx.requestId } : {}),\n })\n }))\n\n unregisters.push(hooks.hook('tool:error', (ctx) => {\n errors.push({\n kind: 'tool',\n message: ctx.error.message,\n errorType: ctx.error.name,\n turnId: ctx.turnId,\n callId: ctx.callId,\n toolName: ctx.name,\n })\n }))\n\n unregisters.push(hooks.hook('mcp:tool:error', (ctx) => {\n errors.push({\n kind: 'mcp-tool',\n message: ctx.error.message,\n errorType: ctx.error.name,\n turnId: ctx.turnId,\n callId: ctx.callId,\n server: ctx.server,\n toolName: ctx.displayName,\n })\n }))\n\n unregisters.push(hooks.hook('mcp:error', (ctx) => {\n errors.push({\n kind: 'mcp',\n message: ctx.error.message,\n errorType: ctx.error.name,\n server: ctx.name,\n })\n }))\n\n unregisters.push(hooks.hook('spawn:error', (ctx) => {\n errors.push({\n kind: 'spawn',\n message: ctx.error.message,\n errorType: ctx.error.name,\n childId: ctx.id,\n })\n }))\n\n unregisters.push(hooks.hook('tool:dispatched', (ctx) => {\n if (ctx.outcome === 'gate-block' || ctx.outcome === 'unknown' || ctx.outcome === 'invalid-input') {\n blocks.push({\n callId: ctx.callId,\n toolName: ctx.name,\n outcome: ctx.outcome,\n ...(ctx.reason ? { reason: ctx.reason } : {}),\n })\n }\n }))\n\n unregisters.push(hooks.hook('validation:reject', (ctx) => {\n validationRejects.push({\n callId: ctx.callId,\n toolName: ctx.name,\n reason: ctx.reason,\n })\n }))\n\n unregisters.push(hooks.hook('budget:exceeded', (ctx) => {\n budgetEvents.push({\n kind: 'bytes',\n observed: ctx.bytes,\n limit: ctx.budget,\n turnId: ctx.turnId,\n })\n }))\n\n unregisters.push(hooks.hook('tool-budget:exceeded', (ctx) => {\n budgetEvents.push({\n kind: 'tool-count',\n toolName: ctx.tool,\n mode: ctx.mode,\n observed: ctx.count,\n limit: ctx.max,\n turnId: ctx.turnId,\n })\n }))\n\n unregisters.push(hooks.hook('repeat-guard:exceeded', (ctx) => {\n repeatGuardEvents.push({\n toolName: ctx.tool,\n count: ctx.count,\n threshold: ctx.threshold,\n action: ctx.action,\n turnId: ctx.turnId,\n })\n }))\n\n unregisters.push(hooks.hook('pairing:repair', (ctx) => {\n pairingRepairs[ctx.mode] = (pairingRepairs[ctx.mode] ?? 0) + 1\n }))\n\n unregisters.push(hooks.hook('agent:done', (stats) => {\n const endedAt = Date.now()\n\n // Build per-model rollup via the existing `statsByModel` helper\n // so we stay in lockstep with how the rest of the harness\n // attributes cost and tokens by model id.\n const byModel: RunSummaryByModel[] = []\n for (const [modelId, usage] of statsByModel(stats)) {\n byModel.push({\n modelId,\n input: usage.input,\n output: usage.output,\n cacheRead: usage.cacheRead,\n cacheCreation: usage.cacheCreation,\n cost: usage.cost,\n turns: usage.turns,\n })\n }\n\n // Flatten child stats into nested summaries. We don't have the\n // child's full event lists here (those landed on the child's\n // own hooks), so the nested entry is a minimal totals-only\n // record — enough for a flat per-run audit trail; consumers\n // wanting full per-child event lists install a collector on\n // each subagent.\n for (const c of stats.children ?? []) {\n children.push(minimalSummaryFromStats(c.stats, {\n depth: c.depth ?? depth + 1,\n status: c.status === 'aborted' ? 'aborted' : 'completed',\n }))\n }\n\n const summary: RunSummary = {\n ...(runId ? { runId } : {}),\n ...(parentRunId ? { parentRunId } : {}),\n depth,\n ...(agentName ? { agentName } : {}),\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n status: aborted ? 'aborted' : 'completed',\n turns: stats.turns,\n totals: buildTotals(stats),\n byModel,\n errors: errors.slice(),\n blocks: blocks.slice(),\n validationRejects: validationRejects.slice(),\n budgetEvents: budgetEvents.slice(),\n repeatGuardEvents: repeatGuardEvents.slice(),\n pairingRepairs: { ...pairingRepairs },\n ...(children.length > 0 ? { children: children.slice() } : {}),\n }\n\n last = summary\n try {\n options.onSummary?.(summary)\n }\n catch {\n // Sink errors are not the collector's concern.\n }\n }))\n\n let disposed = false\n return function uninstall() {\n if (disposed)\n return\n disposed = true\n for (const un of unregisters) {\n try {\n un()\n }\n catch { /* ignore */ }\n }\n }\n },\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction buildTotals(stats: AgentStats): RunSummaryTokens {\n return {\n input: stats.totalIn,\n output: stats.totalOut,\n cacheRead: stats.totalCacheRead,\n cacheCreation: stats.totalCacheCreation,\n ...(typeof stats.cost === 'number' ? { cost: stats.cost } : {}),\n ...(typeof stats.timeTillFirstTokenMs === 'number' ? { ttftMs: stats.timeTillFirstTokenMs } : {}),\n }\n}\n\nfunction minimalSummaryFromStats(\n stats: AgentStats,\n meta: { depth: number, status: 'completed' | 'aborted' },\n): RunSummary {\n const byModel: RunSummaryByModel[] = []\n for (const [modelId, usage] of statsByModel(stats)) {\n byModel.push({\n modelId,\n input: usage.input,\n output: usage.output,\n cacheRead: usage.cacheRead,\n cacheCreation: usage.cacheCreation,\n cost: usage.cost,\n turns: usage.turns,\n })\n }\n const children: RunSummary[] = []\n for (const c of stats.children ?? []) {\n children.push(minimalSummaryFromStats(c.stats, {\n depth: c.depth ?? meta.depth + 1,\n status: c.status === 'aborted' ? 'aborted' : 'completed',\n }))\n }\n return {\n depth: meta.depth,\n startedAt: 0,\n endedAt: 0,\n durationMs: stats.elapsed,\n status: meta.status,\n turns: stats.turns,\n totals: buildTotals(stats),\n byModel,\n errors: [],\n blocks: [],\n validationRejects: [],\n budgetEvents: [],\n repeatGuardEvents: [],\n pairingRepairs: {},\n ...(children.length > 0 ? { children } : {}),\n }\n}\n","/**\n * Headless mode — a non-interactive, fully-structured way to drive the agent\n * for automation and RL rollouts.\n *\n * `agent.run()` already returns rich {@link AgentStats}, the session captures a\n * lossless transcript (`session.turns`), and the hook bus exposes every\n * streaming/tool/turn event. What this module adds is the *contract* an RL loop\n * needs: one call (`runHeadless`) that runs a prompt to completion in a chosen\n * workdir, bounded by turns + wall-clock, and hands back a single serializable\n * {@link HeadlessResult} — final answer, verifiable structured output, usage,\n * and the complete trajectory — plus an optional live {@link HeadlessEvent}\n * stream (the in-process equivalent of `--output-format stream-json`).\n *\n * It is provider-agnostic: the caller passes a built {@link Provider} (e.g.\n * `local()` pointed at a vLLM server, or any of the named providers). The thin\n * CLI in `src/headless-cli.ts` wraps this with arg parsing, file/stdin I/O, and\n * JSONL transcript writing.\n */\n\nimport type { Hookable } from 'hookable'\nimport type { AgentHooks, AgentOptions } from './agent'\nimport type { ExecutionContext } from './contexts'\nimport type { Provider } from './providers'\nimport type { RunSummary } from './run-summary'\nimport type { Session, SessionStore } from './session'\nimport type { PairingRepair } from './session/messages'\nimport type { ToolDef } from './tools'\nimport type {\n AgentStats,\n McpServerConfig,\n PromptPart,\n SessionContentBlock,\n SessionTurn,\n ThinkingLevel,\n TurnFinishReason,\n TurnUsage,\n} from './types'\nimport { createAgent } from './agent'\nimport { createProcessContext } from './contexts'\nimport { basic } from './presets'\nimport { createRunSummaryCollector } from './run-summary'\nimport { createMemoryStore, createSession } from './session'\nimport { ensureToolResultPairing } from './session/messages'\nimport { toolResultToText } from './types'\n\n// ---------------------------------------------------------------------------\n// Public shapes\n// ---------------------------------------------------------------------------\n\nexport type HeadlessStatus = 'completed' | 'aborted' | 'error' | 'timeout'\n\nexport interface HeadlessUsage {\n input: number\n output: number\n cacheRead: number\n cacheCreation: number\n /** Cumulative USD cost when the provider/registry could price the run. */\n cost?: number\n}\n\nexport interface HeadlessErrorInfo {\n message: string\n /** Typed-error class name (`AgentAbortedError`, `AgentContextExceededError`, …). */\n type: string\n}\n\n/**\n * Strictly JSON-serializable postmortem of one headless run. Everything an RL\n * reward function needs: the final answer (`finalText`), the verifiable\n * structured output (`output`, present iff a `schema` was set), usage/turns,\n * and the lossless `transcript` (the SFT training data).\n */\nexport interface HeadlessResult {\n status: HeadlessStatus\n /** Concatenated text of the last assistant turn that produced any text. */\n finalText: string\n /** Schema-enforced structured output (only when `opts.schema` is set). */\n output?: Record<string, unknown>\n usage: HeadlessUsage\n turns: number\n durationMs: number\n /** Total `tool_call` blocks across the whole transcript. */\n numToolCalls: number\n /** Finish reason of the final turn that reported one. */\n finishReason?: TurnFinishReason\n error?: HeadlessErrorInfo\n sessionId: string\n /** Incident postmortem (errors, gate blocks, budget events) via run-summary. */\n summary?: RunSummary\n /** Lossless transcript — raw `session.turns`. Thinking stripped when `includeThinking: false`. */\n transcript: SessionTurn[]\n}\n\n/**\n * Live event union — the in-process equivalent of a `stream-json` line. Every\n * member is JSON-serializable; render to JSONL with {@link headlessEventToJsonl}.\n */\nexport type HeadlessEvent\n = | { type: 'start', runId: string, provider?: string }\n | { type: 'text', delta: string }\n | { type: 'thinking', delta: string }\n | { type: 'tool_call', callId: string, name: string, input: Record<string, unknown> }\n | { type: 'tool_result', callId: string, name: string, output: string, isError: boolean }\n | { type: 'turn', index: number, usage: TurnUsage }\n | { type: 'spawn', event: 'before' | 'complete' | 'error', id: string, info?: Record<string, unknown> }\n | { type: 'error', message: string, errorType?: string }\n | { type: 'result', result: HeadlessResult }\n\n/** Serialize one event as a newline-terminated JSON line (stream-json). */\nexport function headlessEventToJsonl(event: HeadlessEvent): string {\n return `${JSON.stringify(event)}\\n`\n}\n\nexport interface HeadlessOptions {\n /** User prompt — plain string or multimodal `PromptPart[]`. */\n prompt: string | PromptPart[]\n /** Built provider (e.g. `local()`, `openaiCompat(...)`, `anthropic(...)`). */\n provider: Provider\n model?: string\n /** Override the preset system prompt for this run. */\n system?: string\n thinking?: ThinkingLevel\n maxTurns?: number\n maxTokens?: number\n /** Wall-clock cap; on expiry the run is aborted and `status` becomes `'timeout'`. */\n timeoutMs?: number\n /** External abort signal — chained with the internal timeout controller. */\n signal?: AbortSignal\n /** JSON Schema for structured-output enforcement → populates `result.output`. */\n schema?: Record<string, unknown>\n /** Tool overrides. Omit to use the basic preset's tools. */\n tools?: Record<string, ToolDef>\n mcpServers?: McpServerConfig[]\n skills?: AgentOptions['skills']\n /** Execution context. Defaults to a process context rooted at `cwd`. */\n execution?: ExecutionContext\n /** Working directory for the default process context (ignored if `execution` is set). */\n cwd?: string\n /** Reuse / resume an existing session. */\n session?: Session\n /** Session store for a fresh session (defaults to an in-memory store). */\n store?: SessionStore\n /** Keep `thinking` blocks in `result.transcript` (default true). */\n includeThinking?: boolean\n /** Live event callback — the in-process stream-json equivalent. */\n onEvent?: (event: HeadlessEvent) => void\n}\n\n// ---------------------------------------------------------------------------\n// runHeadless\n// ---------------------------------------------------------------------------\n\n/**\n * Run a prompt to completion, headless, and return a single serializable\n * {@link HeadlessResult}. Safe to call concurrently for parallel rollouts —\n * each call builds its own agent + session and tears them down in `finally`.\n */\nexport async function runHeadless(opts: HeadlessOptions): Promise<HeadlessResult> {\n const startedAt = Date.now()\n const execution = opts.execution ?? createProcessContext({ cwd: opts.cwd })\n const session = opts.session ?? await createSession({ store: opts.store ?? createMemoryStore() })\n\n const behavior: NonNullable<AgentOptions['behavior']> = {}\n if (opts.maxTurns !== undefined)\n behavior.maxTurns = opts.maxTurns\n if (opts.maxTokens !== undefined)\n behavior.maxTokens = opts.maxTokens\n if (opts.schema !== undefined)\n behavior.schema = opts.schema\n\n const agent = createAgent({\n ...basic,\n provider: opts.provider,\n execution,\n session,\n behavior,\n ...(opts.tools !== undefined ? { tools: opts.tools } : {}),\n ...(opts.mcpServers !== undefined ? { mcpServers: opts.mcpServers } : {}),\n ...(opts.skills !== undefined ? { skills: opts.skills } : {}),\n })\n\n const collector = createRunSummaryCollector()\n const uninstallSummary = collector.install(agent.hooks)\n const uninstallEvents = opts.onEvent ? installEventAdapter(agent.hooks, opts.onEvent) : noop\n\n // Internal controller drives the wall-clock timeout and chains any external\n // signal so a host cancel and a timeout both abort the same run.\n const controller = new AbortController()\n if (opts.signal) {\n if (opts.signal.aborted)\n controller.abort(opts.signal.reason)\n else\n opts.signal.addEventListener('abort', () => controller.abort(opts.signal!.reason), { once: true })\n }\n let timedOut = false\n const timer = opts.timeoutMs && opts.timeoutMs > 0\n ? setTimeout(() => {\n timedOut = true\n controller.abort(new Error(`Headless run timed out after ${opts.timeoutMs}ms`))\n }, opts.timeoutMs)\n : undefined\n\n let stats: AgentStats | undefined\n let error: HeadlessErrorInfo | undefined\n\n try {\n stats = await agent.run({\n prompt: opts.prompt,\n signal: controller.signal,\n ...(opts.model !== undefined ? { model: opts.model } : {}),\n ...(opts.system !== undefined ? { system: opts.system } : {}),\n ...(opts.thinking !== undefined ? { thinking: opts.thinking } : {}),\n })\n }\n catch (err) {\n // The agent loop throws typed errors (AgentAbortedError,\n // AgentContextExceededError, AgentProviderError, …) — their `name` already\n // classifies the failure, so surface it directly.\n const e = err instanceof Error ? err : new Error(String(err))\n error = { message: e.message, type: e.name }\n }\n finally {\n if (timer)\n clearTimeout(timer)\n uninstallEvents()\n uninstallSummary()\n await agent.destroy()\n }\n\n // Status: a thrown error wins, but an abort/timeout can also surface as a\n // clean resolve (the loop returns partial stats), so check the signal too.\n let status: HeadlessStatus\n if (error)\n status = timedOut ? 'timeout' : controller.signal.aborted ? 'aborted' : 'error'\n else if (controller.signal.aborted)\n status = timedOut ? 'timeout' : 'aborted'\n else\n status = 'completed'\n\n const rawTranscript = session.turns.slice()\n const transcript = opts.includeThinking === false ? stripThinking(rawTranscript) : rawTranscript\n const summary = collector.latest()\n\n const result: HeadlessResult = {\n status,\n finalText: extractFinalText(rawTranscript),\n ...(stats?.output ? { output: stats.output } : {}),\n usage: {\n input: stats?.totalIn ?? 0,\n output: stats?.totalOut ?? 0,\n cacheRead: stats?.totalCacheRead ?? 0,\n cacheCreation: stats?.totalCacheCreation ?? 0,\n ...(typeof stats?.cost === 'number' ? { cost: stats.cost } : {}),\n },\n turns: stats?.turns ?? 0,\n durationMs: stats?.elapsed ?? (Date.now() - startedAt),\n numToolCalls: countToolCalls(rawTranscript),\n // Suppress `finishReason` on abort/timeout: the last persisted turn can\n // carry `finishReason: 'stop'` (e.g. the model finished a turn, a follow-up\n // continued, then the run was cancelled), which would make a consumer\n // keyed on `finishReason === 'stop'` misread a cancel as \"model finished\".\n // `status` is authoritative for those exits; let it speak alone. The\n // `'pause'` exhaustion exit keeps `status: 'completed'` so it still\n // surfaces its `finishReason: 'pause'` here.\n ...(status !== 'aborted' && status !== 'timeout' && lastFinishReason(stats)\n ? { finishReason: lastFinishReason(stats) }\n : {}),\n ...(error ? { error } : {}),\n sessionId: session.id,\n ...(summary ? { summary } : {}),\n transcript,\n }\n\n opts.onEvent?.({ type: 'result', result })\n return result\n}\n\n// ---------------------------------------------------------------------------\n// Transcript → OpenAI chat messages (SFT-ready)\n// ---------------------------------------------------------------------------\n\nexport interface OpenAIChatMessage {\n role: 'system' | 'user' | 'assistant' | 'tool'\n content: string | null\n tool_calls?: Array<{ id: string, type: 'function', function: { name: string, arguments: string } }>\n tool_call_id?: string\n}\n\n/**\n * Convert raw `session.turns` into standard OpenAI chat-completion messages:\n * assistant turns carry `tool_calls`, and each `tool_result` becomes its own\n * `role: 'tool'` message. This is the drop-in shape for an SFT renderer —\n * unlike `toOpenAI` (session/messages.ts), which emits an internal `_tag`\n * envelope meant for re-sending to a provider, not for training data.\n *\n * Fails closed on corrupt raw turns instead of fabricating tool results; silent\n * placeholders would create structurally-valid but semantically-poisoned SFT\n * examples.\n */\nexport function transcriptToOpenAIMessages(turns: SessionTurn[]): OpenAIChatMessage[] {\n const messages: OpenAIChatMessage[] = []\n let chunk: Array<{ role: 'user' | 'assistant', content: SessionContentBlock[] }> = []\n const flushChunk = () => {\n if (chunk.length === 0)\n return\n const repairs: PairingRepair[] = []\n const paired = ensureToolResultPairing(chunk, { onRepair: repair => repairs.push(repair) })\n if (repairs.length > 0) {\n throw new Error(\n `Cannot convert transcript to OpenAI messages: tool pairing repair required (${repairs.map(r => r.mode).join(', ')})`,\n )\n }\n for (const msg of paired)\n pushOpenAIChatMessage(messages, msg)\n chunk = []\n }\n\n for (const turn of turns) {\n if (turn.role === 'system') {\n flushChunk()\n messages.push({ role: 'system', content: textOf(turn.content) })\n continue\n }\n chunk.push({ role: turn.role, content: turn.content })\n }\n flushChunk()\n\n return messages\n}\n\nfunction pushOpenAIChatMessage(messages: OpenAIChatMessage[], msg: { role: 'user' | 'assistant', content: SessionContentBlock[] }): void {\n const text = textOf(msg.content)\n\n if (msg.role === 'assistant') {\n const toolCalls = msg.content.filter((b): b is ToolCallBlock => b.type === 'tool_call')\n const out: OpenAIChatMessage = { role: 'assistant', content: text || null }\n if (toolCalls.length > 0) {\n out.tool_calls = toolCalls.map(b => ({\n id: b.id,\n type: 'function' as const,\n function: { name: b.name, arguments: JSON.stringify(b.input) },\n }))\n }\n messages.push(out)\n return\n }\n\n // user turn — may carry prompt text and/or tool_result blocks\n if (text)\n messages.push({ role: 'user', content: text })\n for (const tr of msg.content.filter((b): b is ToolResultBlock => b.type === 'tool_result'))\n messages.push({ role: 'tool', tool_call_id: tr.callId, content: toolResultToText(tr.output) })\n}\n\n// ---------------------------------------------------------------------------\n// Internals\n// ---------------------------------------------------------------------------\n\ntype TextBlock = Extract<SessionContentBlock, { type: 'text' }>\ntype ToolCallBlock = Extract<SessionContentBlock, { type: 'tool_call' }>\ntype ToolResultBlock = Extract<SessionContentBlock, { type: 'tool_result' }>\n\nfunction noop(): void {}\n\nfunction textOf(content: SessionContentBlock[]): string {\n return content.filter((b): b is TextBlock => b.type === 'text').map(b => b.text).join('')\n}\n\nfunction extractFinalText(turns: SessionTurn[]): string {\n for (let i = turns.length - 1; i >= 0; i--) {\n const turn = turns[i]\n if (turn.role !== 'assistant')\n continue\n const text = textOf(turn.content)\n if (text)\n return text\n }\n return ''\n}\n\nfunction countToolCalls(turns: SessionTurn[]): number {\n let n = 0\n for (const turn of turns) {\n for (const block of turn.content) {\n if (block.type === 'tool_call')\n n++\n }\n }\n return n\n}\n\nfunction lastFinishReason(stats?: AgentStats): TurnFinishReason | undefined {\n const usages = stats?.turnUsage\n if (!usages)\n return undefined\n for (let i = usages.length - 1; i >= 0; i--) {\n if (usages[i].finishReason)\n return usages[i].finishReason\n }\n return undefined\n}\n\nfunction stripThinking(turns: SessionTurn[]): SessionTurn[] {\n return turns.map(turn => ({\n ...turn,\n content: turn.content.filter(b => b.type !== 'thinking' && b.type !== 'redacted_thinking'),\n }))\n}\n\nfunction installEventAdapter(\n hooks: Hookable<AgentHooks>,\n onEvent: (event: HeadlessEvent) => void,\n): () => void {\n const unregs: Array<() => void> = []\n const emit = (event: HeadlessEvent): void => {\n try {\n onEvent(event)\n }\n catch {\n // A consumer's sink throwing is not the adapter's concern.\n }\n }\n\n unregs.push(hooks.hook('agent:start', ctx => emit({\n type: 'start',\n runId: ctx.runId,\n ...(ctx.providerName ? { provider: ctx.providerName } : {}),\n })))\n unregs.push(hooks.hook('stream:text', ctx => emit({ type: 'text', delta: ctx.delta })))\n unregs.push(hooks.hook('stream:thinking', ctx => emit({ type: 'thinking', delta: ctx.delta })))\n unregs.push(hooks.hook('tool:before', ctx => emit({\n type: 'tool_call',\n callId: ctx.callId,\n name: ctx.name,\n input: ctx.input,\n })))\n unregs.push(hooks.hook('tool:after', ctx => emit({\n type: 'tool_result',\n callId: ctx.callId,\n name: ctx.name,\n output: toolResultToText(ctx.result),\n isError: false,\n })))\n unregs.push(hooks.hook('tool:error', ctx => emit({\n type: 'tool_result',\n callId: ctx.callId,\n name: ctx.name,\n output: ctx.error.message,\n isError: true,\n })))\n unregs.push(hooks.hook('turn:after', ctx => emit({ type: 'turn', index: ctx.turn, usage: ctx.usage })))\n unregs.push(hooks.hook('spawn:before', ctx => emit({ type: 'spawn', event: 'before', id: ctx.id })))\n unregs.push(hooks.hook('spawn:complete', ctx => emit({\n type: 'spawn',\n event: 'complete',\n id: ctx.id,\n info: { status: ctx.status ?? 'completed' },\n })))\n unregs.push(hooks.hook('spawn:error', ctx => emit({\n type: 'spawn',\n event: 'error',\n id: ctx.id,\n info: { message: ctx.error.message },\n })))\n unregs.push(hooks.hook('stream:error', ctx => emit({\n type: 'error',\n message: ctx.err instanceof Error ? ctx.err.message : String(ctx.err),\n ...(ctx.err instanceof Error ? { errorType: ctx.err.name } : {}),\n })))\n\n return () => {\n for (const un of unregs) {\n try {\n un()\n }\n catch {\n // ignore\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"headless-CZuZ_565.js","names":["basic"],"sources":["../src/run-summary.ts","../src/headless.ts"],"sourcesContent":["/**\n * Run summary collector — one JSON postmortem per `agent.run()`.\n *\n * `AgentStats` is great for billing and per-turn accounting but doesn't\n * carry a record of the *interesting* events that happened during a run\n * (errors, gate blocks, validation rejects, budget hits, MCP failures).\n * Reconstructing that from a hook stream after the fact is exactly the\n * kind of plumbing every consumer ends up re-implementing.\n *\n * This module ships:\n *\n * - {@link RunSummary} — a serializable shape that bundles totals,\n * per-model breakdown, and all the per-run incident lists.\n * - {@link createRunSummaryCollector} — installs hook listeners that\n * build up a {@link RunSummary} during the run and surfaces it on\n * `agent:done`. Calls an optional `onSummary` callback so the host can\n * forward to a log aggregator / DB / postmortem dashboard without\n * touching `agent.run()`'s return value.\n *\n * The collector is purely additive — it doesn't touch the agent loop,\n * doesn't change return shapes, and doesn't suppress any other hook\n * handlers. Drop it in alongside tracing / metrics / logging or use it\n * standalone when you only need the summary.\n */\n\nimport type { Hookable } from 'hookable'\nimport type { AgentHooks } from './agent'\nimport type { AgentStats } from './types'\nimport { statsByModel } from './stats'\n\n// ---------------------------------------------------------------------------\n// Public shape\n// ---------------------------------------------------------------------------\n\nexport interface RunSummaryTokens {\n input: number\n output: number\n cacheRead: number\n cacheCreation: number\n cost?: number\n /** First observable byte from the provider, ms from run start. */\n ttftMs?: number\n}\n\nexport interface RunSummaryByModel {\n modelId: string\n input: number\n output: number\n cacheRead: number\n cacheCreation: number\n cost: number\n turns: number\n}\n\nexport interface RunSummaryError {\n kind: 'stream' | 'tool' | 'mcp-tool' | 'mcp' | 'spawn'\n message: string\n errorType?: string\n turnId?: string\n callId?: string\n server?: string\n toolName?: string\n childId?: string\n statusCode?: number\n requestId?: string\n}\n\nexport interface RunSummaryBlock {\n callId: string\n toolName: string\n outcome: 'gate-block' | 'unknown' | 'invalid-input'\n reason?: string\n}\n\nexport interface RunSummaryValidation {\n callId: string\n toolName: string\n reason: string\n}\n\nexport interface RunSummaryBudget {\n kind: 'bytes' | 'tool-count'\n /** Tool name (for `'tool-count'`); absent for byte budgets. */\n toolName?: string\n /** `mode` for `'tool-count'`; absent for byte budgets. */\n mode?: 'steer' | 'block'\n observed: number\n limit: number\n turnId?: string\n}\n\nexport interface RunSummaryRepeatGuard {\n toolName: string\n /** Consecutive identical calls including the one that tripped the guard. */\n count: number\n threshold: number\n action: 'block' | 'abort'\n turnId?: string\n}\n\n/**\n * Postmortem snapshot of one `agent.run()`. Strictly serializable — every\n * field round-trips through `JSON.stringify` / `JSON.parse` without loss\n * so a log aggregator can ingest it as-is.\n */\nexport interface RunSummary {\n runId?: string\n parentRunId?: string\n depth: number\n agentName?: string\n startedAt: number\n endedAt: number\n durationMs: number\n status: 'completed' | 'aborted'\n turns: number\n totals: RunSummaryTokens\n byModel: RunSummaryByModel[]\n errors: RunSummaryError[]\n blocks: RunSummaryBlock[]\n validationRejects: RunSummaryValidation[]\n budgetEvents: RunSummaryBudget[]\n /**\n * Consecutive-identical repeat-guard escalations. An `action: 'abort'`\n * entry means the guard terminated the run via the agent's\n * `AbortController` (the run finalizes as `'aborted'`).\n */\n repeatGuardEvents: RunSummaryRepeatGuard[]\n /** Counts of pairing repairs, keyed by repair mode. */\n pairingRepairs: Record<string, number>\n /**\n * Postmortem snapshots of child runs that bubbled their stats up via\n * `spawn:complete`. Only present when the run actually spawned.\n */\n children?: RunSummary[]\n}\n\n// ---------------------------------------------------------------------------\n// Collector\n// ---------------------------------------------------------------------------\n\nexport interface RunSummaryCollectorOptions {\n /**\n * Called with the assembled {@link RunSummary} on every `agent:done`.\n * Synchronous — heavy I/O should be deferred (e.g. via `setImmediate`).\n */\n onSummary?: (summary: RunSummary) => void\n}\n\nexport interface RunSummaryCollector {\n /** Install the collector's hook handlers. Returns an uninstall fn. */\n install: (hooks: Hookable<AgentHooks>) => () => void\n /** Most-recent summary; `undefined` until the first `agent:done` fires. */\n latest: () => RunSummary | undefined\n}\n\n/**\n * Build a run-summary collector. State is created fresh inside each\n * `install()` call, so a single collector instance can be installed\n * across multiple agents without attribution cross-talk. `latest()`\n * returns the most-recent summary across **any** install — install\n * per-agent collectors if you need separate post-run snapshots.\n *\n * @example\n * ```ts\n * const collector = createRunSummaryCollector({\n * onSummary: s => console.log(JSON.stringify(s)),\n * })\n * const uninstall = collector.install(agent.hooks)\n * try { await agent.run({ prompt }) }\n * finally { uninstall() }\n * ```\n */\nexport function createRunSummaryCollector(\n options: RunSummaryCollectorOptions = {},\n): RunSummaryCollector {\n let last: RunSummary | undefined\n\n return {\n latest: () => last,\n install(hooks: Hookable<AgentHooks>): () => void {\n // Per-run in-progress accumulators. The hookable bus serializes\n // agent.run lifecycles per agent — we reset between runs on\n // `agent:start` and consume on `agent:done`.\n let runId: string | undefined\n let parentRunId: string | undefined\n let depth = 0\n let agentName: string | undefined\n let startedAt = Date.now()\n let aborted = false\n const errors: RunSummaryError[] = []\n const blocks: RunSummaryBlock[] = []\n const validationRejects: RunSummaryValidation[] = []\n const budgetEvents: RunSummaryBudget[] = []\n const repeatGuardEvents: RunSummaryRepeatGuard[] = []\n const pairingRepairs: Record<string, number> = {}\n const children: RunSummary[] = []\n\n function resetForNewRun(): void {\n aborted = false\n errors.length = 0\n blocks.length = 0\n validationRejects.length = 0\n budgetEvents.length = 0\n repeatGuardEvents.length = 0\n for (const k of Object.keys(pairingRepairs))\n delete pairingRepairs[k]\n children.length = 0\n }\n\n const unregisters: Array<() => void> = []\n\n unregisters.push(hooks.hook('agent:start', (ctx) => {\n resetForNewRun()\n runId = ctx.runId\n parentRunId = ctx.parentRunId\n depth = ctx.depth\n agentName = ctx.agentName\n startedAt = ctx.startedAt\n }))\n\n unregisters.push(hooks.hook('agent:abort', () => {\n aborted = true\n }))\n\n unregisters.push(hooks.hook('stream:error', (ctx) => {\n const msg = ctx.err instanceof Error ? ctx.err.message : String(ctx.err)\n const errorType = ctx.err instanceof Error ? ctx.err.name : 'unknown'\n errors.push({\n kind: 'stream',\n message: msg,\n errorType,\n turnId: ctx.turnId,\n ...(ctx.statusCode !== undefined ? { statusCode: ctx.statusCode } : {}),\n ...(ctx.requestId !== undefined ? { requestId: ctx.requestId } : {}),\n })\n }))\n\n unregisters.push(hooks.hook('tool:error', (ctx) => {\n errors.push({\n kind: 'tool',\n message: ctx.error.message,\n errorType: ctx.error.name,\n turnId: ctx.turnId,\n callId: ctx.callId,\n toolName: ctx.name,\n })\n }))\n\n unregisters.push(hooks.hook('mcp:tool:error', (ctx) => {\n errors.push({\n kind: 'mcp-tool',\n message: ctx.error.message,\n errorType: ctx.error.name,\n turnId: ctx.turnId,\n callId: ctx.callId,\n server: ctx.server,\n toolName: ctx.displayName,\n })\n }))\n\n unregisters.push(hooks.hook('mcp:error', (ctx) => {\n errors.push({\n kind: 'mcp',\n message: ctx.error.message,\n errorType: ctx.error.name,\n server: ctx.name,\n })\n }))\n\n unregisters.push(hooks.hook('spawn:error', (ctx) => {\n errors.push({\n kind: 'spawn',\n message: ctx.error.message,\n errorType: ctx.error.name,\n childId: ctx.id,\n })\n }))\n\n unregisters.push(hooks.hook('tool:dispatched', (ctx) => {\n if (ctx.outcome === 'gate-block' || ctx.outcome === 'unknown' || ctx.outcome === 'invalid-input') {\n blocks.push({\n callId: ctx.callId,\n toolName: ctx.name,\n outcome: ctx.outcome,\n ...(ctx.reason ? { reason: ctx.reason } : {}),\n })\n }\n }))\n\n unregisters.push(hooks.hook('validation:reject', (ctx) => {\n validationRejects.push({\n callId: ctx.callId,\n toolName: ctx.name,\n reason: ctx.reason,\n })\n }))\n\n unregisters.push(hooks.hook('budget:exceeded', (ctx) => {\n budgetEvents.push({\n kind: 'bytes',\n observed: ctx.bytes,\n limit: ctx.budget,\n turnId: ctx.turnId,\n })\n }))\n\n unregisters.push(hooks.hook('tool-budget:exceeded', (ctx) => {\n budgetEvents.push({\n kind: 'tool-count',\n toolName: ctx.tool,\n mode: ctx.mode,\n observed: ctx.count,\n limit: ctx.max,\n turnId: ctx.turnId,\n })\n }))\n\n unregisters.push(hooks.hook('repeat-guard:exceeded', (ctx) => {\n repeatGuardEvents.push({\n toolName: ctx.tool,\n count: ctx.count,\n threshold: ctx.threshold,\n action: ctx.action,\n turnId: ctx.turnId,\n })\n }))\n\n unregisters.push(hooks.hook('pairing:repair', (ctx) => {\n pairingRepairs[ctx.mode] = (pairingRepairs[ctx.mode] ?? 0) + 1\n }))\n\n unregisters.push(hooks.hook('agent:done', (stats) => {\n const endedAt = Date.now()\n\n // Build per-model rollup via the existing `statsByModel` helper\n // so we stay in lockstep with how the rest of the harness\n // attributes cost and tokens by model id.\n const byModel: RunSummaryByModel[] = []\n for (const [modelId, usage] of statsByModel(stats)) {\n byModel.push({\n modelId,\n input: usage.input,\n output: usage.output,\n cacheRead: usage.cacheRead,\n cacheCreation: usage.cacheCreation,\n cost: usage.cost,\n turns: usage.turns,\n })\n }\n\n // Flatten child stats into nested summaries. We don't have the\n // child's full event lists here (those landed on the child's\n // own hooks), so the nested entry is a minimal totals-only\n // record — enough for a flat per-run audit trail; consumers\n // wanting full per-child event lists install a collector on\n // each subagent.\n for (const c of stats.children ?? []) {\n children.push(minimalSummaryFromStats(c.stats, {\n depth: c.depth ?? depth + 1,\n status: c.status === 'aborted' ? 'aborted' : 'completed',\n }))\n }\n\n const summary: RunSummary = {\n ...(runId ? { runId } : {}),\n ...(parentRunId ? { parentRunId } : {}),\n depth,\n ...(agentName ? { agentName } : {}),\n startedAt,\n endedAt,\n durationMs: endedAt - startedAt,\n status: aborted ? 'aborted' : 'completed',\n turns: stats.turns,\n totals: buildTotals(stats),\n byModel,\n errors: errors.slice(),\n blocks: blocks.slice(),\n validationRejects: validationRejects.slice(),\n budgetEvents: budgetEvents.slice(),\n repeatGuardEvents: repeatGuardEvents.slice(),\n pairingRepairs: { ...pairingRepairs },\n ...(children.length > 0 ? { children: children.slice() } : {}),\n }\n\n last = summary\n try {\n options.onSummary?.(summary)\n }\n catch {\n // Sink errors are not the collector's concern.\n }\n }))\n\n let disposed = false\n return function uninstall() {\n if (disposed)\n return\n disposed = true\n for (const un of unregisters) {\n try {\n un()\n }\n catch { /* ignore */ }\n }\n }\n },\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction buildTotals(stats: AgentStats): RunSummaryTokens {\n return {\n input: stats.totalIn,\n output: stats.totalOut,\n cacheRead: stats.totalCacheRead,\n cacheCreation: stats.totalCacheCreation,\n ...(typeof stats.cost === 'number' ? { cost: stats.cost } : {}),\n ...(typeof stats.timeTillFirstTokenMs === 'number' ? { ttftMs: stats.timeTillFirstTokenMs } : {}),\n }\n}\n\nfunction minimalSummaryFromStats(\n stats: AgentStats,\n meta: { depth: number, status: 'completed' | 'aborted' },\n): RunSummary {\n const byModel: RunSummaryByModel[] = []\n for (const [modelId, usage] of statsByModel(stats)) {\n byModel.push({\n modelId,\n input: usage.input,\n output: usage.output,\n cacheRead: usage.cacheRead,\n cacheCreation: usage.cacheCreation,\n cost: usage.cost,\n turns: usage.turns,\n })\n }\n const children: RunSummary[] = []\n for (const c of stats.children ?? []) {\n children.push(minimalSummaryFromStats(c.stats, {\n depth: c.depth ?? meta.depth + 1,\n status: c.status === 'aborted' ? 'aborted' : 'completed',\n }))\n }\n return {\n depth: meta.depth,\n startedAt: 0,\n endedAt: 0,\n durationMs: stats.elapsed,\n status: meta.status,\n turns: stats.turns,\n totals: buildTotals(stats),\n byModel,\n errors: [],\n blocks: [],\n validationRejects: [],\n budgetEvents: [],\n repeatGuardEvents: [],\n pairingRepairs: {},\n ...(children.length > 0 ? { children } : {}),\n }\n}\n","/**\n * Headless mode — a non-interactive, fully-structured way to drive the agent\n * for automation and RL rollouts.\n *\n * `agent.run()` already returns rich {@link AgentStats}, the session captures a\n * lossless transcript (`session.turns`), and the hook bus exposes every\n * streaming/tool/turn event. What this module adds is the *contract* an RL loop\n * needs: one call (`runHeadless`) that runs a prompt to completion in a chosen\n * workdir, bounded by turns + wall-clock, and hands back a single serializable\n * {@link HeadlessResult} — final answer, verifiable structured output, usage,\n * and the complete trajectory — plus an optional live {@link HeadlessEvent}\n * stream (the in-process equivalent of `--output-format stream-json`).\n *\n * It is provider-agnostic: the caller passes a built {@link Provider} (e.g.\n * `local()` pointed at a vLLM server, or any of the named providers). The thin\n * CLI in `src/headless-cli.ts` wraps this with arg parsing, file/stdin I/O, and\n * JSONL transcript writing.\n */\n\nimport type { Hookable } from 'hookable'\nimport type { AgentHooks, AgentOptions } from './agent'\nimport type { ExecutionContext } from './contexts'\nimport type { Provider } from './providers'\nimport type { RunSummary } from './run-summary'\nimport type { Session, SessionStore } from './session'\nimport type { PairingRepair } from './session/messages'\nimport type { ToolDef } from './tools'\nimport type {\n AgentStats,\n McpServerConfig,\n PromptPart,\n SessionContentBlock,\n SessionTurn,\n ThinkingLevel,\n TurnFinishReason,\n TurnUsage,\n} from './types'\nimport { createAgent } from './agent'\nimport { createProcessContext } from './contexts'\nimport { basic } from './presets'\nimport { createRunSummaryCollector } from './run-summary'\nimport { createMemoryStore, createSession } from './session'\nimport { ensureToolResultPairing } from './session/messages'\nimport { toolResultToText } from './types'\n\n// ---------------------------------------------------------------------------\n// Public shapes\n// ---------------------------------------------------------------------------\n\nexport type HeadlessStatus = 'completed' | 'aborted' | 'error' | 'timeout'\n\nexport interface HeadlessUsage {\n input: number\n output: number\n cacheRead: number\n cacheCreation: number\n /** Cumulative USD cost when the provider/registry could price the run. */\n cost?: number\n}\n\nexport interface HeadlessErrorInfo {\n message: string\n /** Typed-error class name (`AgentAbortedError`, `AgentContextExceededError`, …). */\n type: string\n}\n\n/**\n * Strictly JSON-serializable postmortem of one headless run. Everything an RL\n * reward function needs: the final answer (`finalText`), the verifiable\n * structured output (`output`, present iff a `schema` was set), usage/turns,\n * and the lossless `transcript` (the SFT training data).\n */\nexport interface HeadlessResult {\n status: HeadlessStatus\n /** Concatenated text of the last assistant turn that produced any text. */\n finalText: string\n /** Schema-enforced structured output (only when `opts.schema` is set). */\n output?: Record<string, unknown>\n usage: HeadlessUsage\n turns: number\n durationMs: number\n /** Total `tool_call` blocks across the whole transcript. */\n numToolCalls: number\n /** Finish reason of the final turn that reported one. */\n finishReason?: TurnFinishReason\n error?: HeadlessErrorInfo\n sessionId: string\n /** Incident postmortem (errors, gate blocks, budget events) via run-summary. */\n summary?: RunSummary\n /** Lossless transcript — raw `session.turns`. Thinking stripped when `includeThinking: false`. */\n transcript: SessionTurn[]\n}\n\n/**\n * Live event union — the in-process equivalent of a `stream-json` line. Every\n * member is JSON-serializable; render to JSONL with {@link headlessEventToJsonl}.\n */\nexport type HeadlessEvent\n = | { type: 'start', runId: string, provider?: string }\n | { type: 'text', delta: string }\n | { type: 'thinking', delta: string }\n | { type: 'tool_call', callId: string, name: string, input: Record<string, unknown> }\n | { type: 'tool_result', callId: string, name: string, output: string, isError: boolean }\n | { type: 'turn', index: number, usage: TurnUsage }\n | { type: 'spawn', event: 'before' | 'complete' | 'error', id: string, info?: Record<string, unknown> }\n | { type: 'error', message: string, errorType?: string }\n | { type: 'result', result: HeadlessResult }\n\n/** Serialize one event as a newline-terminated JSON line (stream-json). */\nexport function headlessEventToJsonl(event: HeadlessEvent): string {\n return `${JSON.stringify(event)}\\n`\n}\n\nexport interface HeadlessOptions {\n /** User prompt — plain string or multimodal `PromptPart[]`. */\n prompt: string | PromptPart[]\n /** Built provider (e.g. `local()`, `openaiCompat(...)`, `anthropic(...)`). */\n provider: Provider\n model?: string\n /** Override the preset system prompt for this run. */\n system?: string\n thinking?: ThinkingLevel\n maxTurns?: number\n maxTokens?: number\n /** Wall-clock cap; on expiry the run is aborted and `status` becomes `'timeout'`. */\n timeoutMs?: number\n /** External abort signal — chained with the internal timeout controller. */\n signal?: AbortSignal\n /** JSON Schema for structured-output enforcement → populates `result.output`. */\n schema?: Record<string, unknown>\n /** Tool overrides. Omit to use the basic preset's tools. */\n tools?: Record<string, ToolDef>\n mcpServers?: McpServerConfig[]\n skills?: AgentOptions['skills']\n /** Execution context. Defaults to a process context rooted at `cwd`. */\n execution?: ExecutionContext\n /** Working directory for the default process context (ignored if `execution` is set). */\n cwd?: string\n /** Reuse / resume an existing session. */\n session?: Session\n /** Session store for a fresh session (defaults to an in-memory store). */\n store?: SessionStore\n /** Keep `thinking` blocks in `result.transcript` (default true). */\n includeThinking?: boolean\n /** Live event callback — the in-process stream-json equivalent. */\n onEvent?: (event: HeadlessEvent) => void\n}\n\n// ---------------------------------------------------------------------------\n// runHeadless\n// ---------------------------------------------------------------------------\n\n/**\n * Run a prompt to completion, headless, and return a single serializable\n * {@link HeadlessResult}. Safe to call concurrently for parallel rollouts —\n * each call builds its own agent + session and tears them down in `finally`.\n */\nexport async function runHeadless(opts: HeadlessOptions): Promise<HeadlessResult> {\n const startedAt = Date.now()\n const execution = opts.execution ?? createProcessContext({ cwd: opts.cwd })\n const session = opts.session ?? await createSession({ store: opts.store ?? createMemoryStore() })\n\n const behavior: NonNullable<AgentOptions['behavior']> = {}\n if (opts.maxTurns !== undefined)\n behavior.maxTurns = opts.maxTurns\n if (opts.maxTokens !== undefined)\n behavior.maxTokens = opts.maxTokens\n if (opts.schema !== undefined)\n behavior.schema = opts.schema\n\n const agent = createAgent({\n ...basic,\n provider: opts.provider,\n execution,\n session,\n behavior,\n ...(opts.tools !== undefined ? { tools: opts.tools } : {}),\n ...(opts.mcpServers !== undefined ? { mcpServers: opts.mcpServers } : {}),\n ...(opts.skills !== undefined ? { skills: opts.skills } : {}),\n })\n\n const collector = createRunSummaryCollector()\n const uninstallSummary = collector.install(agent.hooks)\n const uninstallEvents = opts.onEvent ? installEventAdapter(agent.hooks, opts.onEvent) : noop\n\n // Internal controller drives the wall-clock timeout and chains any external\n // signal so a host cancel and a timeout both abort the same run.\n const controller = new AbortController()\n if (opts.signal) {\n if (opts.signal.aborted)\n controller.abort(opts.signal.reason)\n else\n opts.signal.addEventListener('abort', () => controller.abort(opts.signal!.reason), { once: true })\n }\n let timedOut = false\n const timer = opts.timeoutMs && opts.timeoutMs > 0\n ? setTimeout(() => {\n timedOut = true\n controller.abort(new Error(`Headless run timed out after ${opts.timeoutMs}ms`))\n }, opts.timeoutMs)\n : undefined\n\n let stats: AgentStats | undefined\n let error: HeadlessErrorInfo | undefined\n\n try {\n stats = await agent.run({\n prompt: opts.prompt,\n signal: controller.signal,\n ...(opts.model !== undefined ? { model: opts.model } : {}),\n ...(opts.system !== undefined ? { system: opts.system } : {}),\n ...(opts.thinking !== undefined ? { thinking: opts.thinking } : {}),\n })\n }\n catch (err) {\n // The agent loop throws typed errors (AgentAbortedError,\n // AgentContextExceededError, AgentProviderError, …) — their `name` already\n // classifies the failure, so surface it directly.\n const e = err instanceof Error ? err : new Error(String(err))\n error = { message: e.message, type: e.name }\n }\n finally {\n if (timer)\n clearTimeout(timer)\n uninstallEvents()\n uninstallSummary()\n await agent.destroy()\n }\n\n // Status: a thrown error wins, but an abort/timeout can also surface as a\n // clean resolve (the loop returns partial stats), so check the signal too.\n let status: HeadlessStatus\n if (error)\n status = timedOut ? 'timeout' : controller.signal.aborted ? 'aborted' : 'error'\n else if (controller.signal.aborted)\n status = timedOut ? 'timeout' : 'aborted'\n else\n status = 'completed'\n\n const rawTranscript = session.turns.slice()\n const transcript = opts.includeThinking === false ? stripThinking(rawTranscript) : rawTranscript\n const summary = collector.latest()\n\n const result: HeadlessResult = {\n status,\n finalText: extractFinalText(rawTranscript),\n ...(stats?.output ? { output: stats.output } : {}),\n usage: {\n input: stats?.totalIn ?? 0,\n output: stats?.totalOut ?? 0,\n cacheRead: stats?.totalCacheRead ?? 0,\n cacheCreation: stats?.totalCacheCreation ?? 0,\n ...(typeof stats?.cost === 'number' ? { cost: stats.cost } : {}),\n },\n turns: stats?.turns ?? 0,\n durationMs: stats?.elapsed ?? (Date.now() - startedAt),\n numToolCalls: countToolCalls(rawTranscript),\n // Suppress `finishReason` on abort/timeout: the last persisted turn can\n // carry `finishReason: 'stop'` (e.g. the model finished a turn, a follow-up\n // continued, then the run was cancelled), which would make a consumer\n // keyed on `finishReason === 'stop'` misread a cancel as \"model finished\".\n // `status` is authoritative for those exits; let it speak alone. The\n // `'pause'` exhaustion exit keeps `status: 'completed'` so it still\n // surfaces its `finishReason: 'pause'` here.\n ...(status !== 'aborted' && status !== 'timeout' && lastFinishReason(stats)\n ? { finishReason: lastFinishReason(stats) }\n : {}),\n ...(error ? { error } : {}),\n sessionId: session.id,\n ...(summary ? { summary } : {}),\n transcript,\n }\n\n opts.onEvent?.({ type: 'result', result })\n return result\n}\n\n// ---------------------------------------------------------------------------\n// Transcript → OpenAI chat messages (SFT-ready)\n// ---------------------------------------------------------------------------\n\nexport interface OpenAIChatMessage {\n role: 'system' | 'user' | 'assistant' | 'tool'\n content: string | null\n tool_calls?: Array<{ id: string, type: 'function', function: { name: string, arguments: string } }>\n tool_call_id?: string\n}\n\n/**\n * Convert raw `session.turns` into standard OpenAI chat-completion messages:\n * assistant turns carry `tool_calls`, and each `tool_result` becomes its own\n * `role: 'tool'` message. This is the drop-in shape for an SFT renderer —\n * unlike `toOpenAI` (session/messages.ts), which emits an internal `_tag`\n * envelope meant for re-sending to a provider, not for training data.\n *\n * Fails closed on corrupt raw turns instead of fabricating tool results; silent\n * placeholders would create structurally-valid but semantically-poisoned SFT\n * examples.\n */\nexport function transcriptToOpenAIMessages(turns: SessionTurn[]): OpenAIChatMessage[] {\n const messages: OpenAIChatMessage[] = []\n let chunk: Array<{ role: 'user' | 'assistant', content: SessionContentBlock[] }> = []\n const flushChunk = () => {\n if (chunk.length === 0)\n return\n const repairs: PairingRepair[] = []\n const paired = ensureToolResultPairing(chunk, { onRepair: repair => repairs.push(repair) })\n if (repairs.length > 0) {\n throw new Error(\n `Cannot convert transcript to OpenAI messages: tool pairing repair required (${repairs.map(r => r.mode).join(', ')})`,\n )\n }\n for (const msg of paired)\n pushOpenAIChatMessage(messages, msg)\n chunk = []\n }\n\n for (const turn of turns) {\n if (turn.role === 'system') {\n flushChunk()\n messages.push({ role: 'system', content: textOf(turn.content) })\n continue\n }\n chunk.push({ role: turn.role, content: turn.content })\n }\n flushChunk()\n\n return messages\n}\n\nfunction pushOpenAIChatMessage(messages: OpenAIChatMessage[], msg: { role: 'user' | 'assistant', content: SessionContentBlock[] }): void {\n const text = textOf(msg.content)\n\n if (msg.role === 'assistant') {\n const toolCalls = msg.content.filter((b): b is ToolCallBlock => b.type === 'tool_call')\n const out: OpenAIChatMessage = { role: 'assistant', content: text || null }\n if (toolCalls.length > 0) {\n out.tool_calls = toolCalls.map(b => ({\n id: b.id,\n type: 'function' as const,\n function: { name: b.name, arguments: JSON.stringify(b.input) },\n }))\n }\n messages.push(out)\n return\n }\n\n // user turn — may carry prompt text and/or tool_result blocks\n if (text)\n messages.push({ role: 'user', content: text })\n for (const tr of msg.content.filter((b): b is ToolResultBlock => b.type === 'tool_result'))\n messages.push({ role: 'tool', tool_call_id: tr.callId, content: toolResultToText(tr.output) })\n}\n\n// ---------------------------------------------------------------------------\n// Internals\n// ---------------------------------------------------------------------------\n\ntype TextBlock = Extract<SessionContentBlock, { type: 'text' }>\ntype ToolCallBlock = Extract<SessionContentBlock, { type: 'tool_call' }>\ntype ToolResultBlock = Extract<SessionContentBlock, { type: 'tool_result' }>\n\nfunction noop(): void {}\n\nfunction textOf(content: SessionContentBlock[]): string {\n return content.filter((b): b is TextBlock => b.type === 'text').map(b => b.text).join('')\n}\n\nfunction extractFinalText(turns: SessionTurn[]): string {\n for (let i = turns.length - 1; i >= 0; i--) {\n const turn = turns[i]\n if (turn.role !== 'assistant')\n continue\n const text = textOf(turn.content)\n if (text)\n return text\n }\n return ''\n}\n\nfunction countToolCalls(turns: SessionTurn[]): number {\n let n = 0\n for (const turn of turns) {\n for (const block of turn.content) {\n if (block.type === 'tool_call')\n n++\n }\n }\n return n\n}\n\nfunction lastFinishReason(stats?: AgentStats): TurnFinishReason | undefined {\n const usages = stats?.turnUsage\n if (!usages)\n return undefined\n for (let i = usages.length - 1; i >= 0; i--) {\n if (usages[i].finishReason)\n return usages[i].finishReason\n }\n return undefined\n}\n\nfunction stripThinking(turns: SessionTurn[]): SessionTurn[] {\n return turns.map(turn => ({\n ...turn,\n content: turn.content.filter(b => b.type !== 'thinking' && b.type !== 'redacted_thinking'),\n }))\n}\n\nfunction installEventAdapter(\n hooks: Hookable<AgentHooks>,\n onEvent: (event: HeadlessEvent) => void,\n): () => void {\n const unregs: Array<() => void> = []\n const emit = (event: HeadlessEvent): void => {\n try {\n onEvent(event)\n }\n catch {\n // A consumer's sink throwing is not the adapter's concern.\n }\n }\n\n unregs.push(hooks.hook('agent:start', ctx => emit({\n type: 'start',\n runId: ctx.runId,\n ...(ctx.providerName ? { provider: ctx.providerName } : {}),\n })))\n unregs.push(hooks.hook('stream:text', ctx => emit({ type: 'text', delta: ctx.delta })))\n unregs.push(hooks.hook('stream:thinking', ctx => emit({ type: 'thinking', delta: ctx.delta })))\n unregs.push(hooks.hook('tool:before', ctx => emit({\n type: 'tool_call',\n callId: ctx.callId,\n name: ctx.name,\n input: ctx.input,\n })))\n unregs.push(hooks.hook('tool:after', ctx => emit({\n type: 'tool_result',\n callId: ctx.callId,\n name: ctx.name,\n output: toolResultToText(ctx.result),\n isError: false,\n })))\n unregs.push(hooks.hook('tool:error', ctx => emit({\n type: 'tool_result',\n callId: ctx.callId,\n name: ctx.name,\n output: ctx.error.message,\n isError: true,\n })))\n unregs.push(hooks.hook('turn:after', ctx => emit({ type: 'turn', index: ctx.turn, usage: ctx.usage })))\n unregs.push(hooks.hook('spawn:before', ctx => emit({ type: 'spawn', event: 'before', id: ctx.id })))\n unregs.push(hooks.hook('spawn:complete', ctx => emit({\n type: 'spawn',\n event: 'complete',\n id: ctx.id,\n info: { status: ctx.status ?? 'completed' },\n })))\n unregs.push(hooks.hook('spawn:error', ctx => emit({\n type: 'spawn',\n event: 'error',\n id: ctx.id,\n info: { message: ctx.error.message },\n })))\n unregs.push(hooks.hook('stream:error', ctx => emit({\n type: 'error',\n message: ctx.err instanceof Error ? ctx.err.message : String(ctx.err),\n ...(ctx.err instanceof Error ? { errorType: ctx.err.name } : {}),\n })))\n\n return () => {\n for (const un of unregs) {\n try {\n un()\n }\n catch {\n // ignore\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { Ct as HeadlessUsage, Dt as transcriptToOpenAIMessages, Et as runHeadless, St as HeadlessStatus, Tt as headlessEventToJsonl, bt as HeadlessOptions, vt as HeadlessErrorInfo, wt as OpenAIChatMessage, xt as HeadlessResult, yt as HeadlessEvent } from "./index-BDMVtgHD.js";
1
+ import { Ct as HeadlessUsage, Dt as transcriptToOpenAIMessages, Et as runHeadless, St as HeadlessStatus, Tt as headlessEventToJsonl, bt as HeadlessOptions, vt as HeadlessErrorInfo, wt as OpenAIChatMessage, xt as HeadlessResult, yt as HeadlessEvent } from "./index-DjIJ2qWV.js";
2
2
  export { HeadlessErrorInfo, HeadlessEvent, HeadlessOptions, HeadlessResult, HeadlessStatus, HeadlessUsage, OpenAIChatMessage, headlessEventToJsonl, runHeadless, transcriptToOpenAIMessages };
package/dist/headless.js CHANGED
@@ -1,2 +1,2 @@
1
- import { n as runHeadless, r as transcriptToOpenAIMessages, t as headlessEventToJsonl } from "./headless-AnwtKahq.js";
1
+ import { n as runHeadless, r as transcriptToOpenAIMessages, t as headlessEventToJsonl } from "./headless-CZuZ_565.js";
2
2
  export { headlessEventToJsonl, runHeadless, transcriptToOpenAIMessages };
@@ -1,4 +1,4 @@
1
- import { Cn as TurnFinishReason, Kt as AgentStats, L as SessionStore, O as SkillConfig, P as Session, Qt as McpServerConfig, _n as ThinkingLevel, b as ToolDef, bn as ToolResultContent, i as AgentOptions, in as PromptPart, l as SkillActivationState, mn as SessionTurn, pt as StreamOptions, qt as ChildRunStats, r as AgentHooks, s as ActiveSkill, ut as Provider, wn as TurnUsage, y as ToolContext } from "./agent-CL4nT5Ti.js";
1
+ import { Kt as AgentStats, L as SessionStore, O as SkillConfig, P as Session, Qt as McpServerConfig, Tn as TurnUsage, _n as ThinkingLevel, b as ToolDef, i as AgentOptions, in as PromptPart, l as SkillActivationState, mn as SessionTurn, pt as StreamOptions, qt as ChildRunStats, r as AgentHooks, s as ActiveSkill, ut as Provider, wn as TurnFinishReason, xn as ToolResultContent, y as ToolContext } from "./agent-CHemm-6O.js";
2
2
  import { a as ExecutionContext, o as ExecutionHandle } from "./types-CEAMIUXw.js";
3
3
  import { Hookable } from "hookable";
4
4
  import { OAuthClientProvider, OAuthDiscoveryState } from "@modelcontextprotocol/sdk/client/auth.js";
@@ -2447,4 +2447,4 @@ declare function definePreset(config: Preset): Preset;
2447
2447
  declare function composePresets(...presets: Preset[]): Preset;
2448
2448
  //#endregion
2449
2449
  export { cleanupPersistedSession as $, CacheDimensionSnapshot as $n, InteractionToolOptions as $t, MetricAttributes as A, BASE_INSTRUCTIONS as An, validateToolArgs as At, LoginMcpServerResult as B, buildUpToCompactPrompt as Bn, SkillsUseToolOptions as Bt, ModelUsage as C, selectFilesFromSession as Cn, HeadlessUsage as Ct, Histogram as D, compactConversation as Dn, transcriptToOpenAIMessages as Dt, Counter as E, CompactResult as En, runHeadless as Et, OAuthCallbackHandle as F, TRAILER as Fn, SpawnToolOptions as Ft, McpOAuthProviderOptions as G, anchorPreviewFor as Gn, createSkillsReadTool as Gt, McpCredentialEntry as H, CompactScope as Hn, SkillsRunScriptToolOptions as Ht, OAuthCallbackOptions as I, buildCompactPrompt as In, SpawnToolState as It, PERSISTED_STUB_PREFIX as J, summaryToTurn as Jn, createShellTool as Jt, createMemoryMcpCredentialStore as K, sliceForCompaction as Kn, shellKill as Kt, OAuthCallbackResult as L, buildFromCompactPrompt as Ln, SubagentDef as Lt, MetricsHooksOptions as M, CompactPromptBuilder as Mn, ToolSearchToolOptions as Mt, UpDownCounter as N, CompactPromptOptions as Nn, createToolSearchTool as Nt, InstrumentOptions as O, CompactInvalidInputError as On, writeFile as Ot, createMetricsHooks as P, NO_TOOLS_PREAMBLE as Pn, ChildAgent as Pt, buildPersistedStub as Q, CacheDimensionName as Qn, listFiles as Qt, startOAuthCallback as R, buildFullCompactPrompt as Rn, SubagentRegistry as Rt, splitSystemPrompt as S, selectFilesFromReadState as Sn, HeadlessStatus as St, statsByModel as T, CompactOptions as Tn, headlessEventToJsonl as Tt, McpCredentialStore as U, CompactionSlice as Un, createSkillsRunScriptTool as Ut, loginMcpServer as V, ANCHOR_PREVIEW_MAX_CHARS as Vn, createSkillsUseTool as Vt, McpOAuthProvider as W, SummaryToTurnInput as Wn, SkillsReadToolOptions as Wt, PersistInput as X, CacheBreakLoggerOptions as Xn, readFile as Xt, PERSISTENCE_PREVIEW_BYTES as Y, truncateHeadForPtlRetry as Yn, shell as Yt, PersistOutcome as Z, CacheDimensionDiff as Zn, multiEdit as Zt, appendStaticSection as _, utf8ByteLength as _n, jsonSink as _t, basicTools as a, RunSummaryBlock as an, TOOL_USE_CANCELLED_MESSAGE as at, renderSystemForWire as b, RecentFile as bn, HeadlessOptions as bt, Span as c, RunSummaryCollector as cn, LogLevel as ct, TracingHookSet as d, RunSummaryRepeatGuard as dn, Logger as dt, createInteractionTool as en, diffCacheDimensions as er, maybePersistToolResult as et, TracingHooksOptions as f, RunSummaryTokens as fn, LoggingHookSet as ft, appendDynamicSection as g, estimateTokens as gn, createLoggingHooks as gt, SystemPromptParts as h, BYTES_PER_TOKEN as hn, createLogger as ht, _default as i, RunSummary as in, SHELL_CASCADE_CANCEL_MESSAGE as it, MetricsHookSet as j, CompactDirection as jn, LazyToolEntry as jt, Meter as k, CompactPromptTooLongError as kn, ValidationResult as kt, StartSpan as l, RunSummaryCollectorOptions as ln, LogRecord as lt, SYSTEM_PROMPT_BOUNDARY as m, createRunSummaryCollector as mn, consoleSink as mt, composePresets as n, glob as nn, installCacheBreakLogger as nr, resolveTasksDir as nt, zodToJsonSchema as o, RunSummaryBudget as on, TOOL_USE_SKIPPED_MESSAGE as ot, createTracingHooks as p, RunSummaryValidation as pn, LoggingHooksOptions as pt, hasAuthorizationHeader as q, stripImagesFromTurns as qn, CreateShellToolOptions as qt, definePreset as r, edit as rn, snapshotCacheDimensions as rr, INTERRUPT_MESSAGE_FOR_TOOL_USE as rt, GEN_AI_ATTRIBUTES as s, RunSummaryByModel as sn, ConsoleSinkOptions as st, Preset as t, grep as tn, fnv1a32 as tr, resolvePersistDir as tt, TracingConventions as u, RunSummaryError as un, LogSink as ut, hasSystemPromptBoundary as v, PostCompactAttachments as vn, HeadlessErrorInfo as vt, flattenTurns as w, selectRecentFiles as wn, OpenAIChatMessage as wt, replaceDynamicSection as x, buildPostCompactAttachments as xn, HeadlessResult as xt, joinSystemPrompt as y, PostCompactRestoreOptions as yn, HeadlessEvent as yt, LoginMcpServerOptions as z, buildTailCompactPrompt as zn, createSpawnTool as zt };
2450
- //# sourceMappingURL=index-BDMVtgHD.d.ts.map
2450
+ //# sourceMappingURL=index-DjIJ2qWV.d.ts.map