zidane 6.1.1 → 6.1.2
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-cli.js +2 -2
- package/dist/{acp-DK382vzL.js → acp-d1OjXjtH.js} +2 -2
- package/dist/{acp-DK382vzL.js.map → acp-d1OjXjtH.js.map} +1 -1
- package/dist/acp.js +1 -1
- package/dist/{agent-Bq32ZJSo.js → agent-5mbViwQE.js} +139 -60
- package/dist/agent-5mbViwQE.js.map +1 -0
- package/dist/agent.js +1 -1
- package/dist/chat.js +2 -2
- package/dist/extensions.js +1 -1
- package/dist/headless.js +1 -1
- package/dist/index-C6Il4kBD.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/presets.js +1 -1
- package/dist/tools.js +1 -1
- package/dist/{transcript-anchors-CBaghfwl.js → transcript-anchors-DoOWooFn.js} +2 -2
- package/dist/{transcript-anchors-CBaghfwl.js.map → transcript-anchors-DoOWooFn.js.map} +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +12 -2
- package/dist/tui.js.map +1 -1
- package/package.json +1 -1
- package/dist/agent-Bq32ZJSo.js.map +0 -1
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-d1OjXjtH.js";
|
|
2
2
|
export { AcpProtocolError, JsonRpcRemoteError, acpMcpServersToZidane, acpPromptToPromptParts, createAcpServer, createJsonRpcConnection, runAcpStdioServer, sessionBlocksToAcp, stopReasonFromRun, toolResultToAcpContent, withAcpDefaultTools, wrapToolsForAcpClient };
|
|
@@ -3580,6 +3580,14 @@ function parseAttachmentHandle(path) {
|
|
|
3580
3580
|
const hash = path.slice(13).trim();
|
|
3581
3581
|
return hash.length > 0 ? hash : null;
|
|
3582
3582
|
}
|
|
3583
|
+
/**
|
|
3584
|
+
* Payload byte length of a media block's `data` — raw text length for
|
|
3585
|
+
* text-encoded documents, decoded (padding-accurate) length for base64.
|
|
3586
|
+
*/
|
|
3587
|
+
function mediaPayloadBytes(data, encoding) {
|
|
3588
|
+
if (encoding === "text") return Buffer.byteLength(data);
|
|
3589
|
+
return decodedBase64Bytes(data);
|
|
3590
|
+
}
|
|
3583
3591
|
/** Decoded byte length of a base64 string (padding-accurate). */
|
|
3584
3592
|
function decodedBase64Bytes(b64) {
|
|
3585
3593
|
if (b64.length === 0) return 0;
|
|
@@ -3604,7 +3612,7 @@ function humanBytes(bytes) {
|
|
|
3604
3612
|
*/
|
|
3605
3613
|
function mediaAgeoutMarker(block, readFileToolName = "read_file") {
|
|
3606
3614
|
const handle = attachmentHandleFor(block.data);
|
|
3607
|
-
const size = humanBytes(
|
|
3615
|
+
const size = humanBytes(mediaPayloadBytes(block.data, block.encoding));
|
|
3608
3616
|
const named = block.name ? ` "${block.name}"` : "";
|
|
3609
3617
|
const resolveHint = readFileToolName ? `Still saved in this session; re-read with ${readFileToolName} path="${handle}" to view it again.` : `Still saved in this session as ${handle}, but no file-read tool is available in this run to re-open it.`;
|
|
3610
3618
|
return `[${block.type} aged out of context to save tokens -${named} ${block.mediaType}, ${size}. ${resolveHint}]`;
|
|
@@ -3785,6 +3793,74 @@ function attachmentByteLength(data, encoding) {
|
|
|
3785
3793
|
const pad = data.endsWith("==") ? 2 : data.endsWith("=") ? 1 : 0;
|
|
3786
3794
|
return Math.max(0, Math.floor(data.length * 3 / 4) - pad);
|
|
3787
3795
|
}
|
|
3796
|
+
/**
|
|
3797
|
+
* Decode a resolved document attachment to text when its bytes are actually
|
|
3798
|
+
* textual. Unknown-extension source files (e.g. `.asm`) ingest as base64
|
|
3799
|
+
* `application/octet-stream` blobs; re-inlining megabytes of base64 whole is
|
|
3800
|
+
* exactly what OOMs a session, so textual payloads get routed through the
|
|
3801
|
+
* line-paged renderer instead. Returns `null` for images, PDFs, and genuinely
|
|
3802
|
+
* binary payloads — those keep the whole-blob inline path.
|
|
3803
|
+
*/
|
|
3804
|
+
function attachmentText(found) {
|
|
3805
|
+
if (found.kind !== "document") return null;
|
|
3806
|
+
if (found.encoding === "text") return found.data;
|
|
3807
|
+
if (found.mediaType === "application/pdf") return null;
|
|
3808
|
+
const decoded = Buffer.from(found.data, "base64").toString("utf-8");
|
|
3809
|
+
return looksBinary(decoded) ? null : decoded;
|
|
3810
|
+
}
|
|
3811
|
+
/**
|
|
3812
|
+
* Line-sliced, byte-capped rendering with the standard truncation footers.
|
|
3813
|
+
* Shared by the filesystem text path and the text-attachment re-resolve path
|
|
3814
|
+
* so both page identically (`offset`/`limit`/`maxBytes` semantics, footer
|
|
3815
|
+
* guidance included).
|
|
3816
|
+
*/
|
|
3817
|
+
function renderTextSlice(raw, opts) {
|
|
3818
|
+
const { offset: offsetN, limit: limitN, maxBytes: maxBytesN, lineNumbers: showLineNumbers } = opts;
|
|
3819
|
+
const totalBytes = Buffer.byteLength(raw);
|
|
3820
|
+
const lines = raw.split("\n");
|
|
3821
|
+
const totalLines = lines.length;
|
|
3822
|
+
const startIdx = Math.max(0, offsetN - 1);
|
|
3823
|
+
const endIdx = limitN > 0 ? Math.min(totalLines, startIdx + limitN) : totalLines;
|
|
3824
|
+
let slice = lines.slice(startIdx, endIdx);
|
|
3825
|
+
let bytesCut = false;
|
|
3826
|
+
if (maxBytesN > 0) {
|
|
3827
|
+
const truncatedSlice = [];
|
|
3828
|
+
let bytesUsed = 0;
|
|
3829
|
+
for (const line of slice) {
|
|
3830
|
+
const lineBytes = Buffer.byteLength(line) + 1;
|
|
3831
|
+
if (bytesUsed + lineBytes > maxBytesN && truncatedSlice.length > 0) {
|
|
3832
|
+
bytesCut = true;
|
|
3833
|
+
break;
|
|
3834
|
+
}
|
|
3835
|
+
truncatedSlice.push(line);
|
|
3836
|
+
bytesUsed += lineBytes;
|
|
3837
|
+
if (bytesUsed >= maxBytesN) break;
|
|
3838
|
+
}
|
|
3839
|
+
if (truncatedSlice.length < slice.length) bytesCut = true;
|
|
3840
|
+
slice = truncatedSlice;
|
|
3841
|
+
}
|
|
3842
|
+
let midLineCut = false;
|
|
3843
|
+
if (maxBytesN > 0 && slice.length > 0) {
|
|
3844
|
+
if (Buffer.byteLength(slice.join("\n")) > maxBytesN) {
|
|
3845
|
+
const lastIdx = slice.length - 1;
|
|
3846
|
+
const lastLine = slice[lastIdx];
|
|
3847
|
+
const otherBytes = lastIdx > 0 ? Buffer.byteLength(slice.slice(0, lastIdx).join("\n")) + 1 : 0;
|
|
3848
|
+
const budgetForLast = Math.max(0, maxBytesN - otherBytes);
|
|
3849
|
+
let cut = Math.min(lastLine.length, budgetForLast);
|
|
3850
|
+
while (cut > 0 && Buffer.byteLength(lastLine.slice(0, cut)) > budgetForLast) cut--;
|
|
3851
|
+
slice[lastIdx] = lastLine.slice(0, cut);
|
|
3852
|
+
midLineCut = true;
|
|
3853
|
+
bytesCut = true;
|
|
3854
|
+
}
|
|
3855
|
+
}
|
|
3856
|
+
const lastLineRead = startIdx + slice.length;
|
|
3857
|
+
const body = showLineNumbers ? slice.map((line, i) => `${startIdx + i + 1}\t${line}`).join("\n") : slice.join("\n");
|
|
3858
|
+
const linesTruncated = endIdx < totalLines || bytesCut;
|
|
3859
|
+
if (!linesTruncated && offsetN === 1) return body;
|
|
3860
|
+
if (!linesTruncated) return `${body}\n\n…read lines ${offsetN}-${lastLineRead} of ${totalLines}.`;
|
|
3861
|
+
if (midLineCut) return `${body}\n\n…truncated mid-line at line ${lastLineRead} (byte cap ${maxBytesN} reached). File has ${totalLines} lines, ${totalBytes} bytes total. Raise maxBytes to read the full line.`;
|
|
3862
|
+
return `${body}\n\n…truncated at line ${lastLineRead} (${bytesCut ? `byte cap (${maxBytesN}) reached` : `line limit (${limitN}) reached`}). File has ${totalLines} lines, ${totalBytes} bytes total — re-read with offset=${lastLineRead + 1} to continue.`;
|
|
3863
|
+
}
|
|
3788
3864
|
const readFile$1 = {
|
|
3789
3865
|
isConcurrencySafe: true,
|
|
3790
3866
|
spec: {
|
|
@@ -3829,6 +3905,13 @@ const readFile$1 = {
|
|
|
3829
3905
|
if (!turns) return `Attachment ${path} cannot be resolved: no session is bound to this run.`;
|
|
3830
3906
|
const found = resolveAttachmentFromTurns(turns, handleHash);
|
|
3831
3907
|
if (!found) return `Attachment ${path} not found in this session's history (it may predate this session, or only ever lived as a host-offloaded reference).`;
|
|
3908
|
+
const asText = attachmentText(found);
|
|
3909
|
+
if (asText !== null) return `${`Document${found.name ? ` "${found.name}"` : ""} re-resolved from session history (${found.mediaType}, rendered as text).`}\n\n${renderTextSlice(asText, {
|
|
3910
|
+
offset: normalizeReadFileInteger(offset, 1),
|
|
3911
|
+
limit: normalizeReadFileInteger(limit, defaults.lineLimit),
|
|
3912
|
+
maxBytes: normalizeReadFileInteger(maxBytes, defaults.textMaxBytes),
|
|
3913
|
+
lineNumbers: typeof lineNumbers === "boolean" ? lineNumbers : ctx.behavior?.readLineNumbers ?? true
|
|
3914
|
+
})}`;
|
|
3832
3915
|
const sizeCap = normalizeReadFileInteger(maxBytes, defaults.attachmentMaxBytes);
|
|
3833
3916
|
const byteLength = attachmentByteLength(found.data, found.encoding);
|
|
3834
3917
|
if (sizeCap > 0 && byteLength > sizeCap) return `[attachment too large to re-inline: ${path}, ${byteLength} bytes (cap ${sizeCap}). Raise maxBytes if you need the original bytes.]`;
|
|
@@ -3931,53 +4014,13 @@ const readFile$1 = {
|
|
|
3931
4014
|
}
|
|
3932
4015
|
}
|
|
3933
4016
|
if (looksBinary(raw)) return `[binary file: ${path}, ${totalBytes} bytes; use shell with hexdump | xxd | od to inspect]`;
|
|
3934
|
-
const offsetN = offsetForKey;
|
|
3935
|
-
const limitN = limitForKey;
|
|
3936
|
-
const maxBytesN = maxBytesForKey;
|
|
3937
|
-
const lines = raw.split("\n");
|
|
3938
|
-
const totalLines = lines.length;
|
|
3939
|
-
const startIdx = Math.max(0, offsetN - 1);
|
|
3940
|
-
const endIdx = limitN > 0 ? Math.min(totalLines, startIdx + limitN) : totalLines;
|
|
3941
|
-
let slice = lines.slice(startIdx, endIdx);
|
|
3942
|
-
let bytesCut = false;
|
|
3943
|
-
if (maxBytesN > 0) {
|
|
3944
|
-
const truncatedSlice = [];
|
|
3945
|
-
let bytesUsed = 0;
|
|
3946
|
-
for (const line of slice) {
|
|
3947
|
-
const lineBytes = Buffer.byteLength(line) + 1;
|
|
3948
|
-
if (bytesUsed + lineBytes > maxBytesN && truncatedSlice.length > 0) {
|
|
3949
|
-
bytesCut = true;
|
|
3950
|
-
break;
|
|
3951
|
-
}
|
|
3952
|
-
truncatedSlice.push(line);
|
|
3953
|
-
bytesUsed += lineBytes;
|
|
3954
|
-
if (bytesUsed >= maxBytesN) break;
|
|
3955
|
-
}
|
|
3956
|
-
if (truncatedSlice.length < slice.length) bytesCut = true;
|
|
3957
|
-
slice = truncatedSlice;
|
|
3958
|
-
}
|
|
3959
|
-
let midLineCut = false;
|
|
3960
|
-
if (maxBytesN > 0 && slice.length > 0) {
|
|
3961
|
-
if (Buffer.byteLength(slice.join("\n")) > maxBytesN) {
|
|
3962
|
-
const lastIdx = slice.length - 1;
|
|
3963
|
-
const lastLine = slice[lastIdx];
|
|
3964
|
-
const otherBytes = lastIdx > 0 ? Buffer.byteLength(slice.slice(0, lastIdx).join("\n")) + 1 : 0;
|
|
3965
|
-
const budgetForLast = Math.max(0, maxBytesN - otherBytes);
|
|
3966
|
-
let cut = Math.min(lastLine.length, budgetForLast);
|
|
3967
|
-
while (cut > 0 && Buffer.byteLength(lastLine.slice(0, cut)) > budgetForLast) cut--;
|
|
3968
|
-
slice[lastIdx] = lastLine.slice(0, cut);
|
|
3969
|
-
midLineCut = true;
|
|
3970
|
-
bytesCut = true;
|
|
3971
|
-
}
|
|
3972
|
-
}
|
|
3973
|
-
const lastLineRead = startIdx + slice.length;
|
|
3974
|
-
const body = showLineNumbers ? slice.map((line, i) => `${startIdx + i + 1}\t${line}`).join("\n") : slice.join("\n");
|
|
3975
4017
|
rememberRead();
|
|
3976
|
-
|
|
3977
|
-
|
|
3978
|
-
|
|
3979
|
-
|
|
3980
|
-
|
|
4018
|
+
return renderTextSlice(raw, {
|
|
4019
|
+
offset: offsetForKey,
|
|
4020
|
+
limit: limitForKey,
|
|
4021
|
+
maxBytes: maxBytesForKey,
|
|
4022
|
+
lineNumbers: showLineNumbers
|
|
4023
|
+
});
|
|
3981
4024
|
}
|
|
3982
4025
|
};
|
|
3983
4026
|
function documentMediaTypeFor(path) {
|
|
@@ -9565,6 +9608,39 @@ function applyTailCompaction(messages, threshold, keepTurns, options) {
|
|
|
9565
9608
|
*
|
|
9566
9609
|
* Pure: returns the input reference unchanged when nothing aged out.
|
|
9567
9610
|
*/
|
|
9611
|
+
/**
|
|
9612
|
+
* TEXTUAL document payloads above this many bytes never ride inline on the
|
|
9613
|
+
* wire — they are replaced with the recoverable `attachment://` marker
|
|
9614
|
+
* immediately, even inside the `mediaKeepTurns` window, because the model
|
|
9615
|
+
* can page them back losslessly via read_file's line-sliced attachment path.
|
|
9616
|
+
* Matches read_file's default text byte cap.
|
|
9617
|
+
*
|
|
9618
|
+
* Binary media (images, PDFs, opaque blobs) is deliberately NOT size-gated
|
|
9619
|
+
* inside the keep window: the model can only consume those inline, so
|
|
9620
|
+
* stubbing a fresh one would make it permanently unviewable and set up a
|
|
9621
|
+
* read → stub → re-read ping-pong. Binary keeps pure age-out semantics.
|
|
9622
|
+
*/
|
|
9623
|
+
const MEDIA_INLINE_MAX_BYTES = 262144;
|
|
9624
|
+
/**
|
|
9625
|
+
* Base64 chars to decode when sniffing whether a base64 document is textual.
|
|
9626
|
+
* Multiple of 4 (decodes cleanly), yielding ~8 KiB — the same head-sample
|
|
9627
|
+
* size `looksBinary` uses, so the gate and read_file's `attachmentText`
|
|
9628
|
+
* reach the same verdict for the same payload.
|
|
9629
|
+
*/
|
|
9630
|
+
const TEXT_SNIFF_BASE64_CHARS = 10924;
|
|
9631
|
+
/**
|
|
9632
|
+
* True when a document block's bytes are recoverable as paged text through
|
|
9633
|
+
* read_file's attachment path. Only such blocks are eligible for the
|
|
9634
|
+
* keep-window size gate. Kept deliberately in lockstep with `attachmentText`
|
|
9635
|
+
* in tools/read-file.ts: text encoding → yes; PDFs → no; base64 → decode a
|
|
9636
|
+
* head sample and sniff.
|
|
9637
|
+
*/
|
|
9638
|
+
function isPagedTextRecoverable(block) {
|
|
9639
|
+
if (block.type !== "document") return false;
|
|
9640
|
+
if (block.encoding === "text") return true;
|
|
9641
|
+
if (block.mediaType === "application/pdf") return false;
|
|
9642
|
+
return !looksBinary(Buffer.from(block.data.slice(0, TEXT_SNIFF_BASE64_CHARS), "base64").toString("utf-8"));
|
|
9643
|
+
}
|
|
9568
9644
|
function applyMediaAgeout(messages, keep, options) {
|
|
9569
9645
|
const elidedReadPaths = [];
|
|
9570
9646
|
if (messages.length === 0) return {
|
|
@@ -9574,24 +9650,25 @@ function applyMediaAgeout(messages, keep, options) {
|
|
|
9574
9650
|
const readFileToolName = options?.readFileToolName ?? "read_file";
|
|
9575
9651
|
const keepFloor = Math.max(0, keep);
|
|
9576
9652
|
const rawCutoff = messages.length - keepFloor;
|
|
9577
|
-
if (rawCutoff <= 0) return {
|
|
9578
|
-
messages,
|
|
9579
|
-
elidedReadPaths
|
|
9580
|
-
};
|
|
9581
9653
|
const chunk = Math.max(1, options?.chunkTurns ?? 1);
|
|
9582
|
-
const cutoff = Math.floor(rawCutoff / chunk) * chunk;
|
|
9583
|
-
|
|
9654
|
+
const cutoff = rawCutoff <= 0 ? 0 : Math.floor(rawCutoff / chunk) * chunk;
|
|
9655
|
+
const maxInline = typeof options?.maxInlineBytes === "number" && options.maxInlineBytes > 0 ? options.maxInlineBytes : Infinity;
|
|
9656
|
+
if (cutoff <= 0 && maxInline === Infinity) return {
|
|
9584
9657
|
messages,
|
|
9585
9658
|
elidedReadPaths
|
|
9586
9659
|
};
|
|
9660
|
+
const isInlineMedia = (b) => (b.type === "image" || b.type === "document") && typeof b.data === "string";
|
|
9587
9661
|
const readPathByCallId = options?.readPathByCallId;
|
|
9588
9662
|
let changed = false;
|
|
9589
9663
|
const out = messages.slice();
|
|
9590
|
-
for (let i = 0; i <
|
|
9664
|
+
for (let i = 0; i < out.length; i++) {
|
|
9665
|
+
const aged = i < cutoff;
|
|
9666
|
+
if (!aged && maxInline === Infinity) continue;
|
|
9667
|
+
const elides = (b) => aged || mediaPayloadBytes(b.data, b.encoding) > maxInline && isPagedTextRecoverable(b);
|
|
9591
9668
|
const msg = out[i];
|
|
9592
9669
|
let msgChanged = false;
|
|
9593
9670
|
const newContent = msg.content.map((block) => {
|
|
9594
|
-
if ((block
|
|
9671
|
+
if (isInlineMedia(block) && elides(block)) {
|
|
9595
9672
|
msgChanged = true;
|
|
9596
9673
|
changed = true;
|
|
9597
9674
|
return {
|
|
@@ -9602,7 +9679,7 @@ function applyMediaAgeout(messages, keep, options) {
|
|
|
9602
9679
|
if (block.type === "tool_result" && Array.isArray(block.output)) {
|
|
9603
9680
|
let outputChanged = false;
|
|
9604
9681
|
const newOutput = block.output.map((part) => {
|
|
9605
|
-
if ((part
|
|
9682
|
+
if (isInlineMedia(part) && elides(part)) {
|
|
9606
9683
|
outputChanged = true;
|
|
9607
9684
|
return {
|
|
9608
9685
|
type: "text",
|
|
@@ -10697,7 +10774,8 @@ async function executeTurn(ctx, turn, priorUsage) {
|
|
|
10697
10774
|
const aged = applyMediaAgeout(sanitizedMessages, ctx.mediaKeepTurns, {
|
|
10698
10775
|
chunkTurns: COMPACT_CHUNK_TURNS,
|
|
10699
10776
|
readPathByCallId,
|
|
10700
|
-
readFileToolName: toWireName("read_file", ctx.aliasMaps)
|
|
10777
|
+
readFileToolName: toWireName("read_file", ctx.aliasMaps),
|
|
10778
|
+
maxInlineBytes: MEDIA_INLINE_MAX_BYTES
|
|
10701
10779
|
});
|
|
10702
10780
|
sanitizedMessages = aged.messages;
|
|
10703
10781
|
markReadStateForElidedPaths(ctx, ctx.handle.cwd, aged.elidedReadPaths);
|
|
@@ -10843,7 +10921,8 @@ async function executeTurn(ctx, turn, priorUsage) {
|
|
|
10843
10921
|
const aged = applyMediaAgeout(streamOptions.messages, keepFloor, {
|
|
10844
10922
|
chunkTurns: 1,
|
|
10845
10923
|
readPathByCallId,
|
|
10846
|
-
readFileToolName: ctx.tools.read_file ? toWireName("read_file", ctx.aliasMaps) : null
|
|
10924
|
+
readFileToolName: ctx.tools.read_file ? toWireName("read_file", ctx.aliasMaps) : null,
|
|
10925
|
+
maxInlineBytes: MEDIA_INLINE_MAX_BYTES
|
|
10847
10926
|
});
|
|
10848
10927
|
const compacted = applyTailCompaction(aged.messages, 0, keepFloor, {
|
|
10849
10928
|
readPathByCallId,
|
|
@@ -14596,6 +14675,6 @@ function createAgent(rawOptions) {
|
|
|
14596
14675
|
};
|
|
14597
14676
|
}
|
|
14598
14677
|
//#endregion
|
|
14599
|
-
export { composeExtensionPreset as $,
|
|
14678
|
+
export { composeExtensionPreset as $, discoverExtensions as $t, ANCHOR_PREVIEW_MAX_CHARS as A, createInteractionTool as At, ExtensionInstallError as B, ensureKeybindingsFile as Bt, NO_TOOLS_PREAMBLE as C, readFile$1 as Ct, buildFullCompactPrompt as D, formatModelLine as Dt, buildFromCompactPrompt as E, createModelSearchTool as Et, truncateHeadForPtlRetry as F, resolveStorageDirs as Ft, readExtensionInstallProvenance as G, mergeKeybindings as Gt, installExtensionFromSpec as H, groupBindings as Ht, CompactInvalidInputError as I, DEFAULT_KEYBINDINGS as It, createExtensionHud as J, readKeybindingsRaw as Jt, removeInstalledExtension as K, parseBindingSpec as Kt, CompactPromptTooLongError as L, KEYBINDING_DEFS as Lt, sliceForCompaction as M, glob as Mt, stripImagesFromTurns as N, edit as Nt, buildTailCompactPrompt as O, matchModelEntries as Ot, summaryToTurn as P, validateToolArgs as Pt, buildExtensionRegistry as Q, defaultExtensionScanPaths as Qt, EMPTY_EXTENSION_REGISTRY as R, KEYBINDING_DEF_BY_ACTION as Rt, BASE_INSTRUCTIONS as S, tailTruncate as St, buildCompactPrompt as T, multiEdit as Tt, listExtensionCandidates as U, keybindingsPath as Ut, fetchExtensionSource as V, formatBindingForDisplay as Vt, parseExtensionInstallSource as W, matchesBinding as Wt, discoverAndBuildExtensionRegistry as X, stripJsonComments as Xt, registerExtensionHostModules as Y, resolveExtensionKeybindings as Yt, buildExtensionPreset as Z, ENTRY_CANDIDATES as Zt, buildPostCompactAttachments as _, defaultRepeatGuardTracked as _n, createSkillsRunScriptTool as _t, SHELL_CASCADE_CANCEL_MESSAGE as a, clampExtensionConfigNumber as an, createWorkspaceSurface as at, selectRecentFiles as b, createShellTool as bt, applyCompactSummaryCutoff as c, isValidExtensionConfigValue as cn, basicTools as ct, buildPersistedStub as d, toWireConfigSchema as dn, WAIT_TASK_TIMED_OUT_PREFIX as dt, inlineLoadedExtension as en, disposeExtensionRegistry as et, cleanupPersistedSession as f, AUTO_COMPACT_MIN_GROWTH_FRACTION as fn, waitTask as ft, resolveTasksDir as g, defaultRepeatGuardNormalize as gn, createSkillsUseTool as gt, resolvePersistDir as h, shouldAutoCompact as hn, isSpawnTool as ht, INTERRUPT_MESSAGE_FOR_TOOL_USE as i, defineExtension as in, createExtensionHostRuntimeBridge as it, anchorPreviewFor as j, grep as jt, buildUpToCompactPrompt as k, listFiles as kt, PERSISTED_STUB_PREFIX as l, resolveExtensionConfig as ln, basic_default as lt, resolveMcpWarningsDir as m, effectiveContextWindow as mn, createSpawnTool as mt, normalizeProviders as n, parseExtensionScanPathEnv as nn, mergeContributions as nt, TOOL_USE_CANCELLED_MESSAGE as o, coerceExtensionConfigInput as on, composePresets as ot, maybePersistToolResult as p, OUTPUT_RESERVE_TOKENS as pn, createToolSearchTool as pt, updateInstalledExtension as q, readKeybindings as qt, resolveModelTargets as r, scanExtensionDirectories as rn, partitionExtensionCatalog as rt, TOOL_USE_SKIPPED_MESSAGE as s, isValidExtensionConfigItem as sn, definePreset as st, createAgent as t, isExtensionDefinition as tn, filterExtensionRegistry as tt, PERSISTENCE_PREVIEW_BYTES as u, resolveExtensionConfigValue as un, writeFile$1 as ut, selectFilesFromReadState as v, normalizeShellCommand as vn, createSkillsReadTool as vt, TRAILER as w, looksBinary as wt, compactConversation as x, shell as xt, selectFilesFromSession as y, stableStringify as yn, shellKill as yt, createExtensionPromptBridge as z, KEYBINDING_KEY_COL_WIDTH as zt };
|
|
14600
14679
|
|
|
14601
|
-
//# sourceMappingURL=agent-
|
|
14680
|
+
//# sourceMappingURL=agent-5mbViwQE.js.map
|