zidane 6.4.2 → 6.4.4

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 (114) hide show
  1. package/README.md +7 -5
  2. package/dist/{acp-Ba4OzG71.js → acp-BLO58K3F.js} +5 -5
  3. package/dist/{acp-Ba4OzG71.js.map → acp-BLO58K3F.js.map} +1 -1
  4. package/dist/acp-cli.js +6 -6
  5. package/dist/acp.d.ts +1 -1
  6. package/dist/acp.js +1 -1
  7. package/dist/{agent-BMJKrD84.js → agent-8sUadp5M.js} +72 -9
  8. package/dist/{agent-BMJKrD84.js.map → agent-8sUadp5M.js.map} +1 -1
  9. package/dist/agent.d.ts +1 -1
  10. package/dist/agent.js +2 -2
  11. package/dist/{anthropic-BJhMEi7x.js → anthropic-D3lkw5mv.js} +3 -3
  12. package/dist/{anthropic-BJhMEi7x.js.map → anthropic-D3lkw5mv.js.map} +1 -1
  13. package/dist/{auth-C2Hmb0tt.js → auth-BzYbbdN_.js} +95 -5
  14. package/dist/auth-BzYbbdN_.js.map +1 -0
  15. package/dist/chat/pure.d.ts +3 -3
  16. package/dist/chat/pure.js +1 -1
  17. package/dist/chat.d.ts +4 -4
  18. package/dist/chat.js +4 -4
  19. package/dist/{context-transport-CwJZxs56.js → context-transport-D29WvHcm.js} +3 -3
  20. package/dist/{context-transport-CwJZxs56.js.map → context-transport-D29WvHcm.js.map} +1 -1
  21. package/dist/contexts/daytona.d.ts +1 -1
  22. package/dist/contexts/e2b.d.ts +1 -1
  23. package/dist/eval.d.ts +1 -1
  24. package/dist/eval.js +1 -1
  25. package/dist/extensions.d.ts +1 -1
  26. package/dist/extensions.js +1 -1
  27. package/dist/headless.d.ts +1 -1
  28. package/dist/headless.js +3 -3
  29. package/dist/{index-Gy9wi80M.d.ts → index-C-Nd2ZbV.d.ts} +343 -2
  30. package/dist/index-C-Nd2ZbV.d.ts.map +1 -0
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.js +11 -10
  33. package/dist/index.js.map +1 -1
  34. package/dist/{login-llWTV13a.js → login-CMVVnAHS.js} +2 -2
  35. package/dist/{login-llWTV13a.js.map → login-CMVVnAHS.js.map} +1 -1
  36. package/dist/{mcp-IaEpSauj.js → mcp-3GXUBwur.js} +3 -3
  37. package/dist/{mcp-IaEpSauj.js.map → mcp-3GXUBwur.js.map} +1 -1
  38. package/dist/mcp.d.ts +1 -1
  39. package/dist/mcp.js +1 -1
  40. package/dist/{messages-D1EryrDs.js → messages-C01kKGj0.js} +2 -2
  41. package/dist/{messages-D1EryrDs.js.map → messages-C01kKGj0.js.map} +1 -1
  42. package/dist/{openai-compat-0MJq4-g9.js → openai-compat-B3c_hzwf.js} +42 -2
  43. package/dist/openai-compat-B3c_hzwf.js.map +1 -0
  44. package/dist/output/stream-json.d.ts +1 -1
  45. package/dist/output/terminal.d.ts +1 -1
  46. package/dist/presets.d.ts +1 -1
  47. package/dist/presets.js +1 -1
  48. package/dist/providers/anthropic.d.ts +1 -1
  49. package/dist/providers/anthropic.js +1 -1
  50. package/dist/providers/arcee.d.ts +1 -1
  51. package/dist/providers/arcee.js +1 -1
  52. package/dist/providers/baseten.d.ts +1 -1
  53. package/dist/providers/baseten.js +1 -1
  54. package/dist/providers/cerebras.d.ts +1 -1
  55. package/dist/providers/cerebras.js +1 -1
  56. package/dist/providers/local.d.ts +1 -1
  57. package/dist/providers/local.js +1 -1
  58. package/dist/providers/openai-compat.d.ts +1 -1
  59. package/dist/providers/openai-compat.js +1 -1
  60. package/dist/providers/openai.d.ts +1 -1
  61. package/dist/providers/openai.js +2 -2
  62. package/dist/providers/openrouter.d.ts +1 -1
  63. package/dist/providers/openrouter.js +1 -1
  64. package/dist/providers/xai.d.ts +1 -1
  65. package/dist/providers/xai.js +1 -1
  66. package/dist/{providers-BSrJx0Tn.js → providers-z1vU0b2Q.js} +100 -4
  67. package/dist/providers-z1vU0b2Q.js.map +1 -0
  68. package/dist/providers.d.ts +2 -2
  69. package/dist/providers.js +5 -5
  70. package/dist/restate.d.ts +52 -2
  71. package/dist/restate.d.ts.map +1 -1
  72. package/dist/restate.js +151 -33
  73. package/dist/restate.js.map +1 -1
  74. package/dist/session/sqlite.d.ts +1 -1
  75. package/dist/{session-B40flcj7.js → session-cr9VdoEO.js} +2 -2
  76. package/dist/{session-B40flcj7.js.map → session-cr9VdoEO.js.map} +1 -1
  77. package/dist/session.d.ts +1 -1
  78. package/dist/session.js +2 -2
  79. package/dist/skills.d.ts +1 -1
  80. package/dist/{stdio-D-02FOVT.js → stdio-BvL8HGYW.js} +2 -2
  81. package/dist/{stdio-D-02FOVT.js.map → stdio-BvL8HGYW.js.map} +1 -1
  82. package/dist/{stdio-loader-Byqw5KjJ.js → stdio-loader-CjfoqBle.js} +2 -2
  83. package/dist/{stdio-loader-Byqw5KjJ.js.map → stdio-loader-CjfoqBle.js.map} +1 -1
  84. package/dist/{tool-formatters-CU0memLh.d.ts → tool-formatters-DPQjso_C.d.ts} +2 -2
  85. package/dist/{tool-formatters-CU0memLh.d.ts.map → tool-formatters-DPQjso_C.d.ts.map} +1 -1
  86. package/dist/{read-state-Dt7UbVsd.js → tool-state-DTs-3ZHH.js} +218 -2
  87. package/dist/tool-state-DTs-3ZHH.js.map +1 -0
  88. package/dist/tools/fetch-url.d.ts +1 -1
  89. package/dist/tools/web-search.d.ts +1 -1
  90. package/dist/tools.d.ts +1 -1
  91. package/dist/tools.js +2 -2
  92. package/dist/{transcript-anchors-4IdT10xC.d.ts → transcript-anchors-BCUpbNxc.d.ts} +2 -2
  93. package/dist/{transcript-anchors-4IdT10xC.d.ts.map → transcript-anchors-BCUpbNxc.d.ts.map} +1 -1
  94. package/dist/{transcript-anchors-CJ4gJn1T.js → transcript-anchors-CgDzYin1.js} +5 -5
  95. package/dist/{transcript-anchors-CJ4gJn1T.js.map → transcript-anchors-CgDzYin1.js.map} +1 -1
  96. package/dist/tui.d.ts +19 -3
  97. package/dist/tui.d.ts.map +1 -1
  98. package/dist/tui.js +90 -54
  99. package/dist/tui.js.map +1 -1
  100. package/dist/{turn-operations-B08dE8kH.d.ts → turn-operations-Bu2Hkinw.d.ts} +3 -3
  101. package/dist/{turn-operations-B08dE8kH.d.ts.map → turn-operations-Bu2Hkinw.d.ts.map} +1 -1
  102. package/dist/{turn-operations-CBdrdYiF.js → turn-operations-CAvi8NYt.js} +67 -2
  103. package/dist/{turn-operations-CBdrdYiF.js.map → turn-operations-CAvi8NYt.js.map} +1 -1
  104. package/dist/types.d.ts +2 -2
  105. package/dist/{xai-CpPbCGWO.js → xai-BPwMQSuF.js} +2 -2
  106. package/dist/{xai-CpPbCGWO.js.map → xai-BPwMQSuF.js.map} +1 -1
  107. package/docs/ARCHITECTURE.md +2 -0
  108. package/docs/RESTATE.md +66 -2
  109. package/package.json +8 -8
  110. package/dist/auth-C2Hmb0tt.js.map +0 -1
  111. package/dist/index-Gy9wi80M.d.ts.map +0 -1
  112. package/dist/openai-compat-0MJq4-g9.js.map +0 -1
  113. package/dist/providers-BSrJx0Tn.js.map +0 -1
  114. package/dist/read-state-Dt7UbVsd.js.map +0 -1
package/dist/acp-cli.js CHANGED
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import { Vt as resolveStorageDirs, ht as basic_default } from "./agent-BMJKrD84.js";
2
+ import { Vt as resolveStorageDirs, ht as basic_default } from "./agent-8sUadp5M.js";
3
3
  import { r as createProcessContext } from "./contexts-DWVt7MvF.js";
4
4
  import { createSandboxContext } from "./contexts/sandbox.js";
5
- import { m as openaiCompat } from "./openai-compat-0MJq4-g9.js";
6
- import { n as anthropic } from "./anthropic-BJhMEi7x.js";
5
+ import { m as openaiCompat } from "./openai-compat-B3c_hzwf.js";
6
+ import { n as anthropic } from "./anthropic-D3lkw5mv.js";
7
7
  import { arcee } from "./providers/arcee.js";
8
8
  import { baseten } from "./providers/baseten.js";
9
9
  import { cerebras } from "./providers/cerebras.js";
10
- import { t as xai } from "./xai-CpPbCGWO.js";
10
+ import { t as xai } from "./xai-BPwMQSuF.js";
11
11
  import { openai } from "./providers/openai.js";
12
12
  import { openrouter } from "./providers/openrouter.js";
13
- import { d as StartUsageError, f as buildStartLocalOptions, h as startProviderNames, i as withAcpDefaultTools, m as startLocalArgOptions, p as parseStartArgValues, t as runAcpStdioServer } from "./acp-Ba4OzG71.js";
14
- import { f as credKeyOf, i as readCredentials, l as BUILTIN_PROVIDERS, r as credentialsPath, t as detectAuth, y as modelsForDescriptor } from "./auth-C2Hmb0tt.js";
13
+ import { d as StartUsageError, f as buildStartLocalOptions, h as startProviderNames, i as withAcpDefaultTools, m as startLocalArgOptions, p as parseStartArgValues, t as runAcpStdioServer } from "./acp-BLO58K3F.js";
14
+ import { f as credKeyOf, i as readCredentials, l as BUILTIN_PROVIDERS, r as credentialsPath, t as detectAuth, y as modelsForDescriptor } from "./auth-BzYbbdN_.js";
15
15
  import { createDaytonaProvider } from "./contexts/daytona.js";
16
16
  import { createDockerContext } from "./contexts/docker.js";
17
17
  import { createE2BProvider } from "./contexts/e2b.js";
package/dist/acp.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Fp as AgentBehavior, Hm as TurnUsage, Nm as ToolResultContent, Qp as McpServerConfig, Wi as Agent, fh as Session, gh as SessionStore, lm as PromptPart, qi as AgentOptions, qm as ToolDef, rf as Provider, t as Preset, vm as SessionContentBlock } from "./index-Gy9wi80M.js";
1
+ import { $m as ToolDef, Dh as Session, Jm as TurnUsage, Vp as AgentBehavior, Wi as Agent, hm as PromptPart, im as McpServerConfig, jh as SessionStore, qi as AgentOptions, rf as Provider, t as Preset, wm as SessionContentBlock, zm as ToolResultContent } from "./index-C-Nd2ZbV.js";
2
2
  import { c as ExecutionContext } from "./types-M2DauK2D.js";
3
3
  import { Readable, Writable } from "node:stream";
4
4
 
package/dist/acp.js CHANGED
@@ -1,2 +1,2 @@
1
- import { _ as createJsonRpcConnection, a as wrapToolsForAcpClient, c as sessionBlocksToAcp, g as JsonRpcRemoteError, i as withAcpDefaultTools, l as stopReasonFromRun, n as AcpProtocolError, o as acpMcpServersToZidane, r as createAcpServer, s as acpPromptToPromptParts, t as runAcpStdioServer, u as toolResultToAcpContent } from "./acp-Ba4OzG71.js";
1
+ import { _ as createJsonRpcConnection, a as wrapToolsForAcpClient, c as sessionBlocksToAcp, g as JsonRpcRemoteError, i as withAcpDefaultTools, l as stopReasonFromRun, n as AcpProtocolError, o as acpMcpServersToZidane, r as createAcpServer, s as acpPromptToPromptParts, t as runAcpStdioServer, u as toolResultToAcpContent } from "./acp-BLO58K3F.js";
2
2
  export { AcpProtocolError, JsonRpcRemoteError, acpMcpServersToZidane, acpPromptToPromptParts, createAcpServer, createJsonRpcConnection, runAcpStdioServer, sessionBlocksToAcp, stopReasonFromRun, toolResultToAcpContent, withAcpDefaultTools, wrapToolsForAcpClient };
@@ -1,7 +1,7 @@
1
1
  import { a as rewriteMessagesToWire, i as rewriteContentToCanonical, n as buildAliasMaps, o as toCanonicalName, r as buildSanitizedWireAliases, s as toWireName, t as augmentMcpDoubleUnderscoreAliases } from "./aliasing-lVFbm81n.js";
2
2
  import { a as isWireTurn, c as toolOutputByteLength, i as documentBlockMarker, l as toolResultToText, o as sanitizeToolResultMetadata, s as toolOutputBudgetByteLength, t as DEFAULT_AGENT_CLOCK } from "./types-BIarq1qE.js";
3
3
  import { i as styleReplacementForVia, n as resolveOldString, r as stripLineNumberPrefixes, t as describeVia } from "./edit-utils-EGosADZq.js";
4
- import { a as hydrateReadStateFromSessionAsync, c as readStateKey, l as resolveReadStateMap, n as getToolDedupState, o as markReadStateElided, r as hashContent, s as noteStaleRejection, t as getReadState, u as staleRefusalHint } from "./read-state-Dt7UbVsd.js";
4
+ import { a as getReadState, d as noteStaleRejection, f as readStateKey, l as hydrateReadStateFromSessionAsync, m as staleRefusalHint, n as createToolStateController, o as getToolDedupState, p as resolveReadStateMap, s as hashContent, u as markReadStateElided } from "./tool-state-DTs-3ZHH.js";
5
5
  import { n as estimateTokens, r as utf8ByteLength } from "./utils-ngQzYzZD.js";
6
6
  import { t as buildContextBreakdown } from "./context-breakdown-Dzo25N45.js";
7
7
  import { a as formatDuration, c as previewLine, o as formatTaskStatus, s as formatTaskSummary } from "./format-BF745pLL.js";
@@ -14,11 +14,11 @@ import { C as stripShellInterpolations, O as validateResourcePathReal, S as inte
14
14
  import { n as writeFileAtomicAsync, t as writeFileAtomic } from "./atomic-write-B7zr1ddF.js";
15
15
  import { r as createLogger, t as consoleSink } from "./logger-DBX9uYOw.js";
16
16
  import { n as reconcileImageMediaType } from "./media-sniff-UKijEaiQ.js";
17
- import { d as wrapDiscoveredMcpTools, i as deriveMcpToolMeta, n as connectMcpServers, s as nonOwningMcpView } from "./mcp-IaEpSauj.js";
18
- import { M as buildPromptMessage, N as canonicalizePrompt } from "./openai-compat-0MJq4-g9.js";
17
+ import { d as wrapDiscoveredMcpTools, i as deriveMcpToolMeta, n as connectMcpServers, s as nonOwningMcpView } from "./mcp-3GXUBwur.js";
18
+ import { M as buildPromptMessage, N as canonicalizePrompt } from "./openai-compat-B3c_hzwf.js";
19
19
  import { appendStaticSection, renderSystemForWire } from "./prompt.js";
20
- import { a as detectTurnInterruption, c as ensureToolResultPairing, l as filterUnresolvedToolUses, m as resolveContentRefsInMessages, n as SYNTHETIC_TOOL_RESULT_PLACEHOLDER, p as remintDuplicateToolCallIds, s as ensureEndsWithUserMessage } from "./messages-D1EryrDs.js";
21
- import { a as getExtensionSessionState, c as setExtensionSessionState, l as withExtensionSession, n as currentExtensionSession, r as deleteExtensionSessionState, s as resumeChainRunIds } from "./session-B40flcj7.js";
20
+ import { a as detectTurnInterruption, c as ensureToolResultPairing, l as filterUnresolvedToolUses, m as resolveContentRefsInMessages, n as SYNTHETIC_TOOL_RESULT_PLACEHOLDER, p as remintDuplicateToolCallIds, s as ensureEndsWithUserMessage } from "./messages-C01kKGj0.js";
21
+ import { a as getExtensionSessionState, c as setExtensionSessionState, l as withExtensionSession, n as currentExtensionSession, r as deleteExtensionSessionState, s as resumeChainRunIds } from "./session-cr9VdoEO.js";
22
22
  import { n as flattenTurns, r as formatTokenUsage, t as effectiveInputFromTurn } from "./stats-DAKBEKjc.js";
23
23
  import { a as withInactivityTimeout, i as settleWithinTimeout, n as linkAbortSignal, o as withTimeout$1, r as resolveTimeoutMs, t as OperationTimeoutError } from "./timeout-BDetbuN6.js";
24
24
  import { createRequire } from "node:module";
@@ -12514,6 +12514,53 @@ function buildToolHookBase(ctx, turnId, callId, name, displayName, input) {
12514
12514
  ...typeof ctx.depth === "number" ? { depth: ctx.depth } : {}
12515
12515
  };
12516
12516
  }
12517
+ /**
12518
+ * Commit a settled call's staged tool state.
12519
+ *
12520
+ * A store failure must not kill the call: the tool body already ran and
12521
+ * already did its side effects, so rejecting here would swallow the
12522
+ * `tool_result` and fail the run on a bookkeeping write. The commit is
12523
+ * store-first (see `createToolStateController`), so a failure leaves neither
12524
+ * the store nor the in-memory snapshot claiming the write — the tool's state
12525
+ * write simply didn't happen.
12526
+ *
12527
+ * Reported UNCONDITIONALLY, not behind `ZIDANE_DEBUG`: a dropped state write is
12528
+ * a durable-persistence failure, and the consequence is precisely the class of
12529
+ * bug this state exists to prevent (a one-shot re-serving a payload it already
12530
+ * delivered, a cursor rewinding). The nearest precedent is the session store's
12531
+ * `updateRun` degradation in `agent.ts`, which also logs and continues. A
12532
+ * silent drop here would be indistinguishable from success.
12533
+ *
12534
+ * `tool-state:commit-failed` is the structured seam — it carries the ops that
12535
+ * did not land, so a host can alert or replay them. The stderr line is the
12536
+ * fallback for hosts that registered nothing; a handler setting `handled`
12537
+ * suppresses it. The hook itself is guarded: a throwing consumer must not take
12538
+ * down a dispatch path whose tool has already run.
12539
+ */
12540
+ async function commitToolState(ctx, callId, toolName) {
12541
+ if (!ctx.toolState) return;
12542
+ const pending = ctx.toolState.pending(callId);
12543
+ try {
12544
+ await ctx.toolState.commit(callId);
12545
+ } catch (err) {
12546
+ ctx.toolState.discard(callId);
12547
+ const error = err instanceof Error ? err : new Error(String(err));
12548
+ const hookCtx = {
12549
+ runId: ctx.runId,
12550
+ callId,
12551
+ toolName,
12552
+ ops: pending,
12553
+ error,
12554
+ handled: false
12555
+ };
12556
+ try {
12557
+ await ctx.hooks.callHook("tool-state:commit-failed", hookCtx);
12558
+ } catch (hookErr) {
12559
+ console.error("[zidane] tool-state:commit-failed handler threw; continuing:", hookErr);
12560
+ }
12561
+ if (!hookCtx.handled) console.error(`[zidane] tool state commit for ${toolName} (${callId}) failed; the write did NOT land, continuing:`, error);
12562
+ }
12563
+ }
12517
12564
  async function executeSingleTool(ctx, call, turnId) {
12518
12565
  const toolDef = ctx.tools[call.name];
12519
12566
  const callId = call.id;
@@ -12677,6 +12724,7 @@ async function runSingleToolDispatch(ctx, call, turnId, fixed) {
12677
12724
  ...ctx.parentRunId !== void 0 ? { parentRunId: ctx.parentRunId } : {},
12678
12725
  ...ctx.session ? { session: ctx.session } : {},
12679
12726
  ...ctx.readState ? { readState: ctx.readState } : {},
12727
+ ...ctx.toolState ? { state: ctx.toolState.begin(callId) } : {},
12680
12728
  ...typeof ctx.depth === "number" ? { depth: ctx.depth } : {},
12681
12729
  clock: ctx.clock,
12682
12730
  reportOutcome: (outcome) => {
@@ -12731,7 +12779,10 @@ async function runSingleToolDispatch(ctx, call, turnId, fixed) {
12731
12779
  isError = true;
12732
12780
  } else {
12733
12781
  const error = err instanceof Error ? err : new Error(String(err));
12734
- if (ctx.shouldRethrowToolError?.(error)) throw error;
12782
+ if (ctx.shouldRethrowToolError?.(error)) {
12783
+ ctx.toolState?.discard(callId);
12784
+ throw error;
12785
+ }
12735
12786
  const errorCtx = {
12736
12787
  ...buildToolHookBase(ctx, turnId, callId, call.name, displayName, effectiveInput),
12737
12788
  error
@@ -12741,6 +12792,7 @@ async function runSingleToolDispatch(ctx, call, turnId, fixed) {
12741
12792
  isError = true;
12742
12793
  }
12743
12794
  }
12795
+ await commitToolState(ctx, callId, call.name);
12744
12796
  if (cancelledByUser) {
12745
12797
  const reason = typeof perCallAbort.signal.reason === "string" ? perCallAbort.signal.reason : "cancelled-by-user";
12746
12798
  await ctx.hooks.callHook("tool:cancelled", {
@@ -13081,6 +13133,7 @@ async function executeCustomToolBatch(ctx, toolCalls, turnId, executor) {
13081
13133
  for (const start of starts) {
13082
13134
  childCtx.toolCancels?.unregister(start.callId);
13083
13135
  start.disposeSignal();
13136
+ childCtx.toolState?.discard(start.callId);
13084
13137
  }
13085
13138
  }
13086
13139
  };
@@ -13271,6 +13324,7 @@ async function startDurableToolExecution(ctx, call, turnId, index) {
13271
13324
  ...ctx.parentRunId !== void 0 ? { parentRunId: ctx.parentRunId } : {},
13272
13325
  ...ctx.session ? { session: ctx.session } : {},
13273
13326
  ...ctx.readState ? { readState: ctx.readState } : {},
13327
+ ...ctx.toolState ? { state: ctx.toolState.begin(callId) } : {},
13274
13328
  ...typeof ctx.depth === "number" ? { depth: ctx.depth } : {},
13275
13329
  clock: ctx.clock,
13276
13330
  reportOutcome: (outcome) => {
@@ -13297,6 +13351,7 @@ async function startDurableToolExecution(ctx, call, turnId, index) {
13297
13351
  };
13298
13352
  }
13299
13353
  async function completeDurableToolExecution(ctx, start, output) {
13354
+ await commitToolState(ctx, start.callId, start.name);
13300
13355
  const reportedOutcome = start.reportedOutcome();
13301
13356
  const emitted = await emitToolResult(ctx, {
13302
13357
  turnId: start.turnId,
@@ -13318,7 +13373,11 @@ async function completeDurableToolExecution(ctx, start, output) {
13318
13373
  };
13319
13374
  }
13320
13375
  async function failDurableToolExecution(ctx, start, err, cancelMessage) {
13321
- if (ctx.shouldRethrowToolError?.(err)) throw err;
13376
+ if (ctx.shouldRethrowToolError?.(err)) {
13377
+ ctx.toolState?.discard(start.callId);
13378
+ throw err;
13379
+ }
13380
+ await commitToolState(ctx, start.callId, start.name);
13322
13381
  const isAbortError = err instanceof Error && err.name === "AbortError";
13323
13382
  if (isAbortError && start.perCallAbort.signal.aborted) {
13324
13383
  const reason = typeof start.perCallAbort.signal.reason === "string" ? start.perCallAbort.signal.reason : "cancelled-by-user";
@@ -13848,6 +13907,7 @@ const HOOK_EVENT_SET = /* @__PURE__ */ new Set([
13848
13907
  "tool:cancelled",
13849
13908
  "tool:transform",
13850
13909
  "tool:unknown",
13910
+ "tool-state:commit-failed",
13851
13911
  "validation:reject",
13852
13912
  "validation:coerce",
13853
13913
  "context:transform",
@@ -14661,12 +14721,13 @@ function warnContextContributorFailureOnce(contributor, err) {
14661
14721
  process.stderr.write(`[zidane/agent] context breakdown contributor failed${owner}: ${errorMessage(err)}\n`);
14662
14722
  }
14663
14723
  function createAgent(rawOptions) {
14664
- const { provider: providerOption, name: agentName, system: agentSystem, tools: agentTools, toolAliases, behavior: agentBehavior, execution, handle: injectedHandle, mcpServers, session, readState: agentReadState, skills: agentSkills, mcpConnector, mcpToolWrap, eager, hooks: initialHooks, clock: agentClock, toolKill, contextBreakdownSections, runTransforms, behaviorTransforms, toolCatalogTransforms, mcpConfigTransforms, skillPolicies, toolResultMetadata } = foldExtensionRegistry(rawOptions);
14724
+ const { provider: providerOption, name: agentName, system: agentSystem, tools: agentTools, toolAliases, behavior: agentBehavior, execution, handle: injectedHandle, mcpServers, session, readState: agentReadState, toolState: toolStateStore, skills: agentSkills, mcpConnector, mcpToolWrap, eager, hooks: initialHooks, clock: agentClock, toolKill, contextBreakdownSections, runTransforms, behaviorTransforms, toolCatalogTransforms, mcpConfigTransforms, skillPolicies, toolResultMetadata } = foldExtensionRegistry(rawOptions);
14665
14725
  const providers = normalizeProviders(providerOption);
14666
14726
  const provider = providers[0];
14667
14727
  const hooks = createHooks();
14668
14728
  const executionContext = execution ?? createProcessContext();
14669
14729
  const sourceTools = agentTools ?? {};
14730
+ const toolStateController = createToolStateController(toolStateStore);
14670
14731
  if (initialHooks) for (const [event, handler] of Object.entries(initialHooks)) {
14671
14732
  if (!isKnownHookEvent(event)) throw new Error(`Unknown hook event "${event}" passed to createAgent(). See AgentHooks for valid events.`);
14672
14733
  const handlerList = Array.isArray(handler) ? handler : [handler];
@@ -15294,6 +15355,7 @@ function createAgent(rawOptions) {
15294
15355
  ...compactKeepTurns !== void 0 ? { compactKeepTurns } : {}
15295
15356
  });
15296
15357
  try {
15358
+ await toolStateController.hydrate();
15297
15359
  const stats = await runLoop({
15298
15360
  provider: runProvider,
15299
15361
  targets,
@@ -15342,6 +15404,7 @@ function createAgent(rawOptions) {
15342
15404
  ...modelCatalog !== void 0 ? { modelCatalog } : {},
15343
15405
  ...session ? { session } : {},
15344
15406
  ...agentReadState ? { readState: agentReadState } : {},
15407
+ toolState: toolStateController,
15345
15408
  ...options.parentRunId ? { parentRunId: options.parentRunId } : {},
15346
15409
  depth: runDepth,
15347
15410
  thinkingBudget,
@@ -15963,4 +16026,4 @@ function createAgent(rawOptions) {
15963
16026
  //#endregion
15964
16027
  export { removeInstalledExtension as $, readKeybindings as $t, NO_TOOLS_PREAMBLE as A, looksBinary as At, stripImagesFromTurns as B, validateToolArgs as Bt, resolveTasksDir as C, shouldAutoCompact as Cn, createSkillsRunScriptTool as Ct, selectRecentFiles as D, stableStringify as Dn, shell as Dt, selectFilesFromSession as E, normalizeShellCommand as En, createShellTool as Et, buildTailCompactPrompt as F, listFiles as Ft, EMPTY_EXTENSION_REGISTRY as G, KEYBINDING_KEY_COL_WIDTH as Gt, truncateHeadForPtlRetry as H, DEFAULT_KEYBINDINGS as Ht, buildUpToCompactPrompt as I, createInteractionTool as It, fetchExtensionSource as J, groupBindings as Jt, createExtensionPromptBridge as K, ensureKeybindingsFile as Kt, ANCHOR_PREVIEW_MAX_CHARS as L, grep as Lt, buildCompactPrompt as M, createModelSearchTool as Mt, buildFromCompactPrompt as N, formatModelLine as Nt, compactConversation as O, tailTruncate as Ot, buildFullCompactPrompt as P, matchModelEntries as Pt, readExtensionInstallProvenance as Q, parseBindingSpec as Qt, anchorPreviewFor as R, glob as Rt, resolveSessionDir as S, effectiveContextWindow as Sn, createSkillsUseTool as St, selectFilesFromReadState as T, defaultRepeatGuardTracked as Tn, shellKill as Tt, CompactInvalidInputError as U, KEYBINDING_DEFS as Ut, summaryToTurn as V, resolveStorageDirs as Vt, CompactPromptTooLongError as W, KEYBINDING_DEF_BY_ACTION as Wt, listExtensionCandidates as X, matchesBinding as Xt, installExtensionFromSpec as Y, keybindingsPath as Yt, parseExtensionInstallSource as Z, mergeKeybindings as Zt, rehomePersistedStubs as _, resolveExtensionConfigValue as _n, WAIT_TASK_TIMED_OUT_PREFIX as _t, SHELL_CASCADE_CANCEL_MESSAGE as a, defaultExtensionScanPaths as an, composeExtensionPreset as at, resolveMcpWarningsDir as b, AUTO_COMPACT_MIN_GROWTH_FRACTION as bn, createSpawnTool as bt, applyCompactSummaryCutoff as c, isExtensionDefinition as cn, mergeContributions as ct, PERSISTED_STUB_PREFIX as d, defineExtension as dn, createWorkspaceSurface as dt, readKeybindingsRaw as en, updateInstalledExtension as et, PERSISTENCE_PREVIEW_BYTES as f, clampExtensionConfigNumber as fn, composePresets as ft, migrateSessionArtifactDirs as g, resolveExtensionConfig as gn, writeFile$1 as gt, maybePersistToolResult as h, isValidExtensionConfigValue as hn, basic_default as ht, INTERRUPT_MESSAGE_FOR_TOOL_USE as i, ENTRY_CANDIDATES as in, buildExtensionRegistry as it, TRAILER as j, multiEdit as jt, BASE_INSTRUCTIONS as k, readFile$1 as kt, collectNewlyStaleReadPaths as l, parseExtensionScanPathEnv as ln, partitionExtensionCatalog as lt, cleanupPersistedSession as m, isValidExtensionConfigItem as mn, basicTools as mt, normalizeProviders as n, stripJsonComments as nn, discoverAndBuildExtensionRegistry as nt, TOOL_USE_CANCELLED_MESSAGE as o, discoverExtensions as on, disposeExtensionRegistry as ot, buildPersistedStub as p, coerceExtensionConfigInput as pn, definePreset as pt, ExtensionInstallError as q, formatBindingForDisplay as qt, resolveModelTargets as r, registerExtensionHostModules as rn, buildExtensionPreset as rt, TOOL_USE_SKIPPED_MESSAGE as s, inlineLoadedExtension as sn, filterExtensionRegistry as st, createAgent as t, resolveExtensionKeybindings as tn, createExtensionHud as tt, renderStaleReadNotice as u, scanExtensionDirectories as un, createExtensionHostRuntimeBridge as ut, resolveLegacyPersistDir as v, sanitizeExtensionConfigActionPatch as vn, waitTask as vt, buildPostCompactAttachments as w, defaultRepeatGuardNormalize as wn, createSkillsReadTool as wt, resolvePersistDir as x, OUTPUT_RESERVE_TOKENS as xn, isSpawnTool as xt, resolveLegacySessionDir as y, toWireConfigSchema as yn, createToolSearchTool as yt, sliceForCompaction as z, edit as zt };
15965
16028
 
15966
- //# sourceMappingURL=agent-BMJKrD84.js.map
16029
+ //# sourceMappingURL=agent-8sUadp5M.js.map