@markusylisiurunen/tau 0.3.57 → 0.3.59
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/code_mode/runtime.js +17 -12
- package/dist/code_mode/runtime.js.map +1 -1
- package/dist/core/agent/agent_runtime.js +2 -4
- package/dist/core/agent/agent_runtime.js.map +1 -1
- package/dist/core/session/auto_compaction_archive.js +106 -5
- package/dist/core/session/auto_compaction_archive.js.map +1 -1
- package/dist/core/session/compaction.js +7 -10
- package/dist/core/session/compaction.js.map +1 -1
- package/dist/core/session/direct_bash.js +12 -3
- package/dist/core/session/direct_bash.js.map +1 -1
- package/dist/core/static/code_mode/history/documentation.md +83 -8
- package/dist/core/static/tau_docs/history.md +5 -3
- package/dist/core/static/tau_docs/sessions.md +5 -1
- package/dist/core/tools/bash.js +101 -48
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/code_mode.js +8 -5
- package/dist/core/tools/code_mode.js.map +1 -1
- package/dist/core/tools/execution_backend.js +38 -31
- package/dist/core/tools/execution_backend.js.map +1 -1
- package/dist/core/tools/goal.js +16 -7
- package/dist/core/tools/goal.js.map +1 -1
- package/dist/core/tools/history.js +4 -1
- package/dist/core/tools/history.js.map +1 -1
- package/dist/core/tools/interrupt_agent.js +12 -8
- package/dist/core/tools/interrupt_agent.js.map +1 -1
- package/dist/core/tools/list_agents.js +26 -20
- package/dist/core/tools/list_agents.js.map +1 -1
- package/dist/core/tools/nook.js +1 -1
- package/dist/core/tools/nook.js.map +1 -1
- package/dist/core/tools/send_input_to_agent.js +33 -12
- package/dist/core/tools/send_input_to_agent.js.map +1 -1
- package/dist/core/tools/spawn_agent.js +29 -23
- package/dist/core/tools/spawn_agent.js.map +1 -1
- package/dist/core/tools/tau_docs.js +1 -1
- package/dist/core/tools/view_image.js +15 -10
- package/dist/core/tools/view_image.js.map +1 -1
- package/dist/core/tools/wait_for_agents.js +11 -7
- package/dist/core/tools/wait_for_agents.js.map +1 -1
- package/dist/core/tools/web.js +1 -1
- package/dist/core/tools/web.js.map +1 -1
- package/dist/core/tools/write.js +15 -11
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/utils/token.js +24 -0
- package/dist/core/utils/token.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/execution/cloudflare_sandbox_execution_environment.js +10 -7
- package/dist/execution/cloudflare_sandbox_execution_environment.js.map +1 -1
- package/dist/execution/fly_sprite_execution_environment.js +30 -26
- package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { buildCompactionUserMessage, formatHistoryForCompaction, truncateToolRecoveryResults, } from "../utils/compact.js";
|
|
3
3
|
import { extractAssistantText } from "../utils/messages.js";
|
|
4
|
-
import { bytesToTokens } from "../utils/token.js";
|
|
4
|
+
import { bytesToTokens, estimateMessageTokens } from "../utils/token.js";
|
|
5
5
|
import { truncateForTokens } from "../utils/truncate.js";
|
|
6
6
|
import { formatTauUserText, getSummaryCompactionMetadataFromMessage, hasAutoCompactionContinuationMetadata, hasToolRecoveryMetadata, stripTauUserMetadata, } from "../utils/user_metadata.js";
|
|
7
7
|
const PRESERVED_USER_MESSAGE_MAX_TOKENS = 20_000;
|
|
@@ -425,12 +425,12 @@ export function prepareAutoCompaction(entries, settings) {
|
|
|
425
425
|
userMessageCandidates: collectUserMessageCandidates(entriesToSummarize, latestCompaction.preservedUserMessages),
|
|
426
426
|
};
|
|
427
427
|
}
|
|
428
|
-
const AUTO_COMPACTION_ARCHIVE_REFERENCE_GUIDANCE = `
|
|
428
|
+
const AUTO_COMPACTION_ARCHIVE_REFERENCE_GUIDANCE = `When best-effort archiving succeeds, the continuing assistant receives exact paths to a temporary text transcript and JSON snapshot of the pre-compaction context. Conversation records above that show an archive entry id can be recovered directly from the matching JSON file. When no entry id is available, the files also support discovery from distinctive evidence.
|
|
429
429
|
|
|
430
|
-
Keep the summary independently useful. State continuity-critical goals, constraints, decisions, current state, blockers, and next steps directly. When exact or bulky details would be wasteful to reproduce, you may mention the relevant
|
|
430
|
+
Keep the summary independently useful. State continuity-critical goals, constraints, decisions, current state, blockers, and next steps directly. When exact or bulky details would be wasteful to reproduce, you may mention the relevant id as an auto-compaction archive entry id so the continuing assistant knows to use the supplied files, not the separate history tool. This is useful for long tool output, diagnostic logs, exact errors, payloads, and large code excerpts. Use such references sparingly and only for ids shown in the conversation.
|
|
431
431
|
|
|
432
|
-
Good pattern: "The key failure is a missing RuntimeConfig field; the complete compiler output is in
|
|
433
|
-
Bad pattern: "See
|
|
432
|
+
Good pattern: "The key failure is a missing RuntimeConfig field; the complete compiler output is in auto-compaction archive entry 'ARCHIVE_ENTRY_ID'."
|
|
433
|
+
Bad pattern: "See archive entry 'ARCHIVE_ENTRY_ID' for what happened."`;
|
|
434
434
|
export function buildAutoCompactionPrompt(preparation) {
|
|
435
435
|
const retainedContextGuidance = preparation.cutType === "split-turn"
|
|
436
436
|
? `The retained context will begin in the middle of the latest assistant/tool turn. Add a "## Current Turn Handoff" section that clearly captures:
|
|
@@ -441,7 +441,7 @@ export function buildAutoCompactionPrompt(preparation) {
|
|
|
441
441
|
|
|
442
442
|
Place the section wherever it makes the handoff clearest. Preserve earlier session context elsewhere in the summary without duplicating the retained suffix.`
|
|
443
443
|
: "The retained context will include recent messages. Ensure the summary complements that retained context without duplicating unnecessary detail.";
|
|
444
|
-
const boundedRetainedContextGuidance = "Individual textual tool results and tool-recovery payloads in the retained context may be middle-truncated above the retention limit. Do not describe the retained context as exact or verbatim.
|
|
444
|
+
const boundedRetainedContextGuidance = "Individual textual tool results and tool-recovery payloads in the retained context may be middle-truncated above the retention limit. Do not describe the retained context as exact or verbatim. When the pre-compaction archive is available, the continuing assistant can recover omitted output through a targeted lookup.";
|
|
445
445
|
return buildSessionCompactionPrompt({
|
|
446
446
|
preparation,
|
|
447
447
|
guidance: `${retainedContextGuidance}\n\n${boundedRetainedContextGuidance}\n\n${AUTO_COMPACTION_ARCHIVE_REFERENCE_GUIDANCE}`,
|
|
@@ -457,7 +457,7 @@ export function buildAutoCompactionContinuationMessage(args) {
|
|
|
457
457
|
lines.push("The retained messages begin in the middle of the latest assistant/tool turn. The summary contains the original request and earlier tool work from that turn.");
|
|
458
458
|
}
|
|
459
459
|
if (args.archive) {
|
|
460
|
-
lines.push("The summary and retained context should normally be sufficient.
|
|
460
|
+
lines.push("The summary and retained context should normally be sufficient. Temporary pre-compaction archive files are also available:", `- archive guide: ${args.archive.documentationPath}`, `- this compaction's text transcript: ${args.archive.textPath}`, `- this compaction's full JSON: ${args.archive.jsonPath}`, "Before continuing, ensure the archive guide's full contents are present in the current model context. If they are not already visible in full, read the guide now with an execution-environment file tool. This is required even when no archive lookup is currently planned.", "For details removed from this session by automatic compaction, use these execution-environment files rather than the separate history tool, whose collection may be stale, remotely replicated, truncated, or unavailable.", "The guide describes the archive format and adaptable, bounded lookup examples, including how to inspect earlier numbered pairs when needed.");
|
|
461
461
|
}
|
|
462
462
|
const hiddenSystemMessages = [...(args.systemMessages ?? []), lines.join("\n")];
|
|
463
463
|
return {
|
|
@@ -588,9 +588,6 @@ function estimateEntriesTokens(entries) {
|
|
|
588
588
|
? total
|
|
589
589
|
: total + estimateMessageTokens(entry.message), 0);
|
|
590
590
|
}
|
|
591
|
-
function estimateMessageTokens(message) {
|
|
592
|
-
return Math.max(1, bytesToTokens(Buffer.byteLength(JSON.stringify(message), "utf8")));
|
|
593
|
-
}
|
|
594
591
|
function extractLastAssistantMessage(history) {
|
|
595
592
|
for (let i = history.length - 1; i >= 0; i--) {
|
|
596
593
|
if (history[i].role !== "assistant") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../../src/core/session/compaction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../../src/core/session/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,uCAAuC,EACvC,qCAAqC,EACrC,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAuCnC,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACjD,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAC9C,MAAM,mCAAmC,GAAG,8BAA8B,CAAC;AAC3E,MAAM,oCAAoC,GAAG,+BAA+B,CAAC;AAS7E,MAAM,CAAC,MAAM,sCAAsC,GACjD,iSAAiS,CAAC;AAEpS,MAAM,+BAA+B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0NAgDkL,CAAC;AAE3N,MAAM,sCAAsC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0NAsD2K,CAAC;AAE3N,MAAM,UAAU,wBAAwB,CACtC,OAA0C,EAC1C,OAAiC;IAEjC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,OAAO;SAC/B,KAAK,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC;SACjC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qCAAqC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,qBAAqB,GAAG,0BAA0B,CAAC,mBAAmB,EAAE;QAC5E,eAAe;KAChB,CAAC,CAAC;IACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,mBAAmB,EAAE;QACvE,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,eAAe;KAChB,CAAC,CAAC;IAEH,OAAO;QACL,eAAe,EAAE,gBAAgB,CAAC,OAAO;QACzC,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB,EAAE,4BAA4B,CACjD,kBAAkB,EAClB,gBAAgB,CAAC,qBAAqB,CACvC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAG5C;IACC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACvC,IAAI,aAAa,GAAG,mBAAmB,WAAW,CAAC,gBAAgB,uBAAuB,CAAC;IAC3F,IAAI,WAAW,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;QACxC,aAAa,IAAI,uBAAuB,WAAW,CAAC,eAAe,CAAC,IAAI,EAAE,2BAA2B,CAAC;IACxG,CAAC;IACD,IAAI,WAAW,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,aAAa,IAAI,8BAA8B,2BAA2B,CAAC,WAAW,CAAC,qBAAqB,CAAC,kCAAkC,CAAC;IAClJ,CAAC;IAED,aAAa,IAAI,WAAW,CAAC,eAAe;QAC1C,CAAC,CAAC,sCAAsC;QACxC,CAAC,CAAC,+BAA+B,CAAC;IAEpC,MAAM,aAAa,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,IAAI,yBAAyB,aAAa,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAK7C;IACC,MAAM,oBAAoB,GACxB,IAAI,CAAC,IAAI,KAAK,qBAAqB;QACjC,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,OAAO,GAAG,sBAAsB,CAAC;QACrC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;KAClD,CAAC,CAAC;IAEH,OAAO;QACL,iBAAiB,EAAE,0BAA0B,CAAC;YAC5C,OAAO;YACP,oBAAoB;SACrB,CAAC;QACF,qBAAqB,EAAE,OAAO,CAAC,oBAAoB,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAGtC;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB;SACzC,GAAG,CACF,CAAC,OAAO,EAAE,EAAE,CACV,qBAAqB,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,OAAO,CAAC,IAAI,mBAAmB,CAC5F;SACA,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,GAAG,OAAO,+NAA+N,SAAS,8BAA8B,CAAC;AAC1R,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAG9C;IACC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC5E,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;KAC7D,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAU,CAAC,CAC5E,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAChD,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oEAAoE,EAAE,GAAG,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kEAAkE,EAAE,GAAG,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,qBAAqB,EAAE,wBAAwB,CAAC,kBAAkB,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,QAAgB,EAChB,OAA2C;IAE3C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAChE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,GAAG,mCAAmC,CAAC,MAAM,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAC;IAC7E,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,mCAAmC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,oCAAoC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IACxF,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gDAAiD,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,wBAAwB,CAC/B,UAA2C;IAE3C,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7E,IAAI,WAAW,IAAI,iCAAiC,EAAE,CAAC;QACrD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACzC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,iCAAiC,CAAC,CAAC,CACpF,CAAC;IACF,IAAI,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,WAAW,GAAG,iCAAiC,EAAE,CAAC;QACvD,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACvD,IAAI,OAAO,CAAC,KAAK,CAAE,GAAG,OAAO,CAAC,YAAY,CAAE,EAAE,CAAC;gBAC7C,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,CAAE,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM;QACR,CAAC;QACD,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAE,GAAG,CAAC,CAAC;QACnD,WAAW,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC;QAClC,OAAO;YACL,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO;SACnF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAA0C;IAE1C,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAU,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,4BAA4B,CAAC,KAA6B;IACjE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,OAAO,CAAC,CACN,OAAO,CAAC,IAAI,KAAK,WAAW;QAC5B,CAAC,OAAO,CAAC,UAAU,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,OAA0C,EAC1C,gBAAiD;IAEjD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC3D,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;YACzB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,oBAAoB;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,2BAA2B,CAAC,UAA2C;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YACtC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACpD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAgB;IAClD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IACE,uCAAuC,CAAC,OAAO,CAAC;QAChD,qCAAqC,CAAC,OAAO,CAAC;QAC9C,uBAAuB,CAAC,OAAO,CAAC,EAChC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK;SACT,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA6B;IACvD,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,GAAG,2BAA2B,CAC3C,OAAO,CAAC,OAAO,EACf,+BAA+B,CAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,KAAK,CAAC,IAAI,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,EAAE,+BAA+B,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAG,OAA4B,CAAC;IAChD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO;SAC5B,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;SAC5C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;SAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,EAAE;QACxC,SAAS,EAAE,+BAA+B;QAC1C,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,OAAO,GAAiC,EAAE,CAAC;IACjD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,OAAO,EAAE,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAA0C,EAC1C,QAA4D;IAE5D,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,uBAAuB,CAAC,OAAO,EAAE;QAC3C,UAAU,EAAE,gBAAgB,CAAC,KAAK,GAAG,CAAC;QACtC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;KAC5C,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,kBAAkB,GAAG,OAAO;SAC/B,KAAK,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;SACjD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qCAAqC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,sBAAsB,CAC5C,kBAAkB,CAAC,MAAM,CAAC,4BAA4B,CAAC,CACxD,CAAC;IACF,MAAM,qBAAqB,GAAG,0BAA0B,CAAC,mBAAmB,EAAE;QAC5E,eAAe;KAChB,CAAC,CAAC;IACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,mBAAmB,EAAE;QACvE,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,OAAO;SAC5B,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;SACrB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qCAAqC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACxE,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3B,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,eAAe,EAAE,gBAAgB,CAAC,OAAO;QACzC,eAAe;QACf,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,gBAAgB;QAChB,qBAAqB,EAAE,4BAA4B,CACjD,kBAAkB,EAClB,gBAAgB,CAAC,qBAAqB,CACvC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,0CAA0C,GAAG;;;;;uEAKoB,CAAC;AAExE,MAAM,UAAU,yBAAyB,CAAC,WAAsC;IAC9E,MAAM,uBAAuB,GAC3B,WAAW,CAAC,OAAO,KAAK,YAAY;QAClC,CAAC,CAAC;;;;;;6JAMqJ;QACvJ,CAAC,CAAC,iJAAiJ,CAAC;IACxJ,MAAM,8BAA8B,GAClC,+TAA+T,CAAC;IAElU,OAAO,4BAA4B,CAAC;QAClC,WAAW;QACX,QAAQ,EAAE,GAAG,uBAAuB,OAAO,8BAA8B,OAAO,0CAA0C,EAAE;KAC7H,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,IAKtD;IACC,MAAM,KAAK,GAAG;QACZ,gEAAgE;QAChE,oMAAoM;QACpM,+FAA+F;KAChG,CAAC;IAEF,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CACR,8JAA8J,CAC/J,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CACR,4HAA4H,EAC5H,oBAAoB,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EACpD,wCAAwC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAC/D,kCAAkC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EACzD,+QAA+Q,EAC/Q,4NAA4N,EAC5N,6IAA6I,CAC9I,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhF,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,iBAAiB,CAAC;oBACtB,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;oBAChE,oBAAoB;iBACrB,CAAC;aACH;SACF;QACD,SAAS,EAAE,IAAI,CAAC,GAAG;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAA0C,EAC1C,IAAsD;IAEtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5F,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/E,IAAI,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,aAAa,GAAG,eAAe,CAAC;QACpC,IAAI,WAAW,GAAG,gBAAgB,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;YACjC,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;YACzC,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;YAClF,IAAI,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACrD,MAAM;YACR,CAAC;YACD,aAAa,GAAG,SAAS,CAAC;YAC1B,WAAW,IAAI,UAAU,CAAC;QAC5B,CAAC;QAED,IAAI,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,EAAE;QACrD,SAAS,EAAE,eAAe;QAC1B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAC,CAAC;IACH,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,eAAe,GAAG,IAAI,CAAC,UAAU;YACtC,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE;YAC3D,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IACD,IAAI,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,yBAAyB,CAAC,OAA0C;IAK3E,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,uCAAuC,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,CAAC;QAClF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC7E,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC,CAAC,CAAC;YACJ,OAAO;gBACL,KAAK;gBACL,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,qBAAqB;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB,CACxB,OAA0C,EAC1C,UAAkB;IAElB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7E,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,IACE,uCAAuC,CAAC,OAAO,CAAC;YAChD,qCAAqC,CAAC,OAAO,CAAC;YAC9C,uBAAuB,CAAC,OAAO,CAAC,EAChC,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAA0C,EAC1C,UAAkB;IAElB,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,0BAA0B,CACjC,OAA0C,EAC1C,IAAqD;IAErD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,uBAA2C,CAAC;IAChD,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC;QAC9B,IAAI,qCAAqC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,SAAS;QACX,CAAC;QAED,cAAc,IAAI,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEvD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACvC,uBAAuB,GAAG,KAAK,CAAC;QAClC,CAAC;QAED,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,aAAa,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAC3D,OAAO,uBAAuB,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA0C;IACvE,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,qCAAqC,CAAC,KAAK,CAAC,OAAO,CAAC;QAClD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,EAClD,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,OAA2B;IAC9D,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrC,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAsB,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
|
-
import { BASH_DEFAULT_TIMEOUT_MS, buildBashPresentation, formatBashUserMessageText, getBashOutputPolicy, prepareBashOutput, } from "../tools/bash.js";
|
|
1
|
+
import { BASH_DEFAULT_TIMEOUT_MS, buildBashPresentation, formatBashUserMessageText, getBashOutputPolicy, getBashTerminationNotice, prepareBashOutput, } from "../tools/bash.js";
|
|
2
2
|
import { TOOL_CARD_MAX_LINE_CHARS } from "../tools/presentation.js";
|
|
3
3
|
import { TOOL_NAME_BASH } from "../tools/tool_names.js";
|
|
4
4
|
export async function runDirectBashCommand(options) {
|
|
5
5
|
const now = options.now ?? Date.now;
|
|
6
6
|
const startedAt = now();
|
|
7
|
-
const { output, exitCode, truncated: captureTruncated, } = await options.backend.runBash(options.command, {
|
|
7
|
+
const { output, exitCode, truncated: captureTruncated, aborted, timedOut, closeSignal, } = await options.backend.runBash(options.command, {
|
|
8
8
|
signal: options.signal,
|
|
9
9
|
timeoutMs: BASH_DEFAULT_TIMEOUT_MS,
|
|
10
10
|
});
|
|
11
11
|
const durationMs = Math.max(0, now() - startedAt);
|
|
12
|
+
const terminationNotice = getBashTerminationNotice({
|
|
13
|
+
aborted,
|
|
14
|
+
timedOut,
|
|
15
|
+
closeSignal,
|
|
16
|
+
timeoutMs: BASH_DEFAULT_TIMEOUT_MS,
|
|
17
|
+
});
|
|
12
18
|
const truncationInfo = await prepareBashOutput(output, captureTruncated, getBashOutputPolicy({ mode: "user" }), options.backend);
|
|
13
19
|
const userMessageText = formatBashUserMessageText({
|
|
14
20
|
command: options.command,
|
|
15
21
|
truncationInfo,
|
|
16
|
-
exitCode,
|
|
22
|
+
exitCode: terminationNotice ? null : exitCode,
|
|
23
|
+
terminationNotice,
|
|
17
24
|
});
|
|
18
25
|
const presentation = buildBashPresentation({
|
|
19
26
|
toolName: TOOL_NAME_BASH,
|
|
@@ -22,6 +29,8 @@ export async function runDirectBashCommand(options) {
|
|
|
22
29
|
exitCode,
|
|
23
30
|
durationMs,
|
|
24
31
|
workingDirectory: options.workingDirectory,
|
|
32
|
+
includeExitCode: !terminationNotice,
|
|
33
|
+
terminationNotice,
|
|
25
34
|
actionLabel: options.actionLabel,
|
|
26
35
|
detailTruncation: {
|
|
27
36
|
maxLines: 33,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct_bash.js","sourceRoot":"","sources":["../../../src/core/session/direct_bash.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAA4B,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAmBxD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAmC;IAEnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"direct_bash.js","sourceRoot":"","sources":["../../../src/core/session/direct_bash.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAA4B,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAmBxD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAmC;IAEnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EACP,QAAQ,EACR,WAAW,GACZ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;QACjD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,uBAAuB;KACnC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;QACjD,OAAO;QACP,QAAQ;QACR,WAAW;QACX,SAAS,EAAE,uBAAuB;KACnC,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAC5C,MAAM,EACN,gBAAgB,EAChB,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EACrC,OAAO,CAAC,OAAO,CAChB,CAAC;IACF,MAAM,eAAe,GAAG,yBAAyB,CAAC;QAChD,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,cAAc;QACd,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;QAC7C,iBAAiB;KAClB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,qBAAqB,CAAC;QACzC,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,cAAc;QACd,QAAQ;QACR,UAAU;QACV,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,CAAC,iBAAiB;QACnC,iBAAiB;QACjB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,gBAAgB,EAAE;YAChB,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,wBAAwB;YACtC,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC,CAAC;IACH,MAAM,kBAAkB,GACtB,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW;QACzC,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC"}
|
|
@@ -63,20 +63,43 @@ A descriptor, digest, or snippet may provide enough context for a task. Use `his
|
|
|
63
63
|
```js
|
|
64
64
|
const text = (value) => {
|
|
65
65
|
if (typeof value === "string") return value;
|
|
66
|
+
if (typeof value === "number" || typeof value === "boolean") return String(value);
|
|
66
67
|
if (Array.isArray(value)) return value.map(text).filter(Boolean).join("\n");
|
|
67
68
|
if (value?.type === "text" && typeof value.text === "string") return value.text;
|
|
69
|
+
if (value?.type === "image") return `[image ${value.mimeType ?? "unknown"}]`;
|
|
70
|
+
if (value && typeof value === "object") {
|
|
71
|
+
return Object.entries(value)
|
|
72
|
+
.map(([key, item]) => {
|
|
73
|
+
const rendered = text(item);
|
|
74
|
+
return rendered ? `${key}: ${rendered}` : "";
|
|
75
|
+
})
|
|
76
|
+
.filter(Boolean)
|
|
77
|
+
.join("\n");
|
|
78
|
+
}
|
|
68
79
|
return "";
|
|
69
80
|
};
|
|
81
|
+
const excerpt = (value, max = 2_000) => {
|
|
82
|
+
const chars = [...text(value).trim()];
|
|
83
|
+
if (chars.length <= max) return chars.join("");
|
|
84
|
+
let kept = max;
|
|
85
|
+
let marker;
|
|
86
|
+
while (true) {
|
|
87
|
+
const omitted = chars.length - kept;
|
|
88
|
+
marker = `\n…${omitted} chars truncated…\n`;
|
|
89
|
+
const nextKept = Math.max(0, max - [...marker].length);
|
|
90
|
+
if (nextKept === kept) break;
|
|
91
|
+
kept = nextKept;
|
|
92
|
+
}
|
|
93
|
+
const head = Math.ceil(kept / 2);
|
|
94
|
+
return chars.slice(0, head).join("") + marker + chars.slice(-(kept - head)).join("");
|
|
95
|
+
};
|
|
70
96
|
|
|
71
97
|
const page = await history.read({ sessionId, limit: 25 });
|
|
72
98
|
for (const entry of page.entries) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
} else {
|
|
78
|
-
console.log(`[${entry.type}] ${text(entry.content)}`);
|
|
79
|
-
}
|
|
99
|
+
const label = entry.type === "tool" ? `tool ${entry.name}` : entry.type;
|
|
100
|
+
const detail = entry.type === "tool" ? "" : excerpt(entry.content);
|
|
101
|
+
if (entry.type !== "tool" && !detail) continue;
|
|
102
|
+
console.log(`[${label} id=…${entry.id.slice(-8)}]${detail ? `\n${detail}` : ""}`);
|
|
80
103
|
}
|
|
81
104
|
if (page.nextCursor) console.log("more transcript entries are available");
|
|
82
105
|
```
|
|
@@ -121,4 +144,56 @@ Entry timestamps are Unix milliseconds. The transcript is the active flat conver
|
|
|
121
144
|
|
|
122
145
|
## Output guidance
|
|
123
146
|
|
|
124
|
-
Print only information needed for the task. Prefer concise labeled text over serialized response objects, and explicitly select, project, and truncate fields when appropriate. Emit JSON only when the user explicitly requests JSON or another machine-readable result.
|
|
147
|
+
Print only information needed for the task. Prefer concise labeled text over serialized response objects, and explicitly select, project, and truncate fields when appropriate. Preserve useful line breaks. Middle-truncation markers report the number of omitted characters. Emit JSON only when the user explicitly requests JSON or another machine-readable result.
|
|
148
|
+
|
|
149
|
+
When the session is known but the relevant entry is not, one option is a bounded chronological overview followed by targeted inspection. A compact role or tool identity, an id suffix, and a short user or assistant excerpt can establish where to drill down without printing tool results. Each completed tool call and result appears once as its tool entry rather than being repeated in the preceding assistant content. Avoid repeated guessed-term searches and complete transcript dumps.
|
|
150
|
+
|
|
151
|
+
The snippets below are examples, not a required workflow or output format. Adapt, combine, or replace them with retrieval code suited to the task, and skip the overview when direct evidence already identifies an entry.
|
|
152
|
+
|
|
153
|
+
For example, project one bounded page without printing complete payloads:
|
|
154
|
+
|
|
155
|
+
```js
|
|
156
|
+
const sessionId = "selected-session-id";
|
|
157
|
+
const page = await history.read({ sessionId, limit: 100 });
|
|
158
|
+
for (const entry of page.entries) {
|
|
159
|
+
const label = entry.type === "tool" ? `tool ${entry.name}` : entry.type;
|
|
160
|
+
const reference = entry.type === "tool" ? entry.id : (entry.sourceIds[0] ?? entry.id);
|
|
161
|
+
const detail = entry.type === "tool" ? "" : excerpt(entry.content, 256);
|
|
162
|
+
if (entry.type !== "tool" && !detail) continue;
|
|
163
|
+
console.log(`[${label} id=…${reference.slice(-8)}]${detail ? `\n${detail}` : ""}`);
|
|
164
|
+
}
|
|
165
|
+
if (page.nextCursor) console.log(`more entries: continue with cursor ${page.nextCursor}`);
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Adjust the fields, bounds, page size, and pagination to the question. Compact suffixes can collide and are only navigation hints; use full ids when available.
|
|
169
|
+
|
|
170
|
+
After selecting references, scan transcript pages in code and print only matching entries instead of emitting every page:
|
|
171
|
+
|
|
172
|
+
```js
|
|
173
|
+
const sessionId = "selected-session-id";
|
|
174
|
+
const wantedSuffixes = ["12345678", "90abcdef"];
|
|
175
|
+
const found = new Set();
|
|
176
|
+
let cursor;
|
|
177
|
+
|
|
178
|
+
do {
|
|
179
|
+
const page = await history.read({ sessionId, limit: 100, cursor });
|
|
180
|
+
for (const entry of page.entries) {
|
|
181
|
+
const ids = [entry.id, ...entry.sourceIds];
|
|
182
|
+
const matches = wantedSuffixes.filter((suffix) =>
|
|
183
|
+
ids.some((id) => id.endsWith(suffix)),
|
|
184
|
+
);
|
|
185
|
+
if (matches.length === 0) continue;
|
|
186
|
+
|
|
187
|
+
for (const suffix of matches) found.add(suffix);
|
|
188
|
+
const label = entry.type === "tool" ? `tool ${entry.name} ${entry.outcome}` : entry.type;
|
|
189
|
+
const detail = entry.type === "tool" ? entry.result : entry.content;
|
|
190
|
+
console.log(`[${label} id=${entry.id}]\n${excerpt(detail, 2_000)}`);
|
|
191
|
+
}
|
|
192
|
+
cursor = page.nextCursor;
|
|
193
|
+
} while (cursor);
|
|
194
|
+
|
|
195
|
+
const missing = wantedSuffixes.filter((suffix) => !found.has(suffix));
|
|
196
|
+
if (missing.length > 0) console.log(`unmatched refs: ${missing.join(", ")}`);
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Both examples reuse the bounded `text` and `excerpt` helpers from the `history.read` example. The second remains bounded even after an entry is selected. Adapt the projection and bound to the evidence needed, and include tool arguments or a larger result excerpt only when they are relevant.
|
|
@@ -53,11 +53,13 @@ Because composite values are comma-delimited, a substring repository filter can
|
|
|
53
53
|
|
|
54
54
|
## Agent access is explicit and read-only
|
|
55
55
|
|
|
56
|
-
An eligible persona can expose the read-only `history` code-mode tool. It
|
|
56
|
+
An eligible persona can expose the read-only `history` code-mode tool. It searches and reads the configured history collection across repositories and execution environments. Because that collection has broad visibility, the tool description limits use to requests or active instructions that directly call for historical transcripts rather than speculative retrieval of possibly relevant earlier work.
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
Automatic compaction archives serve a different purpose. They capture the current session’s pre-compaction model context in the execution environment, while `history` queries a separate host-owned transcript collection that may be stale, truncated, unavailable, or remotely replicated. Compaction continuation guidance therefore directs recovery of removed current-session details to the supplied archive paths. History transcript entry ids are unrelated to archive lookup.
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
The tool progressively discloses its API documentation: its first call for a task prints `docs`, and a later call uses the documented API. This page does not duplicate those signatures or response limits. The documentation covers bounded chronological projections and targeted inspection for cases where a historical session is known but the relevant entry is not, avoiding repeated guessed searches and complete payload dumps.
|
|
61
|
+
|
|
62
|
+
Historical attributes, snippets, digests, entries, tool arguments, and tool results are untrusted data. The tool guidance treats them as evidence rather than instructions and limits output to material needed for the current request. Custom personas and subagents can include or exclude `history` through their tool configuration; see [tools](tools.md), [personas](personas.md), and [subagents](subagents.md).
|
|
61
63
|
|
|
62
64
|
Without remote history configuration, the tool searches this host's local SQLite collection. With a remote target configured, queries go to that service rather than merging remote and local results. A remote query outage can therefore fail even while local capture continues successfully.
|
|
63
65
|
|
|
@@ -109,7 +109,11 @@ Automatic compaction runs before a model subturn when fresh provider usage plus
|
|
|
109
109
|
|
|
110
110
|
The summary model may copy important original user messages verbatim into the summary. Recent retained messages stay available to the model, although unusually large textual tool and recovery results may be truncated in retained context. Tau records the compaction as a new active context segment.
|
|
111
111
|
|
|
112
|
-
Before replacing context, Tau makes a best-effort archive in the execution environment’s temporary directory. Each automatic compaction adds a numbered `.txt` and `.json` pair under a directory isolated by agent id. The text file
|
|
112
|
+
Before replacing context, Tau makes a best-effort archive in the execution environment’s temporary directory. Each automatic compaction adds a numbered `.txt` and `.json` pair under a directory isolated by agent id. The text file supports bounded search and truncates large tool results; the JSON file retains the archived content without those tool-result truncations, excluding assistant thinking. A private `README.md` in the same directory describes the formats and adaptable lookup examples. The continuation message includes all three exact paths when archiving succeeds.
|
|
113
|
+
|
|
114
|
+
These files recover details removed from the current session’s model context. The `history` tool instead queries a separate host-owned transcript collection, which may be remotely replicated, stale, truncated, or unavailable, and its transcript entry ids do not identify archive records. The continuation message identifies the execution-environment archive as the recovery source for compacted context.
|
|
115
|
+
|
|
116
|
+
The continuation also requires the archive guide to be present in model context before work resumes, even when no immediate lookup is planned. Its retrieval guidance favors bounded access by known entry id or distinctive evidence, with a concise chronological overview as an optional discovery step. Earlier numbered pairs can contain details that predate the current compaction. Tau does not generate or require a fixed overview projection.
|
|
113
117
|
|
|
114
118
|
These archives are temporary recovery aids, not backups. Archive failure does not block compaction, and execution-environment cleanup may remove them.
|
|
115
119
|
|
package/dist/core/tools/bash.js
CHANGED
|
@@ -5,6 +5,7 @@ import { z } from "zod";
|
|
|
5
5
|
import { formatCwd } from "../utils/format.js";
|
|
6
6
|
import { bytesToTokens, formatTokenEstimate } from "../utils/token.js";
|
|
7
7
|
import { formatBytes, TRUNCATION_MARKER, truncateForTokens, } from "../utils/truncate.js";
|
|
8
|
+
import { formatZodError } from "../utils/zod.js";
|
|
8
9
|
import { buildToolRunPresentation, formatToolDurationMs, } from "./presentation.js";
|
|
9
10
|
import { createTextToolOutcome, executeTool, } from "./registry.js";
|
|
10
11
|
import { TOOL_NAME_BASH } from "./tool_names.js";
|
|
@@ -145,8 +146,21 @@ export async function prepareBashOutput(output, captureTruncated, policy, backen
|
|
|
145
146
|
fullOutputPath,
|
|
146
147
|
};
|
|
147
148
|
}
|
|
148
|
-
function
|
|
149
|
-
|
|
149
|
+
export function getBashTerminationNotice(args) {
|
|
150
|
+
if (args.timedOut) {
|
|
151
|
+
return `Command timed out after ${args.timeoutMs}ms.`;
|
|
152
|
+
}
|
|
153
|
+
if (args.aborted) {
|
|
154
|
+
return "Command was cancelled.";
|
|
155
|
+
}
|
|
156
|
+
if (args.closeSignal) {
|
|
157
|
+
return `Command was terminated by signal ${args.closeSignal}.`;
|
|
158
|
+
}
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
function appendBashNotice(output, notice) {
|
|
162
|
+
const trimmedOutput = output.trimEnd();
|
|
163
|
+
return trimmedOutput ? `${trimmedOutput}\n\n[${notice}]` : notice;
|
|
150
164
|
}
|
|
151
165
|
export function formatBashToolResultText(args) {
|
|
152
166
|
const { truncationInfo, exitCode } = args;
|
|
@@ -156,28 +170,38 @@ export function formatBashToolResultText(args) {
|
|
|
156
170
|
const preview = model.content;
|
|
157
171
|
const totalTokenEstimate = bytesToTokens(model.totalBytes);
|
|
158
172
|
const gateNote = `\n\n[Output gated: This command already ran and any side effects have persisted. Full output estimate: ~${totalTokenEstimate} tokens.${formatBashOutputFileHint({ path: fullOutputPath })} If you need more output from this truncated result, either read the saved file or re-run with maxOutputTokens set to ${BASH_MODEL_DEFAULT_MAX_TOKENS}-${BASH_MODEL_MAX_AUTONOMOUS_TOKENS}. Only exceed ${BASH_MODEL_MAX_AUTONOMOUS_TOKENS} when the user explicitly requests more output, up to ${BASH_MAX_OUTPUT_TOKENS}. User requests are checked by the system, so do not exceed ${BASH_MODEL_MAX_AUTONOMOUS_TOKENS} autonomously.]`;
|
|
159
|
-
const
|
|
160
|
-
return
|
|
173
|
+
const resultText = `${preview}${gateNote}`;
|
|
174
|
+
return exitCode !== null && exitCode !== 0
|
|
175
|
+
? appendBashNotice(resultText, `Command failed with exit code ${exitCode}.`)
|
|
176
|
+
: resultText;
|
|
161
177
|
}
|
|
162
178
|
if (hasNoOutput && exitCode === 0) {
|
|
163
179
|
return "Command produced no output (exit 0)";
|
|
164
180
|
}
|
|
181
|
+
if (hasNoOutput && exitCode !== null) {
|
|
182
|
+
return `Command failed with exit code ${exitCode} and produced no output.`;
|
|
183
|
+
}
|
|
165
184
|
const outputForContext = model.content;
|
|
166
185
|
const truncNote = model.truncated || captureTruncated
|
|
167
186
|
? `\n\n[Output truncated for context: ${model.outputLines} lines / ${formatBytes(model.outputBytes)} shown of ${model.totalLines} lines / ${formatBytes(model.totalBytes)} (full output estimate: ~${bytesToTokens(model.totalBytes)} tokens).${formatBashOutputFileHint({ path: fullOutputPath })}]`
|
|
168
187
|
: "";
|
|
169
|
-
const
|
|
170
|
-
return
|
|
188
|
+
const resultText = `${outputForContext}${truncNote}`;
|
|
189
|
+
return exitCode !== null && exitCode !== 0
|
|
190
|
+
? appendBashNotice(resultText, `Command failed with exit code ${exitCode}.`)
|
|
191
|
+
: resultText;
|
|
171
192
|
}
|
|
172
193
|
export function formatBashUserMessageText(args) {
|
|
173
|
-
const { command, truncationInfo, exitCode } = args;
|
|
194
|
+
const { command, truncationInfo, exitCode, terminationNotice } = args;
|
|
174
195
|
const { model, captureTruncated, fullOutputPath } = truncationInfo;
|
|
175
|
-
const outputForContext = model.content.trimEnd() || "(no output)";
|
|
196
|
+
const outputForContext = model.content.trimEnd() || (terminationNotice ? "" : "(no output)");
|
|
176
197
|
const truncNote = model.truncated || captureTruncated
|
|
177
198
|
? `\n\n[Output truncated for context: ${model.outputLines} lines / ${formatBytes(model.outputBytes)} shown of ${model.totalLines} lines / ${formatBytes(model.totalBytes)} (full output estimate: ~${bytesToTokens(model.totalBytes)} tokens).${formatBashOutputFileHint({ path: fullOutputPath })}]`
|
|
178
199
|
: "";
|
|
179
|
-
const
|
|
180
|
-
const
|
|
200
|
+
const resultText = `${outputForContext}${truncNote}`;
|
|
201
|
+
const resultWithStatus = terminationNotice
|
|
202
|
+
? appendBashNotice(resultText, terminationNotice)
|
|
203
|
+
: `${resultText}${exitCode !== null && exitCode !== 0 ? `\n(exit ${exitCode})` : ""}`;
|
|
204
|
+
const bashContextText = `$ ${command}\n${resultWithStatus}`;
|
|
181
205
|
return `Bash command output:\n${bashContextText}`;
|
|
182
206
|
}
|
|
183
207
|
export function buildBashPresentation(args) {
|
|
@@ -187,6 +211,9 @@ export function buildBashPresentation(args) {
|
|
|
187
211
|
const details = detailText
|
|
188
212
|
? detailText.split("\n").map((text) => ({ text, wrap: "character" }))
|
|
189
213
|
: [];
|
|
214
|
+
if (args.terminationNotice) {
|
|
215
|
+
details.push({ text: `[${args.terminationNotice}]`, wrap: "word" });
|
|
216
|
+
}
|
|
190
217
|
const outputLines = model.outputLines;
|
|
191
218
|
const outputBytes = model.outputBytes;
|
|
192
219
|
const hasOutput = outputBytes > 0;
|
|
@@ -232,15 +259,10 @@ function resolveBashWorkingDirectory(args) {
|
|
|
232
259
|
}
|
|
233
260
|
const bashArgsSchema = z
|
|
234
261
|
.object({
|
|
235
|
-
command: z.string()
|
|
236
|
-
workingDirectory: z
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
.min(1)
|
|
240
|
-
.refine((path) => !/[\r\n]/.test(path), "Working directory must be a single line.")
|
|
241
|
-
.optional(),
|
|
242
|
-
timeout: z.number().positive().optional(),
|
|
243
|
-
maxOutputTokens: z.number().int().positive().optional(),
|
|
262
|
+
command: z.string(),
|
|
263
|
+
workingDirectory: z.string().optional(),
|
|
264
|
+
timeout: z.number().optional(),
|
|
265
|
+
maxOutputTokens: z.number().int().optional(),
|
|
244
266
|
})
|
|
245
267
|
.strict();
|
|
246
268
|
function parseBashArgs(raw) {
|
|
@@ -253,19 +275,52 @@ function parseBashArgs(raw) {
|
|
|
253
275
|
if (!parsed.success) {
|
|
254
276
|
return {
|
|
255
277
|
ok: false,
|
|
256
|
-
error: parsed.error
|
|
278
|
+
error: formatZodError(parsed.error),
|
|
279
|
+
commandForDisplay,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
const command = parsed.data.command.trim();
|
|
283
|
+
if (!command) {
|
|
284
|
+
return { ok: false, error: "command must not be empty.", commandForDisplay };
|
|
285
|
+
}
|
|
286
|
+
const workingDirectory = parsed.data.workingDirectory?.trim();
|
|
287
|
+
if (parsed.data.workingDirectory !== undefined && !workingDirectory) {
|
|
288
|
+
return { ok: false, error: "workingDirectory must not be empty.", commandForDisplay };
|
|
289
|
+
}
|
|
290
|
+
if (workingDirectory && /[\r\n]/.test(workingDirectory)) {
|
|
291
|
+
return {
|
|
292
|
+
ok: false,
|
|
293
|
+
error: "workingDirectory must be a single line.",
|
|
294
|
+
commandForDisplay,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
if (parsed.data.timeout !== undefined && parsed.data.timeout <= 0) {
|
|
298
|
+
return { ok: false, error: "timeout must be greater than 0.", commandForDisplay };
|
|
299
|
+
}
|
|
300
|
+
if (parsed.data.maxOutputTokens !== undefined && parsed.data.maxOutputTokens <= 0) {
|
|
301
|
+
return {
|
|
302
|
+
ok: false,
|
|
303
|
+
error: "maxOutputTokens must be greater than 0.",
|
|
304
|
+
commandForDisplay,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
if (parsed.data.maxOutputTokens !== undefined &&
|
|
308
|
+
parsed.data.maxOutputTokens > BASH_MAX_OUTPUT_TOKENS) {
|
|
309
|
+
return {
|
|
310
|
+
ok: false,
|
|
311
|
+
error: `maxOutputTokens must not exceed ${BASH_MAX_OUTPUT_TOKENS}.`,
|
|
257
312
|
commandForDisplay,
|
|
258
313
|
};
|
|
259
314
|
}
|
|
260
315
|
return {
|
|
261
316
|
ok: true,
|
|
262
317
|
data: {
|
|
263
|
-
command
|
|
264
|
-
workingDirectory
|
|
318
|
+
command,
|
|
319
|
+
workingDirectory,
|
|
265
320
|
timeout: parsed.data.timeout,
|
|
266
321
|
maxOutputTokens: clampOutputTokens(parsed.data.maxOutputTokens),
|
|
267
322
|
hasMaxOutputTokens,
|
|
268
|
-
commandForDisplay:
|
|
323
|
+
commandForDisplay: command,
|
|
269
324
|
},
|
|
270
325
|
};
|
|
271
326
|
}
|
|
@@ -301,8 +356,8 @@ export function createBashToolDefinition(backend, cwd) {
|
|
|
301
356
|
contextCwd: cwd,
|
|
302
357
|
workingDirectory: parsedArgs.ok ? parsedArgs.data.workingDirectory : undefined,
|
|
303
358
|
});
|
|
304
|
-
const blocked = (reason) => {
|
|
305
|
-
const outcome = createTextToolOutcome(reason,
|
|
359
|
+
const blocked = (reason, semanticOutcome = "blocked") => {
|
|
360
|
+
const outcome = createTextToolOutcome(reason, semanticOutcome);
|
|
306
361
|
const uiEvent = {
|
|
307
362
|
type: "bash_blocked",
|
|
308
363
|
toolCallId: toolCall.id,
|
|
@@ -324,23 +379,33 @@ export function createBashToolDefinition(backend, cwd) {
|
|
|
324
379
|
return executeTool(context, async () => {
|
|
325
380
|
try {
|
|
326
381
|
const startedAt = Date.now();
|
|
327
|
-
const
|
|
382
|
+
const effectiveTimeoutMs = timeout ?? BASH_DEFAULT_TIMEOUT_MS;
|
|
383
|
+
const { output, exitCode, truncated: captureTruncated, aborted, timedOut, closeSignal, } = await backend.runBash(command, {
|
|
328
384
|
signal,
|
|
329
|
-
timeoutMs:
|
|
385
|
+
timeoutMs: effectiveTimeoutMs,
|
|
330
386
|
cwd: effectiveWorkingDirectory,
|
|
331
387
|
});
|
|
332
388
|
const durationMs = Math.max(0, Date.now() - startedAt);
|
|
389
|
+
const terminationNotice = getBashTerminationNotice({
|
|
390
|
+
aborted,
|
|
391
|
+
timedOut,
|
|
392
|
+
closeSignal,
|
|
393
|
+
timeoutMs: effectiveTimeoutMs,
|
|
394
|
+
});
|
|
333
395
|
const outputPolicy = getBashOutputPolicy({
|
|
334
396
|
mode: "model",
|
|
335
397
|
maxOutputTokens,
|
|
336
398
|
hasMaxOutputTokens,
|
|
337
399
|
});
|
|
338
|
-
const truncationInfo = await prepareBashOutput(
|
|
339
|
-
const resultText = formatBashToolResultText({
|
|
340
|
-
|
|
341
|
-
?
|
|
400
|
+
const truncationInfo = await prepareBashOutput(output, captureTruncated, outputPolicy, backend);
|
|
401
|
+
const resultText = formatBashToolResultText({
|
|
402
|
+
truncationInfo,
|
|
403
|
+
exitCode: terminationNotice ? null : exitCode,
|
|
404
|
+
});
|
|
405
|
+
const toolText = terminationNotice
|
|
406
|
+
? appendBashNotice(resultText, terminationNotice)
|
|
342
407
|
: resultText;
|
|
343
|
-
const isError = exitCode === null || exitCode !== 0;
|
|
408
|
+
const isError = terminationNotice !== undefined || exitCode === null || exitCode !== 0;
|
|
344
409
|
const presentation = buildBashPresentation({
|
|
345
410
|
toolName: TOOL_NAME_BASH,
|
|
346
411
|
subject: command,
|
|
@@ -348,7 +413,8 @@ export function createBashToolDefinition(backend, cwd) {
|
|
|
348
413
|
exitCode,
|
|
349
414
|
durationMs,
|
|
350
415
|
workingDirectory: effectiveWorkingDirectory,
|
|
351
|
-
includeExitCode: !
|
|
416
|
+
includeExitCode: !terminationNotice,
|
|
417
|
+
terminationNotice,
|
|
352
418
|
});
|
|
353
419
|
const outcome = createTextToolOutcome(toolText, aborted || timedOut ? "cancelled" : isError ? "failed" : "succeeded");
|
|
354
420
|
const uiEvent = {
|
|
@@ -361,21 +427,8 @@ export function createBashToolDefinition(backend, cwd) {
|
|
|
361
427
|
return { content: outcome.content, outcome: outcome.outcome, uiEvent };
|
|
362
428
|
}
|
|
363
429
|
catch (e) {
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
const uiEvent = {
|
|
367
|
-
type: "bash_blocked",
|
|
368
|
-
command: commandForDisplay,
|
|
369
|
-
presentation: buildToolRunPresentation({
|
|
370
|
-
toolName: TOOL_NAME_BASH,
|
|
371
|
-
subject: commandForDisplay,
|
|
372
|
-
details: [{ text: msg }],
|
|
373
|
-
metadata: [formatCwd(effectiveWorkingDirectory)],
|
|
374
|
-
}),
|
|
375
|
-
reason: msg,
|
|
376
|
-
toolCallId: toolCall.id,
|
|
377
|
-
};
|
|
378
|
-
return { content: outcome.content, outcome: outcome.outcome, uiEvent };
|
|
430
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
431
|
+
return blocked(`Could not execute command: ${errorMessage}`, "failed");
|
|
379
432
|
}
|
|
380
433
|
}, {
|
|
381
434
|
type: "bash_started",
|