"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.COMPACTION_SUMMARY_SUFFIX = exports.COMPACTION_SUMMARY_PREFIX = exports.BRANCH_SUMMARY_SUFFIX = exports.BRANCH_SUMMARY_PREFIX = void 0;exports.bashExecutionToText = bashExecutionToText;exports.convertToLlm = convertToLlm;exports.createBranchSummaryMessage = createBranchSummaryMessage;exports.createCompactionSummaryMessage = createCompactionSummaryMessage;exports.createCustomMessage = createCustomMessage; /** * Custom message types and transformers for the coding agent. * * Extends the base AgentMessage type with coding-agent specific message types, * and provides a transformer to convert them to LLM-compatible messages. */ const COMPACTION_SUMMARY_PREFIX = exports.COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary: `; const COMPACTION_SUMMARY_SUFFIX = exports.COMPACTION_SUMMARY_SUFFIX = ` `; const BRANCH_SUMMARY_PREFIX = exports.BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from: `; const BRANCH_SUMMARY_SUFFIX = exports.BRANCH_SUMMARY_SUFFIX = ``; /** * Convert a BashExecutionMessage to user message text for LLM context. */ function bashExecutionToText(msg) { let text = `Ran \`${msg.command}\`\n`; if (msg.output) { text += `\`\`\`\n${msg.output}\n\`\`\``; } else { text += "(no output)"; } if (msg.cancelled) { text += "\n\n(command cancelled)"; } else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) { text += `\n\nCommand exited with code ${msg.exitCode}`; } if (msg.truncated && msg.fullOutputPath) { text += `\n\n[Output truncated. Full output: ${msg.fullOutputPath}]`; } return text; } function createBranchSummaryMessage(summary, fromId, timestamp) { return { role: "branchSummary", summary, fromId, timestamp: new Date(timestamp).getTime() }; } function createCompactionSummaryMessage(summary, tokensBefore, timestamp) { return { role: "compactionSummary", summary: summary, tokensBefore, timestamp: new Date(timestamp).getTime() }; } /** Convert CustomMessageEntry to AgentMessage format */ function createCustomMessage(customType, content, display, details, timestamp) { return { role: "custom", customType, content, display, details, timestamp: new Date(timestamp).getTime() }; } /** * Transform AgentMessages (including custom types) to LLM-compatible Messages. * * This is used by: * - Agent's transormToLlm option (for prompt calls and queued messages) * - Compaction's generateSummary (for summarization) * - Custom extensions and tools */ function convertToLlm(messages) { return messages. map((m) => { switch (m.role) { case "bashExecution": // Skip messages excluded from context (!! prefix) if (m.excludeFromContext) { return undefined; } return { role: "user", content: [{ type: "text", text: bashExecutionToText(m) }], timestamp: m.timestamp }; case "custom":{ const content = typeof m.content === "string" ? [{ type: "text", text: m.content }] : m.content; return { role: "user", content, timestamp: m.timestamp }; } case "branchSummary": return { role: "user", content: [{ type: "text", text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }], timestamp: m.timestamp }; case "compactionSummary": return { role: "user", content: [ { type: "text", text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX }], timestamp: m.timestamp }; case "user": case "assistant": case "toolResult": return m; default: // biome-ignore lint/correctness/noSwitchDeclarations: fine const _exhaustiveCheck = m; return undefined; } }). filter((m) => m !== undefined); } /* v9-3f1ca4b819f9aef7 */