zidane 6.2.35 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -5
- package/dist/{acp-DZNCQaTQ.js → acp-BCg03Fqc.js} +6 -6
- package/dist/{acp-DZNCQaTQ.js.map → acp-BCg03Fqc.js.map} +1 -1
- package/dist/acp-cli.js +7 -7
- package/dist/acp.d.ts +2 -2
- package/dist/acp.js +1 -1
- package/dist/{agent-CrPwqpLI.js → agent-DO8s7bDf.js} +168 -23
- package/dist/agent-DO8s7bDf.js.map +1 -0
- package/dist/agent.d.ts +2 -2
- package/dist/agent.js +4 -4
- package/dist/{anthropic-asnZVFS_.js → anthropic-B3hj9OMm.js} +32 -13
- package/dist/anthropic-B3hj9OMm.js.map +1 -0
- package/dist/{auth-C5YTniaq.js → auth-kqdSYLMU.js} +4 -4
- package/dist/{auth-C5YTniaq.js.map → auth-kqdSYLMU.js.map} +1 -1
- package/dist/{cache-telemetry-BhTryxFT.js → cache-telemetry-DzyfqSds.js} +87 -5
- package/dist/cache-telemetry-DzyfqSds.js.map +1 -0
- package/dist/chat/pure.d.ts +3 -3
- package/dist/chat.d.ts +42 -4
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +31 -3
- package/dist/chat.js.map +1 -1
- package/dist/context-transport-CTLvmkj8.js +84 -0
- package/dist/context-transport-CTLvmkj8.js.map +1 -0
- package/dist/contexts/daytona.d.ts +33 -4
- package/dist/contexts/daytona.d.ts.map +1 -1
- package/dist/contexts/daytona.js +136 -0
- package/dist/contexts/daytona.js.map +1 -1
- package/dist/contexts/docker.d.ts +1 -1
- package/dist/contexts/docker.d.ts.map +1 -1
- package/dist/contexts/docker.js +85 -2
- package/dist/contexts/docker.js.map +1 -1
- package/dist/contexts/e2b.d.ts +34 -4
- package/dist/contexts/e2b.d.ts.map +1 -1
- package/dist/contexts/e2b.js +92 -0
- package/dist/contexts/e2b.js.map +1 -1
- package/dist/contexts/sandbox.d.ts +1 -1
- package/dist/contexts/sandbox.js +4 -2
- package/dist/contexts/sandbox.js.map +1 -1
- package/dist/{contexts-o8y5B3Tm.js → contexts-DbMuUPjS.js} +92 -5
- package/dist/contexts-DbMuUPjS.js.map +1 -0
- package/dist/contexts.d.ts +4 -4
- package/dist/contexts.js +1 -1
- package/dist/eval.d.ts +1 -1
- package/dist/eval.js +3 -3
- package/dist/{exec-file-size-PXkr-MGA.js → exec-file-size-BRpoB6Io.js} +3 -32
- package/dist/exec-file-size-BRpoB6Io.js.map +1 -0
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +1 -1
- package/dist/headless.d.ts +1 -1
- package/dist/headless.js +4 -4
- package/dist/{index-DsPQbyUn.d.ts → index-B9jSo84a.d.ts} +2 -2
- package/dist/index-B9jSo84a.d.ts.map +1 -0
- package/dist/{index-CohO0oaX.d.ts → index-Bht3PKx6.d.ts} +5588 -5202
- package/dist/index-Bht3PKx6.d.ts.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +12 -12
- package/dist/{login-CWwu9Sex.js → login-DRy_-rQh.js} +2 -2
- package/dist/{login-CWwu9Sex.js.map → login-DRy_-rQh.js.map} +1 -1
- package/dist/{mcp-Ct5tF4oj.js → mcp-DHKk_tLV.js} +77 -34
- package/dist/mcp-DHKk_tLV.js.map +1 -0
- package/dist/mcp.d.ts +2 -2
- package/dist/mcp.js +2 -2
- package/dist/{messages-Cpb4g_KV.js → messages-DHzFOdx_.js} +2 -2
- package/dist/{messages-Cpb4g_KV.js.map → messages-DHzFOdx_.js.map} +1 -1
- package/dist/{openai-compat-C77gOaHh.js → openai-compat-OI68avOl.js} +59 -16
- package/dist/openai-compat-OI68avOl.js.map +1 -0
- package/dist/output/stream-json.d.ts +1 -1
- package/dist/output/terminal.d.ts +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/presets.js +1 -1
- package/dist/prompt.d.ts +1 -1
- package/dist/prompt.js +14 -0
- package/dist/prompt.js.map +1 -1
- package/dist/providers/anthropic.d.ts +2 -2
- package/dist/providers/anthropic.js +2 -2
- package/dist/providers/arcee.d.ts +1 -1
- package/dist/providers/arcee.js +1 -1
- package/dist/providers/baseten.d.ts +1 -1
- package/dist/providers/baseten.js +1 -1
- package/dist/providers/cerebras.d.ts +1 -1
- package/dist/providers/cerebras.js +1 -1
- package/dist/providers/local.d.ts +1 -1
- package/dist/providers/local.js +1 -1
- package/dist/providers/openai-compat.d.ts +1 -1
- package/dist/providers/openai-compat.js +1 -1
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.js +2 -2
- package/dist/providers/openrouter.d.ts +1 -1
- package/dist/providers/openrouter.js +1 -1
- package/dist/providers/xai.d.ts +1 -1
- package/dist/providers/xai.js +1 -1
- package/dist/{providers-DnHPW-dL.js → providers-y_l5VkAZ.js} +3 -3
- package/dist/{providers-DnHPW-dL.js.map → providers-y_l5VkAZ.js.map} +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +4 -4
- package/dist/{read-state-rDmfeLmz.js → read-state-CNyeMG7W.js} +7 -4
- package/dist/read-state-CNyeMG7W.js.map +1 -0
- package/dist/restate.d.ts +2 -2
- package/dist/restate.js +2 -2
- package/dist/restate.js.map +1 -1
- package/dist/{sandbox-CgjG2VvQ.d.ts → sandbox-DqwpKX18.d.ts} +14 -2
- package/dist/{sandbox-CgjG2VvQ.d.ts.map → sandbox-DqwpKX18.d.ts.map} +1 -1
- package/dist/session/sqlite.d.ts +1 -1
- package/dist/{session-DpDBnktP.js → session-DdT2xT_d.js} +2 -2
- package/dist/{session-DpDBnktP.js.map → session-DdT2xT_d.js.map} +1 -1
- package/dist/session.d.ts +1 -1
- package/dist/session.js +2 -2
- package/dist/shell-quote-BmnhZmdM.js +33 -0
- package/dist/shell-quote-BmnhZmdM.js.map +1 -0
- package/dist/skills.d.ts +1 -1
- package/dist/{stdio-loader-Ce68wUmM.js → stdio-DU3ljLqy.js} +8 -215
- package/dist/stdio-DU3ljLqy.js.map +1 -0
- package/dist/stdio-loader-9PnQWshg.js +217 -0
- package/dist/stdio-loader-9PnQWshg.js.map +1 -0
- package/dist/stream-queue-Cd9OJxl7.js +71 -0
- package/dist/stream-queue-Cd9OJxl7.js.map +1 -0
- package/dist/{system-prompt-BlsdjcUi.d.ts → system-prompt-MNVHatSD.d.ts} +15 -1
- package/dist/system-prompt-MNVHatSD.d.ts.map +1 -0
- package/dist/{tool-formatters-bZYz74qU.d.ts → tool-formatters-B0ZXWJTe.d.ts} +2 -2
- package/dist/{tool-formatters-bZYz74qU.d.ts.map → tool-formatters-B0ZXWJTe.d.ts.map} +1 -1
- package/dist/tools/fetch-url.d.ts +1 -1
- package/dist/tools/web-search.d.ts +1 -1
- package/dist/tools.d.ts +1 -1
- package/dist/tools.js +2 -2
- package/dist/{transcript-anchors-ZZYwCTjo.js → transcript-anchors-ChQH1fMm.js} +18 -8
- package/dist/transcript-anchors-ChQH1fMm.js.map +1 -0
- package/dist/{transcript-anchors-EBchHUMo.d.ts → transcript-anchors-yt0sGL0w.d.ts} +2 -2
- package/dist/{transcript-anchors-EBchHUMo.d.ts.map → transcript-anchors-yt0sGL0w.d.ts.map} +1 -1
- package/dist/tui.d.ts +3 -3
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +59 -7
- package/dist/tui.js.map +1 -1
- package/dist/{turn-operations-DygcPreU.d.ts → turn-operations-XlnBT7p9.d.ts} +3 -3
- package/dist/{turn-operations-DygcPreU.d.ts.map → turn-operations-XlnBT7p9.d.ts.map} +1 -1
- package/dist/types-BIarq1qE.js.map +1 -1
- package/dist/{types-BDccavwj.d.ts → types-DdZMQxfT.d.ts} +117 -2
- package/dist/types-DdZMQxfT.d.ts.map +1 -0
- package/dist/types.d.ts +3 -3
- package/dist/{xai-B2hIs5We.js → xai-DxdI27ds.js} +2 -2
- package/dist/{xai-B2hIs5We.js.map → xai-DxdI27ds.js.map} +1 -1
- package/docs/ARCHITECTURE.md +62 -4
- package/docs/CHAT.md +11 -4
- package/docs/RESTATE.md +1 -1
- package/docs/SKILL.md +21 -1
- package/docs/TUI.md +2 -0
- package/package.json +1 -1
- package/dist/agent-CrPwqpLI.js.map +0 -1
- package/dist/anthropic-asnZVFS_.js.map +0 -1
- package/dist/cache-telemetry-BhTryxFT.js.map +0 -1
- package/dist/contexts-o8y5B3Tm.js.map +0 -1
- package/dist/exec-file-size-PXkr-MGA.js.map +0 -1
- package/dist/index-CohO0oaX.d.ts.map +0 -1
- package/dist/index-DsPQbyUn.d.ts.map +0 -1
- package/dist/mcp-Ct5tF4oj.js.map +0 -1
- package/dist/openai-compat-C77gOaHh.js.map +0 -1
- package/dist/read-state-rDmfeLmz.js.map +0 -1
- package/dist/stdio-loader-Ce68wUmM.js.map +0 -1
- package/dist/system-prompt-BlsdjcUi.d.ts.map +0 -1
- package/dist/transcript-anchors-ZZYwCTjo.js.map +0 -1
- package/dist/types-BDccavwj.d.ts.map +0 -1
package/dist/acp-cli.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import { r as createProcessContext } from "./contexts-
|
|
2
|
+
import { Lt as resolveStorageDirs, dt as basic_default } from "./agent-DO8s7bDf.js";
|
|
3
|
+
import { r as createProcessContext } from "./contexts-DbMuUPjS.js";
|
|
4
4
|
import { createSandboxContext } from "./contexts/sandbox.js";
|
|
5
|
-
import { m as openaiCompat } from "./openai-compat-
|
|
6
|
-
import {
|
|
5
|
+
import { m as openaiCompat } from "./openai-compat-OI68avOl.js";
|
|
6
|
+
import { n as anthropic } from "./anthropic-B3hj9OMm.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-
|
|
10
|
+
import { t as xai } from "./xai-DxdI27ds.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-
|
|
14
|
-
import { f as credKeyOf, i as readCredentials, l as BUILTIN_PROVIDERS, r as credentialsPath, t as detectAuth, y as modelsForDescriptor } from "./auth-
|
|
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-BCg03Fqc.js";
|
|
14
|
+
import { f as credKeyOf, i as readCredentials, l as BUILTIN_PROVIDERS, r as credentialsPath, t as detectAuth, y as modelsForDescriptor } from "./auth-kqdSYLMU.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,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { c as ExecutionContext } from "./types-DdZMQxfT.js";
|
|
2
|
+
import { $m as Session, Pm as ToolDef, Ri as Agent, Sp as AgentBehavior, Vi as AgentOptions, Xd as Provider, Xp as PromptPart, am as SessionContentBlock, bm as ToolResultContent, km as TurnUsage, rh as SessionStore, t as Preset, zp as McpServerConfig } from "./index-Bht3PKx6.js";
|
|
3
3
|
import { Readable, Writable } from "node:stream";
|
|
4
4
|
|
|
5
5
|
//#region src/acp/types.d.ts
|
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-
|
|
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-BCg03Fqc.js";
|
|
2
2
|
export { AcpProtocolError, JsonRpcRemoteError, acpMcpServersToZidane, acpPromptToPromptParts, createAcpServer, createJsonRpcConnection, runAcpStdioServer, sessionBlocksToAcp, stopReasonFromRun, toolResultToAcpContent, withAcpDefaultTools, wrapToolsForAcpClient };
|
|
@@ -1,24 +1,24 @@
|
|
|
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 resolveReadStateMap, n as getToolDedupState, o as markReadStateElided, r as hashContent, s as readStateKey, t as getReadState } from "./read-state-
|
|
4
|
+
import { a as hydrateReadStateFromSessionAsync, c as resolveReadStateMap, n as getToolDedupState, o as markReadStateElided, r as hashContent, s as readStateKey, t as getReadState } from "./read-state-CNyeMG7W.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";
|
|
8
8
|
import { i as parseGitLsFiles, r as GIT_LS_FILES_COMMAND } from "./glob-DluQFSw1.js";
|
|
9
|
-
import { n as alwaysQuote, r as shellQuote } from "./exec-file-size-PXkr-MGA.js";
|
|
10
9
|
import { i as isOutputExceededMessage } from "./output-cap-C9zukcCj.js";
|
|
11
|
-
import { r as createProcessContext, t as resolveDetachedTasksCapability } from "./contexts-
|
|
10
|
+
import { r as createProcessContext, t as resolveDetachedTasksCapability } from "./contexts-DbMuUPjS.js";
|
|
11
|
+
import { n as shellQuote, t as alwaysQuote } from "./shell-quote-BmnhZmdM.js";
|
|
12
12
|
import { i as AgentProviderError, l as errorMessage, m as toTypedError, n as AgentBudgetExceededError, o as AgentToolPairingError, t as AgentAbortedError, u as isAbortLikeError } from "./errors-DJUxZg9b.js";
|
|
13
13
|
import { C as stripShellInterpolations, O as validateResourcePathReal, S as interpolateShellCommands, _ as lastLine, b as resolveSubdirRoot, d as installAllowedToolsGate, f as createSkillActivationState, g as fetchInstallSource, h as defaultWhich, j as projectUserPaths, l as buildCatalog, m as defaultExec, p as InstallSourceError, t as resolveSkills, v as parseInstallSource, x as escapeXml, y as resolveNpmVersion } from "./resolve-BPTA1RpX.js";
|
|
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-Bn76JxAu.js";
|
|
17
|
-
import {
|
|
18
|
-
import { C as
|
|
17
|
+
import { d as wrapDiscoveredMcpTools, i as deriveMcpToolMeta, n as connectMcpServers, s as nonOwningMcpView } from "./mcp-DHKk_tLV.js";
|
|
18
|
+
import { C as buildPromptMessage, w as canonicalizePrompt } from "./openai-compat-OI68avOl.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-
|
|
21
|
-
import { a as getExtensionSessionState, c as setExtensionSessionState, l as withExtensionSession, n as currentExtensionSession, r as deleteExtensionSessionState, s as resumeChainRunIds } from "./session-
|
|
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-DHzFOdx_.js";
|
|
21
|
+
import { a as getExtensionSessionState, c as setExtensionSessionState, l as withExtensionSession, n as currentExtensionSession, r as deleteExtensionSessionState, s as resumeChainRunIds } from "./session-DdT2xT_d.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";
|
|
@@ -710,10 +710,15 @@ function installTextToolCallRescue(hooks, config, deps) {
|
|
|
710
710
|
* - Function form -> `decay(turn, baseBudget)`. The return is clamped to
|
|
711
711
|
* `[0, baseBudget]` so a buggy curve can't request more budget than the
|
|
712
712
|
* caller explicitly opted into.
|
|
713
|
-
* -
|
|
713
|
+
* - Geometric form `{ afterTurn, factor, floor }` -> for `turn <= afterTurn`,
|
|
714
714
|
* returns `baseBudget`. For `turn > afterTurn`, returns
|
|
715
715
|
* `max(floor, baseBudget * factor^(turn - afterTurn))` clamped to
|
|
716
716
|
* `[floor, baseBudget]`.
|
|
717
|
+
* - Step form `{ afterTurn, floor }` (no `factor`) -> `baseBudget` through
|
|
718
|
+
* `afterTurn`, then `floor` for the rest of the run. Exactly one distinct
|
|
719
|
+
* value change — and therefore exactly one prompt-cache invalidation, since
|
|
720
|
+
* `thinking.budget_tokens` is part of Anthropic's cache key (measured; see
|
|
721
|
+
* `AgentBehavior.thinkingDecay`). Prefer it when caching is on.
|
|
717
722
|
*
|
|
718
723
|
* Result is rounded to the nearest integer; token counts are integers.
|
|
719
724
|
*/
|
|
@@ -724,8 +729,7 @@ function applyThinkingDecay(baseBudget, decay, turn) {
|
|
|
724
729
|
if (typeof decay === "function") raw = decay(turn, baseBudget);
|
|
725
730
|
else {
|
|
726
731
|
if (turn <= decay.afterTurn) return baseBudget;
|
|
727
|
-
|
|
728
|
-
raw = Math.max(decay.floor, baseBudget * decay.factor ** k);
|
|
732
|
+
raw = typeof decay.factor === "number" ? Math.max(decay.floor, baseBudget * decay.factor ** (turn - decay.afterTurn)) : decay.floor;
|
|
729
733
|
}
|
|
730
734
|
if (Number.isNaN(raw) || raw <= 0) return 0;
|
|
731
735
|
return Math.round(Math.min(baseBudget, raw));
|
|
@@ -2913,7 +2917,8 @@ const edit = {
|
|
|
2913
2917
|
if (prior) readState.set(absKey, {
|
|
2914
2918
|
...prior,
|
|
2915
2919
|
contentHash: hashContent(updated),
|
|
2916
|
-
mtimeMs: Date.now()
|
|
2920
|
+
mtimeMs: Date.now(),
|
|
2921
|
+
elided: true
|
|
2917
2922
|
});
|
|
2918
2923
|
}
|
|
2919
2924
|
ctx.reportOutcome?.("edited");
|
|
@@ -3692,7 +3697,8 @@ const multiEdit = {
|
|
|
3692
3697
|
if (prior) readState.set(absKey, {
|
|
3693
3698
|
...prior,
|
|
3694
3699
|
contentHash: hashContent(current),
|
|
3695
|
-
mtimeMs: Date.now()
|
|
3700
|
+
mtimeMs: Date.now(),
|
|
3701
|
+
elided: true
|
|
3696
3702
|
});
|
|
3697
3703
|
}
|
|
3698
3704
|
} else ctx.reportOutcome?.("failed");
|
|
@@ -6022,7 +6028,8 @@ const writeFile$1 = {
|
|
|
6022
6028
|
offset: 0,
|
|
6023
6029
|
limit: Number.POSITIVE_INFINITY,
|
|
6024
6030
|
maxBytes: Number.POSITIVE_INFINITY,
|
|
6025
|
-
mtimeMs: Date.now()
|
|
6031
|
+
mtimeMs: Date.now(),
|
|
6032
|
+
elided: true
|
|
6026
6033
|
});
|
|
6027
6034
|
ctx.reportOutcome?.(existing === void 0 ? "created" : "updated");
|
|
6028
6035
|
return existing === void 0 ? `Created ${targetPath} (${bytes} bytes).` : `Updated ${targetPath} (${bytes} bytes).`;
|
|
@@ -10029,7 +10036,6 @@ function applyCompactSummaryCutoff(turns) {
|
|
|
10029
10036
|
*/
|
|
10030
10037
|
const COMPACTION_STUB = "[…elided: older tool output trimmed to fit the context budget.]";
|
|
10031
10038
|
const COMPACTION_STUB_BYTES = toolOutputByteLength(COMPACTION_STUB);
|
|
10032
|
-
const COMPACT_CHUNK_TURNS = 8;
|
|
10033
10039
|
/**
|
|
10034
10040
|
* Cross-turn memo for `toolOutputBudgetByteLength`, keyed on the tool_result
|
|
10035
10041
|
* block object. The wire pipeline preserves block references for unchanged
|
|
@@ -10310,18 +10316,39 @@ function collectCallMaps(messages) {
|
|
|
10310
10316
|
*
|
|
10311
10317
|
* Pure function, exported for tests and so downstream tooling can preview
|
|
10312
10318
|
* elision without spinning up the loop.
|
|
10319
|
+
*
|
|
10320
|
+
* Cache cost, and why this pass is NOT frontier-quantized like its neighbours:
|
|
10321
|
+
*
|
|
10322
|
+
* A stub rewrites the prefix at the earliest position any stale read sits — in a
|
|
10323
|
+
* read-then-edit run, near message 1. A prefix cache hashes
|
|
10324
|
+
* tools → system → messages cumulatively, so that invalidates the whole
|
|
10325
|
+
* conversation, and the miss reads as a suspiciously CONSTANT `cacheRead` (the
|
|
10326
|
+
* scaffold still matches) rather than a zero one.
|
|
10327
|
+
*
|
|
10328
|
+
* The saving grace is that stubbing is idempotent per read: once a path's
|
|
10329
|
+
* earlier reads carry the stub, every later edit to that path changes nothing.
|
|
10330
|
+
* Real runs edit a small set of files repeatedly, so distinct staleness events
|
|
10331
|
+
* are rare — 13 across a measured 129-turn production trace. Snapping the
|
|
10332
|
+
* frontier to a chunk (as `applyTailCompaction` does, for good reason) made that
|
|
10333
|
+
* WORSE, not better: 16 breaks, because each advance discovers a fresh batch and
|
|
10334
|
+
* splits one logical event across boundaries. See the call site in the loop.
|
|
10335
|
+
*
|
|
10336
|
+
* `chunkTurns` therefore exists but defaults to off. It only pays when staleness
|
|
10337
|
+
* events are both frequent and spread across many distinct paths.
|
|
10313
10338
|
*/
|
|
10314
10339
|
const STALE_READ_STUB = "[…elided: this file was edited later in the run, so this earlier read is stale.]";
|
|
10315
|
-
function applyStaleReadElision(messages) {
|
|
10340
|
+
function applyStaleReadElision(messages, options) {
|
|
10316
10341
|
if (messages.length === 0) return {
|
|
10317
10342
|
messages,
|
|
10318
10343
|
elidedPaths: []
|
|
10319
10344
|
};
|
|
10345
|
+
const chunk = Math.max(1, options?.chunkTurns ?? 1);
|
|
10346
|
+
const cutoff = messages.length <= chunk ? messages.length : Math.floor(messages.length / chunk) * chunk;
|
|
10320
10347
|
const resultByCallId = /* @__PURE__ */ new Map();
|
|
10321
10348
|
for (const msg of messages) for (const block of msg.content) if (block.type === "tool_result" && typeof block.output === "string") resultByCallId.set(block.callId, block.output);
|
|
10322
10349
|
const maxMutationIdxByPath = /* @__PURE__ */ new Map();
|
|
10323
10350
|
const readCallInfo = /* @__PURE__ */ new Map();
|
|
10324
|
-
for (let i = 0; i <
|
|
10351
|
+
for (let i = 0; i < cutoff; i++) for (const block of messages[i].content) {
|
|
10325
10352
|
if (block.type !== "tool_call") continue;
|
|
10326
10353
|
const path = block.input.path;
|
|
10327
10354
|
if (typeof path !== "string") continue;
|
|
@@ -10387,6 +10414,96 @@ function applyStaleReadElision(messages) {
|
|
|
10387
10414
|
};
|
|
10388
10415
|
}
|
|
10389
10416
|
/**
|
|
10417
|
+
* Paths whose earlier reads were NEWLY made stale by this batch's successful
|
|
10418
|
+
* mutations — i.e. the prior transcript holds a `read_file` of the path that
|
|
10419
|
+
* is more recent than the path's last successful mutation. Reads older than
|
|
10420
|
+
* that mutation were already noticed when it landed, so repeated edits to the
|
|
10421
|
+
* same file yield exactly one notice per read→edit transition, not one per
|
|
10422
|
+
* edit.
|
|
10423
|
+
*
|
|
10424
|
+
* Pure; mirrors {@link applyStaleReadElision}'s detection exactly (same tool
|
|
10425
|
+
* names, same success markers) so the two policies never drift on WHAT counts
|
|
10426
|
+
* as stale — only on how the staleness is represented.
|
|
10427
|
+
*/
|
|
10428
|
+
function collectNewlyStaleReadPaths(priorTurns, batch) {
|
|
10429
|
+
const mutated = /* @__PURE__ */ new Map();
|
|
10430
|
+
for (const call of batch) {
|
|
10431
|
+
if (typeof call.path !== "string" || mutated.has(call.path)) continue;
|
|
10432
|
+
const isEdit = call.name === "edit" || call.name === "multi_edit";
|
|
10433
|
+
const isWrite = call.name === "write_file";
|
|
10434
|
+
if (!isEdit && !isWrite) continue;
|
|
10435
|
+
const output = typeof call.output === "string" ? call.output : void 0;
|
|
10436
|
+
if (output === void 0) continue;
|
|
10437
|
+
if (isEdit ? output.startsWith("Edited ") : output.startsWith("Created ") || output.startsWith("Updated ")) mutated.set(call.path, true);
|
|
10438
|
+
}
|
|
10439
|
+
if (mutated.size === 0) return [];
|
|
10440
|
+
const resultByCallId = /* @__PURE__ */ new Map();
|
|
10441
|
+
for (const msg of priorTurns) for (const block of msg.content) if (block.type === "tool_result" && typeof block.output === "string") resultByCallId.set(block.callId, block.output);
|
|
10442
|
+
const hasUnnoticedRead = /* @__PURE__ */ new Map();
|
|
10443
|
+
for (const msg of priorTurns) for (const block of msg.content) {
|
|
10444
|
+
if (block.type !== "tool_call") continue;
|
|
10445
|
+
const path = block.input.path;
|
|
10446
|
+
if (typeof path !== "string" || !mutated.has(path)) continue;
|
|
10447
|
+
if (block.name === "read_file") {
|
|
10448
|
+
hasUnnoticedRead.set(path, true);
|
|
10449
|
+
continue;
|
|
10450
|
+
}
|
|
10451
|
+
const isEdit = block.name === "edit" || block.name === "multi_edit";
|
|
10452
|
+
const isWrite = block.name === "write_file";
|
|
10453
|
+
if (!isEdit && !isWrite) continue;
|
|
10454
|
+
const result = resultByCallId.get(block.id);
|
|
10455
|
+
if (typeof result !== "string") continue;
|
|
10456
|
+
if (isEdit ? result.startsWith("Edited ") : result.startsWith("Created ") || result.startsWith("Updated ")) hasUnnoticedRead.set(path, false);
|
|
10457
|
+
}
|
|
10458
|
+
return [...mutated.keys()].filter((path) => hasUnnoticedRead.get(path) === true);
|
|
10459
|
+
}
|
|
10460
|
+
/**
|
|
10461
|
+
* The notice text appended to a mutating tool's result under the `'notice'`
|
|
10462
|
+
* policy. Deterministic and free of counters/timestamps — append-only content
|
|
10463
|
+
* cannot break the cache, but a stable template keeps transcripts diffable and
|
|
10464
|
+
* the tests byte-exact.
|
|
10465
|
+
*/
|
|
10466
|
+
function renderStaleReadNotice(paths) {
|
|
10467
|
+
return `<system-reminder>Earlier read_file results for the following path(s) predate this change and are now stale:\n${paths.map((path) => `- ${path}`).join("\n")}\nDo not rely on those earlier file bodies. Re-read a file (or Grep the relevant slice) before reasoning about its current content.</system-reminder>`;
|
|
10468
|
+
}
|
|
10469
|
+
/**
|
|
10470
|
+
* Loop-side wiring for the `'notice'` policy: detect which paths this batch
|
|
10471
|
+
* newly staled and append one combined notice to the LAST successful mutating
|
|
10472
|
+
* result in the batch. Mutates `results` in place — they have not yet become a
|
|
10473
|
+
* turn, so this is the append-only window.
|
|
10474
|
+
*
|
|
10475
|
+
* Same-batch reads are excluded from staleness (a `read_file` and an `edit` of
|
|
10476
|
+
* the same path issued together), matching `applyStaleReadElision`, which
|
|
10477
|
+
* compares message indices and treats same-message reads as fresh.
|
|
10478
|
+
*
|
|
10479
|
+
* Signalling only — the re-read this notice asks for serves the fresh body
|
|
10480
|
+
* because the mutating tools mark their read-state entry `elided` when they
|
|
10481
|
+
* refresh the content hash (see `src/tools/edit.ts`), independent of any
|
|
10482
|
+
* stale-read policy.
|
|
10483
|
+
*/
|
|
10484
|
+
function appendStaleReadNotices(priorTurns, calls, results) {
|
|
10485
|
+
const contentById = /* @__PURE__ */ new Map();
|
|
10486
|
+
for (const result of results) contentById.set(result.id, result.content);
|
|
10487
|
+
const batchIds = new Set(calls.map((call) => call.id));
|
|
10488
|
+
const batch = calls.map((call) => ({
|
|
10489
|
+
name: call.name,
|
|
10490
|
+
path: call.input.path,
|
|
10491
|
+
output: contentById.get(call.id) ?? ""
|
|
10492
|
+
}));
|
|
10493
|
+
const stalePaths = collectNewlyStaleReadPaths(priorTurns.filter((turn) => !turn.content.some((b) => b.type === "tool_call" && batchIds.has(b.id))), batch);
|
|
10494
|
+
if (stalePaths.length === 0) return;
|
|
10495
|
+
for (let i = results.length - 1; i >= 0; i--) {
|
|
10496
|
+
const call = calls.find((c) => c.id === results[i].id);
|
|
10497
|
+
if (!call || typeof call.input.path !== "string" || !stalePaths.includes(call.input.path)) continue;
|
|
10498
|
+
if (typeof results[i].content !== "string") continue;
|
|
10499
|
+
results[i] = {
|
|
10500
|
+
...results[i],
|
|
10501
|
+
content: `${results[i].content}\n\n${renderStaleReadNotice(stalePaths)}`
|
|
10502
|
+
};
|
|
10503
|
+
return;
|
|
10504
|
+
}
|
|
10505
|
+
}
|
|
10506
|
+
/**
|
|
10390
10507
|
* Flag read-state entries for paths whose reads got elided. Keys are
|
|
10391
10508
|
* canonical absolute paths produced by `readStateKey(cwd, path)` (see
|
|
10392
10509
|
* `src/tools/read-state.ts`); the loop has `ctx.handle.cwd` in scope,
|
|
@@ -11526,7 +11643,26 @@ async function executeTurn(ctx, turn, priorUsage) {
|
|
|
11526
11643
|
const turnId = ctx.clock.randomUUID();
|
|
11527
11644
|
let canonicalMessages = turnsToMessages(applyCompactSummaryCutoff(ctx.turns));
|
|
11528
11645
|
canonicalMessages = await resolveContentRefsForWire(ctx, canonicalMessages);
|
|
11529
|
-
if (ctx.elideStaleReads === true) {
|
|
11646
|
+
if (ctx.elideStaleReads === true || ctx.elideStaleReads === "stub") {
|
|
11647
|
+
/**
|
|
11648
|
+
* Deliberately UNQUANTIZED, unlike tail compaction and media age-out below.
|
|
11649
|
+
*
|
|
11650
|
+
* This pass rewrites the prefix at the earliest stale read, so quantizing its
|
|
11651
|
+
* frontier looks like it should help. Measured against a 129-turn production
|
|
11652
|
+
* trace, it does the opposite: 13 breaks / 0.25M re-billed chars unquantized
|
|
11653
|
+
* versus 16 / 0.27M at `chunkTurns: 8`.
|
|
11654
|
+
*
|
|
11655
|
+
* The reason is that this pass is already self-limiting. Stubbing is
|
|
11656
|
+
* idempotent per read, so once a path's earlier reads are stubbed, every
|
|
11657
|
+
* later edit to that path is a no-op — and real runs edit a small set of
|
|
11658
|
+
* files repeatedly, so distinct staleness events are rare. Deferring
|
|
11659
|
+
* detection to a frontier instead makes each advance discover a fresh batch,
|
|
11660
|
+
* which SPLITS one logical event across boundaries and adds breaks.
|
|
11661
|
+
*
|
|
11662
|
+
* Quantization only pays when staleness events are frequent AND spread over
|
|
11663
|
+
* many distinct paths, so batching can merge them. That is not the shape of
|
|
11664
|
+
* a coding run.
|
|
11665
|
+
*/
|
|
11530
11666
|
const elision = applyStaleReadElision(canonicalMessages);
|
|
11531
11667
|
canonicalMessages = elision.messages;
|
|
11532
11668
|
markReadStateForElidedPaths(ctx, ctx.handle.cwd, elision.elidedPaths);
|
|
@@ -11542,7 +11678,7 @@ async function executeTurn(ctx, turn, priorUsage) {
|
|
|
11542
11678
|
const compacted = applyTailCompaction(sanitizedMessages, threshold, keep, {
|
|
11543
11679
|
readPathByCallId,
|
|
11544
11680
|
toolNameByCallId,
|
|
11545
|
-
chunkTurns:
|
|
11681
|
+
chunkTurns: 8,
|
|
11546
11682
|
persistElideMinBytes: ctx.persistDir ? PERSISTENCE_PREVIEW_BYTES : 0
|
|
11547
11683
|
});
|
|
11548
11684
|
sanitizedMessages = compacted.messages;
|
|
@@ -11571,7 +11707,7 @@ async function executeTurn(ctx, turn, priorUsage) {
|
|
|
11571
11707
|
if (typeof ctx.mediaKeepTurns === "number" && ctx.mediaKeepTurns >= 0 && ctx.tools.read_file) {
|
|
11572
11708
|
const { readPathByCallId } = callMaps();
|
|
11573
11709
|
const aged = applyMediaAgeout(sanitizedMessages, ctx.mediaKeepTurns, {
|
|
11574
|
-
chunkTurns:
|
|
11710
|
+
chunkTurns: 8,
|
|
11575
11711
|
readPathByCallId,
|
|
11576
11712
|
readFileToolName: toWireName("read_file", ctx.aliasMaps),
|
|
11577
11713
|
maxInlineBytes: MEDIA_INLINE_MAX_BYTES
|
|
@@ -11593,6 +11729,7 @@ async function executeTurn(ctx, turn, priorUsage) {
|
|
|
11593
11729
|
...ctx.effortHint !== void 0 ? { effortHint: ctx.effortHint } : {},
|
|
11594
11730
|
...ctx.modelOptions ? { modelOptions: ctx.modelOptions } : {},
|
|
11595
11731
|
cache: ctx.cache ?? true,
|
|
11732
|
+
...ctx.cacheTtl !== void 0 ? { cacheTtl: ctx.cacheTtl } : {},
|
|
11596
11733
|
signal: ctx.signal
|
|
11597
11734
|
};
|
|
11598
11735
|
const transformCtx = { messages: streamOptions.messages };
|
|
@@ -11959,6 +12096,7 @@ async function executeTurn(ctx, turn, priorUsage) {
|
|
|
11959
12096
|
};
|
|
11960
12097
|
}
|
|
11961
12098
|
const toolResults = await executeToolBatch(ctx, canonicalToolCalls, turnId);
|
|
12099
|
+
if (ctx.elideStaleReads === "notice") appendStaleReadNotices(ctx.turns, canonicalToolCalls, toolResults);
|
|
11962
12100
|
const toolResultMsg = ctx.provider.toolResultsMessage(toolResults);
|
|
11963
12101
|
const toolResultsTurn = {
|
|
11964
12102
|
id: ctx.clock.randomUUID(),
|
|
@@ -13417,6 +13555,7 @@ const HOOK_EVENT_SET = /* @__PURE__ */ new Set([
|
|
|
13417
13555
|
"stream:retry",
|
|
13418
13556
|
"model:fallback",
|
|
13419
13557
|
"context:overflow",
|
|
13558
|
+
"cache:break",
|
|
13420
13559
|
"compact:start",
|
|
13421
13560
|
"compact:progress",
|
|
13422
13561
|
"compact:end",
|
|
@@ -13592,6 +13731,7 @@ function resolveBehavior(agentBehavior, runBehavior) {
|
|
|
13592
13731
|
modelOptions: runBehavior?.modelOptions ?? agentBehavior?.modelOptions,
|
|
13593
13732
|
schema: runBehavior?.schema ?? agentBehavior?.schema,
|
|
13594
13733
|
cache: runBehavior?.cache ?? agentBehavior?.cache ?? true,
|
|
13734
|
+
cacheTtl: runBehavior?.cacheTtl ?? agentBehavior?.cacheTtl,
|
|
13595
13735
|
toolOutputBudget: runBehavior?.toolOutputBudget ?? agentBehavior?.toolOutputBudget,
|
|
13596
13736
|
toolOutputBudgetExcludeTools: runBehavior?.toolOutputBudgetExcludeTools ?? agentBehavior?.toolOutputBudgetExcludeTools,
|
|
13597
13737
|
readFileDefaults: runBehavior?.readFileDefaults ?? agentBehavior?.readFileDefaults,
|
|
@@ -14488,7 +14628,7 @@ function createAgent(rawOptions) {
|
|
|
14488
14628
|
const thinking = options.thinking ?? "off";
|
|
14489
14629
|
const model = targets[0].model;
|
|
14490
14630
|
if (runProvider.meta?.clearsContextServerSide) resolvedBehavior.dedupReads = false;
|
|
14491
|
-
const { maxConcurrentTools, toolBatchExecutor, toolBatchTimeoutMs, shouldRethrowToolError, maxTurns, maxTurnsWarning, maxTurnsWarningMessage, maxCostUsd, maxTotalTokens, maxWallMs, providerStreamStartTimeoutMs, providerStreamTimeoutMs, providerStreamIdleTimeoutMs, maxTokens, retry, thinkingBudget, taskBudget, effortHint, thinkingOverrunPolicy, modelOptions: behaviorModelOptions, schema, cache, toolOutputBudget, toolOutputBudgetExcludeTools, compactStrategy, compactThreshold, compactKeepTurns, thinkingDecay, writeFileExistingPolicy, textToolCallRescue, unknownToolRecovery, progressNudges, dedupTools, toolBudgets, repeatGuard, elideStaleReads, mediaKeepTurns, autoCompact, toolDisclosure, mcpToolNameSeparator, toolSearch, surfaceMcpInstructions, persistThreshold, persistExcludeTools, persistDir, persistMaxBytes, strictToolPairing, maxPairingRepairsPerTurn, maxConsecutivePauseTurns, resumeOnMaxTokens, persistTurns } = resolvedBehavior;
|
|
14631
|
+
const { maxConcurrentTools, toolBatchExecutor, toolBatchTimeoutMs, shouldRethrowToolError, maxTurns, maxTurnsWarning, maxTurnsWarningMessage, maxCostUsd, maxTotalTokens, maxWallMs, providerStreamStartTimeoutMs, providerStreamTimeoutMs, providerStreamIdleTimeoutMs, maxTokens, retry, thinkingBudget, taskBudget, effortHint, thinkingOverrunPolicy, modelOptions: behaviorModelOptions, schema, cache, cacheTtl, toolOutputBudget, toolOutputBudgetExcludeTools, compactStrategy, compactThreshold, compactKeepTurns, thinkingDecay, writeFileExistingPolicy, textToolCallRescue, unknownToolRecovery, progressNudges, dedupTools, toolBudgets, repeatGuard, elideStaleReads, mediaKeepTurns, autoCompact, toolDisclosure, mcpToolNameSeparator, toolSearch, surfaceMcpInstructions, persistThreshold, persistExcludeTools, persistDir, persistMaxBytes, strictToolPairing, maxPairingRepairsPerTurn, maxConsecutivePauseTurns, resumeOnMaxTokens, persistTurns } = resolvedBehavior;
|
|
14492
14632
|
const modelOptions = options.modelOptions ?? behaviorModelOptions;
|
|
14493
14633
|
let system = options.system || agentSystem || "You are a helpful assistant.";
|
|
14494
14634
|
const baseSystemForBreakdown = renderSystemForWire(system);
|
|
@@ -14928,6 +15068,7 @@ function createAgent(rawOptions) {
|
|
|
14928
15068
|
...modelOptions ? { modelOptions } : {},
|
|
14929
15069
|
schema,
|
|
14930
15070
|
cache,
|
|
15071
|
+
...cacheTtl !== void 0 ? { cacheTtl } : {},
|
|
14931
15072
|
toolOutputBudget,
|
|
14932
15073
|
...toolOutputBudgetExcludeTools !== void 0 ? { toolOutputBudgetExcludeTools } : {},
|
|
14933
15074
|
compactStrategy,
|
|
@@ -15236,7 +15377,11 @@ function createAgent(rawOptions) {
|
|
|
15236
15377
|
mcpWarmupPromise = (async () => {
|
|
15237
15378
|
const timeoutMs = resolveTimeoutMs(options.mcpConnectTimeoutMs ?? agentBehavior?.mcpConnectTimeoutMs, DEFAULT_CUSTOM_MCP_CONNECT_TIMEOUT_MS, options.maxWallMs);
|
|
15238
15379
|
let timedOut = false;
|
|
15239
|
-
const
|
|
15380
|
+
const execution = {
|
|
15381
|
+
context: executionContext,
|
|
15382
|
+
getHandle: () => ensureExecutionHandle(resolveTimeoutMs(agentBehavior?.spawnTimeoutMs, DEFAULT_SPAWN_TIMEOUT_MS, options.maxWallMs))
|
|
15383
|
+
};
|
|
15384
|
+
const pending = mcpConnector ? mcpConnector(allMcpServers, hooks, { execution }) : connectMcpServers(allMcpServers, void 0, hooks, { execution });
|
|
15240
15385
|
pending.then((lateConnection) => {
|
|
15241
15386
|
if (timedOut || destroyed) lateConnection.close().catch(() => {});
|
|
15242
15387
|
}, () => {});
|
|
@@ -15532,6 +15677,6 @@ function createAgent(rawOptions) {
|
|
|
15532
15677
|
};
|
|
15533
15678
|
}
|
|
15534
15679
|
//#endregion
|
|
15535
|
-
export {
|
|
15680
|
+
export { buildExtensionPreset as $, registerExtensionHostModules as $t, buildFullCompactPrompt as A, matchModelEntries as At, CompactPromptTooLongError as B, KEYBINDING_DEF_BY_ACTION as Bt, selectRecentFiles as C, stableStringify as Cn, shell as Ct, TRAILER as D, multiEdit as Dt, NO_TOOLS_PREAMBLE as E, looksBinary as Et, sliceForCompaction as F, edit as Ft, installExtensionFromSpec as G, keybindingsPath as Gt, createExtensionPromptBridge as H, ensureKeybindingsFile as Ht, stripImagesFromTurns as I, validateToolArgs as It, readExtensionInstallProvenance as J, parseBindingSpec as Jt, listExtensionCandidates as K, matchesBinding as Kt, summaryToTurn as L, resolveStorageDirs as Lt, buildUpToCompactPrompt as M, createInteractionTool as Mt, ANCHOR_PREVIEW_MAX_CHARS as N, grep as Nt, buildCompactPrompt as O, createModelSearchTool as Ot, anchorPreviewFor as P, glob as Pt, discoverAndBuildExtensionRegistry as Q, stripJsonComments as Qt, truncateHeadForPtlRetry as R, DEFAULT_KEYBINDINGS as Rt, selectFilesFromSession as S, normalizeShellCommand as Sn, createShellTool as St, BASE_INSTRUCTIONS as T, readFile$1 as Tt, ExtensionInstallError as U, formatBindingForDisplay as Ut, EMPTY_EXTENSION_REGISTRY as V, KEYBINDING_KEY_COL_WIDTH as Vt, fetchExtensionSource as W, groupBindings as Wt, updateInstalledExtension as X, readKeybindingsRaw as Xt, removeInstalledExtension as Y, readKeybindings as Yt, createExtensionHud as Z, resolveExtensionKeybindings as Zt, resolveMcpWarningsDir as _, OUTPUT_RESERVE_TOKENS as _n, isSpawnTool as _t, SHELL_CASCADE_CANCEL_MESSAGE as a, parseExtensionScanPathEnv as an, partitionExtensionCatalog as at, buildPostCompactAttachments as b, defaultRepeatGuardNormalize as bn, createSkillsReadTool as bt, applyCompactSummaryCutoff as c, clampExtensionConfigNumber as cn, composePresets as ct, PERSISTED_STUB_PREFIX as d, isValidExtensionConfigValue as dn, basic_default as dt, ENTRY_CANDIDATES as en, buildExtensionRegistry as et, PERSISTENCE_PREVIEW_BYTES as f, resolveExtensionConfig as fn, writeFile$1 as ft, rehomePersistedStubs as g, AUTO_COMPACT_MIN_GROWTH_FRACTION as gn, createSpawnTool as gt, maybePersistToolResult as h, toWireConfigSchema as hn, createToolSearchTool as ht, INTERRUPT_MESSAGE_FOR_TOOL_USE as i, isExtensionDefinition as in, mergeContributions as it, buildTailCompactPrompt as j, listFiles as jt, buildFromCompactPrompt as k, formatModelLine as kt, collectNewlyStaleReadPaths as l, coerceExtensionConfigInput as ln, definePreset as lt, cleanupPersistedSession as m, sanitizeExtensionConfigActionPatch as mn, waitTask as mt, normalizeProviders as n, discoverExtensions as nn, disposeExtensionRegistry as nt, TOOL_USE_CANCELLED_MESSAGE as o, scanExtensionDirectories as on, createExtensionHostRuntimeBridge as ot, buildPersistedStub as p, resolveExtensionConfigValue as pn, WAIT_TASK_TIMED_OUT_PREFIX as pt, parseExtensionInstallSource as q, mergeKeybindings as qt, resolveModelTargets as r, inlineLoadedExtension as rn, filterExtensionRegistry as rt, TOOL_USE_SKIPPED_MESSAGE as s, defineExtension as sn, createWorkspaceSurface as st, createAgent as t, defaultExtensionScanPaths as tn, composeExtensionPreset as tt, renderStaleReadNotice as u, isValidExtensionConfigItem as un, basicTools as ut, resolvePersistDir as v, effectiveContextWindow as vn, createSkillsUseTool as vt, compactConversation as w, tailTruncate as wt, selectFilesFromReadState as x, defaultRepeatGuardTracked as xn, shellKill as xt, resolveTasksDir as y, shouldAutoCompact as yn, createSkillsRunScriptTool as yt, CompactInvalidInputError as z, KEYBINDING_DEFS as zt };
|
|
15536
15681
|
|
|
15537
|
-
//# sourceMappingURL=agent-
|
|
15682
|
+
//# sourceMappingURL=agent-DO8s7bDf.js.map
|