@letta-ai/letta-code 0.32.2 → 0.32.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/channels-public.js +32 -2
- package/dist/channels-public.js.map +3 -3
- package/dist/channels-slack.js +52 -2
- package/dist/channels-slack.js.map +4 -4
- package/dist/gateway-core.js +89 -31
- package/dist/gateway-core.js.map +6 -5
- package/dist/mcp-client.js +2 -2
- package/dist/mcp-client.js.map +1 -1
- package/dist/types/agent/skills.d.ts.map +1 -1
- package/dist/types/agent/subagents/context-budget.d.ts +2 -0
- package/dist/types/agent/subagents/context-budget.d.ts.map +1 -1
- package/dist/types/agent/subagents/manager.d.ts +2 -2
- package/dist/types/agent/subagents/manager.d.ts.map +1 -1
- package/dist/types/agent/subagents/subagent-launcher.d.ts +8 -0
- package/dist/types/agent/subagents/subagent-launcher.d.ts.map +1 -1
- package/dist/types/backend/api/agent-message.d.ts +22 -0
- package/dist/types/backend/api/agent-message.d.ts.map +1 -0
- package/dist/types/backend/api/conversation-enqueue.d.ts +60 -0
- package/dist/types/backend/api/conversation-enqueue.d.ts.map +1 -0
- package/dist/types/channels/gateway-core.d.ts +2 -0
- package/dist/types/channels/gateway-core.d.ts.map +1 -1
- package/dist/types/channels/gateway-sources.d.ts +6 -0
- package/dist/types/channels/gateway-sources.d.ts.map +1 -0
- package/dist/types/channels/progress-builder.d.ts +1 -1
- package/dist/types/channels/progress-builder.d.ts.map +1 -1
- package/dist/types/channels/progress-types.d.ts +28 -0
- package/dist/types/channels/progress-types.d.ts.map +1 -0
- package/dist/types/channels/slack/progress.d.ts.map +1 -1
- package/dist/types/channels/slack/status-controller.d.ts +2 -1
- package/dist/types/channels/slack/status-controller.d.ts.map +1 -1
- package/dist/types/channels/types.d.ts +6 -23
- package/dist/types/channels/types.d.ts.map +1 -1
- package/dist/types/permissions/agent-memory-prefixes.d.ts +3 -0
- package/dist/types/permissions/agent-memory-prefixes.d.ts.map +1 -0
- package/dist/types/permissions/cli.d.ts.map +1 -1
- package/dist/types/permissions/cross-agent-guard.d.ts.map +1 -1
- package/dist/types/permissions/read-only-letta.d.ts +2 -0
- package/dist/types/permissions/read-only-letta.d.ts.map +1 -0
- package/dist/types/permissions/read-only-shell.d.ts.map +1 -1
- package/dist/types/runtime-context.d.ts +2 -0
- package/dist/types/runtime-context.d.ts.map +1 -1
- package/dist/types/runtime-execution-settings.d.ts +16 -0
- package/dist/types/runtime-execution-settings.d.ts.map +1 -0
- package/dist/types/telemetry/channel.d.ts +7 -0
- package/dist/types/telemetry/channel.d.ts.map +1 -0
- package/dist/types/telemetry/index.d.ts +4 -1
- package/dist/types/telemetry/index.d.ts.map +1 -1
- package/dist/types/tools/impl/bash.d.ts.map +1 -1
- package/dist/types/tools/impl/exec-command.d.ts.map +1 -1
- package/dist/types/tools/impl/kill-bash.d.ts +1 -0
- package/dist/types/tools/impl/kill-bash.d.ts.map +1 -1
- package/dist/types/tools/impl/monitor.d.ts +1 -0
- package/dist/types/tools/impl/monitor.d.ts.map +1 -1
- package/dist/types/tools/impl/send-agent-message.d.ts +19 -0
- package/dist/types/tools/impl/send-agent-message.d.ts.map +1 -0
- package/dist/types/tools/impl/shell-env.d.ts.map +1 -1
- package/dist/types/tools/impl/skill.d.ts.map +1 -1
- package/dist/types/tools/letta-toolset.d.ts.map +1 -1
- package/dist/types/tools/manager.d.ts +0 -5
- package/dist/types/tools/manager.d.ts.map +1 -1
- package/dist/types/tools/tool-definitions.d.ts +1 -0
- package/dist/types/tools/tool-definitions.d.ts.map +1 -1
- package/dist/types/tools/tool-permissions.d.ts.map +1 -1
- package/dist/types/tools/toolset-defaults.d.ts +9 -0
- package/dist/types/tools/toolset-defaults.d.ts.map +1 -0
- package/dist/types/tools/toolset.d.ts +1 -0
- package/dist/types/tools/toolset.d.ts.map +1 -1
- package/dist/types/types/protocol_v2.d.ts +4 -51
- package/dist/types/types/protocol_v2.d.ts.map +1 -1
- package/dist/types/types/runtime-start-protocol.d.ts +58 -2
- package/dist/types/types/runtime-start-protocol.d.ts.map +1 -1
- package/dist/types/utils/subagent-launch-marker.d.ts +6 -0
- package/dist/types/utils/subagent-launch-marker.d.ts.map +1 -0
- package/dist/types/utils/task-notifications.d.ts +3 -1
- package/dist/types/utils/task-notifications.d.ts.map +1 -1
- package/dist/types/websocket/listener/runtime.d.ts.map +1 -1
- package/dist/types/websocket/listener/types.d.ts +2 -0
- package/dist/types/websocket/listener/types.d.ts.map +1 -1
- package/letta.js +2723 -1729
- package/package.json +1 -1
- package/scripts/source-file-size-baseline.json +8 -8
- package/skills/context-doctor/SKILL.md +72 -129
- package/skills/context-doctor/references/auditing-memory.md +72 -0
- package/skills/context-doctor/references/investigating-behavior.md +161 -0
- package/skills/image-generation/SKILL.md +5 -4
- package/skills/messaging-agents/SKILL.md +184 -159
- package/skills/working-across-computers/SKILL.md +90 -0
- package/skills/working-across-computers/assets/allow-remote-access-from-desktop.png +0 -0
- package/skills/working-across-computers/references/connect-a-computer-for-remote-access.md +59 -0
- package/skills/context-doctor/ROOT_MEMORY.md +0 -137
- package/skills/teleporting-between-environments/SKILL.md +0 -114
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ Letta Code can be used interactively, or to power always-on agents that work pro
|
|
|
19
19
|
|
|
20
20
|
| Feature | Description |
|
|
21
21
|
|---|---|
|
|
22
|
-
| [Self-improvement & Learning](https://docs.letta.com/letta-code/memory) | Agents programmatically rewrite their context to improve and adapt over time, including system prompt learning (through [memory blocks](https://www.letta.com/blog/memory-blocks)) and [skill learning](https://www.letta.com/blog/skill-learning). Configure periodic dreaming with `/sleeptime`,
|
|
22
|
+
| [Self-improvement & Learning](https://docs.letta.com/letta-code/memory) | Agents programmatically rewrite their context to improve and adapt over time, including system prompt learning (through [memory blocks](https://www.letta.com/blog/memory-blocks)) and [skill learning](https://www.letta.com/blog/skill-learning). Configure periodic dreaming with `/sleeptime`, investigate agent behavior with `/doctor [symptom]`, and view memory with `/palace` |
|
|
23
23
|
| [Message search](https://docs.letta.com/letta-code/slash-commands) | Search across all messages and agents with `/search`. Agent can also search their own conversations or the conversations of other agents |
|
|
24
24
|
| [MemFS](https://docs.letta.com/letta-code/memfs) | All context (including memory blocks) is tracked via git. Sync context to a custom GitHub repository by setting `/memory-repository set git@github.com:...` |
|
|
25
25
|
| [Skills](https://docs.letta.com/letta-code/skills) | Loads global skills (`~/.letta`), project-scoped skills (`.agents/skills`), and agent-scoped skills (stored in MemFS). View skills with `/skills` and create with `/skill-creator` |
|
package/dist/channels-public.js
CHANGED
|
@@ -1586,6 +1586,34 @@ function toolNameForMessage(summary) {
|
|
|
1586
1586
|
function createChannelTurnProgressBuilder(options = {}) {
|
|
1587
1587
|
const argumentsByToolCallId = new Map;
|
|
1588
1588
|
const namesByToolCallId = new Map;
|
|
1589
|
+
const batchesByStep = new Map;
|
|
1590
|
+
const batchesByToolCallId = new Map;
|
|
1591
|
+
function addToolBatchTitles(delta, updates) {
|
|
1592
|
+
const record = asRecord(delta);
|
|
1593
|
+
if (!record)
|
|
1594
|
+
return updates;
|
|
1595
|
+
const messageType = getMessageType(record);
|
|
1596
|
+
const isToolRequest = messageType === "tool_call_message" || messageType === "approval_request_message";
|
|
1597
|
+
const stepKey = isToolRequest ? firstNonEmptyString(record.step_id, record.id) : undefined;
|
|
1598
|
+
let requestBatch = stepKey ? batchesByStep.get(stepKey) : undefined;
|
|
1599
|
+
if (stepKey && !requestBatch) {
|
|
1600
|
+
requestBatch = { title: null };
|
|
1601
|
+
batchesByStep.set(stepKey, requestBatch);
|
|
1602
|
+
}
|
|
1603
|
+
return updates.map((update) => {
|
|
1604
|
+
if (update.kind !== "tool")
|
|
1605
|
+
return update;
|
|
1606
|
+
const batch = (update.toolCallId ? batchesByToolCallId.get(update.toolCallId) : undefined) ?? requestBatch;
|
|
1607
|
+
if (!batch)
|
|
1608
|
+
return update;
|
|
1609
|
+
if (update.toolCallId)
|
|
1610
|
+
batchesByToolCallId.set(update.toolCallId, batch);
|
|
1611
|
+
if (batch.title === null && update.state === "started") {
|
|
1612
|
+
batch.title = firstNonEmptyString(update.toolTitle, update.toolDetails) ?? null;
|
|
1613
|
+
}
|
|
1614
|
+
return { ...update, toolBatchTitle: batch.title };
|
|
1615
|
+
});
|
|
1616
|
+
}
|
|
1589
1617
|
function extractToolCallSummary(value) {
|
|
1590
1618
|
const record = asRecord(value);
|
|
1591
1619
|
if (!record) {
|
|
@@ -1902,7 +1930,9 @@ function createChannelTurnProgressBuilder(options = {}) {
|
|
|
1902
1930
|
return [];
|
|
1903
1931
|
}
|
|
1904
1932
|
}
|
|
1905
|
-
return {
|
|
1933
|
+
return {
|
|
1934
|
+
buildUpdates: (delta) => addToolBatchTitles(delta, buildUpdates(delta))
|
|
1935
|
+
};
|
|
1906
1936
|
}
|
|
1907
1937
|
// src/channels/route-thread-key.ts
|
|
1908
1938
|
var CHANNEL_ROOT_THREAD_KEY = "__root__";
|
|
@@ -1959,4 +1989,4 @@ export {
|
|
|
1959
1989
|
CHANNEL_LIFECYCLE_FALLBACK_ERROR_MESSAGE
|
|
1960
1990
|
};
|
|
1961
1991
|
|
|
1962
|
-
//# debugId=
|
|
1992
|
+
//# debugId=DBFBC822A4AE0EB164756E2164756E21
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
"/**\n * XML formatting for channel notifications.\n *\n * Produces structured XML that the agent receives as message content.\n * Follows the same escaping patterns used in taskNotifications.ts.\n */\n\nimport type { MessageCreate } from \"@letta-ai/letta-client/resources/agents/agents\";\nimport type { ChannelUserMention } from \"@/channels/message-references\";\nimport { SYSTEM_REMINDER_CLOSE, SYSTEM_REMINDER_OPEN } from \"@/constants\";\nimport type {\n ChannelMessageAttachment,\n ChannelThreadContextEntry,\n InboundChannelMessage,\n} from \"./types\";\n\n/**\n * Escape XML text-node content without over-escaping quotes that should remain\n * readable inside the rendered message body.\n */\nfunction escapeXmlText(text: string): string {\n return text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\");\n}\n\n/**\n * Escape XML attribute values, including quotes.\n */\nfunction escapeXmlAttribute(text: string): string {\n return escapeXmlText(text).replace(/\"/g, \""\").replace(/'/g, \"'\");\n}\n\nfunction sanitizeMentionDisplayName(mention: ChannelUserMention): string {\n const name = mention.displayName\n .replace(/[\\p{Cc}\\p{Cf}\\p{Zl}\\p{Zp}]+/gu, \" \")\n .replace(/\\s+/gu, \" \")\n .trim()\n .slice(0, 80)\n .trim();\n return name || mention.userId;\n}\n\nfunction buildTextWithUserMentions(\n text: string,\n mentions: ChannelUserMention[] | undefined,\n): string {\n if (!mentions || mentions.length === 0) return escapeXmlText(text);\n let cursor = 0;\n const parts: string[] = [];\n for (const mention of mentions) {\n if (\n !Number.isInteger(mention.start) ||\n !Number.isInteger(mention.end) ||\n mention.start < cursor ||\n mention.end <= mention.start ||\n mention.end > text.length ||\n !mention.userId.trim()\n ) {\n return escapeXmlText(text);\n }\n parts.push(escapeXmlText(text.slice(cursor, mention.start)));\n const displayName = sanitizeMentionDisplayName(mention);\n parts.push(\n `<mention id=\"${escapeXmlAttribute(mention.userId)}\">@${escapeXmlText(displayName)}</mention>`,\n );\n cursor = mention.end;\n }\n parts.push(escapeXmlText(text.slice(cursor)));\n return parts.join(\"\");\n}\n\nfunction formatMebibytes(bytes: number): string {\n const mebibytes = bytes / (1024 * 1024);\n const rounded =\n mebibytes >= 100 ? Math.round(mebibytes).toString() : mebibytes.toFixed(1);\n return `${rounded.replace(/\\.0$/, \"\")} MiB`;\n}\n\nfunction hasNotificationAttachmentPaths(msg: InboundChannelMessage): boolean {\n if (msg.attachments?.some((attachment) => attachment.localPath)) {\n return true;\n }\n if (\n msg.threadContext?.starter?.attachments?.some(\n (attachment) => attachment.localPath,\n )\n ) {\n return true;\n }\n return Boolean(\n msg.threadContext?.history?.some((entry) =>\n entry.attachments?.some((attachment) => attachment.localPath),\n ),\n );\n}\n\nfunction buildChannelAttachmentReminderText(\n msg: InboundChannelMessage,\n): string | undefined {\n if (!hasNotificationAttachmentPaths(msg)) return undefined;\n return [\n SYSTEM_REMINDER_OPEN,\n \"If this notification includes attachment local_path values, you may be able to inspect those files using local file or image tools available in your current toolset (for example Read or ViewImage), using the local_path.\",\n SYSTEM_REMINDER_CLOSE,\n ].join(\"\\n\");\n}\n\ntype AttachmentXmlContext = {\n channel: string;\n accountId?: string;\n chatId: string;\n messageId?: string;\n};\n\nfunction buildAttachmentXml(\n attachment: ChannelMessageAttachment,\n context: AttachmentXmlContext,\n): string {\n const attrs = [`kind=\"${escapeXmlAttribute(attachment.kind)}\"`];\n\n if (attachment.localPath) {\n attrs.push(`local_path=\"${escapeXmlAttribute(attachment.localPath)}\"`);\n } else {\n attrs.push('download_status=\"not_downloaded\"');\n }\n\n if (attachment.id) {\n attrs.push(`attachment_id=\"${escapeXmlAttribute(attachment.id)}\"`);\n }\n if (attachment.name) {\n attrs.push(`name=\"${escapeXmlAttribute(attachment.name)}\"`);\n }\n if (attachment.mimeType) {\n attrs.push(`mime_type=\"${escapeXmlAttribute(attachment.mimeType)}\"`);\n }\n if (typeof attachment.sizeBytes === \"number\") {\n attrs.push(`size_bytes=\"${attachment.sizeBytes}\"`);\n }\n const sourceMessageId = attachment.sourceMessageId ?? context.messageId;\n if (!attachment.localPath && sourceMessageId) {\n attrs.push(`source_message_id=\"${escapeXmlAttribute(sourceMessageId)}\"`);\n }\n if (!attachment.localPath && attachment.sourceThreadId) {\n attrs.push(\n `source_thread_id=\"${escapeXmlAttribute(attachment.sourceThreadId)}\"`,\n );\n }\n if (attachment.downloadReason) {\n attrs.push(\n `download_reason=\"${escapeXmlAttribute(attachment.downloadReason)}\"`,\n );\n }\n if (typeof attachment.autoDownloadLimitBytes === \"number\") {\n attrs.push(\n `auto_download_limit_bytes=\"${attachment.autoDownloadLimitBytes}\"`,\n );\n }\n\n const children: string[] = [];\n if (attachment.transcription) {\n children.push(\n `<attempted_transcription>${escapeXmlText(attachment.transcription)}</attempted_transcription>`,\n );\n }\n if (attachment.transcriptionError) {\n children.push(\n `<attempted_transcription_error>${escapeXmlText(attachment.transcriptionError)}</attempted_transcription_error>`,\n );\n }\n if (\n !attachment.localPath &&\n context.channel === \"slack\" &&\n attachment.id &&\n sourceMessageId\n ) {\n const accountArg = context.accountId\n ? `, accountId=\"${escapeXmlAttribute(context.accountId)}\"`\n : \"\";\n const threadArg = attachment.sourceThreadId\n ? `, threadId=\"${escapeXmlAttribute(attachment.sourceThreadId)}\"`\n : \"\";\n const action = `MessageChannel with action=\"download-file\", channel=\"slack\", chat_id=\"${escapeXmlAttribute(context.chatId)}\"${accountArg}${threadArg}, attachmentId=\"${escapeXmlAttribute(attachment.id)}\", and messageId=\"${escapeXmlAttribute(sourceMessageId)}\"`;\n if (attachment.downloadReason === \"exceeds_auto_download_limit\") {\n const sizeNote =\n typeof attachment.sizeBytes === \"number\"\n ? `This file is ${formatMebibytes(attachment.sizeBytes)}${\n typeof attachment.autoDownloadLimitBytes === \"number\"\n ? `, above the ${formatMebibytes(attachment.autoDownloadLimitBytes)} automatic download limit`\n : \"\"\n }. `\n : \"\";\n children.push(\n `<download-instruction>${sizeNote}Call ${action}. The tool downloads the file into the same Slack inbound attachment directory and returns its local_path. Large downloads return a task_id instead of blocking; wait for the local_path with TaskOutput (block: true, timeout: 600000). Do not ask the sender to reattach it.</download-instruction>`,\n );\n } else {\n children.push(\n `<download-retry>Automatic download did not complete. Call ${action} to retry. The action may return a precise error if Slack still cannot provide the file.</download-retry>`,\n );\n }\n }\n\n if (children.length > 0) {\n return `<attachment ${attrs.join(\" \")}>\\n ${children.join(\"\\n \")}\\n</attachment>`;\n }\n\n return `<attachment ${attrs.join(\" \")} />`;\n}\n\nfunction canEmitInlineImageContentPart(mimeType: string): boolean {\n const normalized = mimeType.split(\";\")[0]?.trim().toLowerCase();\n return (\n !!normalized &&\n normalized.startsWith(\"image/\") &&\n normalized !== \"image/svg+xml\"\n );\n}\n\nfunction buildReactionXml(msg: InboundChannelMessage): string | null {\n if (!msg.reaction) {\n return null;\n }\n\n const attrs = [\n `action=\"${escapeXmlAttribute(msg.reaction.action)}\"`,\n `emoji=\"${escapeXmlAttribute(msg.reaction.emoji)}\"`,\n `target_message_id=\"${escapeXmlAttribute(msg.reaction.targetMessageId)}\"`,\n ];\n\n if (msg.reaction.targetSenderId) {\n attrs.push(\n `target_sender_id=\"${escapeXmlAttribute(msg.reaction.targetSenderId)}\"`,\n );\n }\n\n return `<reaction ${attrs.join(\" \")} />`;\n}\n\nfunction buildReplyContextXml(msg: InboundChannelMessage): string | null {\n const replyContext = msg.replyContext;\n if (!replyContext) {\n return null;\n }\n\n const attrs: string[] = [];\n if (replyContext.messageId) {\n attrs.push(`message_id=\"${escapeXmlAttribute(replyContext.messageId)}\"`);\n }\n if (replyContext.senderId) {\n attrs.push(`sender_id=\"${escapeXmlAttribute(replyContext.senderId)}\"`);\n }\n if (replyContext.senderName) {\n attrs.push(`sender_name=\"${escapeXmlAttribute(replyContext.senderName)}\"`);\n }\n\n const attrString = attrs.length > 0 ? ` ${attrs.join(\" \")}` : \"\";\n if (replyContext.text?.trim()) {\n const text = buildTextWithUserMentions(\n replyContext.text,\n replyContext.userMentions,\n );\n return `<reply-context${attrString}>\\n${text}\\n</reply-context>`;\n }\n return `<reply-context${attrString} />`;\n}\n\nfunction buildThreadContextEntryXml(\n tagName: string,\n entry: ChannelThreadContextEntry,\n context: Omit<AttachmentXmlContext, \"messageId\">,\n): string {\n const attrs: string[] = [];\n if (entry.senderId) {\n attrs.push(`sender_id=\"${escapeXmlAttribute(entry.senderId)}\"`);\n }\n if (entry.senderName) {\n attrs.push(`sender_name=\"${escapeXmlAttribute(entry.senderName)}\"`);\n }\n if (entry.messageId) {\n attrs.push(`message_id=\"${escapeXmlAttribute(entry.messageId)}\"`);\n }\n\n const attrString = attrs.length > 0 ? ` ${attrs.join(\" \")}` : \"\";\n const body = [\n ...(entry.text\n ? [buildTextWithUserMentions(entry.text, entry.userMentions)]\n : []),\n ...(entry.attachments ?? []).map((attachment) =>\n buildAttachmentXml(attachment, {\n ...context,\n messageId: entry.messageId,\n }),\n ),\n ].join(\"\\n\");\n return `<${tagName}${attrString}>\\n${body}\\n</${tagName}>`;\n}\n\nfunction buildThreadContextXml(msg: InboundChannelMessage): string | null {\n const threadContext = msg.threadContext;\n if (!threadContext) {\n return null;\n }\n\n const parts: string[] = [];\n if (threadContext.starter) {\n parts.push(\n buildThreadContextEntryXml(\"thread-starter\", threadContext.starter, {\n channel: msg.channel,\n accountId: msg.accountId,\n chatId: msg.chatId,\n }),\n );\n }\n const historyEntries = threadContext.history ?? [];\n if (historyEntries.length > 0) {\n parts.push(\n [\n \"<thread-history>\",\n ...historyEntries.map((entry) =>\n buildThreadContextEntryXml(\"thread-message\", entry, {\n channel: msg.channel,\n accountId: msg.accountId,\n chatId: msg.chatId,\n }),\n ),\n \"</thread-history>\",\n ].join(\"\\n\"),\n );\n }\n\n if (parts.length === 0) {\n return null;\n }\n\n const attrs = threadContext.label\n ? ` label=\"${escapeXmlAttribute(threadContext.label)}\"`\n : \"\";\n return [`<thread-context${attrs}>`, ...parts, \"</thread-context>\"].join(\"\\n\");\n}\n\n/**\n * Format an inbound channel message as XML for the agent.\n *\n * Example output:\n * ```xml\n * <channel-notification source=\"telegram\" chat_id=\"12345\" sender_id=\"67890\" sender_name=\"John\">\n * Hello from Telegram!\n * </channel-notification>\n * ```\n */\nexport function buildChannelNotificationXml(\n msg: InboundChannelMessage,\n): string {\n const attrs: string[] = [\n `source=\"${escapeXmlAttribute(msg.channel)}\"`,\n `chat_id=\"${escapeXmlAttribute(msg.chatId)}\"`,\n `sender_id=\"${escapeXmlAttribute(msg.senderId)}\"`,\n ];\n\n if (msg.accountId) {\n attrs.push(`account_id=\"${escapeXmlAttribute(msg.accountId)}\"`);\n }\n\n if (msg.senderName) {\n attrs.push(`sender_name=\"${escapeXmlAttribute(msg.senderName)}\"`);\n }\n\n if (msg.messageId) {\n attrs.push(`message_id=\"${escapeXmlAttribute(msg.messageId)}\"`);\n }\n\n if (msg.threadId) {\n attrs.push(`thread_id=\"${escapeXmlAttribute(msg.threadId)}\"`);\n }\n if (msg.routedBy) {\n attrs.push(`routed_by=\"${escapeXmlAttribute(msg.routedBy)}\"`);\n }\n\n const attrString = attrs.join(\" \");\n const escapedText = msg.text\n ? buildTextWithUserMentions(msg.text, msg.userMentions)\n : \"\";\n const reactionXml = buildReactionXml(msg);\n const replyContextXml = buildReplyContextXml(msg);\n const threadContextXml = buildThreadContextXml(msg);\n const attachmentXml = (msg.attachments ?? []).map((attachment) =>\n buildAttachmentXml(attachment, {\n channel: msg.channel,\n accountId: msg.accountId,\n chatId: msg.chatId,\n messageId: msg.messageId,\n }),\n );\n const body = [\n threadContextXml,\n replyContextXml,\n reactionXml,\n ...attachmentXml,\n escapedText,\n ]\n .filter(Boolean)\n .join(\"\\n\");\n\n return `<channel-notification ${attrString}>\\n${body}\\n</channel-notification>`;\n}\n\n/**\n * Format an inbound channel message as structured content parts.\n *\n * Attachment guidance is emitted only when this event contains inspectable\n * local paths. Reply semantics live in the scoped MessageChannel definition.\n */\nexport function formatChannelNotification(\n msg: InboundChannelMessage,\n): MessageCreate[\"content\"] {\n const attachmentReminder = buildChannelAttachmentReminderText(msg);\n return [\n ...(attachmentReminder\n ? [{ type: \"text\" as const, text: attachmentReminder }]\n : []),\n { type: \"text\", text: buildChannelNotificationXml(msg) },\n ...(msg.attachments ?? []).flatMap((attachment) => {\n if (\n attachment.kind !== \"image\" ||\n typeof attachment.imageDataBase64 !== \"string\" ||\n attachment.imageDataBase64.length === 0 ||\n typeof attachment.mimeType !== \"string\" ||\n !canEmitInlineImageContentPart(attachment.mimeType)\n ) {\n return [];\n }\n\n return [\n {\n type: \"image\" as const,\n source: {\n type: \"base64\" as const,\n media_type: attachment.mimeType,\n data: attachment.imageDataBase64,\n },\n },\n ];\n }),\n ] as MessageCreate[\"content\"];\n}\n",
|
|
12
12
|
"import type {\n ChannelRoute,\n ChannelTurnSource,\n InboundChannelMessage,\n OutboundChannelMessage,\n} from \"./types\";\nimport { buildChannelNotificationXml } from \"./xml\";\n\nexport interface BuildChannelTurnSourceParams {\n message: InboundChannelMessage;\n route: ChannelRoute;\n}\n\nexport interface FormatInboundChannelMessageParams {\n message: InboundChannelMessage;\n}\n\nexport interface ChannelBatchMessage {\n text: string;\n senderId?: string;\n senderName?: string;\n timestamp?: string | number;\n channelTurnSource?: ChannelTurnSource;\n}\n\nexport interface FormatBatchedChannelMessagesParams {\n messages: ChannelBatchMessage[];\n}\n\nexport interface BuildOutboundChannelMessageFromTurnSourceParams {\n turnSource: ChannelTurnSource;\n text: string;\n}\n\nexport function buildChannelTurnSource(\n params: BuildChannelTurnSourceParams,\n): ChannelTurnSource {\n const { message, route } = params;\n return {\n channel: message.channel,\n accountId: message.accountId ?? route.accountId,\n chatId: message.chatId,\n chatType: message.chatType ?? route.chatType,\n senderId: message.senderId,\n senderTeamId: message.senderTeamId,\n messageId: message.messageId,\n threadId: message.threadId ?? route.threadId ?? null,\n agentId: route.agentId,\n conversationId: route.conversationId,\n };\n}\n\nexport function formatInboundChannelMessageForAgent(\n params: FormatInboundChannelMessageParams,\n): string {\n return buildChannelNotificationXml(params.message);\n}\n\nfunction formatLegacyBatchedSender(message: ChannelBatchMessage): string {\n const senderName = message.senderName?.trim();\n const senderId = message.senderId?.trim() ?? \"unknown\";\n if (senderName && senderName !== senderId) {\n return `${senderName}:${senderId}`;\n }\n return senderId;\n}\n\nexport function formatBatchedChannelMessagesForAgent(\n params: FormatBatchedChannelMessagesParams,\n): string {\n const { messages } = params;\n if (messages.length === 0) {\n return \"\";\n }\n const firstMessage = messages[0];\n if (messages.length === 1 && firstMessage) {\n return firstMessage.text;\n }\n\n if (messages.every((message) => message.channelTurnSource)) {\n const formatted = messages.map((message) => message.text).join(\"\\n\");\n return `--- Batched Channel Messages (${messages.length}) ---\\n${formatted}\\n--- End Batched Channel Messages ---`;\n }\n\n const formatted = messages\n .map((message) => {\n const timestamp = message.timestamp ?? \"unknown\";\n return `[user@${formatLegacyBatchedSender(message)}]<${timestamp}>:${message.text}`;\n })\n .join(\"\\n\");\n\n return `--- Batched Messages (${messages.length}) ---\\n${formatted}\\n--- End Batched Messages ---`;\n}\n\nexport function buildOutboundChannelMessageFromTurnSource(\n params: BuildOutboundChannelMessageFromTurnSourceParams,\n): OutboundChannelMessage {\n const { turnSource } = params;\n return {\n channel: turnSource.channel,\n accountId: turnSource.accountId,\n chatId: turnSource.chatId,\n threadId: turnSource.threadId,\n text: params.text,\n agentId: turnSource.agentId,\n conversationId: turnSource.conversationId,\n };\n}\n",
|
|
13
13
|
"const MAX_PROGRESS_TEXT_LENGTH = 140;\nexport const MAX_PROGRESS_DETAILS_LENGTH = 180;\nconst MAX_SHELL_PROGRESS_DETAILS_LENGTH = 64;\nconst MAX_SUBAGENT_PROGRESS_DETAILS_LENGTH = 180;\nconst ESCAPE_CODE = String.fromCharCode(27);\nconst ANSI_ESCAPE_RE = new RegExp(`${ESCAPE_CODE}\\\\[[0-9;?]*[ -/]*[@-~]`, \"g\");\nconst SECRET_ASSIGNMENT_RE =\n /\\b([A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASS|API[_-]?KEY|ACCESS[_-]?KEY)[A-Z0-9_]*)\\s*=\\s*(\"[^\"]*\"|'[^']*'|\\S+)/gi;\nconst SECRET_JSON_RE =\n /([\"']?(?:token|secret|password|api[_-]?key|access[_-]?key)[\"']?\\s*[:=]\\s*)(\"[^\"]*\"|'[^']*'|\\S+)/gi;\n\nfunction isTaskTool(name: string): boolean {\n return (\n name === \"Task\" || name === \"task\" || name === \"Agent\" || name === \"agent\"\n );\n}\n\nfunction isShellTool(name: string): boolean {\n const normalized = name.toLowerCase();\n return (\n normalized === \"bash\" ||\n normalized === \"exec_command\" ||\n normalized === \"shell_command\" ||\n normalized === \"shell\" ||\n normalized === \"runshellcommand\"\n );\n}\n\nfunction isWebSearchTool(name: string): boolean {\n const normalized = name.toLowerCase();\n return normalized === \"web_search\" || normalized === \"websearch\";\n}\n\nfunction isSearchTool(name: string): boolean {\n const normalized = name.toLowerCase();\n return (\n normalized === \"grep\" ||\n normalized === \"grep_files\" ||\n normalized === \"grepfiles\" ||\n normalized === \"search_file_content\" ||\n normalized === \"searchfilecontent\"\n );\n}\n\nfunction isGlobTool(name: string): boolean {\n const normalized = name.toLowerCase();\n return normalized === \"glob\" || normalized === \"glob_gemini\";\n}\n\nfunction isFileReadTool(name: string): boolean {\n const normalized = name.toLowerCase();\n return (\n normalized === \"read\" ||\n normalized === \"read_file\" ||\n normalized === \"readfile\" ||\n normalized === \"read_file_gemini\" ||\n normalized === \"readfilegemini\"\n );\n}\n\nfunction isFileWriteTool(name: string): boolean {\n const normalized = name.toLowerCase();\n return (\n normalized === \"write\" ||\n normalized === \"write_file\" ||\n normalized === \"writefile\" ||\n normalized === \"write_file_gemini\" ||\n normalized === \"writefilegemini\"\n );\n}\n\nfunction isFileEditTool(name: string): boolean {\n const normalized = name.toLowerCase();\n return (\n normalized === \"edit\" ||\n normalized === \"multi_edit\" ||\n normalized === \"multiedit\" ||\n normalized === \"replace\" ||\n normalized === \"apply_patch\" ||\n normalized === \"applypatch\"\n );\n}\n\nfunction getPathBaseName(filePath: string): string {\n return filePath.split(/[\\\\/]/).filter(Boolean).pop() ?? filePath;\n}\n\nexport function asRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === \"object\"\n ? (value as Record<string, unknown>)\n : null;\n}\n\nexport function firstNonEmptyString(...values: unknown[]): string | undefined {\n for (const value of values) {\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value;\n }\n }\n return undefined;\n}\n\nexport function truncateChannelProgressText(\n value: string,\n maxLength: number,\n marker = \"...\",\n): string {\n if (value.length <= maxLength) {\n return value;\n }\n if (maxLength <= marker.length) {\n return marker.slice(0, Math.max(0, maxLength));\n }\n return `${value.slice(0, maxLength - marker.length).trimEnd()}${marker}`;\n}\n\nfunction replaceControlCharacters(value: string): string {\n let result = \"\";\n for (let index = 0; index < value.length; index += 1) {\n const character = value[index] ?? \"\";\n const code = character.charCodeAt(0);\n result +=\n code <= 8 ||\n code === 11 ||\n code === 12 ||\n (code >= 14 && code <= 31) ||\n code === 127\n ? \" \"\n : character;\n }\n return result;\n}\n\n/**\n * Shared sanitization core for channel-facing progress text: strips ANSI\n * escapes and control characters, redacts secret-looking assignments, and\n * neutralizes platform mentions. Platform adapters layer their own escaping\n * (and truncation marker) on top of this instead of maintaining parallel\n * redaction rules.\n */\nexport function sanitizeChannelProgressCore(value: unknown): string {\n const raw = typeof value === \"string\" ? value : String(value ?? \"\");\n const redacted = raw\n .replace(ANSI_ESCAPE_RE, \"\")\n .replace(SECRET_ASSIGNMENT_RE, \"$1=[redacted]\")\n .replace(SECRET_JSON_RE, \"$1[redacted]\");\n return replaceControlCharacters(redacted)\n .replace(/[\\r\\n\\t]+/g, \" \")\n .replace(/@(?=channel|here|everyone|[A-Za-z0-9._-]+)/gi, \"@\\u200b\")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\nexport function sanitizeChannelProgressText(\n value: unknown,\n maxLength: number = MAX_PROGRESS_TEXT_LENGTH,\n): string {\n return truncateChannelProgressText(\n sanitizeChannelProgressCore(value),\n maxLength,\n );\n}\n\nexport function sanitizeChannelProgressIdentifier(\n value: unknown,\n fallback: string,\n): string {\n const text = sanitizeChannelProgressText(value, 64);\n if (!text) {\n return fallback;\n }\n const cleaned = text.replace(/[^A-Za-z0-9_.:/ -]/g, \"\").trim();\n return cleaned || fallback;\n}\n\nfunction summarizeShellCommand(command: string): string {\n const normalized = sanitizeChannelProgressText(command, 10_000);\n if (!normalized) {\n return \"\";\n }\n\n // Preview the first command segment (or two short ones) and drop pipelines\n // so multi-step shell invocations stay readable at Slack-row lengths.\n const segments = normalized\n .split(/\\s*;\\s*/)\n .map((segment) => segment.trim())\n .filter(Boolean);\n const firstTwoSegments = segments.slice(0, 2).join(\"; \");\n const previewSource =\n firstTwoSegments.length > 0 && firstTwoSegments.length <= 70\n ? firstTwoSegments\n : (segments[0] ?? normalized);\n const withoutPipeline = previewSource.split(/\\s*\\|\\s*/)[0] ?? previewSource;\n\n return sanitizeChannelProgressText(\n withoutPipeline.trim() || normalized,\n MAX_SHELL_PROGRESS_DETAILS_LENGTH,\n );\n}\n\ntype SkillDescriptionLookup =\n | ReadonlyMap<string, string>\n | Readonly<Record<string, string | undefined>>;\n\nexport type ChannelTurnProgressBuilderOptions = {\n skillDescriptionsByName?: SkillDescriptionLookup;\n};\n\nexport type ToolCallSummary = {\n id?: string;\n name?: string;\n argumentsText?: string;\n};\n\nfunction getSkillNameFromArguments(\n parsedArguments: Record<string, unknown>,\n): string | undefined {\n return firstNonEmptyString(parsedArguments.skill, parsedArguments.skillName);\n}\n\nfunction getFragmentedSkillName(summary: ToolCallSummary): string | undefined {\n const skillMatch = summary.argumentsText?.match(\n /\"(?:skill|skillName)\"\\s*:\\s*\"([^\"]+)\"/,\n );\n return skillMatch?.[1];\n}\n\nfunction resolveSkillDescription(\n skillName: string | undefined,\n options: ChannelTurnProgressBuilderOptions | undefined,\n): string | undefined {\n const lookup = options?.skillDescriptionsByName;\n if (!skillName || !lookup) {\n return undefined;\n }\n if (\"get\" in lookup && typeof lookup.get === \"function\") {\n return firstNonEmptyString(lookup.get(skillName));\n }\n return firstNonEmptyString(\n (lookup as Readonly<Record<string, string | undefined>>)[skillName],\n );\n}\n\nfunction formatSkillProgressTitleFromName(\n skillName: string | undefined,\n): string | undefined {\n const sanitized = sanitizeChannelProgressText(\n skillName,\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized ? `Skill: ${sanitized}` : undefined;\n}\n\nfunction formatShellProgressDetailsFromArguments(\n parsedArguments: Record<string, unknown>,\n): string | undefined {\n const description = firstNonEmptyString(parsedArguments.description);\n if (description) {\n return (\n sanitizeChannelProgressText(description, MAX_PROGRESS_DETAILS_LENGTH) ||\n undefined\n );\n }\n\n const commandPreview = firstNonEmptyString(\n parsedArguments.command,\n parsedArguments.cmd,\n );\n return summarizeShellCommand(commandPreview ?? \"\") || undefined;\n}\n\nfunction formatFragmentedShellProgressDetails(\n summary: ToolCallSummary,\n): string | undefined {\n const descriptionMatch = summary.argumentsText?.match(\n /\"description\"\\s*:\\s*\"([^\"]+)\"/,\n );\n if (descriptionMatch?.[1]) {\n return (\n sanitizeChannelProgressText(\n descriptionMatch[1],\n MAX_PROGRESS_DETAILS_LENGTH,\n ) || undefined\n );\n }\n\n // Do not expose command previews from incomplete shell-tool JSON. Slack's\n // task stream appends, rather than replaces, changed details for the same\n // task id; sending a provisional command before the streamed description\n // arrives leaves both strings glued together in the preview.\n return undefined;\n}\n\nfunction formatSubagentProgressDetailsFromArguments(\n parsedArguments: Record<string, unknown>,\n): string | undefined {\n const preview = firstNonEmptyString(\n parsedArguments.prompt,\n parsedArguments.description,\n parsedArguments.subject,\n );\n const sanitized = sanitizeChannelProgressText(\n preview,\n MAX_SUBAGENT_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n}\n\nfunction formatFragmentedSubagentProgressDetails(\n summary: ToolCallSummary,\n): string | undefined {\n const previewMatch = summary.argumentsText?.match(\n /\"(?:prompt|description|subject)\"\\s*:\\s*\"([^\"]+)\"/,\n );\n if (!previewMatch?.[1]) {\n return undefined;\n }\n const sanitized = sanitizeChannelProgressText(\n previewMatch[1],\n MAX_SUBAGENT_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n}\n\nexport type ToolReturnSummary = {\n summary: ToolCallSummary;\n status: \"completed\" | \"error\";\n errorDetails?: string;\n};\n\nexport function parseToolArguments(\n value: string | undefined,\n): Record<string, unknown> | null {\n if (!value) {\n return null;\n }\n try {\n return asRecord(JSON.parse(value));\n } catch {\n return null;\n }\n}\n\nfunction isFetchWebpageToolName(name: string | undefined): boolean {\n return (\n name === \"fetch_webpage\" ||\n name === \"FetchWebpage\" ||\n name === \"fetchWebpage\"\n );\n}\n\nexport function isSkillToolName(name: string | undefined): boolean {\n if (!name) {\n return false;\n }\n const normalized = name.includes(\".\")\n ? name.slice(name.lastIndexOf(\".\") + 1)\n : name;\n return normalized === \"Skill\" || normalized === \"skill\";\n}\n\nfunction isFilePathToolName(name: string): boolean {\n return isFileReadTool(name) || isFileWriteTool(name) || isFileEditTool(name);\n}\n\nfunction getFileToolKind(name: string): \"read\" | \"write\" | \"update\" | null {\n if (isFileReadTool(name)) {\n return \"read\";\n }\n if (isFileWriteTool(name)) {\n return \"write\";\n }\n if (isFileEditTool(name)) {\n return \"update\";\n }\n return null;\n}\n\nfunction countProgressLines(value: string | undefined): number {\n return value ? value.split(\"\\n\").length : 0;\n}\n\ntype LineChangeSummary = {\n additions?: number;\n deletions?: number;\n};\n\nfunction formatLineChangeSummary(summary: LineChangeSummary | null): string {\n if (!summary) {\n return \"\";\n }\n const parts: string[] = [];\n if (summary.additions !== undefined) {\n parts.push(`+${summary.additions}`);\n }\n if (summary.deletions !== undefined) {\n parts.push(`-${summary.deletions}`);\n }\n return parts.length > 0 ? ` ${parts.join(\" \")}` : \"\";\n}\n\nfunction extractFilePathFromArguments(\n parsedArguments: Record<string, unknown>,\n): string | undefined {\n return firstNonEmptyString(\n parsedArguments.file_path,\n parsedArguments.filePath,\n parsedArguments.path,\n );\n}\n\nfunction formatProgressFileName(\n filePath: string | undefined,\n): string | undefined {\n if (!filePath) {\n return undefined;\n }\n const fileName = getPathBaseName(filePath) || filePath;\n return (\n sanitizeChannelProgressText(fileName, MAX_PROGRESS_DETAILS_LENGTH) ||\n undefined\n );\n}\n\nfunction getEditLineChangeSummary(\n parsedArguments: Record<string, unknown>,\n): LineChangeSummary | null {\n const oldString = firstNonEmptyString(parsedArguments.old_string);\n const newString = firstNonEmptyString(parsedArguments.new_string);\n if (oldString === undefined || newString === undefined) {\n return null;\n }\n return {\n additions: countProgressLines(newString),\n deletions: countProgressLines(oldString),\n };\n}\n\nfunction getMultiEditLineChangeSummary(\n parsedArguments: Record<string, unknown>,\n): LineChangeSummary | null {\n if (!Array.isArray(parsedArguments.edits)) {\n return null;\n }\n let additions = 0;\n let deletions = 0;\n let counted = false;\n for (const edit of parsedArguments.edits) {\n const record = asRecord(edit);\n if (!record) {\n continue;\n }\n const oldString = firstNonEmptyString(record.old_string);\n const newString = firstNonEmptyString(record.new_string);\n if (oldString === undefined || newString === undefined) {\n continue;\n }\n additions += countProgressLines(newString);\n deletions += countProgressLines(oldString);\n counted = true;\n }\n return counted ? { additions, deletions } : null;\n}\n\nfunction getWriteLineChangeSummary(\n parsedArguments: Record<string, unknown>,\n): LineChangeSummary | null {\n const content = firstNonEmptyString(parsedArguments.content);\n if (content === undefined) {\n return null;\n }\n return {\n additions: countProgressLines(content),\n };\n}\n\nfunction getFileLineChangeSummary(\n name: string,\n parsedArguments: Record<string, unknown>,\n): LineChangeSummary | null {\n if (isFileWriteTool(name)) {\n return getWriteLineChangeSummary(parsedArguments);\n }\n if (name === \"MultiEdit\" || name === \"multi_edit\") {\n return getMultiEditLineChangeSummary(parsedArguments);\n }\n if (isFileEditTool(name)) {\n return getEditLineChangeSummary(parsedArguments);\n }\n return null;\n}\n\nfunction getFileToolVerb(\n kind: \"read\" | \"write\" | \"update\",\n status: \"started\" | \"completed\" | \"error\",\n): string {\n if (status === \"error\") {\n if (kind === \"read\") {\n return \"Tried to read\";\n }\n if (kind === \"write\") {\n return \"Tried to write\";\n }\n return \"Tried to update\";\n }\n if (status === \"started\") {\n if (kind === \"read\") {\n return \"Reading\";\n }\n if (kind === \"write\") {\n return \"Writing\";\n }\n return \"Updating\";\n }\n if (kind === \"read\") {\n return \"Read\";\n }\n if (kind === \"write\") {\n return \"Wrote\";\n }\n return \"Updated\";\n}\n\nfunction formatFileToolProgressTitle(\n name: string,\n parsedArguments: Record<string, unknown>,\n status: \"started\" | \"completed\" | \"error\",\n): string | undefined {\n const kind = getFileToolKind(name);\n if (!kind) {\n return undefined;\n }\n const fileName = formatProgressFileName(\n extractFilePathFromArguments(parsedArguments),\n );\n if (!fileName) {\n return undefined;\n }\n const stats =\n status === \"completed\"\n ? formatLineChangeSummary(getFileLineChangeSummary(name, parsedArguments))\n : \"\";\n return `${getFileToolVerb(kind, status)} ${fileName}${stats}`;\n}\n\nfunction formatFragmentedFileToolProgressTitle(\n summary: ToolCallSummary,\n status: \"started\" | \"completed\" | \"error\",\n): string | undefined {\n if (!summary.name || !summary.argumentsText) {\n return undefined;\n }\n const kind = getFileToolKind(summary.name);\n if (!kind) {\n return undefined;\n }\n const filePathMatch = summary.argumentsText.match(\n /\"(?:file_path|filePath|path)\"\\s*:\\s*\"([^\"]+)\"/,\n );\n const fileName = formatProgressFileName(filePathMatch?.[1]);\n if (!fileName) {\n return undefined;\n }\n return `${getFileToolVerb(kind, status)} ${fileName}`;\n}\n\nexport function formatToolProgressTitle(\n summary: ToolCallSummary,\n status: \"started\" | \"completed\" | \"error\",\n): string | undefined {\n if (!summary.name || !summary.argumentsText) {\n return undefined;\n }\n\n const parsedArguments = parseToolArguments(summary.argumentsText);\n if (parsedArguments) {\n if (isSkillToolName(summary.name)) {\n return formatSkillProgressTitleFromName(\n getSkillNameFromArguments(parsedArguments),\n );\n }\n if (isFilePathToolName(summary.name)) {\n return formatFileToolProgressTitle(summary.name, parsedArguments, status);\n }\n return undefined;\n }\n\n if (isSkillToolName(summary.name)) {\n return formatSkillProgressTitleFromName(getFragmentedSkillName(summary));\n }\n if (isFilePathToolName(summary.name)) {\n return formatFragmentedFileToolProgressTitle(summary, status);\n }\n return undefined;\n}\n\nfunction formatSkillProgressDetailsFromArguments(\n parsedArguments: Record<string, unknown>,\n options: ChannelTurnProgressBuilderOptions | undefined,\n): string | undefined {\n const skillName = getSkillNameFromArguments(parsedArguments);\n const detail = resolveSkillDescription(skillName, options) ?? skillName;\n const sanitized = sanitizeChannelProgressText(\n detail,\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n}\n\nfunction formatFragmentedSkillProgressDetails(\n summary: ToolCallSummary,\n options: ChannelTurnProgressBuilderOptions | undefined,\n): string | undefined {\n const skillName = getFragmentedSkillName(summary);\n const detail = resolveSkillDescription(skillName, options) ?? skillName;\n const sanitized = sanitizeChannelProgressText(\n detail,\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n}\n\nexport function formatToolProgressDetails(\n summary: ToolCallSummary,\n options?: ChannelTurnProgressBuilderOptions,\n): string | undefined {\n if (!summary.name || !summary.argumentsText) {\n return undefined;\n }\n\n // Try JSON parse first (complete arguments)\n const parsedArguments = parseToolArguments(summary.argumentsText);\n if (parsedArguments) {\n if (isWebSearchTool(summary.name)) {\n const query = firstNonEmptyString(parsedArguments.query);\n const sanitized = sanitizeChannelProgressText(\n query,\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n }\n\n if (isFetchWebpageToolName(summary.name)) {\n const url = firstNonEmptyString(parsedArguments.url);\n const sanitized = sanitizeChannelProgressText(\n url,\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n }\n\n if (isSkillToolName(summary.name)) {\n return formatSkillProgressDetailsFromArguments(parsedArguments, options);\n }\n\n if (isTaskTool(summary.name)) {\n return formatSubagentProgressDetailsFromArguments(parsedArguments);\n }\n\n if (isShellTool(summary.name)) {\n return formatShellProgressDetailsFromArguments(parsedArguments);\n }\n\n if (isFilePathToolName(summary.name)) {\n const filePath = firstNonEmptyString(\n parsedArguments.file_path,\n parsedArguments.filePath,\n parsedArguments.path,\n );\n const sanitized = sanitizeChannelProgressText(\n filePath,\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n }\n\n if (isGlobTool(summary.name) || isSearchTool(summary.name)) {\n const pattern = firstNonEmptyString(parsedArguments.pattern);\n const sanitized = sanitizeChannelProgressText(\n pattern,\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n }\n\n return undefined;\n }\n\n // Fallback: extract known preview fields from fragmented/incomplete JSON.\n if (isShellTool(summary.name)) {\n return formatFragmentedShellProgressDetails(summary);\n }\n\n if (isSkillToolName(summary.name)) {\n return formatFragmentedSkillProgressDetails(summary, options);\n }\n\n if (isTaskTool(summary.name)) {\n return formatFragmentedSubagentProgressDetails(summary);\n }\n\n if (isFilePathToolName(summary.name)) {\n const filePathMatch = summary.argumentsText.match(\n /\"file_path\"\\s*:\\s*\"([^\"]+)\"/,\n );\n if (filePathMatch?.[1]) {\n const sanitized = sanitizeChannelProgressText(\n filePathMatch[1],\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n }\n }\n\n return undefined;\n}\n",
|
|
14
|
-
"import {\n asRecord,\n type ChannelTurnProgressBuilderOptions,\n firstNonEmptyString,\n formatToolProgressDetails,\n formatToolProgressTitle,\n MAX_PROGRESS_DETAILS_LENGTH,\n parseToolArguments,\n sanitizeChannelProgressIdentifier,\n sanitizeChannelProgressText,\n type ToolCallSummary,\n type ToolReturnSummary,\n} from \"./progress-formatting\";\nimport type { ChannelTurnProgressUpdate } from \"./types\";\n\nfunction getMessageType(delta: Record<string, unknown>): string | null {\n return firstNonEmptyString(delta.message_type, delta.messageType) ?? null;\n}\n\nfunction getRunId(delta: Record<string, unknown>): string | undefined {\n return firstNonEmptyString(delta.run_id, delta.runId);\n}\n\nfunction withRunId(\n update: Omit<ChannelTurnProgressUpdate, \"runId\">,\n runId?: string,\n): ChannelTurnProgressUpdate {\n return {\n ...update,\n ...(runId ? { runId } : {}),\n };\n}\n\nfunction getCommandId(delta: Record<string, unknown>): string {\n const command = firstNonEmptyString(delta.command_id, delta.commandId);\n return sanitizeChannelProgressIdentifier(command, \"command\");\n}\n\nfunction getSlashCommand(delta: Record<string, unknown>): string {\n const commandId = firstNonEmptyString(delta.command_id, delta.commandId);\n const command = commandId ? `/${commandId.replace(/^\\/+/, \"\")}` : \"command\";\n return sanitizeChannelProgressIdentifier(command, \"command\");\n}\n\nfunction getToolStatus(delta: Record<string, unknown>): \"completed\" | \"error\" {\n const status = firstNonEmptyString(delta.status)?.toLowerCase();\n return status === \"error\" || status === \"failed\" ? \"error\" : \"completed\";\n}\n\nfunction stringifyProgressValue(value: unknown): string | undefined {\n if (typeof value === \"string\") {\n return value;\n }\n if (value === undefined || value === null) {\n return undefined;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction formatToolErrorDetails(\n record: Record<string, unknown>,\n): string | undefined {\n const toolReturn = record.tool_return ?? record.toolReturn;\n const toolReturnRecord = asRecord(toolReturn);\n const preview = firstNonEmptyString(\n record.stderr,\n record.error,\n record.message,\n toolReturnRecord?.stderr,\n toolReturnRecord?.error,\n toolReturnRecord?.message,\n toolReturnRecord?.output,\n stringifyProgressValue(toolReturn),\n );\n const sanitized = sanitizeChannelProgressText(\n preview,\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n}\n\nfunction toolNameForMessage(summary: ToolCallSummary | undefined): string {\n return summary?.name ? `: ${summary.name}` : \"\";\n}\n\n/**\n * Builds sanitized channel progress updates from stream deltas for a single\n * turn. Instances accumulate fragmented tool-call arguments across deltas,\n * so they must be scoped to one conversation turn (create one per turn and\n * drop it when the turn finishes) rather than shared across conversations.\n */\nexport type ChannelTurnProgressBuilder = {\n buildUpdates(delta: unknown): ChannelTurnProgressUpdate[];\n};\n\nexport function createChannelTurnProgressBuilder(\n options: ChannelTurnProgressBuilderOptions = {},\n): ChannelTurnProgressBuilder {\n // Fragmented tool arguments and names accumulated across stream deltas,\n // keyed by tool_call_id. Entries are dropped when the tool return arrives;\n // the whole builder is dropped with the turn.\n const argumentsByToolCallId = new Map<string, string>();\n const namesByToolCallId = new Map<string, string>();\n\n // Wire shapes (see ToolCall / ToolCallDelta in @letta-ai/letta-client and\n // the local backend projections): flat `tool_call_id` / `name` /\n // `arguments` fields, delivered either as `tool_calls` (array or single\n // delta object) or the deprecated `tool_call`.\n function extractToolCallSummary(value: unknown): ToolCallSummary | null {\n const record = asRecord(value);\n if (!record) {\n return null;\n }\n const id = firstNonEmptyString(record.tool_call_id);\n const cacheId = id\n ? sanitizeChannelProgressIdentifier(id, \"tool-call\")\n : undefined;\n const extractedName = firstNonEmptyString(record.name);\n if (cacheId && extractedName) {\n namesByToolCallId.set(cacheId, extractedName);\n }\n const resolvedName =\n extractedName ?? (cacheId ? namesByToolCallId.get(cacheId) : undefined);\n const rawArguments =\n typeof record.arguments === \"string\" && record.arguments.length > 0\n ? record.arguments\n : asRecord(record.arguments)\n ? JSON.stringify(record.arguments)\n : undefined;\n\n // Accumulate fragmented arguments across stream deltas for the same tool\n // call. A fragment that already parses as complete JSON replaces earlier\n // partial state (some streams first expose only command content, then\n // later re-send full arguments including the description).\n let argumentsText: string | undefined;\n if (cacheId && rawArguments !== undefined) {\n const existing = argumentsByToolCallId.get(cacheId);\n if (parseToolArguments(rawArguments)) {\n argumentsByToolCallId.set(cacheId, rawArguments);\n argumentsText = rawArguments;\n } else if (existing) {\n if (parseToolArguments(existing)) {\n argumentsText = existing;\n } else {\n const accumulated = existing + rawArguments;\n argumentsByToolCallId.set(cacheId, accumulated);\n argumentsText = accumulated;\n }\n } else {\n argumentsByToolCallId.set(cacheId, rawArguments);\n argumentsText = rawArguments;\n }\n } else if (!id && rawArguments !== undefined) {\n argumentsText = rawArguments;\n }\n\n if (!id && !resolvedName) {\n return null;\n }\n return {\n ...(cacheId ? { id: cacheId } : {}),\n ...(resolvedName\n ? { name: sanitizeChannelProgressIdentifier(resolvedName, \"tool\") }\n : {}),\n ...(argumentsText ? { argumentsText } : {}),\n };\n }\n\n function extractClientToolSummary(\n record: Record<string, unknown>,\n ): ToolCallSummary | null {\n const id = firstNonEmptyString(record.tool_call_id, record.toolCallId);\n const cacheId = id\n ? sanitizeChannelProgressIdentifier(id, \"tool-call\")\n : undefined;\n const extractedName = firstNonEmptyString(\n record.tool_name,\n record.toolName,\n record.name,\n );\n if (cacheId && extractedName) {\n namesByToolCallId.set(cacheId, extractedName);\n }\n const resolvedName =\n extractedName ?? (cacheId ? namesByToolCallId.get(cacheId) : undefined);\n const rawArguments = firstNonEmptyString(\n record.tool_args,\n record.toolArgs,\n record.arguments,\n );\n if (cacheId && rawArguments) {\n argumentsByToolCallId.set(cacheId, rawArguments);\n }\n const argumentsText =\n rawArguments ??\n (cacheId ? argumentsByToolCallId.get(cacheId) : undefined);\n if (!cacheId && !resolvedName) {\n return null;\n }\n return {\n ...(cacheId ? { id: cacheId } : {}),\n ...(resolvedName\n ? { name: sanitizeChannelProgressIdentifier(resolvedName, \"tool\") }\n : {}),\n ...(argumentsText ? { argumentsText } : {}),\n };\n }\n\n function extractToolCalls(delta: Record<string, unknown>): ToolCallSummary[] {\n const candidates: unknown[] = Array.isArray(delta.tool_calls)\n ? delta.tool_calls\n : delta.tool_calls\n ? [delta.tool_calls]\n : delta.tool_call\n ? [delta.tool_call]\n : [];\n\n const summaries: ToolCallSummary[] = [];\n const seen = new Set<string>();\n for (const candidate of candidates) {\n const summary = extractToolCallSummary(candidate);\n if (!summary) {\n continue;\n }\n const key = `${summary.id ?? \"\"}:${summary.name ?? \"\"}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n summaries.push(summary);\n }\n return summaries;\n }\n\n function extractToolReturns(\n delta: Record<string, unknown>,\n ): ToolReturnSummary[] {\n const candidates: unknown[] = Array.isArray(delta.tool_returns)\n ? delta.tool_returns\n : [delta];\n\n const summaries: ToolReturnSummary[] = [];\n const seen = new Set<string>();\n for (const candidate of candidates) {\n const record = asRecord(candidate);\n if (!record) {\n continue;\n }\n const summary = extractToolCallSummary(record);\n if (!summary) {\n continue;\n }\n const key = `${summary.id ?? \"\"}:${summary.name ?? \"\"}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n const status = getToolStatus(record);\n summaries.push({\n summary,\n status,\n ...(status === \"error\"\n ? { errorDetails: formatToolErrorDetails(record) }\n : {}),\n });\n }\n return summaries;\n }\n\n function buildToolCallUpdates(\n record: Record<string, unknown>,\n runId: string | undefined,\n ): ChannelTurnProgressUpdate[] {\n const tools = extractToolCalls(record);\n const updates: ChannelTurnProgressUpdate[] = [];\n for (const tool of tools) {\n const toolDetails = formatToolProgressDetails(tool, options);\n const toolTitle = formatToolProgressTitle(tool, \"started\");\n updates.push(\n withRunId(\n {\n kind: \"tool\",\n state: \"started\",\n message: `Preparing tool${toolNameForMessage(tool)}`,\n ...(tool.id ? { toolCallId: tool.id } : {}),\n ...(tool.name ? { toolName: tool.name } : {}),\n ...(toolDetails ? { toolDetails } : {}),\n ...(toolTitle ? { toolTitle } : {}),\n },\n runId,\n ),\n );\n }\n return updates;\n }\n\n function buildUpdates(delta: unknown): ChannelTurnProgressUpdate[] {\n const record = asRecord(delta);\n if (!record) {\n return [];\n }\n\n const messageType = getMessageType(record);\n const runId = getRunId(record);\n\n switch (messageType) {\n case \"reasoning_message\":\n return [\n withRunId(\n {\n kind: \"thinking\",\n state: \"updated\",\n message: \"Thinking\",\n },\n runId,\n ),\n ];\n\n case \"assistant_message\":\n return [\n withRunId(\n {\n kind: \"responding\",\n state: \"updated\",\n message: \"Writing reply\",\n },\n runId,\n ),\n ];\n\n case \"approval_request_message\":\n return buildToolCallUpdates(record, runId);\n\n case \"tool_call_message\": {\n const updates = buildToolCallUpdates(record, runId);\n if (updates.length === 0) {\n return [\n withRunId(\n {\n kind: \"tool\",\n state: \"started\",\n message: \"Preparing tool call\",\n },\n runId,\n ),\n ];\n }\n return updates;\n }\n\n case \"tool_return_message\": {\n const toolReturns = extractToolReturns(record);\n const updates: ChannelTurnProgressUpdate[] = [];\n for (const { summary, status, errorDetails } of toolReturns) {\n // Resolve details from the accumulated arguments for this call,\n // then drop the per-call caches.\n const accumulatedArgs = summary.id\n ? argumentsByToolCallId.get(summary.id)\n : undefined;\n if (summary.id) {\n argumentsByToolCallId.delete(summary.id);\n namesByToolCallId.delete(summary.id);\n }\n const toolWithAccumulatedArgs = accumulatedArgs\n ? { ...summary, argumentsText: accumulatedArgs }\n : summary;\n // toolDetails stays argument-derived even on errors: surfaces use it\n // for row titles (e.g. shell rows), so tool output must never leak\n // into it. Error-output previews travel in errorDetails (LET-9509).\n const toolDetails = formatToolProgressDetails(\n toolWithAccumulatedArgs,\n options,\n );\n const toolTitle = formatToolProgressTitle(\n toolWithAccumulatedArgs,\n status,\n );\n updates.push(\n withRunId(\n {\n kind: \"tool\",\n state: status,\n message: status === \"error\" ? \"Tool failed\" : \"Tool finished\",\n ...(summary.id ? { toolCallId: summary.id } : {}),\n ...(summary.name ? { toolName: summary.name } : {}),\n ...(toolDetails ? { toolDetails } : {}),\n ...(status === \"error\" && errorDetails ? { errorDetails } : {}),\n ...(toolTitle ? { toolTitle } : {}),\n },\n runId,\n ),\n );\n }\n return updates;\n }\n\n case \"client_tool_start\": {\n const tool = extractClientToolSummary(record);\n const toolDetails = tool\n ? formatToolProgressDetails(tool, options)\n : undefined;\n const toolTitle = tool\n ? formatToolProgressTitle(tool, \"started\")\n : undefined;\n return [\n withRunId(\n {\n kind: \"tool\",\n state: \"started\",\n message: \"Running tool\",\n ...(tool?.id ? { toolCallId: tool.id } : {}),\n ...(tool?.name ? { toolName: tool.name } : {}),\n ...(toolDetails ? { toolDetails } : {}),\n ...(toolTitle ? { toolTitle } : {}),\n },\n runId,\n ),\n ];\n }\n\n case \"client_tool_end\": {\n const state = getToolStatus(record);\n const tool = extractClientToolSummary(record);\n const accumulatedArgs = tool?.id\n ? argumentsByToolCallId.get(tool.id)\n : undefined;\n if (tool?.id) {\n argumentsByToolCallId.delete(tool.id);\n namesByToolCallId.delete(tool.id);\n }\n const toolWithAccumulatedArgs =\n tool && accumulatedArgs\n ? { ...tool, argumentsText: accumulatedArgs }\n : tool;\n // toolDetails stays argument-derived even on errors (see the\n // tool_return_message handler); error previews go to errorDetails.\n const toolDetails = toolWithAccumulatedArgs\n ? formatToolProgressDetails(toolWithAccumulatedArgs, options)\n : undefined;\n const errorDetails =\n state === \"error\" ? formatToolErrorDetails(record) : undefined;\n const toolTitle = toolWithAccumulatedArgs\n ? formatToolProgressTitle(toolWithAccumulatedArgs, state)\n : undefined;\n return [\n withRunId(\n {\n kind: \"tool\",\n state,\n message: state === \"error\" ? \"Tool failed\" : \"Tool finished\",\n ...(tool?.id ? { toolCallId: tool.id } : {}),\n ...(tool?.name ? { toolName: tool.name } : {}),\n ...(toolDetails ? { toolDetails } : {}),\n ...(errorDetails ? { errorDetails } : {}),\n ...(toolTitle ? { toolTitle } : {}),\n },\n runId,\n ),\n ];\n }\n\n case \"slash_command_start\": {\n const command = getSlashCommand(record);\n return [\n withRunId(\n {\n kind: \"command\",\n state: \"started\",\n message: `Running ${command}`,\n command,\n },\n runId,\n ),\n ];\n }\n\n case \"slash_command_end\": {\n const command = getSlashCommand(record);\n const success = record.success !== false;\n return [\n withRunId(\n {\n kind: \"command\",\n state: success ? \"completed\" : \"error\",\n message: success ? `${command} finished` : `${command} failed`,\n command,\n },\n runId,\n ),\n ];\n }\n\n case \"command_start\": {\n const command = getCommandId(record);\n return [\n withRunId(\n {\n kind: \"command\",\n state: \"started\",\n message: \"Running command\",\n command,\n },\n runId,\n ),\n ];\n }\n\n case \"command_end\": {\n const command = getCommandId(record);\n const success = record.success !== false;\n return [\n withRunId(\n {\n kind: \"command\",\n state: success ? \"completed\" : \"error\",\n message: success ? \"Command finished\" : \"Command failed\",\n command,\n },\n runId,\n ),\n ];\n }\n\n case \"status\": {\n const message = sanitizeChannelProgressText(record.message);\n if (!message) {\n return [];\n }\n return [\n withRunId(\n {\n kind: \"status\",\n state: \"updated\",\n message,\n },\n runId,\n ),\n ];\n }\n\n case \"retry\": {\n const attempt = Number(record.attempt);\n const maxAttempts = Number(record.max_attempts ?? record.maxAttempts);\n const suffix =\n Number.isFinite(attempt) && Number.isFinite(maxAttempts)\n ? ` (${attempt}/${maxAttempts})`\n : \"\";\n return [\n withRunId(\n {\n kind: \"retry\",\n state: \"updated\",\n message: `Retrying request${suffix}`,\n },\n runId,\n ),\n ];\n }\n\n case \"loop_error\":\n return [\n withRunId(\n {\n kind: \"error\",\n state: \"error\",\n message: \"Encountered an error\",\n },\n runId,\n ),\n ];\n\n default:\n return [];\n }\n }\n\n return { buildUpdates };\n}\n",
|
|
14
|
+
"import {\n asRecord,\n type ChannelTurnProgressBuilderOptions,\n firstNonEmptyString,\n formatToolProgressDetails,\n formatToolProgressTitle,\n MAX_PROGRESS_DETAILS_LENGTH,\n parseToolArguments,\n sanitizeChannelProgressIdentifier,\n sanitizeChannelProgressText,\n type ToolCallSummary,\n type ToolReturnSummary,\n} from \"./progress-formatting\";\nimport type { ChannelTurnProgressUpdate } from \"./progress-types\";\n\nfunction getMessageType(delta: Record<string, unknown>): string | null {\n return firstNonEmptyString(delta.message_type, delta.messageType) ?? null;\n}\n\nfunction getRunId(delta: Record<string, unknown>): string | undefined {\n return firstNonEmptyString(delta.run_id, delta.runId);\n}\n\nfunction withRunId(\n update: Omit<ChannelTurnProgressUpdate, \"runId\">,\n runId?: string,\n): ChannelTurnProgressUpdate {\n return {\n ...update,\n ...(runId ? { runId } : {}),\n };\n}\n\nfunction getCommandId(delta: Record<string, unknown>): string {\n const command = firstNonEmptyString(delta.command_id, delta.commandId);\n return sanitizeChannelProgressIdentifier(command, \"command\");\n}\n\nfunction getSlashCommand(delta: Record<string, unknown>): string {\n const commandId = firstNonEmptyString(delta.command_id, delta.commandId);\n const command = commandId ? `/${commandId.replace(/^\\/+/, \"\")}` : \"command\";\n return sanitizeChannelProgressIdentifier(command, \"command\");\n}\n\nfunction getToolStatus(delta: Record<string, unknown>): \"completed\" | \"error\" {\n const status = firstNonEmptyString(delta.status)?.toLowerCase();\n return status === \"error\" || status === \"failed\" ? \"error\" : \"completed\";\n}\n\nfunction stringifyProgressValue(value: unknown): string | undefined {\n if (typeof value === \"string\") {\n return value;\n }\n if (value === undefined || value === null) {\n return undefined;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction formatToolErrorDetails(\n record: Record<string, unknown>,\n): string | undefined {\n const toolReturn = record.tool_return ?? record.toolReturn;\n const toolReturnRecord = asRecord(toolReturn);\n const preview = firstNonEmptyString(\n record.stderr,\n record.error,\n record.message,\n toolReturnRecord?.stderr,\n toolReturnRecord?.error,\n toolReturnRecord?.message,\n toolReturnRecord?.output,\n stringifyProgressValue(toolReturn),\n );\n const sanitized = sanitizeChannelProgressText(\n preview,\n MAX_PROGRESS_DETAILS_LENGTH,\n );\n return sanitized || undefined;\n}\n\nfunction toolNameForMessage(summary: ToolCallSummary | undefined): string {\n return summary?.name ? `: ${summary.name}` : \"\";\n}\n\n/**\n * Builds sanitized channel progress updates from stream deltas for a single\n * turn. Instances accumulate fragmented tool-call arguments across deltas,\n * so they must be scoped to one conversation turn (create one per turn and\n * drop it when the turn finishes) rather than shared across conversations.\n */\nexport type ChannelTurnProgressBuilder = {\n buildUpdates(delta: unknown): ChannelTurnProgressUpdate[];\n};\n\nexport function createChannelTurnProgressBuilder(\n options: ChannelTurnProgressBuilderOptions = {},\n): ChannelTurnProgressBuilder {\n // Fragmented tool arguments and names accumulated across stream deltas,\n // keyed by tool_call_id. Entries are dropped when the tool return arrives;\n // the whole builder is dropped with the turn.\n const argumentsByToolCallId = new Map<string, string>();\n const namesByToolCallId = new Map<string, string>();\n // A model step can stream its parallel calls separately, with different\n // message ids for server tools and approval requests. Keep one title across\n // those calls and their later client start/end events (which omit step_id).\n // Like the builder itself, these maps live only for the current turn.\n const batchesByStep = new Map<string, { title: string | null }>();\n const batchesByToolCallId = new Map<string, { title: string | null }>();\n\n function addToolBatchTitles(\n delta: unknown,\n updates: ChannelTurnProgressUpdate[],\n ): ChannelTurnProgressUpdate[] {\n const record = asRecord(delta);\n if (!record) return updates;\n const messageType = getMessageType(record);\n const isToolRequest =\n messageType === \"tool_call_message\" ||\n messageType === \"approval_request_message\";\n // Older streams may lack step_id but still group calls in one message.\n const stepKey = isToolRequest\n ? firstNonEmptyString(record.step_id, record.id)\n : undefined;\n let requestBatch = stepKey ? batchesByStep.get(stepKey) : undefined;\n if (stepKey && !requestBatch) {\n requestBatch = { title: null };\n batchesByStep.set(stepKey, requestBatch);\n }\n return updates.map((update) => {\n if (update.kind !== \"tool\") return update;\n const batch =\n (update.toolCallId\n ? batchesByToolCallId.get(update.toolCallId)\n : undefined) ?? requestBatch;\n if (!batch) return update;\n if (update.toolCallId) batchesByToolCallId.set(update.toolCallId, batch);\n if (batch.title === null && update.state === \"started\") {\n batch.title =\n firstNonEmptyString(update.toolTitle, update.toolDetails) ?? null;\n }\n return { ...update, toolBatchTitle: batch.title };\n });\n }\n\n // Wire shapes (see ToolCall / ToolCallDelta in @letta-ai/letta-client and\n // the local backend projections): flat `tool_call_id` / `name` /\n // `arguments` fields, delivered either as `tool_calls` (array or single\n // delta object) or the deprecated `tool_call`.\n function extractToolCallSummary(value: unknown): ToolCallSummary | null {\n const record = asRecord(value);\n if (!record) {\n return null;\n }\n const id = firstNonEmptyString(record.tool_call_id);\n const cacheId = id\n ? sanitizeChannelProgressIdentifier(id, \"tool-call\")\n : undefined;\n const extractedName = firstNonEmptyString(record.name);\n if (cacheId && extractedName) {\n namesByToolCallId.set(cacheId, extractedName);\n }\n const resolvedName =\n extractedName ?? (cacheId ? namesByToolCallId.get(cacheId) : undefined);\n const rawArguments =\n typeof record.arguments === \"string\" && record.arguments.length > 0\n ? record.arguments\n : asRecord(record.arguments)\n ? JSON.stringify(record.arguments)\n : undefined;\n\n // Accumulate fragmented arguments across stream deltas for the same tool\n // call. A fragment that already parses as complete JSON replaces earlier\n // partial state (some streams first expose only command content, then\n // later re-send full arguments including the description).\n let argumentsText: string | undefined;\n if (cacheId && rawArguments !== undefined) {\n const existing = argumentsByToolCallId.get(cacheId);\n if (parseToolArguments(rawArguments)) {\n argumentsByToolCallId.set(cacheId, rawArguments);\n argumentsText = rawArguments;\n } else if (existing) {\n if (parseToolArguments(existing)) {\n argumentsText = existing;\n } else {\n const accumulated = existing + rawArguments;\n argumentsByToolCallId.set(cacheId, accumulated);\n argumentsText = accumulated;\n }\n } else {\n argumentsByToolCallId.set(cacheId, rawArguments);\n argumentsText = rawArguments;\n }\n } else if (!id && rawArguments !== undefined) {\n argumentsText = rawArguments;\n }\n\n if (!id && !resolvedName) {\n return null;\n }\n return {\n ...(cacheId ? { id: cacheId } : {}),\n ...(resolvedName\n ? { name: sanitizeChannelProgressIdentifier(resolvedName, \"tool\") }\n : {}),\n ...(argumentsText ? { argumentsText } : {}),\n };\n }\n\n function extractClientToolSummary(\n record: Record<string, unknown>,\n ): ToolCallSummary | null {\n const id = firstNonEmptyString(record.tool_call_id, record.toolCallId);\n const cacheId = id\n ? sanitizeChannelProgressIdentifier(id, \"tool-call\")\n : undefined;\n const extractedName = firstNonEmptyString(\n record.tool_name,\n record.toolName,\n record.name,\n );\n if (cacheId && extractedName) {\n namesByToolCallId.set(cacheId, extractedName);\n }\n const resolvedName =\n extractedName ?? (cacheId ? namesByToolCallId.get(cacheId) : undefined);\n const rawArguments = firstNonEmptyString(\n record.tool_args,\n record.toolArgs,\n record.arguments,\n );\n if (cacheId && rawArguments) {\n argumentsByToolCallId.set(cacheId, rawArguments);\n }\n const argumentsText =\n rawArguments ??\n (cacheId ? argumentsByToolCallId.get(cacheId) : undefined);\n if (!cacheId && !resolvedName) {\n return null;\n }\n return {\n ...(cacheId ? { id: cacheId } : {}),\n ...(resolvedName\n ? { name: sanitizeChannelProgressIdentifier(resolvedName, \"tool\") }\n : {}),\n ...(argumentsText ? { argumentsText } : {}),\n };\n }\n\n function extractToolCalls(delta: Record<string, unknown>): ToolCallSummary[] {\n const candidates: unknown[] = Array.isArray(delta.tool_calls)\n ? delta.tool_calls\n : delta.tool_calls\n ? [delta.tool_calls]\n : delta.tool_call\n ? [delta.tool_call]\n : [];\n\n const summaries: ToolCallSummary[] = [];\n const seen = new Set<string>();\n for (const candidate of candidates) {\n const summary = extractToolCallSummary(candidate);\n if (!summary) {\n continue;\n }\n const key = `${summary.id ?? \"\"}:${summary.name ?? \"\"}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n summaries.push(summary);\n }\n return summaries;\n }\n\n function extractToolReturns(\n delta: Record<string, unknown>,\n ): ToolReturnSummary[] {\n const candidates: unknown[] = Array.isArray(delta.tool_returns)\n ? delta.tool_returns\n : [delta];\n\n const summaries: ToolReturnSummary[] = [];\n const seen = new Set<string>();\n for (const candidate of candidates) {\n const record = asRecord(candidate);\n if (!record) {\n continue;\n }\n const summary = extractToolCallSummary(record);\n if (!summary) {\n continue;\n }\n const key = `${summary.id ?? \"\"}:${summary.name ?? \"\"}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n const status = getToolStatus(record);\n summaries.push({\n summary,\n status,\n ...(status === \"error\"\n ? { errorDetails: formatToolErrorDetails(record) }\n : {}),\n });\n }\n return summaries;\n }\n\n function buildToolCallUpdates(\n record: Record<string, unknown>,\n runId: string | undefined,\n ): ChannelTurnProgressUpdate[] {\n const tools = extractToolCalls(record);\n const updates: ChannelTurnProgressUpdate[] = [];\n for (const tool of tools) {\n const toolDetails = formatToolProgressDetails(tool, options);\n const toolTitle = formatToolProgressTitle(tool, \"started\");\n updates.push(\n withRunId(\n {\n kind: \"tool\",\n state: \"started\",\n message: `Preparing tool${toolNameForMessage(tool)}`,\n ...(tool.id ? { toolCallId: tool.id } : {}),\n ...(tool.name ? { toolName: tool.name } : {}),\n ...(toolDetails ? { toolDetails } : {}),\n ...(toolTitle ? { toolTitle } : {}),\n },\n runId,\n ),\n );\n }\n return updates;\n }\n\n function buildUpdates(delta: unknown): ChannelTurnProgressUpdate[] {\n const record = asRecord(delta);\n if (!record) {\n return [];\n }\n\n const messageType = getMessageType(record);\n const runId = getRunId(record);\n\n switch (messageType) {\n case \"reasoning_message\":\n return [\n withRunId(\n {\n kind: \"thinking\",\n state: \"updated\",\n message: \"Thinking\",\n },\n runId,\n ),\n ];\n\n case \"assistant_message\":\n return [\n withRunId(\n {\n kind: \"responding\",\n state: \"updated\",\n message: \"Writing reply\",\n },\n runId,\n ),\n ];\n\n case \"approval_request_message\":\n return buildToolCallUpdates(record, runId);\n\n case \"tool_call_message\": {\n const updates = buildToolCallUpdates(record, runId);\n if (updates.length === 0) {\n return [\n withRunId(\n {\n kind: \"tool\",\n state: \"started\",\n message: \"Preparing tool call\",\n },\n runId,\n ),\n ];\n }\n return updates;\n }\n\n case \"tool_return_message\": {\n const toolReturns = extractToolReturns(record);\n const updates: ChannelTurnProgressUpdate[] = [];\n for (const { summary, status, errorDetails } of toolReturns) {\n // Resolve details from the accumulated arguments for this call,\n // then drop the per-call caches.\n const accumulatedArgs = summary.id\n ? argumentsByToolCallId.get(summary.id)\n : undefined;\n if (summary.id) {\n argumentsByToolCallId.delete(summary.id);\n namesByToolCallId.delete(summary.id);\n }\n const toolWithAccumulatedArgs = accumulatedArgs\n ? { ...summary, argumentsText: accumulatedArgs }\n : summary;\n // toolDetails stays argument-derived even on errors: surfaces use it\n // for row titles (e.g. shell rows), so tool output must never leak\n // into it. Error-output previews travel in errorDetails (LET-9509).\n const toolDetails = formatToolProgressDetails(\n toolWithAccumulatedArgs,\n options,\n );\n const toolTitle = formatToolProgressTitle(\n toolWithAccumulatedArgs,\n status,\n );\n updates.push(\n withRunId(\n {\n kind: \"tool\",\n state: status,\n message: status === \"error\" ? \"Tool failed\" : \"Tool finished\",\n ...(summary.id ? { toolCallId: summary.id } : {}),\n ...(summary.name ? { toolName: summary.name } : {}),\n ...(toolDetails ? { toolDetails } : {}),\n ...(status === \"error\" && errorDetails ? { errorDetails } : {}),\n ...(toolTitle ? { toolTitle } : {}),\n },\n runId,\n ),\n );\n }\n return updates;\n }\n\n case \"client_tool_start\": {\n const tool = extractClientToolSummary(record);\n const toolDetails = tool\n ? formatToolProgressDetails(tool, options)\n : undefined;\n const toolTitle = tool\n ? formatToolProgressTitle(tool, \"started\")\n : undefined;\n return [\n withRunId(\n {\n kind: \"tool\",\n state: \"started\",\n message: \"Running tool\",\n ...(tool?.id ? { toolCallId: tool.id } : {}),\n ...(tool?.name ? { toolName: tool.name } : {}),\n ...(toolDetails ? { toolDetails } : {}),\n ...(toolTitle ? { toolTitle } : {}),\n },\n runId,\n ),\n ];\n }\n\n case \"client_tool_end\": {\n const state = getToolStatus(record);\n const tool = extractClientToolSummary(record);\n const accumulatedArgs = tool?.id\n ? argumentsByToolCallId.get(tool.id)\n : undefined;\n if (tool?.id) {\n argumentsByToolCallId.delete(tool.id);\n namesByToolCallId.delete(tool.id);\n }\n const toolWithAccumulatedArgs =\n tool && accumulatedArgs\n ? { ...tool, argumentsText: accumulatedArgs }\n : tool;\n // toolDetails stays argument-derived even on errors (see the\n // tool_return_message handler); error previews go to errorDetails.\n const toolDetails = toolWithAccumulatedArgs\n ? formatToolProgressDetails(toolWithAccumulatedArgs, options)\n : undefined;\n const errorDetails =\n state === \"error\" ? formatToolErrorDetails(record) : undefined;\n const toolTitle = toolWithAccumulatedArgs\n ? formatToolProgressTitle(toolWithAccumulatedArgs, state)\n : undefined;\n return [\n withRunId(\n {\n kind: \"tool\",\n state,\n message: state === \"error\" ? \"Tool failed\" : \"Tool finished\",\n ...(tool?.id ? { toolCallId: tool.id } : {}),\n ...(tool?.name ? { toolName: tool.name } : {}),\n ...(toolDetails ? { toolDetails } : {}),\n ...(errorDetails ? { errorDetails } : {}),\n ...(toolTitle ? { toolTitle } : {}),\n },\n runId,\n ),\n ];\n }\n\n case \"slash_command_start\": {\n const command = getSlashCommand(record);\n return [\n withRunId(\n {\n kind: \"command\",\n state: \"started\",\n message: `Running ${command}`,\n command,\n },\n runId,\n ),\n ];\n }\n\n case \"slash_command_end\": {\n const command = getSlashCommand(record);\n const success = record.success !== false;\n return [\n withRunId(\n {\n kind: \"command\",\n state: success ? \"completed\" : \"error\",\n message: success ? `${command} finished` : `${command} failed`,\n command,\n },\n runId,\n ),\n ];\n }\n\n case \"command_start\": {\n const command = getCommandId(record);\n return [\n withRunId(\n {\n kind: \"command\",\n state: \"started\",\n message: \"Running command\",\n command,\n },\n runId,\n ),\n ];\n }\n\n case \"command_end\": {\n const command = getCommandId(record);\n const success = record.success !== false;\n return [\n withRunId(\n {\n kind: \"command\",\n state: success ? \"completed\" : \"error\",\n message: success ? \"Command finished\" : \"Command failed\",\n command,\n },\n runId,\n ),\n ];\n }\n\n case \"status\": {\n const message = sanitizeChannelProgressText(record.message);\n if (!message) {\n return [];\n }\n return [\n withRunId(\n {\n kind: \"status\",\n state: \"updated\",\n message,\n },\n runId,\n ),\n ];\n }\n\n case \"retry\": {\n const attempt = Number(record.attempt);\n const maxAttempts = Number(record.max_attempts ?? record.maxAttempts);\n const suffix =\n Number.isFinite(attempt) && Number.isFinite(maxAttempts)\n ? ` (${attempt}/${maxAttempts})`\n : \"\";\n return [\n withRunId(\n {\n kind: \"retry\",\n state: \"updated\",\n message: `Retrying request${suffix}`,\n },\n runId,\n ),\n ];\n }\n\n case \"loop_error\":\n return [\n withRunId(\n {\n kind: \"error\",\n state: \"error\",\n message: \"Encountered an error\",\n },\n runId,\n ),\n ];\n\n default:\n return [];\n }\n }\n\n return {\n buildUpdates: (delta) => addToolBatchTitles(delta, buildUpdates(delta)),\n };\n}\n",
|
|
15
15
|
"/**\n * Canonical thread keying for channel route identity.\n *\n * A route maps (channel, account, chat, thread) to one agent conversation.\n * Chats without a thread (for example a Slack DM outside any thread) still\n * need a stable key so every top-level message reuses the same route instead\n * of creating a new conversation per message. That key is\n * CHANNEL_ROOT_THREAD_KEY.\n *\n * The key is route identity only. It is not a platform thread id: outbound\n * replies for a root-keyed route must not target a thread. Use\n * channelRouteThreadIdFromKey to translate a persisted key back into a\n * nullable platform thread id.\n */\nexport const CHANNEL_ROOT_THREAD_KEY = \"__root__\";\n\n/** Canonical route thread key: the trimmed thread id, or the root sentinel. */\nexport function resolveChannelRouteThreadKey(threadId?: string | null): string {\n const trimmed = threadId?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : CHANNEL_ROOT_THREAD_KEY;\n}\n\n/** Translate a persisted route thread key back into a platform thread id. */\nexport function channelRouteThreadIdFromKey(\n threadKey?: string | null,\n): string | null {\n const trimmed = threadKey?.trim();\n if (!trimmed || trimmed === CHANNEL_ROOT_THREAD_KEY) return null;\n return trimmed;\n}\n"
|
|
16
16
|
],
|
|
17
|
-
"mappings": "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",
|
|
18
|
-
"debugId": "
|
|
17
|
+
"mappings": "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",
|
|
18
|
+
"debugId": "DBFBC822A4AE0EB164756E2164756E21",
|
|
19
19
|
"names": []
|
|
20
20
|
}
|
package/dist/channels-slack.js
CHANGED
|
@@ -1257,7 +1257,8 @@ function resolveSlackConcreteActivity(event) {
|
|
|
1257
1257
|
if (event.kind !== "tool" || !isNonEmptyString3(event.toolName) || event.toolName.toLowerCase() === "messagechannel") {
|
|
1258
1258
|
return null;
|
|
1259
1259
|
}
|
|
1260
|
-
|
|
1260
|
+
const descriptions = event.toolBatchTitle !== undefined ? [event.toolBatchTitle] : [event.toolTitle, event.toolDetails];
|
|
1261
|
+
for (const description of descriptions) {
|
|
1261
1262
|
if (!isNonEmptyString3(description)) {
|
|
1262
1263
|
continue;
|
|
1263
1264
|
}
|
|
@@ -1467,6 +1468,12 @@ ${loadingText}`;
|
|
|
1467
1468
|
signatureByConversation.set(stateKey, signature);
|
|
1468
1469
|
const previous = writePromiseByConversation.get(stateKey) ?? Promise.resolve();
|
|
1469
1470
|
const operation = previous.then(async () => {
|
|
1471
|
+
if (footerText && !stateByConversation.get(stateKey)?.isThinkingActive) {
|
|
1472
|
+
if (signatureByConversation.get(stateKey) === signature) {
|
|
1473
|
+
signatureByConversation.delete(stateKey);
|
|
1474
|
+
}
|
|
1475
|
+
return false;
|
|
1476
|
+
}
|
|
1470
1477
|
try {
|
|
1471
1478
|
await setStatus.call(slackClient.assistant?.threads, {
|
|
1472
1479
|
channel_id: source.chatId,
|
|
@@ -1474,6 +1481,16 @@ ${loadingText}`;
|
|
|
1474
1481
|
status: footerText,
|
|
1475
1482
|
...footerText ? { loading_messages: [loadingText] } : {}
|
|
1476
1483
|
});
|
|
1484
|
+
const state = stateByConversation.get(stateKey);
|
|
1485
|
+
if (footerText && state && !state.isThinkingActive) {
|
|
1486
|
+
await setStatus.call(slackClient.assistant?.threads, {
|
|
1487
|
+
channel_id: source.chatId,
|
|
1488
|
+
thread_ts: threadTs,
|
|
1489
|
+
status: ""
|
|
1490
|
+
});
|
|
1491
|
+
clearedStaleReplyKeys.add(replyKey);
|
|
1492
|
+
return true;
|
|
1493
|
+
}
|
|
1477
1494
|
if (footerText)
|
|
1478
1495
|
clearedStaleReplyKeys.delete(replyKey);
|
|
1479
1496
|
else
|
|
@@ -1572,7 +1589,40 @@ ${loadingText}`;
|
|
|
1572
1589
|
await writeStatus(source, "", "", { force: true });
|
|
1573
1590
|
signatureByConversation.delete(key);
|
|
1574
1591
|
}
|
|
1592
|
+
async function refresh(source) {
|
|
1593
|
+
const key = getConversationKey(source);
|
|
1594
|
+
const state = key ? stateByConversation.get(key) : undefined;
|
|
1595
|
+
if (!key || !state?.isThinkingActive)
|
|
1596
|
+
return false;
|
|
1597
|
+
await writeStatus(source, state.typingFooterText, state.thinkingText, {
|
|
1598
|
+
force: true
|
|
1599
|
+
});
|
|
1600
|
+
if (stateByConversation.get(key) === state && state.isThinkingActive) {
|
|
1601
|
+
scheduleKeepalive(key);
|
|
1602
|
+
}
|
|
1603
|
+
return true;
|
|
1604
|
+
}
|
|
1605
|
+
async function handleLifecycle(event) {
|
|
1606
|
+
if (event.type === "queued") {
|
|
1607
|
+
if (await refresh(event.source))
|
|
1608
|
+
return;
|
|
1609
|
+
if (event.source.showStartupStatus) {
|
|
1610
|
+
await activate(event.source, SLACK_ASSISTANT_STARTUP_STATUS, SLACK_ASSISTANT_STARTUP_STATUS);
|
|
1611
|
+
}
|
|
1612
|
+
return;
|
|
1613
|
+
}
|
|
1614
|
+
for (const source of getUniqueSources(event.sources)) {
|
|
1615
|
+
if (event.type === "processing") {
|
|
1616
|
+
await clearStale(source);
|
|
1617
|
+
} else if (event.stopReason !== "requires_approval") {
|
|
1618
|
+
const remaining = event.remainingSources?.some((other) => other.accountId === source.accountId && getConversationKey(other) === getConversationKey(source) && getLifecycleReplyKey(other) === getLifecycleReplyKey(source));
|
|
1619
|
+
if (!remaining)
|
|
1620
|
+
await deactivate(source);
|
|
1621
|
+
}
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1575
1624
|
return {
|
|
1625
|
+
handleLifecycle,
|
|
1576
1626
|
getUniqueSources,
|
|
1577
1627
|
getLifecycleErrorReplyKey,
|
|
1578
1628
|
activate,
|
|
@@ -1644,4 +1694,4 @@ export {
|
|
|
1644
1694
|
SLACK_ASSISTANT_STARTUP_STATUS
|
|
1645
1695
|
};
|
|
1646
1696
|
|
|
1647
|
-
//# debugId=
|
|
1697
|
+
//# debugId=39DB586FC82F32A164756E2164756E21
|