@letta-ai/letta-agent-sdk 0.2.1 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -13
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -16
- package/dist/index.js.map +5 -5
- package/dist/types.d.ts +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -9,16 +9,16 @@
|
|
|
9
9
|
"import { spawn, type ChildProcess } from \"node:child_process\";\nimport { findLettaCli } from \"./cli-resolver.js\";\n\nexport interface LocalAppServerHandle {\n url: string;\n close(): void;\n}\n\nexport interface StartLocalAppServerOptions {\n listen?: string;\n backend?: string;\n startupTimeoutMs?: number;\n cliPath?: string;\n env?: Record<string, string | undefined>;\n}\n\nconst DEFAULT_LISTEN_URL = \"ws://127.0.0.1:0\";\nconst DEFAULT_STARTUP_TIMEOUT_MS = 30_000;\nconst LISTENING_RE = /^Listening on\\s+(ws:\\/\\/\\S+)\\s*$/m;\n\nfunction appendLine(buffer: string, chunk: unknown): string {\n return buffer + String(chunk);\n}\n\nfunction tryExtractListeningUrl(output: string): string | null {\n const match = output.match(LISTENING_RE);\n return match?.[1] ?? null;\n}\n\nexport function buildLocalAppServerArgs(\n cliPath: string,\n options: Pick<StartLocalAppServerOptions, \"backend\" | \"listen\"> = {},\n): string[] {\n return [\n cliPath,\n ...(options.backend !== undefined ? [\"--backend\", options.backend] : []),\n \"app-server\",\n \"--listen\",\n options.listen ?? DEFAULT_LISTEN_URL,\n ];\n}\n\nfunction terminateProcess(child: ChildProcess): void {\n if (child.exitCode !== null || child.signalCode !== null) return;\n child.kill(\"SIGTERM\");\n setTimeout(() => {\n if (child.exitCode === null && child.signalCode === null) {\n child.kill(\"SIGKILL\");\n }\n }, 1_000).unref?.();\n}\n\n/**\n * Spawn an SDK-owned Letta Code app-server on an ephemeral loopback port.\n */\nexport function startLocalAppServer(\n options: StartLocalAppServerOptions = {},\n): Promise<LocalAppServerHandle> {\n const cliPath = options.cliPath ?? findLettaCli();\n const args = buildLocalAppServerArgs(cliPath, options);\n const startupTimeoutMs = options.startupTimeoutMs ?? DEFAULT_STARTUP_TIMEOUT_MS;\n\n return new Promise((resolve, reject) => {\n const child = spawn(process.execPath, args, {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n env: { ...process.env, ...(options.env ?? {}) },\n });\n\n let settled = false;\n let output = \"\";\n\n const cleanup = () => {\n child.stdout?.off(\"data\", onStdout);\n child.stderr?.off(\"data\", onStderr);\n child.off(\"error\", onError);\n child.off(\"exit\", onExit);\n clearTimeout(timeout);\n };\n\n const fail = (error: Error) => {\n if (settled) return;\n settled = true;\n cleanup();\n terminateProcess(child);\n reject(error);\n };\n\n const succeed = (url: string) => {\n if (settled) return;\n settled = true;\n cleanup();\n resolve({\n url,\n close: () => terminateProcess(child),\n });\n };\n\n const onOutput = (chunk: unknown) => {\n output = appendLine(output, chunk);\n const url = tryExtractListeningUrl(output);\n if (url) succeed(url);\n };\n\n const onStdout = (chunk: unknown) => onOutput(chunk);\n const onStderr = (chunk: unknown) => {\n // Startup failures are printed to stderr by the CLI. Keep stderr in the\n // collected output so timeout/exit errors are actionable.\n output = appendLine(output, chunk);\n };\n const onError = (error: Error) => fail(error);\n const onExit = (code: number | null, signal: NodeJS.Signals | null) => {\n if (settled) return;\n fail(\n new Error(\n `Local Letta Code app-server exited before listening (code=${code ?? \"null\"}, signal=${signal ?? \"null\"}).${\n output ? ` Output:\\n${output.trim()}` : \"\"\n }`,\n ),\n );\n };\n\n const timeout = setTimeout(() => {\n fail(\n new Error(\n `Timed out waiting for local Letta Code app-server to start.${\n output ? ` Output:\\n${output.trim()}` : \"\"\n }`,\n ),\n );\n }, startupTimeoutMs);\n\n child.stdout?.on(\"data\", onStdout);\n child.stderr?.on(\"data\", onStderr);\n child.once(\"error\", onError);\n child.once(\"exit\", onExit);\n });\n}\n",
|
|
10
10
|
"import { existsSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst require = createRequire(import.meta.url);\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n/**\n * Resolve the Letta Code CLI entrypoint used by SDK-owned transports.\n *\n * Resolution order intentionally matches the historical subprocess transport:\n * explicit LETTA_CLI_PATH first, then the installed @letta-ai/letta-code package,\n * then local development fallbacks.\n */\nexport function findLettaCli(): string {\n const envPath = process.env.LETTA_CLI_PATH;\n if (envPath && existsSync(envPath)) {\n return envPath;\n }\n\n try {\n return require.resolve(\"@letta-ai/letta-code\");\n } catch {\n // Fall through to local development paths.\n }\n\n const localPaths = [\n join(__dirname, \"..\", \"node_modules\", \"@letta-ai\", \"letta-code\", \"letta.js\"),\n join(__dirname, \"../../@letta-ai/letta-code/letta.js\"),\n join(__dirname, \"../../../letta-code-prod/letta.js\"),\n join(__dirname, \"../../../letta-code/letta.js\"),\n join(__dirname, \"..\", \"..\", \"letta-code\", \"letta.js\"),\n ];\n\n for (const path of localPaths) {\n if (existsSync(path)) {\n return path;\n }\n }\n\n throw new Error(\n \"Could not find Letta Code CLI. Set LETTA_CLI_PATH environment variable or install @letta-ai/letta-code.\",\n );\n}\n",
|
|
11
11
|
"import type {\n BootstrapStateOptions,\n BootstrapStateResult,\n CreateAgentOptions,\n LettaCodeClientSessionOptions,\n LettaCodeSession,\n LettaCodeModelEntry,\n ListModelsResult,\n ListMessagesOptions,\n ListMessagesResult,\n MessageContentItem,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n ReasoningEffort,\n RunTurnOptions,\n SDKErrorCode,\n SDKInitMessage,\n SDKLoopStatusMessage,\n SDKMessage,\n SDKProtocolCommand,\n SDKProtocolMessage,\n SDKQueueItem,\n SDKQueueUpdateMessage,\n SDKResultMessage,\n SDKStreamEventPayload,\n SendCommandOptions,\n SendMessage,\n UpdateModelOptions,\n UpdateModelResult,\n} from \"./types.js\";\n\nexport type RuntimeScope = {\n agent_id: string;\n conversation_id: string;\n};\n\nexport type ProtocolMessage = Record<string, unknown> & {\n type: string;\n request_id?: string;\n runtime?: RuntimeScope;\n};\n\nexport type RuntimeSessionMode =\n | { kind: \"create-agent\"; options: CreateAgentOptions }\n | {\n kind: \"session\";\n agentId?: string;\n conversationId?: string;\n newConversation?: boolean;\n defaultConversation?: boolean;\n options: LettaCodeClientSessionOptions;\n };\n\nexport type RuntimeTurnResult = {\n runtime: RuntimeScope;\n stopReason: string | null;\n runIds: string[];\n success?: boolean;\n detail?: string;\n errorCode?: SDKErrorCode;\n};\n\nexport type RuntimeSendTurnOptions = {\n clientMessageId: string;\n};\n\nexport type RuntimeRequestOptions = {\n timeoutMs?: number;\n predicate?: (message: ProtocolMessage) => boolean;\n};\n\nexport interface RemoteClientRuntimeController {\n onMessage(handler: (message: ProtocolMessage, channel?: string) => void): () => void;\n send(command: Record<string, unknown>): void;\n sendTurnMessage(\n runtime: RuntimeScope,\n message: SendMessage,\n options: RuntimeSendTurnOptions,\n ): void;\n abort(runtime: RuntimeScope): Promise<void>;\n request(\n type: string,\n body: Record<string, unknown>,\n options?: RuntimeRequestOptions,\n ): Promise<ProtocolMessage>;\n recoverPendingApprovals(\n runtime: RuntimeScope,\n options?: RecoverPendingApprovalsOptions,\n ): Promise<RecoverPendingApprovalsResult>;\n listMessages(\n conversationId: string,\n options?: ListMessagesOptions,\n ): Promise<ListMessagesResult>;\n listModels(): Promise<ListModelsResult>;\n updateModel(\n runtime: RuntimeScope,\n payload: { model_id?: string; model_handle?: string },\n ): Promise<UpdateModelResult>;\n close(): void;\n}\n\nexport type RuntimeSessionInit = {\n controller: RemoteClientRuntimeController;\n runtime: RuntimeScope;\n model?: string | null;\n modelSettings?: Record<string, unknown> | null;\n tools?: string[];\n};\n\ntype RemoteClientSessionCoreConfig = {\n label: string;\n requestTimeoutMs?: number;\n};\n\ntype ReflectionSettings = {\n trigger: \"off\" | \"step-count\" | \"compaction-event\";\n step_count: number;\n};\n\ntype UpdateModelPayload = {\n model_id?: string;\n model_handle?: string;\n};\n\ntype NormalizedUpdateModelInput = {\n model?: string;\n modelId?: string;\n modelHandle?: string;\n reasoningEffort?: ReasoningEffort;\n};\n\ntype TurnTracker = {\n id: number;\n runtime: RuntimeScope;\n clientMessageId: string;\n queuedAt: number;\n startedAt: number;\n assistantText: string;\n runIds: Set<string>;\n observedTurnEvidence: boolean;\n observedRequiresApprovalStop: boolean;\n abortRequested: boolean;\n timeout: ReturnType<typeof setTimeout> | null;\n};\n\nconst FAILURE_STOP_REASONS = new Set([\n \"error\",\n \"llm_api_error\",\n \"max_steps\",\n \"interrupted\",\n \"cancelled\",\n \"canceled\",\n]);\nconst REASONING_EFFORTS = new Set<ReasoningEffort>([\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n]);\nconst KNOWN_SDK_ERROR_CODES = new Set<SDKErrorCode>([\n \"approval_conflict\",\n \"approval_conflict_terminal\",\n \"protocol_error\",\n \"error\",\n \"llm_api_error\",\n \"max_steps\",\n \"interrupted\",\n \"stream_closed\",\n]);\n\nexport function mapPermissionMode(\n mode: LettaCodeClientSessionOptions[\"permissionMode\"],\n): string | undefined {\n if (mode === undefined || mode === \"default\") return undefined;\n if (mode === \"acceptEdits\") return \"acceptEdits\";\n if (mode === \"bypassPermissions\") return \"unrestricted\";\n if (mode === \"plan\") return \"memory\";\n return undefined;\n}\n\nexport function ensureSuccess(message: Record<string, unknown>, fallback: string): void {\n if (message.success === false) {\n throw new Error(typeof message.error === \"string\" ? message.error : fallback);\n }\n}\n\nfunction toSdkErrorCode(value: string | null | undefined): SDKErrorCode | undefined {\n if (!value || value.length === 0) return undefined;\n return KNOWN_SDK_ERROR_CODES.has(value as SDKErrorCode)\n ? (value as SDKErrorCode)\n : undefined;\n}\n\nfunction isReasoningEffort(value: unknown): value is ReasoningEffort {\n return typeof value === \"string\" && REASONING_EFFORTS.has(value as ReasoningEffort);\n}\n\nfunction nonEmptyString(value: unknown, name: string): string | undefined {\n if (value === undefined) return undefined;\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`Invalid ${name}. Expected a non-empty string.`);\n }\n return value;\n}\n\nfunction normalizeUpdateModelInput(update: string | UpdateModelOptions): NormalizedUpdateModelInput {\n if (typeof update === \"string\") {\n if (update.length === 0) {\n throw new Error(\"Invalid model. Expected a non-empty string.\");\n }\n return { model: update };\n }\n if (!update || typeof update !== \"object\" || Array.isArray(update)) {\n throw new Error(\"Invalid updateModel options. Expected a model string or options object.\");\n }\n\n const model = nonEmptyString(update.model, \"model\");\n const modelId = nonEmptyString(update.modelId, \"modelId\");\n const modelHandle = nonEmptyString(update.modelHandle, \"modelHandle\");\n const reasoningEffort = update.reasoningEffort;\n if (reasoningEffort !== undefined && !isReasoningEffort(reasoningEffort)) {\n throw new Error(\n `Invalid reasoningEffort '${String(reasoningEffort)}'. Valid values: ${[...REASONING_EFFORTS].join(\", \")}`,\n );\n }\n if (model !== undefined && (modelId !== undefined || modelHandle !== undefined)) {\n throw new Error(\"Invalid updateModel options. Use either model or explicit modelId/modelHandle, not both.\");\n }\n if (\n model === undefined &&\n modelId === undefined &&\n modelHandle === undefined &&\n reasoningEffort === undefined\n ) {\n throw new Error(\"Invalid updateModel options. Provide model, modelId, modelHandle, or reasoningEffort.\");\n }\n return {\n ...(model !== undefined ? { model } : {}),\n ...(modelId !== undefined ? { modelId } : {}),\n ...(modelHandle !== undefined ? { modelHandle } : {}),\n ...(reasoningEffort !== undefined ? { reasoningEffort } : {}),\n };\n}\n\nfunction modelPayloadWithoutReasoning(input: NormalizedUpdateModelInput): UpdateModelPayload {\n const payload: UpdateModelPayload = {};\n if (input.modelId !== undefined) payload.model_id = input.modelId;\n if (input.modelHandle !== undefined) payload.model_handle = input.modelHandle;\n if (input.model !== undefined) {\n if (input.model.includes(\"/\")) payload.model_handle = input.model;\n else payload.model_id = input.model;\n }\n return payload;\n}\n\nfunction toBaseModelHandle(\n handle: string | undefined,\n byokProviderAliases: Record<string, string> | undefined,\n): string | undefined {\n if (!handle) return undefined;\n const slashIndex = handle.indexOf(\"/\");\n if (slashIndex === -1) return handle;\n const provider = handle.slice(0, slashIndex);\n const model = handle.slice(slashIndex + 1);\n const baseProvider = byokProviderAliases?.[provider];\n return baseProvider ? `${baseProvider}/${model}` : handle;\n}\n\nfunction getContextWindow(value: Record<string, unknown> | null | undefined): number | undefined {\n const contextWindow = value?.context_window;\n return typeof contextWindow === \"number\" ? contextWindow : undefined;\n}\n\nfunction getReasoningEffort(entry: LettaCodeModelEntry): string | undefined {\n const effort = entry.updateArgs?.reasoning_effort;\n return typeof effort === \"string\" ? effort : undefined;\n}\n\nfunction sameContextCandidates(\n candidates: LettaCodeModelEntry[],\n contextWindow: number | undefined,\n): LettaCodeModelEntry[] {\n if (contextWindow === undefined) return candidates;\n const matches = candidates.filter(\n (entry) => getContextWindow(entry.updateArgs) === contextWindow,\n );\n return matches.length > 0 ? matches : candidates;\n}\n\nfunction isApprovalConflictSignal(params: {\n detail?: string;\n message?: string;\n stopReason?: string | null;\n}): boolean {\n if (params.stopReason === \"requires_approval\") return true;\n const haystack = [params.detail, params.message]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0)\n .join(\"\\n\")\n .toLowerCase();\n return (\n haystack.includes(\"waiting for approval on a tool call\") ||\n haystack.includes(\"cannot send a new message\") ||\n haystack.includes(\"requires_approval\")\n );\n}\n\nfunction resolveDreamingSettings(\n dreaming: LettaCodeClientSessionOptions[\"dreaming\"],\n): ReflectionSettings | null {\n if (!dreaming) return null;\n return {\n trigger: dreaming.trigger ?? \"step-count\",\n step_count: dreaming.stepCount ?? 5,\n };\n}\n\nfunction extractTextFromContent(content: unknown): string | null {\n if (typeof content === \"string\") return content;\n if (Array.isArray(content)) {\n const pieces: string[] = [];\n for (const part of content) {\n if (typeof part === \"string\") {\n pieces.push(part);\n continue;\n }\n if (part && typeof part === \"object\") {\n const record = part as Record<string, unknown>;\n if (typeof record.text === \"string\") {\n pieces.push(record.text);\n }\n }\n }\n const joined = pieces.join(\"\");\n return joined.length > 0 ? joined : null;\n }\n if (content && typeof content === \"object\") {\n const record = content as Record<string, unknown>;\n if (typeof record.text === \"string\") return record.text;\n }\n return null;\n}\n\nfunction toolInputFromArguments(args: unknown): { input: Record<string, unknown>; raw?: string } {\n if (args && typeof args === \"object\" && !Array.isArray(args)) {\n return { input: args as Record<string, unknown> };\n }\n const raw = typeof args === \"string\" ? args : \"\";\n if (!raw) return { input: {} };\n try {\n const parsed = JSON.parse(raw) as unknown;\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return { input: parsed as Record<string, unknown>, raw };\n }\n } catch {\n // Fall through to raw wrapper.\n }\n return { input: { raw }, raw };\n}\n\nfunction firstToolCall(delta: Record<string, unknown>): Record<string, unknown> | undefined {\n const toolCalls = delta.tool_calls;\n if (Array.isArray(toolCalls)) {\n const first = toolCalls[0];\n return first && typeof first === \"object\" ? (first as Record<string, unknown>) : undefined;\n }\n if (toolCalls && typeof toolCalls === \"object\") {\n return toolCalls as Record<string, unknown>;\n }\n const toolCall = delta.tool_call;\n return toolCall && typeof toolCall === \"object\" ? (toolCall as Record<string, unknown>) : undefined;\n}\n\nfunction firstToolReturn(delta: Record<string, unknown>): Record<string, unknown> | undefined {\n const toolReturns = delta.tool_returns;\n if (Array.isArray(toolReturns)) {\n const first = toolReturns[0];\n return first && typeof first === \"object\" ? (first as Record<string, unknown>) : undefined;\n }\n return undefined;\n}\n\nfunction sameRuntime(message: ProtocolMessage, runtime: RuntimeScope): boolean {\n const msgRuntime = message.runtime;\n if (msgRuntime) {\n return (\n msgRuntime.agent_id === runtime.agent_id &&\n msgRuntime.conversation_id === runtime.conversation_id\n );\n }\n const messageAgentId =\n typeof message.agent_id === \"string\"\n ? message.agent_id\n : typeof message.agentId === \"string\"\n ? message.agentId\n : undefined;\n const messageConversationId =\n typeof message.conversation_id === \"string\"\n ? message.conversation_id\n : typeof message.conversationId === \"string\"\n ? message.conversationId\n : undefined;\n\n if (messageAgentId && messageAgentId !== runtime.agent_id) return false;\n if (messageConversationId && messageConversationId !== runtime.conversation_id) return false;\n return true;\n}\n\nfunction streamDeltaRecord(message: ProtocolMessage): Record<string, unknown> | null {\n if (message.type !== \"stream_delta\") return null;\n const delta = message.delta;\n return delta && typeof delta === \"object\" && !Array.isArray(delta)\n ? (delta as Record<string, unknown>)\n : null;\n}\n\nfunction streamDeltaMessageType(delta: Record<string, unknown>): string | undefined {\n return typeof delta.message_type === \"string\" ? delta.message_type : undefined;\n}\n\nfunction streamDeltaRunId(delta: Record<string, unknown>): string | undefined {\n return typeof delta.run_id === \"string\" ? delta.run_id : undefined;\n}\n\nfunction streamDeltaStopReason(delta: Record<string, unknown>): string | null | undefined {\n return typeof delta.stop_reason === \"string\" ? delta.stop_reason : undefined;\n}\n\nfunction loopStatusRecord(message: ProtocolMessage): Record<string, unknown> | null {\n if (message.type !== \"update_loop_status\") return null;\n const loopStatus = message.loop_status;\n return loopStatus && typeof loopStatus === \"object\" && !Array.isArray(loopStatus)\n ? (loopStatus as Record<string, unknown>)\n : null;\n}\n\nfunction loopStatusValue(message: ProtocolMessage): string | undefined {\n const loopStatus = loopStatusRecord(message);\n return typeof loopStatus?.status === \"string\" ? loopStatus.status : undefined;\n}\n\nfunction loopStatusRunIds(message: ProtocolMessage): string[] {\n const activeRunIds = loopStatusRecord(message)?.active_run_ids;\n return Array.isArray(activeRunIds)\n ? activeRunIds.filter((runId): runId is string => typeof runId === \"string\")\n : [];\n}\n\nfunction queueItems(message: ProtocolMessage): SDKQueueItem[] {\n const queue = message.queue;\n if (!Array.isArray(queue)) return [];\n return queue.flatMap((item) => {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) return [];\n const record = item as Record<string, unknown>;\n if (typeof record.id !== \"string\") return [];\n return [\n {\n id: record.id,\n clientMessageId:\n typeof record.client_message_id === \"string\" ? record.client_message_id : \"\",\n kind: typeof record.kind === \"string\" ? record.kind : \"message\",\n source: typeof record.source === \"string\" ? record.source : \"user\",\n content: record.content,\n enqueuedAt: typeof record.enqueued_at === \"string\" ? record.enqueued_at : \"\",\n },\n ];\n });\n}\n\nexport function normalizeSendMessage(message: SendMessage): string | MessageContentItem[] {\n return message;\n}\n\nexport abstract class RemoteClientSessionCore implements LettaCodeSession {\n protected controller: RemoteClientRuntimeController | null = null;\n protected runtime: RuntimeScope | null = null;\n protected initialized = false;\n protected closed = false;\n protected activeTurnStartedAt = 0;\n protected _agentId: string | null = null;\n protected _sessionId: string | null = null;\n protected _conversationId: string | null = null;\n protected _model = \"\";\n protected _modelSettings: Record<string, unknown> | null = null;\n\n private readonly label: string;\n private readonly requestTimeoutMs: number | undefined;\n private streamQueue: SDKMessage[] = [];\n private streamResolvers: Array<(msg: SDKMessage | null) => void> = [];\n private removeMessageHandler: (() => void) | null = null;\n private activeTurn: TurnTracker | null = null;\n private pendingTurns: TurnTracker[] = [];\n private nextTurnId = 0;\n private messageCounter = 0;\n private clientMessageCounter = 0;\n private toolNames: string[] | undefined;\n\n protected constructor(\n protected readonly mode: RuntimeSessionMode,\n config: RemoteClientSessionCoreConfig,\n ) {\n this.label = config.label;\n this.requestTimeoutMs = config.requestTimeoutMs;\n }\n\n async initialize(): Promise<SDKInitMessage> {\n if (this.initialized) {\n throw new Error(\"Session already initialized\");\n }\n if (this.closed) {\n throw new Error(\"Session is closed\");\n }\n\n try {\n const init = await this.initializeRuntimeController();\n this.controller = init.controller;\n this.runtime = init.runtime;\n this._agentId = init.runtime.agent_id;\n this._conversationId = init.runtime.conversation_id;\n this._sessionId = `${init.runtime.agent_id}:${init.runtime.conversation_id}`;\n this._modelSettings = init.modelSettings ?? null;\n this._model =\n typeof init.model === \"string\"\n ? init.model\n : typeof this._modelSettings?.model === \"string\"\n ? this._modelSettings.model\n : \"\";\n this.toolNames = init.tools;\n this.removeMessageHandler = this.controller.onMessage(this.handleProtocolMessage);\n this.initialized = true;\n\n await this.afterRuntimeInitialized();\n await this.applyPostInitializeOptions();\n\n const initMessage: SDKInitMessage = {\n type: \"init\",\n agentId: init.runtime.agent_id,\n sessionId: this._sessionId,\n conversationId: init.runtime.conversation_id,\n model: this._model,\n };\n if (this.toolNames !== undefined) initMessage.tools = this.toolNames;\n return initMessage;\n } catch (error) {\n this.close();\n throw error;\n }\n }\n\n async send(message: SendMessage): Promise<void> {\n if (!this.initialized) {\n await this.initialize();\n }\n if (!this.controller || !this.runtime) {\n throw new Error(\"Session is not initialized\");\n }\n\n await this.beforeTurn();\n\n const turn = this.trackSentTurn(this.runtime);\n try {\n this.controller.sendTurnMessage(this.runtime, message, {\n clientMessageId: turn.clientMessageId,\n });\n } catch (error) {\n this.removeTrackedTurn(turn);\n throw error;\n }\n }\n\n async runTurn(\n message: SendMessage,\n _options: RunTurnOptions = {},\n ): Promise<SDKResultMessage> {\n if (this.activeTurn || this.pendingTurns.length > 0) {\n throw new Error(\n `A turn is already in flight for this ${this.label} session. Use send() and stream() to let the listener queue messages.`,\n );\n }\n await this.send(message);\n for await (const msg of this.stream()) {\n if (msg.type === \"result\") {\n return msg;\n }\n }\n return {\n type: \"result\",\n success: false,\n error: \"stream_closed\",\n errorCode: \"stream_closed\",\n recoverable: false,\n errorDetail: \"Stream ended before terminal result\",\n durationMs: Date.now() - this.activeTurnStartedAt,\n conversationId: this._conversationId,\n };\n }\n\n async *stream(): AsyncGenerator<SDKMessage> {\n while (true) {\n const msg = await this.nextMessage();\n if (!msg) break;\n yield msg;\n if (msg.type === \"result\") break;\n }\n }\n\n async abort(): Promise<void> {\n if (!this.initialized) return;\n if (!this.controller || !this.runtime) return;\n if (this.activeTurn) this.activeTurn.abortRequested = true;\n await this.controller.abort(this.runtime);\n }\n\n async sendCommand(command: SDKProtocolCommand): Promise<void>;\n async sendCommand<TResponse extends SDKProtocolMessage = SDKProtocolMessage>(\n command: SDKProtocolCommand,\n options: SendCommandOptions,\n ): Promise<TResponse>;\n async sendCommand<TResponse extends SDKProtocolMessage = SDKProtocolMessage>(\n command: SDKProtocolCommand,\n options?: SendCommandOptions,\n ): Promise<void | TResponse> {\n if (!this.initialized) {\n await this.initialize();\n }\n if (!this.controller) {\n throw new Error(\"Session is not initialized\");\n }\n if (!command || typeof command !== \"object\" || Array.isArray(command)) {\n throw new Error(\"Invalid command. Expected a protocol command object.\");\n }\n if (typeof command.type !== \"string\" || command.type.length === 0) {\n throw new Error(\"Invalid command. Expected a non-empty type.\");\n }\n\n if (!options || (!options.responseType && !options.predicate && options.timeoutMs === undefined)) {\n this.controller.send(command);\n return;\n }\n\n const { type, ...body } = command;\n const response = await this.controller.request(type, body, {\n ...(options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {}),\n predicate: options.predicate\n ? (message) => options.predicate?.(message as SDKProtocolMessage) === true\n : options.responseType\n ? (message) => message.type === options.responseType\n : undefined,\n });\n return response as TResponse;\n }\n\n async listModels(): Promise<ListModelsResult> {\n if (!this.initialized) {\n await this.initialize();\n }\n if (!this.controller) {\n throw new Error(\"Session is not initialized\");\n }\n return this.controller.listModels();\n }\n\n async updateModel(update: string | UpdateModelOptions): Promise<UpdateModelResult> {\n if (!this.initialized) {\n await this.initialize();\n }\n if (!this.controller || !this.runtime) {\n throw new Error(\"Session is not initialized\");\n }\n\n const normalized = normalizeUpdateModelInput(update);\n const payload = await this.resolveUpdateModelPayload(normalized);\n const result = await this.controller.updateModel(this.runtime, payload);\n\n if (result.modelHandle !== undefined) {\n this._model = result.modelHandle;\n } else if (payload.model_handle !== undefined) {\n this._model = payload.model_handle;\n } else if (typeof result.modelSettings?.model === \"string\") {\n this._model = result.modelSettings.model;\n }\n if (\"modelSettings\" in result) {\n this._modelSettings = result.modelSettings ?? null;\n }\n return result;\n }\n\n async recoverPendingApprovals(\n options: RecoverPendingApprovalsOptions = {},\n ): Promise<RecoverPendingApprovalsResult> {\n if (!this.initialized) {\n await this.initialize();\n }\n if (!this.controller || !this.runtime) {\n throw new Error(\"Session is not initialized\");\n }\n return this.controller.recoverPendingApprovals(this.runtime, options);\n }\n\n async listMessages(options: ListMessagesOptions = {}): Promise<ListMessagesResult> {\n if (!this.initialized) {\n await this.initialize();\n }\n if (!this.controller) {\n throw new Error(\"Session is not initialized\");\n }\n const conversationId = options.conversationId ?? this._conversationId;\n if (!conversationId) {\n throw new Error(\"No conversation id available for listMessages()\");\n }\n return this.controller.listMessages(conversationId, options);\n }\n\n async bootstrapState(\n options: BootstrapStateOptions = {},\n ): Promise<BootstrapStateResult> {\n if (!this.initialized) {\n await this.initialize();\n }\n const page = await this.listMessages({\n limit: options.limit,\n order: options.order,\n });\n\n const state: BootstrapStateResult = {\n agentId: this._agentId ?? \"\",\n conversationId: this._conversationId ?? \"\",\n model: this._model,\n messages: page.messages,\n };\n if (this.toolNames !== undefined) {\n state.tools = this.toolNames;\n }\n if (page.nextBefore !== undefined) {\n state.nextBefore = page.nextBefore;\n }\n if (page.hasMore !== undefined) {\n state.hasMore = page.hasMore;\n }\n return state;\n }\n\n close(): void {\n if (this.closed) return;\n this.closed = true;\n this.removeMessageHandler?.();\n this.removeMessageHandler = null;\n if (this.activeTurn?.timeout) clearTimeout(this.activeTurn.timeout);\n for (const turn of this.pendingTurns) {\n if (turn.timeout) clearTimeout(turn.timeout);\n }\n this.activeTurn = null;\n this.pendingTurns.length = 0;\n this.controller?.close();\n this.controller = null;\n this.onCoreClose();\n this.resolveAll(null);\n }\n\n get agentId(): string | null {\n return this._agentId;\n }\n\n get sessionId(): string | null {\n return this._sessionId;\n }\n\n get conversationId(): string | null {\n return this._conversationId;\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n this.close();\n }\n\n async changeDeviceState(\n updates: {\n cwd?: string;\n permissionMode?: LettaCodeClientSessionOptions[\"permissionMode\"];\n agentId?: string;\n conversationId?: string;\n },\n ): Promise<void> {\n if (!this.initialized) {\n await this.initialize();\n }\n if (!this.controller || !this.runtime) {\n throw new Error(\"Session is not initialized\");\n }\n const payload: Record<string, unknown> = {};\n if (updates.cwd !== undefined) payload.cwd = updates.cwd;\n const mode = mapPermissionMode(updates.permissionMode);\n if (mode !== undefined) payload.mode = mode;\n if (updates.agentId !== undefined) payload.agent_id = updates.agentId;\n if (updates.conversationId !== undefined) payload.conversation_id = updates.conversationId;\n\n this.controller.send({\n type: \"change_device_state\",\n runtime: this.runtime,\n payload,\n });\n }\n\n async updateToolset(toolsetPreference: string): Promise<void> {\n if (!this.initialized) {\n await this.initialize();\n }\n if (!this.controller || !this.runtime) {\n throw new Error(\"Session is not initialized\");\n }\n const response = await this.controller.request(\n \"update_toolset\",\n {\n runtime: this.runtime,\n toolset_preference: toolsetPreference,\n },\n { predicate: (message) => message.type === \"update_toolset_response\" },\n );\n ensureSuccess(response, \"Failed to update toolset\");\n }\n\n protected abstract initializeRuntimeController(): Promise<RuntimeSessionInit>;\n\n protected async afterRuntimeInitialized(): Promise<void> {\n // Optional hook for subclasses to send transport-specific startup frames.\n }\n\n protected async beforeTurn(): Promise<void> {\n // Optional hook for subclasses to refresh transport-specific lifecycle state.\n }\n\n protected onCoreClose(): void {\n // Optional hook for subclass-owned resources outside the controller.\n }\n\n protected currentOptions(): LettaCodeClientSessionOptions | CreateAgentOptions {\n return this.mode.options;\n }\n\n protected shouldEnableMemfs(options: LettaCodeClientSessionOptions | CreateAgentOptions): boolean {\n void options;\n return false;\n }\n\n protected enableMemfsBody(): Record<string, unknown> {\n if (!this.runtime) return {};\n return { agent_id: this.runtime.agent_id };\n }\n\n protected setModel(model: string): void {\n this._model = model;\n }\n\n private trackSentTurn(runtime: RuntimeScope): TurnTracker {\n const turn: TurnTracker = {\n id: ++this.nextTurnId,\n runtime,\n clientMessageId: `sdk-message-${Date.now()}-${++this.clientMessageCounter}`,\n queuedAt: Date.now(),\n startedAt: 0,\n assistantText: \"\",\n runIds: new Set<string>(),\n observedTurnEvidence: false,\n observedRequiresApprovalStop: false,\n abortRequested: false,\n timeout: null,\n };\n\n if (this.activeTurn) {\n this.pendingTurns.push(turn);\n } else {\n this.activateTurn(turn);\n }\n return turn;\n }\n\n private activateTurn(turn: TurnTracker): void {\n this.activeTurn = turn;\n turn.startedAt = Date.now();\n this.activeTurnStartedAt = turn.startedAt;\n if (this.requestTimeoutMs !== undefined) {\n turn.timeout = setTimeout(() => {\n this.failTurn(turn, `Timed out waiting for ${this.label} turn`);\n }, this.requestTimeoutMs);\n (turn.timeout as { unref?: () => void }).unref?.();\n }\n }\n\n private activateNextTurnFromProtocol(): TurnTracker | null {\n if (this.activeTurn) return this.activeTurn;\n const next = this.pendingTurns.shift();\n if (!next) return null;\n this.activateTurn(next);\n return next;\n }\n\n private removeTrackedTurn(turn: TurnTracker): void {\n if (turn.timeout) clearTimeout(turn.timeout);\n if (this.activeTurn === turn) {\n this.activeTurn = null;\n return;\n }\n const index = this.pendingTurns.indexOf(turn);\n if (index !== -1) this.pendingTurns.splice(index, 1);\n }\n\n private failTurn(turn: TurnTracker, detail: string): void {\n if (this.activeTurn !== turn) return;\n this.enqueue({\n type: \"error\",\n message: detail,\n errorCode: \"error\",\n stopReason: \"error\",\n errorDetail: detail,\n recoverable: false,\n });\n this.completeActiveTurn({\n runtime: turn.runtime,\n stopReason: \"error\",\n runIds: [...turn.runIds],\n success: false,\n detail,\n errorCode: \"error\",\n });\n }\n\n private completeActiveTurn(turn: RuntimeTurnResult): void {\n const active = this.activeTurn;\n if (!active) return;\n if (active.timeout) {\n clearTimeout(active.timeout);\n active.timeout = null;\n }\n this.enqueue(this.resultFromTurn(turn, active));\n this.activeTurn = null;\n }\n\n private async resolveUpdateModelPayload(\n input: NormalizedUpdateModelInput,\n ): Promise<UpdateModelPayload> {\n if (input.reasoningEffort === undefined) {\n return modelPayloadWithoutReasoning(input);\n }\n if (!this.controller) {\n throw new Error(\"Session is not initialized\");\n }\n\n const catalog = await this.controller.listModels();\n const byId = new Map(catalog.entries.map((entry) => [entry.id, entry]));\n const aliases = catalog.byokProviderAliases;\n\n let baseEntry: LettaCodeModelEntry | undefined;\n let explicitHandle: string | undefined;\n let targetHandle: string | undefined;\n\n if (input.modelId !== undefined) {\n baseEntry = byId.get(input.modelId);\n explicitHandle = input.modelHandle;\n targetHandle = baseEntry?.handle ?? toBaseModelHandle(input.modelHandle, aliases);\n } else if (input.modelHandle !== undefined) {\n explicitHandle = input.modelHandle;\n targetHandle = toBaseModelHandle(input.modelHandle, aliases);\n } else if (input.model !== undefined) {\n baseEntry = byId.get(input.model);\n if (baseEntry) {\n targetHandle = baseEntry.handle;\n } else {\n explicitHandle = input.model;\n targetHandle = toBaseModelHandle(input.model, aliases);\n }\n } else {\n explicitHandle = this._model || undefined;\n targetHandle = toBaseModelHandle(this._model || undefined, aliases);\n }\n\n if (!targetHandle) {\n throw new Error(\"reasoningEffort requires a current model or explicit model/modelId/modelHandle.\");\n }\n\n const candidates = catalog.entries.filter(\n (entry) => entry.handle === targetHandle || entry.handle === explicitHandle,\n );\n if (candidates.length === 0) {\n throw new Error(\n `reasoningEffort requires a model from listModels(); no catalog entry found for ${targetHandle}.`,\n );\n }\n\n const contextWindow =\n getContextWindow(baseEntry?.updateArgs) ?? getContextWindow(this._modelSettings);\n const scopedCandidates = sameContextCandidates(candidates, contextWindow);\n const matchingEntry =\n scopedCandidates.find((entry) => getReasoningEffort(entry) === input.reasoningEffort) ??\n candidates.find((entry) => getReasoningEffort(entry) === input.reasoningEffort);\n\n if (!matchingEntry) {\n throw new Error(\n `No ${input.reasoningEffort} reasoning tier found for model ${targetHandle}.`,\n );\n }\n\n const payload: UpdateModelPayload = { model_id: matchingEntry.id };\n if (explicitHandle !== undefined) {\n payload.model_handle = explicitHandle;\n }\n return payload;\n }\n\n protected async applyPostInitializeOptions(): Promise<void> {\n if (!this.controller || !this.runtime) return;\n\n const options = this.currentOptions();\n\n if (this.shouldEnableMemfs(options)) {\n const response = await this.controller.request(\n \"enable_memfs\",\n this.enableMemfsBody(),\n { predicate: (message) => message.type === \"enable_memfs_response\" },\n );\n ensureSuccess(response, \"Failed to enable memfs\");\n }\n\n const dreamingSettings = resolveDreamingSettings(options.dreaming);\n if (dreamingSettings) {\n const response = await this.controller.request(\n \"set_reflection_settings\",\n {\n runtime: this.runtime,\n settings: dreamingSettings,\n scope: \"both\",\n },\n { predicate: (message) => message.type === \"set_reflection_settings_response\" },\n );\n ensureSuccess(response, \"Failed to update dreaming settings\");\n }\n\n if (this.mode.kind !== \"session\") return;\n\n if (\n this.mode.options.model !== undefined ||\n this.mode.options.reasoningEffort !== undefined\n ) {\n await this.updateModel({\n ...(this.mode.options.model !== undefined ? { model: this.mode.options.model } : {}),\n ...(this.mode.options.reasoningEffort !== undefined\n ? { reasoningEffort: this.mode.options.reasoningEffort }\n : {}),\n });\n }\n\n // Initial cwd and permission mode are part of runtime_start for\n // websocket protocol sessions. Reserve change_device_state for explicit\n // post-init mutations via changeDeviceState().\n }\n\n private handleProtocolMessage = (message: ProtocolMessage): void => {\n if (!this.runtime || !sameRuntime(message, this.runtime)) return;\n\n if (message.type === \"update_queue\") {\n const sdkMessage: SDKQueueUpdateMessage = {\n type: \"queue_update\",\n queue: queueItems(message),\n };\n this.enqueue(sdkMessage);\n return;\n }\n\n if (message.type === \"update_loop_status\") {\n this.handleLoopStatusMessage(message);\n return;\n }\n\n const delta = streamDeltaRecord(message);\n if (!delta) return;\n const active = this.activateNextTurnFromProtocol();\n if (active) {\n active.observedTurnEvidence = true;\n const runId = streamDeltaRunId(delta);\n if (runId) active.runIds.add(runId);\n }\n\n const sdkMessage = this.transformStreamDelta(delta);\n if (sdkMessage) {\n this.enqueue(sdkMessage);\n }\n\n this.handleTurnTerminalDelta(delta, sdkMessage);\n };\n\n private handleLoopStatusMessage(message: ProtocolMessage): void {\n const status = loopStatusValue(message);\n if (!status) return;\n const activeRunIds = loopStatusRunIds(message);\n const sdkMessage: SDKLoopStatusMessage = {\n type: \"loop_status\",\n status,\n activeRunIds,\n };\n this.enqueue(sdkMessage);\n\n const active = this.activeTurn;\n if (!active) return;\n for (const runId of activeRunIds) active.runIds.add(runId);\n\n const hadTurnEvidence = active.observedTurnEvidence || active.observedRequiresApprovalStop;\n if (!hadTurnEvidence) return;\n if (status === \"WAITING_ON_APPROVAL\") {\n this.completeActiveTurn({\n runtime: active.runtime,\n stopReason: \"requires_approval\",\n runIds: [...active.runIds],\n });\n return;\n }\n if (status === \"WAITING_ON_INPUT\" && active.abortRequested) {\n this.completeActiveTurn({\n runtime: active.runtime,\n stopReason: \"interrupted\",\n runIds: [...active.runIds],\n success: false,\n detail: \"Interrupted\",\n errorCode: \"interrupted\",\n });\n return;\n }\n if (status === \"WAITING_ON_INPUT\" && active.observedTurnEvidence) {\n this.completeActiveTurn({\n runtime: active.runtime,\n stopReason: null,\n runIds: [...active.runIds],\n });\n }\n }\n\n private handleTurnTerminalDelta(\n delta: Record<string, unknown>,\n sdkMessage: SDKMessage | null,\n ): void {\n const active = this.activeTurn;\n if (!active) return;\n const messageType = streamDeltaMessageType(delta);\n if (messageType === \"stop_reason\") {\n const stopReason = streamDeltaStopReason(delta) ?? null;\n if (stopReason === \"requires_approval\") {\n active.observedRequiresApprovalStop = true;\n return;\n }\n this.completeActiveTurn({\n runtime: active.runtime,\n stopReason,\n runIds: [...active.runIds],\n });\n return;\n }\n\n if (sdkMessage?.type === \"error\") {\n this.completeActiveTurn({\n runtime: active.runtime,\n stopReason: sdkMessage.stopReason,\n runIds: [...active.runIds],\n success: false,\n detail: sdkMessage.errorDetail ?? sdkMessage.message,\n errorCode: sdkMessage.errorCode,\n });\n }\n }\n\n private transformStreamDelta(delta: Record<string, unknown>): SDKMessage | null {\n const messageType = typeof delta.message_type === \"string\" ? delta.message_type : undefined;\n const runId = typeof delta.run_id === \"string\" ? delta.run_id : undefined;\n const uuid = typeof delta.id === \"string\" ? delta.id : `${this.label}-${++this.messageCounter}`;\n\n if (messageType === \"assistant_message\") {\n const content = extractTextFromContent(delta.content);\n if (!content) return null;\n if (this.activeTurn) this.activeTurn.assistantText += content;\n return { type: \"assistant\", content, uuid, runId };\n }\n\n if (messageType === \"reasoning_message\") {\n const content = typeof delta.reasoning === \"string\"\n ? delta.reasoning\n : extractTextFromContent(delta.content);\n if (!content) return null;\n return { type: \"reasoning\", content, uuid, runId };\n }\n\n if (messageType === \"tool_call_message\" || messageType === \"approval_request_message\") {\n const toolCall = firstToolCall(delta);\n if (!toolCall) return null;\n const fn = toolCall.function && typeof toolCall.function === \"object\"\n ? (toolCall.function as Record<string, unknown>)\n : undefined;\n const toolCallId =\n (typeof toolCall.tool_call_id === \"string\" ? toolCall.tool_call_id : undefined) ??\n (typeof toolCall.id === \"string\" ? toolCall.id : undefined);\n if (!toolCallId) {\n const detail = `Missing tool_call_id in ${messageType} (uuid=${uuid})`;\n return {\n type: \"error\",\n message: detail,\n errorCode: \"protocol_error\",\n stopReason: \"protocol_error\",\n runId,\n recoverable: false,\n errorDetail: detail,\n };\n }\n const toolName =\n (typeof toolCall.name === \"string\" ? toolCall.name : undefined) ??\n (typeof fn?.name === \"string\" ? fn.name : undefined) ??\n \"?\";\n const { input, raw } = toolInputFromArguments(toolCall.arguments ?? fn?.arguments);\n return {\n type: \"tool_call\",\n toolCallId,\n toolName,\n toolInput: input,\n rawArguments: raw,\n uuid,\n runId,\n };\n }\n\n if (messageType === \"tool_return_message\") {\n const toolReturn = firstToolReturn(delta) ?? delta;\n const toolCallId =\n (typeof delta.tool_call_id === \"string\" ? delta.tool_call_id : undefined) ??\n (typeof toolReturn.tool_call_id === \"string\" ? toolReturn.tool_call_id : undefined);\n if (!toolCallId) return null;\n const content =\n extractTextFromContent(delta.tool_return ?? toolReturn.tool_return ?? toolReturn.content) ?? \"\";\n const status = typeof delta.status === \"string\" ? delta.status : toolReturn.status;\n return {\n type: \"tool_result\",\n toolCallId,\n content,\n isError: status === \"error\",\n uuid,\n runId,\n };\n }\n\n if (messageType === \"error_message\" || messageType === \"loop_error\") {\n const detail =\n (typeof delta.detail === \"string\" ? delta.detail : undefined) ??\n (typeof delta.message === \"string\" ? delta.message : undefined) ??\n `${this.label} turn failed`;\n const stopReason =\n (typeof delta.stop_reason === \"string\" ? delta.stop_reason : undefined) ??\n (typeof delta.error_type === \"string\" ? delta.error_type : undefined) ??\n \"error\";\n const approvalConflict = isApprovalConflictSignal({\n detail,\n message: typeof delta.message === \"string\" ? delta.message : undefined,\n stopReason,\n });\n return {\n type: \"error\",\n message: detail,\n errorCode: approvalConflict ? \"approval_conflict\" : toSdkErrorCode(stopReason),\n approvalConflict: approvalConflict || undefined,\n recoverable: approvalConflict ? true : false,\n errorDetail: detail,\n stopReason,\n runId,\n };\n }\n\n if (messageType === \"retry\") {\n return {\n type: \"retry\",\n reason: typeof delta.reason === \"string\" ? delta.reason : \"error\",\n attempt: typeof delta.attempt === \"number\" ? delta.attempt : 0,\n maxAttempts: typeof delta.max_attempts === \"number\" ? delta.max_attempts : 0,\n delayMs: typeof delta.delay_ms === \"number\" ? delta.delay_ms : 0,\n runId,\n };\n }\n\n if (messageType === \"stop_reason\" || messageType === \"ping\") {\n return null;\n }\n\n return {\n type: \"stream_event\",\n event: delta as SDKStreamEventPayload,\n uuid,\n };\n }\n\n private resultFromTurn(turn: RuntimeTurnResult, tracker?: TurnTracker): SDKResultMessage {\n const stopReason = turn.stopReason ?? (turn.success === false ? \"error\" : undefined);\n const approvalConflict = isApprovalConflictSignal({\n detail: turn.detail,\n stopReason,\n });\n const success = turn.success !== undefined\n ? turn.success && !approvalConflict && !FAILURE_STOP_REASONS.has(stopReason ?? \"\")\n : !approvalConflict && !FAILURE_STOP_REASONS.has(stopReason ?? \"\");\n const errorCode = approvalConflict\n ? \"approval_conflict\"\n : (turn.errorCode ?? toSdkErrorCode(stopReason));\n\n return {\n type: \"result\",\n success,\n result: success ? (tracker?.assistantText || undefined) : undefined,\n error: success ? undefined : (errorCode ?? stopReason ?? \"error\"),\n errorCode: success ? undefined : (errorCode ?? \"error\"),\n approvalConflict: approvalConflict || undefined,\n recoverable: approvalConflict ? true : success ? undefined : false,\n errorDetail: success ? undefined : turn.detail,\n stopReason,\n durationMs: Date.now() - (tracker?.startedAt || this.activeTurnStartedAt),\n conversationId: turn.runtime.conversation_id,\n runIds: turn.runIds.length > 0 ? turn.runIds : undefined,\n };\n }\n\n private enqueue(message: SDKMessage): void {\n const resolver = this.streamResolvers.shift();\n if (resolver) {\n resolver(message);\n return;\n }\n this.streamQueue.push(message);\n }\n\n private nextMessage(): Promise<SDKMessage | null> {\n const next = this.streamQueue.shift();\n if (next) return Promise.resolve(next);\n if (this.closed) return Promise.resolve(null);\n return new Promise((resolve) => {\n this.streamResolvers.push(resolve);\n });\n }\n\n private resolveAll(value: SDKMessage | null): void {\n for (const resolve of this.streamResolvers.splice(0)) {\n resolve(value);\n }\n }\n}\n",
|
|
12
|
-
"import {\n createAppServerClient,\n type AppServerClient,\n type AppServerExternalToolCallHandler,\n type AppServerSocketConstructor,\n} from \"@letta-ai/letta-code/app-server-client\";\nimport {\n isHeadlessAutoAllowTool,\n requiresRuntimeUserInput,\n} from \"./interactiveToolPolicy.js\";\nimport { startLocalAppServer, type LocalAppServerHandle } from \"./local-app-server.js\";\nimport {\n RemoteClientSessionCore,\n ensureSuccess,\n mapPermissionMode,\n normalizeSendMessage,\n type ProtocolMessage,\n type RemoteClientRuntimeController,\n type RuntimeSendTurnOptions,\n type RuntimeScope,\n type RuntimeSessionInit,\n type RuntimeSessionMode,\n} from \"./remote-client-session-core.js\";\nimport type {\n AnyAgentTool,\n CanUseToolResponse,\n CreateAgentOptions,\n LettaCodeRemoteClientOptions,\n LettaCodeClientSessionOptions,\n ListModelsResult,\n ListMessagesOptions,\n ListMessagesResult,\n MessageContentItem,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n SendMessage,\n UpdateModelResult,\n} from \"./types.js\";\n\ntype RuntimeStartResponse = ProtocolMessage & {\n type: \"runtime_start_response\";\n success: boolean;\n runtime: RuntimeScope | null;\n agent: (Record<string, unknown> & {\n id?: string;\n model?: string | null;\n model_settings?: Record<string, unknown> | null;\n }) | null;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype ConversationRetrieveResponse = ProtocolMessage & {\n type: \"conversation_retrieve_response\";\n success: boolean;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype ConversationMessagesListResponse = ProtocolMessage & {\n type: \"conversation_messages_list_response\";\n success: boolean;\n messages: unknown[];\n next_before?: string | null;\n nextBefore?: string | null;\n has_more?: boolean;\n hasMore?: boolean;\n error?: string;\n};\n\ntype ListModelsResponse = ProtocolMessage & {\n type: \"list_models_response\";\n success: boolean;\n entries?: unknown;\n available_handles?: unknown;\n byok_provider_aliases?: unknown;\n error?: string;\n};\n\ntype UpdateModelResponse = ProtocolMessage & {\n type: \"update_model_response\";\n success: boolean;\n applied_to?: unknown;\n model_id?: unknown;\n model_handle?: unknown;\n model_settings?: unknown;\n error?: string;\n};\n\ntype UpdateModelPayload = {\n model_id?: string;\n model_handle?: string;\n};\n\ntype RuntimeStartCommand = Parameters<AppServerClient[\"runtimeStart\"]>[0];\n\nexport function agentToolNames(\n agent: Record<string, unknown> | null | undefined,\n): string[] | undefined {\n const tools = agent?.tools;\n if (!Array.isArray(tools)) return undefined;\n return tools.flatMap((tool) => {\n if (typeof tool === \"string\" && tool.length > 0) return [tool];\n if (!tool || typeof tool !== \"object\") return [];\n const name = (tool as { name?: unknown }).name;\n return typeof name === \"string\" && name.length > 0 ? [name] : [];\n });\n}\n\nexport type AppServerSessionOptions = Partial<LettaCodeRemoteClientOptions> & {\n /** Base websocket URL. Remote sessions require this; local sessions may omit\n * it to spawn an SDK-owned app-server lazily at initialize(). */\n url?: string;\n /** Spawn a local app-server when url is omitted. */\n local?: boolean;\n /** Optional backend for SDK-owned local app-server processes. */\n localBackend?: string;\n /** Optional local app-server listen URL. Defaults to ws://127.0.0.1:0. */\n localListen?: string;\n /** Timeout for local app-server startup. */\n localStartupTimeoutMs?: number;\n /** Extra environment variables for SDK-owned local app-server processes. */\n localEnv?: Record<string, string | undefined>;\n /** Whether create-agent runtime_start should pin the created agent globally. */\n pinGlobalAgent?: boolean;\n /** Whether SDK create-agent payloads should add the origin tag automatically. */\n includeSdkOriginTag?: boolean;\n};\n\nexport type AppServerSessionMode = RuntimeSessionMode;\n\nconst SDK_AGENT_ORIGIN_TAG = \"origin:letta-code\";\n\nfunction isPresetSystemPrompt(value: string): boolean {\n return [\n \"default\",\n \"letta-claude\",\n \"letta-codex\",\n \"letta-gemini\",\n \"claude\",\n \"codex\",\n \"gemini\",\n ].includes(value);\n}\n\nfunction includeSdkAgentOriginTag(tags: string[] | undefined): string[] {\n const normalizedTags: string[] = [];\n let hasOriginTag = false;\n\n for (const tag of tags ?? []) {\n if (tag === SDK_AGENT_ORIGIN_TAG) {\n if (hasOriginTag) continue;\n hasOriginTag = true;\n }\n normalizedTags.push(tag);\n }\n\n if (!hasOriginTag) {\n normalizedTags.push(SDK_AGENT_ORIGIN_TAG);\n }\n\n return normalizedTags;\n}\n\nfunction assertRemoteCreateAgentOptionsSupported(options: CreateAgentOptions): void {\n if (options.allowedTools !== undefined || options.disallowedTools !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support allowedTools/disallowedTools.\");\n }\n if (options.canUseTool !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support canUseTool callbacks.\");\n }\n if (options.skillSources !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support skillSources overrides.\");\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support systemInfoReminder overrides.\");\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support dreaming.behavior overrides.\");\n }\n}\n\nexport function assertRemoteSessionOptionsSupported(\n action: string,\n options: LettaCodeClientSessionOptions,\n): void {\n if (options.systemPrompt !== undefined) {\n throw new Error(`App-server ${action}() does not yet support systemPrompt overrides for existing agents.`);\n }\n if (options.allowedTools !== undefined || options.disallowedTools !== undefined) {\n throw new Error(`App-server ${action}() does not yet support allowedTools/disallowedTools.`);\n }\n if (options.skillSources !== undefined) {\n throw new Error(`App-server ${action}() does not yet support skillSources overrides.`);\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(`App-server ${action}() does not yet support systemInfoReminder overrides.`);\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(`App-server ${action}() does not yet support dreaming.behavior overrides.`);\n }\n if ((options as { memfsStartup?: unknown }).memfsStartup !== undefined) {\n throw new Error(`App-server ${action}() does not support memfsStartup.`);\n }\n if (options.includePartialMessages !== undefined) {\n throw new Error(`App-server ${action}() streams app-server deltas directly and does not support includePartialMessages.`);\n }\n}\n\nfunction normalizeMemoryBlock(block: Record<string, unknown>): Record<string, unknown> {\n const normalized = { ...block };\n if (normalized.value === undefined && typeof normalized.content === \"string\") {\n normalized.value = normalized.content;\n }\n return normalized;\n}\n\nexport function createAgentBody(\n options: CreateAgentOptions,\n settings: { includeSdkOriginTag?: boolean } = {},\n): Record<string, unknown> {\n assertRemoteCreateAgentOptionsSupported(options);\n\n const includeOriginTag = settings.includeSdkOriginTag ?? true;\n const body: Record<string, unknown> = {};\n if (includeOriginTag || options.tags !== undefined) {\n body.tags = includeOriginTag ? includeSdkAgentOriginTag(options.tags) : options.tags;\n }\n\n if (options.model !== undefined) body.model = options.model;\n if (options.embedding !== undefined) body.embedding = options.embedding;\n\n if (options.systemPrompt !== undefined) {\n if (typeof options.systemPrompt === \"string\") {\n if (isPresetSystemPrompt(options.systemPrompt)) {\n throw new Error(\"App-server createAgent() does not yet support system prompt presets.\");\n }\n body.system = options.systemPrompt;\n } else {\n throw new Error(\"App-server createAgent() does not yet support system prompt preset objects.\");\n }\n }\n\n const memoryBlocks: Array<Record<string, unknown>> = [];\n const blockIds: string[] = [];\n for (const item of options.memory ?? []) {\n if (typeof item === \"string\") {\n throw new Error(\"App-server createAgent() does not yet support memory preset names.\");\n }\n if (\"blockId\" in item) {\n blockIds.push(item.blockId);\n } else {\n memoryBlocks.push(normalizeMemoryBlock(item as unknown as Record<string, unknown>));\n }\n }\n if (options.persona !== undefined) {\n memoryBlocks.push({ label: \"persona\", value: options.persona });\n }\n if (options.human !== undefined) {\n memoryBlocks.push({ label: \"human\", value: options.human });\n }\n if (memoryBlocks.length > 0) body.memory_blocks = memoryBlocks;\n if (blockIds.length > 0) body.block_ids = blockIds;\n\n return body;\n}\n\nexport function externalToolGroups(tools: AnyAgentTool[] | undefined): Array<Record<string, unknown>> | undefined {\n if (!tools || tools.length === 0) return undefined;\n return [\n {\n tools: tools.map((tool) => ({\n name: tool.name,\n label: tool.label,\n description: tool.description,\n parameters: tool.parameters as Record<string, unknown>,\n })),\n },\n ];\n}\n\nexport function createExternalToolCallHandler(\n externalTools: Map<string, AnyAgentTool>,\n): AppServerExternalToolCallHandler {\n return async (request) => {\n const tool = externalTools.get(request.tool_name);\n if (!tool) {\n throw new Error(`Unknown external tool: ${request.tool_name}`);\n }\n const result = await tool.execute(request.tool_call_id, request.input);\n return {\n content: result.content.map((part) => ({\n type: part.type,\n ...(part.text !== undefined ? { text: part.text } : {}),\n ...(part.data !== undefined ? { data: part.data } : {}),\n ...(part.mimeType !== undefined ? { mimeType: part.mimeType } : {}),\n })),\n };\n };\n}\n\ntype AppServerApprovalOptions = LettaCodeClientSessionOptions | CreateAgentOptions;\n\ntype AppServerApprovalResponseDecision =\n | {\n behavior: \"allow\";\n message?: string;\n updated_input?: Record<string, unknown> | null;\n selected_permission_suggestion_ids?: string[];\n }\n | {\n behavior: \"deny\";\n message: string;\n };\n\nexport async function resolveAppServerToolApproval(\n options: AppServerApprovalOptions,\n toolName: string,\n toolInput: Record<string, unknown>,\n): Promise<CanUseToolResponse> {\n const hasCallback = typeof options.canUseTool === \"function\";\n const toolNeedsRuntimeUserInput = requiresRuntimeUserInput(toolName);\n\n if (toolNeedsRuntimeUserInput && !hasCallback) {\n return {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n }\n\n if (options.permissionMode === \"bypassPermissions\" && !toolNeedsRuntimeUserInput) {\n return { behavior: \"allow\", updatedInput: null, updatedPermissions: [] };\n }\n\n if (hasCallback) {\n try {\n const result = await options.canUseTool!(toolName, toolInput);\n if (result.behavior === \"allow\") {\n return {\n behavior: \"allow\",\n message: result.message,\n updatedInput: result.updatedInput ?? null,\n updatedPermissions: result.updatedPermissions ?? [],\n };\n }\n return {\n behavior: \"deny\",\n message: result.message ?? \"Denied by canUseTool callback\",\n interrupt: result.interrupt ?? false,\n };\n } catch (error) {\n return {\n behavior: \"deny\",\n message: error instanceof Error ? error.message : \"Callback error\",\n interrupt: false,\n };\n }\n }\n\n if (isHeadlessAutoAllowTool(toolName)) {\n return { behavior: \"allow\", updatedInput: null, updatedPermissions: [] };\n }\n\n return {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n}\n\nfunction permissionSuggestionId(value: unknown): string | null {\n if (typeof value === \"string\") return value;\n if (!value || typeof value !== \"object\") return null;\n const record = value as Record<string, unknown>;\n if (typeof record.id === \"string\") return record.id;\n if (typeof record.suggestion_id === \"string\") return record.suggestion_id;\n if (typeof record.permission_suggestion_id === \"string\") return record.permission_suggestion_id;\n return null;\n}\n\nexport function toAppServerApprovalDecision(\n decision: CanUseToolResponse,\n): AppServerApprovalResponseDecision {\n if (decision.behavior === \"deny\") {\n return {\n behavior: \"deny\",\n message: decision.message,\n };\n }\n\n const selectedPermissionSuggestionIds = (decision.updatedPermissions ?? [])\n .map(permissionSuggestionId)\n .filter((id): id is string => id !== null);\n\n return {\n behavior: \"allow\",\n ...(decision.message !== undefined ? { message: decision.message } : {}),\n updated_input: decision.updatedInput ?? null,\n selected_permission_suggestion_ids: selectedPermissionSuggestionIds,\n };\n}\n\nfunction stringRecord(value: unknown): Record<string, string> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n const record: Record<string, string> = {};\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n if (typeof entry === \"string\") record[key] = entry;\n }\n return record;\n}\n\nfunction objectRecord(value: unknown): Record<string, unknown> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n return { ...(value as Record<string, unknown>) };\n}\n\nfunction normalizeListModelsResponse(response: ListModelsResponse): ListModelsResult {\n if (!response.success) {\n throw new Error(response.error ?? \"listModels failed\");\n }\n\n const entries = Array.isArray(response.entries)\n ? response.entries.flatMap((entry) => {\n if (!entry || typeof entry !== \"object\") return [];\n const record = entry as Record<string, unknown>;\n if (\n typeof record.id !== \"string\" ||\n typeof record.handle !== \"string\" ||\n typeof record.label !== \"string\" ||\n typeof record.description !== \"string\"\n ) {\n return [];\n }\n const updateArgs = objectRecord(record.updateArgs);\n return [\n {\n id: record.id,\n handle: record.handle,\n label: record.label,\n description: record.description,\n ...(typeof record.isDefault === \"boolean\" ? { isDefault: record.isDefault } : {}),\n ...(typeof record.isFeatured === \"boolean\" ? { isFeatured: record.isFeatured } : {}),\n ...(typeof record.free === \"boolean\" ? { free: record.free } : {}),\n ...(updateArgs ? { updateArgs } : {}),\n },\n ];\n })\n : [];\n\n const result: ListModelsResult = { entries };\n if (response.available_handles === null) {\n result.availableHandles = null;\n } else if (Array.isArray(response.available_handles)) {\n result.availableHandles = response.available_handles.filter(\n (handle): handle is string => typeof handle === \"string\",\n );\n }\n const aliases = stringRecord(response.byok_provider_aliases);\n if (aliases) result.byokProviderAliases = aliases;\n return result;\n}\n\nfunction normalizeUpdateModelResponse(response: UpdateModelResponse): UpdateModelResult {\n if (!response.success) {\n throw new Error(response.error ?? \"Failed to update model\");\n }\n const result: UpdateModelResult = {};\n if (response.applied_to === \"agent\" || response.applied_to === \"conversation\") {\n result.appliedTo = response.applied_to;\n }\n if (typeof response.model_id === \"string\") result.modelId = response.model_id;\n if (typeof response.model_handle === \"string\") result.modelHandle = response.model_handle;\n if (response.model_settings === null) {\n result.modelSettings = null;\n } else if (response.model_settings && typeof response.model_settings === \"object\") {\n result.modelSettings = { ...(response.model_settings as Record<string, unknown>) };\n }\n return result;\n}\n\nfunction runtimeScopeFromMessage(message: ProtocolMessage): RuntimeScope | null {\n if (message.runtime) return message.runtime;\n const agentId = typeof message.agent_id === \"string\" ? message.agent_id : null;\n const conversationId = typeof message.conversation_id === \"string\" ? message.conversation_id : null;\n if (agentId && conversationId) {\n return { agent_id: agentId, conversation_id: conversationId };\n }\n return null;\n}\n\nexport function registerAppServerControlRequestHandler(config: {\n client: AppServerClient;\n getRuntime: () => RuntimeScope | null;\n getOptions: () => AppServerApprovalOptions;\n}): () => void {\n return config.client.onMessage((rawMessage, channel) => {\n const message = rawMessage as unknown as ProtocolMessage;\n if (channel !== \"control\" || message.type !== \"control_request\") return;\n void respondToAppServerControlRequest(config, message).catch(() => {\n // Permission callback failures are converted into deny responses by resolveAppServerToolApproval().\n });\n });\n}\n\nasync function respondToAppServerControlRequest(\n config: {\n client: AppServerClient;\n getRuntime: () => RuntimeScope | null;\n getOptions: () => AppServerApprovalOptions;\n },\n message: ProtocolMessage,\n): Promise<void> {\n const runtime = runtimeScopeFromMessage(message) ?? config.getRuntime();\n if (!runtime) return;\n\n const requestId = typeof message.request_id === \"string\" ? message.request_id : undefined;\n const request = message.request;\n if (!requestId || !request || typeof request !== \"object\") return;\n const requestRecord = request as Record<string, unknown>;\n if (requestRecord.subtype !== \"can_use_tool\") return;\n\n const toolName = typeof requestRecord.tool_name === \"string\" ? requestRecord.tool_name : \"unknown\";\n const toolInput =\n requestRecord.input && typeof requestRecord.input === \"object\" && !Array.isArray(requestRecord.input)\n ? (requestRecord.input as Record<string, unknown>)\n : {};\n const decision = await resolveAppServerToolApproval(config.getOptions(), toolName, toolInput);\n config.client.input({\n runtime,\n payload: {\n kind: \"approval_response\",\n request_id: requestId,\n decision: toAppServerApprovalDecision(decision),\n },\n } as Parameters<AppServerClient[\"input\"]>[0]);\n}\n\nexport class AppServerRuntimeController implements RemoteClientRuntimeController {\n constructor(\n private readonly client: AppServerClient,\n private readonly options: AppServerSessionOptions,\n ) {}\n\n onMessage(handler: (message: ProtocolMessage, channel?: string) => void): () => void {\n return this.client.onMessage((message, channel) => {\n handler(message as unknown as ProtocolMessage, channel);\n });\n }\n\n send(command: Record<string, unknown>): void {\n this.client.send(command as unknown as Parameters<AppServerClient[\"send\"]>[0]);\n }\n\n sendTurnMessage(\n runtime: RuntimeScope,\n message: SendMessage,\n options: RuntimeSendTurnOptions,\n ): void {\n const payload: Record<string, unknown> = {\n kind: \"create_message\",\n messages: [\n {\n role: \"user\",\n content: normalizeSendMessage(message),\n client_message_id: options.clientMessageId,\n },\n ],\n };\n this.client.input({\n runtime,\n payload,\n } as Parameters<AppServerClient[\"input\"]>[0]);\n }\n\n async abort(runtime: RuntimeScope): Promise<void> {\n await this.client.abort({ runtime } as Parameters<AppServerClient[\"abort\"]>[0]);\n }\n\n request(\n type: string,\n body: Record<string, unknown>,\n options: { timeoutMs?: number; predicate?: (message: ProtocolMessage) => boolean } = {},\n ): Promise<ProtocolMessage> {\n const request = this.client.request.bind(this.client) as unknown as (\n commandType: string,\n commandBody: Record<string, unknown>,\n requestOptions?: {\n timeoutMs?: number;\n predicate?: (message: ProtocolMessage) => boolean;\n },\n ) => Promise<ProtocolMessage>;\n return request(type, body, options);\n }\n\n async listModels(): Promise<ListModelsResult> {\n const response = (await this.request(\n \"list_models\",\n {},\n { predicate: (message) => message.type === \"list_models_response\" },\n )) as ListModelsResponse;\n return normalizeListModelsResponse(response);\n }\n\n async updateModel(\n runtime: RuntimeScope,\n payload: UpdateModelPayload,\n ): Promise<UpdateModelResult> {\n const response = (await this.request(\n \"update_model\",\n {\n runtime,\n payload,\n },\n { predicate: (message) => message.type === \"update_model_response\" },\n )) as UpdateModelResponse;\n return normalizeUpdateModelResponse(response);\n }\n\n async recoverPendingApprovals(\n runtime: RuntimeScope,\n options: RecoverPendingApprovalsOptions = {},\n ): Promise<RecoverPendingApprovalsResult> {\n const response = await this.client.sync(\n {\n runtime,\n recover_approvals: true,\n force_device_status: true,\n },\n options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {},\n );\n\n if (!response.success) {\n return {\n recovered: false,\n unsupported: false,\n detail: response.error ?? \"Failed to recover pending approvals\",\n };\n }\n\n return { recovered: true, unsupported: false };\n }\n\n async listMessages(\n conversationId: string,\n options: ListMessagesOptions = {},\n ): Promise<ListMessagesResult> {\n const query: Record<string, unknown> = {};\n if (options.before !== undefined) query.before = options.before;\n if (options.after !== undefined) query.after = options.after;\n if (options.order !== undefined) query.order = options.order;\n if (options.limit !== undefined) query.limit = options.limit;\n\n const response = (await this.request(\n \"conversation_messages_list\",\n {\n conversation_id: conversationId,\n ...(Object.keys(query).length > 0 ? { query } : {}),\n },\n { predicate: (message) => message.type === \"conversation_messages_list_response\" },\n )) as ConversationMessagesListResponse;\n\n if (!response.success) {\n throw new Error(response.error ?? \"listMessages failed\");\n }\n\n const result: ListMessagesResult = {\n messages: response.messages ?? [],\n };\n const nextBefore =\n typeof response.nextBefore === \"string\" || response.nextBefore === null\n ? response.nextBefore\n : typeof response.next_before === \"string\" || response.next_before === null\n ? response.next_before\n : undefined;\n if (nextBefore !== undefined) result.nextBefore = nextBefore;\n const hasMore =\n typeof response.hasMore === \"boolean\"\n ? response.hasMore\n : typeof response.has_more === \"boolean\"\n ? response.has_more\n : undefined;\n if (hasMore !== undefined) result.hasMore = hasMore;\n return result;\n }\n\n close(): void {\n this.client.close();\n }\n}\n\nexport class AppServerSession extends RemoteClientSessionCore {\n private ownedAppServer: LocalAppServerHandle | null = null;\n private externalTools = new Map<string, AnyAgentTool>();\n private removeExternalToolHandler: (() => void) | null = null;\n private removeControlRequestHandler: (() => void) | null = null;\n\n constructor(\n private readonly remoteOptions: AppServerSessionOptions,\n mode: AppServerSessionMode,\n ) {\n super(mode, {\n label: \"app-server\",\n requestTimeoutMs: remoteOptions.requestTimeoutMs,\n });\n const tools = mode.options.tools;\n for (const tool of tools ?? []) {\n this.externalTools.set(tool.name, tool);\n }\n }\n\n protected override shouldEnableMemfs(options: LettaCodeClientSessionOptions | CreateAgentOptions): boolean {\n void options;\n return this.mode.kind === \"create-agent\";\n }\n\n protected override async initializeRuntimeController(): Promise<RuntimeSessionInit> {\n const url = await this.resolveAppServerUrl();\n const client = createAppServerClient({\n url,\n ...(this.remoteOptions.authToken !== undefined\n ? { authToken: this.remoteOptions.authToken }\n : {}),\n ...(this.remoteOptions.WebSocket\n ? { WebSocket: this.remoteOptions.WebSocket as AppServerSocketConstructor }\n : {}),\n ...(this.remoteOptions.requestTimeoutMs !== undefined\n ? { requestTimeoutMs: this.remoteOptions.requestTimeoutMs }\n : {}),\n });\n\n this.removeControlRequestHandler = registerAppServerControlRequestHandler({\n client,\n getRuntime: () => this.runtime,\n getOptions: () => this.currentOptions(),\n });\n\n if (this.externalTools.size > 0) {\n this.removeExternalToolHandler = client.onExternalToolCall(\n createExternalToolCallHandler(this.externalTools),\n );\n }\n\n try {\n await client.connect();\n const response = await this.startRuntime(client);\n if (!response.success || !response.runtime) {\n throw new Error(response.error ?? \"Failed to start app-server runtime\");\n }\n\n const tools = agentToolNames(response.agent);\n return {\n controller: new AppServerRuntimeController(client, this.remoteOptions),\n runtime: response.runtime,\n model: typeof response.agent?.model === \"string\" ? response.agent.model : \"\",\n modelSettings: response.agent?.model_settings ?? null,\n ...(tools !== undefined ? { tools } : {}),\n };\n } catch (error) {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n client.close();\n throw error;\n }\n }\n\n protected override onCoreClose(): void {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n this.ownedAppServer?.close();\n this.ownedAppServer = null;\n }\n\n private async resolveAppServerUrl(): Promise<string> {\n if (this.remoteOptions.url) {\n return this.remoteOptions.url;\n }\n if (this.remoteOptions.local !== true) {\n throw new Error(\"App-server session requires a url unless local app-server spawning is enabled.\");\n }\n this.ownedAppServer = await startLocalAppServer({\n listen: this.remoteOptions.localListen,\n backend: this.remoteOptions.localBackend,\n startupTimeoutMs: this.remoteOptions.localStartupTimeoutMs,\n env: this.remoteOptions.localEnv,\n });\n return this.ownedAppServer.url;\n }\n\n private async startRuntime(client: AppServerClient): Promise<RuntimeStartResponse> {\n const command = await this.buildRuntimeStartCommand(client);\n const response = (await client.runtimeStart(command)) as unknown as RuntimeStartResponse;\n return response;\n }\n\n private async buildRuntimeStartCommand(client: AppServerClient): Promise<RuntimeStartCommand> {\n const options = this.mode.options;\n const command: Record<string, unknown> = {\n client_info: {\n name: \"@letta-ai/letta-agent-sdk\",\n title: \"Letta Agent SDK\",\n },\n recover_approvals: false,\n force_device_status: true,\n };\n\n const mode = mapPermissionMode(options.permissionMode);\n if (mode) command.mode = mode;\n if (options.cwd !== undefined) command.cwd = options.cwd;\n const groups = externalToolGroups(options.tools);\n if (groups) command.external_tools = groups;\n\n if (this.mode.kind === \"create-agent\") {\n command.create_agent = {\n body: createAgentBody(this.mode.options, {\n includeSdkOriginTag: this.remoteOptions.includeSdkOriginTag,\n }),\n pin_global: this.remoteOptions.pinGlobalAgent ?? true,\n };\n return command as RuntimeStartCommand;\n }\n\n if (this.mode.agentId) {\n command.agent_id = this.mode.agentId;\n if (this.mode.newConversation) {\n command.create_conversation = { body: {} };\n } else if (this.mode.defaultConversation) {\n command.conversation_id = \"default\";\n }\n return command as RuntimeStartCommand;\n }\n\n if (this.mode.conversationId) {\n const agentId = await this.resolveConversationAgentId(client, this.mode.conversationId);\n command.agent_id = agentId;\n command.conversation_id = this.mode.conversationId;\n return command as RuntimeStartCommand;\n }\n\n throw new Error(\n \"App-server createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n\n private async resolveConversationAgentId(\n client: AppServerClient,\n conversationId: string,\n ): Promise<string> {\n const request = client.request.bind(client) as unknown as (\n commandType: string,\n commandBody: Record<string, unknown>,\n options?: { predicate?: (message: ProtocolMessage) => boolean },\n ) => Promise<ProtocolMessage>;\n const response = (await request(\n \"conversation_retrieve\",\n { conversation_id: conversationId },\n { predicate: (message) => message.type === \"conversation_retrieve_response\" },\n )) as ConversationRetrieveResponse;\n if (!response.success || !response.conversation?.agent_id) {\n throw new Error(response.error ?? `Failed to retrieve conversation ${conversationId}`);\n }\n return response.conversation.agent_id;\n }\n\n}\n",
|
|
12
|
+
"import {\n createAppServerClient,\n type AppServerClient,\n type AppServerExternalToolCallHandler,\n type AppServerSocketConstructor,\n} from \"@letta-ai/letta-code/app-server-client\";\nimport {\n isHeadlessAutoAllowTool,\n requiresRuntimeUserInput,\n} from \"./interactiveToolPolicy.js\";\nimport { startLocalAppServer, type LocalAppServerHandle } from \"./local-app-server.js\";\nimport {\n RemoteClientSessionCore,\n ensureSuccess,\n mapPermissionMode,\n normalizeSendMessage,\n type ProtocolMessage,\n type RemoteClientRuntimeController,\n type RuntimeSendTurnOptions,\n type RuntimeScope,\n type RuntimeSessionInit,\n type RuntimeSessionMode,\n} from \"./remote-client-session-core.js\";\nimport type {\n AnyAgentTool,\n CanUseToolResponse,\n CreateAgentOptions,\n LettaCodeRemoteClientOptions,\n LettaCodeClientSessionOptions,\n ListModelsResult,\n ListMessagesOptions,\n ListMessagesResult,\n MessageContentItem,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n SendMessage,\n UpdateModelResult,\n} from \"./types.js\";\n\ntype RuntimeStartResponse = ProtocolMessage & {\n type: \"runtime_start_response\";\n success: boolean;\n runtime: RuntimeScope | null;\n agent: (Record<string, unknown> & {\n id?: string;\n model?: string | null;\n model_settings?: Record<string, unknown> | null;\n }) | null;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype ConversationRetrieveResponse = ProtocolMessage & {\n type: \"conversation_retrieve_response\";\n success: boolean;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype ConversationMessagesListResponse = ProtocolMessage & {\n type: \"conversation_messages_list_response\";\n success: boolean;\n messages: unknown[];\n next_before?: string | null;\n nextBefore?: string | null;\n has_more?: boolean;\n hasMore?: boolean;\n error?: string;\n};\n\ntype ListModelsResponse = ProtocolMessage & {\n type: \"list_models_response\";\n success: boolean;\n entries?: unknown;\n available_handles?: unknown;\n byok_provider_aliases?: unknown;\n error?: string;\n};\n\ntype UpdateModelResponse = ProtocolMessage & {\n type: \"update_model_response\";\n success: boolean;\n applied_to?: unknown;\n model_id?: unknown;\n model_handle?: unknown;\n model_settings?: unknown;\n error?: string;\n};\n\ntype UpdateModelPayload = {\n model_id?: string;\n model_handle?: string;\n};\n\ntype RuntimeStartCommand = Parameters<AppServerClient[\"runtimeStart\"]>[0];\n\nexport function agentToolNames(\n agent: Record<string, unknown> | null | undefined,\n): string[] | undefined {\n const tools = agent?.tools;\n if (!Array.isArray(tools)) return undefined;\n return tools.flatMap((tool) => {\n if (typeof tool === \"string\" && tool.length > 0) return [tool];\n if (!tool || typeof tool !== \"object\") return [];\n const name = (tool as { name?: unknown }).name;\n return typeof name === \"string\" && name.length > 0 ? [name] : [];\n });\n}\n\nexport type AppServerSessionOptions = Partial<LettaCodeRemoteClientOptions> & {\n /** Base websocket URL. Remote sessions require this; local sessions may omit\n * it to spawn an SDK-owned app-server lazily at initialize(). */\n url?: string;\n /** Spawn a local app-server when url is omitted. */\n local?: boolean;\n /** Optional backend for SDK-owned local app-server processes. */\n localBackend?: string;\n /** Optional local app-server listen URL. Defaults to ws://127.0.0.1:0. */\n localListen?: string;\n /** Timeout for local app-server startup. */\n localStartupTimeoutMs?: number;\n /** Extra environment variables for SDK-owned local app-server processes. */\n localEnv?: Record<string, string | undefined>;\n /** Whether create-agent runtime_start should pin the created agent globally. */\n pinGlobalAgent?: boolean;\n /** Whether SDK create-agent payloads should add the origin tag automatically. */\n includeSdkOriginTag?: boolean;\n};\n\nexport type AppServerSessionMode = RuntimeSessionMode;\n\nconst SDK_AGENT_ORIGIN_TAG = \"origin:letta-code\";\n\nfunction isPresetSystemPrompt(value: string): boolean {\n return [\n \"default\",\n \"letta-claude\",\n \"letta-codex\",\n \"letta-gemini\",\n \"claude\",\n \"codex\",\n \"gemini\",\n ].includes(value);\n}\n\nfunction includeSdkAgentOriginTag(tags: string[] | undefined): string[] {\n const normalizedTags: string[] = [];\n let hasOriginTag = false;\n\n for (const tag of tags ?? []) {\n if (tag === SDK_AGENT_ORIGIN_TAG) {\n if (hasOriginTag) continue;\n hasOriginTag = true;\n }\n normalizedTags.push(tag);\n }\n\n if (!hasOriginTag) {\n normalizedTags.push(SDK_AGENT_ORIGIN_TAG);\n }\n\n return normalizedTags;\n}\n\nfunction assertRemoteCreateAgentOptionsSupported(options: CreateAgentOptions): void {\n if (options.allowedTools !== undefined || options.disallowedTools !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support allowedTools/disallowedTools.\");\n }\n if (options.canUseTool !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support canUseTool callbacks.\");\n }\n if (options.skillSources !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support skillSources overrides.\");\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support systemInfoReminder overrides.\");\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support dreaming.behavior overrides.\");\n }\n}\n\nexport function assertRemoteSessionOptionsSupported(\n action: string,\n options: LettaCodeClientSessionOptions,\n): void {\n if (options.systemPrompt !== undefined) {\n throw new Error(`App-server ${action}() does not yet support systemPrompt overrides for existing agents.`);\n }\n if (options.allowedTools !== undefined || options.disallowedTools !== undefined) {\n throw new Error(`App-server ${action}() does not yet support allowedTools/disallowedTools.`);\n }\n if (options.skillSources !== undefined) {\n throw new Error(`App-server ${action}() does not yet support skillSources overrides.`);\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(`App-server ${action}() does not yet support systemInfoReminder overrides.`);\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(`App-server ${action}() does not yet support dreaming.behavior overrides.`);\n }\n if ((options as { memfsStartup?: unknown }).memfsStartup !== undefined) {\n throw new Error(`App-server ${action}() does not support memfsStartup.`);\n }\n if (options.includePartialMessages !== undefined) {\n throw new Error(`App-server ${action}() streams app-server deltas directly and does not support includePartialMessages.`);\n }\n}\n\nfunction normalizeMemoryBlock(block: Record<string, unknown>): Record<string, unknown> {\n const normalized = { ...block };\n if (normalized.value === undefined && typeof normalized.content === \"string\") {\n normalized.value = normalized.content;\n }\n return normalized;\n}\n\nexport function createAgentBody(\n options: CreateAgentOptions,\n settings: { includeSdkOriginTag?: boolean } = {},\n): Record<string, unknown> {\n assertRemoteCreateAgentOptionsSupported(options);\n\n const includeOriginTag = settings.includeSdkOriginTag ?? true;\n const body: Record<string, unknown> = {};\n if (includeOriginTag || options.tags !== undefined) {\n body.tags = includeOriginTag ? includeSdkAgentOriginTag(options.tags) : options.tags;\n }\n\n if (options.model !== undefined) body.model = options.model;\n if (options.embedding !== undefined) body.embedding = options.embedding;\n\n if (options.systemPrompt !== undefined) {\n if (typeof options.systemPrompt === \"string\") {\n if (isPresetSystemPrompt(options.systemPrompt)) {\n throw new Error(\"createAgent() does not yet support system prompt presets for this backend.\");\n }\n body.system = options.systemPrompt;\n } else {\n throw new Error(\"createAgent() does not yet support system prompt preset objects for this backend.\");\n }\n }\n\n const memoryBlocks: Array<Record<string, unknown>> = [];\n const blockIds: string[] = [];\n for (const item of options.memory ?? []) {\n if (typeof item === \"string\") {\n throw new Error(\"App-server createAgent() does not yet support memory preset names.\");\n }\n if (\"blockId\" in item) {\n blockIds.push(item.blockId);\n } else {\n memoryBlocks.push(normalizeMemoryBlock(item as unknown as Record<string, unknown>));\n }\n }\n if (options.persona !== undefined) {\n memoryBlocks.push({ label: \"persona\", value: options.persona });\n }\n if (options.human !== undefined) {\n memoryBlocks.push({ label: \"human\", value: options.human });\n }\n if (memoryBlocks.length > 0) body.memory_blocks = memoryBlocks;\n if (blockIds.length > 0) body.block_ids = blockIds;\n\n return body;\n}\n\nexport function externalToolGroups(tools: AnyAgentTool[] | undefined): Array<Record<string, unknown>> | undefined {\n if (!tools || tools.length === 0) return undefined;\n return [\n {\n tools: tools.map((tool) => ({\n name: tool.name,\n label: tool.label,\n description: tool.description,\n parameters: tool.parameters as Record<string, unknown>,\n })),\n },\n ];\n}\n\nexport function createExternalToolCallHandler(\n externalTools: Map<string, AnyAgentTool>,\n): AppServerExternalToolCallHandler {\n return async (request) => {\n const tool = externalTools.get(request.tool_name);\n if (!tool) {\n throw new Error(`Unknown external tool: ${request.tool_name}`);\n }\n const result = await tool.execute(request.tool_call_id, request.input);\n return {\n content: result.content.map((part) => ({\n type: part.type,\n ...(part.text !== undefined ? { text: part.text } : {}),\n ...(part.data !== undefined ? { data: part.data } : {}),\n ...(part.mimeType !== undefined ? { mimeType: part.mimeType } : {}),\n })),\n };\n };\n}\n\ntype AppServerApprovalOptions = LettaCodeClientSessionOptions | CreateAgentOptions;\n\ntype AppServerApprovalResponseDecision =\n | {\n behavior: \"allow\";\n message?: string;\n updated_input?: Record<string, unknown> | null;\n selected_permission_suggestion_ids?: string[];\n }\n | {\n behavior: \"deny\";\n message: string;\n };\n\nexport async function resolveAppServerToolApproval(\n options: AppServerApprovalOptions,\n toolName: string,\n toolInput: Record<string, unknown>,\n): Promise<CanUseToolResponse> {\n const hasCallback = typeof options.canUseTool === \"function\";\n const toolNeedsRuntimeUserInput = requiresRuntimeUserInput(toolName);\n\n if (toolNeedsRuntimeUserInput && !hasCallback) {\n return {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n }\n\n if (options.permissionMode === \"bypassPermissions\" && !toolNeedsRuntimeUserInput) {\n return { behavior: \"allow\", updatedInput: null, updatedPermissions: [] };\n }\n\n if (hasCallback) {\n try {\n const result = await options.canUseTool!(toolName, toolInput);\n if (result.behavior === \"allow\") {\n return {\n behavior: \"allow\",\n message: result.message,\n updatedInput: result.updatedInput ?? null,\n updatedPermissions: result.updatedPermissions ?? [],\n };\n }\n return {\n behavior: \"deny\",\n message: result.message ?? \"Denied by canUseTool callback\",\n interrupt: result.interrupt ?? false,\n };\n } catch (error) {\n return {\n behavior: \"deny\",\n message: error instanceof Error ? error.message : \"Callback error\",\n interrupt: false,\n };\n }\n }\n\n if (isHeadlessAutoAllowTool(toolName)) {\n return { behavior: \"allow\", updatedInput: null, updatedPermissions: [] };\n }\n\n return {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n}\n\nfunction permissionSuggestionId(value: unknown): string | null {\n if (typeof value === \"string\") return value;\n if (!value || typeof value !== \"object\") return null;\n const record = value as Record<string, unknown>;\n if (typeof record.id === \"string\") return record.id;\n if (typeof record.suggestion_id === \"string\") return record.suggestion_id;\n if (typeof record.permission_suggestion_id === \"string\") return record.permission_suggestion_id;\n return null;\n}\n\nexport function toAppServerApprovalDecision(\n decision: CanUseToolResponse,\n): AppServerApprovalResponseDecision {\n if (decision.behavior === \"deny\") {\n return {\n behavior: \"deny\",\n message: decision.message,\n };\n }\n\n const selectedPermissionSuggestionIds = (decision.updatedPermissions ?? [])\n .map(permissionSuggestionId)\n .filter((id): id is string => id !== null);\n\n return {\n behavior: \"allow\",\n ...(decision.message !== undefined ? { message: decision.message } : {}),\n updated_input: decision.updatedInput ?? null,\n selected_permission_suggestion_ids: selectedPermissionSuggestionIds,\n };\n}\n\nfunction stringRecord(value: unknown): Record<string, string> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n const record: Record<string, string> = {};\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n if (typeof entry === \"string\") record[key] = entry;\n }\n return record;\n}\n\nfunction objectRecord(value: unknown): Record<string, unknown> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n return { ...(value as Record<string, unknown>) };\n}\n\nfunction normalizeListModelsResponse(response: ListModelsResponse): ListModelsResult {\n if (!response.success) {\n throw new Error(response.error ?? \"listModels failed\");\n }\n\n const entries = Array.isArray(response.entries)\n ? response.entries.flatMap((entry) => {\n if (!entry || typeof entry !== \"object\") return [];\n const record = entry as Record<string, unknown>;\n if (\n typeof record.id !== \"string\" ||\n typeof record.handle !== \"string\" ||\n typeof record.label !== \"string\" ||\n typeof record.description !== \"string\"\n ) {\n return [];\n }\n const updateArgs = objectRecord(record.updateArgs);\n return [\n {\n id: record.id,\n handle: record.handle,\n label: record.label,\n description: record.description,\n ...(typeof record.isDefault === \"boolean\" ? { isDefault: record.isDefault } : {}),\n ...(typeof record.isFeatured === \"boolean\" ? { isFeatured: record.isFeatured } : {}),\n ...(typeof record.free === \"boolean\" ? { free: record.free } : {}),\n ...(updateArgs ? { updateArgs } : {}),\n },\n ];\n })\n : [];\n\n const result: ListModelsResult = { entries };\n if (response.available_handles === null) {\n result.availableHandles = null;\n } else if (Array.isArray(response.available_handles)) {\n result.availableHandles = response.available_handles.filter(\n (handle): handle is string => typeof handle === \"string\",\n );\n }\n const aliases = stringRecord(response.byok_provider_aliases);\n if (aliases) result.byokProviderAliases = aliases;\n return result;\n}\n\nfunction normalizeUpdateModelResponse(response: UpdateModelResponse): UpdateModelResult {\n if (!response.success) {\n throw new Error(response.error ?? \"Failed to update model\");\n }\n const result: UpdateModelResult = {};\n if (response.applied_to === \"agent\" || response.applied_to === \"conversation\") {\n result.appliedTo = response.applied_to;\n }\n if (typeof response.model_id === \"string\") result.modelId = response.model_id;\n if (typeof response.model_handle === \"string\") result.modelHandle = response.model_handle;\n if (response.model_settings === null) {\n result.modelSettings = null;\n } else if (response.model_settings && typeof response.model_settings === \"object\") {\n result.modelSettings = { ...(response.model_settings as Record<string, unknown>) };\n }\n return result;\n}\n\nfunction runtimeScopeFromMessage(message: ProtocolMessage): RuntimeScope | null {\n if (message.runtime) return message.runtime;\n const agentId = typeof message.agent_id === \"string\" ? message.agent_id : null;\n const conversationId = typeof message.conversation_id === \"string\" ? message.conversation_id : null;\n if (agentId && conversationId) {\n return { agent_id: agentId, conversation_id: conversationId };\n }\n return null;\n}\n\nexport function registerAppServerControlRequestHandler(config: {\n client: AppServerClient;\n getRuntime: () => RuntimeScope | null;\n getOptions: () => AppServerApprovalOptions;\n}): () => void {\n return config.client.onMessage((rawMessage, channel) => {\n const message = rawMessage as unknown as ProtocolMessage;\n if (channel !== \"control\" || message.type !== \"control_request\") return;\n void respondToAppServerControlRequest(config, message).catch(() => {\n // Permission callback failures are converted into deny responses by resolveAppServerToolApproval().\n });\n });\n}\n\nasync function respondToAppServerControlRequest(\n config: {\n client: AppServerClient;\n getRuntime: () => RuntimeScope | null;\n getOptions: () => AppServerApprovalOptions;\n },\n message: ProtocolMessage,\n): Promise<void> {\n const runtime = runtimeScopeFromMessage(message) ?? config.getRuntime();\n if (!runtime) return;\n\n const requestId = typeof message.request_id === \"string\" ? message.request_id : undefined;\n const request = message.request;\n if (!requestId || !request || typeof request !== \"object\") return;\n const requestRecord = request as Record<string, unknown>;\n if (requestRecord.subtype !== \"can_use_tool\") return;\n\n const toolName = typeof requestRecord.tool_name === \"string\" ? requestRecord.tool_name : \"unknown\";\n const toolInput =\n requestRecord.input && typeof requestRecord.input === \"object\" && !Array.isArray(requestRecord.input)\n ? (requestRecord.input as Record<string, unknown>)\n : {};\n const decision = await resolveAppServerToolApproval(config.getOptions(), toolName, toolInput);\n config.client.input({\n runtime,\n payload: {\n kind: \"approval_response\",\n request_id: requestId,\n decision: toAppServerApprovalDecision(decision),\n },\n } as Parameters<AppServerClient[\"input\"]>[0]);\n}\n\nexport class AppServerRuntimeController implements RemoteClientRuntimeController {\n constructor(\n private readonly client: AppServerClient,\n private readonly options: AppServerSessionOptions,\n ) {}\n\n onMessage(handler: (message: ProtocolMessage, channel?: string) => void): () => void {\n return this.client.onMessage((message, channel) => {\n handler(message as unknown as ProtocolMessage, channel);\n });\n }\n\n send(command: Record<string, unknown>): void {\n this.client.send(command as unknown as Parameters<AppServerClient[\"send\"]>[0]);\n }\n\n sendTurnMessage(\n runtime: RuntimeScope,\n message: SendMessage,\n options: RuntimeSendTurnOptions,\n ): void {\n const payload: Record<string, unknown> = {\n kind: \"create_message\",\n messages: [\n {\n role: \"user\",\n content: normalizeSendMessage(message),\n client_message_id: options.clientMessageId,\n },\n ],\n };\n this.client.input({\n runtime,\n payload,\n } as Parameters<AppServerClient[\"input\"]>[0]);\n }\n\n async abort(runtime: RuntimeScope): Promise<void> {\n await this.client.abort({ runtime } as Parameters<AppServerClient[\"abort\"]>[0]);\n }\n\n request(\n type: string,\n body: Record<string, unknown>,\n options: { timeoutMs?: number; predicate?: (message: ProtocolMessage) => boolean } = {},\n ): Promise<ProtocolMessage> {\n const request = this.client.request.bind(this.client) as unknown as (\n commandType: string,\n commandBody: Record<string, unknown>,\n requestOptions?: {\n timeoutMs?: number;\n predicate?: (message: ProtocolMessage) => boolean;\n },\n ) => Promise<ProtocolMessage>;\n return request(type, body, options);\n }\n\n async listModels(): Promise<ListModelsResult> {\n const response = (await this.request(\n \"list_models\",\n {},\n { predicate: (message) => message.type === \"list_models_response\" },\n )) as ListModelsResponse;\n return normalizeListModelsResponse(response);\n }\n\n async updateModel(\n runtime: RuntimeScope,\n payload: UpdateModelPayload,\n ): Promise<UpdateModelResult> {\n const response = (await this.request(\n \"update_model\",\n {\n runtime,\n payload,\n },\n { predicate: (message) => message.type === \"update_model_response\" },\n )) as UpdateModelResponse;\n return normalizeUpdateModelResponse(response);\n }\n\n async recoverPendingApprovals(\n runtime: RuntimeScope,\n options: RecoverPendingApprovalsOptions = {},\n ): Promise<RecoverPendingApprovalsResult> {\n const response = await this.client.sync(\n {\n runtime,\n recover_approvals: true,\n force_device_status: true,\n },\n options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {},\n );\n\n if (!response.success) {\n return {\n recovered: false,\n unsupported: false,\n detail: response.error ?? \"Failed to recover pending approvals\",\n };\n }\n\n return { recovered: true, unsupported: false };\n }\n\n async listMessages(\n conversationId: string,\n options: ListMessagesOptions = {},\n ): Promise<ListMessagesResult> {\n const query: Record<string, unknown> = {};\n if (options.before !== undefined) query.before = options.before;\n if (options.after !== undefined) query.after = options.after;\n if (options.order !== undefined) query.order = options.order;\n if (options.limit !== undefined) query.limit = options.limit;\n\n const response = (await this.request(\n \"conversation_messages_list\",\n {\n conversation_id: conversationId,\n ...(Object.keys(query).length > 0 ? { query } : {}),\n },\n { predicate: (message) => message.type === \"conversation_messages_list_response\" },\n )) as ConversationMessagesListResponse;\n\n if (!response.success) {\n throw new Error(response.error ?? \"listMessages failed\");\n }\n\n const result: ListMessagesResult = {\n messages: response.messages ?? [],\n };\n const nextBefore =\n typeof response.nextBefore === \"string\" || response.nextBefore === null\n ? response.nextBefore\n : typeof response.next_before === \"string\" || response.next_before === null\n ? response.next_before\n : undefined;\n if (nextBefore !== undefined) result.nextBefore = nextBefore;\n const hasMore =\n typeof response.hasMore === \"boolean\"\n ? response.hasMore\n : typeof response.has_more === \"boolean\"\n ? response.has_more\n : undefined;\n if (hasMore !== undefined) result.hasMore = hasMore;\n return result;\n }\n\n close(): void {\n this.client.close();\n }\n}\n\nexport class AppServerSession extends RemoteClientSessionCore {\n private ownedAppServer: LocalAppServerHandle | null = null;\n private externalTools = new Map<string, AnyAgentTool>();\n private removeExternalToolHandler: (() => void) | null = null;\n private removeControlRequestHandler: (() => void) | null = null;\n\n constructor(\n private readonly remoteOptions: AppServerSessionOptions,\n mode: AppServerSessionMode,\n ) {\n super(mode, {\n label: \"app-server\",\n requestTimeoutMs: remoteOptions.requestTimeoutMs,\n });\n const tools = mode.options.tools;\n for (const tool of tools ?? []) {\n this.externalTools.set(tool.name, tool);\n }\n }\n\n protected override shouldEnableMemfs(options: LettaCodeClientSessionOptions | CreateAgentOptions): boolean {\n void options;\n return this.mode.kind === \"create-agent\";\n }\n\n protected override async initializeRuntimeController(): Promise<RuntimeSessionInit> {\n const url = await this.resolveAppServerUrl();\n const client = createAppServerClient({\n url,\n ...(this.remoteOptions.authToken !== undefined\n ? { authToken: this.remoteOptions.authToken }\n : {}),\n ...(this.remoteOptions.WebSocket\n ? { WebSocket: this.remoteOptions.WebSocket as AppServerSocketConstructor }\n : {}),\n ...(this.remoteOptions.requestTimeoutMs !== undefined\n ? { requestTimeoutMs: this.remoteOptions.requestTimeoutMs }\n : {}),\n });\n\n this.removeControlRequestHandler = registerAppServerControlRequestHandler({\n client,\n getRuntime: () => this.runtime,\n getOptions: () => this.currentOptions(),\n });\n\n if (this.externalTools.size > 0) {\n this.removeExternalToolHandler = client.onExternalToolCall(\n createExternalToolCallHandler(this.externalTools),\n );\n }\n\n try {\n await client.connect();\n const response = await this.startRuntime(client);\n if (!response.success || !response.runtime) {\n throw new Error(response.error ?? \"Failed to start app-server runtime\");\n }\n\n const tools = agentToolNames(response.agent);\n return {\n controller: new AppServerRuntimeController(client, this.remoteOptions),\n runtime: response.runtime,\n model: typeof response.agent?.model === \"string\" ? response.agent.model : \"\",\n modelSettings: response.agent?.model_settings ?? null,\n ...(tools !== undefined ? { tools } : {}),\n };\n } catch (error) {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n client.close();\n throw error;\n }\n }\n\n protected override onCoreClose(): void {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n this.ownedAppServer?.close();\n this.ownedAppServer = null;\n }\n\n private async resolveAppServerUrl(): Promise<string> {\n if (this.remoteOptions.url) {\n return this.remoteOptions.url;\n }\n if (this.remoteOptions.local !== true) {\n throw new Error(\"App-server session requires a url unless local app-server spawning is enabled.\");\n }\n this.ownedAppServer = await startLocalAppServer({\n listen: this.remoteOptions.localListen,\n backend: this.remoteOptions.localBackend,\n startupTimeoutMs: this.remoteOptions.localStartupTimeoutMs,\n env: this.remoteOptions.localEnv,\n });\n return this.ownedAppServer.url;\n }\n\n private async startRuntime(client: AppServerClient): Promise<RuntimeStartResponse> {\n const command = await this.buildRuntimeStartCommand(client);\n const response = (await client.runtimeStart(command)) as unknown as RuntimeStartResponse;\n return response;\n }\n\n private async buildRuntimeStartCommand(client: AppServerClient): Promise<RuntimeStartCommand> {\n const options = this.mode.options;\n const command: Record<string, unknown> = {\n client_info: {\n name: \"@letta-ai/letta-agent-sdk\",\n title: \"Letta Agent SDK\",\n },\n recover_approvals: false,\n force_device_status: true,\n };\n\n const mode = mapPermissionMode(options.permissionMode);\n if (mode) command.mode = mode;\n if (options.cwd !== undefined) command.cwd = options.cwd;\n const groups = externalToolGroups(options.tools);\n if (groups) command.external_tools = groups;\n\n if (this.mode.kind === \"create-agent\") {\n command.create_agent = {\n body: createAgentBody(this.mode.options, {\n includeSdkOriginTag: this.remoteOptions.includeSdkOriginTag,\n }),\n pin_global: this.remoteOptions.pinGlobalAgent ?? true,\n };\n return command as RuntimeStartCommand;\n }\n\n if (this.mode.agentId) {\n command.agent_id = this.mode.agentId;\n if (this.mode.newConversation) {\n command.create_conversation = { body: {} };\n } else if (this.mode.defaultConversation) {\n command.conversation_id = \"default\";\n }\n return command as RuntimeStartCommand;\n }\n\n if (this.mode.conversationId) {\n const agentId = await this.resolveConversationAgentId(client, this.mode.conversationId);\n command.agent_id = agentId;\n command.conversation_id = this.mode.conversationId;\n return command as RuntimeStartCommand;\n }\n\n throw new Error(\n \"App-server createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n\n private async resolveConversationAgentId(\n client: AppServerClient,\n conversationId: string,\n ): Promise<string> {\n const request = client.request.bind(client) as unknown as (\n commandType: string,\n commandBody: Record<string, unknown>,\n options?: { predicate?: (message: ProtocolMessage) => boolean },\n ) => Promise<ProtocolMessage>;\n const response = (await request(\n \"conversation_retrieve\",\n { conversation_id: conversationId },\n { predicate: (message) => message.type === \"conversation_retrieve_response\" },\n )) as ConversationRetrieveResponse;\n if (!response.success || !response.conversation?.agent_id) {\n throw new Error(response.error ?? `Failed to retrieve conversation ${conversationId}`);\n }\n return response.conversation.agent_id;\n }\n\n}\n",
|
|
13
13
|
"export type RemoteEnvironmentTarget =\n | { connectionId: string }\n | { environmentId: string }\n | { deviceId: string }\n | { connectionName: string };\n\nexport interface RemoteEnvironmentClientOptions {\n /** Letta API base URL. Defaults to https://api.letta.com. */\n baseUrl?: string;\n /** Bearer token / API key. Defaults to process.env.LETTA_API_KEY when present. */\n apiKey?: string;\n /** Additional headers, e.g. x-project-id. */\n headers?: Record<string, string>;\n /** Custom fetch implementation for tests or non-standard runtimes. */\n fetch?: typeof fetch;\n}\n\nexport interface RemoteEnvironmentConnection {\n id: string;\n connectionId: string | null;\n deviceId: string;\n connectionName: string;\n organizationId: string;\n userId?: string;\n apiKeyOwner?: string;\n podId: string | null;\n connectedAt: number | null;\n lastHeartbeat: number | null;\n lastSeenAt: number;\n firstSeenAt: number;\n currentMode?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface RemoteEnvironmentListResult {\n connections: RemoteEnvironmentConnection[];\n hasNextPage: boolean;\n}\n\nexport interface ResolvedRemoteEnvironment {\n connectionId: string;\n environment?: RemoteEnvironmentConnection;\n target: RemoteEnvironmentTarget;\n}\n\ntype RemoteFetch = typeof fetch;\n\nfunction getDefaultApiKey(): string | undefined {\n if (typeof process === \"undefined\") {\n return undefined;\n }\n return process.env.LETTA_API_KEY;\n}\n\nfunction createHeaders(options: RemoteEnvironmentClientOptions): Record<string, string> {\n const apiKey = options.apiKey ?? getDefaultApiKey();\n return {\n ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),\n ...(options.headers ?? {}),\n };\n}\n\nfunction getFetch(options: RemoteEnvironmentClientOptions): RemoteFetch {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (!fetchImpl) {\n throw new Error(\"Remote environments require a fetch implementation\");\n }\n return fetchImpl.bind(globalThis) as RemoteFetch;\n}\n\nfunction normalizeBaseUrl(baseUrl?: string): string {\n return (baseUrl ?? \"https://api.letta.com\").replace(/\\/$/, \"\");\n}\n\nfunction ensureOnline(\n environment: RemoteEnvironmentConnection,\n target: RemoteEnvironmentTarget,\n): ResolvedRemoteEnvironment {\n if (!environment.connectionId) {\n const label =\n \"deviceId\" in target\n ? target.deviceId\n : \"environmentId\" in target\n ? target.environmentId\n : \"connectionName\" in target\n ? target.connectionName\n : environment.deviceId;\n throw new Error(`Remote environment is offline: ${label}`);\n }\n\n return {\n connectionId: environment.connectionId,\n environment,\n target,\n };\n}\n\nasync function parseJsonResponse<T>(response: Response): Promise<T> {\n const text = await response.text();\n const body = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n const message =\n body && typeof body === \"object\" && \"message\" in body\n ? String((body as { message: unknown }).message)\n : response.statusText;\n throw new Error(`Letta API request failed (${response.status}): ${message}`);\n }\n\n return body as T;\n}\n\n/**\n * Small Cloud API helper for resolving explicit Letta Code environments.\n */\nexport class RemoteEnvironmentClient {\n private readonly baseUrl: string;\n private readonly fetchImpl: RemoteFetch;\n\n constructor(private readonly options: RemoteEnvironmentClientOptions = {}) {\n this.baseUrl = normalizeBaseUrl(options.baseUrl);\n this.fetchImpl = getFetch(options);\n }\n\n async listEnvironments(): Promise<RemoteEnvironmentListResult> {\n const url = new URL(`${this.baseUrl}/v1/environments`);\n const response = await this.fetchImpl(url, {\n headers: createHeaders(this.options),\n });\n return parseJsonResponse<RemoteEnvironmentListResult>(response);\n }\n\n async getEnvironmentByDeviceId(deviceId: string): Promise<RemoteEnvironmentConnection> {\n const response = await this.fetchImpl(\n `${this.baseUrl}/v1/environments/${encodeURIComponent(deviceId)}`,\n { headers: createHeaders(this.options) },\n );\n return parseJsonResponse<RemoteEnvironmentConnection>(response);\n }\n\n async resolveEnvironment(target: RemoteEnvironmentTarget): Promise<ResolvedRemoteEnvironment> {\n if (\"connectionId\" in target) {\n return { connectionId: target.connectionId, target };\n }\n\n if (\"deviceId\" in target) {\n return ensureOnline(await this.getEnvironmentByDeviceId(target.deviceId), target);\n }\n\n const { connections } = await this.listEnvironments();\n if (\"environmentId\" in target) {\n const match = connections.find((env) => env.id === target.environmentId);\n if (!match) {\n throw new Error(`Remote environment not found: ${target.environmentId}`);\n }\n return ensureOnline(match, target);\n }\n\n const matches = connections.filter(\n (env) => env.connectionName === target.connectionName,\n );\n if (matches.length === 0) {\n throw new Error(`Remote environment not found: ${target.connectionName}`);\n }\n if (matches.length > 1) {\n throw new Error(\n `Remote environment name is ambiguous: ${target.connectionName}`,\n );\n }\n const match = matches[0];\n if (!match) {\n throw new Error(`Remote environment not found: ${target.connectionName}`);\n }\n return ensureOnline(match, target);\n }\n\n}\n",
|
|
14
14
|
"import {\n createAppServerClient,\n type AppServerClient,\n type AppServerSocketConstructor,\n type AppServerSocketLike,\n type AppServerSocketOptions,\n} from \"@letta-ai/letta-code/app-server-client\";\nimport {\n AppServerRuntimeController,\n AppServerSession,\n agentToolNames,\n createExternalToolCallHandler,\n externalToolGroups,\n registerAppServerControlRequestHandler,\n type AppServerSessionOptions,\n} from \"./app-server-session.js\";\nimport {\n RemoteEnvironmentClient,\n type RemoteEnvironmentTarget,\n} from \"./remote.js\";\nimport {\n RemoteClientSessionCore,\n mapPermissionMode,\n type ProtocolMessage,\n type RuntimeScope,\n type RuntimeSessionInit,\n type RuntimeSessionMode,\n} from \"./remote-client-session-core.js\";\nimport type {\n AnyAgentTool,\n CreateAgentOptions,\n LettaCodeClientSessionOptions,\n LettaCodeCloudClientOptions,\n LettaCodeCloudSandboxOptions,\n LettaCodeEnvironment,\n LettaCodeSocketConstructor,\n LettaCodeSocketLike,\n} from \"./types.js\";\n\nconst DEFAULT_CLOUD_API_BASE_URL = \"https://api.letta.com\";\nconst DEFAULT_TURN_TIMEOUT_MS = 120_000;\nconst DEFAULT_PING_INTERVAL_MS = 30_000;\nconst DEFAULT_SANDBOX_TTL_MINUTES = 5;\nconst MIN_SANDBOX_TTL_MINUTES = 1;\nconst MAX_SANDBOX_TTL_MINUTES = 60;\nconst DEFAULT_SANDBOX_READY_TIMEOUT_MS = 120_000;\nconst DEFAULT_SANDBOX_READY_POLL_INTERVAL_MS = 1_000;\nconst SDK_AGENT_ORIGIN = \"@letta-ai/letta-agent-sdk\";\n\ntype FetchLike = typeof fetch;\n\ntype CloudStatusMessage = ProtocolMessage & {\n type: string;\n seq?: unknown;\n event_seq?: unknown;\n idempotency_key?: unknown;\n runId?: unknown;\n run_id?: unknown;\n stopReason?: unknown;\n stop_reason?: unknown;\n conversation_id?: unknown;\n conversationId?: unknown;\n agent_id?: unknown;\n agentId?: unknown;\n request?: unknown;\n loop_status?: unknown;\n delta?: unknown;\n};\n\ntype CloudRuntimeStartResponse = ProtocolMessage & {\n type: \"runtime_start_response\";\n success: boolean;\n runtime: RuntimeScope | null;\n agent: (Record<string, unknown> & {\n id?: string;\n model?: string | null;\n model_settings?: Record<string, unknown> | null;\n }) | null;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype CloudConversation = Record<string, unknown> & {\n id?: string;\n agent_id?: string;\n};\n\ntype CloudAgentSandbox = Record<string, unknown> & {\n sandboxId?: string;\n deviceId?: string;\n connectionName?: string;\n};\n\ntype CloudAgentSandboxRefresh = Record<string, unknown> & {\n success?: boolean;\n sandboxId?: string;\n ttlMinutes?: number;\n};\n\ntype ManagedCloudSandbox = {\n agentId: string;\n sandboxId: string;\n deviceId: string;\n connectionName: string;\n ttlMinutes: number;\n readyTimeoutMs: number;\n readyPollIntervalMs: number;\n refreshIntervalMs: number;\n terminateOnClose: boolean;\n};\n\ntype ResolvedCloudConnection = {\n connectionId: string;\n};\n\nclass CloudManagedSandboxOwnershipError extends Error {}\n\ntype CloudSessionMode = Extract<RuntimeSessionMode, { kind: \"session\" }>;\n\nfunction getDefaultApiKey(): string | undefined {\n const env = (globalThis as { process?: { env?: Record<string, string | undefined> } })\n .process?.env;\n return env?.LETTA_API_KEY ?? env?.LETTA_CLOUD_API_KEY;\n}\n\nfunction bearerTokenFromHeaders(headers: Record<string, string> | undefined): string | undefined {\n const authorization = headers?.Authorization ?? headers?.authorization;\n if (!authorization) return undefined;\n const match = /^Bearer\\s+(.+)$/i.exec(authorization);\n return match?.[1];\n}\n\nfunction getCloudApiKey(options: LettaCodeCloudClientOptions): string | undefined {\n return options.apiKey ?? bearerTokenFromHeaders(options.headers) ?? getDefaultApiKey();\n}\n\nfunction getFetch(fetchOverride?: FetchLike): FetchLike {\n const resolved = fetchOverride ?? globalThis.fetch;\n if (!resolved) {\n throw new Error(\"No fetch implementation available for cloud backend.\");\n }\n return resolved.bind(globalThis) as FetchLike;\n}\n\nfunction getWebSocketConstructor(\n websocketOverride?: LettaCodeSocketConstructor,\n): LettaCodeSocketConstructor {\n const resolved =\n websocketOverride ??\n (globalThis as { WebSocket?: LettaCodeSocketConstructor }).WebSocket;\n if (!resolved) {\n throw new Error(\"No WebSocket implementation available for cloud backend.\");\n }\n return resolved;\n}\n\nfunction normalizeCloudApiBaseUrl(url: string | undefined): string {\n const parsed = new URL(url ?? DEFAULT_CLOUD_API_BASE_URL);\n parsed.pathname = parsed.pathname.replace(/\\/+$/, \"\");\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString().replace(/\\/$/, \"\");\n}\n\nfunction cloudHeaders(options: LettaCodeCloudClientOptions): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n ...(options.headers ?? {}),\n };\n const apiKey = getCloudApiKey(options);\n if (apiKey && !headers.Authorization && !headers.authorization) {\n headers.Authorization = `Bearer ${apiKey}`;\n }\n return headers;\n}\n\nfunction cloudWebSocketHeaders(options: LettaCodeCloudClientOptions): Record<string, string> | undefined {\n const headers = { ...(options.headers ?? {}) };\n delete headers.authorization;\n delete headers.Authorization;\n const apiKey = getCloudApiKey(options);\n if (apiKey) headers.Authorization = `Bearer ${apiKey}`;\n return Object.keys(headers).length > 0 ? headers : undefined;\n}\n\nasync function parseJsonResponse(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return null;\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return text;\n }\n}\n\nfunction responseErrorMessage(body: unknown, fallback: string): string {\n if (body && typeof body === \"object\") {\n const record = body as Record<string, unknown>;\n const message = record.message ?? record.error ?? record.detail;\n const reasonText = record.reason_text;\n const pieces = [message, reasonText]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0);\n if (pieces.length > 0) return pieces.join(\": \");\n }\n return fallback;\n}\n\nfunction assertOkResponse(response: Response, body: unknown, action: string): void {\n if (!response.ok) {\n throw new Error(\n responseErrorMessage(body, `${action} failed with HTTP ${response.status}`),\n );\n }\n}\n\nfunction validatePositiveInteger(value: number | undefined, name: string): void {\n if (value !== undefined && (!Number.isInteger(value) || value <= 0)) {\n throw new Error(`Invalid ${name}. Expected a positive integer.`);\n }\n}\n\nfunction validateIntegerRange(\n value: number | undefined,\n name: string,\n min: number,\n max: number,\n): void {\n if (value === undefined) return;\n if (!Number.isInteger(value) || value < min || value > max) {\n throw new Error(`Invalid ${name}. Expected an integer between ${min} and ${max}.`);\n }\n}\n\nfunction validateCloudSandboxOptions(\n options: LettaCodeCloudSandboxOptions | undefined,\n name: string,\n): void {\n if (options === undefined) return;\n if (options === null || typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(`Invalid ${name}. Expected an object.`);\n }\n validateIntegerRange(\n options.ttlMinutes,\n `${name}.ttlMinutes`,\n MIN_SANDBOX_TTL_MINUTES,\n MAX_SANDBOX_TTL_MINUTES,\n );\n validatePositiveInteger(options.readyTimeoutMs, `${name}.readyTimeoutMs`);\n validatePositiveInteger(options.readyPollIntervalMs, `${name}.readyPollIntervalMs`);\n validatePositiveInteger(options.refreshIntervalMs, `${name}.refreshIntervalMs`);\n if (\n options.terminateOnClose !== undefined &&\n typeof options.terminateOnClose !== \"boolean\"\n ) {\n throw new Error(`Invalid ${name}.terminateOnClose. Expected a boolean.`);\n }\n}\n\nexport function validateCloudClientOptions(options: LettaCodeCloudClientOptions): void {\n validatePositiveInteger(options.requestTimeoutMs, \"requestTimeoutMs\");\n validatePositiveInteger(options.appServer?.requestTimeoutMs, \"appServer.requestTimeoutMs\");\n validatePositiveInteger(options.appServer?.startupTimeoutMs, \"appServer.startupTimeoutMs\");\n validateCloudSandboxOptions(options.sandbox, \"sandbox\");\n if (options.environment !== undefined && options.sandbox !== undefined) {\n throw new Error(\"Constellation sessions cannot specify both environment and sandbox options.\");\n }\n if (\n options.webSocketAuth !== undefined &&\n options.webSocketAuth !== \"header\" &&\n options.webSocketAuth !== \"query\"\n ) {\n throw new Error(\"Invalid webSocketAuth. Valid values: header, query.\");\n }\n}\n\nfunction environmentToRemoteTarget(\n environment: LettaCodeEnvironment,\n): RemoteEnvironmentTarget {\n if (typeof environment === \"string\") {\n return { connectionName: environment };\n }\n if (\"name\" in environment) {\n return { connectionName: environment.name };\n }\n if (\"id\" in environment) {\n return { environmentId: environment.id };\n }\n if (\"connectionId\" in environment) {\n return { connectionId: environment.connectionId };\n }\n if (\"deviceId\" in environment) {\n return { deviceId: environment.deviceId };\n }\n throw new Error(\"Unknown cloud environment selector.\");\n}\n\nfunction buildCloudStatusWebSocketUrl(params: {\n apiBaseUrl?: string;\n connectionId: string;\n agentId: string;\n conversationId: string;\n apiKey?: string;\n authMode: \"header\" | \"query\";\n}): string {\n const base = new URL(normalizeCloudApiBaseUrl(params.apiBaseUrl));\n if (base.protocol === \"http:\") {\n base.protocol = \"ws:\";\n } else if (base.protocol === \"https:\") {\n base.protocol = \"wss:\";\n } else if (base.protocol !== \"ws:\" && base.protocol !== \"wss:\") {\n throw new Error(`Unsupported cloud apiBaseUrl protocol: ${base.protocol}`);\n }\n base.pathname = `/v1/environments/${encodeURIComponent(params.connectionId)}/status/ws`;\n base.searchParams.set(\"agentId\", params.agentId);\n base.searchParams.set(\"conversationId\", params.conversationId);\n base.searchParams.set(\"channel\", \"stream\");\n if (params.authMode === \"query\" && params.apiKey) {\n base.searchParams.set(\"token\", params.apiKey);\n }\n return base.toString();\n}\n\nfunction addSocketListener(\n socket: LettaCodeSocketLike,\n type: string,\n listener: (event: unknown) => void,\n): () => void {\n if (socket.addEventListener) {\n socket.addEventListener(type, listener);\n return () => socket.removeEventListener?.(type, listener);\n }\n if (socket.on) {\n socket.on(type, listener);\n return () => socket.off?.(type, listener);\n }\n throw new Error(\"WebSocket implementation does not support event listeners.\");\n}\n\nfunction messageEventData(event: unknown): string | null {\n if (typeof event === \"string\") return event;\n if (event && typeof event === \"object\") {\n const data = (event as { data?: unknown }).data;\n if (typeof data === \"string\") return data;\n if (data instanceof ArrayBuffer) {\n return new TextDecoder().decode(data);\n }\n if (data instanceof Uint8Array) {\n return new TextDecoder().decode(data);\n }\n }\n return null;\n}\n\ntype CloudStatusSocketControl = AppServerSocketLike & {\n sendCloudCommand(command: Record<string, unknown>): void;\n};\n\ntype CloudStatusSocketState = {\n runtime: RuntimeScope;\n seenIdempotencyKeys: Set<string>;\n seenIdempotencyOrder: string[];\n lastEventSeq: number | null;\n controlSocket: CloudStatusSocketControl | null;\n};\n\nfunction createCloudStatusWebSocketConstructor(params: {\n cloudOptions: LettaCodeCloudClientOptions;\n runtime: RuntimeScope;\n}): AppServerSocketConstructor {\n const WebSocketCtor = getWebSocketConstructor(params.cloudOptions.WebSocket);\n const authMode = params.cloudOptions.webSocketAuth ?? \"header\";\n const cloudHeaders = authMode === \"header\" ? cloudWebSocketHeaders(params.cloudOptions) : undefined;\n const pingIntervalMs = params.cloudOptions.pingIntervalMs ?? DEFAULT_PING_INTERVAL_MS;\n const state: CloudStatusSocketState = {\n runtime: params.runtime,\n seenIdempotencyKeys: new Set<string>(),\n seenIdempotencyOrder: [],\n lastEventSeq: null,\n controlSocket: null,\n };\n\n class CloudStatusSocketAdapter implements AppServerSocketLike {\n private readonly socket: LettaCodeSocketLike;\n private readonly channel: string | null;\n private readonly listenerRemovers = new Map<string, Map<(event: unknown) => void, () => void>>();\n private pingTimer: ReturnType<typeof setInterval> | null = null;\n private removeCloseListener: (() => void) | null = null;\n\n constructor(url: string, options?: AppServerSocketOptions) {\n this.channel = new URL(url).searchParams.get(\"channel\");\n const mergedHeaders = authMode === \"header\"\n ? {\n ...(options?.headers ?? {}),\n ...(cloudHeaders ?? {}),\n }\n : undefined;\n const socketOptions = mergedHeaders && Object.keys(mergedHeaders).length > 0\n ? { headers: mergedHeaders }\n : undefined;\n this.socket = new WebSocketCtor(url, socketOptions);\n if (this.channel === \"control\") {\n state.controlSocket = this;\n }\n this.removeCloseListener = addSocketListener(this.socket, \"close\", () => {\n this.stopPing();\n if (state.controlSocket === this) state.controlSocket = null;\n });\n this.startPing(pingIntervalMs);\n }\n\n get readyState(): number {\n return this.socket.readyState;\n }\n\n send(data: string): void {\n this.socket.send(data);\n }\n\n close(): void {\n this.stopPing();\n this.removeCloseListener?.();\n this.removeCloseListener = null;\n if (state.controlSocket === this) state.controlSocket = null;\n this.socket.close();\n }\n\n addEventListener(type: string, listener: (event: unknown) => void): void {\n const wrapped = type === \"message\"\n ? (event: unknown) => {\n if (this.handleIncomingMessage(event)) {\n listener(event);\n }\n }\n : listener;\n const remove = addSocketListener(this.socket, type, wrapped);\n let typeRemovers = this.listenerRemovers.get(type);\n if (!typeRemovers) {\n typeRemovers = new Map();\n this.listenerRemovers.set(type, typeRemovers);\n }\n typeRemovers.set(listener, remove);\n }\n\n removeEventListener(type: string, listener: (event: unknown) => void): void {\n const typeRemovers = this.listenerRemovers.get(type);\n const remove = typeRemovers?.get(listener);\n if (!remove) return;\n remove();\n typeRemovers?.delete(listener);\n if (typeRemovers?.size === 0) {\n this.listenerRemovers.delete(type);\n }\n }\n\n private handleIncomingMessage(event: unknown): boolean {\n const data = messageEventData(event);\n if (!data) return true;\n\n let message: CloudStatusMessage;\n try {\n message = JSON.parse(data) as CloudStatusMessage;\n } catch {\n return true;\n }\n\n this.ackIfSequenced(message);\n\n // The status gateway can mirror device stream frames to the control\n // subscriber. Drop them at the Cloud transport boundary instead of making\n // shared app-server session code understand Cloud fanout quirks. Do this\n // before idempotency/event tracking so the canonical stream-channel frame\n // is still delivered and sequenced.\n if (this.channel === \"control\" && message.type === \"stream_delta\") {\n return false;\n }\n\n if (this.isDuplicate(message)) return false;\n this.trackEventSeq(message);\n return true;\n }\n\n private ackIfSequenced(message: CloudStatusMessage): void {\n if (typeof message.seq !== \"number\") return;\n this.sendCloudCommand({ type: \"ack\", seq: message.seq });\n }\n\n private isDuplicate(message: CloudStatusMessage): boolean {\n const idempotencyKey =\n typeof message.idempotency_key === \"string\" ? message.idempotency_key : undefined;\n if (!idempotencyKey) return false;\n if (state.seenIdempotencyKeys.has(idempotencyKey)) return true;\n state.seenIdempotencyKeys.add(idempotencyKey);\n state.seenIdempotencyOrder.push(idempotencyKey);\n while (state.seenIdempotencyOrder.length > 1_000) {\n const oldest = state.seenIdempotencyOrder.shift();\n if (oldest) state.seenIdempotencyKeys.delete(oldest);\n }\n return false;\n }\n\n private trackEventSeq(message: CloudStatusMessage): void {\n if (typeof message.event_seq !== \"number\") return;\n if (state.lastEventSeq !== null && message.event_seq > state.lastEventSeq + 1) {\n this.sendSync(true);\n }\n if (state.lastEventSeq === null || message.event_seq > state.lastEventSeq) {\n state.lastEventSeq = message.event_seq;\n }\n }\n\n private sendSync(recoverApprovals: boolean): void {\n const target = state.controlSocket?.readyState === 1 ? state.controlSocket : this;\n target.sendCloudCommand({\n type: \"sync\",\n runtime: state.runtime,\n recover_approvals: recoverApprovals,\n force_device_status: true,\n });\n }\n\n sendCloudCommand(command: Record<string, unknown>): void {\n if (this.readyState !== 1) return;\n try {\n this.socket.send(JSON.stringify(command));\n } catch {\n // Best-effort Cloud status reliability command.\n }\n }\n\n private startPing(intervalMs: number): void {\n if (this.pingTimer) return;\n this.pingTimer = setInterval(() => {\n this.sendCloudCommand({ type: \"ping\" });\n }, intervalMs);\n (this.pingTimer as { unref?: () => void }).unref?.();\n }\n\n private stopPing(): void {\n if (!this.pingTimer) return;\n clearInterval(this.pingTimer);\n this.pingTimer = null;\n }\n }\n\n return CloudStatusSocketAdapter as AppServerSocketConstructor;\n}\n\nfunction isCloudConversation(value: unknown): value is CloudConversation & { id: string } {\n return Boolean(value && typeof value === \"object\" && typeof (value as CloudConversation).id === \"string\");\n}\n\nfunction isCloudAgentSandbox(\n value: unknown,\n): value is CloudAgentSandbox & { sandboxId: string; deviceId: string; connectionName: string } {\n return Boolean(\n value &&\n typeof value === \"object\" &&\n typeof (value as CloudAgentSandbox).sandboxId === \"string\" &&\n typeof (value as CloudAgentSandbox).deviceId === \"string\" &&\n typeof (value as CloudAgentSandbox).connectionName === \"string\",\n );\n}\n\nfunction isCloudAgentSandboxRefresh(\n value: unknown,\n): value is CloudAgentSandboxRefresh & { success: boolean; sandboxId: string; ttlMinutes: number } {\n return Boolean(\n value &&\n typeof value === \"object\" &&\n typeof (value as CloudAgentSandboxRefresh).success === \"boolean\" &&\n typeof (value as CloudAgentSandboxRefresh).sandboxId === \"string\" &&\n typeof (value as CloudAgentSandboxRefresh).ttlMinutes === \"number\",\n );\n}\n\nfunction isRetryableManagedSandboxResolveError(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes(\"Remote environment is offline\") ||\n message.toLowerCase().includes(\"not found\") ||\n message.includes(\"(404)\")\n );\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction externalToolsByName(tools: AnyAgentTool[] | undefined): Map<string, AnyAgentTool> {\n const result = new Map<string, AnyAgentTool>();\n for (const tool of tools ?? []) {\n result.set(tool.name, tool);\n }\n return result;\n}\n\nfunction cloudHarnessAppServerOptions(\n clientOptions: LettaCodeCloudClientOptions,\n): AppServerSessionOptions {\n const appServer = clientOptions.appServer;\n const apiKey = getCloudApiKey(clientOptions);\n const localEnv: Record<string, string | undefined> = {\n ...(apiKey ? { LETTA_API_KEY: apiKey } : {}),\n ...(clientOptions.apiBaseUrl\n ? { LETTA_BASE_URL: normalizeCloudApiBaseUrl(clientOptions.apiBaseUrl) }\n : {}),\n };\n return {\n local: appServer?.url === undefined,\n localBackend: \"api\",\n ...(appServer?.url !== undefined ? { url: appServer.url } : {}),\n ...(appServer?.WebSocket !== undefined ? { WebSocket: appServer.WebSocket } : {}),\n ...(clientOptions.requestTimeoutMs !== undefined || appServer?.requestTimeoutMs !== undefined\n ? { requestTimeoutMs: appServer?.requestTimeoutMs ?? clientOptions.requestTimeoutMs }\n : {}),\n ...(appServer?.listen !== undefined ? { localListen: appServer.listen } : {}),\n ...(appServer?.startupTimeoutMs !== undefined\n ? { localStartupTimeoutMs: appServer.startupTimeoutMs }\n : {}),\n ...(Object.keys(localEnv).length > 0 ? { localEnv } : {}),\n };\n}\n\nexport async function createCloudAgent(\n clientOptions: LettaCodeCloudClientOptions,\n agentOptions: CreateAgentOptions,\n): Promise<string> {\n const session = new AppServerSession(cloudHarnessAppServerOptions(clientOptions), {\n kind: \"create-agent\",\n options: agentOptions,\n });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n}\n\nexport function assertCloudSessionOptionsSupported(\n action: string,\n options: LettaCodeClientSessionOptions,\n): void {\n validateCloudSandboxOptions(options.sandbox, \"sandbox\");\n if (options.environment !== undefined && options.sandbox !== undefined) {\n throw new Error(`Constellation ${action}() cannot specify both environment and sandbox options.`);\n }\n if (options.systemPrompt !== undefined) {\n throw new Error(`Constellation ${action}() cannot rewrite an existing agent's systemPrompt from the SDK adapter yet.`);\n }\n if (options.allowedTools !== undefined || options.disallowedTools !== undefined) {\n throw new Error(`Constellation ${action}() has not wired allowedTools/disallowedTools to the remote device protocol yet.`);\n }\n if (options.skillSources !== undefined) {\n throw new Error(`Constellation ${action}() has not wired skillSources to the remote device protocol yet.`);\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(`Constellation ${action}() has not wired systemInfoReminder to the remote device protocol yet.`);\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(`Constellation ${action}() does not yet support dreaming.behavior overrides.`);\n }\n if ((options as { memfsStartup?: unknown }).memfsStartup !== undefined) {\n throw new Error(`Constellation ${action}() does not support memfsStartup.`);\n }\n if (options.includePartialMessages !== undefined) {\n throw new Error(`Constellation ${action}() streams Remote Client deltas directly; includePartialMessages is not a separate toggle.`);\n }\n}\n\nexport class CloudEnvironmentSession extends RemoteClientSessionCore {\n private connectionId: string | null = null;\n private removeExternalToolHandler: (() => void) | null = null;\n private removeControlRequestHandler: (() => void) | null = null;\n private externalTools = new Map<string, AnyAgentTool>();\n private managedSandbox: ManagedCloudSandbox | null = null;\n private sandboxRefreshTimer: ReturnType<typeof setInterval> | null = null;\n private sandboxRefreshInFlight: Promise<void> | null = null;\n private readonly cloudMode: CloudSessionMode;\n\n constructor(\n private readonly cloudOptions: LettaCodeCloudClientOptions,\n mode: CloudSessionMode,\n ) {\n super(mode, {\n label: \"cloud\",\n requestTimeoutMs: cloudOptions.requestTimeoutMs ?? DEFAULT_TURN_TIMEOUT_MS,\n });\n this.cloudMode = mode;\n const tools = mode.options.tools;\n this.externalTools = externalToolsByName(tools);\n }\n\n protected override async initializeRuntimeController(): Promise<RuntimeSessionInit> {\n const resolved = await this.resolveRuntime();\n const connection = await this.resolveConnectionForRuntime(resolved.runtime);\n this.connectionId = connection.connectionId;\n\n const apiKey = getCloudApiKey(this.cloudOptions);\n const url = buildCloudStatusWebSocketUrl({\n apiBaseUrl: this.cloudOptions.apiBaseUrl,\n connectionId: connection.connectionId,\n agentId: resolved.runtime.agent_id,\n conversationId: resolved.runtime.conversation_id,\n apiKey,\n authMode: this.cloudOptions.webSocketAuth ?? \"header\",\n });\n const client = createAppServerClient({\n url,\n WebSocket: createCloudStatusWebSocketConstructor({\n cloudOptions: this.cloudOptions,\n runtime: resolved.runtime,\n }),\n requestTimeoutMs: this.cloudOptions.requestTimeoutMs ?? DEFAULT_TURN_TIMEOUT_MS,\n });\n this.removeControlRequestHandler = registerAppServerControlRequestHandler({\n client,\n getRuntime: () => this.runtime,\n getOptions: () => this.currentOptions(),\n });\n if (this.externalTools.size > 0) {\n this.removeExternalToolHandler = client.onExternalToolCall(\n createExternalToolCallHandler(this.externalTools),\n );\n }\n\n try {\n await client.connect();\n const response = await this.startCloudRuntime(client, resolved.runtime);\n if (!response.success || !response.runtime) {\n throw new Error(response.error ?? \"Failed to start Cloud status runtime\");\n }\n\n const tools = agentToolNames(response.agent);\n return {\n controller: new AppServerRuntimeController(client, {\n requestTimeoutMs: this.cloudOptions.requestTimeoutMs ?? DEFAULT_TURN_TIMEOUT_MS,\n }),\n runtime: response.runtime,\n model: typeof response.agent?.model === \"string\" ? response.agent.model : \"\",\n modelSettings: response.agent?.model_settings ?? null,\n ...(tools !== undefined ? { tools } : {}),\n };\n } catch (error) {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n client.close();\n await this.cleanupManagedSandbox();\n throw error;\n }\n }\n\n private async startCloudRuntime(\n client: AppServerClient,\n runtime: RuntimeScope,\n ): Promise<CloudRuntimeStartResponse> {\n const options = this.currentOptions();\n const command: Record<string, unknown> = {\n client_info: {\n name: SDK_AGENT_ORIGIN,\n title: \"Letta Agent SDK\",\n },\n agent_id: runtime.agent_id,\n conversation_id: runtime.conversation_id,\n recover_approvals: false,\n force_device_status: true,\n };\n\n const mode = mapPermissionMode(options.permissionMode);\n if (mode) command.mode = mode;\n if (options.cwd !== undefined) command.cwd = options.cwd;\n const groups = externalToolGroups(options.tools);\n if (groups) command.external_tools = groups;\n\n return (await client.runtimeStart(\n command as Parameters<AppServerClient[\"runtimeStart\"]>[0],\n )) as unknown as CloudRuntimeStartResponse;\n }\n\n protected override async afterRuntimeInitialized(): Promise<void> {\n if (!this.controller || !this.runtime) return;\n this.controller.send({\n type: \"sync\",\n runtime: this.runtime,\n recover_approvals: true,\n force_device_status: true,\n });\n }\n\n protected override async beforeTurn(): Promise<void> {\n const sandbox = this.managedSandbox;\n if (!sandbox) return;\n await this.refreshManagedSandbox(sandbox);\n }\n\n protected override onCoreClose(): void {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n void this.cleanupManagedSandbox();\n }\n\n private async resolveRuntime(): Promise<{ runtime: RuntimeScope }> {\n let agentId = this.cloudMode.agentId;\n let conversationId = this.cloudMode.conversationId;\n\n if (agentId && this.cloudMode.newConversation) {\n const conversation = await this.createConversation(agentId);\n conversationId = conversation.id;\n } else if (agentId && this.cloudMode.defaultConversation) {\n conversationId = \"default\";\n }\n\n if (!agentId && conversationId) {\n const conversation = await this.retrieveConversation(conversationId);\n if (!conversation.agent_id) {\n throw new Error(`Cloud conversation ${conversationId} did not include an agent id.`);\n }\n agentId = conversation.agent_id;\n }\n\n if (!agentId || !conversationId) {\n throw new Error(\n \"Constellation createSession()/resumeSession() requires an agent id or conversation id.\",\n );\n }\n\n return { runtime: { agent_id: agentId, conversation_id: conversationId } };\n }\n\n private async createConversation(agentId: string): Promise<{ id: string; agent_id?: string }> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const url = new URL(`${baseUrl}/v1/conversations/`);\n url.searchParams.set(\"agent_id\", agentId);\n const response = await fetchImpl(url, {\n method: \"POST\",\n headers: cloudHeaders(this.cloudOptions),\n body: JSON.stringify({}),\n });\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud createSession()\");\n if (!isCloudConversation(body)) {\n throw new Error(\"Cloud createSession() response did not include a conversation id.\");\n }\n return { id: body.id, agent_id: body.agent_id };\n }\n\n private async retrieveConversation(conversationId: string): Promise<{ id: string; agent_id?: string }> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const response = await fetchImpl(\n `${baseUrl}/v1/conversations/${encodeURIComponent(conversationId)}`,\n { headers: cloudHeaders(this.cloudOptions) },\n );\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud resumeSession()\");\n if (!isCloudConversation(body)) {\n throw new Error(`Cloud resumeSession() could not retrieve conversation ${conversationId}.`);\n }\n return { id: body.id, agent_id: body.agent_id };\n }\n\n private async resolveConnectionForRuntime(\n runtime: RuntimeScope,\n ): Promise<ResolvedCloudConnection> {\n const environment = this.effectiveEnvironment();\n const sandboxOptions = this.effectiveSandboxOptions();\n if (environment !== undefined) {\n if (sandboxOptions !== undefined) {\n throw new Error(\"Constellation sessions cannot specify both environment and sandbox options.\");\n }\n return this.resolveExplicitConnection(environment);\n }\n return this.createManagedSandboxConnection(runtime);\n }\n\n private async resolveExplicitConnection(\n environment: LettaCodeEnvironment,\n ): Promise<{ connectionId: string }> {\n const target = environmentToRemoteTarget(environment);\n const resolved = await this.remoteEnvironmentClient().resolveEnvironment(target);\n return { connectionId: resolved.connectionId };\n }\n\n private async createManagedSandboxConnection(\n runtime: RuntimeScope,\n ): Promise<ResolvedCloudConnection> {\n const sandbox = await this.createManagedSandbox(runtime.agent_id);\n this.managedSandbox = sandbox;\n\n try {\n await this.refreshManagedSandbox(sandbox);\n const connection = await this.waitForManagedSandboxConnection(sandbox);\n this.startManagedSandboxRefresh(sandbox);\n return { connectionId: connection.connectionId };\n } catch (error) {\n await this.cleanupManagedSandbox();\n throw error;\n }\n }\n\n private async createManagedSandbox(agentId: string): Promise<ManagedCloudSandbox> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const response = await fetchImpl(\n `${baseUrl}/v1/agents/${encodeURIComponent(agentId)}/sandboxes`,\n {\n method: \"POST\",\n headers: cloudHeaders(this.cloudOptions),\n body: JSON.stringify({}),\n },\n );\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud create managed sandbox\");\n if (!isCloudAgentSandbox(body)) {\n throw new Error(\"Cloud create managed sandbox response did not include sandbox connection details.\");\n }\n\n const sandboxOptions = this.resolvedSandboxOptions();\n const ttlMinutes = sandboxOptions.ttlMinutes ?? DEFAULT_SANDBOX_TTL_MINUTES;\n const readyTimeoutMs = sandboxOptions.readyTimeoutMs\n ?? DEFAULT_SANDBOX_READY_TIMEOUT_MS;\n const readyPollIntervalMs = sandboxOptions.readyPollIntervalMs\n ?? DEFAULT_SANDBOX_READY_POLL_INTERVAL_MS;\n const defaultRefreshIntervalMs = Math.max(\n 1_000,\n Math.floor(ttlMinutes * 60_000 * 0.8),\n );\n\n return {\n agentId,\n sandboxId: body.sandboxId,\n deviceId: body.deviceId,\n connectionName: body.connectionName,\n ttlMinutes,\n readyTimeoutMs,\n readyPollIntervalMs,\n refreshIntervalMs: sandboxOptions.refreshIntervalMs ?? defaultRefreshIntervalMs,\n terminateOnClose: sandboxOptions.terminateOnClose ?? true,\n };\n }\n\n private async refreshManagedSandbox(sandbox: ManagedCloudSandbox): Promise<void> {\n if (this.sandboxRefreshInFlight) {\n await this.sandboxRefreshInFlight;\n return;\n }\n\n this.sandboxRefreshInFlight = this.refreshManagedSandboxOnce(sandbox);\n try {\n await this.sandboxRefreshInFlight;\n } finally {\n this.sandboxRefreshInFlight = null;\n }\n }\n\n private async refreshManagedSandboxOnce(sandbox: ManagedCloudSandbox): Promise<void> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const response = await fetchImpl(\n `${baseUrl}/v1/agents/${encodeURIComponent(sandbox.agentId)}/sandboxes/refresh`,\n {\n method: \"POST\",\n headers: cloudHeaders(this.cloudOptions),\n body: JSON.stringify({ ttlMinutes: sandbox.ttlMinutes }),\n },\n );\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud refresh managed sandbox\");\n if (!isCloudAgentSandboxRefresh(body) || !body.success) {\n throw new Error(\"Cloud refresh managed sandbox response did not confirm refresh.\");\n }\n if (body.sandboxId !== sandbox.sandboxId) {\n throw new CloudManagedSandboxOwnershipError(\n `Cloud managed sandbox ownership changed for agent ${sandbox.agentId}: expected ${sandbox.sandboxId}, got ${body.sandboxId}.`,\n );\n }\n }\n\n private async terminateManagedSandbox(sandbox: ManagedCloudSandbox): Promise<void> {\n await this.refreshManagedSandbox(sandbox);\n\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const response = await fetchImpl(\n `${baseUrl}/v1/agents/${encodeURIComponent(sandbox.agentId)}/sandboxes`,\n {\n method: \"DELETE\",\n headers: cloudHeaders(this.cloudOptions),\n },\n );\n const body = await parseJsonResponse(response);\n if (response.status === 404) return;\n assertOkResponse(response, body, \"Cloud terminate managed sandbox\");\n }\n\n private async waitForManagedSandboxConnection(\n sandbox: ManagedCloudSandbox,\n ): Promise<{ connectionId: string }> {\n const deadline = Date.now() + sandbox.readyTimeoutMs;\n let lastError: unknown;\n\n while (true) {\n try {\n const resolved = await this.remoteEnvironmentClient().resolveEnvironment({\n deviceId: sandbox.deviceId,\n });\n return { connectionId: resolved.connectionId };\n } catch (error) {\n lastError = error;\n if (!isRetryableManagedSandboxResolveError(error) || Date.now() >= deadline) {\n break;\n }\n const remainingMs = Math.max(0, deadline - Date.now());\n await sleep(Math.min(sandbox.readyPollIntervalMs, remainingMs));\n }\n }\n\n const detail = lastError instanceof Error ? lastError.message : String(lastError);\n throw new Error(\n `Cloud managed sandbox ${sandbox.sandboxId} did not come online within ${sandbox.readyTimeoutMs}ms: ${detail}`,\n );\n }\n\n private startManagedSandboxRefresh(sandbox: ManagedCloudSandbox): void {\n this.stopManagedSandboxRefresh();\n this.sandboxRefreshTimer = setInterval(() => {\n void this.refreshManagedSandbox(sandbox).catch((error) => {\n if (error instanceof CloudManagedSandboxOwnershipError) {\n this.stopManagedSandboxRefresh();\n }\n });\n }, sandbox.refreshIntervalMs);\n (this.sandboxRefreshTimer as { unref?: () => void }).unref?.();\n }\n\n private stopManagedSandboxRefresh(): void {\n if (!this.sandboxRefreshTimer) return;\n clearInterval(this.sandboxRefreshTimer);\n this.sandboxRefreshTimer = null;\n }\n\n private async cleanupManagedSandbox(): Promise<void> {\n this.stopManagedSandboxRefresh();\n const sandbox = this.managedSandbox;\n this.managedSandbox = null;\n if (!sandbox || !sandbox.terminateOnClose) return;\n try {\n await this.terminateManagedSandbox(sandbox);\n } catch {\n // Best-effort cleanup: Cloud TTL still bounds leaked managed sandboxes.\n }\n }\n\n private remoteEnvironmentClient(): RemoteEnvironmentClient {\n return new RemoteEnvironmentClient({\n baseUrl: this.cloudOptions.apiBaseUrl,\n apiKey: getCloudApiKey(this.cloudOptions),\n headers: this.cloudOptions.headers,\n fetch: this.cloudOptions.fetch,\n });\n }\n\n private effectiveEnvironment(): LettaCodeEnvironment | undefined {\n const modeEnvironment = this.mode.kind === \"session\"\n ? this.mode.options.environment\n : undefined;\n return modeEnvironment ?? this.cloudOptions.environment;\n }\n\n private effectiveSandboxOptions(): LettaCodeCloudSandboxOptions | undefined {\n const modeSandbox = this.mode.kind === \"session\"\n ? this.mode.options.sandbox\n : undefined;\n return modeSandbox ?? this.cloudOptions.sandbox;\n }\n\n private resolvedSandboxOptions(): LettaCodeCloudSandboxOptions {\n return this.effectiveSandboxOptions() ?? {};\n }\n}\n",
|
|
15
15
|
"/**\n * SDK Validation\n *\n * Validates user-provided options before spawning the CLI.\n */\n\nimport type { \n CreateSessionOptions,\n CreateAgentOptions,\n MemoryItem, \n CreateBlock,\n SystemPromptPreset,\n SkillSource,\n DreamingOptions,\n} from \"./types.js\";\n\nconst VALID_SKILL_SOURCES: SkillSource[] = [\n \"bundled\",\n \"global\",\n \"agent\",\n \"project\",\n];\n\nconst VALID_REASONING_EFFORTS = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n] as const;\n\n/**\n * Extract block labels from memory items.\n */\nfunction getBlockLabels(memory: MemoryItem[]): string[] {\n return memory\n .map((item) => {\n if (typeof item === \"string\") return item; // preset name\n if (\"label\" in item) return (item as CreateBlock).label; // CreateBlock\n return null; // blockId - no label to check\n })\n .filter((label): label is string => label !== null);\n}\n\nfunction validateApprovalRecoveryOptions(options: CreateSessionOptions): void {\n if (\n options.maxApprovalRecoveryAttempts !== undefined &&\n (!Number.isInteger(options.maxApprovalRecoveryAttempts) ||\n options.maxApprovalRecoveryAttempts < 0)\n ) {\n throw new Error(\n \"Invalid maxApprovalRecoveryAttempts. Expected a non-negative integer.\"\n );\n }\n\n if (\n options.approvalRecoveryTimeoutMs !== undefined &&\n (!Number.isInteger(options.approvalRecoveryTimeoutMs) ||\n options.approvalRecoveryTimeoutMs <= 0)\n ) {\n throw new Error(\n \"Invalid approvalRecoveryTimeoutMs. Expected a positive integer.\"\n );\n }\n}\n\nfunction validateRemovedSessionOptions(options: CreateSessionOptions): void {\n if ((options as { memfsStartup?: unknown }).memfsStartup !== undefined) {\n throw new Error(\n \"memfsStartup is not supported by the SDK.\",\n );\n }\n}\n\n/**\n * Validate systemPrompt preset value.\n */\nfunction validateSystemPromptPreset(preset: string): void {\n const validPresets = [\n \"default\",\n \"letta-claude\",\n \"letta-codex\",\n \"letta-gemini\",\n \"claude\",\n \"codex\",\n \"gemini\",\n ];\n if (!validPresets.includes(preset)) {\n throw new Error(\n `Invalid system prompt preset '${preset}'. ` +\n `Valid presets: ${validPresets.join(\", \")}`\n );\n }\n}\n\nfunction validateSkillSources(sources: SkillSource[] | undefined): void {\n if (sources === undefined) {\n return;\n }\n\n for (const source of sources) {\n if (!VALID_SKILL_SOURCES.includes(source)) {\n throw new Error(\n `Invalid skill source '${source}'. Valid values: ${VALID_SKILL_SOURCES.join(\", \")}`\n );\n }\n }\n}\n\nfunction validateDreamingOptions(dreaming: DreamingOptions | undefined): void {\n if (dreaming === undefined) {\n return;\n }\n\n if (\n dreaming.trigger !== undefined &&\n ![\"off\", \"step-count\", \"compaction-event\"].includes(dreaming.trigger)\n ) {\n throw new Error(\n `Invalid dreaming.trigger '${String(dreaming.trigger)}'. Valid values: off, step-count, compaction-event`\n );\n }\n\n if (\n dreaming.behavior !== undefined &&\n ![\"reminder\", \"auto-launch\"].includes(dreaming.behavior)\n ) {\n throw new Error(\n `Invalid dreaming.behavior '${String(dreaming.behavior)}'. Valid values: reminder, auto-launch`\n );\n }\n\n if (\n dreaming.stepCount !== undefined &&\n (!Number.isInteger(dreaming.stepCount) || dreaming.stepCount <= 0)\n ) {\n throw new Error(\n \"Invalid dreaming.stepCount. Expected a positive integer.\"\n );\n }\n}\n\nfunction validateReasoningEffort(value: unknown): void {\n if (value === undefined) return;\n if (\n typeof value !== \"string\" ||\n !VALID_REASONING_EFFORTS.includes(value as (typeof VALID_REASONING_EFFORTS)[number])\n ) {\n throw new Error(\n `Invalid reasoningEffort '${String(value)}'. Valid values: ${VALID_REASONING_EFFORTS.join(\", \")}`\n );\n }\n}\n\n/**\n * Validate CreateSessionOptions (used by createSession and resumeSession).\n */\nexport function validateCreateSessionOptions(options: CreateSessionOptions): void {\n // Validate systemPrompt preset if provided\n if (options.systemPrompt !== undefined) {\n validateSystemPromptPreset(options.systemPrompt);\n }\n\n validateSkillSources(options.skillSources);\n validateReasoningEffort(options.reasoningEffort);\n validateDreamingOptions(options.dreaming);\n validateApprovalRecoveryOptions(options);\n validateRemovedSessionOptions(options);\n}\n\n/**\n * Validate CreateAgentOptions (used by createAgent).\n */\nexport function validateCreateAgentOptions(options: CreateAgentOptions): void {\n // Validate memory/persona consistency\n if (options.memory !== undefined) {\n const blockLabels = getBlockLabels(options.memory);\n\n if (options.persona !== undefined && !blockLabels.includes(\"persona\")) {\n throw new Error(\n \"Cannot set 'persona' value - block not included in 'memory'. \" +\n \"Either add 'persona' to memory array or remove the persona option.\"\n );\n }\n\n if (options.human !== undefined && !blockLabels.includes(\"human\")) {\n throw new Error(\n \"Cannot set 'human' value - block not included in 'memory'. \" +\n \"Either add 'human' to memory array or remove the human option.\"\n );\n }\n }\n\n // Validate systemPrompt preset if provided as preset object\n if (\n options.systemPrompt !== undefined &&\n typeof options.systemPrompt === \"object\"\n ) {\n validateSystemPromptPreset(options.systemPrompt.preset);\n } else if (\n options.systemPrompt !== undefined &&\n typeof options.systemPrompt === \"string\"\n ) {\n // Check if it's a preset name (if so, validate it)\n const validPresets = [\n \"default\",\n \"letta-claude\",\n \"letta-codex\",\n \"letta-gemini\",\n \"claude\",\n \"codex\",\n \"gemini\",\n ] as const;\n if (validPresets.includes(options.systemPrompt as SystemPromptPreset)) {\n validateSystemPromptPreset(options.systemPrompt);\n }\n // If not a preset, it's a custom string - no validation needed\n }\n\n validateSkillSources(options.skillSources);\n validateDreamingOptions(options.dreaming);\n}\n",
|
|
16
|
-
"import { Session } from \"./session.js\";\nimport {\n AppServerSession,\n assertRemoteSessionOptionsSupported,\n} from \"./app-server-session.js\";\nimport {\n CloudEnvironmentSession,\n assertCloudSessionOptionsSupported,\n createCloudAgent,\n validateCloudClientOptions,\n} from \"./cloud-session.js\";\nimport type {\n CreateAgentOptions,\n CreateSessionOptions,\n LettaCodeBackend,\n LettaCodeClientOptions,\n LettaCodeClientSessionOptions,\n LettaCodeEnvironment,\n LettaCodeRemoteClientOptions,\n LettaCodeLocalClientOptions,\n LettaCodeCloudClientOptions,\n LettaCodeSession,\n SDKResultMessage,\n SendMessage,\n} from \"./types.js\";\nimport {\n validateCreateAgentOptions,\n validateCreateSessionOptions,\n} from \"./validation.js\";\n\nconst VALID_BACKENDS = new Set<LettaCodeBackend>([\n \"local\",\n \"remote\",\n \"cloud\",\n]);\n\nfunction isLettaCodeBackend(value: string): value is LettaCodeBackend {\n return VALID_BACKENDS.has(value as LettaCodeBackend);\n}\n\nfunction getOptionsEnvironment(\n options: LettaCodeClientOptions,\n): LettaCodeEnvironment | undefined {\n if (\"environment\" in options) {\n return options.environment;\n }\n return undefined;\n}\n\nfunction stripCloudExecutionOptions(\n options: LettaCodeClientSessionOptions,\n): CreateSessionOptions {\n const sessionOptions = { ...options };\n delete sessionOptions.environment;\n delete sessionOptions.sandbox;\n return sessionOptions;\n}\n\nfunction hasCreateAgentEnvironment(options: CreateAgentOptions): boolean {\n return \"environment\" in (options as Record<string, unknown>);\n}\n\nfunction looksLikeConversationId(id: string): boolean {\n return id.startsWith(\"conv-\") || id.startsWith(\"local-conv-\");\n}\n\ntype TurnSession = LettaCodeSession & {\n runTurn(message: SendMessage): Promise<SDKResultMessage>;\n};\n\n/**\n * Top-level Letta Agent SDK client.\n *\n * `backend` selects how the SDK reaches or runs the Letta Code harness.\n * `local` spawns an SDK-owned Letta Code app-server and speaks the websocket\n * protocol by default, with an explicit stdio fallback for legacy flows.\n * `remote` connects to a user-managed Letta Code app-server websocket endpoint.\n * `cloud` uses agents hosted on Constellation, with an explicit remote\n * environment or SDK-managed sandbox.\n */\nexport class LettaCodeClient {\n readonly backend: LettaCodeBackend;\n readonly environment: LettaCodeEnvironment | undefined;\n private readonly options: LettaCodeClientOptions;\n\n constructor(options: LettaCodeClientOptions = {}) {\n const backend = options.backend ?? \"local\";\n if (!isLettaCodeBackend(backend)) {\n throw new Error(\n `Invalid Letta Code backend '${String(backend)}'. Valid values: local, remote, cloud.`,\n );\n }\n\n this.backend = backend;\n this.environment = getOptionsEnvironment(options);\n this.options = options;\n\n if (this.backend === \"local\" && this.environment !== undefined) {\n throw new Error(\n 'LettaCodeClient environment is only valid with backend: \"cloud\".',\n );\n }\n if (this.backend === \"remote\" && this.environment !== undefined) {\n throw new Error(\n 'LettaCodeClient environment is only valid with backend: \"cloud\"; remote url selects the app-server runtime.',\n );\n }\n if (this.backend !== \"cloud\" && (options as { sandbox?: unknown }).sandbox !== undefined) {\n throw new Error('LettaCodeClient sandbox options are only valid with backend: \"cloud\".');\n }\n\n if (this.backend === \"local\") {\n const localOptions = options as LettaCodeLocalClientOptions;\n if (\n localOptions.transport !== undefined &&\n localOptions.transport !== \"app-server\" &&\n localOptions.transport !== \"stdio\"\n ) {\n throw new Error(\"Invalid local transport. Valid values: app-server, stdio.\");\n }\n const requestTimeoutMs = localOptions.appServer?.requestTimeoutMs;\n if (\n requestTimeoutMs !== undefined &&\n (!Number.isInteger(requestTimeoutMs) || requestTimeoutMs <= 0)\n ) {\n throw new Error(\"Invalid appServer.requestTimeoutMs. Expected a positive integer.\");\n }\n const startupTimeoutMs = localOptions.appServer?.startupTimeoutMs;\n if (\n startupTimeoutMs !== undefined &&\n (!Number.isInteger(startupTimeoutMs) || startupTimeoutMs <= 0)\n ) {\n throw new Error(\"Invalid appServer.startupTimeoutMs. Expected a positive integer.\");\n }\n }\n\n if (this.backend === \"remote\") {\n if (!(\"url\" in options) || typeof options.url !== \"string\" || options.url.length === 0) {\n throw new Error(\"LettaCodeClient remote backend requires a non-empty url.\");\n }\n if (\n options.requestTimeoutMs !== undefined &&\n (!Number.isInteger(options.requestTimeoutMs) || options.requestTimeoutMs <= 0)\n ) {\n throw new Error(\"Invalid requestTimeoutMs. Expected a positive integer.\");\n }\n }\n\n if (this.backend === \"cloud\") {\n validateCloudClientOptions(options as LettaCodeCloudClientOptions);\n }\n }\n\n /**\n * Create a new Letta Code agent with a default conversation.\n *\n * Environment/device selection is intentionally not part of the agent payload;\n * it belongs to the client/session execution context.\n */\n async createAgent(options: CreateAgentOptions = {}): Promise<string> {\n if (hasCreateAgentEnvironment(options)) {\n throw new Error(\n \"createAgent() does not accept environment. Set a client default or pass environment to resumeSession()/createSession().\",\n );\n }\n\n validateCreateAgentOptions(options);\n\n if (this.backend === \"remote\") {\n const session = new AppServerSession(this.remoteOptions(), {\n kind: \"create-agent\",\n options,\n });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n }\n if (this.backend === \"cloud\") {\n return createCloudAgent(this.cloudOptions(), options);\n }\n this.assertLocalBackend(\"createAgent\");\n if (!this.useLegacyLocalStdio()) {\n const session = new AppServerSession(this.localAppServerOptions(), {\n kind: \"create-agent\",\n options,\n });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n }\n const session = new Session({ ...options, createOnly: true });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n }\n\n /**\n * Create a new conversation/session.\n *\n * Without an agent id, this uses the default/LRU agent, matching the legacy\n * top-level createSession() helper.\n */\n createSession(\n agentIdOrOptions?: string | LettaCodeClientSessionOptions,\n options: LettaCodeClientSessionOptions = {},\n ): LettaCodeSession {\n const agentId =\n typeof agentIdOrOptions === \"string\" ? agentIdOrOptions : undefined;\n const resolvedOptions =\n typeof agentIdOrOptions === \"string\" ? options : (agentIdOrOptions ?? {});\n\n this.assertSessionBackend(\"createSession\", resolvedOptions);\n const sessionOptions = stripCloudExecutionOptions(resolvedOptions);\n validateCreateSessionOptions(sessionOptions);\n\n if (this.backend === \"remote\") {\n if (!agentId) {\n throw new Error(\n \"App-server createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n return new AppServerSession(this.remoteOptions(), {\n kind: \"session\",\n agentId,\n newConversation: true,\n options: resolvedOptions,\n });\n }\n if (this.backend === \"cloud\") {\n if (!agentId) {\n throw new Error(\n \"Constellation createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n return new CloudEnvironmentSession(this.cloudOptions(), {\n kind: \"session\",\n agentId,\n newConversation: true,\n options: resolvedOptions,\n });\n }\n if (!this.useLegacyLocalStdio() && agentId) {\n return new AppServerSession(this.localAppServerOptions(), {\n kind: \"session\",\n agentId,\n newConversation: true,\n options: resolvedOptions,\n });\n }\n if (agentId) {\n return new Session({ ...sessionOptions, agentId, newConversation: true });\n }\n return new Session({ ...sessionOptions, newConversation: true });\n }\n\n /**\n * Resume an existing agent default conversation or a specific conversation.\n *\n * `options.environment` overrides the client's default execution target for\n * Constellation sessions. Remote app-server URLs already select the runtime.\n */\n resumeSession(\n id: string,\n options: LettaCodeClientSessionOptions = {},\n ): LettaCodeSession {\n this.assertSessionBackend(\"resumeSession\", options);\n const sessionOptions = stripCloudExecutionOptions(options);\n validateCreateSessionOptions(sessionOptions);\n\n if (this.backend === \"remote\") {\n if (looksLikeConversationId(id)) {\n return new AppServerSession(this.remoteOptions(), {\n kind: \"session\",\n conversationId: id,\n options,\n });\n }\n return new AppServerSession(this.remoteOptions(), {\n kind: \"session\",\n agentId: id,\n defaultConversation: true,\n options,\n });\n }\n if (this.backend === \"cloud\") {\n if (looksLikeConversationId(id)) {\n return new CloudEnvironmentSession(this.cloudOptions(), {\n kind: \"session\",\n conversationId: id,\n options,\n });\n }\n return new CloudEnvironmentSession(this.cloudOptions(), {\n kind: \"session\",\n agentId: id,\n defaultConversation: true,\n options,\n });\n }\n if (!this.useLegacyLocalStdio()) {\n if (looksLikeConversationId(id)) {\n return new AppServerSession(this.localAppServerOptions(), {\n kind: \"session\",\n conversationId: id,\n options,\n });\n }\n return new AppServerSession(this.localAppServerOptions(), {\n kind: \"session\",\n agentId: id,\n defaultConversation: true,\n options,\n });\n }\n if (looksLikeConversationId(id)) {\n return new Session({ ...sessionOptions, conversationId: id });\n }\n return new Session({\n ...sessionOptions,\n agentId: id,\n defaultConversation: true,\n });\n }\n\n /** One-shot prompt convenience helper using a new conversation. */\n async prompt(\n message: SendMessage,\n agentId?: string,\n options: LettaCodeClientSessionOptions = {},\n ): Promise<SDKResultMessage> {\n const session = agentId\n ? this.createSession(agentId, options)\n : this.createSession(options);\n\n try {\n return await (session as TurnSession).runTurn(message);\n } finally {\n session.close();\n }\n }\n\n private assertLocalBackend(action: string): void {\n if (this.backend === \"local\") {\n return;\n }\n\n throw new Error(\n `LettaCodeClient backend '${this.backend}' is not implemented yet. ${action} currently supports backend 'local' only.`,\n );\n }\n\n private assertSessionBackend(\n action: string,\n options: LettaCodeClientSessionOptions,\n ): void {\n const effectiveEnvironment = options.environment ?? this.environment;\n if (this.backend === \"local\") {\n if (effectiveEnvironment !== undefined) {\n throw new Error(\n `${action}() environment overrides are only valid with backend: \"cloud\".`,\n );\n }\n if (options.sandbox !== undefined) {\n throw new Error(`${action}() sandbox options are only valid with backend: \"cloud\".`);\n }\n if (!this.useLegacyLocalStdio()) {\n assertRemoteSessionOptionsSupported(action, options);\n }\n return;\n }\n\n if (this.backend === \"remote\") {\n if (options.environment !== undefined) {\n throw new Error(\n `${action}() environment overrides are only valid with backend: \"cloud\"; remote url selects the app-server runtime.`,\n );\n }\n if (options.sandbox !== undefined) {\n throw new Error(`${action}() sandbox options are only valid with backend: \"cloud\"; remote url selects the app-server runtime.`);\n }\n assertRemoteSessionOptionsSupported(action, options);\n return;\n }\n if (this.backend === \"cloud\") {\n const cloudOptions = this.cloudOptions();\n if (cloudOptions.environment !== undefined && options.sandbox !== undefined) {\n throw new Error(`Constellation ${action}() cannot specify sandbox options when the client has a default environment.`);\n }\n if (cloudOptions.sandbox !== undefined && options.environment !== undefined) {\n throw new Error(`Constellation ${action}() cannot specify an environment when the client has default sandbox options.`);\n }\n assertCloudSessionOptionsSupported(action, options);\n return;\n }\n throw new Error(\n `LettaCodeClient backend '${this.backend}' is not implemented yet. ${action} currently supports backend 'local' only.`,\n );\n }\n\n private useLegacyLocalStdio(): boolean {\n return (this.options as LettaCodeLocalClientOptions).transport === \"stdio\";\n }\n\n private localAppServerOptions() {\n const localOptions = this.options as LettaCodeLocalClientOptions;\n const appServer = localOptions.appServer;\n return {\n local: appServer?.url === undefined,\n ...(appServer?.url !== undefined ? { url: appServer.url } : {}),\n ...(appServer?.WebSocket !== undefined ? { WebSocket: appServer.WebSocket } : {}),\n ...(appServer?.requestTimeoutMs !== undefined\n ? { requestTimeoutMs: appServer.requestTimeoutMs }\n : {}),\n ...(appServer?.listen !== undefined ? { localListen: appServer.listen } : {}),\n ...(appServer?.startupTimeoutMs !== undefined\n ? { localStartupTimeoutMs: appServer.startupTimeoutMs }\n : {}),\n };\n }\n\n private remoteOptions(): LettaCodeRemoteClientOptions {\n if (this.backend !== \"remote\") {\n throw new Error(\"Remote options requested for non-remote backend.\");\n }\n return this.options as LettaCodeRemoteClientOptions;\n }\n\n private cloudOptions(): LettaCodeCloudClientOptions {\n if (this.backend !== \"cloud\") {\n throw new Error('Constellation options requested for non-\"cloud\" backend.');\n }\n return this.options as LettaCodeCloudClientOptions;\n }\n}\n",
|
|
16
|
+
"import { Session } from \"./session.js\";\nimport {\n AppServerSession,\n assertRemoteSessionOptionsSupported,\n} from \"./app-server-session.js\";\nimport {\n CloudEnvironmentSession,\n assertCloudSessionOptionsSupported,\n createCloudAgent,\n validateCloudClientOptions,\n} from \"./cloud-session.js\";\nimport type {\n CreateAgentOptions,\n CreateSessionOptions,\n LettaCodeBackend,\n LettaCodeClientOptions,\n LettaCodeClientSessionOptions,\n LettaCodeEnvironment,\n LettaCodeRemoteClientOptions,\n LettaCodeLocalClientOptions,\n LettaCodeCloudClientOptions,\n LettaCodeSession,\n SDKResultMessage,\n SendMessage,\n} from \"./types.js\";\nimport {\n validateCreateAgentOptions,\n validateCreateSessionOptions,\n} from \"./validation.js\";\n\nconst VALID_BACKENDS = new Set<LettaCodeBackend>([\n \"local\",\n \"remote\",\n \"cloud\",\n]);\n\nfunction isLettaCodeBackend(value: string): value is LettaCodeBackend {\n return VALID_BACKENDS.has(value as LettaCodeBackend);\n}\n\nfunction getOptionsEnvironment(\n options: LettaCodeClientOptions,\n): LettaCodeEnvironment | undefined {\n if (\"environment\" in options) {\n return options.environment;\n }\n return undefined;\n}\n\nfunction stripCloudExecutionOptions(\n options: LettaCodeClientSessionOptions,\n): CreateSessionOptions {\n const sessionOptions = { ...options };\n delete sessionOptions.environment;\n delete sessionOptions.sandbox;\n return sessionOptions;\n}\n\nfunction hasCreateAgentEnvironment(options: CreateAgentOptions): boolean {\n return \"environment\" in (options as Record<string, unknown>);\n}\n\nfunction hasExplicitCreateAgentModel(options: CreateAgentOptions): boolean {\n return typeof options.model === \"string\" && options.model.trim().length > 0;\n}\n\nfunction looksLikeConversationId(id: string): boolean {\n return id.startsWith(\"conv-\") || id.startsWith(\"local-conv-\");\n}\n\ntype TurnSession = LettaCodeSession & {\n runTurn(message: SendMessage): Promise<SDKResultMessage>;\n};\n\n/**\n * Top-level Letta Agent SDK client.\n *\n * `backend` selects how the SDK reaches or runs the Letta Code harness.\n * `local` spawns an SDK-owned Letta Code app-server and speaks the websocket\n * protocol by default, with an explicit stdio fallback for legacy flows.\n * `remote` connects to a user-managed Letta Code app-server websocket endpoint.\n * `cloud` uses agents hosted on Constellation, with an explicit remote\n * environment or SDK-managed sandbox.\n */\nexport class LettaAgentClient {\n readonly backend: LettaCodeBackend;\n readonly environment: LettaCodeEnvironment | undefined;\n private readonly options: LettaCodeClientOptions;\n\n constructor(options: LettaCodeClientOptions = {}) {\n const backend = options.backend ?? \"local\";\n if (!isLettaCodeBackend(backend)) {\n throw new Error(\n `Invalid Letta Code backend '${String(backend)}'. Valid values: local, remote, cloud.`,\n );\n }\n\n this.backend = backend;\n this.environment = getOptionsEnvironment(options);\n this.options = options;\n\n if (this.backend === \"local\" && this.environment !== undefined) {\n throw new Error(\n 'LettaAgentClient environment is only valid with backend: \"cloud\".',\n );\n }\n if (this.backend === \"remote\" && this.environment !== undefined) {\n throw new Error(\n 'LettaAgentClient environment is only valid with backend: \"cloud\"; remote url selects the app-server runtime.',\n );\n }\n if (this.backend !== \"cloud\" && (options as { sandbox?: unknown }).sandbox !== undefined) {\n throw new Error('LettaAgentClient sandbox options are only valid with backend: \"cloud\".');\n }\n\n if (this.backend === \"local\") {\n const localOptions = options as LettaCodeLocalClientOptions;\n if (\n localOptions.transport !== undefined &&\n localOptions.transport !== \"app-server\" &&\n localOptions.transport !== \"stdio\"\n ) {\n throw new Error(\"Invalid local transport. Valid values: app-server, stdio.\");\n }\n const requestTimeoutMs = localOptions.appServer?.requestTimeoutMs;\n if (\n requestTimeoutMs !== undefined &&\n (!Number.isInteger(requestTimeoutMs) || requestTimeoutMs <= 0)\n ) {\n throw new Error(\"Invalid appServer.requestTimeoutMs. Expected a positive integer.\");\n }\n const startupTimeoutMs = localOptions.appServer?.startupTimeoutMs;\n if (\n startupTimeoutMs !== undefined &&\n (!Number.isInteger(startupTimeoutMs) || startupTimeoutMs <= 0)\n ) {\n throw new Error(\"Invalid appServer.startupTimeoutMs. Expected a positive integer.\");\n }\n }\n\n if (this.backend === \"remote\") {\n if (!(\"url\" in options) || typeof options.url !== \"string\" || options.url.length === 0) {\n throw new Error(\"LettaAgentClient remote backend requires a non-empty url.\");\n }\n if (\n options.requestTimeoutMs !== undefined &&\n (!Number.isInteger(options.requestTimeoutMs) || options.requestTimeoutMs <= 0)\n ) {\n throw new Error(\"Invalid requestTimeoutMs. Expected a positive integer.\");\n }\n }\n\n if (this.backend === \"cloud\") {\n validateCloudClientOptions(options as LettaCodeCloudClientOptions);\n }\n }\n\n /**\n * Create a new Letta Code agent with a default conversation.\n *\n * Environment/device selection is intentionally not part of the agent payload;\n * it belongs to the client/session execution context.\n */\n async createAgent(options: CreateAgentOptions = {}): Promise<string> {\n if (hasCreateAgentEnvironment(options)) {\n throw new Error(\n \"createAgent() does not accept environment. Set a client default or pass environment to resumeSession()/createSession().\",\n );\n }\n\n validateCreateAgentOptions(options);\n\n if (this.backend === \"remote\") {\n const session = new AppServerSession(this.remoteOptions(), {\n kind: \"create-agent\",\n options,\n });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n }\n if (this.backend === \"cloud\") {\n if (!hasExplicitCreateAgentModel(options)) {\n throw new Error(\n 'Constellation createAgent() requires an explicit model. Pass model in createAgent({ model: \"provider/model\" }).',\n );\n }\n return createCloudAgent(this.cloudOptions(), options);\n }\n this.assertLocalBackend(\"createAgent\");\n if (!this.useLegacyLocalStdio()) {\n const session = new AppServerSession(this.localAppServerOptions(), {\n kind: \"create-agent\",\n options,\n });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n }\n const session = new Session({ ...options, createOnly: true });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n }\n\n /**\n * Create a new conversation/session.\n *\n * Without an agent id, this uses the default/LRU agent, matching the legacy\n * top-level createSession() helper.\n */\n createSession(\n agentIdOrOptions?: string | LettaCodeClientSessionOptions,\n options: LettaCodeClientSessionOptions = {},\n ): LettaCodeSession {\n const agentId =\n typeof agentIdOrOptions === \"string\" ? agentIdOrOptions : undefined;\n const resolvedOptions =\n typeof agentIdOrOptions === \"string\" ? options : (agentIdOrOptions ?? {});\n\n this.assertSessionBackend(\"createSession\", resolvedOptions);\n const sessionOptions = stripCloudExecutionOptions(resolvedOptions);\n validateCreateSessionOptions(sessionOptions);\n\n if (this.backend === \"remote\") {\n if (!agentId) {\n throw new Error(\n \"App-server createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n return new AppServerSession(this.remoteOptions(), {\n kind: \"session\",\n agentId,\n newConversation: true,\n options: resolvedOptions,\n });\n }\n if (this.backend === \"cloud\") {\n if (!agentId) {\n throw new Error(\n \"Constellation createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n return new CloudEnvironmentSession(this.cloudOptions(), {\n kind: \"session\",\n agentId,\n newConversation: true,\n options: resolvedOptions,\n });\n }\n if (!this.useLegacyLocalStdio() && agentId) {\n return new AppServerSession(this.localAppServerOptions(), {\n kind: \"session\",\n agentId,\n newConversation: true,\n options: resolvedOptions,\n });\n }\n if (agentId) {\n return new Session({ ...sessionOptions, agentId, newConversation: true });\n }\n return new Session({ ...sessionOptions, newConversation: true });\n }\n\n /**\n * Resume an existing agent default conversation or a specific conversation.\n *\n * `options.environment` overrides the client's default execution target for\n * Constellation sessions. Remote app-server URLs already select the runtime.\n */\n resumeSession(\n id: string,\n options: LettaCodeClientSessionOptions = {},\n ): LettaCodeSession {\n this.assertSessionBackend(\"resumeSession\", options);\n const sessionOptions = stripCloudExecutionOptions(options);\n validateCreateSessionOptions(sessionOptions);\n\n if (this.backend === \"remote\") {\n if (looksLikeConversationId(id)) {\n return new AppServerSession(this.remoteOptions(), {\n kind: \"session\",\n conversationId: id,\n options,\n });\n }\n return new AppServerSession(this.remoteOptions(), {\n kind: \"session\",\n agentId: id,\n defaultConversation: true,\n options,\n });\n }\n if (this.backend === \"cloud\") {\n if (looksLikeConversationId(id)) {\n return new CloudEnvironmentSession(this.cloudOptions(), {\n kind: \"session\",\n conversationId: id,\n options,\n });\n }\n return new CloudEnvironmentSession(this.cloudOptions(), {\n kind: \"session\",\n agentId: id,\n defaultConversation: true,\n options,\n });\n }\n if (!this.useLegacyLocalStdio()) {\n if (looksLikeConversationId(id)) {\n return new AppServerSession(this.localAppServerOptions(), {\n kind: \"session\",\n conversationId: id,\n options,\n });\n }\n return new AppServerSession(this.localAppServerOptions(), {\n kind: \"session\",\n agentId: id,\n defaultConversation: true,\n options,\n });\n }\n if (looksLikeConversationId(id)) {\n return new Session({ ...sessionOptions, conversationId: id });\n }\n return new Session({\n ...sessionOptions,\n agentId: id,\n defaultConversation: true,\n });\n }\n\n /** One-shot prompt convenience helper using a new conversation. */\n async prompt(\n message: SendMessage,\n agentId?: string,\n options: LettaCodeClientSessionOptions = {},\n ): Promise<SDKResultMessage> {\n const session = agentId\n ? this.createSession(agentId, options)\n : this.createSession(options);\n\n try {\n return await (session as TurnSession).runTurn(message);\n } finally {\n session.close();\n }\n }\n\n private assertLocalBackend(action: string): void {\n if (this.backend === \"local\") {\n return;\n }\n\n throw new Error(\n `LettaAgentClient backend '${this.backend}' is not implemented yet. ${action} currently supports backend 'local' only.`,\n );\n }\n\n private assertSessionBackend(\n action: string,\n options: LettaCodeClientSessionOptions,\n ): void {\n const effectiveEnvironment = options.environment ?? this.environment;\n if (this.backend === \"local\") {\n if (effectiveEnvironment !== undefined) {\n throw new Error(\n `${action}() environment overrides are only valid with backend: \"cloud\".`,\n );\n }\n if (options.sandbox !== undefined) {\n throw new Error(`${action}() sandbox options are only valid with backend: \"cloud\".`);\n }\n if (!this.useLegacyLocalStdio()) {\n assertRemoteSessionOptionsSupported(action, options);\n }\n return;\n }\n\n if (this.backend === \"remote\") {\n if (options.environment !== undefined) {\n throw new Error(\n `${action}() environment overrides are only valid with backend: \"cloud\"; remote url selects the app-server runtime.`,\n );\n }\n if (options.sandbox !== undefined) {\n throw new Error(`${action}() sandbox options are only valid with backend: \"cloud\"; remote url selects the app-server runtime.`);\n }\n assertRemoteSessionOptionsSupported(action, options);\n return;\n }\n if (this.backend === \"cloud\") {\n const cloudOptions = this.cloudOptions();\n if (cloudOptions.environment !== undefined && options.sandbox !== undefined) {\n throw new Error(`Constellation ${action}() cannot specify sandbox options when the client has a default environment.`);\n }\n if (cloudOptions.sandbox !== undefined && options.environment !== undefined) {\n throw new Error(`Constellation ${action}() cannot specify an environment when the client has default sandbox options.`);\n }\n assertCloudSessionOptionsSupported(action, options);\n return;\n }\n throw new Error(\n `LettaAgentClient backend '${this.backend}' is not implemented yet. ${action} currently supports backend 'local' only.`,\n );\n }\n\n private useLegacyLocalStdio(): boolean {\n return (this.options as LettaCodeLocalClientOptions).transport === \"stdio\";\n }\n\n private localAppServerOptions() {\n const localOptions = this.options as LettaCodeLocalClientOptions;\n const appServer = localOptions.appServer;\n return {\n local: appServer?.url === undefined,\n localBackend: \"local\",\n ...(appServer?.url !== undefined ? { url: appServer.url } : {}),\n ...(appServer?.WebSocket !== undefined ? { WebSocket: appServer.WebSocket } : {}),\n ...(appServer?.requestTimeoutMs !== undefined\n ? { requestTimeoutMs: appServer.requestTimeoutMs }\n : {}),\n ...(appServer?.listen !== undefined ? { localListen: appServer.listen } : {}),\n ...(appServer?.startupTimeoutMs !== undefined\n ? { localStartupTimeoutMs: appServer.startupTimeoutMs }\n : {}),\n };\n }\n\n private remoteOptions(): LettaCodeRemoteClientOptions {\n if (this.backend !== \"remote\") {\n throw new Error(\"Remote options requested for non-remote backend.\");\n }\n return this.options as LettaCodeRemoteClientOptions;\n }\n\n private cloudOptions(): LettaCodeCloudClientOptions {\n if (this.backend !== \"cloud\") {\n throw new Error('Constellation options requested for non-\"cloud\" backend.');\n }\n return this.options as LettaCodeCloudClientOptions;\n }\n}\n",
|
|
17
17
|
"import type { SDKStreamEventPayload } from \"./types.js\";\n\nexport type StreamTextKind = \"assistant\" | \"reasoning\";\n\nexport interface StreamTextDelta {\n kind: StreamTextKind;\n text: string;\n}\n\nfunction extractTextFromContent(content: unknown): string | null {\n if (typeof content === \"string\") {\n return content;\n }\n\n if (Array.isArray(content)) {\n const pieces: string[] = [];\n for (const part of content) {\n if (typeof part === \"string\") {\n pieces.push(part);\n continue;\n }\n if (!part || typeof part !== \"object\") {\n continue;\n }\n const rec = part as Record<string, unknown>;\n if (typeof rec.text === \"string\") {\n pieces.push(rec.text);\n }\n }\n const joined = pieces.join(\"\");\n return joined.length > 0 ? joined : null;\n }\n\n if (content && typeof content === \"object\") {\n const rec = content as Record<string, unknown>;\n if (typeof rec.text === \"string\") {\n return rec.text;\n }\n }\n\n return null;\n}\n\n/**\n * Extract appendable assistant/reasoning text from a stream_event payload.\n *\n * Supports both shapes currently emitted by headless mode:\n * 1) content_block style: { type, delta: { text|reasoning } }\n * 2) message chunk style: { message_type: \"assistant_message\"|\"reasoning_message\", ... }\n */\nexport function extractStreamTextDelta(event: SDKStreamEventPayload): StreamTextDelta | null {\n if (!event || typeof event !== \"object\") {\n return null;\n }\n\n const rec = event as Record<string, unknown>;\n\n const maybeDelta = rec.delta;\n if (maybeDelta && typeof maybeDelta === \"object\") {\n const delta = maybeDelta as Record<string, unknown>;\n\n if (typeof delta.reasoning === \"string\" && delta.reasoning.length > 0) {\n return { kind: \"reasoning\", text: delta.reasoning };\n }\n\n if (typeof delta.text === \"string\" && delta.text.length > 0) {\n return { kind: \"assistant\", text: delta.text };\n }\n }\n\n const messageType = rec.message_type;\n if (messageType === \"reasoning_message\") {\n const reasoningText =\n typeof rec.reasoning === \"string\" ? rec.reasoning : extractTextFromContent(rec.content);\n if (reasoningText && reasoningText.length > 0) {\n return { kind: \"reasoning\", text: reasoningText };\n }\n }\n\n if (messageType === \"assistant_message\") {\n const assistantText = extractTextFromContent(rec.content);\n if (assistantText && assistantText.length > 0) {\n return { kind: \"assistant\", text: assistantText };\n }\n }\n\n return null;\n}\n",
|
|
18
18
|
"/**\n * Tool Helpers\n * \n * Helper functions for creating tool results and parsing parameters.\n * Matches the API from pi-coding-agent.\n */\n\nimport type { AgentToolResult } from \"./types.js\";\n\n/**\n * Create a JSON tool result\n */\nexport function jsonResult(payload: unknown): AgentToolResult<unknown> {\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify(payload, null, 2),\n },\n ],\n details: payload,\n };\n}\n\n/**\n * Options for reading string parameters\n */\nexport interface StringParamOptions {\n required?: boolean;\n trim?: boolean;\n label?: string;\n allowEmpty?: boolean;\n}\n\n/**\n * Read a string parameter from tool args\n */\nexport function readStringParam(\n params: Record<string, unknown>,\n key: string,\n options?: StringParamOptions & { required: true },\n): string;\nexport function readStringParam(\n params: Record<string, unknown>,\n key: string,\n options?: StringParamOptions,\n): string | undefined;\nexport function readStringParam(\n params: Record<string, unknown>,\n key: string,\n options: StringParamOptions = {},\n): string | undefined {\n const { required = false, trim = true, label = key, allowEmpty = false } = options;\n const raw = params[key];\n if (typeof raw !== \"string\") {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n const value = trim ? raw.trim() : raw;\n if (!value && !allowEmpty) {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n return value;\n}\n\n/**\n * Read a number parameter from tool args\n */\nexport function readNumberParam(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean; label?: string; integer?: boolean } = {},\n): number | undefined {\n const { required = false, label = key, integer = false } = options;\n const raw = params[key];\n let value: number | undefined;\n if (typeof raw === \"number\" && Number.isFinite(raw)) {\n value = raw;\n } else if (typeof raw === \"string\") {\n const trimmed = raw.trim();\n if (trimmed) {\n const parsed = Number.parseFloat(trimmed);\n if (Number.isFinite(parsed)) value = parsed;\n }\n }\n if (value === undefined) {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n return integer ? Math.trunc(value) : value;\n}\n\n/**\n * Read a boolean parameter from tool args\n */\nexport function readBooleanParam(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean; label?: string } = {},\n): boolean | undefined {\n const { required = false, label = key } = options;\n const raw = params[key];\n if (typeof raw === \"boolean\") {\n return raw;\n }\n if (typeof raw === \"string\") {\n const lower = raw.toLowerCase().trim();\n if (lower === \"true\" || lower === \"1\" || lower === \"yes\") return true;\n if (lower === \"false\" || lower === \"0\" || lower === \"no\") return false;\n }\n if (required) throw new Error(`${label} required`);\n return undefined;\n}\n\n/**\n * Read a string array parameter from tool args\n */\nexport function readStringArrayParam(\n params: Record<string, unknown>,\n key: string,\n options: StringParamOptions = {},\n): string[] | undefined {\n const { required = false, label = key } = options;\n const raw = params[key];\n if (Array.isArray(raw)) {\n const values = raw\n .filter((entry): entry is string => typeof entry === \"string\")\n .map((entry) => entry.trim())\n .filter(Boolean);\n if (values.length === 0) {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n return values;\n }\n if (typeof raw === \"string\") {\n const value = raw.trim();\n if (!value) {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n return [value];\n }\n if (required) throw new Error(`${label} required`);\n return undefined;\n}\n",
|
|
19
|
-
"/**\n * Letta Agent SDK\n *\n * Programmatic control of Letta Code CLI with persistent agent memory.\n *\n * @example\n * ```typescript\n * import { LettaCodeClient, createAgent, createSession, resumeSession, prompt } from '@letta-ai/letta-agent-sdk';\n *\n * const client = new LettaCodeClient({ backend: 'local' });\n * const agentId = await client.createAgent();\n * const clientSession = client.resumeSession(agentId);\n *\n * // Start session with default agent + new conversation (like `letta`)\n * const session = createSession();\n *\n * // Create a new agent explicitly\n * const agentId = await createAgent();\n *\n * // Resume default conversation on an agent\n * const session = resumeSession(agentId);\n *\n * // Resume specific conversation\n * const session = resumeSession('conv-xxx');\n *\n * // Create new conversation on specific agent\n * const session = createSession(agentId);\n *\n * // One-shot prompt (uses default agent)\n * const result = await prompt('Hello');\n * const result = await prompt('Hello', agentId); // specific agent\n * ```\n */\n\nimport { Session } from \"./session.js\";\nimport { LettaCodeClient } from \"./client.js\";\nimport type {\n CreateSessionOptions,\n CreateAgentOptions,\n LettaCodeSession,\n SDKInitMessage,\n SDKResultMessage,\n SendMessage,\n} from \"./types.js\";\nimport { validateCreateSessionOptions, validateCreateAgentOptions } from \"./validation.js\";\n\n// Re-export types\nexport type {\n CreateSessionOptions,\n CreateAgentOptions,\n LettaCodeBackend,\n LettaCodeEnvironment,\n LettaCodeLocalClientOptions,\n LettaCodeLocalAppServerOptions,\n LettaCodeRemoteClientOptions,\n LettaCodeCloudClientOptions,\n LettaCodeClientOptions,\n LettaCodeClientSessionOptions,\n LettaCodeSession,\n LettaCodeSocketLike,\n LettaCodeSocketConstructor,\n SDKMessage,\n SDKInitMessage,\n SDKAssistantMessage,\n SDKToolCallMessage,\n SDKToolResultMessage,\n SDKReasoningMessage,\n SDKResultMessage,\n SDKErrorCode,\n SDKStreamEventMessage,\n SDKStreamEventPayload,\n SDKStreamEventDeltaPayload,\n SDKStreamEventMessagePayload,\n SDKUnknownStreamEventPayload,\n SDKErrorMessage,\n SDKRetryMessage,\n SDKQueueItem,\n SDKQueueUpdateMessage,\n SDKLoopStatusMessage,\n SDKProtocolMessage,\n SDKProtocolCommand,\n SendCommandOptions,\n RunTurnOptions,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n SkillSource,\n DreamingOptions,\n DreamingTrigger,\n DreamingBehavior,\n EffectiveDreamingSettings,\n PermissionMode,\n ReasoningEffort,\n CanUseToolCallback,\n CanUseToolResponse,\n CanUseToolResponseAllow,\n CanUseToolResponseDeny,\n // Multimodal content types\n TextContent,\n ImageContent,\n MessageContentItem,\n SendMessage,\n // List messages API\n ListMessagesOptions,\n ListMessagesResult,\n ListModelsResult,\n LettaCodeModelEntry,\n UpdateModelOptions,\n UpdateModelResult,\n // Bootstrap API\n BootstrapStateOptions,\n BootstrapStateResult,\n // Tool types\n AgentTool,\n AgentToolResult,\n AgentToolResultContent,\n AgentToolUpdateCallback,\n AnyAgentTool,\n} from \"./types.js\";\n\nexport { Session } from \"./session.js\";\nexport { LettaCodeClient } from \"./client.js\";\n\nexport { extractStreamTextDelta } from \"./stream-events.js\";\n\n// Tool helpers\nexport {\n jsonResult,\n readStringParam,\n readNumberParam,\n readBooleanParam,\n readStringArrayParam,\n} from \"./tool-helpers.js\";\n\n/**\n * Create a new agent with a default conversation.\n * Returns the agentId which can be used with resumeSession or createSession.\n *\n * @example\n * ```typescript\n * // Create agent with default settings.\n * const agentId = await createAgent();\n *\n * // Create agent with custom memory\n * const agentId = await createAgent({\n * memory: ['persona', 'project'],\n * persona: 'You are a helpful coding assistant',\n * model: 'claude-sonnet-4',\n * tags: ['project:docs']\n * });\n *\n * // Then resume the default conversation:\n * const session = resumeSession(agentId);\n * ```\n */\nexport async function createAgent(options: CreateAgentOptions = {}): Promise<string> {\n validateCreateAgentOptions(options);\n return new LettaCodeClient().createAgent(options);\n}\n\n/**\n * Create a new conversation (session).\n *\n * - Without agentId: uses default/LRU agent with new conversation (like `letta`)\n * - With agentId: creates new conversation on specified agent\n *\n * @example\n * ```typescript\n * // New conversation on default agent (like `letta`)\n * await using session = createSession();\n *\n * // New conversation on specific agent\n * await using session = createSession(agentId);\n * ```\n */\nexport function createSession(\n agentId?: string,\n options: CreateSessionOptions = {},\n): LettaCodeSession {\n validateCreateSessionOptions(options);\n if (agentId) {\n return new LettaCodeClient().createSession(agentId, options);\n }\n // The app-server runtime_start protocol requires an explicit agent id. Keep\n // the historical default/LRU-agent helper on the legacy stdio transport.\n return new LettaCodeClient({ backend: \"local\", transport: \"stdio\" }).createSession(options);\n}\n\n/**\n * Resume an existing session.\n *\n * - Pass an agent ID (agent-xxx) to resume the default conversation\n * - Pass a conversation ID (conv-xxx) to resume a specific conversation\n *\n * The default conversation always exists after createAgent, so you can:\n * `createAgent()` → `resumeSession(agentId)` without needing createSession first.\n *\n * @example\n * ```typescript\n * // Resume default conversation\n * await using session = resumeSession(agentId);\n *\n * // Resume specific conversation\n * await using session = resumeSession('conv-xxx');\n * ```\n */\nexport function resumeSession(\n id: string,\n options: CreateSessionOptions = {},\n): LettaCodeSession {\n validateCreateSessionOptions(options);\n return new LettaCodeClient().resumeSession(id, options);\n}\n\n/**\n * One-shot prompt convenience function.\n *\n * - Without agentId: uses default agent (like `letta -p`), new conversation\n * - With agentId: uses specific agent, new conversation\n * - Uses a short-lived session and returns the final turn result.\n *\n * @example\n * ```typescript\n * const result = await prompt('What is 2+2?'); // default agent\n * const result = await prompt('What is the capital of France?', agentId); // specific agent\n * ```\n */\ntype TurnSession = LettaCodeSession & {\n runTurn(message: SendMessage): Promise<SDKResultMessage>;\n};\n\ntype InitializableSession = LettaCodeSession & {\n initialize(): Promise<SDKInitMessage>;\n};\n\nexport async function prompt(\n message: string,\n agentId?: string\n): Promise<SDKResultMessage> {\n // Use default agent behavior (like letta -p) when no agentId specified\n const session = agentId\n ? createSession(agentId)\n : createSession();\n\n try {\n return await (session as TurnSession).runTurn(message);\n } finally {\n session.close();\n }\n}\n\n// ═══════════════════════════════════════════════════════════════\n// SESSIONLESS APIs\n// ═══════════════════════════════════════════════════════════════\n\nimport type { ListMessagesOptions, ListMessagesResult } from \"./types.js\";\n\n/**\n * Fetch conversation messages without requiring a pre-existing session.\n *\n * Creates a transient CLI subprocess, fetches the requested message page, and\n * closes the subprocess. Useful for prefetching conversation histories before\n * opening a full session (e.g. desktop sidebar warm-up).\n *\n * Routing follows the same agent/conversation semantics as session history:\n * - Pass a conv-xxx conversationId to read a specific conversation.\n * - Omit conversationId to read the agent's default conversation.\n *\n * @param agentId - Agent ID to fetch messages for.\n * @param options - Pagination / filtering options (same as ListMessagesOptions).\n *\n * @example\n * ```typescript\n * // Prefetch default conversation\n * const { messages } = await listMessagesDirect(agentId);\n *\n * // Prefetch a specific conversation\n * const { messages, hasMore, nextBefore } = await listMessagesDirect(agentId, {\n * conversationId: 'conv-abc',\n * limit: 20,\n * order: 'desc',\n * });\n * ```\n */\nexport async function listMessagesDirect(\n agentId: string,\n options: ListMessagesOptions = {},\n): Promise<ListMessagesResult> {\n // resumeSession uses --default which maps to the agent's default conversation.\n // The session is transient: we only need it long enough to list messages.\n const session = new LettaCodeClient().resumeSession(agentId, {\n permissionMode: \"bypassPermissions\",\n });\n await (session as InitializableSession).initialize();\n try {\n return await session.listMessages(options);\n } finally {\n session.close();\n }\n}\n\n// ═══════════════════════════════════════════════════════════════\n// IMAGE HELPERS\n// ═══════════════════════════════════════════════════════════════\n\nimport { readFileSync } from \"node:fs\";\nimport type { ImageContent } from \"./types.js\";\n\n/**\n * Create image content from a file path.\n * \n * @example\n * ```typescript\n * await session.send([\n * { type: \"text\", text: \"What's in this image?\" },\n * imageFromFile(\"./screenshot.png\")\n * ]);\n * ```\n */\nexport function imageFromFile(filePath: string): ImageContent {\n const data = readFileSync(filePath).toString(\"base64\");\n const ext = filePath.toLowerCase();\n const media_type: ImageContent[\"source\"][\"media_type\"] = \n ext.endsWith(\".png\") ? \"image/png\"\n : ext.endsWith(\".gif\") ? \"image/gif\"\n : ext.endsWith(\".webp\") ? \"image/webp\"\n : \"image/jpeg\";\n \n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n/**\n * Create image content from base64 data.\n * \n * @example\n * ```typescript\n * const base64 = fs.readFileSync(\"image.png\").toString(\"base64\");\n * await session.send([\n * { type: \"text\", text: \"Describe this\" },\n * imageFromBase64(base64, \"image/png\")\n * ]);\n * ```\n */\nexport function imageFromBase64(\n data: string,\n media_type: ImageContent[\"source\"][\"media_type\"] = \"image/png\"\n): ImageContent {\n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n/**\n * Create image content from a URL.\n * Fetches the image and converts to base64.\n * \n * @example\n * ```typescript\n * const img = await imageFromURL(\"https://example.com/image.png\");\n * await session.send([\n * { type: \"text\", text: \"What's this?\" },\n * img\n * ]);\n * ```\n */\nexport async function imageFromURL(url: string): Promise<ImageContent> {\n const response = await fetch(url);\n const buffer = await response.arrayBuffer();\n const data = Buffer.from(buffer).toString(\"base64\");\n \n // Detect media type from content-type header or URL\n const contentType = response.headers.get(\"content-type\");\n let media_type: ImageContent[\"source\"][\"media_type\"] = \"image/png\";\n \n if (contentType?.includes(\"jpeg\") || contentType?.includes(\"jpg\") || url.match(/\\.jpe?g$/i)) {\n media_type = \"image/jpeg\";\n } else if (contentType?.includes(\"gif\") || url.endsWith(\".gif\")) {\n media_type = \"image/gif\";\n } else if (contentType?.includes(\"webp\") || url.endsWith(\".webp\")) {\n media_type = \"image/webp\";\n }\n \n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n"
|
|
19
|
+
"/**\n * Letta Agent SDK\n *\n * Programmatic control of Letta Code CLI with persistent agent memory.\n *\n * @example\n * ```typescript\n * import { LettaAgentClient, createAgent, createSession, resumeSession, prompt } from '@letta-ai/letta-agent-sdk';\n *\n * const client = new LettaAgentClient({ backend: 'local' });\n * const agentId = await client.createAgent();\n * const clientSession = client.resumeSession(agentId);\n *\n * // Start session with default agent + new conversation (like `letta`)\n * const session = createSession();\n *\n * // Create a new agent explicitly\n * const agentId = await createAgent();\n *\n * // Resume default conversation on an agent\n * const session = resumeSession(agentId);\n *\n * // Resume specific conversation\n * const session = resumeSession('conv-xxx');\n *\n * // Create new conversation on specific agent\n * const session = createSession(agentId);\n *\n * // One-shot prompt (uses default agent)\n * const result = await prompt('Hello');\n * const result = await prompt('Hello', agentId); // specific agent\n * ```\n */\n\nimport { Session } from \"./session.js\";\nimport { LettaAgentClient } from \"./client.js\";\nimport type {\n CreateSessionOptions,\n CreateAgentOptions,\n LettaCodeSession,\n SDKInitMessage,\n SDKResultMessage,\n SendMessage,\n} from \"./types.js\";\nimport { validateCreateSessionOptions, validateCreateAgentOptions } from \"./validation.js\";\n\n// Re-export types\nexport type {\n CreateSessionOptions,\n CreateAgentOptions,\n LettaCodeBackend,\n LettaCodeEnvironment,\n LettaCodeLocalClientOptions,\n LettaCodeLocalAppServerOptions,\n LettaCodeRemoteClientOptions,\n LettaCodeCloudClientOptions,\n LettaCodeClientOptions,\n LettaCodeClientSessionOptions,\n LettaCodeSession,\n LettaCodeSocketLike,\n LettaCodeSocketConstructor,\n SDKMessage,\n SDKInitMessage,\n SDKAssistantMessage,\n SDKToolCallMessage,\n SDKToolResultMessage,\n SDKReasoningMessage,\n SDKResultMessage,\n SDKErrorCode,\n SDKStreamEventMessage,\n SDKStreamEventPayload,\n SDKStreamEventDeltaPayload,\n SDKStreamEventMessagePayload,\n SDKUnknownStreamEventPayload,\n SDKErrorMessage,\n SDKRetryMessage,\n SDKQueueItem,\n SDKQueueUpdateMessage,\n SDKLoopStatusMessage,\n SDKProtocolMessage,\n SDKProtocolCommand,\n SendCommandOptions,\n RunTurnOptions,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n SkillSource,\n DreamingOptions,\n DreamingTrigger,\n DreamingBehavior,\n EffectiveDreamingSettings,\n PermissionMode,\n ReasoningEffort,\n CanUseToolCallback,\n CanUseToolResponse,\n CanUseToolResponseAllow,\n CanUseToolResponseDeny,\n // Multimodal content types\n TextContent,\n ImageContent,\n MessageContentItem,\n SendMessage,\n // List messages API\n ListMessagesOptions,\n ListMessagesResult,\n ListModelsResult,\n LettaCodeModelEntry,\n UpdateModelOptions,\n UpdateModelResult,\n // Bootstrap API\n BootstrapStateOptions,\n BootstrapStateResult,\n // Tool types\n AgentTool,\n AgentToolResult,\n AgentToolResultContent,\n AgentToolUpdateCallback,\n AnyAgentTool,\n} from \"./types.js\";\n\nexport { Session } from \"./session.js\";\nexport { LettaAgentClient } from \"./client.js\";\n\nexport { extractStreamTextDelta } from \"./stream-events.js\";\n\n// Tool helpers\nexport {\n jsonResult,\n readStringParam,\n readNumberParam,\n readBooleanParam,\n readStringArrayParam,\n} from \"./tool-helpers.js\";\n\n/**\n * Create a new agent with a default conversation.\n * Returns the agentId which can be used with resumeSession or createSession.\n *\n * @example\n * ```typescript\n * // Create agent with default settings.\n * const agentId = await createAgent();\n *\n * // Create agent with custom memory\n * const agentId = await createAgent({\n * memory: ['persona', 'project'],\n * persona: 'You are a helpful coding assistant',\n * model: 'claude-sonnet-4',\n * tags: ['project:docs']\n * });\n *\n * // Then resume the default conversation:\n * const session = resumeSession(agentId);\n * ```\n */\nexport async function createAgent(options: CreateAgentOptions = {}): Promise<string> {\n validateCreateAgentOptions(options);\n return new LettaAgentClient().createAgent(options);\n}\n\n/**\n * Create a new conversation (session).\n *\n * - Without agentId: uses default/LRU agent with new conversation (like `letta`)\n * - With agentId: creates new conversation on specified agent\n *\n * @example\n * ```typescript\n * // New conversation on default agent (like `letta`)\n * await using session = createSession();\n *\n * // New conversation on specific agent\n * await using session = createSession(agentId);\n * ```\n */\nexport function createSession(\n agentId?: string,\n options: CreateSessionOptions = {},\n): LettaCodeSession {\n validateCreateSessionOptions(options);\n if (agentId) {\n return new LettaAgentClient().createSession(agentId, options);\n }\n // The app-server runtime_start protocol requires an explicit agent id. Keep\n // the historical default/LRU-agent helper on the legacy stdio transport.\n return new LettaAgentClient({ backend: \"local\", transport: \"stdio\" }).createSession(options);\n}\n\n/**\n * Resume an existing session.\n *\n * - Pass an agent ID (agent-xxx) to resume the default conversation\n * - Pass a conversation ID (conv-xxx) to resume a specific conversation\n *\n * The default conversation always exists after createAgent, so you can:\n * `createAgent()` → `resumeSession(agentId)` without needing createSession first.\n *\n * @example\n * ```typescript\n * // Resume default conversation\n * await using session = resumeSession(agentId);\n *\n * // Resume specific conversation\n * await using session = resumeSession('conv-xxx');\n * ```\n */\nexport function resumeSession(\n id: string,\n options: CreateSessionOptions = {},\n): LettaCodeSession {\n validateCreateSessionOptions(options);\n return new LettaAgentClient().resumeSession(id, options);\n}\n\n/**\n * One-shot prompt convenience function.\n *\n * - Without agentId: uses default agent (like `letta -p`), new conversation\n * - With agentId: uses specific agent, new conversation\n * - Uses a short-lived session and returns the final turn result.\n *\n * @example\n * ```typescript\n * const result = await prompt('What is 2+2?'); // default agent\n * const result = await prompt('What is the capital of France?', agentId); // specific agent\n * ```\n */\ntype TurnSession = LettaCodeSession & {\n runTurn(message: SendMessage): Promise<SDKResultMessage>;\n};\n\ntype InitializableSession = LettaCodeSession & {\n initialize(): Promise<SDKInitMessage>;\n};\n\nexport async function prompt(\n message: string,\n agentId?: string\n): Promise<SDKResultMessage> {\n // Use default agent behavior (like letta -p) when no agentId specified\n const session = agentId\n ? createSession(agentId)\n : createSession();\n\n try {\n return await (session as TurnSession).runTurn(message);\n } finally {\n session.close();\n }\n}\n\n// ═══════════════════════════════════════════════════════════════\n// SESSIONLESS APIs\n// ═══════════════════════════════════════════════════════════════\n\nimport type { ListMessagesOptions, ListMessagesResult } from \"./types.js\";\n\n/**\n * Fetch conversation messages without requiring a pre-existing session.\n *\n * Creates a transient CLI subprocess, fetches the requested message page, and\n * closes the subprocess. Useful for prefetching conversation histories before\n * opening a full session (e.g. desktop sidebar warm-up).\n *\n * Routing follows the same agent/conversation semantics as session history:\n * - Pass a conv-xxx conversationId to read a specific conversation.\n * - Omit conversationId to read the agent's default conversation.\n *\n * @param agentId - Agent ID to fetch messages for.\n * @param options - Pagination / filtering options (same as ListMessagesOptions).\n *\n * @example\n * ```typescript\n * // Prefetch default conversation\n * const { messages } = await listMessagesDirect(agentId);\n *\n * // Prefetch a specific conversation\n * const { messages, hasMore, nextBefore } = await listMessagesDirect(agentId, {\n * conversationId: 'conv-abc',\n * limit: 20,\n * order: 'desc',\n * });\n * ```\n */\nexport async function listMessagesDirect(\n agentId: string,\n options: ListMessagesOptions = {},\n): Promise<ListMessagesResult> {\n // resumeSession uses --default which maps to the agent's default conversation.\n // The session is transient: we only need it long enough to list messages.\n const session = new LettaAgentClient().resumeSession(agentId, {\n permissionMode: \"bypassPermissions\",\n });\n await (session as InitializableSession).initialize();\n try {\n return await session.listMessages(options);\n } finally {\n session.close();\n }\n}\n\n// ═══════════════════════════════════════════════════════════════\n// IMAGE HELPERS\n// ═══════════════════════════════════════════════════════════════\n\nimport { readFileSync } from \"node:fs\";\nimport type { ImageContent } from \"./types.js\";\n\n/**\n * Create image content from a file path.\n * \n * @example\n * ```typescript\n * await session.send([\n * { type: \"text\", text: \"What's in this image?\" },\n * imageFromFile(\"./screenshot.png\")\n * ]);\n * ```\n */\nexport function imageFromFile(filePath: string): ImageContent {\n const data = readFileSync(filePath).toString(\"base64\");\n const ext = filePath.toLowerCase();\n const media_type: ImageContent[\"source\"][\"media_type\"] = \n ext.endsWith(\".png\") ? \"image/png\"\n : ext.endsWith(\".gif\") ? \"image/gif\"\n : ext.endsWith(\".webp\") ? \"image/webp\"\n : \"image/jpeg\";\n \n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n/**\n * Create image content from base64 data.\n * \n * @example\n * ```typescript\n * const base64 = fs.readFileSync(\"image.png\").toString(\"base64\");\n * await session.send([\n * { type: \"text\", text: \"Describe this\" },\n * imageFromBase64(base64, \"image/png\")\n * ]);\n * ```\n */\nexport function imageFromBase64(\n data: string,\n media_type: ImageContent[\"source\"][\"media_type\"] = \"image/png\"\n): ImageContent {\n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n/**\n * Create image content from a URL.\n * Fetches the image and converts to base64.\n * \n * @example\n * ```typescript\n * const img = await imageFromURL(\"https://example.com/image.png\");\n * await session.send([\n * { type: \"text\", text: \"What's this?\" },\n * img\n * ]);\n * ```\n */\nexport async function imageFromURL(url: string): Promise<ImageContent> {\n const response = await fetch(url);\n const buffer = await response.arrayBuffer();\n const data = Buffer.from(buffer).toString(\"base64\");\n \n // Detect media type from content-type header or URL\n const contentType = response.headers.get(\"content-type\");\n let media_type: ImageContent[\"source\"][\"media_type\"] = \"image/png\";\n \n if (contentType?.includes(\"jpeg\") || contentType?.includes(\"jpg\") || url.match(/\\.jpe?g$/i)) {\n media_type = \"image/jpeg\";\n } else if (contentType?.includes(\"gif\") || url.endsWith(\".gif\")) {\n media_type = \"image/gif\";\n } else if (contentType?.includes(\"webp\") || url.endsWith(\".webp\")) {\n media_type = \"image/webp\";\n }\n \n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n"
|
|
20
20
|
],
|
|
21
|
-
"mappings": "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",
|
|
22
|
-
"debugId": "
|
|
21
|
+
"mappings": "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",
|
|
22
|
+
"debugId": "380F2F63E2AF857764756E2164756E21",
|
|
23
23
|
"names": []
|
|
24
24
|
}
|