@letta-ai/letta-code 0.31.14 → 0.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-presets.js +73 -1
- package/dist/agent-presets.js.map +2 -2
- package/dist/app-server-client.cjs +11 -1
- package/dist/app-server-client.cjs.map +3 -3
- package/dist/app-server-client.js +11 -1
- package/dist/app-server-client.js.map +3 -3
- package/dist/channels-slack.js +19 -4
- package/dist/channels-slack.js.map +3 -3
- package/dist/mcp-client.js +2 -2
- package/dist/mcp-client.js.map +1 -1
- package/dist/memory-constraints.js +160 -2
- package/dist/memory-constraints.js.map +3 -3
- package/dist/types/agent/acting-user.d.ts +2 -0
- package/dist/types/agent/acting-user.d.ts.map +1 -1
- package/dist/types/agent/client-skills.d.ts +2 -0
- package/dist/types/agent/client-skills.d.ts.map +1 -1
- package/dist/types/agent/memory-auth.d.ts +3 -0
- package/dist/types/agent/memory-auth.d.ts.map +1 -0
- package/dist/types/agent/memory-constraints.d.ts +2 -0
- package/dist/types/agent/memory-constraints.d.ts.map +1 -1
- package/dist/types/agent/memory-filesystem.d.ts.map +1 -1
- package/dist/types/agent/memory-git-hooks.d.ts +3 -1
- package/dist/types/agent/memory-git-hooks.d.ts.map +1 -1
- package/dist/types/agent/memory-git.d.ts +0 -6
- package/dist/types/agent/memory-git.d.ts.map +1 -1
- package/dist/types/agent/message.d.ts.map +1 -1
- package/dist/types/agent/modify.d.ts +2 -1
- package/dist/types/agent/modify.d.ts.map +1 -1
- package/dist/types/agent/subagents/manager.d.ts +1 -1
- package/dist/types/agent/subagents/manager.d.ts.map +1 -1
- package/dist/types/agent/subagents/subagent-launcher.d.ts +2 -0
- package/dist/types/agent/subagents/subagent-launcher.d.ts.map +1 -1
- package/dist/types/app-server-client.d.ts +5 -1
- package/dist/types/app-server-client.d.ts.map +1 -1
- package/dist/types/auth/desktop-credentials.d.ts +16 -0
- package/dist/types/auth/desktop-credentials.d.ts.map +1 -0
- package/dist/types/backend/api/client.d.ts.map +1 -1
- package/dist/types/backend/api/request.d.ts.map +1 -1
- package/dist/types/backend/backend.d.ts +3 -0
- package/dist/types/backend/backend.d.ts.map +1 -1
- package/dist/types/backend/dev/pi-request-headers.d.ts +6 -0
- package/dist/types/backend/dev/pi-request-headers.d.ts.map +1 -0
- package/dist/types/backend/dev/pi-stream-adapter.d.ts.map +1 -1
- package/dist/types/backend/local/compaction.d.ts +1 -0
- package/dist/types/backend/local/compaction.d.ts.map +1 -1
- package/dist/types/backend/local/local-backend.d.ts.map +1 -1
- package/dist/types/channels/slack/model-picker-blocks.d.ts.map +1 -1
- package/dist/types/cli/helpers/stream-processor.d.ts +1 -0
- package/dist/types/cli/helpers/stream-processor.d.ts.map +1 -1
- package/dist/types/cli/helpers/stream.d.ts +1 -0
- package/dist/types/cli/helpers/stream.d.ts.map +1 -1
- package/dist/types/memory-constraints.d.ts +23 -0
- package/dist/types/memory-constraints.d.ts.map +1 -1
- package/dist/types/providers/chatgpt-usage-service.d.ts +72 -0
- package/dist/types/providers/chatgpt-usage-service.d.ts.map +1 -0
- package/dist/types/queue/queue-runtime.d.ts +29 -0
- package/dist/types/queue/queue-runtime.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/tools/impl/github-pull-request-tracker.d.ts.map +1 -1
- package/dist/types/tools/impl/ls.d.ts.map +1 -1
- package/dist/types/tools/impl/process_manager.d.ts +2 -0
- package/dist/types/tools/impl/process_manager.d.ts.map +1 -1
- package/dist/types/tools/impl/shell-env.d.ts.map +1 -1
- package/dist/types/tools/impl/task.d.ts +2 -0
- package/dist/types/tools/impl/task.d.ts.map +1 -1
- package/dist/types/tools/toolset.d.ts +1 -0
- package/dist/types/tools/toolset.d.ts.map +1 -1
- package/dist/types/types/protocol.d.ts +5 -1
- package/dist/types/types/protocol.d.ts.map +1 -1
- package/dist/types/types/protocol_v2.d.ts +4 -6
- package/dist/types/types/protocol_v2.d.ts.map +1 -1
- package/dist/types/types/queue-update-protocol.d.ts +22 -0
- package/dist/types/types/queue-update-protocol.d.ts.map +1 -1
- package/dist/types/utils/message-queue-bridge.d.ts +4 -0
- package/dist/types/utils/message-queue-bridge.d.ts.map +1 -1
- package/dist/types/utils/secrets-store.d.ts +4 -8
- package/dist/types/utils/secrets-store.d.ts.map +1 -1
- package/dist/types/websocket/listener/inbound-queue.d.ts.map +1 -1
- package/dist/types/websocket/listener/protocol-outbound.d.ts.map +1 -1
- package/letta.js +77772 -76901
- package/package.json +1 -1
- package/scripts/codex-watch/diff-models-json.test.ts +94 -0
- package/scripts/codex-watch/diff-models-json.ts +66 -12
- package/scripts/isolated-unit-tests.json +15 -0
- package/scripts/source-file-size-baseline.json +7 -7
- package/skills/letta-guide/SKILL.md +6 -1
- package/skills/self-configuration/SKILL.md +3 -14
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"sources": ["../src/types/app-server-info.ts", "../src/app-server-client.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"export const APP_SERVER_PROTOCOL_VERSION = 1;\n\nexport interface AppServerInfoCommand {\n type: \"app_server_info\";\n /** Echoed back in the response for request correlation. */\n request_id: string;\n}\n\nexport interface AppServerInfoResponseMessage {\n type: \"app_server_info_response\";\n request_id: string;\n /** Synchronous post-auth capability discovery has no domain failure variant. */\n success: true;\n backend: \"local\" | \"api\";\n letta_code_version: string;\n /** Wire value reported by the server; clients compare it with their supported version. */\n protocol_version: number;\n capabilities: {\n agent_management: boolean;\n conversation_management: boolean;\n memory_management: boolean;\n runtime_start: boolean;\n runtime_workspace_sandbox?: boolean;\n runtime_external_tools_update?: boolean;\n split_channels: boolean;\n };\n}\n\nexport function isAppServerInfoResponseMessage(\n message: unknown,\n): message is AppServerInfoResponseMessage {\n if (!message || typeof message !== \"object\" || Array.isArray(message)) {\n return false;\n }\n\n const candidate = message as Record<string, unknown>;\n const capabilities = candidate.capabilities;\n if (\n !capabilities ||\n typeof capabilities !== \"object\" ||\n Array.isArray(capabilities)\n ) {\n return false;\n }\n\n const capabilityRecord = capabilities as Record<string, unknown>;\n return (\n candidate.type === \"app_server_info_response\" &&\n typeof candidate.request_id === \"string\" &&\n candidate.request_id.length > 0 &&\n candidate.success === true &&\n (candidate.backend === \"local\" || candidate.backend === \"api\") &&\n typeof candidate.letta_code_version === \"string\" &&\n typeof candidate.protocol_version === \"number\" &&\n Number.isInteger(candidate.protocol_version) &&\n typeof capabilityRecord.agent_management === \"boolean\" &&\n typeof capabilityRecord.conversation_management === \"boolean\" &&\n typeof capabilityRecord.memory_management === \"boolean\" &&\n typeof capabilityRecord.runtime_start === \"boolean\" &&\n (capabilityRecord.runtime_workspace_sandbox === undefined ||\n typeof capabilityRecord.runtime_workspace_sandbox === \"boolean\") &&\n (capabilityRecord.runtime_external_tools_update === undefined ||\n typeof capabilityRecord.runtime_external_tools_update === \"boolean\") &&\n typeof capabilityRecord.split_channels === \"boolean\"\n );\n}\n",
|
|
6
|
-
"import { isAppServerInfoResponseMessage } from \"./types/app-server-info\";\n\nexport type { AppServerInfoResponseMessage } from \"./types/app-server-info\";\nexport { isAppServerInfoResponseMessage } from \"./types/app-server-info\";\n\nimport type {\n AbortMessageCommand,\n AbortMessageResponseMessage,\n AppServerInfoResponseMessage,\n ConversationListCommand,\n ConversationListResponseMessage,\n ExternalToolCallRequestMessage,\n ExternalToolCallResult,\n InputAcceptedResponseMessage,\n InputCommand,\n MonitorStopCommand,\n MonitorStopResponse,\n RuntimeExternalToolsUpdateCommand,\n RuntimeExternalToolsUpdateResponseMessage,\n RuntimeStartCommand,\n RuntimeStartResponseMessage,\n SyncCommand,\n SyncResponseMessage,\n WsProtocolCommand,\n WsProtocolMessage,\n} from \"./types/app-server-protocol\";\n\nexport type AppServerChannel = \"control\" | \"stream\";\n\nexport type AppServerRawCommand = Record<string, unknown> & {\n type: string;\n request_id?: string;\n};\n\nexport type AppServerRawResponse = Record<string, unknown> & {\n type: string;\n request_id?: string;\n};\n\nexport type AppServerSendCommand = WsProtocolCommand | AppServerRawCommand;\n\n/** Receives every parsed protocol frame from the app-server WebSocket. */\nexport type AppServerMessageHandler = (\n message: WsProtocolMessage,\n channel: AppServerChannel,\n) => void;\n\n/** Called synchronously before a typed or raw command is written to the socket. */\nexport type AppServerSendHandler = (command: AppServerSendCommand) => void;\n\nexport interface AppServerDisconnectEvent {\n channel: AppServerChannel;\n event: unknown;\n}\n\n/** Called once when the WebSocket closes before client.close(). */\nexport type AppServerDisconnectHandler = (\n disconnect: AppServerDisconnectEvent,\n) => void;\n\nexport type AppServerExternalToolCallHandler = (\n request: ExternalToolCallRequestMessage,\n) => Promise<ExternalToolCallResult> | ExternalToolCallResult;\n\nexport interface AppServerSocketLike {\n readyState: number;\n send(data: string): void;\n close(): void;\n addEventListener?(type: string, listener: (event: unknown) => void): void;\n removeEventListener?(type: string, listener: (event: unknown) => void): void;\n on?(type: string, listener: (event: unknown) => void): void;\n off?(type: string, listener: (event: unknown) => void): void;\n once?(type: string, listener: (event: unknown) => void): void;\n}\n\nexport interface AppServerSocketOptions {\n headers?: Record<string, string>;\n}\n\nexport type AppServerSocketConstructor = new (\n url: string,\n options?: AppServerSocketOptions,\n) => AppServerSocketLike;\n\nexport interface AppServerClientOptions {\n /** Base app-server URL, e.g. ws://127.0.0.1:4500 or http://127.0.0.1:4500. */\n url: string;\n /** Optional capability token sent as Authorization: Bearer <token>; requires a WebSocket implementation with header support. */\n authToken?: string;\n /** Optional WebSocket constructor for Node/tests. Browsers use globalThis.WebSocket. */\n WebSocket?: AppServerSocketConstructor;\n /** Default timeout for request_id-correlated control requests. */\n requestTimeoutMs?: number;\n}\n\nexport interface AppServerRequestOptions<TMessage extends WsProtocolMessage> {\n timeoutMs?: number;\n predicate?: (message: WsProtocolMessage) => message is TMessage;\n}\n\nexport type AppServerRequestCommand = Extract<\n WsProtocolCommand,\n { request_id?: string }\n>;\n\nexport type AppServerRequestCommandWithId = AppServerRequestCommand & {\n request_id: string;\n};\n\nexport type AppServerRequestBody = Record<string, unknown> & {\n request_id?: string;\n};\n\nexport interface AppServerRawRequestOptions<\n TResponse extends AppServerRawResponse,\n> {\n timeoutMs?: number;\n predicate: (message: unknown) => message is TResponse;\n}\n\ntype PendingRequest = {\n resolve: (message: WsProtocolMessage) => void;\n reject: (error: Error) => void;\n predicate?: (message: WsProtocolMessage) => boolean;\n timeout: ReturnType<typeof setTimeout>;\n};\n\nconst DEFAULT_REQUEST_TIMEOUT_MS = 30_000;\nconst WEBSOCKET_OPEN_STATE = 1;\n\nfunction getGlobalWebSocket(): AppServerSocketConstructor | undefined {\n return (globalThis as { WebSocket?: AppServerSocketConstructor }).WebSocket;\n}\n\nfunction normalizeBaseUrl(url: string): URL {\n const parsed = new URL(url);\n if (parsed.protocol === \"http:\") parsed.protocol = \"ws:\";\n if (parsed.protocol === \"https:\") parsed.protocol = \"wss:\";\n if (parsed.protocol !== \"ws:\" && parsed.protocol !== \"wss:\") {\n throw new Error(`Unsupported app-server URL protocol: ${parsed.protocol}`);\n }\n if (!parsed.pathname || parsed.pathname === \"/\") {\n parsed.pathname = \"/ws\";\n }\n return parsed;\n}\n\nexport function resolveAppServerUrl(url: string): string {\n const parsed = normalizeBaseUrl(url);\n parsed.searchParams.delete(\"channel\");\n return parsed.toString();\n}\n\n/**\n * @deprecated App-server uses one bidirectional WebSocket. Both historical\n * channel names resolve to that same socket URL.\n */\nexport function resolveAppServerChannelUrl(\n url: string,\n _channel: AppServerChannel,\n): string {\n return resolveAppServerUrl(url);\n}\n\nfunction attachSocketListener(\n socket: AppServerSocketLike,\n type: string,\n listener: (event: unknown) => void,\n): () => void {\n if (socket.addEventListener && socket.removeEventListener) {\n socket.addEventListener(type, listener);\n return () => socket.removeEventListener?.(type, listener);\n }\n\n if (socket.on) {\n socket.on(type, listener);\n return () => socket.off?.(type, listener);\n }\n\n throw new Error(\"WebSocket implementation does not support event listeners\");\n}\n\nfunction onceSocketEvent(\n socket: AppServerSocketLike,\n type: string,\n listener: (event: unknown) => void,\n): () => void {\n if (socket.once) {\n socket.once(type, listener);\n return () => socket.off?.(type, listener);\n }\n\n let detach = () => {};\n detach = attachSocketListener(socket, type, (event) => {\n detach();\n listener(event);\n });\n return detach;\n}\n\nfunction waitForSocketOpen(socket: AppServerSocketLike): Promise<void> {\n if (socket.readyState === WEBSOCKET_OPEN_STATE) {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n let detachOpen = () => {};\n let detachError = () => {};\n const cleanup = () => {\n detachOpen();\n detachError();\n };\n detachOpen = onceSocketEvent(socket, \"open\", () => {\n cleanup();\n resolve();\n });\n detachError = onceSocketEvent(socket, \"error\", (event) => {\n cleanup();\n reject(\n new Error(`App-server WebSocket failed to open: ${String(event)}`),\n );\n });\n });\n}\n\nfunction rawEventData(event: unknown): unknown {\n if (event && typeof event === \"object\" && \"data\" in event) {\n return (event as { data: unknown }).data;\n }\n return event;\n}\n\nfunction messageDataToString(data: unknown): string {\n const raw = rawEventData(data);\n if (typeof raw === \"string\") return raw;\n if (raw instanceof ArrayBuffer) {\n return new TextDecoder().decode(raw);\n }\n if (raw instanceof Uint8Array) {\n return new TextDecoder().decode(raw);\n }\n if (ArrayBuffer.isView(raw)) {\n return new TextDecoder().decode(\n new Uint8Array(raw.buffer as ArrayBuffer, raw.byteOffset, raw.byteLength),\n );\n }\n return String(raw);\n}\n\nfunction parseProtocolMessage(event: unknown): WsProtocolMessage {\n return JSON.parse(messageDataToString(event)) as WsProtocolMessage;\n}\n\nfunction appServerSocketOptions(\n authToken: string | undefined,\n): AppServerSocketOptions | undefined {\n if (authToken === undefined) {\n return undefined;\n }\n const token = authToken.trim();\n if (!token) {\n throw new Error(\"app-server auth token must not be empty\");\n }\n return { headers: { Authorization: `Bearer ${token}` } };\n}\n\nexport class AppServerClient {\n readonly socket: AppServerSocketLike;\n /** @deprecated Alias for socket. */\n readonly control: AppServerSocketLike;\n /** @deprecated Alias for socket; no second stream connection is created. */\n readonly stream: AppServerSocketLike;\n\n private readonly requestTimeoutMs: number;\n private readonly pending = new Map<string, PendingRequest>();\n private readonly messageHandlers = new Set<AppServerMessageHandler>();\n private readonly sendHandlers = new Set<AppServerSendHandler>();\n private readonly disconnectHandlers = new Set<AppServerDisconnectHandler>();\n private explicitlyClosed = false;\n private disconnectNotified = false;\n private nextRequestNumber = 0;\n\n constructor(options: AppServerClientOptions) {\n const WebSocket = options.WebSocket ?? getGlobalWebSocket();\n if (!WebSocket) {\n throw new Error(\"No WebSocket implementation available\");\n }\n\n this.requestTimeoutMs =\n options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n const socketOptions = appServerSocketOptions(options.authToken);\n this.socket = new WebSocket(\n resolveAppServerUrl(options.url),\n socketOptions,\n );\n this.control = this.socket;\n this.stream = this.socket;\n\n attachSocketListener(this.socket, \"message\", (event) => {\n this.handleMessage(event, \"control\");\n });\n attachSocketListener(this.socket, \"close\", (event) => {\n this.handleDisconnect(\"control\", event);\n });\n }\n\n async connect(): Promise<this> {\n await waitForSocketOpen(this.socket);\n return this;\n }\n\n close(): void {\n if (this.explicitlyClosed) return;\n this.explicitlyClosed = true;\n this.rejectAllPending(\"App-server client closed\");\n this.socket.close();\n }\n\n onMessage(handler: AppServerMessageHandler): () => void {\n this.messageHandlers.add(handler);\n return () => this.messageHandlers.delete(handler);\n }\n\n onSend(handler: AppServerSendHandler): () => void {\n this.sendHandlers.add(handler);\n return () => this.sendHandlers.delete(handler);\n }\n\n onDisconnect(handler: AppServerDisconnectHandler): () => void {\n this.disconnectHandlers.add(handler);\n return () => this.disconnectHandlers.delete(handler);\n }\n\n nextRequestId(prefix = \"req\"): string {\n this.nextRequestNumber += 1;\n return `${prefix}-${this.nextRequestNumber}`;\n }\n\n send(command: WsProtocolCommand): void {\n this.writeCommand(command);\n }\n\n private writeCommand(command: AppServerSendCommand): void {\n for (const handler of this.sendHandlers) {\n handler(command);\n }\n this.socket.send(JSON.stringify(command));\n }\n\n /**\n * Send a forward-compatible protocol command from a compatibility adapter.\n * Prefer the typed wrappers above this boundary for normal product code.\n */\n sendRaw(command: AppServerRawCommand): void {\n this.writeCommand(command);\n }\n\n /**\n * Request a forward-compatible response without mirroring the full protocol\n * union in a downstream compatibility adapter.\n */\n requestRaw<TResponse extends AppServerRawResponse>(\n command: AppServerRawCommand & { request_id: string },\n options: AppServerRawRequestOptions<TResponse>,\n ): Promise<TResponse> {\n const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pending.delete(command.request_id);\n reject(new Error(`Timed out waiting for ${command.request_id}`));\n }, timeoutMs);\n\n this.pending.set(command.request_id, {\n resolve: (message) => resolve(message as unknown as TResponse),\n reject,\n predicate: options.predicate,\n timeout,\n });\n\n try {\n this.sendRaw(command);\n } catch (error) {\n clearTimeout(timeout);\n this.pending.delete(command.request_id);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n\n request<TMessage extends WsProtocolMessage = WsProtocolMessage>(\n command: AppServerRequestCommandWithId,\n options?: AppServerRequestOptions<TMessage>,\n ): Promise<TMessage>;\n\n request<\n TType extends AppServerRequestCommand[\"type\"],\n TMessage extends WsProtocolMessage = WsProtocolMessage,\n >(\n type: TType,\n body?: AppServerRequestBody,\n options?: AppServerRequestOptions<TMessage>,\n ): Promise<TMessage>;\n\n request<TMessage extends WsProtocolMessage = WsProtocolMessage>(\n commandOrType:\n | AppServerRequestCommandWithId\n | AppServerRequestCommand[\"type\"],\n bodyOrOptions:\n | AppServerRequestBody\n | AppServerRequestOptions<TMessage> = {},\n maybeOptions: AppServerRequestOptions<TMessage> = {},\n ): Promise<TMessage> {\n const isTypeRequest = typeof commandOrType === \"string\";\n const command = isTypeRequest\n ? ({\n type: commandOrType,\n request_id:\n (bodyOrOptions as { request_id?: string }).request_id ??\n this.nextRequestId(commandOrType),\n ...(bodyOrOptions as object),\n } as AppServerRequestCommandWithId)\n : commandOrType;\n const options = isTypeRequest\n ? maybeOptions\n : (bodyOrOptions as AppServerRequestOptions<TMessage>);\n const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pending.delete(command.request_id);\n reject(new Error(`Timed out waiting for ${command.request_id}`));\n }, timeoutMs);\n\n this.pending.set(command.request_id, {\n resolve: (message) => resolve(message as TMessage),\n reject,\n predicate: options.predicate,\n timeout,\n });\n\n try {\n this.send(command);\n } catch (error) {\n clearTimeout(timeout);\n this.pending.delete(command.request_id);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n\n info(\n options: Omit<\n AppServerRequestOptions<AppServerInfoResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<AppServerInfoResponseMessage> {\n return this.request(\n {\n type: \"app_server_info\",\n request_id: this.nextRequestId(\"app-server-info\"),\n },\n {\n ...options,\n predicate: isAppServerInfoResponseMessage,\n },\n );\n }\n\n stopMonitor(\n command: Omit<MonitorStopCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<MonitorStopResponse>,\n \"predicate\"\n > = {},\n ): Promise<MonitorStopResponse> {\n return this.request(\n {\n type: \"monitor_stop\",\n ...command,\n request_id: command.request_id ?? this.nextRequestId(\"monitor-stop\"),\n },\n {\n ...options,\n predicate: (message): message is MonitorStopResponse =>\n message.type === \"monitor_stop_response\" &&\n message.process_id === command.process_id &&\n message.runtime.agent_id === command.runtime.agent_id &&\n message.runtime.conversation_id === command.runtime.conversation_id,\n },\n );\n }\n\n runtimeStart(\n command: Omit<RuntimeStartCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<RuntimeStartResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<RuntimeStartResponseMessage> {\n return this.request(\n {\n type: \"runtime_start\",\n request_id: command.request_id ?? this.nextRequestId(\"runtime-start\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is RuntimeStartResponseMessage =>\n message.type === \"runtime_start_response\",\n },\n );\n }\n\n runtimeExternalToolsUpdate(\n command: Omit<RuntimeExternalToolsUpdateCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<RuntimeExternalToolsUpdateResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<RuntimeExternalToolsUpdateResponseMessage> {\n return this.request(\n {\n type: \"runtime_external_tools_update\",\n request_id:\n command.request_id ?? this.nextRequestId(\"runtime-external-tools\"),\n ...command,\n },\n {\n ...options,\n predicate: (\n message,\n ): message is RuntimeExternalToolsUpdateResponseMessage =>\n message.type === \"runtime_external_tools_update_response\",\n },\n );\n }\n\n sync(\n command: Omit<SyncCommand, \"type\" | \"request_id\"> & { request_id?: string },\n options: Omit<\n AppServerRequestOptions<SyncResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<SyncResponseMessage> {\n return this.request(\n {\n type: \"sync\",\n request_id: command.request_id ?? this.nextRequestId(\"sync\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is SyncResponseMessage =>\n message.type === \"sync_response\",\n },\n );\n }\n\n abort(\n command: Omit<AbortMessageCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<AbortMessageResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<AbortMessageResponseMessage> {\n return this.request(\n {\n type: \"abort_message\",\n request_id: command.request_id ?? this.nextRequestId(\"abort\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is AbortMessageResponseMessage =>\n message.type === \"abort_message_response\",\n },\n );\n }\n\n conversationList(\n command: Omit<ConversationListCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n } = {},\n options: Omit<\n AppServerRequestOptions<ConversationListResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<ConversationListResponseMessage> {\n return this.request(\n {\n type: \"conversation_list\",\n request_id:\n command.request_id ?? this.nextRequestId(\"conversation-list\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is ConversationListResponseMessage =>\n message.type === \"conversation_list_response\",\n },\n );\n }\n\n onExternalToolCall(handler: AppServerExternalToolCallHandler): () => void {\n return this.onMessage((message, channel) => {\n if (\n channel !== \"control\" ||\n message.type !== \"external_tool_call_request\"\n ) {\n return;\n }\n\n void Promise.resolve(handler(message))\n .then((result) => {\n this.send({\n type: \"external_tool_call_response\",\n request_id: message.request_id,\n result,\n });\n })\n .catch((error) => {\n this.send({\n type: \"external_tool_call_response\",\n request_id: message.request_id,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n });\n }\n\n /**\n * Submit input to a runtime. Observe progress, tool activity, approvals, and\n * terminal lifecycle events through onMessage().\n */\n input(command: Omit<InputCommand, \"type\">): void {\n this.send({ type: \"input\", ...command });\n }\n\n /**\n * Submit an input and wait only until the listener accepts it into the\n * normal dispatch/queue path. This never waits for turn completion.\n */\n submitInput(\n command: Omit<InputCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<InputAcceptedResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<InputAcceptedResponseMessage> {\n return this.request(\n {\n type: \"input\",\n request_id: command.request_id ?? this.nextRequestId(\"input\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is InputAcceptedResponseMessage =>\n message.type === \"input_accepted\",\n },\n );\n }\n\n private handleMessage(event: unknown, channel: AppServerChannel): void {\n const message = parseProtocolMessage(event);\n\n for (const handler of this.messageHandlers) {\n handler(message, channel);\n }\n\n const requestId =\n message && typeof message === \"object\" && \"request_id\" in message\n ? (message as { request_id?: unknown }).request_id\n : undefined;\n if (channel !== \"control\" || typeof requestId !== \"string\") {\n return;\n }\n\n const pending = this.pending.get(requestId);\n if (!pending || (pending.predicate && !pending.predicate(message))) {\n return;\n }\n\n clearTimeout(pending.timeout);\n this.pending.delete(requestId);\n pending.resolve(message);\n }\n\n private rejectAllPending(reason: string): void {\n for (const [requestId, pending] of this.pending) {\n clearTimeout(pending.timeout);\n this.pending.delete(requestId);\n pending.reject(new Error(reason));\n }\n }\n\n private handleDisconnect(channel: AppServerChannel, event: unknown): void {\n this.rejectAllPending(\"App-server socket closed\");\n if (this.explicitlyClosed || this.disconnectNotified) return;\n this.disconnectNotified = true;\n for (const handler of this.disconnectHandlers) {\n handler({ channel, event });\n }\n }\n}\n\nexport function createAppServerClient(\n options: AppServerClientOptions,\n): AppServerClient {\n return new AppServerClient(options);\n}\n"
|
|
6
|
+
"import { isAppServerInfoResponseMessage } from \"./types/app-server-info\";\n\nexport type { AppServerInfoResponseMessage } from \"./types/app-server-info\";\nexport { isAppServerInfoResponseMessage } from \"./types/app-server-info\";\n\nimport type {\n AbortMessageCommand,\n AbortMessageResponseMessage,\n AppServerInfoResponseMessage,\n ConversationListCommand,\n ConversationListResponseMessage,\n ExternalToolCallRequestMessage,\n ExternalToolCallResult,\n InputAcceptedResponseMessage,\n InputCommand,\n MonitorStopCommand,\n MonitorStopResponse,\n ResumeQueueCommand,\n ResumeQueueResponseMessage,\n RuntimeExternalToolsUpdateCommand,\n RuntimeExternalToolsUpdateResponseMessage,\n RuntimeStartCommand,\n RuntimeStartResponseMessage,\n SyncCommand,\n SyncResponseMessage,\n WsProtocolCommand,\n WsProtocolMessage,\n} from \"./types/app-server-protocol\";\n\nexport type AppServerChannel = \"control\" | \"stream\";\n\nexport type AppServerRawCommand = Record<string, unknown> & {\n type: string;\n request_id?: string;\n};\n\nexport type AppServerRawResponse = Record<string, unknown> & {\n type: string;\n request_id?: string;\n};\n\nexport type AppServerSendCommand = WsProtocolCommand | AppServerRawCommand;\n\n/** Receives every parsed protocol frame from the app-server WebSocket. */\nexport type AppServerMessageHandler = (\n message: WsProtocolMessage,\n channel: AppServerChannel,\n) => void;\n\n/** Called synchronously before a typed or raw command is written to the socket. */\nexport type AppServerSendHandler = (command: AppServerSendCommand) => void;\n\nexport interface AppServerDisconnectEvent {\n channel: AppServerChannel;\n event: unknown;\n}\n\n/** Called once when the WebSocket closes before client.close(). */\nexport type AppServerDisconnectHandler = (\n disconnect: AppServerDisconnectEvent,\n) => void;\n\nexport type AppServerExternalToolCallHandler = (\n request: ExternalToolCallRequestMessage,\n) => Promise<ExternalToolCallResult> | ExternalToolCallResult;\n\nexport interface AppServerSocketLike {\n readyState: number;\n send(data: string): void;\n close(): void;\n addEventListener?(type: string, listener: (event: unknown) => void): void;\n removeEventListener?(type: string, listener: (event: unknown) => void): void;\n on?(type: string, listener: (event: unknown) => void): void;\n off?(type: string, listener: (event: unknown) => void): void;\n once?(type: string, listener: (event: unknown) => void): void;\n}\n\nexport interface AppServerSocketOptions {\n headers?: Record<string, string>;\n}\n\nexport type AppServerSocketConstructor = new (\n url: string,\n options?: AppServerSocketOptions,\n) => AppServerSocketLike;\n\nexport interface AppServerClientOptions {\n /** Base app-server URL, e.g. ws://127.0.0.1:4500 or http://127.0.0.1:4500. */\n url: string;\n /** Optional capability token sent as Authorization: Bearer <token>; requires a WebSocket implementation with header support. */\n authToken?: string;\n /** Optional WebSocket constructor for Node/tests. Browsers use globalThis.WebSocket. */\n WebSocket?: AppServerSocketConstructor;\n /** Default timeout for request_id-correlated control requests. */\n requestTimeoutMs?: number;\n}\n\nexport interface AppServerRequestOptions<TMessage extends WsProtocolMessage> {\n timeoutMs?: number;\n predicate?: (message: WsProtocolMessage) => message is TMessage;\n}\n\nexport type AppServerRequestCommand = Extract<\n WsProtocolCommand,\n { request_id?: string }\n>;\n\nexport type AppServerRequestCommandWithId = AppServerRequestCommand & {\n request_id: string;\n};\n\nexport type AppServerRequestBody = Record<string, unknown> & {\n request_id?: string;\n};\n\nexport interface AppServerRawRequestOptions<\n TResponse extends AppServerRawResponse,\n> {\n timeoutMs?: number;\n predicate: (message: unknown) => message is TResponse;\n}\n\ntype PendingRequest = {\n resolve: (message: WsProtocolMessage) => void;\n reject: (error: Error) => void;\n predicate?: (message: WsProtocolMessage) => boolean;\n timeout: ReturnType<typeof setTimeout>;\n};\n\nconst DEFAULT_REQUEST_TIMEOUT_MS = 30_000;\nconst WEBSOCKET_OPEN_STATE = 1;\n\nfunction getGlobalWebSocket(): AppServerSocketConstructor | undefined {\n return (globalThis as { WebSocket?: AppServerSocketConstructor }).WebSocket;\n}\n\nfunction normalizeBaseUrl(url: string): URL {\n const parsed = new URL(url);\n if (parsed.protocol === \"http:\") parsed.protocol = \"ws:\";\n if (parsed.protocol === \"https:\") parsed.protocol = \"wss:\";\n if (parsed.protocol !== \"ws:\" && parsed.protocol !== \"wss:\") {\n throw new Error(`Unsupported app-server URL protocol: ${parsed.protocol}`);\n }\n if (!parsed.pathname || parsed.pathname === \"/\") {\n parsed.pathname = \"/ws\";\n }\n return parsed;\n}\n\nexport function resolveAppServerUrl(url: string): string {\n const parsed = normalizeBaseUrl(url);\n parsed.searchParams.delete(\"channel\");\n return parsed.toString();\n}\n\n/**\n * @deprecated App-server uses one bidirectional WebSocket. Both historical\n * channel names resolve to that same socket URL.\n */\nexport function resolveAppServerChannelUrl(\n url: string,\n _channel: AppServerChannel,\n): string {\n return resolveAppServerUrl(url);\n}\n\nfunction attachSocketListener(\n socket: AppServerSocketLike,\n type: string,\n listener: (event: unknown) => void,\n): () => void {\n if (socket.addEventListener && socket.removeEventListener) {\n socket.addEventListener(type, listener);\n return () => socket.removeEventListener?.(type, listener);\n }\n\n if (socket.on) {\n socket.on(type, listener);\n return () => socket.off?.(type, listener);\n }\n\n throw new Error(\"WebSocket implementation does not support event listeners\");\n}\n\nfunction onceSocketEvent(\n socket: AppServerSocketLike,\n type: string,\n listener: (event: unknown) => void,\n): () => void {\n if (socket.once) {\n socket.once(type, listener);\n return () => socket.off?.(type, listener);\n }\n\n let detach = () => {};\n detach = attachSocketListener(socket, type, (event) => {\n detach();\n listener(event);\n });\n return detach;\n}\n\nfunction waitForSocketOpen(socket: AppServerSocketLike): Promise<void> {\n if (socket.readyState === WEBSOCKET_OPEN_STATE) {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n let detachOpen = () => {};\n let detachError = () => {};\n const cleanup = () => {\n detachOpen();\n detachError();\n };\n detachOpen = onceSocketEvent(socket, \"open\", () => {\n cleanup();\n resolve();\n });\n detachError = onceSocketEvent(socket, \"error\", (event) => {\n cleanup();\n reject(\n new Error(`App-server WebSocket failed to open: ${String(event)}`),\n );\n });\n });\n}\n\nfunction rawEventData(event: unknown): unknown {\n if (event && typeof event === \"object\" && \"data\" in event) {\n return (event as { data: unknown }).data;\n }\n return event;\n}\n\nfunction messageDataToString(data: unknown): string {\n const raw = rawEventData(data);\n if (typeof raw === \"string\") return raw;\n if (raw instanceof ArrayBuffer) {\n return new TextDecoder().decode(raw);\n }\n if (raw instanceof Uint8Array) {\n return new TextDecoder().decode(raw);\n }\n if (ArrayBuffer.isView(raw)) {\n return new TextDecoder().decode(\n new Uint8Array(raw.buffer as ArrayBuffer, raw.byteOffset, raw.byteLength),\n );\n }\n return String(raw);\n}\n\nfunction parseProtocolMessage(event: unknown): WsProtocolMessage {\n return JSON.parse(messageDataToString(event)) as WsProtocolMessage;\n}\n\nfunction appServerSocketOptions(\n authToken: string | undefined,\n): AppServerSocketOptions | undefined {\n if (authToken === undefined) {\n return undefined;\n }\n const token = authToken.trim();\n if (!token) {\n throw new Error(\"app-server auth token must not be empty\");\n }\n return { headers: { Authorization: `Bearer ${token}` } };\n}\n\nexport class AppServerClient {\n readonly socket: AppServerSocketLike;\n /** @deprecated Alias for socket. */\n readonly control: AppServerSocketLike;\n /** @deprecated Alias for socket; no second stream connection is created. */\n readonly stream: AppServerSocketLike;\n\n private readonly requestTimeoutMs: number;\n private readonly pending = new Map<string, PendingRequest>();\n private readonly messageHandlers = new Set<AppServerMessageHandler>();\n private readonly sendHandlers = new Set<AppServerSendHandler>();\n private readonly disconnectHandlers = new Set<AppServerDisconnectHandler>();\n private explicitlyClosed = false;\n private disconnectNotified = false;\n private nextRequestNumber = 0;\n\n constructor(options: AppServerClientOptions) {\n const WebSocket = options.WebSocket ?? getGlobalWebSocket();\n if (!WebSocket) {\n throw new Error(\"No WebSocket implementation available\");\n }\n\n this.requestTimeoutMs =\n options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n const socketOptions = appServerSocketOptions(options.authToken);\n this.socket = new WebSocket(\n resolveAppServerUrl(options.url),\n socketOptions,\n );\n this.control = this.socket;\n this.stream = this.socket;\n\n attachSocketListener(this.socket, \"message\", (event) => {\n this.handleMessage(event, \"control\");\n });\n attachSocketListener(this.socket, \"close\", (event) => {\n this.handleDisconnect(\"control\", event);\n });\n }\n\n async connect(): Promise<this> {\n await waitForSocketOpen(this.socket);\n return this;\n }\n\n close(): void {\n if (this.explicitlyClosed) return;\n this.explicitlyClosed = true;\n this.rejectAllPending(\"App-server client closed\");\n this.socket.close();\n }\n\n onMessage(handler: AppServerMessageHandler): () => void {\n this.messageHandlers.add(handler);\n return () => this.messageHandlers.delete(handler);\n }\n\n onSend(handler: AppServerSendHandler): () => void {\n this.sendHandlers.add(handler);\n return () => this.sendHandlers.delete(handler);\n }\n\n onDisconnect(handler: AppServerDisconnectHandler): () => void {\n this.disconnectHandlers.add(handler);\n return () => this.disconnectHandlers.delete(handler);\n }\n\n nextRequestId(prefix = \"req\"): string {\n this.nextRequestNumber += 1;\n return `${prefix}-${this.nextRequestNumber}`;\n }\n\n send(command: WsProtocolCommand): void {\n this.writeCommand(command);\n }\n\n private writeCommand(command: AppServerSendCommand): void {\n for (const handler of this.sendHandlers) {\n handler(command);\n }\n this.socket.send(JSON.stringify(command));\n }\n\n /**\n * Send a forward-compatible protocol command from a compatibility adapter.\n * Prefer the typed wrappers above this boundary for normal product code.\n */\n sendRaw(command: AppServerRawCommand): void {\n this.writeCommand(command);\n }\n\n /**\n * Request a forward-compatible response without mirroring the full protocol\n * union in a downstream compatibility adapter.\n */\n requestRaw<TResponse extends AppServerRawResponse>(\n command: AppServerRawCommand & { request_id: string },\n options: AppServerRawRequestOptions<TResponse>,\n ): Promise<TResponse> {\n const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pending.delete(command.request_id);\n reject(new Error(`Timed out waiting for ${command.request_id}`));\n }, timeoutMs);\n\n this.pending.set(command.request_id, {\n resolve: (message) => resolve(message as unknown as TResponse),\n reject,\n predicate: options.predicate,\n timeout,\n });\n\n try {\n this.sendRaw(command);\n } catch (error) {\n clearTimeout(timeout);\n this.pending.delete(command.request_id);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n\n request<TMessage extends WsProtocolMessage = WsProtocolMessage>(\n command: AppServerRequestCommandWithId,\n options?: AppServerRequestOptions<TMessage>,\n ): Promise<TMessage>;\n\n request<\n TType extends AppServerRequestCommand[\"type\"],\n TMessage extends WsProtocolMessage = WsProtocolMessage,\n >(\n type: TType,\n body?: AppServerRequestBody,\n options?: AppServerRequestOptions<TMessage>,\n ): Promise<TMessage>;\n\n request<TMessage extends WsProtocolMessage = WsProtocolMessage>(\n commandOrType:\n | AppServerRequestCommandWithId\n | AppServerRequestCommand[\"type\"],\n bodyOrOptions:\n | AppServerRequestBody\n | AppServerRequestOptions<TMessage> = {},\n maybeOptions: AppServerRequestOptions<TMessage> = {},\n ): Promise<TMessage> {\n const isTypeRequest = typeof commandOrType === \"string\";\n const command = isTypeRequest\n ? ({\n type: commandOrType,\n request_id:\n (bodyOrOptions as { request_id?: string }).request_id ??\n this.nextRequestId(commandOrType),\n ...(bodyOrOptions as object),\n } as AppServerRequestCommandWithId)\n : commandOrType;\n const options = isTypeRequest\n ? maybeOptions\n : (bodyOrOptions as AppServerRequestOptions<TMessage>);\n const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pending.delete(command.request_id);\n reject(new Error(`Timed out waiting for ${command.request_id}`));\n }, timeoutMs);\n\n this.pending.set(command.request_id, {\n resolve: (message) => resolve(message as TMessage),\n reject,\n predicate: options.predicate,\n timeout,\n });\n\n try {\n this.send(command);\n } catch (error) {\n clearTimeout(timeout);\n this.pending.delete(command.request_id);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n\n info(\n options: Omit<\n AppServerRequestOptions<AppServerInfoResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<AppServerInfoResponseMessage> {\n return this.request(\n {\n type: \"app_server_info\",\n request_id: this.nextRequestId(\"app-server-info\"),\n },\n {\n ...options,\n predicate: isAppServerInfoResponseMessage,\n },\n );\n }\n\n stopMonitor(\n command: Omit<MonitorStopCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<MonitorStopResponse>,\n \"predicate\"\n > = {},\n ): Promise<MonitorStopResponse> {\n return this.request(\n {\n type: \"monitor_stop\",\n ...command,\n request_id: command.request_id ?? this.nextRequestId(\"monitor-stop\"),\n },\n {\n ...options,\n predicate: (message): message is MonitorStopResponse =>\n message.type === \"monitor_stop_response\" &&\n message.process_id === command.process_id &&\n message.runtime.agent_id === command.runtime.agent_id &&\n message.runtime.conversation_id === command.runtime.conversation_id,\n },\n );\n }\n\n runtimeStart(\n command: Omit<RuntimeStartCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<RuntimeStartResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<RuntimeStartResponseMessage> {\n return this.request(\n {\n type: \"runtime_start\",\n request_id: command.request_id ?? this.nextRequestId(\"runtime-start\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is RuntimeStartResponseMessage =>\n message.type === \"runtime_start_response\",\n },\n );\n }\n\n runtimeExternalToolsUpdate(\n command: Omit<RuntimeExternalToolsUpdateCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<RuntimeExternalToolsUpdateResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<RuntimeExternalToolsUpdateResponseMessage> {\n return this.request(\n {\n type: \"runtime_external_tools_update\",\n request_id:\n command.request_id ?? this.nextRequestId(\"runtime-external-tools\"),\n ...command,\n },\n {\n ...options,\n predicate: (\n message,\n ): message is RuntimeExternalToolsUpdateResponseMessage =>\n message.type === \"runtime_external_tools_update_response\",\n },\n );\n }\n\n sync(\n command: Omit<SyncCommand, \"type\" | \"request_id\"> & { request_id?: string },\n options: Omit<\n AppServerRequestOptions<SyncResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<SyncResponseMessage> {\n return this.request(\n {\n type: \"sync\",\n request_id: command.request_id ?? this.nextRequestId(\"sync\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is SyncResponseMessage =>\n message.type === \"sync_response\",\n },\n );\n }\n\n abort(\n command: Omit<AbortMessageCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<AbortMessageResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<AbortMessageResponseMessage> {\n return this.request(\n {\n type: \"abort_message\",\n request_id: command.request_id ?? this.nextRequestId(\"abort\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is AbortMessageResponseMessage =>\n message.type === \"abort_message_response\",\n },\n );\n }\n\n /** Release queue items parked by `abort()` without sending a new message. */\n resumeQueue(\n command: Omit<ResumeQueueCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<ResumeQueueResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<ResumeQueueResponseMessage> {\n return this.request(\n {\n type: \"resume_queue\",\n request_id: command.request_id ?? this.nextRequestId(\"resume-queue\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is ResumeQueueResponseMessage =>\n message.type === \"resume_queue_response\",\n },\n );\n }\n\n conversationList(\n command: Omit<ConversationListCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n } = {},\n options: Omit<\n AppServerRequestOptions<ConversationListResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<ConversationListResponseMessage> {\n return this.request(\n {\n type: \"conversation_list\",\n request_id:\n command.request_id ?? this.nextRequestId(\"conversation-list\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is ConversationListResponseMessage =>\n message.type === \"conversation_list_response\",\n },\n );\n }\n\n onExternalToolCall(handler: AppServerExternalToolCallHandler): () => void {\n return this.onMessage((message, channel) => {\n if (\n channel !== \"control\" ||\n message.type !== \"external_tool_call_request\"\n ) {\n return;\n }\n\n void Promise.resolve(handler(message))\n .then((result) => {\n this.send({\n type: \"external_tool_call_response\",\n request_id: message.request_id,\n result,\n });\n })\n .catch((error) => {\n this.send({\n type: \"external_tool_call_response\",\n request_id: message.request_id,\n error: error instanceof Error ? error.message : String(error),\n });\n });\n });\n }\n\n /**\n * Submit input to a runtime. Observe progress, tool activity, approvals, and\n * terminal lifecycle events through onMessage().\n */\n input(command: Omit<InputCommand, \"type\">): void {\n this.send({ type: \"input\", ...command });\n }\n\n /**\n * Submit an input and wait only until the listener accepts it into the\n * normal dispatch/queue path. This never waits for turn completion.\n */\n submitInput(\n command: Omit<InputCommand, \"type\" | \"request_id\"> & {\n request_id?: string;\n },\n options: Omit<\n AppServerRequestOptions<InputAcceptedResponseMessage>,\n \"predicate\"\n > = {},\n ): Promise<InputAcceptedResponseMessage> {\n return this.request(\n {\n type: \"input\",\n request_id: command.request_id ?? this.nextRequestId(\"input\"),\n ...command,\n },\n {\n ...options,\n predicate: (message): message is InputAcceptedResponseMessage =>\n message.type === \"input_accepted\",\n },\n );\n }\n\n private handleMessage(event: unknown, channel: AppServerChannel): void {\n const message = parseProtocolMessage(event);\n\n for (const handler of this.messageHandlers) {\n handler(message, channel);\n }\n\n const requestId =\n message && typeof message === \"object\" && \"request_id\" in message\n ? (message as { request_id?: unknown }).request_id\n : undefined;\n if (channel !== \"control\" || typeof requestId !== \"string\") {\n return;\n }\n\n const pending = this.pending.get(requestId);\n if (!pending || (pending.predicate && !pending.predicate(message))) {\n return;\n }\n\n clearTimeout(pending.timeout);\n this.pending.delete(requestId);\n pending.resolve(message);\n }\n\n private rejectAllPending(reason: string): void {\n for (const [requestId, pending] of this.pending) {\n clearTimeout(pending.timeout);\n this.pending.delete(requestId);\n pending.reject(new Error(reason));\n }\n }\n\n private handleDisconnect(channel: AppServerChannel, event: unknown): void {\n this.rejectAllPending(\"App-server socket closed\");\n if (this.explicitlyClosed || this.disconnectNotified) return;\n this.disconnectNotified = true;\n for (const handler of this.disconnectHandlers) {\n handler({ channel, event });\n }\n }\n}\n\nexport function createAppServerClient(\n options: AppServerClientOptions,\n): AppServerClient {\n return new AppServerClient(options);\n}\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": ";AA4BO,SAAS,8BAA8B,CAC5C,SACyC;AAAA,EACzC,IAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AAAA,IACrE,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,YAAY;AAAA,EAClB,MAAM,eAAe,UAAU;AAAA,EAC/B,IACE,CAAC,gBACD,OAAO,iBAAiB,YACxB,MAAM,QAAQ,YAAY,GAC1B;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,mBAAmB;AAAA,EACzB,OACE,UAAU,SAAS,8BACnB,OAAO,UAAU,eAAe,YAChC,UAAU,WAAW,SAAS,KAC9B,UAAU,YAAY,SACrB,UAAU,YAAY,WAAW,UAAU,YAAY,UACxD,OAAO,UAAU,uBAAuB,YACxC,OAAO,UAAU,qBAAqB,YACtC,OAAO,UAAU,UAAU,gBAAgB,KAC3C,OAAO,iBAAiB,qBAAqB,aAC7C,OAAO,iBAAiB,4BAA4B,aACpD,OAAO,iBAAiB,sBAAsB,aAC9C,OAAO,iBAAiB,kBAAkB,cACzC,iBAAiB,8BAA8B,aAC9C,OAAO,iBAAiB,8BAA8B,eACvD,iBAAiB,kCAAkC,aAClD,OAAO,iBAAiB,kCAAkC,cAC5D,OAAO,iBAAiB,mBAAmB;AAAA;;;
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "447DE4754659309264756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/dist/channels-slack.js
CHANGED
|
@@ -825,8 +825,9 @@ function getSlackActionRecord(action, body) {
|
|
|
825
825
|
|
|
826
826
|
// src/channels/slack/model-picker-blocks.ts
|
|
827
827
|
var SLACK_MODEL_PICKER_OPTION_LIMIT = 100;
|
|
828
|
+
var SLACK_MODEL_PICKER_GROUP_LIMIT = 100;
|
|
828
829
|
var SLACK_MODEL_OPTION_TEXT_LIMIT = 75;
|
|
829
|
-
var SLACK_MODEL_OPTION_VALUE_LIMIT =
|
|
830
|
+
var SLACK_MODEL_OPTION_VALUE_LIMIT = 150;
|
|
830
831
|
var SLACK_MODEL_SELECT_ACTION_ID = "letta_channel_model_select";
|
|
831
832
|
function resolveSlackSelectedModel(action, body) {
|
|
832
833
|
const actionRecord = getSlackActionRecord(action, body);
|
|
@@ -890,7 +891,7 @@ function buildSlackModelPickerBlocks(params) {
|
|
|
890
891
|
}
|
|
891
892
|
seenValues.add(option.value);
|
|
892
893
|
options.push(option);
|
|
893
|
-
if (options.length >= SLACK_MODEL_PICKER_OPTION_LIMIT) {
|
|
894
|
+
if (options.length >= SLACK_MODEL_PICKER_OPTION_LIMIT * SLACK_MODEL_PICKER_GROUP_LIMIT) {
|
|
894
895
|
break;
|
|
895
896
|
}
|
|
896
897
|
}
|
|
@@ -931,7 +932,21 @@ Handle: ${escapeSlackMrkdwn(params.current.modelHandle)}` : "";
|
|
|
931
932
|
text: "Select a model",
|
|
932
933
|
emoji: true
|
|
933
934
|
},
|
|
934
|
-
options
|
|
935
|
+
...options.length <= SLACK_MODEL_PICKER_OPTION_LIMIT ? { options } : {
|
|
936
|
+
option_groups: Array.from({
|
|
937
|
+
length: Math.ceil(options.length / SLACK_MODEL_PICKER_OPTION_LIMIT)
|
|
938
|
+
}, (_, index) => {
|
|
939
|
+
const start = index * SLACK_MODEL_PICKER_OPTION_LIMIT;
|
|
940
|
+
const end = Math.min(start + SLACK_MODEL_PICKER_OPTION_LIMIT, options.length);
|
|
941
|
+
return {
|
|
942
|
+
label: {
|
|
943
|
+
type: "plain_text",
|
|
944
|
+
text: `Models ${start + 1}–${end}`
|
|
945
|
+
},
|
|
946
|
+
options: options.slice(start, end)
|
|
947
|
+
};
|
|
948
|
+
})
|
|
949
|
+
},
|
|
935
950
|
...initialOption ? { initial_option: initialOption } : {}
|
|
936
951
|
}
|
|
937
952
|
]
|
|
@@ -1583,4 +1598,4 @@ export {
|
|
|
1583
1598
|
SLACK_ASSISTANT_STARTUP_STATUS
|
|
1584
1599
|
};
|
|
1585
1600
|
|
|
1586
|
-
//# debugId=
|
|
1601
|
+
//# debugId=FB7DB88171AD5BF164756E2164756E21
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"import type {\n ChannelMessageActionAdapter,\n ChannelMessageActionContext,\n} from \"@/channels/plugin-types\";\n\nexport interface CreateSlackMessageActionAdapterOptions {\n /** Expose reaction actions when the injected transport supports them. */\n react?: boolean;\n /** Expose workspace custom emoji discovery when the transport supports it. */\n listCustomEmojis?: boolean;\n /** Expose local-path uploads when the injected transport can read them. */\n uploadFile?: boolean;\n /** Host-owned proactive target resolver, when proactive sends are supported. */\n resolveMessageTarget?: ChannelMessageActionAdapter[\"resolveMessageTarget\"];\n /** Host-owned attachment materialization, when download-file is supported. */\n downloadFile?: (context: ChannelMessageActionContext) => Promise<string>;\n}\n\nasync function sendSlackMessage(\n context: ChannelMessageActionContext,\n): Promise<string> {\n const { request, route, adapter, formatText } = context;\n const text = request.message ?? \"\";\n if (text.trim().length === 0 && !request.mediaPath) {\n return \"Error: Slack send requires message or media.\";\n }\n\n const isDirect =\n route.chatType === \"direct\" || request.chatId.startsWith(\"D\");\n const formatted = formatText(text);\n const result = await adapter.sendMessage({\n channel: \"slack\",\n accountId: route.accountId,\n chatId: request.chatId,\n text: formatted.text,\n replyToMessageId: isDirect ? undefined : request.replyToMessageId,\n threadId: isDirect\n ? (request.threadId ?? route.threadId ?? null)\n : request.replyToMessageId\n ? null\n : (request.threadId ?? route.threadId ?? null),\n mediaPath: request.mediaPath,\n fileName: request.filename,\n title: request.title,\n parseMode: formatted.parseMode,\n agentId: route.agentId,\n conversationId: route.conversationId,\n });\n return request.mediaPath\n ? `Attachment sent to slack (message_id: ${result.messageId})`\n : `Message sent to slack (message_id: ${result.messageId})`;\n}\n\nasync function reactInSlack(\n context: ChannelMessageActionContext,\n): Promise<string> {\n const { request, route, adapter } = context;\n if (!request.emoji?.trim()) return \"Error: Slack react requires emoji.\";\n if (!request.messageId?.trim()) {\n return \"Error: Slack react requires messageId.\";\n }\n\n const result = await adapter.sendMessage({\n channel: \"slack\",\n accountId: route.accountId,\n chatId: request.chatId,\n text: \"\",\n targetMessageId: request.messageId,\n reaction: request.emoji,\n removeReaction: request.remove,\n threadId: request.threadId ?? route.threadId ?? null,\n });\n return request.remove\n ? `Reaction removed on slack (message_id: ${result.messageId})`\n : `Reaction added on slack (message_id: ${result.messageId})`;\n}\n\nasync function listSlackCustomEmojis(\n context: ChannelMessageActionContext,\n): Promise<string> {\n const listCustomEmojis = context.adapter.listCustomEmojis;\n if (typeof listCustomEmojis !== \"function\") {\n return \"Error: Running Slack adapter does not support custom emoji discovery.\";\n }\n try {\n const names = await listCustomEmojis.call(context.adapter);\n if (names.length === 0) {\n return \"This Slack workspace has no custom emoji available to the app.\";\n }\n return `Available custom Slack emoji (${names.length}): ${names.map((name) => `:${name}:`).join(\", \")}`;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return `Error: Could not list custom Slack emoji. ${message}`;\n }\n}\n\n/**\n * Build canonical Slack MessageChannel actions around a host-owned transport.\n * Capabilities are explicit so remote gateways never advertise local-path or\n * attachment behavior they cannot execute.\n */\nexport function createSlackMessageActionAdapter(\n options: CreateSlackMessageActionAdapterOptions = {},\n): ChannelMessageActionAdapter {\n const actions = [\n \"send\",\n ...(options.react ? [\"react\"] : []),\n ...(options.listCustomEmojis ? [\"list-custom-emojis\"] : []),\n ...(options.uploadFile ? [\"upload-file\"] : []),\n ...(options.downloadFile ? [\"download-file\"] : []),\n ];\n return {\n describeMessageTool() {\n const properties: Record<string, unknown> = {};\n if (options.downloadFile) {\n properties.attachmentId = {\n type: \"string\",\n description:\n \"Slack attachment id for action='download-file'. Copy attachment_id from the channel notification.\",\n };\n }\n if (options.react || options.downloadFile) {\n properties.messageId = {\n type: \"string\",\n description: options.downloadFile\n ? \"Target Slack message id for action='react', or the source message id containing attachmentId for action='download-file'.\"\n : \"Target Slack message id for action='react'.\",\n };\n }\n return {\n actions: [...actions],\n ...(Object.keys(properties).length > 0\n ? { schema: { properties } }\n : {}),\n };\n },\n ...(options.resolveMessageTarget\n ? { resolveMessageTarget: options.resolveMessageTarget }\n : {}),\n async handleAction(context) {\n switch (context.request.action) {\n case \"send\":\n return await sendSlackMessage(context);\n case \"upload-file\":\n if (!options.uploadFile) {\n return 'Error: Action \"upload-file\" is not supported on slack.';\n }\n if (!context.request.mediaPath?.trim()) {\n return \"Error: Slack upload-file requires media.\";\n }\n return await sendSlackMessage(context);\n case \"react\":\n return options.react\n ? await reactInSlack(context)\n : 'Error: Action \"react\" is not supported on slack.';\n case \"list-custom-emojis\":\n return options.listCustomEmojis\n ? await listSlackCustomEmojis(context)\n : 'Error: Action \"list-custom-emojis\" is not supported on slack.';\n case \"download-file\":\n return options.downloadFile\n ? await options.downloadFile(context)\n : 'Error: Action \"download-file\" is not supported on slack.';\n default:\n return `Error: Action \"${context.request.action}\" is not supported on slack.`;\n }\n },\n };\n}\n",
|
|
11
11
|
"/**\n * Shared runtime-command executor for the channel slash commands whose\n * semantics are pure app-server protocol: `/model <handle>`, `/model list`,\n * `/cancel`, `/reflection`, and `/reload`.\n *\n * Every channel host — the local `letta server --channel` gateway and Letta\n * Cloud's Slack gateway — ends up sending the same protocol commands\n * (`update_model`, `list_models`, `abort_message`, `execute_command`) and\n * rendering a reply. Implementing that twice lets the two hosts drift, so the\n * protocol semantics and reply rendering live here once, parameterized by a\n * minimal injected {@link RuntimeCommandClient} that each host backs with its\n * own transport (in-process App Server client locally, the Redis listener\n * relay in Cloud).\n *\n * Like `command-surface.ts`, this module must stay free of host-local\n * dependencies (plugin registry, adapters, settings, websockets) so external\n * hosts can consume it from the public channels entrypoint.\n */\n\nimport type { ListModelsResponseModelEntry } from \"@/types/protocol_v2\";\nimport {\n type ChannelDisplayNameResolver,\n defaultChannelDisplayName,\n} from \"./command-surface\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Injected client\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Runtime identity the protocol commands target. */\nexport interface RuntimeCommandScope {\n agent_id: string;\n conversation_id: string;\n}\n\n/** App-server `execute_command` ids reachable from channel slash commands. */\nexport type RuntimeExecuteCommandId = \"reflect\" | \"reload\";\n\n/** Result of a `list_models` round trip. */\nexport interface RuntimeCommandListModelsResult {\n success: boolean;\n entries: ListModelsResponseModelEntry[];\n /**\n * Handles available to this user. Tri-state mirrors the wire format:\n * `null` = availability lookup failed; `undefined` = the server did not\n * report availability. Both cases render an explanatory note.\n */\n availableHandles?: string[] | null;\n error?: string;\n}\n\n/** Result of an `update_model` round trip. */\nexport interface RuntimeCommandUpdateModelResult {\n success: boolean;\n /** Canonical handle the server applied (may differ from the request). */\n modelHandle?: string;\n appliedTo?: \"agent\" | \"conversation\";\n error?: string;\n}\n\n/** Result of an `abort_message` round trip. */\nexport interface RuntimeCommandAbortResult {\n success: boolean;\n aborted: boolean;\n error?: string;\n}\n\n/** Result of an `execute_command` round trip. */\nexport interface RuntimeCommandExecuteResult {\n success: boolean;\n output: string;\n}\n\n/**\n * Minimal transport interface a channel host injects into the executor.\n *\n * Each method corresponds to exactly one app-server protocol command; the\n * host owns request-id generation, correlation, and timeouts. Transport-level\n * failures should be thrown — the executor intentionally does not catch them\n * so each host can apply its own failure copy and logging.\n */\nexport interface RuntimeCommandClient {\n listModels(): Promise<RuntimeCommandListModelsResult>;\n updateModel(params: {\n runtime: RuntimeCommandScope;\n /** User-provided handle or id; sent as both `model_id` and `model_handle`. */\n modelIdentifier: string;\n }): Promise<RuntimeCommandUpdateModelResult>;\n abortMessage(params: {\n runtime: RuntimeCommandScope;\n runId: string | null;\n }): Promise<RuntimeCommandAbortResult>;\n executeCommand(params: {\n runtime: RuntimeCommandScope;\n commandId: RuntimeExecuteCommandId;\n args?: string;\n }): Promise<RuntimeCommandExecuteResult>;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Model entry helpers (pure)\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type ChannelModelListEntry = Pick<\n ListModelsResponseModelEntry,\n | \"id\"\n | \"handle\"\n | \"label\"\n | \"description\"\n | \"isDefault\"\n | \"isFeatured\"\n | \"updateArgs\"\n>;\n\nconst DEFAULT_CHANNEL_MODEL_LIST_LIMIT = 8;\n\nfunction getModelEntryRank(entry: ChannelModelListEntry): number {\n if (entry.isDefault) return 0;\n if (entry.isFeatured) return 1;\n const effort = (\n entry.updateArgs as { reasoning_effort?: unknown } | undefined\n )?.reasoning_effort;\n if (effort === \"medium\") return 2;\n if (effort === \"high\") return 3;\n return 4;\n}\n\nfunction preferModelEntry(\n current: ChannelModelListEntry,\n candidate: ChannelModelListEntry,\n): ChannelModelListEntry {\n return getModelEntryRank(candidate) < getModelEntryRank(current)\n ? candidate\n : current;\n}\n\nexport function buildModelEntriesByHandle(\n entries: ChannelModelListEntry[],\n): Map<string, ChannelModelListEntry> {\n const byHandle = new Map<string, ChannelModelListEntry>();\n for (const entry of entries) {\n const current = byHandle.get(entry.handle);\n byHandle.set(\n entry.handle,\n current ? preferModelEntry(current, entry) : entry,\n );\n }\n return byHandle;\n}\n\nfunction makeUnknownModelEntry(handle: string): ChannelModelListEntry {\n return {\n id: handle,\n handle,\n label: handle,\n description: \"\",\n };\n}\n\nexport function resolveModelHandles(params: {\n handles: string[];\n byHandle: Map<string, ChannelModelListEntry>;\n availableHandles?: Set<string> | null;\n}): ChannelModelListEntry[] {\n const { handles, byHandle, availableHandles } = params;\n const seen = new Set<string>();\n const resolved: ChannelModelListEntry[] = [];\n for (const handle of handles) {\n if (!handle || seen.has(handle)) continue;\n seen.add(handle);\n if (availableHandles && !availableHandles.has(handle)) continue;\n resolved.push(byHandle.get(handle) ?? makeUnknownModelEntry(handle));\n }\n return resolved;\n}\n\nexport function getFallbackModelEntries(\n byHandle: Map<string, ChannelModelListEntry>,\n): ChannelModelListEntry[] {\n const preferred = Array.from(byHandle.values()).filter(\n (entry) => entry.isDefault || entry.isFeatured,\n );\n return preferred.length > 0 ? preferred : Array.from(byHandle.values());\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Reply rendering (pure; display name injected)\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction modelCommandPrefix(channelId: string): \"/model\" | \"@agent /model\" {\n return channelId === \"slack\" ? \"@agent /model\" : \"/model\";\n}\n\nexport function buildChannelModelNotFoundText(channelId: string): string {\n return `Model not found. Use ${modelCommandPrefix(channelId)} list to see available models.`;\n}\n\nexport function buildChannelCurrentModelMessage(\n channelId: string,\n params: {\n modelLabel: string;\n modelHandle: string | null;\n scope?: \"agent\" | \"conversation\";\n },\n displayNameResolver: ChannelDisplayNameResolver = defaultChannelDisplayName,\n): string {\n const displayName = displayNameResolver(channelId);\n const scope = params.scope === \"agent\" ? \"agent\" : \"conversation\";\n const handleText =\n params.modelHandle && params.modelHandle !== params.modelLabel\n ? ` (${params.modelHandle})`\n : \"\";\n const switchCommand = modelCommandPrefix(channelId);\n return [\n `${displayName} current ${scope} model: ${params.modelLabel}${handleText}.`,\n `Use ${switchCommand} list to see available models, or ${switchCommand} <handle-or-id> to switch.`,\n ].join(\"\\n\");\n}\n\nfunction formatChannelModelEntry(\n channelId: string,\n entry: ChannelModelListEntry,\n): string {\n const selector = entry.id || entry.handle;\n const handleText = entry.handle === entry.label ? \"\" : ` — ${entry.handle}`;\n return `• ${entry.label}${handleText} (${modelCommandPrefix(channelId)} ${selector})`;\n}\n\nfunction appendModelEntrySection(\n lines: string[],\n channelId: string,\n title: string,\n entries: ChannelModelListEntry[],\n limit: number,\n): void {\n if (entries.length === 0) return;\n lines.push(\"\", `${title}:`);\n for (const entry of entries.slice(0, limit)) {\n lines.push(formatChannelModelEntry(channelId, entry));\n }\n const remaining = entries.length - limit;\n if (remaining > 0) {\n lines.push(`…and ${remaining} more.`);\n }\n}\n\nexport function buildChannelModelListMessage(\n channelId: string,\n params: {\n entries: ListModelsResponseModelEntry[];\n availableHandles?: string[] | null;\n recentHandles?: string[];\n limit?: number;\n },\n displayNameResolver: ChannelDisplayNameResolver = defaultChannelDisplayName,\n): string {\n const displayName = displayNameResolver(channelId);\n const limit = params.limit ?? DEFAULT_CHANNEL_MODEL_LIST_LIMIT;\n const entries = params.entries as ChannelModelListEntry[];\n const byHandle = buildModelEntriesByHandle(entries);\n const availableHandleList = Array.isArray(params.availableHandles)\n ? params.availableHandles\n : null;\n const availableSet = availableHandleList\n ? new Set(availableHandleList)\n : null;\n const recentEntries = resolveModelHandles({\n handles: params.recentHandles ?? [],\n byHandle,\n availableHandles: availableSet,\n });\n const availableEntries = availableHandleList\n ? resolveModelHandles({ handles: availableHandleList, byHandle })\n : getFallbackModelEntries(byHandle);\n\n const lines = [`${displayName} model selector`];\n if (params.availableHandles === null) {\n lines.push(\n \"Availability lookup failed; showing built-in recommended models.\",\n );\n } else if (params.availableHandles === undefined) {\n lines.push(\n \"Available model data was not returned; showing built-in recommended models.\",\n );\n }\n\n appendModelEntrySection(\n lines,\n channelId,\n \"Recent models\",\n recentEntries,\n limit,\n );\n appendModelEntrySection(\n lines,\n channelId,\n \"Available models\",\n availableEntries,\n limit,\n );\n\n if (availableEntries.length === 0) {\n lines.push(\n \"\",\n \"No available models were reported. Use /connect in Letta Code to configure a provider, then try again.\",\n );\n }\n\n lines.push(\"\");\n if (channelId === \"slack\") {\n lines.push(\n \"Mention the app with @agent /model <handle-or-id> to switch this thread's routed model. Use @agent /model to show the current model. Legacy !model still works after a mention.\",\n );\n } else {\n lines.push(\n \"Use /model <handle-or-id> to switch this chat's routed model, or /model to show the current model.\",\n );\n }\n return lines.join(\"\\n\");\n}\n\nexport function buildChannelModelListUnavailableMessage(\n channelId: string,\n error: string,\n displayNameResolver: ChannelDisplayNameResolver = defaultChannelDisplayName,\n): string {\n const displayName = displayNameResolver(channelId);\n return `${displayName} could not load the model list: ${error}`;\n}\n\nexport function buildChannelCurrentModelUnavailableMessage(\n channelId: string,\n error: string,\n displayNameResolver: ChannelDisplayNameResolver = defaultChannelDisplayName,\n): string {\n const displayName = displayNameResolver(channelId);\n return `${displayName} could not load the current model: ${error}`;\n}\n\nexport function buildChannelModelUpdatedMessage(\n channelId: string,\n params: {\n modelLabel: string;\n modelHandle: string;\n appliedTo?: \"agent\" | \"conversation\";\n },\n displayNameResolver: ChannelDisplayNameResolver = defaultChannelDisplayName,\n): string {\n const displayName = displayNameResolver(channelId);\n const scope = params.appliedTo === \"agent\" ? \"agent\" : \"conversation\";\n const handleText =\n params.modelHandle === params.modelLabel ? \"\" : ` (${params.modelHandle})`;\n return `${displayName} updated this ${scope}'s model to ${params.modelLabel}${handleText}.`;\n}\n\nexport function buildChannelModelUpdateFailedMessage(\n channelId: string,\n identifier: string,\n error: string,\n displayNameResolver: ChannelDisplayNameResolver = defaultChannelDisplayName,\n): string {\n const displayName = displayNameResolver(channelId);\n return `${displayName} could not switch this chat's routed model to ${identifier}: ${error}`;\n}\n\nexport function buildChannelCancelAcceptedMessage(\n channelId: string,\n displayNameResolver: ChannelDisplayNameResolver = defaultChannelDisplayName,\n): string {\n const displayName = displayNameResolver(channelId);\n return `${displayName} cancelled the in-progress agent turn for this chat.`;\n}\n\nexport function buildChannelCancelNoActiveTurnMessage(\n channelId: string,\n displayNameResolver: ChannelDisplayNameResolver = defaultChannelDisplayName,\n): string {\n const displayName = displayNameResolver(channelId);\n return `${displayName} received /cancel, but there is no in-progress agent turn to cancel for this chat.`;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Command executors\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Rendered reply from a shared runtime-command executor. */\nexport interface RuntimeCommandReply {\n handled: true;\n text: string;\n}\n\nexport type ParsedChannelModelCommand =\n | { kind: \"current\" }\n | { kind: \"list\" }\n | { kind: \"update\"; modelIdentifier: string };\n\n/**\n * Classify `/model` arguments: empty → show the current model (host-owned),\n * `list` (case-insensitive) → list models, anything else → switch to it.\n */\nexport function parseChannelModelCommand(\n args: string,\n): ParsedChannelModelCommand {\n const modelIdentifier = args.trim();\n if (!modelIdentifier) {\n return { kind: \"current\" };\n }\n if (modelIdentifier.toLowerCase() === \"list\") {\n return { kind: \"list\" };\n }\n return { kind: \"update\", modelIdentifier };\n}\n\n/** `/model list` — send `list_models` and render the selector reply. */\nexport async function runChannelModelListCommand(params: {\n channelId: string;\n client: RuntimeCommandClient;\n /** Host-tracked recently used handles (e.g. local settings). */\n recentHandles?: string[];\n channelDisplayName?: ChannelDisplayNameResolver;\n}): Promise<RuntimeCommandReply> {\n const displayNameResolver =\n params.channelDisplayName ?? defaultChannelDisplayName;\n const result = await params.client.listModels();\n return {\n handled: true,\n text: result.success\n ? buildChannelModelListMessage(\n params.channelId,\n {\n entries: result.entries,\n availableHandles: result.availableHandles,\n recentHandles: params.recentHandles,\n },\n displayNameResolver,\n )\n : buildChannelModelListUnavailableMessage(\n params.channelId,\n result.error ?? \"Failed to list models\",\n displayNameResolver,\n ),\n };\n}\n\n/** `/model <handle-or-id>` — send `update_model` and render the outcome. */\nexport async function runChannelModelUpdateCommand(params: {\n channelId: string;\n client: RuntimeCommandClient;\n runtime: RuntimeCommandScope;\n modelIdentifier: string;\n /** Optional handle → human label lookup (e.g. the local model catalog). */\n resolveModelLabel?: (modelHandle: string) => string | undefined;\n channelDisplayName?: ChannelDisplayNameResolver;\n}): Promise<RuntimeCommandReply & { success: boolean; modelHandle?: string }> {\n const displayNameResolver =\n params.channelDisplayName ?? defaultChannelDisplayName;\n const result = await params.client.updateModel({\n runtime: params.runtime,\n modelIdentifier: params.modelIdentifier,\n });\n if (!result.success) {\n return {\n handled: true,\n success: false,\n text: buildChannelModelUpdateFailedMessage(\n params.channelId,\n params.modelIdentifier,\n result.error ?? \"Failed to update model\",\n displayNameResolver,\n ),\n };\n }\n const appliedHandle = result.modelHandle ?? params.modelIdentifier;\n return {\n handled: true,\n success: true,\n modelHandle: appliedHandle,\n text: buildChannelModelUpdatedMessage(\n params.channelId,\n {\n modelLabel:\n params.resolveModelLabel?.(appliedHandle) ?? params.modelIdentifier,\n modelHandle: appliedHandle,\n appliedTo: result.appliedTo,\n },\n displayNameResolver,\n ),\n };\n}\n\n/**\n * `/cancel` — send `abort_message` for the routed runtime. `text` is only\n * rendered when `channelId` is provided; hosts that render cancel outcomes\n * themselves (e.g. via `ChannelSlashCommandHandlers` default text) can rely\n * on `cancelled` alone.\n */\nexport async function runChannelCancelCommand(params: {\n client: RuntimeCommandClient;\n runtime: RuntimeCommandScope;\n channelId?: string;\n channelDisplayName?: ChannelDisplayNameResolver;\n}): Promise<{ handled: true; cancelled: boolean; text?: string }> {\n const response = await params.client.abortMessage({\n runtime: params.runtime,\n runId: null,\n });\n const cancelled = response.success && response.aborted;\n if (params.channelId === undefined) {\n return { handled: true, cancelled };\n }\n const displayNameResolver =\n params.channelDisplayName ?? defaultChannelDisplayName;\n return {\n handled: true,\n cancelled,\n text: cancelled\n ? buildChannelCancelAcceptedMessage(params.channelId, displayNameResolver)\n : buildChannelCancelNoActiveTurnMessage(\n params.channelId,\n displayNameResolver,\n ),\n };\n}\n\nasync function runChannelExecuteCommand(params: {\n client: RuntimeCommandClient;\n runtime: RuntimeCommandScope;\n commandId: RuntimeExecuteCommandId;\n args?: string;\n}): Promise<RuntimeCommandReply> {\n const trimmedArgs = params.args?.trim();\n const response = await params.client.executeCommand({\n runtime: params.runtime,\n commandId: params.commandId,\n ...(trimmedArgs ? { args: trimmedArgs } : {}),\n });\n return { handled: true, text: response.output };\n}\n\n/** `/reflection` — send `execute_command` (`reflect`) and relay its output. */\nexport function runChannelReflectionCommand(params: {\n client: RuntimeCommandClient;\n runtime: RuntimeCommandScope;\n args?: string;\n}): Promise<RuntimeCommandReply> {\n return runChannelExecuteCommand({ ...params, commandId: \"reflect\" });\n}\n\n/** `/reload` — send `execute_command` (`reload`) and relay its output. */\nexport function runChannelReloadCommand(params: {\n client: RuntimeCommandClient;\n runtime: RuntimeCommandScope;\n args?: string;\n}): Promise<RuntimeCommandReply> {\n return runChannelExecuteCommand({ ...params, commandId: \"reload\" });\n}\n",
|
|
12
12
|
"import type { ChannelTurnSource } from \"@/channels/types\";\nimport type {\n SlackAppConstructor,\n SlackBlock,\n SlackBoltModule,\n} from \"./internal-types\";\n\ntype Constructor = abstract new (...args: never[]) => unknown;\n\nfunction isConstructorFunction<T extends Constructor>(\n value: unknown,\n): value is T {\n return typeof value === \"function\";\n}\n\nfunction resolveSlackAppModule(value: unknown): SlackAppConstructor | null {\n if (!value || typeof value !== \"object\") {\n return null;\n }\n const app = Reflect.get(value, \"App\");\n return isConstructorFunction<SlackAppConstructor>(app) ? app : null;\n}\n\nexport function resolveSlackAppConstructor(\n mod: SlackBoltModule,\n): SlackAppConstructor {\n const defaultExport =\n mod && typeof mod === \"object\" ? Reflect.get(mod, \"default\") : undefined;\n const nestedDefault =\n defaultExport && typeof defaultExport === \"object\"\n ? Reflect.get(defaultExport, \"default\")\n : undefined;\n const App =\n resolveSlackAppModule(mod) ??\n resolveSlackAppModule(defaultExport) ??\n resolveSlackAppModule(nestedDefault) ??\n (isConstructorFunction<SlackAppConstructor>(defaultExport)\n ? defaultExport\n : null);\n\n if (!App) {\n throw new Error(\n 'Installed Slack runtime did not export constructor \"App\".',\n );\n }\n return App;\n}\n\nexport function isNonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.length > 0;\n}\n\nexport function firstNonEmptyString(...values: unknown[]): string | undefined {\n return values.find(isNonEmptyString);\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 resolveSlackSenderTeamId(value: unknown): string | undefined {\n const record = asRecord(value);\n return record\n ? firstNonEmptyString(record.user_team, record.team_id, record.team)\n : undefined;\n}\n\nconst IGNORED_SLACK_MESSAGE_SUBTYPES = new Set([\n \"assistant_app_thread\",\n \"channel_archive\",\n \"channel_convert_to_private\",\n \"channel_convert_to_public\",\n \"channel_join\",\n \"channel_leave\",\n \"channel_name\",\n \"channel_posting_permissions\",\n \"channel_purpose\",\n \"channel_topic\",\n \"channel_unarchive\",\n \"document_mention\",\n \"ekm_access_denied\",\n \"file_comment\",\n \"group_archive\",\n \"group_join\",\n \"group_leave\",\n \"group_name\",\n \"group_purpose\",\n \"group_topic\",\n \"group_unarchive\",\n \"pinned_item\",\n \"reminder_add\",\n \"unpinned_item\",\n]);\n\nconst WRAPPER_SLACK_MESSAGE_SUBTYPES = new Set([\n \"message_changed\",\n \"message_deleted\",\n \"message_replied\",\n]);\n\nexport type SlackProcessableInboundMessage = Record<string, unknown> & {\n user?: string;\n bot_id?: string;\n ts: string;\n};\n\nexport function isProcessableSlackInboundMessage(\n rawMessage: Record<string, unknown>,\n): rawMessage is SlackProcessableInboundMessage {\n if (\n (!isNonEmptyString(rawMessage.user) &&\n !isNonEmptyString(rawMessage.bot_id)) ||\n !isNonEmptyString(rawMessage.ts) ||\n rawMessage.hidden === true\n ) {\n return false;\n }\n const subtype = isNonEmptyString(rawMessage.subtype)\n ? rawMessage.subtype\n : null;\n if (!subtype) {\n return true;\n }\n if (IGNORED_SLACK_MESSAGE_SUBTYPES.has(subtype)) {\n return false;\n }\n return !(\n WRAPPER_SLACK_MESSAGE_SUBTYPES.has(subtype) &&\n asRecord(rawMessage.message) !== null\n );\n}\n\nexport function slackTimestampToMillis(timestamp: string): number {\n return Math.round(Number.parseFloat(timestamp) * 1000);\n}\n\nexport function resolveSlackChatType(chatId: string): \"direct\" | \"channel\" {\n return chatId.startsWith(\"D\") ? \"direct\" : \"channel\";\n}\n\nexport function resolveSlackOutboundThreadTs(params: {\n chatId: string;\n threadId?: string | null;\n replyToMessageId?: string | null;\n}): string | undefined {\n if (resolveSlackChatType(params.chatId) === \"direct\") {\n return firstNonEmptyString(params.threadId);\n }\n return firstNonEmptyString(params.threadId, params.replyToMessageId);\n}\n\nexport function asSlackBlocks(\n blocks: unknown[] | undefined,\n): SlackBlock[] | undefined {\n return Array.isArray(blocks) ? (blocks as SlackBlock[]) : undefined;\n}\n\nexport function getSlackActionRecord(\n action: unknown,\n body: unknown,\n): Record<string, unknown> | null {\n const directAction = asRecord(action);\n if (directAction) {\n return directAction;\n }\n const actions = asRecord(body)?.actions;\n return Array.isArray(actions) ? asRecord(actions[0]) : null;\n}\n\nexport function resolveSlackActionChannelId(body: unknown): string | null {\n const bodyRecord = asRecord(body);\n const channel = asRecord(bodyRecord?.channel);\n const container = asRecord(bodyRecord?.container);\n return firstNonEmptyString(channel?.id, container?.channel_id) ?? null;\n}\n\nexport function resolveSlackActionThreadId(body: unknown): string | null {\n const bodyRecord = asRecord(body);\n const container = asRecord(bodyRecord?.container);\n const message = asRecord(bodyRecord?.message);\n return firstNonEmptyString(container?.thread_ts, message?.thread_ts) ?? null;\n}\n\nexport function resolveSlackActionMessageId(body: unknown): string | undefined {\n const bodyRecord = asRecord(body);\n const container = asRecord(bodyRecord?.container);\n const message = asRecord(bodyRecord?.message);\n return firstNonEmptyString(container?.message_ts, message?.ts);\n}\n\nexport function resolveSlackActionUser(body: unknown): {\n id: string | null;\n name?: string;\n teamId?: string;\n} {\n const user = asRecord(asRecord(body)?.user);\n return {\n id: firstNonEmptyString(user?.id) ?? null,\n name: firstNonEmptyString(user?.name, user?.username, user?.id),\n teamId: firstNonEmptyString(user?.team_id),\n };\n}\n\nexport function resolveSlackSourceThreadTs(\n source: ChannelTurnSource,\n): string | undefined {\n if (\n source.chatType === \"direct\" ||\n resolveSlackChatType(source.chatId) === \"direct\"\n ) {\n return firstNonEmptyString(source.threadId);\n }\n return firstNonEmptyString(source.threadId, source.messageId);\n}\n\nexport function resolveSlackProgressThreadTs(\n source: ChannelTurnSource,\n): string | undefined {\n if (\n source.chatType === \"direct\" ||\n resolveSlackChatType(source.chatId) === \"direct\"\n ) {\n return firstNonEmptyString(source.threadId, source.messageId);\n }\n return resolveSlackSourceThreadTs(source);\n}\n\nexport function normalizeSlackReactionName(value: string): string {\n return value.trim().replace(/^:+|:+$/g, \"\");\n}\n\nexport function resolveSlackUserDisplayName(\n userInfo: unknown,\n): string | undefined {\n const user = asRecord(asRecord(userInfo)?.user);\n const profile = asRecord(user?.profile);\n return firstNonEmptyString(\n profile?.display_name,\n profile?.real_name,\n user?.real_name,\n user?.name,\n );\n}\n\nexport function hasSlackMention(text: string, userId: string | null): boolean {\n return (\n isNonEmptyString(text) &&\n isNonEmptyString(userId) &&\n (text.includes(`<@${userId}>`) || text.includes(`<@${userId}|`))\n );\n}\n\nexport function isSlackFlatChannelThreadOpener(\n source: ChannelTurnSource,\n): boolean {\n return (\n source.chatType === \"channel\" &&\n isNonEmptyString(source.messageId) &&\n (!isNonEmptyString(source.threadId) || source.threadId === source.messageId)\n );\n}\n",
|
|
13
|
-
"import {\n buildModelEntriesByHandle,\n type ChannelModelListEntry,\n getFallbackModelEntries,\n resolveModelHandles,\n} from \"@/channels/command-runtime-executor\";\nimport type { ChannelModelPickerData } from \"@/channels/types\";\nimport { asRecord, firstNonEmptyString, getSlackActionRecord } from \"./utils\";\n\nconst SLACK_MODEL_PICKER_OPTION_LIMIT = 100;\nconst SLACK_MODEL_OPTION_TEXT_LIMIT = 75;\nconst SLACK_MODEL_OPTION_VALUE_LIMIT =
|
|
13
|
+
"import {\n buildModelEntriesByHandle,\n type ChannelModelListEntry,\n getFallbackModelEntries,\n resolveModelHandles,\n} from \"@/channels/command-runtime-executor\";\nimport type { ChannelModelPickerData } from \"@/channels/types\";\nimport { asRecord, firstNonEmptyString, getSlackActionRecord } from \"./utils\";\n\nconst SLACK_MODEL_PICKER_OPTION_LIMIT = 100;\nconst SLACK_MODEL_PICKER_GROUP_LIMIT = 100;\nconst SLACK_MODEL_OPTION_TEXT_LIMIT = 75;\nconst SLACK_MODEL_OPTION_VALUE_LIMIT = 150;\n\nexport const SLACK_MODEL_SELECT_ACTION_ID = \"letta_channel_model_select\";\n\nexport function resolveSlackSelectedModel(\n action: unknown,\n body: unknown,\n): string | null {\n const actionRecord = getSlackActionRecord(action, body);\n const selectedOption = asRecord(actionRecord?.selected_option);\n return (\n firstNonEmptyString(selectedOption?.value, actionRecord?.value) ?? null\n );\n}\n\ntype SlackModelOption = {\n text: { type: \"plain_text\"; text: string; emoji?: boolean };\n value: string;\n description?: { type: \"plain_text\"; text: string; emoji?: boolean };\n};\n\nfunction escapeSlackMrkdwn(text: string): string {\n return text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\");\n}\n\nfunction truncateSlackPlainText(text: string, limit: number): string {\n if (text.length <= limit) {\n return text;\n }\n return `${text.slice(0, Math.max(0, limit - 3)).trimEnd()}...`;\n}\n\nfunction getSlackModelOptionValue(entry: ChannelModelListEntry): string | null {\n const candidates = [entry.id, entry.handle].filter(\n (value): value is string => typeof value === \"string\" && value.length > 0,\n );\n return (\n candidates.find(\n (value) => value.length <= SLACK_MODEL_OPTION_VALUE_LIMIT,\n ) ?? null\n );\n}\n\nfunction buildSlackModelOption(\n entry: ChannelModelListEntry,\n): SlackModelOption | null {\n const value = getSlackModelOptionValue(entry);\n if (!value) {\n return null;\n }\n\n const labelText =\n entry.handle === entry.label\n ? entry.label\n : `${entry.label} - ${entry.handle}`;\n const option: SlackModelOption = {\n text: {\n type: \"plain_text\",\n text: truncateSlackPlainText(labelText, SLACK_MODEL_OPTION_TEXT_LIMIT),\n emoji: true,\n },\n value,\n };\n if (entry.description) {\n option.description = {\n type: \"plain_text\",\n text: truncateSlackPlainText(\n entry.description,\n SLACK_MODEL_OPTION_TEXT_LIMIT,\n ),\n emoji: true,\n };\n }\n return option;\n}\n\n/**\n * Renders generic channel model-picker data as Slack Block Kit blocks.\n * Slack-specific rendering lives here so the shared channel/listener layers\n * stay vendor-neutral.\n */\nexport function buildSlackModelPickerBlocks(\n params: ChannelModelPickerData,\n): unknown[] | undefined {\n const entries = params.entries as ChannelModelListEntry[];\n const byHandle = buildModelEntriesByHandle(entries);\n const availableHandleList = Array.isArray(params.availableHandles)\n ? params.availableHandles\n : null;\n const availableSet = availableHandleList\n ? new Set(availableHandleList)\n : null;\n const recentEntries = resolveModelHandles({\n handles: params.recentHandles ?? [],\n byHandle,\n availableHandles: availableSet,\n });\n const availableEntries = availableHandleList\n ? resolveModelHandles({ handles: availableHandleList, byHandle })\n : getFallbackModelEntries(byHandle);\n const optionEntries = [...recentEntries, ...availableEntries];\n const options: SlackModelOption[] = [];\n const seenValues = new Set<string>();\n for (const entry of optionEntries) {\n const option = buildSlackModelOption(entry);\n if (!option || seenValues.has(option.value)) {\n continue;\n }\n seenValues.add(option.value);\n options.push(option);\n if (\n options.length >=\n SLACK_MODEL_PICKER_OPTION_LIMIT * SLACK_MODEL_PICKER_GROUP_LIMIT\n ) {\n break;\n }\n }\n\n if (options.length === 0) {\n return undefined;\n }\n\n const currentScope =\n params.current.scope === \"agent\" ? \"agent\" : \"conversation\";\n const currentHandleText = params.current.modelHandle\n ? `\\nHandle: ${escapeSlackMrkdwn(params.current.modelHandle)}`\n : \"\";\n const currentHandle = params.current.modelHandle;\n const initialOption = options.find((option) => {\n const entry = optionEntries.find(\n (candidate) =>\n candidate.id === option.value || candidate.handle === option.value,\n );\n return currentHandle\n ? entry?.handle === currentHandle || option.value === currentHandle\n : false;\n });\n\n return [\n {\n type: \"section\",\n text: {\n type: \"mrkdwn\",\n text: `*Current ${currentScope} model:* ${escapeSlackMrkdwn(params.current.modelLabel)}${currentHandleText}`,\n },\n },\n {\n type: \"section\",\n text: {\n type: \"mrkdwn\",\n text: \"Choose a model for this routed conversation:\",\n },\n },\n {\n type: \"actions\",\n elements: [\n {\n type: \"static_select\",\n action_id: SLACK_MODEL_SELECT_ACTION_ID,\n placeholder: {\n type: \"plain_text\",\n text: \"Select a model\",\n emoji: true,\n },\n // A flat select stops at 100 models, which can hide every BYOK\n // option after hosted rows. Slack permits 100 groups of 100 options.\n ...(options.length <= SLACK_MODEL_PICKER_OPTION_LIMIT\n ? { options }\n : {\n option_groups: Array.from(\n {\n length: Math.ceil(\n options.length / SLACK_MODEL_PICKER_OPTION_LIMIT,\n ),\n },\n (_, index) => {\n const start = index * SLACK_MODEL_PICKER_OPTION_LIMIT;\n const end = Math.min(\n start + SLACK_MODEL_PICKER_OPTION_LIMIT,\n options.length,\n );\n return {\n label: {\n type: \"plain_text\",\n text: `Models ${start + 1}–${end}`,\n },\n options: options.slice(start, end),\n };\n },\n ),\n }),\n ...(initialOption ? { initial_option: initialOption } : {}),\n },\n ],\n },\n {\n type: \"context\",\n elements: [\n {\n type: \"mrkdwn\",\n text: \"Need another handle? Mention the app with `@agent /model <handle-or-id>`.\",\n },\n ],\n },\n ];\n}\n",
|
|
14
14
|
"export type AgentBackendMode = \"local\" | \"api\";\n\nexport function isLocalAgentId(agentId: string): boolean {\n return agentId.startsWith(\"agent-local-\");\n}\n\nexport function isCloudAgentId(agentId: string): boolean {\n return !isLocalAgentId(agentId);\n}\n\nexport function isAgentIdCompatibleWithBackend(\n agentId: string,\n backendMode: AgentBackendMode,\n): boolean {\n return backendMode === \"local\"\n ? isLocalAgentId(agentId)\n : isCloudAgentId(agentId);\n}\n",
|
|
15
15
|
"const CONVERSATION_BUSY_ERROR_PATTERNS = [\n /another request is (?:currently )?(?:being )?processed/i,\n /currently being processed for this conversation/i,\n /busy with another active run/i,\n /already processing for this conversation/i,\n /turn still running/i,\n];\n\nexport const CONVERSATION_BUSY_TITLE = \"Turn still running\";\n\nexport function isConversationBusyErrorText(\n errorText: string | null | undefined,\n): boolean {\n if (!errorText) return false;\n return CONVERSATION_BUSY_ERROR_PATTERNS.some((pattern) =>\n pattern.test(errorText),\n );\n}\n\nexport function buildConversationBusyErrorBody(\n automaticRetry: boolean,\n): string {\n return automaticRetry\n ? \"Another request is already processing for this conversation. I’ll wait for it to finish and retry automatically.\"\n : \"Another request is already processing for this conversation. Please wait for it to finish, then try again.\";\n}\n\nexport function formatConversationBusyErrorMessage(options: {\n automaticRetry?: boolean;\n runId?: string;\n}): string {\n const lines = [\n CONVERSATION_BUSY_TITLE,\n buildConversationBusyErrorBody(options.automaticRetry ?? false),\n ];\n if (options.runId) {\n lines.push(\"\", `Run ID: ${options.runId}`);\n }\n return lines.join(\"\\n\");\n}\n",
|
|
16
16
|
"import {\n buildConversationBusyErrorBody,\n CONVERSATION_BUSY_TITLE,\n isConversationBusyErrorText,\n} from \"@/utils/conversation-busy-error\";\n\nconst RAW_LOOP_ERROR_PATTERN = /^Unexpected stop reason:\\s*error$/i;\nconst APP_CHAT_URL_PATTERN = /https:\\/\\/app\\.letta\\.com\\/chat\\/\\S+/i;\nconst ESCAPE_CHARACTER = String.fromCharCode(27);\nconst OSC8_PREFIX = `${ESCAPE_CHARACTER}]8;;`;\nconst OSC8_TERMINATOR = `${ESCAPE_CHARACTER}\\\\`;\n\nconst APPROVAL_PENDING_ERROR_PATTERNS = [\n /waiting for approval/i,\n /pending request before continuing/i,\n /approve or deny the pending request/i,\n];\n\nconst DATABASE_LOCK_TIMEOUT_PATTERN =\n /\\bcancel(?:l)?ing statement due to lock timeout\\b/i;\nconst POSTGRES_LOCK_NOT_AVAILABLE_CODE_PATTERN = /\\b55P03\\b/i;\nconst POSTGRES_LOCK_NOT_AVAILABLE_SQLSTATE_PATTERN =\n /\\b(?:sqlstate|pgcode)\\s*[:=]?\\s*[\"']?55P03\\b/i;\nconst POSTGRES_LOCK_NOT_AVAILABLE_CONTEXT_PATTERN =\n /\\b(?:postgres(?:ql)?|psycopg|sqlalchemy|lock[_ -]?not[_ -]?available|lock timeout)\\b/i;\n\nconst RUN_ID_PATTERNS = [\n /\"run_id\"\\s*:\\s*\"([^\"\\\\]+)\"/i,\n /\\brun[_\\s-]?id\\b[\"']?\\s*[:=]\\s*[\"']?([A-Za-z0-9_-]+)/i,\n /\\(run:\\s*([A-Za-z0-9_-]+)\\)/i,\n];\n\nexport type ChannelLifecycleErrorKind =\n | \"approval_pending\"\n | \"conversation_busy\"\n | \"database_lock_timeout\"\n | \"generic\";\n\nexport interface ChannelLifecycleErrorDisplayOptions {\n automaticRetry?: boolean;\n runId?: string | null;\n}\n\nexport interface ChannelLifecycleErrorDisplay {\n kind: ChannelLifecycleErrorKind;\n title: string;\n body: string;\n runId?: string;\n}\n\nexport interface ChannelLifecycleErrorFormatOptions\n extends ChannelLifecycleErrorDisplayOptions {\n codeBlock?: boolean;\n maxLength?: number;\n}\n\nexport const CHANNEL_LIFECYCLE_FALLBACK_ERROR_MESSAGE =\n \"Something went wrong while processing that message. Please try again.\";\n\nexport const CHANNEL_LIFECYCLE_APPROVAL_PENDING_MESSAGE =\n \"The agent is still waiting on a tool approval from an earlier turn. Please approve or deny that pending request, then send your message again.\";\n\nexport const CHANNEL_LIFECYCLE_TRANSIENT_ERROR_MESSAGE =\n \"A temporary error interrupted this turn. Please try again.\";\n\nexport const CHANNEL_LIFECYCLE_CONVERSATION_BUSY_TITLE =\n CONVERSATION_BUSY_TITLE;\n\nfunction stripTrailingRunIdPunctuation(runId: string): string {\n return runId.replace(/[)\"'.,;]+$/g, \"\");\n}\n\nexport function extractChannelLifecycleRunId(\n errorText: string | null | undefined,\n): string | undefined {\n if (!errorText) return undefined;\n for (const pattern of RUN_ID_PATTERNS) {\n const match = errorText.match(pattern);\n const runId = match?.[1]?.trim();\n if (runId) {\n return stripTrailingRunIdPunctuation(runId);\n }\n }\n return undefined;\n}\n\nfunction stripOsc8TerminalLinks(errorText: string): string {\n let output = \"\";\n let cursor = 0;\n\n while (cursor < errorText.length) {\n const linkStart = errorText.indexOf(OSC8_PREFIX, cursor);\n if (linkStart === -1) {\n output += errorText.slice(cursor);\n break;\n }\n\n const labelStart = errorText.indexOf(\n OSC8_TERMINATOR,\n linkStart + OSC8_PREFIX.length,\n );\n if (labelStart === -1) {\n output += errorText.slice(cursor);\n break;\n }\n\n const closeStart = errorText.indexOf(\n OSC8_PREFIX,\n labelStart + OSC8_TERMINATOR.length,\n );\n if (closeStart === -1) {\n output += errorText.slice(cursor);\n break;\n }\n\n const closeEnd = errorText.indexOf(\n OSC8_TERMINATOR,\n closeStart + OSC8_PREFIX.length,\n );\n if (closeEnd === -1) {\n output += errorText.slice(cursor);\n break;\n }\n\n output += errorText.slice(cursor, linkStart);\n output += errorText.slice(labelStart + OSC8_TERMINATOR.length, closeStart);\n cursor = closeEnd + OSC8_TERMINATOR.length;\n }\n\n return output;\n}\n\nexport function sanitizeChannelLifecycleErrorText(\n errorText: string | null | undefined,\n): string {\n if (!errorText) return \"\";\n\n const withoutTerminalLinks = stripOsc8TerminalLinks(errorText);\n\n return withoutTerminalLinks\n .split(\"\\n\")\n .filter((line) => {\n const trimmed = line.trim();\n if (/^View agent:/i.test(trimmed)) return false;\n if (APP_CHAT_URL_PATTERN.test(trimmed)) return false;\n return true;\n })\n .join(\"\\n\")\n .replace(/[ \\t]+\\n/g, \"\\n\")\n .trim();\n}\n\nfunction truncateLifecycleMessage(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return `${text.slice(0, Math.max(0, maxLength - 1)).trimEnd()}…`;\n}\n\nfunction isDatabaseLockErrorText(errorText: string): boolean {\n return (\n DATABASE_LOCK_TIMEOUT_PATTERN.test(errorText) ||\n POSTGRES_LOCK_NOT_AVAILABLE_SQLSTATE_PATTERN.test(errorText) ||\n (POSTGRES_LOCK_NOT_AVAILABLE_CODE_PATTERN.test(errorText) &&\n POSTGRES_LOCK_NOT_AVAILABLE_CONTEXT_PATTERN.test(errorText))\n );\n}\n\nexport function getChannelLifecycleErrorDisplay(\n errorText: string | null | undefined,\n options: ChannelLifecycleErrorDisplayOptions = {},\n): ChannelLifecycleErrorDisplay {\n const normalized = sanitizeChannelLifecycleErrorText(errorText);\n const optionsRunId = options.runId?.trim();\n const runId = optionsRunId || extractChannelLifecycleRunId(errorText);\n\n if (!normalized || RAW_LOOP_ERROR_PATTERN.test(normalized)) {\n return {\n kind: \"generic\",\n title: \"Turn failed\",\n body: CHANNEL_LIFECYCLE_FALLBACK_ERROR_MESSAGE,\n runId,\n };\n }\n\n if (isDatabaseLockErrorText(normalized)) {\n return {\n kind: \"database_lock_timeout\",\n title: \"Turn failed\",\n body: CHANNEL_LIFECYCLE_TRANSIENT_ERROR_MESSAGE,\n runId,\n };\n }\n\n if (isConversationBusyErrorText(normalized)) {\n return {\n kind: \"conversation_busy\",\n title: CHANNEL_LIFECYCLE_CONVERSATION_BUSY_TITLE,\n body: buildConversationBusyErrorBody(options.automaticRetry ?? false),\n runId,\n };\n }\n\n if (\n APPROVAL_PENDING_ERROR_PATTERNS.some((pattern) => pattern.test(normalized))\n ) {\n return {\n kind: \"approval_pending\",\n title: \"Turn failed\",\n body: CHANNEL_LIFECYCLE_APPROVAL_PENDING_MESSAGE,\n runId,\n };\n }\n\n return {\n kind: \"generic\",\n title: \"Turn failed\",\n body: normalized,\n runId,\n };\n}\n\nexport function normalizeChannelLifecycleErrorMessage(\n errorText: string | null | undefined,\n options: ChannelLifecycleErrorDisplayOptions = {},\n): string {\n return getChannelLifecycleErrorDisplay(errorText, options).body;\n}\n\nexport function formatChannelLifecycleErrorMessage(\n errorText: string | null | undefined,\n options: ChannelLifecycleErrorFormatOptions = {},\n): string {\n const display = getChannelLifecycleErrorDisplay(errorText, options);\n const maxLength = options.maxLength ?? Number.POSITIVE_INFINITY;\n const body = truncateLifecycleMessage(display.body, maxLength);\n\n if (display.kind === \"conversation_busy\") {\n const lines = [display.title, body];\n if (display.runId) {\n lines.push(\"\", `Run ID: ${display.runId}`);\n }\n return lines.join(\"\\n\");\n }\n\n if (display.kind === \"database_lock_timeout\") {\n const lines = [`${display.title}:`, body];\n if (display.runId) {\n lines.push(\"\", `Run ID: ${display.runId}`);\n }\n return lines.join(\"\\n\");\n }\n\n if (options.codeBlock) {\n const escaped = body.replace(/```/g, \"``\\u200b`\");\n const lines = [`${display.title}:`, \"```\", escaped, \"```\"];\n if (display.runId) {\n lines.push(\"\", `Run ID: ${display.runId}`);\n }\n return lines.join(\"\\n\");\n }\n\n const lines = [`${display.title}:`, body];\n if (display.runId) {\n lines.push(\"\", `Run ID: ${display.runId}`);\n }\n return lines.join(\"\\n\");\n}\n",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"import type { OutboundChannelMessage } from \"@/channels/types\";\nimport {\n buildSlackChatFootnote,\n buildSlackReplyBlocksWithFootnote,\n} from \"./presentation\";\nimport {\n normalizeSlackReactionName,\n resolveSlackOutboundThreadTs,\n} from \"./public-utils\";\n\nexport interface SlackSenderPostMessageParams {\n channel: string;\n text: string;\n threadTs?: string;\n blocks?: unknown[];\n}\n\nexport interface SlackSenderPostMessageResult {\n messageId: string;\n}\n\nexport interface SlackSenderMessageResult {\n messageId: string;\n}\n\nexport interface SlackSenderReactionParams {\n channel: string;\n timestamp: string;\n name: string;\n}\n\nexport interface SlackSenderClient {\n postMessage(\n params: SlackSenderPostMessageParams,\n ): Promise<SlackSenderPostMessageResult>;\n addReaction?(params: SlackSenderReactionParams): Promise<void>;\n removeReaction?(params: SlackSenderReactionParams): Promise<void>;\n}\n\nexport interface SlackChannelSender {\n sendMessage(\n message: OutboundChannelMessage,\n ): Promise<SlackSenderMessageResult>;\n sendDirectReply(params: SlackDirectReplyParams): Promise<void>;\n}\n\nexport interface SlackDirectReplyParams {\n chatId: string;\n text: string;\n replyToMessageId?: string;\n threadId?: string | null;\n blocks?: unknown[];\n}\n\nexport interface CreateSlackChannelSenderParams {\n client: SlackSenderClient;\n}\n\nasync function sendSlackReaction(\n client: SlackSenderClient,\n message: OutboundChannelMessage,\n): Promise<SlackSenderMessageResult> {\n const targetMessageId = message.targetMessageId ?? message.replyToMessageId;\n if (!targetMessageId) {\n throw new Error(\n \"Slack reactions require message_id (or reply_to_message_id) to identify the target message.\",\n );\n }\n const name = normalizeSlackReactionName(message.reaction ?? \"\");\n if (!name) {\n throw new Error(\"Slack reaction emoji cannot be empty.\");\n }\n const params: SlackSenderReactionParams = {\n channel: message.chatId,\n timestamp: targetMessageId,\n name,\n };\n if (message.removeReaction) {\n if (!client.removeReaction) {\n throw new Error(\n \"Slack sender client does not support removing reactions.\",\n );\n }\n await client.removeReaction(params);\n } else {\n if (!client.addReaction) {\n throw new Error(\"Slack sender client does not support adding reactions.\");\n }\n await client.addReaction(params);\n }\n return { messageId: targetMessageId };\n}\n\nfunction buildSlackOutboundBlocks(\n message: OutboundChannelMessage,\n): unknown[] | undefined {\n if (!message.agentId || !message.conversationId) {\n return undefined;\n }\n\n const footnote = buildSlackChatFootnote({\n agentId: message.agentId,\n conversationId: message.conversationId,\n });\n if (!footnote) {\n return undefined;\n }\n\n return buildSlackReplyBlocksWithFootnote(message.text, footnote);\n}\n\nexport function createSlackChannelSender(\n params: CreateSlackChannelSenderParams,\n): SlackChannelSender {\n const { client } = params;\n return {\n async sendMessage(\n message: OutboundChannelMessage,\n ): Promise<SlackSenderMessageResult> {\n if (message.reaction) {\n return await sendSlackReaction(client, message);\n }\n const threadTs = resolveSlackOutboundThreadTs({\n chatId: message.chatId,\n threadId: message.threadId,\n replyToMessageId: message.replyToMessageId,\n });\n const blocks = buildSlackOutboundBlocks(message);\n return await client.postMessage({\n channel: message.chatId,\n text: message.text,\n ...(blocks ? { blocks } : {}),\n ...(threadTs ? { threadTs } : {}),\n });\n },\n\n async sendDirectReply(params: SlackDirectReplyParams): Promise<void> {\n const threadTs = resolveSlackOutboundThreadTs({\n chatId: params.chatId,\n threadId: params.threadId,\n replyToMessageId: params.replyToMessageId,\n });\n await client.postMessage({\n channel: params.chatId,\n text: params.text,\n ...(params.blocks ? { blocks: params.blocks } : {}),\n ...(threadTs ? { threadTs } : {}),\n });\n },\n };\n}\n",
|
|
21
21
|
"import type {\n ChannelTurnSource,\n OutboundChannelMessage,\n} from \"@/channels/types\";\nimport {\n firstNonEmptyString,\n isNonEmptyString,\n resolveSlackChatType,\n resolveSlackProgressThreadTs,\n resolveSlackSourceThreadTs,\n} from \"./public-utils\";\n\nconst SLACK_ASSISTANT_STATUS_KEEPALIVE_MS = 90_000;\n\nexport interface SlackStatusWriteClient {\n assistant?: {\n threads?: {\n setStatus?: (args: {\n channel_id: string;\n thread_ts: string;\n status: string;\n loading_messages?: string[];\n }) => Promise<unknown>;\n };\n };\n}\n\nexport type AgentConvSlackState = {\n isThinkingActive: boolean;\n thinkingText: string;\n typingFooterText: string;\n};\n\nexport type SlackStatusController = {\n getUniqueSources: (sources: ChannelTurnSource[]) => ChannelTurnSource[];\n getLifecycleErrorReplyKey: (source: ChannelTurnSource) => string | null;\n activate: (\n source: ChannelTurnSource,\n footerText: string,\n loadingText: string,\n ) => Promise<void>;\n deactivate: (source: ChannelTurnSource) => Promise<void>;\n clearStale: (source: ChannelTurnSource) => Promise<void>;\n markAutoCleared: (source: ChannelTurnSource) => void;\n markAutoClearedForMessage: (\n msg: Pick<\n OutboundChannelMessage,\n \"agentId\" | \"conversationId\" | \"chatId\" | \"threadId\" | \"replyToMessageId\"\n >,\n ) => void;\n activeSources: () => ChannelTurnSource[];\n clear: () => void;\n};\n\nexport function createSlackStatusController(params: {\n ensureApp: () => Promise<unknown>;\n ensureWriteClient: () => Promise<SlackStatusWriteClient>;\n resolveKnownThreadRoot: (messageId: string) => string;\n}): SlackStatusController {\n const stateByConversation = new Map<string, AgentConvSlackState>();\n const sourceByConversation = new Map<string, ChannelTurnSource>();\n const signatureByConversation = new Map<string, string>();\n const writePromiseByConversation = new Map<string, Promise<void>>();\n const keepaliveByConversation = new Map<\n string,\n ReturnType<typeof setTimeout>\n >();\n const clearedStaleReplyKeys = new Set<string>();\n\n function getConversationKey(source: ChannelTurnSource): string | null {\n return source.channel === \"slack\" &&\n isNonEmptyString(source.agentId) &&\n isNonEmptyString(source.conversationId)\n ? `${source.agentId}:${source.conversationId}`\n : null;\n }\n\n function getLifecycleReplyKey(source: ChannelTurnSource): string | null {\n if (source.channel !== \"slack\" || !isNonEmptyString(source.chatId)) {\n return null;\n }\n const replyToMessageId = resolveSlackProgressThreadTs(source);\n return isNonEmptyString(replyToMessageId)\n ? `${source.chatId}:${replyToMessageId}`\n : null;\n }\n\n function getLifecycleErrorReplyKey(source: ChannelTurnSource): string | null {\n if (source.channel !== \"slack\" || !isNonEmptyString(source.chatId)) {\n return null;\n }\n if (\n source.chatType === \"direct\" ||\n resolveSlackChatType(source.chatId) === \"direct\"\n ) {\n const replyToMessageId = resolveSlackSourceThreadTs(source);\n return isNonEmptyString(replyToMessageId)\n ? `${source.chatId}:${replyToMessageId}`\n : `${source.chatId}:direct`;\n }\n return getLifecycleReplyKey(source);\n }\n\n function getUniqueSources(sources: ChannelTurnSource[]): ChannelTurnSource[] {\n const seen = new Set<string>();\n const unique: ChannelTurnSource[] = [];\n for (const source of sources) {\n const key = getConversationKey(source);\n if (!key || seen.has(key) || !getLifecycleReplyKey(source)) continue;\n seen.add(key);\n unique.push(source);\n }\n return unique;\n }\n\n function clearKeepalive(key: string): void {\n const timer = keepaliveByConversation.get(key);\n if (timer) {\n clearTimeout(timer);\n keepaliveByConversation.delete(key);\n }\n }\n\n async function writeStatus(\n source: ChannelTurnSource,\n footerText: string,\n loadingText: string,\n options: { force?: boolean } = {},\n ): Promise<boolean> {\n const stateKey = getConversationKey(source);\n const replyKey = getLifecycleReplyKey(source);\n const threadTs = resolveSlackProgressThreadTs(source);\n if (!stateKey || !replyKey || !threadTs) return false;\n\n const signature = `${footerText}\\n${loadingText}`;\n if (!options.force && signatureByConversation.get(stateKey) === signature) {\n return true;\n }\n\n await params.ensureApp();\n const slackClient = await params.ensureWriteClient();\n const setStatus = slackClient.assistant?.threads?.setStatus;\n if (!setStatus) return false;\n\n signatureByConversation.set(stateKey, signature);\n const previous =\n writePromiseByConversation.get(stateKey) ?? Promise.resolve();\n const operation = previous.then(async () => {\n try {\n await setStatus.call(slackClient.assistant?.threads, {\n channel_id: source.chatId,\n thread_ts: threadTs,\n status: footerText,\n ...(footerText ? { loading_messages: [loadingText] } : {}),\n });\n if (footerText) clearedStaleReplyKeys.delete(replyKey);\n else clearedStaleReplyKeys.add(replyKey);\n return true;\n } catch (error) {\n if (signatureByConversation.get(stateKey) === signature) {\n signatureByConversation.delete(stateKey);\n }\n console.warn(\n \"[Slack] Failed to update assistant thread status:\",\n error instanceof Error ? error.message : error,\n );\n return false;\n }\n });\n const settled = operation.then(() => undefined);\n writePromiseByConversation.set(stateKey, settled);\n void settled.then(() => {\n if (writePromiseByConversation.get(stateKey) === settled) {\n writePromiseByConversation.delete(stateKey);\n }\n });\n return operation;\n }\n\n function scheduleKeepalive(key: string): void {\n clearKeepalive(key);\n const timer = setTimeout(() => {\n keepaliveByConversation.delete(key);\n void (async () => {\n const state = stateByConversation.get(key);\n const source = sourceByConversation.get(key);\n if (!state?.isThinkingActive || !source) return;\n await writeStatus(source, state.typingFooterText, state.thinkingText, {\n force: true,\n });\n if (state.isThinkingActive) scheduleKeepalive(key);\n })();\n }, SLACK_ASSISTANT_STATUS_KEEPALIVE_MS);\n timer.unref?.();\n keepaliveByConversation.set(key, timer);\n }\n\n async function activate(\n source: ChannelTurnSource,\n footerText: string,\n loadingText: string,\n ): Promise<void> {\n const key = getConversationKey(source);\n if (!key || !getLifecycleReplyKey(source)) return;\n const state = stateByConversation.get(key) ?? {\n isThinkingActive: false,\n thinkingText: \"\",\n typingFooterText: \"\",\n };\n if (\n state.isThinkingActive &&\n state.thinkingText === loadingText &&\n state.typingFooterText === footerText\n ) {\n sourceByConversation.set(key, source);\n return;\n }\n state.isThinkingActive = true;\n state.thinkingText = loadingText;\n state.typingFooterText = footerText;\n stateByConversation.set(key, state);\n sourceByConversation.set(key, source);\n const sent = await writeStatus(source, footerText, loadingText);\n if (sent && state.isThinkingActive) scheduleKeepalive(key);\n else if (!sent) state.isThinkingActive = false;\n }\n\n function markAutoClearedByKey(key: string): void {\n clearKeepalive(key);\n const state = stateByConversation.get(key);\n if (state) state.isThinkingActive = false;\n signatureByConversation.delete(key);\n sourceByConversation.delete(key);\n }\n\n async function deactivate(source: ChannelTurnSource): Promise<void> {\n const key = getConversationKey(source);\n if (!key) return;\n clearKeepalive(key);\n const state = stateByConversation.get(key);\n if (state) state.isThinkingActive = false;\n signatureByConversation.delete(key);\n sourceByConversation.delete(key);\n await writeStatus(source, \"\", \"\", { force: true });\n signatureByConversation.delete(key);\n stateByConversation.delete(key);\n }\n\n async function clearStale(source: ChannelTurnSource): Promise<void> {\n const key = getConversationKey(source);\n const replyKey = getLifecycleReplyKey(source);\n if (\n !key ||\n !replyKey ||\n stateByConversation.get(key)?.isThinkingActive ||\n clearedStaleReplyKeys.has(replyKey)\n ) {\n return;\n }\n await writeStatus(source, \"\", \"\", { force: true });\n signatureByConversation.delete(key);\n }\n\n return {\n getUniqueSources,\n getLifecycleErrorReplyKey,\n activate,\n deactivate,\n clearStale,\n markAutoCleared(source): void {\n const key = getConversationKey(source);\n if (key) markAutoClearedByKey(key);\n },\n markAutoClearedForMessage(msg): void {\n if (\n isNonEmptyString(msg.agentId) &&\n isNonEmptyString(msg.conversationId)\n ) {\n markAutoClearedByKey(`${msg.agentId}:${msg.conversationId}`);\n return;\n }\n const anchor = firstNonEmptyString(msg.threadId, msg.replyToMessageId);\n if (!anchor) return;\n const root = params.resolveKnownThreadRoot(anchor);\n for (const [key, source] of sourceByConversation) {\n if (\n source.chatId === msg.chatId &&\n resolveSlackProgressThreadTs(source) === root\n ) {\n markAutoClearedByKey(key);\n }\n }\n },\n activeSources: () => Array.from(sourceByConversation.values()),\n clear(): void {\n for (const timer of keepaliveByConversation.values()) clearTimeout(timer);\n stateByConversation.clear();\n sourceByConversation.clear();\n signatureByConversation.clear();\n writePromiseByConversation.clear();\n keepaliveByConversation.clear();\n clearedStaleReplyKeys.clear();\n },\n };\n}\n"
|
|
22
22
|
],
|
|
23
|
-
"mappings": "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",
|
|
24
|
-
"debugId": "
|
|
23
|
+
"mappings": "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",
|
|
24
|
+
"debugId": "FB7DB88171AD5BF164756E2164756E21",
|
|
25
25
|
"names": []
|
|
26
26
|
}
|
package/dist/mcp-client.js
CHANGED
|
@@ -16867,7 +16867,7 @@ class StreamableHTTPClientTransport {
|
|
|
16867
16867
|
// src/mcp-client.ts
|
|
16868
16868
|
var DEFAULT_CLIENT_INFO = {
|
|
16869
16869
|
name: "letta-code",
|
|
16870
|
-
version: "0.
|
|
16870
|
+
version: "0.32.1"
|
|
16871
16871
|
};
|
|
16872
16872
|
async function connectMcpServer(config2, options = {}) {
|
|
16873
16873
|
let client = new Client(options.clientInfo ?? DEFAULT_CLIENT_INFO);
|
|
@@ -16992,4 +16992,4 @@ export {
|
|
|
16992
16992
|
connectMcpServer
|
|
16993
16993
|
};
|
|
16994
16994
|
|
|
16995
|
-
//# debugId=
|
|
16995
|
+
//# debugId=7B4C9CA94335EEDC64756E2164756E21
|