zidane 6.6.4 → 7.0.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.
- package/dist/{acp-BQqhozmt.js → acp-Wr8l4IDI.js} +7 -180
- package/dist/acp-Wr8l4IDI.js.map +1 -0
- package/dist/acp-cli.js +6 -6
- package/dist/acp.d.ts +1 -1
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +2 -1
- package/dist/{agent-DTxH7RHW.js → agent-C-camKQW.js} +162 -12
- package/dist/agent-C-camKQW.js.map +1 -0
- package/dist/agent.d.ts +1 -1
- package/dist/agent.js +1 -1
- package/dist/{anthropic-DRNRnd6W.js → anthropic-BDOGzhtj.js} +3 -3
- package/dist/{anthropic-DRNRnd6W.js.map → anthropic-BDOGzhtj.js.map} +1 -1
- package/dist/{transcript-anchors-BjH-68k2.js → approvals-CqqxE5Vh.js} +4924 -275
- package/dist/approvals-CqqxE5Vh.js.map +1 -0
- package/dist/{auth-7rv6ZfWk.js → auth-BdwDROYg.js} +12 -8
- package/dist/{auth-7rv6ZfWk.js.map → auth-BdwDROYg.js.map} +1 -1
- package/dist/chat/pure.d.ts +221 -4
- package/dist/chat/pure.d.ts.map +1 -0
- package/dist/chat/pure.js +4 -2
- package/dist/chat.d.ts +6 -2911
- package/dist/chat.js +8 -261
- package/dist/{context-transport-D8yeGdpd.js → context-transport-BqYwzJYE.js} +2 -2
- package/dist/{context-transport-D8yeGdpd.js.map → context-transport-BqYwzJYE.js.map} +1 -1
- package/dist/contexts/daytona.d.ts +1 -1
- package/dist/contexts/daytona.js +1 -1
- package/dist/contexts/e2b.d.ts +1 -1
- package/dist/contexts/e2b.js +1 -1
- package/dist/daemon-cli.d.ts +1 -0
- package/dist/daemon-cli.js +90 -0
- package/dist/daemon-cli.js.map +1 -0
- package/dist/eval.d.ts +1 -1
- package/dist/eval.js +1 -1
- package/dist/extensions.d.ts +2 -2
- package/dist/extensions.js +2 -2
- package/dist/headless.d.ts +1 -1
- package/dist/headless.js +4 -4
- package/dist/{index-D0O-QO7Z.d.ts → index-B-FSaM3_.d.ts} +2863 -2375
- package/dist/index-B-FSaM3_.d.ts.map +1 -0
- package/dist/index-DgdzXRPH.d.ts +3590 -0
- package/dist/index-DgdzXRPH.d.ts.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +14 -1179
- package/dist/ipc-CIv87xuH.js +331 -0
- package/dist/ipc-CIv87xuH.js.map +1 -0
- package/dist/ipc.d.ts +849 -0
- package/dist/ipc.d.ts.map +1 -0
- package/dist/ipc.js +4 -0
- package/dist/json-rpc-rSWMUh9b.js +192 -0
- package/dist/json-rpc-rSWMUh9b.js.map +1 -0
- package/dist/{logger-DBX9uYOw.js → logger--C1VQjwJ.js} +3 -13
- package/dist/logger--C1VQjwJ.js.map +1 -0
- package/dist/logs-view-CWG8aUAG.js +44 -0
- package/dist/logs-view-CWG8aUAG.js.map +1 -0
- package/dist/{mcp-CVtSQTWg.js → mcp-BIWa57eY.js} +3 -3
- package/dist/{mcp-CVtSQTWg.js.map → mcp-BIWa57eY.js.map} +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.js +1 -1
- package/dist/{messages-CZMUuKzo.js → messages-21XfHxyF.js} +3 -3
- package/dist/{messages-CZMUuKzo.js.map → messages-21XfHxyF.js.map} +1 -1
- package/dist/{openai-compat-BoTi-9fd.js → openai-compat-DY-AKxCg.js} +2 -2
- package/dist/{openai-compat-BoTi-9fd.js.map → openai-compat-DY-AKxCg.js.map} +1 -1
- package/dist/output/stream-json.d.ts +1 -1
- package/dist/output/terminal.d.ts +1 -1
- package/dist/{plugins-onDvTHEm.js → plugins-B531Tz5b.js} +2 -2
- package/dist/{plugins-onDvTHEm.js.map → plugins-B531Tz5b.js.map} +1 -1
- package/dist/plugins.d.ts +1 -1
- package/dist/plugins.js +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/presets.js +1 -1
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/anthropic.js +1 -1
- 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 +3 -3
- 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-CmhdtD7w.js → providers-DX91jwir.js} +2 -2
- package/dist/{providers-CmhdtD7w.js.map → providers-DX91jwir.js.map} +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +3 -3
- package/dist/restate.d.ts +1 -1
- package/dist/restate.js +8 -8
- package/dist/restate.js.map +1 -1
- package/dist/server-DJqp9dIR.js +1317 -0
- package/dist/server-DJqp9dIR.js.map +1 -0
- package/dist/session/sqlite.d.ts +1 -1
- package/dist/session/sqlite.d.ts.map +1 -1
- package/dist/session/sqlite.js +42 -4
- package/dist/session/sqlite.js.map +1 -1
- package/dist/{session-CyRLSsVa.js → session-K3icbPH9.js} +8 -2
- package/dist/session-K3icbPH9.js.map +1 -0
- package/dist/session.d.ts +1 -1
- package/dist/session.js +2 -2
- package/dist/{skills-BMGH_KK1.js → skills-PJyiSRCp.js} +3 -21
- package/dist/skills-PJyiSRCp.js.map +1 -0
- package/dist/skills.d.ts +1 -1
- package/dist/skills.js +1 -1
- package/dist/src-DzzhE2YO.js +2461 -0
- package/dist/src-DzzhE2YO.js.map +1 -0
- package/dist/todo-edits-Dw2oO2ON.js +378 -0
- package/dist/todo-edits-Dw2oO2ON.js.map +1 -0
- package/dist/{tool-formatters-NrzD6Fkk.d.ts → tool-formatters-DO56YBBw.d.ts} +104 -4
- package/dist/tool-formatters-DO56YBBw.d.ts.map +1 -0
- 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 +1 -1
- package/dist/{transcript-anchors-UhC58Tmj.d.ts → transcript-anchors-DXqWWGbq.d.ts} +53 -4
- package/dist/transcript-anchors-DXqWWGbq.d.ts.map +1 -0
- package/dist/tui.d.ts +94 -13
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +2241 -1009
- package/dist/tui.js.map +1 -1
- package/dist/{turn-operations-mMxDRgLY.js → turn-operations-CZLsNgw-.js} +896 -11
- package/dist/turn-operations-CZLsNgw-.js.map +1 -0
- package/dist/{turn-operations-Cuc9pwiB.d.ts → turn-operations-DKFYWP3O.d.ts} +501 -4
- package/dist/turn-operations-DKFYWP3O.d.ts.map +1 -0
- package/dist/{types-BIarq1qE.js → types-CWgENVLY.js} +24 -2
- package/dist/types-CWgENVLY.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/xml-D5HBhJle.js +22 -0
- package/dist/xml-D5HBhJle.js.map +1 -0
- package/docs/CHAT.md +39 -0
- package/docs/IPC.md +420 -0
- package/docs/TUI.md +62 -0
- package/package.json +9 -3
- package/dist/acp-BQqhozmt.js.map +0 -1
- package/dist/agent-DTxH7RHW.js.map +0 -1
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js.map +0 -1
- package/dist/index-D0O-QO7Z.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/inline-autocomplete-D0MPvBaS.js +0 -596
- package/dist/inline-autocomplete-D0MPvBaS.js.map +0 -1
- package/dist/logger-DBX9uYOw.js.map +0 -1
- package/dist/login-CB23LyI1.js +0 -707
- package/dist/login-CB23LyI1.js.map +0 -1
- package/dist/session-CyRLSsVa.js.map +0 -1
- package/dist/skills-BMGH_KK1.js.map +0 -1
- package/dist/tool-formatters-NrzD6Fkk.d.ts.map +0 -1
- package/dist/transcript-anchors-BjH-68k2.js.map +0 -1
- package/dist/transcript-anchors-UhC58Tmj.d.ts.map +0 -1
- package/dist/turn-operations-Cuc9pwiB.d.ts.map +0 -1
- package/dist/turn-operations-mMxDRgLY.js.map +0 -1
- package/dist/types-BIarq1qE.js.map +0 -1
package/dist/chat.js
CHANGED
|
@@ -1,265 +1,12 @@
|
|
|
1
1
|
import { n as buildContextBreakdown, t as buildContextSegments } from "./context-segments-CJCtJ9sU.js";
|
|
2
|
-
import { $t as groupBindings,
|
|
2
|
+
import { $t as groupBindings, Fn as effectiveContextWindow, In as shouldAutoCompact, Jt as KEYBINDING_DEFS, Nn as AUTO_COMPACT_MIN_GROWTH_FRACTION, Pn as OUTPUT_RESERVE_TOKENS, Qt as formatBindingForDisplay, Xt as KEYBINDING_KEY_COL_WIDTH, Y as EMPTY_EXTENSION_REGISTRY, Yt as KEYBINDING_DEF_BY_ACTION, Zt as ensureKeybindingsFile, an as readKeybindingsRaw, cn as ALTERNATE_CRED_KEY_SUFFIX, ct as buildExtensionRegistry, dt as filterExtensionRegistry, en as keybindingsPath, hn as inlineLoadedExtension, in as readKeybindings, ln as alternateCredKey, lt as composeExtensionPreset, mn as discoverExtensions, mt as partitionExtensionCatalog, nn as mergeKeybindings, on as resolveExtensionKeybindings, pn as defaultExtensionScanPaths, pt as mergeContributions, qt as DEFAULT_KEYBINDINGS, rn as parseBindingSpec, sn as stripJsonComments, st as buildExtensionPreset, tn as matchesBinding, un as isReservedCredKey, ut as disposeExtensionRegistry, vn as scanExtensionDirectories, xn as defineExtension } from "./agent-C-camKQW.js";
|
|
3
|
+
import { C as tokenEndingAtCursor, D as shouldAutoGenerateTitle, E as generateSessionTitle, F as parseCommandInvocation, N as commandSteps, P as executeCommand, S as resolveInlineSuggestion, T as cleanTitle, b as createPathAutocompleteProvider, w as generateStructuredData, x as patchInlineGhost } from "./src-DzzhE2YO.js";
|
|
3
4
|
import { a as formatDuration, c as previewLine, i as fmtTokens, l as shortId, n as compactPath, o as formatTaskStatus, r as fmtCost, s as formatTaskSummary, t as ageString } from "./format-BF745pLL.js";
|
|
4
|
-
import {
|
|
5
|
-
import { p as resolveStorageDirs } from "./plugins-
|
|
6
|
-
import { appendDynamicSection } from "./prompt.js";
|
|
7
|
-
import { a as generateStructuredData, c as shouldAutoGenerateTitle, g as parseCommandInvocation, h as executeCommand, i as tokenEndingAtCursor, m as commandSteps, n as patchInlineGhost, o as cleanTitle, r as resolveInlineSuggestion, s as generateSessionTitle, t as createPathAutocompleteProvider } from "./inline-autocomplete-D0MPvBaS.js";
|
|
5
|
+
import { L as projectUserPaths, R as findGitRoot } from "./skills-PJyiSRCp.js";
|
|
6
|
+
import { p as resolveStorageDirs } from "./plugins-B531Tz5b.js";
|
|
8
7
|
import { a as mergeReferences, n as collectReferences, o as mergeSuggestions, r as findActiveTrigger, t as applyInsert } from "./completion-core-BRo86R_L.js";
|
|
9
|
-
import {
|
|
10
|
-
import { $ as applyEditPayload, A as SKILLS_TRIGGER, C as MARKDOWN_RENDER_CHUNK_TARGET_BYTES, D as normalizeMarkdownCodeFences, F as uniqueFilesFromReferences, G as isVisible, H as isEditErrorResult, I as COMMANDS_TRIGGER, L as createCommandsCompletionProvider, M as uniqueSkillNamesFromReferences, N as FILES_TRIGGER, O as splitMarkdownCodeBlocks, P as createFilesCompletionProvider, Q as turnSelectionOwnership, R as blendHsl, St as uniqueChatIdsFromReferences, U as isTurnHighlighted, X as selectionAfterTurnRemoval, Y as selectableTurnIds, _ as turnContextSize, _t as stripEditOutcomesAnnotation, a as TOOL_DISPLAY, at as extractEditPayload, b as filterModelCatalog, bt as chatReferenceTokensFromText, c as MAX_TRANSCRIPT_EVENTS, ct as splitLines, d as finalizeStreamingMarkdown, dt as buildEditOutcomesAnnotation, et as buildContextualDiff, f as finalizeStreamingMarkdownForOwner, ft as maskToOutcomeKinds, gt as rewriteMultiEditHeader, ht as resolveApprovalForPayload, i as turnAsText, it as computeLineDiff, j as createSkillsCompletionProvider, l as TRANSCRIPT_TRIM_TO_EVENTS, lt as summarizeEditPayload, mt as parseEditOutcomesFromResult, n as deleteTurnSafely, o as displayNameFor, ot as filetypeFromPath, pt as mergeApprovalAndBodyOutcomes, r as truncateTurnsAt, rt as computeInlineDiff, s as formatToolCall, st as previewEditPayload, t as countNeighbors, tt as buildUnifiedDiff, u as capTranscriptEvents, ut as tokenize, v as splitPromptSegments, vt as summarizeOutcomes, w as chunkMarkdownForRender, x as indexOfEntry, xt as createChatsCompletionProvider, y as buildModelCatalog, yt as CHATS_TRIGGER, z as buildLinearRamp } from "./turn-operations-mMxDRgLY.js";
|
|
8
|
+
import { $ as sanitizeModelChain, $t as hasRunReceipt, A as chunkMarkdownForRender, At as SESSION_EVENT_STATUS_STYLE, B as DAEMON_HEALTH_STYLE, Bt as sessionEventExcerpt, Cn as createChatsCompletionProvider, Ct as selectableTurnIds, D as indexOfEntry, E as filterModelCatalog, Et as turnSelectionOwnership, Ft as orchestratedBy, Gt as RUN_RECEIPT_GLYPH, Ht as sessionEventMeta, I as cacheBreakChip, It as parseSessionEventXml, Jt as formatRunDuration, K as filterChainFallbacks, Kt as fitRunReceiptCells, L as compactingLabel, Mt as WORKER_REPORT_FRAGMENT, N as normalizeMarkdownCodeFences, P as splitMarkdownCodeBlocks, Pt as isMainSession, Q as restoreChainFallbacks, Qt as formatTokensPerSecond, R as retryLabel, Rt as renderSessionEventXml, Sn as chatReferenceTokensFromText, T as buildModelCatalog, U as chainPositionOf, Ut as shortSessionId, V as buildRunModel, Vt as sessionEventLabel, W as chainsEqual, Wt as truncateTitle, X as providerKeySetChanged, Xt as formatRunReceiptLine, Yt as formatRunReceiptCells, Zt as formatTokenCount, _ as turnContextSize, _n as resolveApprovalForPayload, _t as isVisible, a as TOOL_DISPLAY, an as computeInlineDiff, at as FILES_TRIGGER, b as formatUsagePercent, bn as summarizeOutcomes, c as MAX_TRANSCRIPT_EVENTS, cn as filetypeFromPath, ct as COMMANDS_TRIGGER, d as finalizeStreamingMarkdown, dn as summarizeEditPayload, dt as buildLinearRamp, en as runReceiptFromRun, et as toggleChainEntry, f as finalizeStreamingMarkdownForOwner, fn as tokenize, gn as parseEditOutcomesFromResult, hn as mergeApprovalAndBodyOutcomes, ht as isTurnHighlighted, i as turnAsText, it as uniqueSkillNamesFromReferences, jt as SESSION_ROLE_KEY, k as MARKDOWN_RENDER_CHUNK_TARGET_BYTES, kt as ORCHESTRATED_BY_KEY, l as TRANSCRIPT_TRIM_TO_EVENTS, ln as previewEditPayload, lt as createCommandsCompletionProvider, mn as maskToOutcomeKinds, mt as isEditErrorResult, n as deleteTurnSafely, nn as buildContextualDiff, nt as SKILLS_TRIGGER, o as displayNameFor, on as computeLineDiff, ot as createFilesCompletionProvider, pn as buildEditOutcomesAnnotation, qt as formatCostUsd, r as truncateTurnsAt, rn as buildUnifiedDiff, rt as createSkillsCompletionProvider, s as formatToolCall, sn as extractEditPayload, st as uniqueFilesFromReferences, t as countNeighbors, tn as applyEditPayload, u as capTranscriptEvents, un as splitLines, ut as blendHsl, vn as rewriteMultiEditHeader, w as splitPromptSegments, wn as uniqueChatIdsFromReferences, wt as selectionAfterTurnRemoval, x as mostConstrainedWindow, xn as CHATS_TRIGGER, yn as stripEditOutcomesAnnotation, z as DAEMON_HEALTH_GLYPH, zt as sessionDirLabel } from "./turn-operations-CZLsNgw-.js";
|
|
11
9
|
import { a as searchHighlightRanges, c as searchSessionHistoryIndexAsync, d as searchSessionTurns, f as searchTurns, i as highlightSegments, l as searchSessionIndex, n as buildSessionSearchIndexAsync, o as searchSessionHistory, p as searchableTurnText, r as filterSessionSearchCatalog, s as searchSessionHistoryIndex, t as buildSessionSearchIndex, u as searchSessionIndexAsync } from "./history-search-C4bk1Wz_.js";
|
|
12
|
-
import { $ as
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Update the zidane CLI to the latest release.
|
|
17
|
-
|
|
18
|
-
Options:
|
|
19
|
-
--check Print the latest version and exit (no install).
|
|
20
|
-
--in-place Download the platform binary directly from npm
|
|
21
|
-
and atomic-rename over the running binary.
|
|
22
|
-
Skips the package manager. Refused on Volta.
|
|
23
|
-
--dry-run Resolve everything but don't actually install.
|
|
24
|
-
--channel <tag> dist-tag to query (default: latest).
|
|
25
|
-
--registry <url> Override the npm registry.
|
|
26
|
-
--package-manager <pm> Force npm | pnpm | yarn | bun | volta.
|
|
27
|
-
--force Run the install even if we're already on latest,
|
|
28
|
-
or the registry check failed.
|
|
29
|
-
-h, --help Print this help.
|
|
30
|
-
|
|
31
|
-
Environment:
|
|
32
|
-
NO_UPDATE_NOTIFIER Silence the background check (set to "1").
|
|
33
|
-
ZIDANE_NO_UPDATE Same, project-specific.
|
|
34
|
-
`;
|
|
35
|
-
/**
|
|
36
|
-
* Run the `upgrade` subcommand. Exit code contract:
|
|
37
|
-
* - `0` — update succeeded, `--check` reported no update, or `--check`
|
|
38
|
-
* reported an update (informational only).
|
|
39
|
-
* - `1` — update failed (PM exit non-zero, in-place download failed,
|
|
40
|
-
* registry returned non-2xx).
|
|
41
|
-
* - `2` — argv parse error (unknown flag).
|
|
42
|
-
*/
|
|
43
|
-
async function runUpdateCommand(options) {
|
|
44
|
-
const out = options.stdout ?? process.stdout;
|
|
45
|
-
const err = options.stderr ?? process.stderr;
|
|
46
|
-
const parsed = parseArgs(options.argv);
|
|
47
|
-
if (parsed.kind === "error") {
|
|
48
|
-
err.write(`zidane upgrade: ${parsed.message}\n`);
|
|
49
|
-
err.write(UPGRADE_HELP);
|
|
50
|
-
return { exitCode: 2 };
|
|
51
|
-
}
|
|
52
|
-
if (parsed.help) {
|
|
53
|
-
out.write(UPGRADE_HELP);
|
|
54
|
-
return { exitCode: 0 };
|
|
55
|
-
}
|
|
56
|
-
const channel = parsed.channel ?? options.defaultChannel ?? "latest";
|
|
57
|
-
const registry = parsed.registry ?? options.registry;
|
|
58
|
-
const status = await checkForUpdate({
|
|
59
|
-
packageName: options.packageName,
|
|
60
|
-
currentVersion: options.currentVersion,
|
|
61
|
-
channel,
|
|
62
|
-
registry,
|
|
63
|
-
cacheDir: options.cacheDir,
|
|
64
|
-
force: true,
|
|
65
|
-
timeoutMs: 8e3
|
|
66
|
-
});
|
|
67
|
-
if (parsed.check) {
|
|
68
|
-
if (status.source === "error") {
|
|
69
|
-
err.write(`Could not check \`${channel}\` (${status.error ?? "unknown error"}). Current: v${options.currentVersion}.\n`);
|
|
70
|
-
return { exitCode: 0 };
|
|
71
|
-
}
|
|
72
|
-
if (!status.latest) {
|
|
73
|
-
err.write(`Could not determine latest version on \`${channel}\`. Current: v${options.currentVersion}.\n`);
|
|
74
|
-
return { exitCode: 0 };
|
|
75
|
-
}
|
|
76
|
-
if (compareSemver(status.latest, options.currentVersion) > 0) out.write(`v${status.latest} is available on \`${channel}\` (current: v${options.currentVersion}).\n`);
|
|
77
|
-
else out.write(`Already on v${options.currentVersion} (latest on \`${channel}\` is v${status.latest}).\n`);
|
|
78
|
-
return { exitCode: 0 };
|
|
79
|
-
}
|
|
80
|
-
if (status.source === "error") {
|
|
81
|
-
err.write(`zidane upgrade: registry check failed (${status.error ?? "unknown error"})\n`);
|
|
82
|
-
if (!parsed.force) {
|
|
83
|
-
err.write("Pass --force to attempt the install anyway.\n");
|
|
84
|
-
return { exitCode: 1 };
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (status.latest && !parsed.force) {
|
|
88
|
-
if (compareSemver(status.latest, options.currentVersion) <= 0) {
|
|
89
|
-
out.write(`Already on v${options.currentVersion} (latest on \`${channel}\` is v${status.latest}).\n`);
|
|
90
|
-
return { exitCode: 0 };
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
if (parsed.inPlace) {
|
|
94
|
-
const platformPkg = resolvePlatformPackage({ prefix: options.platformPackagePrefix ?? `${options.packageName}-` });
|
|
95
|
-
if (!platformPkg) {
|
|
96
|
-
err.write(`No prebuilt binary for ${process.platform}/${process.arch}. Run \`${options.packageName}-upgrade\` via your package manager instead.\n`);
|
|
97
|
-
return { exitCode: 1 };
|
|
98
|
-
}
|
|
99
|
-
out.write(`Downloading ${platformPkg}@${channel}…\n`);
|
|
100
|
-
const result = await performInPlaceSelfUpdate({
|
|
101
|
-
packageName: platformPkg,
|
|
102
|
-
channel,
|
|
103
|
-
registry,
|
|
104
|
-
dryRun: parsed.dryRun
|
|
105
|
-
});
|
|
106
|
-
if (result.status === "success") {
|
|
107
|
-
const verb = parsed.dryRun ? "Would install" : "Installed";
|
|
108
|
-
out.write(`${verb} v${result.installedVersion} at ${result.binaryPath}.\n`);
|
|
109
|
-
return { exitCode: 0 };
|
|
110
|
-
}
|
|
111
|
-
err.write(`In-place update failed: ${result.reason ?? "unknown error"}\n`);
|
|
112
|
-
if (result.status === "refused") err.write("Falling back to package-manager path (drop --in-place to retry).\n");
|
|
113
|
-
return { exitCode: 1 };
|
|
114
|
-
}
|
|
115
|
-
const detected = detectPackageManager({
|
|
116
|
-
packageName: options.packageName,
|
|
117
|
-
channel
|
|
118
|
-
});
|
|
119
|
-
if (detected.note) out.write(`${detected.note}\n`);
|
|
120
|
-
out.write(`Running: ${detected.argv.join(" ")}\n`);
|
|
121
|
-
if (parsed.dryRun) return { exitCode: 0 };
|
|
122
|
-
const result = await performSelfUpdate({
|
|
123
|
-
packageName: options.packageName,
|
|
124
|
-
channel,
|
|
125
|
-
packageManager: parsed.packageManager ?? "auto"
|
|
126
|
-
});
|
|
127
|
-
if (result.spawnError) {
|
|
128
|
-
err.write(`Failed to launch \`${result.command.argv[0]}\`: ${result.spawnError}\n`);
|
|
129
|
-
err.write("Is the package manager installed and on $PATH?\n");
|
|
130
|
-
return { exitCode: 1 };
|
|
131
|
-
}
|
|
132
|
-
return { exitCode: result.exitCode ?? 1 };
|
|
133
|
-
}
|
|
134
|
-
function parseArgs(argv) {
|
|
135
|
-
let check = false;
|
|
136
|
-
let inPlace = false;
|
|
137
|
-
let dryRun = false;
|
|
138
|
-
let force = false;
|
|
139
|
-
let help = false;
|
|
140
|
-
let channel;
|
|
141
|
-
let registry;
|
|
142
|
-
let packageManager;
|
|
143
|
-
for (let i = 0; i < argv.length; i++) {
|
|
144
|
-
const a = argv[i];
|
|
145
|
-
switch (a) {
|
|
146
|
-
case "--check":
|
|
147
|
-
check = true;
|
|
148
|
-
break;
|
|
149
|
-
case "--in-place":
|
|
150
|
-
case "--inplace":
|
|
151
|
-
inPlace = true;
|
|
152
|
-
break;
|
|
153
|
-
case "--dry-run":
|
|
154
|
-
case "--dryrun":
|
|
155
|
-
dryRun = true;
|
|
156
|
-
break;
|
|
157
|
-
case "--force":
|
|
158
|
-
force = true;
|
|
159
|
-
break;
|
|
160
|
-
case "-h":
|
|
161
|
-
case "--help":
|
|
162
|
-
help = true;
|
|
163
|
-
break;
|
|
164
|
-
case "--channel":
|
|
165
|
-
channel = argv[++i];
|
|
166
|
-
if (!channel) return {
|
|
167
|
-
kind: "error",
|
|
168
|
-
message: "--channel requires a value"
|
|
169
|
-
};
|
|
170
|
-
break;
|
|
171
|
-
case "--registry":
|
|
172
|
-
registry = argv[++i];
|
|
173
|
-
if (!registry) return {
|
|
174
|
-
kind: "error",
|
|
175
|
-
message: "--registry requires a value"
|
|
176
|
-
};
|
|
177
|
-
break;
|
|
178
|
-
case "--package-manager":
|
|
179
|
-
case "--pm": {
|
|
180
|
-
const v = argv[++i];
|
|
181
|
-
if (!v) return {
|
|
182
|
-
kind: "error",
|
|
183
|
-
message: "--package-manager requires a value"
|
|
184
|
-
};
|
|
185
|
-
if (v !== "npm" && v !== "pnpm" && v !== "yarn" && v !== "bun" && v !== "volta") return {
|
|
186
|
-
kind: "error",
|
|
187
|
-
message: `unknown package manager: ${v}`
|
|
188
|
-
};
|
|
189
|
-
packageManager = v;
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
default: return {
|
|
193
|
-
kind: "error",
|
|
194
|
-
message: `unknown argument: ${a}`
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return {
|
|
199
|
-
kind: "ok",
|
|
200
|
-
check,
|
|
201
|
-
inPlace,
|
|
202
|
-
dryRun,
|
|
203
|
-
force,
|
|
204
|
-
help,
|
|
205
|
-
channel,
|
|
206
|
-
registry,
|
|
207
|
-
packageManager
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
//#endregion
|
|
211
|
-
//#region src/chat/todo-anchor.ts
|
|
212
|
-
function renderActiveTodoAnchor(todos, options = {}) {
|
|
213
|
-
if (options.enabled === false || todos.length === 0) return "";
|
|
214
|
-
const maxItems = Math.max(1, Math.floor(options.maxItems ?? 6));
|
|
215
|
-
const heading = options.heading ?? "Active Todo Anchor";
|
|
216
|
-
const visible = todos.slice(0, maxItems);
|
|
217
|
-
const lines = [`# ${heading}`, "<active_todos>"];
|
|
218
|
-
for (const item of visible) lines.push(`- [${item.status}] ${item.content}`);
|
|
219
|
-
if (todos.length > visible.length) lines.push(`- ... ${todos.length - visible.length} more`);
|
|
220
|
-
lines.push("</active_todos>");
|
|
221
|
-
return lines.join("\n");
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Optional chat-layer hook that keeps the live `todowrite` list visible in the
|
|
225
|
-
* dynamic system prompt. It reads only live todos, never the archive, so an
|
|
226
|
-
* auto-cleared completed plan is not reintroduced on later turns.
|
|
227
|
-
*
|
|
228
|
-
* ## Prompt-cache cost — read before enabling
|
|
229
|
-
*
|
|
230
|
-
* This writes per-turn state into the system prompt, and the system prompt sits
|
|
231
|
-
* ABOVE the entire conversation in the provider's cache prefix (Anthropic hashes
|
|
232
|
-
* tools → system → messages, cumulatively). So every time the rendered anchor
|
|
233
|
-
* changes by a single byte, the whole transcript stops matching the cache and
|
|
234
|
-
* re-bills at the cache-write rate; only `tools` and the static system block
|
|
235
|
-
* survive.
|
|
236
|
-
*
|
|
237
|
-
* That is an acceptable trade only because the anchor changes *rarely* — once
|
|
238
|
-
* per `todowrite`, which in practice is a small fraction of turns. Two rules
|
|
239
|
-
* follow, and breaking either one turns that occasional cost into a per-turn
|
|
240
|
-
* one:
|
|
241
|
-
*
|
|
242
|
-
* 1. Never add anything to the anchor that ticks on its own — no counters, no
|
|
243
|
-
* timestamps, no elapsed times, no per-turn indices.
|
|
244
|
-
* 2. The render must stay a pure function of the todo list.
|
|
245
|
-
* `renderActiveTodoAnchor` is deterministic today, so identical todos emit
|
|
246
|
-
* identical bytes; keep it that way. Note this does NOT cover reordering —
|
|
247
|
-
* todo order is semantically meaningful (it is the plan), so a reorder is
|
|
248
|
-
* a real state change and costs one re-bill like any other `todowrite`.
|
|
249
|
-
*
|
|
250
|
-
* Moving the anchor onto the newest message instead does NOT avoid this: it is
|
|
251
|
-
* wire-only, so the message that carried last turn's anchor re-renders without
|
|
252
|
-
* it, and the prefix diverges at that point just the same. The only injection
|
|
253
|
-
* that is genuinely free is one persisted into the transcript as immutable
|
|
254
|
-
* history.
|
|
255
|
-
*/
|
|
256
|
-
function createActiveTodoAnchorHooks(options = {}) {
|
|
257
|
-
return { "system:transform": (ctx) => {
|
|
258
|
-
const anchor = renderActiveTodoAnchor(selectActiveTodos(ctx.session).todos, options);
|
|
259
|
-
if (anchor) ctx.system = appendDynamicSection(ctx.system, anchor);
|
|
260
|
-
} };
|
|
261
|
-
}
|
|
262
|
-
//#endregion
|
|
263
|
-
export { ACTIONS_WITH_CARE_DOCTRINE, ALTERNATE_CRED_KEY_SUFFIX, ASK_USER_TOOL, AUTOMATIC_INTERACTION_INSTRUCTION, AUTO_COMPACT_MIN_GROWTH_FRACTION, BUILD_AGENT, BUILTIN_AGENTS, BUILTIN_PROVIDERS, BUILTIN_THEMES, CATPPUCCIN_FRAPPE, CATPPUCCIN_LATTE, CATPPUCCIN_MACCHIATO, CATPPUCCIN_MOCHA, CHATS_TRIGGER, COMMANDS_TRIGGER, COMMUNICATION_DOCTRINE, ConfigProvider, DEFAULT_AGENT_ID, DEFAULT_BUDGET_EXCLUDE_TOOLS, DEFAULT_KEYBINDINGS, DEFAULT_PERSIST_EXCLUDE_TOOLS, DEFAULT_SETTINGS, DEFAULT_THEME, DOING_TASKS_DOCTRINE, DiscoveryProvider, EMPTY_EXTENSION_REGISTRY, EMPTY_HINTS, FILES_TRIGGER, GRUVBOX_DARK, GRUVBOX_LIGHT, HOST_INTERACTION_ID_PREFIX, IDENTITY_PREFIX, IMPLICITLY_SAFE_TOOLS, INTERACTION_GUIDANCE, INTERACTION_GUIDANCE_NO_PROMPTS, InteractionsProvider, KEYBINDING_DEFS, KEYBINDING_DEF_BY_ACTION, KEYBINDING_KEY_COL_WIDTH, MARKDOWN_RENDER_CHUNK_TARGET_BYTES, MAX_TRANSCRIPT_EVENTS, McpAuthProvider, OUTPUT_RESERVE_TOKENS, PLAN_AGENT, PLAN_MODE_DOCTRINE, PLAN_MODE_DOCTRINE_NO_PROMPTS, PRESENT_PLAN_TOOL, SETTINGS_CATEGORIES, SETTINGS_CHOICES, SETTINGS_INPUTS, SETTINGS_TOGGLES, SKILLS_TRIGGER, SUBAGENT_GUIDANCE, SafeModeProvider, SettingsProvider, TODOREAD_TOOL, TODOS_METADATA_KEY, TODOWRITE_TOOL, TODO_STATUS_GLYPHS, TODO_WRITE_COUNTS_METADATA_KEY, TOKEN_DISCIPLINE_DOCTRINE, TOOL_DISPLAY, TRANSCRIPT_TRIM_TO_EVENTS, ThemeProvider, USAGE_CACHE_TTL_MS, VAPORWAVE_THEME, accentColor, addToSafelist, ageString, alternateCredKey, anthropicDescriptor, applyApiKeyEnv, applyEditPayload, applyInsert, blendHsl, bootProfileEnabled, bootTick, buildBuildSystem, buildContextBreakdown, buildContextSegments, buildContextualDiff, buildEditOutcomesAnnotation, buildExtensionPreset, buildExtensionRegistry, buildHints, buildLinearRamp, buildMcpServers, buildModelCatalog, buildPlanSystem, buildResumedToolResultsTurn, buildRunModel, buildSessionSearchIndex, buildSessionSearchIndexAsync, buildSkillsConfig, buildToolToggle, buildUnifiedDiff, buildUpdateHint, buildVisibleMcpRows, capTranscriptEvents, cerebrasDescriptor, chainPositionOf, chainsEqual, chatAutoCompactBehavior, chatReferenceTokensForPrompt, chatReferenceTokensFromText, checkForUpdate, chunkMarkdownForRender, cleanTitle, clearMcpToolsCache, clearProviderUsageCache, clipHintsToWidth, collectReferences, commandSteps, compactPath, compactSummaryEvent, compareSemver, composeExtensionPreset, computeInlineDiff, computeLineDiff, computeTurnAnchors, countClaudeSessionFiles, countNeighbors, createActiveTodoAnchorHooks, createAutomaticInteractionResponse, createChatTurnsReadTool, createChatsCompletionProvider, createCommandsCompletionProvider, createDiscoverySlot, createFileMcpCredentialStore, createFilesCompletionProvider, createInteractionTools, createPathAutocompleteProvider, createSkillsCompletionProvider, createStateStore, createTodoTools, credKeyOf, credentialsPath, dedupMcpServersByName, defaultExtensionScanPaths, defaultMcpsConfigPaths, defaultSkillScanPaths, defineExtension, deleteTurnSafely, deriveSessionTitle, detectAuth, detectLibc, detectPackageManager, discoverAgentsMd, discoverExtensions, discoverProjectMcps, discoverProjectSkills, discoverSystemMd, displayNameFor, disposeExtensionRegistry, effectiveContextWindow, enabledModelOptions, ensureKeybindingsFile, envSection, eventsFromTurns, executeCommand, extractEditPayload, fetchAllProviderUsage, fetchOAuthRedirect, fetchProviderUsage, filetypeFromPath, filterChainFallbacks, filterExtensionRegistry, filterModelCatalog, filterSessionSearchCatalog, finalizeStreamingMarkdown, finalizeStreamingMarkdownForOwner, findActiveTrigger, findGitRoot, fmtCost, fmtTokens, formatBindingForDisplay, formatDuration, formatPathForCwd, formatTaskStatus, formatTaskSummary, formatToolCall, formatUsagePercent, generateSessionTitle, generateStructuredData, getArchivedTodosForRun, getContextWindow, getMcpAuthStatus, getModelInfo, getSafelist, getTodosForRun, groupBindings, hasClaudeCodeSetup, highlightSegments, hintsLength, importFromClaudeCode, indexOfEntry, indexOfServerRow, inlineLoadedExtension, isEditErrorResult, isInteractionTool, isModelInteraction, isOnSafelist, isReservedCredKey, isTodoTool, isTurnHighlighted, isVisible, keybindingsPath, lastContextSizeFromTurns, listProjectFiles, listSessionMeta, loadMcpToolsCache, loadState, localDescriptor, makeRequestInteraction, marginTopFor, maskToOutcomeKinds, matchesBinding, matchesSafelistEntry, mcpCredentialsPath, mcpToolsCachePath, mcpsWritePath, mergeApprovalAndBodyOutcomes, mergeContributions, mergeKeybindings, mergeReferences, mergeSuggestions, modelOptionsFor, modelSupportsReasoning, modelsForDescriptor, mostConstrainedWindow, normalizeMarkdownCodeFences, normalizeRedirectPaste, oauthUsesManualCodePaste, openaiDescriptor, openrouterDescriptor, parentServerName, parseBindingSpec, parseCommandInvocation, parseEditOutcomesFromResult, parseMcpsFile, parseSemver, partitionExtensionCatalog, patchInlineGhost, patchMcpCredential, pendingInteractionsFromTurns, performInPlaceSelfUpdate, performSelfUpdate, piIdOf, pickActiveRunId, previewEditPayload, previewLine, projectUserPaths, projectsFilePath, providerKeySetChanged, providerUsageSupported, pruneTodosByRun, readCredentials, readKeybindings, readKeybindingsRaw, readProjects, readProviderCredential, readProviderCredentialPair, redirectUriFromAuthUrl, reduceMcpAuth, refreshMcpToolsCatalog, removeMcpServer, removeProviderCredential, renderActiveTodoAnchor, renderAgentsMdBlock, renderSession, renderSystemMdSeed, resolveAgentId, resolveApprovalForPayload, resolveChipColor, resolveConfig, resolveExtensionKeybindings, resolveInlineSuggestion, resolvePlatformPackage, resolveSessionExportTarget, resolveStorageDirs, resolveStoragePaths, resolveTheme, restoreChainFallbacks, restoreModelOptions, rewriteMultiEditHeader, runOAuthLogin, runUpdateCommand, sanitizeModelChain, saveMcpToolsCache, saveState, scanExtensionDirectories, searchHighlightRanges, searchSessionHistory, searchSessionHistoryIndex, searchSessionHistoryIndexAsync, searchSessionIndex, searchSessionIndexAsync, searchSessionTurns, searchTurns, searchableTurnText, selectActiveTodos, selectableTurnIds, selectionAfterTurnRemoval, serializeInteractionResponse, setPreferredCredential, setProviderCredential, setTodosForRun, shortChord, shortId, shouldAutoCompact, shouldAutoGenerateTitle, singleAgentRegistry, splitLines, splitMarkdownCodeBlocks, splitPromptSegments, stripEditOutcomesAnnotation, stripJsonComments, stripSpawnTokensLine, subscribeMcpToolsCache, suggestSafelistEntries, sumRunCosts, summarizeEditPayload, summarizeOutcomes, supportsOAuth, titleFromTurns, toggleChainEntry, tokenEndingAtCursor, tokenize, toolCallPreview, toolResultText, truncateTrailing, truncateTurnsAt, tryOpenBrowser, turnAsText, turnContextSize, turnSelectionOwnership, uniqueChatIdsFromReferences, uniqueFilesFromReferences, uniqueSkillNamesFromReferences, updateToolEventOutcomes, upsertMcpServer, usageByModel, usageChecksOptedOut, usageSourceFor, useActiveTodos, useColors, useCompletion, useConfig, useDiscovery, useDiscoveryOptional, useEnabledToggleSet, useInteractionsActions, useInteractionsQueue, useMcpAuthDispatch, useMcpAuthState, useMcpToolToggleMap, useMcpToolToggleSet, useSafeModeActions, useSafeModeQueue, useSelectStyle, useSettings, useStreamBuffer, useSurfaces, useSyntaxStyles, useTheme, useUpdateCheck, userSystemMdPath, writeCredentials, writeProjects, writeSessionExport };
|
|
264
|
-
|
|
265
|
-
//# sourceMappingURL=chat.js.map
|
|
10
|
+
import { $ as supportsOAuth, $n as buildUpdateHint, $r as chatReferenceTokensForPrompt, $t as runCompaction, A as useSafeModeQueue, An as createDiscoverySlot, Ar as getArchivedTodosForRun, At as makeRequestInteraction, B as USAGE_CACHE_TTL_MS, Bn as hasClaudeCodeSetup, Br as ACTIONS_WITH_CARE_DOCTRINE, Bt as readFileSafe, C as resolveSessionExportTarget, Cn as GRUVBOX_LIGHT, Cr as TODOREAD_TOOL, Ct as InteractionsProvider, D as scopeCwd, Dn as CATPPUCCIN_MOCHA, Dr as TODO_WRITE_COUNTS_METADATA_KEY, Dt as createInteractionTools, E as resolveSessionCwd, En as CATPPUCCIN_MACCHIATO, Er as TODO_STATUS_GLYPHS, Et as createAutomaticInteractionResponse, F as matchesSafelistEntry, Fn as useConfig, Fr as sanitizeTodoItems, G as usageChecksOptedOut, Gn as buildMcpServers, Gr as INTERACTION_GUIDANCE_NO_PROMPTS, Gt as modelChainMetadata, H as fetchAllProviderUsage, Hn as mcpsWritePath, Hr as DOING_TASKS_DOCTRINE, Ht as serializePreview, I as projectsFilePath, In as resolveConfig, Ir as selectActiveTodos, It as createChatHost, J as fetchOAuthRedirect, Jn as discoverProjectMcps, Jr as SUBAGENT_GUIDANCE, Jt as buildPluginContributions, K as usageSourceFor, Kn as dedupMcpServersByName, Kr as PLAN_MODE_DOCTRINE, Kt as sessionModelFallbacks, L as readProjects, Ln as resolveStoragePaths, Lr as setTodosForRun, Lt as toTodosSnapshot, M as addToSafelist, Mn as useDiscovery, Mr as isTodoTool, Mt as serializeInteractionResponse, N as getSafelist, Nn as useDiscoveryOptional, Nr as pickActiveRunId, Nt as useInteractionsActions, O as SafeModeProvider, On as parseEditorCommand, Ot as isInteractionTool, P as isOnSafelist, Pn as ConfigProvider, Pr as pruneTodosByRun, Pt as useInteractionsQueue, Q as runOAuthLogin, Qn as bootTick, Qr as envSection, Qt as EditOutcomeLedger, R as suggestSafelistEntries, Rn as useCompletion, Rt as createInteractionHub, S as renderSession, Sn as GRUVBOX_DARK, Sr as DEFAULT_MAX_TODO_ITEMS, St as HOST_INTERACTION_ID_PREFIX, T as folderlessCwd, Tn as CATPPUCCIN_LATTE, Tr as TODOWRITE_TOOL, Tt as buildResumedToolResultsTurn, U as fetchProviderUsage, Un as removeMcpServer, Ur as IDENTITY_PREFIX, V as clearProviderUsageCache, Vn as importFromClaudeCode, Vr as COMMUNICATION_DOCTRINE, Vt as resolveCwdPath, W as providerUsageSupported, Wn as upsertMcpServer, Wr as INTERACTION_GUIDANCE, X as redirectUriFromAuthUrl, Xn as tryOpenBrowser, Xr as buildBuildSystem, Y as normalizeRedirectPaste, Yn as parseMcpsFile, Yr as TOKEN_DISCIPLINE_DOCTRINE, Yt as discoverProjectPlugins, Z as oauthUsesManualCodePaste, Zn as bootProfileEnabled, Zr as buildPlanSystem, _ as buildSpawnEndEvent, _i as toolCallPreview, _n as BUILTIN_THEMES, _r as DEFAULT_PERSIST_EXCLUDE_TOOLS, _t as useMcpAuthState, a as renderActiveTodoAnchor, ai as eventsFromTurns, an as shortChord, ar as detectPackageManager, at as subscribeMcpToolsCache, b as defaultSkillScanPaths, bi as usageByModel, bn as resolveTheme, br as resolveAgentId, bt as ASK_USER_TOOL, c as useSelectStyle, ci as listSessionMeta, cn as DEFAULT_SETTINGS, cr as performSelfUpdate, ct as useMcpToolToggleSet, d as useTheme, dn as SETTINGS_INPUTS, dr as discoverAgentsMd, dt as parentServerName, ei as createChatTurnsReadTool, en as EMPTY_HINTS, er as useUpdateCheck, et as clearMcpToolsCache, f as discoverSystemMd, fi as saveState, fn as SETTINGS_TOGGLES, fr as renderAgentsMdBlock, ft as createFileMcpCredentialStore, g as useStreamBuffer, gi as titleFromTurns, gn as useSettings, gr as DEFAULT_BUDGET_EXCLUDE_TOOLS, gt as useMcpAuthDispatch, h as userSystemMdPath, hi as sumRunCosts, hn as enforceSettingsInvariants, hr as DEFAULT_AGENT_ID, ht as McpAuthProvider, i as createActiveTodoAnchorHooks, ii as deriveSessionTitle, in as buildHints, ir as detectLibc, it as saveMcpToolsCache, j as IMPLICITLY_SAFE_TOOLS, jn as DiscoveryProvider, jr as getTodosForRun, jt as pendingInteractionsFromTurns, k as useSafeModeActions, kn as quoteForShell, kr as createTodoTools, kt as isModelInteraction, l as useSurfaces, li as loadState, ln as SETTINGS_CATEGORIES, lr as resolvePlatformPackage, lt as buildVisibleMcpRows, m as userScopeOverridesLoad, mi as stripSpawnTokensLine, mr as BUILTIN_AGENTS, mt as patchMcpCredential, n as createMemoryApprovalsStore, ni as compactSummaryEvent, nn as hintsLength, nr as checkForUpdate, nt as mcpToolsCachePath, o as ThemeProvider, on as listProjectFiles, or as parseSemver, ot as buildToolToggle, p as renderSystemMdSeed, pn as SettingsProvider, pr as BUILD_AGENT, pt as mcpCredentialsPath, q as formatPathForCwd, qn as defaultMcpsConfigPaths, qr as PLAN_MODE_DOCTRINE_NO_PROMPTS, qt as runEndNotice, r as computeTurnAnchors, ri as createStateStore, rn as truncateTrailing, rr as compareSemver, rt as refreshMcpToolsCatalog, s as useColors, si as lastContextSizeFromTurns, sn as useEnabledToggleSet, sr as performInPlaceSelfUpdate, st as useMcpToolToggleMap, t as createApprovalHub, tn as clipHintsToWidth, tr as runUpdateCommand, tt as loadMcpToolsCache, u as useSyntaxStyles, ui as marginTopFor, un as SETTINGS_CHOICES, ur as chatAutoCompactBehavior, ut as indexOfServerRow, v as buildSpawnStartEvent, vi as toolResultText, vn as DEFAULT_THEME, vr as PLAN_AGENT, vt as getMcpAuthStatus, w as writeSessionExport, wn as CATPPUCCIN_FRAPPE, wr as TODOS_METADATA_KEY, wt as PRESENT_PLAN_TOOL, x as discoverProjectSkills, xn as VAPORWAVE_THEME, xr as singleAgentRegistry, xt as AUTOMATIC_INTERACTION_INSTRUCTION, y as buildSkillsConfig, yi as updateToolEventOutcomes, yn as resolveChipColor, yr as accentColor, yt as reduceMcpAuth, z as writeProjects, zn as countClaudeSessionFiles, zr as useActiveTodos, zt as extractEditPayloadForGate } from "./approvals-CqqxE5Vh.js";
|
|
11
|
+
import { C as openrouterDescriptor, S as openaiDescriptor, T as restoreModelOptions, _ as getModelInfo, a as readProviderCredential, b as modelSupportsReasoning, c as setPreferredCredential, d as BUILTIN_PROVIDERS, f as anthropicDescriptor, g as getContextWindow, h as enabledModelOptions, i as readCredentials, l as setProviderCredential, m as credKeyOf, n as applyApiKeyEnv, o as readProviderCredentialPair, p as cerebrasDescriptor, r as credentialsPath, s as removeProviderCredential, t as detectAuth, u as writeCredentials, v as localDescriptor, w as piIdOf, x as modelsForDescriptor, y as modelOptionsFor } from "./auth-BdwDROYg.js";
|
|
12
|
+
export { ACTIONS_WITH_CARE_DOCTRINE, ALTERNATE_CRED_KEY_SUFFIX, ASK_USER_TOOL, AUTOMATIC_INTERACTION_INSTRUCTION, AUTO_COMPACT_MIN_GROWTH_FRACTION, BUILD_AGENT, BUILTIN_AGENTS, BUILTIN_PROVIDERS, BUILTIN_THEMES, CATPPUCCIN_FRAPPE, CATPPUCCIN_LATTE, CATPPUCCIN_MACCHIATO, CATPPUCCIN_MOCHA, CHATS_TRIGGER, COMMANDS_TRIGGER, COMMUNICATION_DOCTRINE, ConfigProvider, DAEMON_HEALTH_GLYPH, DAEMON_HEALTH_STYLE, DEFAULT_AGENT_ID, DEFAULT_BUDGET_EXCLUDE_TOOLS, DEFAULT_KEYBINDINGS, DEFAULT_MAX_TODO_ITEMS, DEFAULT_PERSIST_EXCLUDE_TOOLS, DEFAULT_SETTINGS, DEFAULT_THEME, DOING_TASKS_DOCTRINE, DiscoveryProvider, EMPTY_EXTENSION_REGISTRY, EMPTY_HINTS, EditOutcomeLedger, FILES_TRIGGER, GRUVBOX_DARK, GRUVBOX_LIGHT, HOST_INTERACTION_ID_PREFIX, IDENTITY_PREFIX, IMPLICITLY_SAFE_TOOLS, INTERACTION_GUIDANCE, INTERACTION_GUIDANCE_NO_PROMPTS, InteractionsProvider, KEYBINDING_DEFS, KEYBINDING_DEF_BY_ACTION, KEYBINDING_KEY_COL_WIDTH, MARKDOWN_RENDER_CHUNK_TARGET_BYTES, MAX_TRANSCRIPT_EVENTS, McpAuthProvider, ORCHESTRATED_BY_KEY, OUTPUT_RESERVE_TOKENS, PLAN_AGENT, PLAN_MODE_DOCTRINE, PLAN_MODE_DOCTRINE_NO_PROMPTS, PRESENT_PLAN_TOOL, RUN_RECEIPT_GLYPH, SESSION_EVENT_STATUS_STYLE, SESSION_ROLE_KEY, SETTINGS_CATEGORIES, SETTINGS_CHOICES, SETTINGS_INPUTS, SETTINGS_TOGGLES, SKILLS_TRIGGER, SUBAGENT_GUIDANCE, SafeModeProvider, SettingsProvider, TODOREAD_TOOL, TODOS_METADATA_KEY, TODOWRITE_TOOL, TODO_STATUS_GLYPHS, TODO_WRITE_COUNTS_METADATA_KEY, TOKEN_DISCIPLINE_DOCTRINE, TOOL_DISPLAY, TRANSCRIPT_TRIM_TO_EVENTS, ThemeProvider, USAGE_CACHE_TTL_MS, VAPORWAVE_THEME, WORKER_REPORT_FRAGMENT, accentColor, addToSafelist, ageString, alternateCredKey, anthropicDescriptor, applyApiKeyEnv, applyEditPayload, applyInsert, blendHsl, bootProfileEnabled, bootTick, buildBuildSystem, buildContextBreakdown, buildContextSegments, buildContextualDiff, buildEditOutcomesAnnotation, buildExtensionPreset, buildExtensionRegistry, buildHints, buildLinearRamp, buildMcpServers, buildModelCatalog, buildPlanSystem, buildPluginContributions, buildResumedToolResultsTurn, buildRunModel, buildSessionSearchIndex, buildSessionSearchIndexAsync, buildSkillsConfig, buildSpawnEndEvent, buildSpawnStartEvent, buildToolToggle, buildUnifiedDiff, buildUpdateHint, buildVisibleMcpRows, cacheBreakChip, capTranscriptEvents, cerebrasDescriptor, chainPositionOf, chainsEqual, chatAutoCompactBehavior, chatReferenceTokensForPrompt, chatReferenceTokensFromText, checkForUpdate, chunkMarkdownForRender, cleanTitle, clearMcpToolsCache, clearProviderUsageCache, clipHintsToWidth, collectReferences, commandSteps, compactPath, compactSummaryEvent, compactingLabel, compareSemver, composeExtensionPreset, computeInlineDiff, computeLineDiff, computeTurnAnchors, countClaudeSessionFiles, countNeighbors, createActiveTodoAnchorHooks, createApprovalHub, createAutomaticInteractionResponse, createChatHost, createChatTurnsReadTool, createChatsCompletionProvider, createCommandsCompletionProvider, createDiscoverySlot, createFileMcpCredentialStore, createFilesCompletionProvider, createInteractionHub, createInteractionTools, createMemoryApprovalsStore, createPathAutocompleteProvider, createSkillsCompletionProvider, createStateStore, createTodoTools, credKeyOf, credentialsPath, dedupMcpServersByName, defaultExtensionScanPaths, defaultMcpsConfigPaths, defaultSkillScanPaths, defineExtension, deleteTurnSafely, deriveSessionTitle, detectAuth, detectLibc, detectPackageManager, discoverAgentsMd, discoverExtensions, discoverProjectMcps, discoverProjectPlugins, discoverProjectSkills, discoverSystemMd, displayNameFor, disposeExtensionRegistry, effectiveContextWindow, enabledModelOptions, enforceSettingsInvariants, ensureKeybindingsFile, envSection, eventsFromTurns, executeCommand, extractEditPayload, extractEditPayloadForGate, fetchAllProviderUsage, fetchOAuthRedirect, fetchProviderUsage, filetypeFromPath, filterChainFallbacks, filterExtensionRegistry, filterModelCatalog, filterSessionSearchCatalog, finalizeStreamingMarkdown, finalizeStreamingMarkdownForOwner, findActiveTrigger, findGitRoot, fitRunReceiptCells, fmtCost, fmtTokens, folderlessCwd, formatBindingForDisplay, formatCostUsd, formatDuration, formatPathForCwd, formatRunDuration, formatRunReceiptCells, formatRunReceiptLine, formatTaskStatus, formatTaskSummary, formatTokenCount, formatTokensPerSecond, formatToolCall, formatUsagePercent, generateSessionTitle, generateStructuredData, getArchivedTodosForRun, getContextWindow, getMcpAuthStatus, getModelInfo, getSafelist, getTodosForRun, groupBindings, hasClaudeCodeSetup, hasRunReceipt, highlightSegments, hintsLength, importFromClaudeCode, indexOfEntry, indexOfServerRow, inlineLoadedExtension, isEditErrorResult, isInteractionTool, isMainSession, isModelInteraction, isOnSafelist, isReservedCredKey, isTodoTool, isTurnHighlighted, isVisible, keybindingsPath, lastContextSizeFromTurns, listProjectFiles, listSessionMeta, loadMcpToolsCache, loadState, localDescriptor, makeRequestInteraction, marginTopFor, maskToOutcomeKinds, matchesBinding, matchesSafelistEntry, mcpCredentialsPath, mcpToolsCachePath, mcpsWritePath, mergeApprovalAndBodyOutcomes, mergeContributions, mergeKeybindings, mergeReferences, mergeSuggestions, modelChainMetadata, modelOptionsFor, modelSupportsReasoning, modelsForDescriptor, mostConstrainedWindow, normalizeMarkdownCodeFences, normalizeRedirectPaste, oauthUsesManualCodePaste, openaiDescriptor, openrouterDescriptor, orchestratedBy, parentServerName, parseBindingSpec, parseCommandInvocation, parseEditOutcomesFromResult, parseEditorCommand, parseMcpsFile, parseSemver, parseSessionEventXml, partitionExtensionCatalog, patchInlineGhost, patchMcpCredential, pendingInteractionsFromTurns, performInPlaceSelfUpdate, performSelfUpdate, piIdOf, pickActiveRunId, previewEditPayload, previewLine, projectUserPaths, projectsFilePath, providerKeySetChanged, providerUsageSupported, pruneTodosByRun, quoteForShell, readCredentials, readFileSafe, readKeybindings, readKeybindingsRaw, readProjects, readProviderCredential, readProviderCredentialPair, redirectUriFromAuthUrl, reduceMcpAuth, refreshMcpToolsCatalog, removeMcpServer, removeProviderCredential, renderActiveTodoAnchor, renderAgentsMdBlock, renderSession, renderSessionEventXml, renderSystemMdSeed, resolveAgentId, resolveApprovalForPayload, resolveChipColor, resolveConfig, resolveCwdPath, resolveExtensionKeybindings, resolveInlineSuggestion, resolvePlatformPackage, resolveSessionCwd, resolveSessionExportTarget, resolveStorageDirs, resolveStoragePaths, resolveTheme, restoreChainFallbacks, restoreModelOptions, retryLabel, rewriteMultiEditHeader, runCompaction, runEndNotice, runOAuthLogin, runReceiptFromRun, runUpdateCommand, sanitizeModelChain, sanitizeTodoItems, saveMcpToolsCache, saveState, scanExtensionDirectories, scopeCwd, searchHighlightRanges, searchSessionHistory, searchSessionHistoryIndex, searchSessionHistoryIndexAsync, searchSessionIndex, searchSessionIndexAsync, searchSessionTurns, searchTurns, searchableTurnText, selectActiveTodos, selectableTurnIds, selectionAfterTurnRemoval, serializeInteractionResponse, serializePreview, sessionDirLabel, sessionEventExcerpt, sessionEventLabel, sessionEventMeta, sessionModelFallbacks, setPreferredCredential, setProviderCredential, setTodosForRun, shortChord, shortId, shortSessionId, shouldAutoCompact, shouldAutoGenerateTitle, singleAgentRegistry, splitLines, splitMarkdownCodeBlocks, splitPromptSegments, stripEditOutcomesAnnotation, stripJsonComments, stripSpawnTokensLine, subscribeMcpToolsCache, suggestSafelistEntries, sumRunCosts, summarizeEditPayload, summarizeOutcomes, supportsOAuth, titleFromTurns, toTodosSnapshot, toggleChainEntry, tokenEndingAtCursor, tokenize, toolCallPreview, toolResultText, truncateTitle, truncateTrailing, truncateTurnsAt, tryOpenBrowser, turnAsText, turnContextSize, turnSelectionOwnership, uniqueChatIdsFromReferences, uniqueFilesFromReferences, uniqueSkillNamesFromReferences, updateToolEventOutcomes, upsertMcpServer, usageByModel, usageChecksOptedOut, usageSourceFor, useActiveTodos, useColors, useCompletion, useConfig, useDiscovery, useDiscoveryOptional, useEnabledToggleSet, useInteractionsActions, useInteractionsQueue, useMcpAuthDispatch, useMcpAuthState, useMcpToolToggleMap, useMcpToolToggleSet, useSafeModeActions, useSafeModeQueue, useSelectStyle, useSettings, useStreamBuffer, useSurfaces, useSyntaxStyles, useTheme, useUpdateCheck, userScopeOverridesLoad, userSystemMdPath, writeCredentials, writeProjects, writeSessionExport };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as createStderrLineEmitter } from "./mcp-
|
|
1
|
+
import { r as createStderrLineEmitter } from "./mcp-BIWa57eY.js";
|
|
2
2
|
import { Buffer } from "node:buffer";
|
|
3
3
|
//#region src/mcp/context-transport.ts
|
|
4
4
|
/**
|
|
@@ -81,4 +81,4 @@ async function createContextStdioTransport(options) {
|
|
|
81
81
|
//#endregion
|
|
82
82
|
export { createContextStdioTransport };
|
|
83
83
|
|
|
84
|
-
//# sourceMappingURL=context-transport-
|
|
84
|
+
//# sourceMappingURL=context-transport-BqYwzJYE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-transport-D8yeGdpd.js","names":[],"sources":["../src/mcp/context-transport.ts"],"sourcesContent":["/**\n * An MCP `Transport` that speaks stdio JSON-RPC to a server running INSIDE\n * an `ExecutionContext`, rather than as a child of the host process.\n *\n * Why this exists\n * ---------------\n * An MCP server is an ordinary program. When it calls `fs.readFileSync` or\n * `fs.writeFile`, those hit whatever filesystem it was spawned on. The\n * default `StdioClientTransport` spawns on the HOST, so with a sandboxed\n * execution context (Daytona / E2B / Docker) the agent's own tools and its\n * MCP servers end up looking at two different filesystems: a path the model\n * discovered via `list_files` does not exist for the MCP server, and an MCP\n * write lands somewhere `read_file` cannot see.\n *\n * Routing the server through `ExecutionContext.execStream` puts both on the\n * same filesystem. Note what this does NOT buy: isolation. Remote-transport\n * MCP servers are unreachable by this mechanism by construction, so\n * \"everything the agent touches runs in the execution context\" can never be\n * a true invariant. This is about coherence, not containment.\n *\n * Framing\n * -------\n * Delegated to the SDK's own `ReadBuffer` / `serializeMessage`, the exact\n * pair `StdioClientTransport` uses. That matters beyond code reuse:\n * `ReadBuffer` concatenates raw bytes and only decodes at newline\n * boundaries, so a multibyte codepoint split across two chunks survives.\n * Decoding each chunk independently would corrupt it irrecoverably — which\n * is precisely why `StreamHandle` carries bytes rather than strings.\n */\n\nimport type { Hookable } from 'hookable'\nimport type { AgentHooks } from '../agent'\nimport type { ExecutionContext, ExecutionHandle } from '../contexts/types'\nimport { Buffer } from 'node:buffer'\nimport { createStderrLineEmitter } from './index'\n\n/**\n * Structural subset of the MCP SDK's `Transport` that we implement. Declared\n * locally rather than imported as a type so this module keeps the optional\n * peer-dependency contract (see the note atop `./index.ts`) — the SDK is only\n * ever touched through a runtime `await import(...)`.\n */\nexport interface ContextStdioTransportLike {\n /**\n * Brand marking this transport's process as living OUTSIDE the host.\n * `stdioPidOf` keys off it to refuse handing any pid from here to\n * `killStdioChild`, which signals host pids: a sandbox pid like `77`\n * names a real, unrelated host process. Termination for this transport\n * goes through `StreamHandle.kill()`, which signals inside the context.\n */\n readonly __contextScoped: true\n start: () => Promise<void>\n send: (message: unknown) => Promise<void>\n close: () => Promise<void>\n onclose?: () => void\n onerror?: (error: Error) => void\n onmessage?: (message: unknown) => void\n}\n\nexport interface ContextStdioTransportOptions {\n /** Server name, used for `mcp:warn` attribution. */\n name: string\n context: ExecutionContext\n handle: ExecutionHandle\n /** Full command line, run through the context's shell. */\n command: string\n cwd?: string\n env?: Record<string, string>\n hooks?: Hookable<AgentHooks>\n}\n\n/**\n * Build the transport. Throws if the context can't stream — deliberately\n * loudly, because the alternative (quietly spawning on the host) would\n * reintroduce the split-filesystem bug this transport exists to fix, and\n * would do it invisibly.\n */\nexport async function createContextStdioTransport(\n options: ContextStdioTransportOptions,\n): Promise<ContextStdioTransportLike> {\n const { name, context, handle, command, cwd, env, hooks } = options\n\n if (!context.execStream) {\n throw new Error(\n `MCP server \"${name}\" is configured with \\`scope: 'context'\\`, but the `\n + `'${context.type}' execution context does not support live streams `\n + `(\\`execStream\\`). Use \\`scope: 'host'\\` for this server, or switch to a `\n + `context that advertises \\`capabilities.stream\\`.`,\n )\n }\n\n const { ReadBuffer, serializeMessage } = await import('@modelcontextprotocol/sdk/shared/stdio.js')\n\n const readBuffer = new ReadBuffer()\n let stream: Awaited<ReturnType<NonNullable<ExecutionContext['execStream']>>> | null = null\n let closed = false\n\n const transport: ContextStdioTransportLike = {\n __contextScoped: true,\n\n async start() {\n if (stream)\n throw new Error(`MCP context transport for \"${name}\" already started`)\n\n // cwd is defaulted HERE, not left to the context: process and docker\n // fall back to `handle.cwd` on their own, but the sandbox providers\n // forward `cwd` only when set, so their SDK default would win (E2B's\n // `/home/user`, Daytona's PTY login dir). A `scope: 'context'` server\n // without an explicit `cwd` — e.g. server-filesystem rooted at '.' —\n // would then serve the workspace on two contexts and the home\n // directory on the others: the exact silent path divergence this\n // transport exists to close. Redundant-but-harmless on contexts that\n // already default to `handle.cwd`.\n stream = await context.execStream!(handle, command, {\n cwd: cwd ?? handle.cwd,\n ...(env !== undefined ? { env } : {}),\n })\n\n const active = stream\n\n // stdout → framed JSON-RPC. Runs detached from `start()`; awaiting it\n // would never resolve, since the server lives as long as the session.\n void (async () => {\n try {\n for await (const chunk of active.stdout) {\n readBuffer.append(Buffer.from(chunk))\n for (;;) {\n // A malformed frame must not kill the pump: report it and keep\n // reading. Servers that interleave stray output with protocol\n // frames (a PTY-backed context that lost the `stty raw` race,\n // a server logging to stdout) would otherwise wedge the\n // connection permanently on the first bad line.\n let message: unknown\n try {\n message = readBuffer.readMessage()\n }\n catch (err) {\n transport.onerror?.(err instanceof Error ? err : new Error(String(err)))\n continue\n }\n if (message === null)\n break\n transport.onmessage?.(message)\n }\n }\n }\n catch (err) {\n if (!closed)\n transport.onerror?.(err instanceof Error ? err : new Error(String(err)))\n }\n })()\n\n // stderr → `mcp:warn`, when the context provides it separately. A\n // PTY-backed context cannot split it from the terminal stream, so it\n // redirects to a file and may surface it here out-of-band (Daytona\n // polls) or not at all — absence is expected, not an error.\n if (active.stderr) {\n const emitter = createStderrLineEmitter(name, hooks)\n // Streaming decoder for the same reason `ReadBuffer` exists on the\n // stdout side: a per-chunk decode corrupts any multibyte codepoint\n // split across a chunk boundary. Diagnostic-only here, but free to\n // get right.\n const decoder = new TextDecoder('utf-8')\n void (async () => {\n try {\n for await (const chunk of active.stderr!)\n emitter.push(decoder.decode(chunk, { stream: true }))\n }\n catch {\n // Diagnostic channel — a failure here must not surface as a\n // protocol error.\n }\n finally {\n emitter.push(decoder.decode())\n emitter.flush()\n }\n })()\n }\n\n // The child dying is the connection ending. Surface it once.\n void active.exited.then(() => {\n if (closed)\n return\n closed = true\n transport.onclose?.()\n })\n },\n\n async send(message: unknown) {\n if (!stream)\n throw new Error(`MCP context transport for \"${name}\" not started`)\n await stream.write(new TextEncoder().encode(serializeMessage(message as never)))\n },\n\n async close() {\n if (closed) {\n // Still ensure the child is gone: `closed` may have been set by the\n // exit watcher, but an explicit close after a half-dead stream\n // should not leave a process running in the sandbox.\n await stream?.kill()\n return\n }\n closed = true\n readBuffer.clear()\n await stream?.kill()\n transport.onclose?.()\n },\n }\n\n return transport\n}\n"],"mappings":";;;;;;;;;AA6EA,eAAsB,4BACpB,SACoC;CACpC,MAAM,EAAE,MAAM,SAAS,QAAQ,SAAS,KAAK,KAAK,UAAU;CAE5D,IAAI,CAAC,QAAQ,YACX,MAAM,IAAI,MACR,eAAe,KAAK,sDACd,QAAQ,KAAK,2KAGrB;CAGF,MAAM,EAAE,YAAY,qBAAqB,MAAM,OAAO,sBAA4C,CAAA,MAAA,MAAA,EAAA,CAAA;CAElG,MAAM,aAAa,IAAI,WAAW;CAClC,IAAI,SAAkF;CACtF,IAAI,SAAS;CAEb,MAAM,YAAuC;EAC3C,iBAAiB;EAEjB,MAAM,QAAQ;GACZ,IAAI,QACF,MAAM,IAAI,MAAM,8BAA8B,KAAK,kBAAkB;GAWvE,SAAS,MAAM,QAAQ,WAAY,QAAQ,SAAS;IAClD,KAAK,OAAO,OAAO;IACnB,GAAI,QAAQ,KAAA,IAAY,EAAE,IAAI,IAAI,CAAC;GACrC,CAAC;GAED,MAAM,SAAS;GAIf,CAAM,YAAY;IAChB,IAAI;KACF,WAAW,MAAM,SAAS,OAAO,QAAQ;MACvC,WAAW,OAAO,OAAO,KAAK,KAAK,CAAC;MACpC,SAAS;OAMP,IAAI;OACJ,IAAI;QACF,UAAU,WAAW,YAAY;OACnC,SACO,KAAK;QACV,UAAU,UAAU,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;QACvE;OACF;OACA,IAAI,YAAY,MACd;OACF,UAAU,YAAY,OAAO;MAC/B;KACF;IACF,SACO,KAAK;KACV,IAAI,CAAC,QACH,UAAU,UAAU,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;IAC3E;GACF,EAAA,CAAG;GAMH,IAAI,OAAO,QAAQ;IACjB,MAAM,UAAU,wBAAwB,MAAM,KAAK;IAKnD,MAAM,UAAU,IAAI,YAAY,OAAO;IACvC,CAAM,YAAY;KAChB,IAAI;MACF,WAAW,MAAM,SAAS,OAAO,QAC/B,QAAQ,KAAK,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC,CAAC;KACxD,QACM,CAGN,UACQ;MACN,QAAQ,KAAK,QAAQ,OAAO,CAAC;MAC7B,QAAQ,MAAM;KAChB;IACF,EAAA,CAAG;GACL;GAGA,OAAY,OAAO,WAAW;IAC5B,IAAI,QACF;IACF,SAAS;IACT,UAAU,UAAU;GACtB,CAAC;EACH;EAEA,MAAM,KAAK,SAAkB;GAC3B,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,8BAA8B,KAAK,cAAc;GACnE,MAAM,OAAO,MAAM,IAAI,YAAY,CAAC,CAAC,OAAO,iBAAiB,OAAgB,CAAC,CAAC;EACjF;EAEA,MAAM,QAAQ;GACZ,IAAI,QAAQ;IAIV,MAAM,QAAQ,KAAK;IACnB;GACF;GACA,SAAS;GACT,WAAW,MAAM;GACjB,MAAM,QAAQ,KAAK;GACnB,UAAU,UAAU;EACtB;CACF;CAEA,OAAO;AACT"}
|
|
1
|
+
{"version":3,"file":"context-transport-BqYwzJYE.js","names":[],"sources":["../src/mcp/context-transport.ts"],"sourcesContent":["/**\n * An MCP `Transport` that speaks stdio JSON-RPC to a server running INSIDE\n * an `ExecutionContext`, rather than as a child of the host process.\n *\n * Why this exists\n * ---------------\n * An MCP server is an ordinary program. When it calls `fs.readFileSync` or\n * `fs.writeFile`, those hit whatever filesystem it was spawned on. The\n * default `StdioClientTransport` spawns on the HOST, so with a sandboxed\n * execution context (Daytona / E2B / Docker) the agent's own tools and its\n * MCP servers end up looking at two different filesystems: a path the model\n * discovered via `list_files` does not exist for the MCP server, and an MCP\n * write lands somewhere `read_file` cannot see.\n *\n * Routing the server through `ExecutionContext.execStream` puts both on the\n * same filesystem. Note what this does NOT buy: isolation. Remote-transport\n * MCP servers are unreachable by this mechanism by construction, so\n * \"everything the agent touches runs in the execution context\" can never be\n * a true invariant. This is about coherence, not containment.\n *\n * Framing\n * -------\n * Delegated to the SDK's own `ReadBuffer` / `serializeMessage`, the exact\n * pair `StdioClientTransport` uses. That matters beyond code reuse:\n * `ReadBuffer` concatenates raw bytes and only decodes at newline\n * boundaries, so a multibyte codepoint split across two chunks survives.\n * Decoding each chunk independently would corrupt it irrecoverably — which\n * is precisely why `StreamHandle` carries bytes rather than strings.\n */\n\nimport type { Hookable } from 'hookable'\nimport type { AgentHooks } from '../agent'\nimport type { ExecutionContext, ExecutionHandle } from '../contexts/types'\nimport { Buffer } from 'node:buffer'\nimport { createStderrLineEmitter } from './index'\n\n/**\n * Structural subset of the MCP SDK's `Transport` that we implement. Declared\n * locally rather than imported as a type so this module keeps the optional\n * peer-dependency contract (see the note atop `./index.ts`) — the SDK is only\n * ever touched through a runtime `await import(...)`.\n */\nexport interface ContextStdioTransportLike {\n /**\n * Brand marking this transport's process as living OUTSIDE the host.\n * `stdioPidOf` keys off it to refuse handing any pid from here to\n * `killStdioChild`, which signals host pids: a sandbox pid like `77`\n * names a real, unrelated host process. Termination for this transport\n * goes through `StreamHandle.kill()`, which signals inside the context.\n */\n readonly __contextScoped: true\n start: () => Promise<void>\n send: (message: unknown) => Promise<void>\n close: () => Promise<void>\n onclose?: () => void\n onerror?: (error: Error) => void\n onmessage?: (message: unknown) => void\n}\n\nexport interface ContextStdioTransportOptions {\n /** Server name, used for `mcp:warn` attribution. */\n name: string\n context: ExecutionContext\n handle: ExecutionHandle\n /** Full command line, run through the context's shell. */\n command: string\n cwd?: string\n env?: Record<string, string>\n hooks?: Hookable<AgentHooks>\n}\n\n/**\n * Build the transport. Throws if the context can't stream — deliberately\n * loudly, because the alternative (quietly spawning on the host) would\n * reintroduce the split-filesystem bug this transport exists to fix, and\n * would do it invisibly.\n */\nexport async function createContextStdioTransport(\n options: ContextStdioTransportOptions,\n): Promise<ContextStdioTransportLike> {\n const { name, context, handle, command, cwd, env, hooks } = options\n\n if (!context.execStream) {\n throw new Error(\n `MCP server \"${name}\" is configured with \\`scope: 'context'\\`, but the `\n + `'${context.type}' execution context does not support live streams `\n + `(\\`execStream\\`). Use \\`scope: 'host'\\` for this server, or switch to a `\n + `context that advertises \\`capabilities.stream\\`.`,\n )\n }\n\n const { ReadBuffer, serializeMessage } = await import('@modelcontextprotocol/sdk/shared/stdio.js')\n\n const readBuffer = new ReadBuffer()\n let stream: Awaited<ReturnType<NonNullable<ExecutionContext['execStream']>>> | null = null\n let closed = false\n\n const transport: ContextStdioTransportLike = {\n __contextScoped: true,\n\n async start() {\n if (stream)\n throw new Error(`MCP context transport for \"${name}\" already started`)\n\n // cwd is defaulted HERE, not left to the context: process and docker\n // fall back to `handle.cwd` on their own, but the sandbox providers\n // forward `cwd` only when set, so their SDK default would win (E2B's\n // `/home/user`, Daytona's PTY login dir). A `scope: 'context'` server\n // without an explicit `cwd` — e.g. server-filesystem rooted at '.' —\n // would then serve the workspace on two contexts and the home\n // directory on the others: the exact silent path divergence this\n // transport exists to close. Redundant-but-harmless on contexts that\n // already default to `handle.cwd`.\n stream = await context.execStream!(handle, command, {\n cwd: cwd ?? handle.cwd,\n ...(env !== undefined ? { env } : {}),\n })\n\n const active = stream\n\n // stdout → framed JSON-RPC. Runs detached from `start()`; awaiting it\n // would never resolve, since the server lives as long as the session.\n void (async () => {\n try {\n for await (const chunk of active.stdout) {\n readBuffer.append(Buffer.from(chunk))\n for (;;) {\n // A malformed frame must not kill the pump: report it and keep\n // reading. Servers that interleave stray output with protocol\n // frames (a PTY-backed context that lost the `stty raw` race,\n // a server logging to stdout) would otherwise wedge the\n // connection permanently on the first bad line.\n let message: unknown\n try {\n message = readBuffer.readMessage()\n }\n catch (err) {\n transport.onerror?.(err instanceof Error ? err : new Error(String(err)))\n continue\n }\n if (message === null)\n break\n transport.onmessage?.(message)\n }\n }\n }\n catch (err) {\n if (!closed)\n transport.onerror?.(err instanceof Error ? err : new Error(String(err)))\n }\n })()\n\n // stderr → `mcp:warn`, when the context provides it separately. A\n // PTY-backed context cannot split it from the terminal stream, so it\n // redirects to a file and may surface it here out-of-band (Daytona\n // polls) or not at all — absence is expected, not an error.\n if (active.stderr) {\n const emitter = createStderrLineEmitter(name, hooks)\n // Streaming decoder for the same reason `ReadBuffer` exists on the\n // stdout side: a per-chunk decode corrupts any multibyte codepoint\n // split across a chunk boundary. Diagnostic-only here, but free to\n // get right.\n const decoder = new TextDecoder('utf-8')\n void (async () => {\n try {\n for await (const chunk of active.stderr!)\n emitter.push(decoder.decode(chunk, { stream: true }))\n }\n catch {\n // Diagnostic channel — a failure here must not surface as a\n // protocol error.\n }\n finally {\n emitter.push(decoder.decode())\n emitter.flush()\n }\n })()\n }\n\n // The child dying is the connection ending. Surface it once.\n void active.exited.then(() => {\n if (closed)\n return\n closed = true\n transport.onclose?.()\n })\n },\n\n async send(message: unknown) {\n if (!stream)\n throw new Error(`MCP context transport for \"${name}\" not started`)\n await stream.write(new TextEncoder().encode(serializeMessage(message as never)))\n },\n\n async close() {\n if (closed) {\n // Still ensure the child is gone: `closed` may have been set by the\n // exit watcher, but an explicit close after a half-dead stream\n // should not leave a process running in the sandbox.\n await stream?.kill()\n return\n }\n closed = true\n readBuffer.clear()\n await stream?.kill()\n transport.onclose?.()\n },\n }\n\n return transport\n}\n"],"mappings":";;;;;;;;;AA6EA,eAAsB,4BACpB,SACoC;CACpC,MAAM,EAAE,MAAM,SAAS,QAAQ,SAAS,KAAK,KAAK,UAAU;CAE5D,IAAI,CAAC,QAAQ,YACX,MAAM,IAAI,MACR,eAAe,KAAK,sDACd,QAAQ,KAAK,2KAGrB;CAGF,MAAM,EAAE,YAAY,qBAAqB,MAAM,OAAO,sBAA4C,CAAA,MAAA,MAAA,EAAA,CAAA;CAElG,MAAM,aAAa,IAAI,WAAW;CAClC,IAAI,SAAkF;CACtF,IAAI,SAAS;CAEb,MAAM,YAAuC;EAC3C,iBAAiB;EAEjB,MAAM,QAAQ;GACZ,IAAI,QACF,MAAM,IAAI,MAAM,8BAA8B,KAAK,kBAAkB;GAWvE,SAAS,MAAM,QAAQ,WAAY,QAAQ,SAAS;IAClD,KAAK,OAAO,OAAO;IACnB,GAAI,QAAQ,KAAA,IAAY,EAAE,IAAI,IAAI,CAAC;GACrC,CAAC;GAED,MAAM,SAAS;GAIf,CAAM,YAAY;IAChB,IAAI;KACF,WAAW,MAAM,SAAS,OAAO,QAAQ;MACvC,WAAW,OAAO,OAAO,KAAK,KAAK,CAAC;MACpC,SAAS;OAMP,IAAI;OACJ,IAAI;QACF,UAAU,WAAW,YAAY;OACnC,SACO,KAAK;QACV,UAAU,UAAU,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;QACvE;OACF;OACA,IAAI,YAAY,MACd;OACF,UAAU,YAAY,OAAO;MAC/B;KACF;IACF,SACO,KAAK;KACV,IAAI,CAAC,QACH,UAAU,UAAU,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;IAC3E;GACF,EAAA,CAAG;GAMH,IAAI,OAAO,QAAQ;IACjB,MAAM,UAAU,wBAAwB,MAAM,KAAK;IAKnD,MAAM,UAAU,IAAI,YAAY,OAAO;IACvC,CAAM,YAAY;KAChB,IAAI;MACF,WAAW,MAAM,SAAS,OAAO,QAC/B,QAAQ,KAAK,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC,CAAC;KACxD,QACM,CAGN,UACQ;MACN,QAAQ,KAAK,QAAQ,OAAO,CAAC;MAC7B,QAAQ,MAAM;KAChB;IACF,EAAA,CAAG;GACL;GAGA,OAAY,OAAO,WAAW;IAC5B,IAAI,QACF;IACF,SAAS;IACT,UAAU,UAAU;GACtB,CAAC;EACH;EAEA,MAAM,KAAK,SAAkB;GAC3B,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,8BAA8B,KAAK,cAAc;GACnE,MAAM,OAAO,MAAM,IAAI,YAAY,CAAC,CAAC,OAAO,iBAAiB,OAAgB,CAAC,CAAC;EACjF;EAEA,MAAM,QAAQ;GACZ,IAAI,QAAQ;IAIV,MAAM,QAAQ,KAAK;IACnB;GACF;GACA,SAAS;GACT,WAAW,MAAM;GACjB,MAAM,QAAQ,KAAK;GACnB,UAAU,UAAU;EACtB;CACF;CAEA,OAAO;AACT"}
|
package/dist/contexts/daytona.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as capBufferedExecOutput } from "../output-cap-C9zukcCj.js";
|
|
2
2
|
import { u as errorMessage } from "../errors-DKiMrOKq.js";
|
|
3
|
-
import { r as createLogger, t as consoleSink } from "../logger
|
|
3
|
+
import { r as createLogger, t as consoleSink } from "../logger--C1VQjwJ.js";
|
|
4
4
|
import { t as StreamQueue } from "../stream-queue-Cd9OJxl7.js";
|
|
5
5
|
import { Buffer } from "node:buffer";
|
|
6
6
|
//#region src/contexts/daytona.ts
|
package/dist/contexts/e2b.d.ts
CHANGED
package/dist/contexts/e2b.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as capBufferedExecOutput } from "../output-cap-C9zukcCj.js";
|
|
2
2
|
import { t as alwaysQuote } from "../shell-quote-BmnhZmdM.js";
|
|
3
|
-
import { r as createLogger, t as consoleSink } from "../logger
|
|
3
|
+
import { r as createLogger, t as consoleSink } from "../logger--C1VQjwJ.js";
|
|
4
4
|
import { t as StreamQueue } from "../stream-queue-Cd9OJxl7.js";
|
|
5
5
|
import { Buffer } from "node:buffer";
|
|
6
6
|
//#region src/contexts/e2b.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { t as startIpcDaemon, u as defaultSocketPath } from "./server-DJqp9dIR.js";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import { parseArgs } from "node:util";
|
|
6
|
+
import process from "node:process";
|
|
7
|
+
//#region src/daemon-cli.ts
|
|
8
|
+
/**
|
|
9
|
+
* `zidane-daemon` — the shared chat host behind every zidane window.
|
|
10
|
+
*
|
|
11
|
+
* Starts a unix-socket JSON-RPC server (see `src/ipc/daemon/server.ts`) so
|
|
12
|
+
* multiple terminal / GUI windows attach to the same live agents and stay
|
|
13
|
+
* in sync. Normally spawned on demand by a client (`connectOrSpawnDaemon`);
|
|
14
|
+
* run it directly for a long-lived foreground daemon.
|
|
15
|
+
*
|
|
16
|
+
* REQUIRES BUN: the canonical session store is `bun:sqlite`. Users of the
|
|
17
|
+
* published TUI don't need Bun installed — the compiled `zidane` binary
|
|
18
|
+
* embeds it, and `zidane daemon` runs this same server in-process.
|
|
19
|
+
*
|
|
20
|
+
* Flags:
|
|
21
|
+
* --socket <path> Socket path (default: ~/.zidane/daemon/daemon.sock, or
|
|
22
|
+
* $ZIDANE_DAEMON_SOCKET)
|
|
23
|
+
* --idle-exit <ms> Exit after this long with zero connected peers
|
|
24
|
+
* (default: 30 minutes; 0 disables)
|
|
25
|
+
* --verbose Log peer / stream activity to stderr
|
|
26
|
+
*/
|
|
27
|
+
function appVersion() {
|
|
28
|
+
try {
|
|
29
|
+
return createRequire(import.meta.url)("../package.json").version ?? "dev";
|
|
30
|
+
} catch {
|
|
31
|
+
return "dev";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const DEFAULT_IDLE_EXIT_MS = 1800 * 1e3;
|
|
35
|
+
async function main() {
|
|
36
|
+
if (typeof globalThis.Bun === "undefined") {
|
|
37
|
+
const script = process.argv[1];
|
|
38
|
+
const reexec = script ? spawnSync("bun", [script, ...process.argv.slice(2)], { stdio: "inherit" }) : null;
|
|
39
|
+
if (reexec && reexec.error === void 0) process.exit(reexec.status ?? 0);
|
|
40
|
+
process.stderr.write("zidane-daemon requires the Bun runtime (the session store uses bun:sqlite).\nInstall Bun (https://bun.sh), or use the compiled `zidane daemon` command which embeds it.\n");
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
const { values } = parseArgs({
|
|
44
|
+
args: process.argv.slice(2),
|
|
45
|
+
options: {
|
|
46
|
+
"socket": { type: "string" },
|
|
47
|
+
"idle-exit": { type: "string" },
|
|
48
|
+
"verbose": {
|
|
49
|
+
type: "boolean",
|
|
50
|
+
default: false
|
|
51
|
+
},
|
|
52
|
+
"help": {
|
|
53
|
+
type: "boolean",
|
|
54
|
+
default: false
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
if (values.help) {
|
|
59
|
+
process.stdout.write("usage: zidane-daemon [--socket <path>] [--idle-exit <ms>] [--verbose]\n");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const socketPath = values.socket ?? defaultSocketPath();
|
|
63
|
+
const idleExitMs = values["idle-exit"] !== void 0 ? Number(values["idle-exit"]) : DEFAULT_IDLE_EXIT_MS;
|
|
64
|
+
const log = values.verbose ? (line) => process.stderr.write(`${line}\n`) : void 0;
|
|
65
|
+
const daemon = await startIpcDaemon({
|
|
66
|
+
socketPath,
|
|
67
|
+
appVersion: appVersion(),
|
|
68
|
+
...idleExitMs > 0 ? {
|
|
69
|
+
idleShutdownMs: idleExitMs,
|
|
70
|
+
onIdle: () => {
|
|
71
|
+
daemon.close().finally(() => process.exit(0));
|
|
72
|
+
}
|
|
73
|
+
} : {},
|
|
74
|
+
...log ? { onLog: log } : {}
|
|
75
|
+
});
|
|
76
|
+
process.stderr.write(`zidane daemon listening on ${daemon.socketPath} (pid ${process.pid})\n`);
|
|
77
|
+
const shutdown = () => {
|
|
78
|
+
daemon.close().finally(() => process.exit(0));
|
|
79
|
+
};
|
|
80
|
+
process.on("SIGINT", shutdown);
|
|
81
|
+
process.on("SIGTERM", shutdown);
|
|
82
|
+
}
|
|
83
|
+
main().catch((err) => {
|
|
84
|
+
process.stderr.write(`zidane-daemon: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
85
|
+
process.exit(1);
|
|
86
|
+
});
|
|
87
|
+
//#endregion
|
|
88
|
+
export {};
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=daemon-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-cli.js","names":[],"sources":["../src/daemon-cli.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * `zidane-daemon` — the shared chat host behind every zidane window.\n *\n * Starts a unix-socket JSON-RPC server (see `src/ipc/daemon/server.ts`) so\n * multiple terminal / GUI windows attach to the same live agents and stay\n * in sync. Normally spawned on demand by a client (`connectOrSpawnDaemon`);\n * run it directly for a long-lived foreground daemon.\n *\n * REQUIRES BUN: the canonical session store is `bun:sqlite`. Users of the\n * published TUI don't need Bun installed — the compiled `zidane` binary\n * embeds it, and `zidane daemon` runs this same server in-process.\n *\n * Flags:\n * --socket <path> Socket path (default: ~/.zidane/daemon/daemon.sock, or\n * $ZIDANE_DAEMON_SOCKET)\n * --idle-exit <ms> Exit after this long with zero connected peers\n * (default: 30 minutes; 0 disables)\n * --verbose Log peer / stream activity to stderr\n */\nimport { spawnSync } from 'node:child_process'\nimport { createRequire } from 'node:module'\nimport process from 'node:process'\nimport { parseArgs } from 'node:util'\nimport { defaultSocketPath } from './ipc/daemon/lifecycle'\nimport { startIpcDaemon } from './ipc/daemon/server'\n\nfunction appVersion(): string {\n try {\n const require = createRequire(import.meta.url)\n return (require('../package.json') as { version?: string }).version ?? 'dev'\n }\n catch {\n return 'dev'\n }\n}\n\nconst DEFAULT_IDLE_EXIT_MS = 30 * 60 * 1000\n\nasync function main(): Promise<void> {\n if (typeof (globalThis as { Bun?: unknown }).Bun === 'undefined') {\n /*\n * Node shebang so this guard actually RUNS on machines without bun\n * on PATH (a bun shebang dies inside `env` with a cryptic error\n * before any code executes). Re-exec under bun when it's available;\n * otherwise print the guidance the shebang used to preempt.\n */\n const script = process.argv[1]\n const reexec = script\n ? spawnSync('bun', [script, ...process.argv.slice(2)], { stdio: 'inherit' })\n : null\n if (reexec && reexec.error === undefined)\n process.exit(reexec.status ?? 0)\n\n process.stderr.write(\n 'zidane-daemon requires the Bun runtime (the session store uses bun:sqlite).\\n'\n + 'Install Bun (https://bun.sh), or use the compiled `zidane daemon` command which embeds it.\\n',\n )\n process.exit(1)\n }\n\n const { values } = parseArgs({\n args: process.argv.slice(2),\n options: {\n 'socket': { type: 'string' },\n 'idle-exit': { type: 'string' },\n 'verbose': { type: 'boolean', default: false },\n 'help': { type: 'boolean', default: false },\n },\n })\n\n if (values.help) {\n process.stdout.write(\n 'usage: zidane-daemon [--socket <path>] [--idle-exit <ms>] [--verbose]\\n',\n )\n return\n }\n\n const socketPath = values.socket ?? defaultSocketPath()\n const idleExitMs = values['idle-exit'] !== undefined ? Number(values['idle-exit']) : DEFAULT_IDLE_EXIT_MS\n const log = values.verbose ? (line: string) => process.stderr.write(`${line}\\n`) : undefined\n\n const daemon = await startIpcDaemon({\n socketPath,\n appVersion: appVersion(),\n ...(idleExitMs > 0\n ? {\n idleShutdownMs: idleExitMs,\n onIdle: () => {\n void daemon.close().finally(() => process.exit(0))\n },\n }\n : {}),\n ...(log ? { onLog: log } : {}),\n })\n\n process.stderr.write(`zidane daemon listening on ${daemon.socketPath} (pid ${process.pid})\\n`)\n\n const shutdown = (): void => {\n void daemon.close().finally(() => process.exit(0))\n }\n process.on('SIGINT', shutdown)\n process.on('SIGTERM', shutdown)\n}\n\nmain().catch((err) => {\n process.stderr.write(`zidane-daemon: ${err instanceof Error ? err.message : String(err)}\\n`)\n process.exit(1)\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAS,aAAqB;CAC5B,IAAI;EAEF,OADgB,cAAc,OAAO,KAAK,GAC5B,CAAC,CAAC,iBAAiB,CAAC,CAA0B,WAAW;CACzE,QACM;EACJ,OAAO;CACT;AACF;AAEA,MAAM,uBAAuB,OAAU;AAEvC,eAAe,OAAsB;CACnC,IAAI,OAAQ,WAAiC,QAAQ,aAAa;EAOhE,MAAM,SAAS,QAAQ,KAAK;EAC5B,MAAM,SAAS,SACX,UAAU,OAAO,CAAC,QAAQ,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,UAAU,CAAC,IACzE;EACJ,IAAI,UAAU,OAAO,UAAU,KAAA,GAC7B,QAAQ,KAAK,OAAO,UAAU,CAAC;EAEjC,QAAQ,OAAO,MACb,2KAEF;EACA,QAAQ,KAAK,CAAC;CAChB;CAEA,MAAM,EAAE,WAAW,UAAU;EAC3B,MAAM,QAAQ,KAAK,MAAM,CAAC;EAC1B,SAAS;GACP,UAAU,EAAE,MAAM,SAAS;GAC3B,aAAa,EAAE,MAAM,SAAS;GAC9B,WAAW;IAAE,MAAM;IAAW,SAAS;GAAM;GAC7C,QAAQ;IAAE,MAAM;IAAW,SAAS;GAAM;EAC5C;CACF,CAAC;CAED,IAAI,OAAO,MAAM;EACf,QAAQ,OAAO,MACb,yEACF;EACA;CACF;CAEA,MAAM,aAAa,OAAO,UAAU,kBAAkB;CACtD,MAAM,aAAa,OAAO,iBAAiB,KAAA,IAAY,OAAO,OAAO,YAAY,IAAI;CACrF,MAAM,MAAM,OAAO,WAAW,SAAiB,QAAQ,OAAO,MAAM,GAAG,KAAK,GAAG,IAAI,KAAA;CAEnF,MAAM,SAAS,MAAM,eAAe;EAClC;EACA,YAAY,WAAW;EACvB,GAAI,aAAa,IACb;GACE,gBAAgB;GAChB,cAAc;IACZ,OAAY,MAAM,CAAC,CAAC,cAAc,QAAQ,KAAK,CAAC,CAAC;GACnD;EACF,IACA,CAAC;EACL,GAAI,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;CAC9B,CAAC;CAED,QAAQ,OAAO,MAAM,8BAA8B,OAAO,WAAW,QAAQ,QAAQ,IAAI,IAAI;CAE7F,MAAM,iBAAuB;EAC3B,OAAY,MAAM,CAAC,CAAC,cAAc,QAAQ,KAAK,CAAC,CAAC;CACnD;CACA,QAAQ,GAAG,UAAU,QAAQ;CAC7B,QAAQ,GAAG,WAAW,QAAQ;AAChC;AAEA,KAAK,CAAC,CAAC,OAAO,QAAQ;CACpB,QAAQ,OAAO,MAAM,kBAAkB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,EAAE,GAAG;CAC3F,QAAQ,KAAK,CAAC;AAChB,CAAC"}
|
package/dist/eval.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $t as EvalRunUsage, An as efficiencyMetricValues, Bn as functionalityMetric, Bt as EvalAgentStats, Cn as clearRegisteredEvals, Dn as createReusableExecutionContext, En as createEvalRunReporter, Fn as fileExistsOneOf, Ft as EvalAgent, Gn as runEvalCase, Gt as EvalDefinitionContext, Hn as normalizeMetric, Ht as EvalCaseOptions, In as finalizeEvalMetrics, It as EvalAgentMcpServers, Jt as EvalRunMetricAggregate, Kn as statusCompleted, Kt as EvalMetric, Ln as formatEvalCaseSummary, Lt as EvalAgentRunOptions, Mn as fileContains, Nn as fileContentQuality, Nt as CreateEvalAgentOptions, On as defineEval, Pn as fileExists, Pt as EFFICIENCY_METRICS, Qt as EvalRunSummaryCase, Rn as formatEvalRunSummary, Rt as EvalAgentRunResult, Sn as buildTrajectory, Tn as createEvalAgent, Un as registerEvalTests, Ut as EvalCaseResult, Vn as llmJudge, Vt as EvalArtifacts, Wn as relativeArtifactPath, Wt as EvalDefinition, Xt as EvalRunReporterOptions, Yt as EvalRunReporter, Zt as EvalRunSummary, _n as TrajectoryStep, an as EvalWorkspaceFile, bn as buildEvalRunSummary, cn as LlmJudgeOptions, dn as MetricSpec, en as EvalScore, fn as MetricSpecMap, gn as Trajectory, hn as ReusableExecutionContext, in as EvalVariantSummary, jn as emitEfficiencyMetrics, kn as defineMetrics, ln as MetricDirection, mn as RegisterEvalTestsOptions, nn as EvalScorerContext, on as EvalWorkspaceOptions, pn as MetricStats, qt as EvalMetricError, rn as EvalTestRunner, sn as EvalWorkspaceSnapshot, tn as EvalScorer, un as MetricEmitter, vn as TrajectoryStepKind, wn as computeEvalTagScores, xn as buildRegisteredEvals, yn as artifactPath, zn as formatTrajectoryLine, zt as EvalAgentRunStats } from "./index-
|
|
1
|
+
import { $t as EvalRunUsage, An as efficiencyMetricValues, Bn as functionalityMetric, Bt as EvalAgentStats, Cn as clearRegisteredEvals, Dn as createReusableExecutionContext, En as createEvalRunReporter, Fn as fileExistsOneOf, Ft as EvalAgent, Gn as runEvalCase, Gt as EvalDefinitionContext, Hn as normalizeMetric, Ht as EvalCaseOptions, In as finalizeEvalMetrics, It as EvalAgentMcpServers, Jt as EvalRunMetricAggregate, Kn as statusCompleted, Kt as EvalMetric, Ln as formatEvalCaseSummary, Lt as EvalAgentRunOptions, Mn as fileContains, Nn as fileContentQuality, Nt as CreateEvalAgentOptions, On as defineEval, Pn as fileExists, Pt as EFFICIENCY_METRICS, Qt as EvalRunSummaryCase, Rn as formatEvalRunSummary, Rt as EvalAgentRunResult, Sn as buildTrajectory, Tn as createEvalAgent, Un as registerEvalTests, Ut as EvalCaseResult, Vn as llmJudge, Vt as EvalArtifacts, Wn as relativeArtifactPath, Wt as EvalDefinition, Xt as EvalRunReporterOptions, Yt as EvalRunReporter, Zt as EvalRunSummary, _n as TrajectoryStep, an as EvalWorkspaceFile, bn as buildEvalRunSummary, cn as LlmJudgeOptions, dn as MetricSpec, en as EvalScore, fn as MetricSpecMap, gn as Trajectory, hn as ReusableExecutionContext, in as EvalVariantSummary, jn as emitEfficiencyMetrics, kn as defineMetrics, ln as MetricDirection, mn as RegisterEvalTestsOptions, nn as EvalScorerContext, on as EvalWorkspaceOptions, pn as MetricStats, qt as EvalMetricError, rn as EvalTestRunner, sn as EvalWorkspaceSnapshot, tn as EvalScorer, un as MetricEmitter, vn as TrajectoryStepKind, wn as computeEvalTagScores, xn as buildRegisteredEvals, yn as artifactPath, zn as formatTrajectoryLine, zt as EvalAgentRunStats } from "./index-B-FSaM3_.js";
|
|
2
2
|
export { CreateEvalAgentOptions, EFFICIENCY_METRICS, EvalAgent, EvalAgentMcpServers, EvalAgentRunOptions, EvalAgentRunResult, EvalAgentRunStats, EvalAgentStats, EvalArtifacts, EvalCaseOptions, EvalCaseResult, EvalDefinition, EvalDefinitionContext, EvalMetric, EvalMetricError, EvalRunMetricAggregate, EvalRunReporter, EvalRunReporterOptions, EvalRunSummary, EvalRunSummaryCase, EvalRunUsage, EvalScore, EvalScorer, EvalScorerContext, EvalTestRunner, EvalVariantSummary, EvalWorkspaceFile, EvalWorkspaceOptions, EvalWorkspaceSnapshot, LlmJudgeOptions, MetricDirection, MetricEmitter, MetricSpec, MetricSpecMap, MetricStats, RegisterEvalTestsOptions, ReusableExecutionContext, Trajectory, TrajectoryStep, TrajectoryStepKind, artifactPath, buildEvalRunSummary, buildRegisteredEvals, buildTrajectory, clearRegisteredEvals, computeEvalTagScores, createEvalAgent, createEvalRunReporter, createReusableExecutionContext, defineEval, defineMetrics, efficiencyMetricValues, emitEfficiencyMetrics, fileContains, fileContentQuality, fileExists, fileExistsOneOf, finalizeEvalMetrics, formatEvalCaseSummary, formatEvalRunSummary, formatTrajectoryLine, functionalityMetric, llmJudge, normalizeMetric, registerEvalTests, relativeArtifactPath, runEvalCase, statusCompleted };
|
package/dist/eval.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as createProcessContext } from "./contexts-BSFQVclW.js";
|
|
2
2
|
import { t as alwaysQuote } from "./shell-quote-BmnhZmdM.js";
|
|
3
|
-
import { d as createMemoryStore, t as createSession } from "./session-
|
|
3
|
+
import { d as createMemoryStore, t as createSession } from "./session-K3icbPH9.js";
|
|
4
4
|
import { headlessEventToJsonl, runHeadless } from "./headless.js";
|
|
5
5
|
import { join, relative, resolve } from "node:path";
|
|
6
6
|
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
|