@jrkropp/codex-js 0.1.1 → 0.1.3
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/CHANGELOG.md +8 -0
- package/dist/ClientNotification-B6-FhXQf.d.ts +5 -0
- package/dist/{DynamicToolCallResponse-D2OVpa4p.d.ts → DynamicToolCallResponse-82DFjES2.d.ts} +1 -1
- package/dist/DynamicToolSpec-CfnhqAYK.d.ts +29 -0
- package/dist/PermissionsRequestApprovalResponse-DxzPPDRb.d.ts +55 -0
- package/dist/ProviderStatusBanner-BlP6lzwE.d.ts +441 -0
- package/dist/ServerRequest-B5cKVJjr.d.ts +2181 -0
- package/dist/{session-BO6EZNK7.d.ts → ThreadResumeResponse-DvmE1juU.d.ts} +3 -290
- package/dist/ToolRequestUserInputQuestion-CeZa5X1J.d.ts +23 -0
- package/dist/{ToolRequestUserInputResponse-Bxjlpgho.d.ts → ToolRequestUserInputResponse-zcPLwbiK.d.ts} +1 -1
- package/dist/TurnSteerResponse-0kBCfplh.d.ts +209 -0
- package/dist/WebSearchToolConfig-D3ep0625.d.ts +18 -0
- package/dist/chat-runtime-B6azJyKo.d.ts +381 -0
- package/dist/chunk-2DZRMCI2.js +1258 -0
- package/dist/chunk-2DZRMCI2.js.map +1 -0
- package/dist/chunk-4DPLJPB5.js +396 -0
- package/dist/chunk-4DPLJPB5.js.map +1 -0
- package/dist/chunk-5JMJ6OI5.js +3 -0
- package/dist/chunk-5JMJ6OI5.js.map +1 -0
- package/dist/chunk-6ZMJ34KE.js +1153 -0
- package/dist/chunk-6ZMJ34KE.js.map +1 -0
- package/dist/chunk-CGBS37IU.js +128 -0
- package/dist/chunk-CGBS37IU.js.map +1 -0
- package/dist/chunk-DCMKA2A6.js +18 -0
- package/dist/chunk-DCMKA2A6.js.map +1 -0
- package/dist/chunk-DYLHN3HG.js +937 -0
- package/dist/chunk-DYLHN3HG.js.map +1 -0
- package/dist/chunk-ILXA6HLX.js +1973 -0
- package/dist/chunk-ILXA6HLX.js.map +1 -0
- package/dist/{chunk-TZBLUZ2X.js → chunk-LWQNX4LI.js} +7811 -12696
- package/dist/chunk-LWQNX4LI.js.map +1 -0
- package/dist/{chunk-FFASNDXU.js → chunk-NCI4MAWZ.js} +317 -1967
- package/dist/chunk-NCI4MAWZ.js.map +1 -0
- package/dist/chunk-O44XP7LH.js +214 -0
- package/dist/chunk-O44XP7LH.js.map +1 -0
- package/dist/chunk-PST3ZWX2.js +555 -0
- package/dist/chunk-PST3ZWX2.js.map +1 -0
- package/dist/chunk-SYPHCDRD.js +1133 -0
- package/dist/chunk-SYPHCDRD.js.map +1 -0
- package/dist/chunk-V4BMZWBM.js +2401 -0
- package/dist/chunk-V4BMZWBM.js.map +1 -0
- package/dist/chunk-YHVCFD2D.js +117 -0
- package/dist/chunk-YHVCFD2D.js.map +1 -0
- package/dist/chunk-Z63UPBS3.js +152 -0
- package/dist/chunk-Z63UPBS3.js.map +1 -0
- package/dist/client/index.d.ts +16 -111
- package/dist/client/index.js +13 -1
- package/dist/codex-rs/app-server/index.d.ts +161 -0
- package/dist/codex-rs/app-server/index.js +13 -0
- package/dist/codex-rs/app-server/index.js.map +1 -0
- package/dist/codex-rs/app-server-protocol/index.d.ts +1722 -0
- package/dist/codex-rs/app-server-protocol/index.js +6 -0
- package/dist/codex-rs/app-server-protocol/index.js.map +1 -0
- package/dist/codex-rs/app-server-protocol/protocol.d.ts +19 -0
- package/dist/codex-rs/app-server-protocol/protocol.js +4 -0
- package/dist/codex-rs/app-server-protocol/protocol.js.map +1 -0
- package/dist/codex-rs/codex-api/index.d.ts +104 -0
- package/dist/codex-rs/codex-api/index.js +11 -0
- package/dist/codex-rs/codex-api/index.js.map +1 -0
- package/dist/codex-rs/config/index.d.ts +88 -0
- package/dist/codex-rs/config/index.js +4 -0
- package/dist/codex-rs/config/index.js.map +1 -0
- package/dist/codex-rs/core/config/index.d.ts +61 -0
- package/dist/codex-rs/core/config/index.js +5 -0
- package/dist/codex-rs/core/config/index.js.map +1 -0
- package/dist/codex-rs/core/index.d.ts +1393 -0
- package/dist/codex-rs/core/index.js +11 -0
- package/dist/codex-rs/core/index.js.map +1 -0
- package/dist/codex-rs/model-provider/index.d.ts +2 -0
- package/dist/codex-rs/model-provider/index.js +4 -0
- package/dist/codex-rs/model-provider/index.js.map +1 -0
- package/dist/codex-rs/models-manager/index.d.ts +2 -0
- package/dist/codex-rs/models-manager/index.js +4 -0
- package/dist/codex-rs/models-manager/index.js.map +1 -0
- package/dist/codex-rs/parity.d.ts +26 -0
- package/dist/codex-rs/parity.js +3 -0
- package/dist/codex-rs/parity.js.map +1 -0
- package/dist/codex-rs/thread-store/index.d.ts +5 -0
- package/dist/codex-rs/thread-store/index.js +4 -0
- package/dist/codex-rs/thread-store/index.js.map +1 -0
- package/dist/codex-rs/unsupported.d.ts +15 -0
- package/dist/codex-rs/unsupported.js +22 -0
- package/dist/codex-rs/unsupported.js.map +1 -0
- package/dist/codex-rs/utils/output-truncation.d.ts +21 -0
- package/dist/codex-rs/utils/output-truncation.js +4 -0
- package/dist/codex-rs/utils/output-truncation.js.map +1 -0
- package/dist/codex-rs/utils/string.d.ts +7 -0
- package/dist/codex-rs/utils/string.js +3 -0
- package/dist/codex-rs/utils/string.js.map +1 -0
- package/dist/common-CTyph5x8.d.ts +40 -0
- package/dist/event-mapping-CbISdQ1D.d.ts +43 -0
- package/dist/history-CfM-4V7b.d.ts +1654 -0
- package/dist/index-77U_Oc-a.d.ts +63 -0
- package/dist/index-CoDZosq0.d.ts +261 -0
- package/dist/index.d.ts +18 -8
- package/dist/index.js +16 -2
- package/dist/lib-nXlaKiS-.d.ts +48 -0
- package/dist/live-thread-BMvlflzM.d.ts +30 -0
- package/dist/merge-B_AWVmnI.d.ts +24 -0
- package/dist/mod-DYVLSWO4.d.ts +91 -0
- package/dist/plan-mode-Cv6KWb_S.d.ts +14 -0
- package/dist/proposed-plan-DpN1ma0Y.d.ts +53 -0
- package/dist/protocol-mpBcYHrm.d.ts +1655 -0
- package/dist/react/index.d.ts +20 -53
- package/dist/react/index.js +16 -2
- package/dist/{remote-DMPfepa9.d.ts → remote-ClZbq9KN.d.ts} +3 -1
- package/dist/rendered-thread-AOxw3V5b.d.ts +29 -0
- package/dist/responses_websocket-BhxSgCzK.d.ts +183 -0
- package/dist/runtime-Cm6ml53h.d.ts +528 -0
- package/dist/server/index.d.ts +29 -1999
- package/dist/server/index.js +13 -1
- package/dist/session-BRYzi8OT.d.ts +46 -0
- package/dist/shadcn/index.d.ts +1 -1
- package/dist/{sidebar-DT2XoitN.d.ts → sidebar-DMMij22z.d.ts} +1 -1
- package/dist/spec_plan_types-CmsJ-Tfn.d.ts +260 -0
- package/dist/{store-H2cQxdpe.d.ts → store-AGRxhgQ3.d.ts} +2 -1
- package/dist/t3code/apps/web/components/chat.d.ts +508 -0
- package/dist/t3code/apps/web/components/chat.js +12 -0
- package/dist/t3code/apps/web/components/chat.js.map +1 -0
- package/dist/t3code/apps/web/index.d.ts +12 -0
- package/dist/t3code/apps/web/index.js +13 -0
- package/dist/t3code/apps/web/index.js.map +1 -0
- package/dist/testing/index.d.ts +9 -91
- package/dist/testing/index.js +13 -1
- package/dist/thread-history-builder-zW0zeqcS.d.ts +58 -0
- package/dist/thread_event_store-C0zYzukG.d.ts +77 -0
- package/dist/types-BTeabLYr.d.ts +126 -0
- package/package.json +152 -88
- package/dist/chat-runtime-CMli5dzJ.d.ts +0 -748
- package/dist/chunk-FFASNDXU.js.map +0 -1
- package/dist/chunk-TZBLUZ2X.js.map +0 -1
- package/dist/thread_event_store-BIS0qzhi.d.ts +0 -3843
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/upstream/codex-rs/core/src/event-mapping.ts","../src/upstream/codex-rs/core/src/thread-history-builder.ts","../src/upstream/codex-rs/core/src/rendered-thread.ts"],"names":["turn"],"mappings":"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","file":"chunk-DYLHN3HG.js","sourcesContent":["import type {\n\tContentItem,\n\tResponseImageGenerationCallItem,\n\tResponseItem,\n\tResponseWebSearchCallItem,\n} from \"./models\";\nimport type {\n\tAgentMessageTurnItem,\n\tHookPromptFragment,\n\tHookPromptTurnItem,\n\tReasoningTurnItem,\n\tTurnItem,\n\tUserMessageTurnItem,\n\tWebSearchAction,\n\tWebSearchTurnItem,\n} from \"./items\";\n\nconst CONTEXTUAL_DEVELOPER_PREFIXES = [\n\t\"<permissions instructions>\",\n\t\"<developer_instructions>\",\n\t\"<model_switch>\",\n\t\"<collaboration_mode>\",\n\t\"<realtime_conversation>\",\n\t\"<personality_spec>\",\n\t\"<hook_additional_context>\",\n];\n\nexport function isContextualUserMessageContent(\n\tmessage: readonly ContentItem[],\n): boolean {\n\treturn message.some(isContextualUserFragment);\n}\n\nexport function isContextualDevMessageContent(\n\tmessage: readonly ContentItem[],\n): boolean {\n\treturn message.some(isContextualDevFragment);\n}\n\nexport function hasNonContextualDevMessageContent(\n\tmessage: readonly ContentItem[],\n): boolean {\n\treturn message.some((contentItem) => !isContextualDevFragment(contentItem));\n}\n\nexport function parseUserMessage(\n\tid: string | null | undefined,\n\tmessage: readonly ContentItem[],\n): UserMessageTurnItem | null {\n\tif (isContextualUserMessageContent(message)) {\n\t\treturn null;\n\t}\n\n\tconst content: UserMessageTurnItem[\"content\"] = [];\n\n\tfor (const [index, contentItem] of message.entries()) {\n\t\tif (contentItem.type === \"input_text\") {\n\t\t\tif (\n\t\t\t\t((isLocalImageOpenTagText(contentItem.text) ||\n\t\t\t\t\tisImageOpenTagText(contentItem.text)) &&\n\t\t\t\t\tmessage[index + 1]?.type === \"input_image\") ||\n\t\t\t\t(index > 0 &&\n\t\t\t\t\t(isLocalImageCloseTagText(contentItem.text) ||\n\t\t\t\t\t\tisImageCloseTagText(contentItem.text)) &&\n\t\t\t\t\tmessage[index - 1]?.type === \"input_image\")\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontent.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: contentItem.text,\n\t\t\t\ttext_elements: [],\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (contentItem.type === \"input_image\") {\n\t\t\tcontent.push({\n\t\t\t\ttype: \"image\",\n\t\t\t\timage_url: contentItem.image_url,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn {\n\t\ttype: \"UserMessage\",\n\t\tid: id ?? \"\",\n\t\tcontent,\n\t};\n}\n\nexport function parseAgentMessage(\n\tid: string | null | undefined,\n\tmessage: readonly ContentItem[],\n\tphase?: string | null,\n): AgentMessageTurnItem {\n\tconst content: AgentMessageTurnItem[\"content\"] = [];\n\n\tfor (const contentItem of message) {\n\t\tif (contentItem.type === \"input_text\" || contentItem.type === \"output_text\") {\n\t\t\tcontent.push({ type: \"Text\", text: contentItem.text });\n\t\t}\n\t}\n\n\treturn {\n\t\ttype: \"AgentMessage\",\n\t\tid: id ?? \"\",\n\t\tcontent,\n\t\tphase: phase ?? null,\n\t\tmemory_citation: null,\n\t};\n}\n\nexport function parseVisibleHookPromptMessage(\n\tid: string | null | undefined,\n\tmessage: readonly ContentItem[],\n): HookPromptTurnItem | null {\n\tconst fragments: HookPromptFragment[] = [];\n\n\tfor (const contentItem of message) {\n\t\tif (contentItem.type !== \"input_text\") {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst fragment = parseHookPromptFragment(contentItem.text);\n\t\tif (fragment) {\n\t\t\tfragments.push(fragment);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isStandardContextualUserText(contentItem.text)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tif (fragments.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\ttype: \"HookPrompt\",\n\t\tid: id ?? \"\",\n\t\tfragments,\n\t};\n}\n\nexport function parseTurnItem(item: ResponseItem): TurnItem | null {\n\tswitch (item.type) {\n\t\tcase \"message\":\n\t\t\tif (item.role === \"user\") {\n\t\t\t\treturn (\n\t\t\t\t\tparseVisibleHookPromptMessage(item.id, item.content) ??\n\t\t\t\t\tparseUserMessage(item.id, item.content)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (item.role === \"assistant\" || !item.role) {\n\t\t\t\treturn parseAgentMessage(item.id, item.content, item.phase);\n\t\t\t}\n\n\t\t\treturn null;\n\t\tcase \"reasoning\":\n\t\t\treturn parseReasoningItem(item);\n\t\tcase \"web_search_call\":\n\t\t\treturn parseWebSearchCall(item);\n\t\tcase \"image_generation_call\":\n\t\t\treturn parseImageGenerationCall(item);\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nfunction parseReasoningItem(\n\titem: Extract<ResponseItem, { type: \"reasoning\" }>,\n): ReasoningTurnItem {\n\treturn {\n\t\ttype: \"Reasoning\",\n\t\tid: item.id ?? \"\",\n\t\tsummary_text: item.summary.flatMap((entry) => {\n\t\t\tif (typeof entry.text === \"string\") {\n\t\t\t\treturn [entry.text];\n\t\t\t}\n\t\t\treturn [];\n\t\t}),\n\t\traw_content: (item.content ?? []).flatMap((entry) => {\n\t\t\tif (\n\t\t\t\t(entry.type === \"reasoning_text\" || entry.type === \"text\") &&\n\t\t\t\ttypeof entry.text === \"string\"\n\t\t\t) {\n\t\t\t\treturn [entry.text];\n\t\t\t}\n\t\t\treturn [];\n\t\t}),\n\t};\n}\n\nfunction parseWebSearchCall(item: ResponseWebSearchCallItem): WebSearchTurnItem {\n\tconst action = webSearchActionFromRecord(item.action);\n\treturn {\n\t\ttype: \"WebSearch\",\n\t\tid: item.id ?? \"\",\n\t\tquery: webSearchActionDetail(action),\n\t\taction,\n\t};\n}\n\nfunction parseImageGenerationCall(\n\titem: ResponseImageGenerationCallItem,\n): TurnItem {\n\treturn {\n\t\ttype: \"ImageGeneration\",\n\t\tid: item.id,\n\t\tstatus: item.status,\n\t\trevised_prompt: item.revised_prompt ?? undefined,\n\t\tresult: item.result,\n\t\tsaved_path: item.saved_path,\n\t};\n}\n\nfunction webSearchActionFromRecord(\n\taction: Record<string, unknown> | null | undefined,\n): WebSearchAction {\n\tif (!action) {\n\t\treturn { type: \"other\" };\n\t}\n\n\tif (action.type === \"search\") {\n\t\treturn {\n\t\t\ttype: \"search\",\n\t\t\t...(typeof action.query === \"string\" ? { query: action.query } : {}),\n\t\t\t...(Array.isArray(action.queries)\n\t\t\t\t? { queries: action.queries.filter(isString) }\n\t\t\t\t: {}),\n\t\t};\n\t}\n\n\tif (action.type === \"open_page\") {\n\t\treturn {\n\t\t\ttype: \"open_page\",\n\t\t\t...(typeof action.url === \"string\" ? { url: action.url } : {}),\n\t\t};\n\t}\n\n\tif (action.type === \"find_in_page\") {\n\t\treturn {\n\t\t\ttype: \"find_in_page\",\n\t\t\t...(typeof action.url === \"string\" ? { url: action.url } : {}),\n\t\t\t...(typeof action.pattern === \"string\" ? { pattern: action.pattern } : {}),\n\t\t};\n\t}\n\n\treturn { type: \"other\" };\n}\n\nfunction webSearchActionDetail(action: WebSearchAction): string {\n\tswitch (action.type) {\n\t\tcase \"search\":\n\t\t\treturn action.query ?? action.queries?.join(\", \") ?? \"\";\n\t\tcase \"open_page\":\n\t\t\treturn action.url ?? \"\";\n\t\tcase \"find_in_page\": {\n\t\t\tconst pattern = action.pattern ?? \"\";\n\t\t\tconst url = action.url ?? \"\";\n\t\t\treturn pattern && url ? `'${pattern}' in ${url}` : (pattern || url);\n\t\t}\n\t\tcase \"other\":\n\t\t\treturn \"\";\n\t}\n}\n\nfunction isContextualUserFragment(contentItem: ContentItem): boolean {\n\treturn (\n\t\tcontentItem.type === \"input_text\" &&\n\t\t(parseHookPromptFragment(contentItem.text) !== null ||\n\t\t\tisStandardContextualUserText(contentItem.text))\n\t);\n}\n\nfunction isContextualDevFragment(contentItem: ContentItem): boolean {\n\tif (contentItem.type !== \"input_text\") {\n\t\treturn false;\n\t}\n\n\tconst trimmed = contentItem.text.trimStart();\n\treturn CONTEXTUAL_DEVELOPER_PREFIXES.some((prefix) =>\n\t\ttrimmed.slice(0, prefix.length).toLowerCase() === prefix.toLowerCase(),\n\t);\n}\n\nfunction isStandardContextualUserText(text: string): boolean {\n\tconst trimmed = text.trimStart();\n\treturn (\n\t\ttrimmed.startsWith(\"# AGENTS.md instructions for \") ||\n\t\ttrimmed.startsWith(\"<environment_context>\") ||\n\t\ttrimmed.startsWith(\"<skill>\") ||\n\t\ttrimmed.startsWith(\"<user_shell_command>\") ||\n\t\ttrimmed.startsWith(\"<turn_aborted>\") ||\n\t\ttrimmed.startsWith(\"<thread_goal_budget_limit>\") ||\n\t\ttrimmed.startsWith(\"<subagent_notification>\")\n\t);\n}\n\nfunction parseHookPromptFragment(text: string): HookPromptFragment | null {\n\tconst trimmed = text.trim();\n\tconst match = trimmed.match(\n\t\t/^<hook_prompt\\s+hook_run_id=([\"'])(.*?)\\1>([\\s\\S]*)<\\/hook_prompt>$/u,\n\t);\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst hookRunId = decodeXmlEntities(match[2] ?? \"\").trim();\n\tif (!hookRunId) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\thookRunId,\n\t\ttext: decodeXmlEntities(match[3] ?? \"\"),\n\t};\n}\n\nfunction isImageOpenTagText(text: string): boolean {\n\treturn text === \"<image>\";\n}\n\nfunction isImageCloseTagText(text: string): boolean {\n\treturn text === \"</image>\";\n}\n\nfunction isLocalImageOpenTagText(text: string): boolean {\n\treturn text.startsWith(\"<image name=\") && text.endsWith(\">\");\n}\n\nfunction isLocalImageCloseTagText(text: string): boolean {\n\treturn isImageCloseTagText(text);\n}\n\nfunction decodeXmlEntities(value: string): string {\n\treturn value\n\t\t.replaceAll(\"&\", \"&\")\n\t\t.replaceAll(\"<\", \"<\")\n\t\t.replaceAll(\">\", \">\")\n\t\t.replaceAll(\""\", \"\\\"\")\n\t\t.replaceAll(\"'\", \"'\");\n}\n\nfunction isString(value: unknown): value is string {\n\treturn typeof value === \"string\";\n}\n","import type {\n\tAgentMessageTurnItem,\n\tTurnItem,\n\tUserMessageTurnItem,\n} from \"./items\";\nimport { parseTurnItem } from \"./event-mapping\";\nimport type {\n\tDynamicToolCallRequest,\n\tEventMsg,\n\tImageGenerationEndEventMsg,\n\tResponseItem,\n\tRolloutItem,\n\tUserInput,\n\tUserMessageEventMsg,\n} from \"./protocol\";\n\nexport type TurnStatus =\n\t| \"completed\"\n\t| \"interrupted\"\n\t| \"failed\"\n\t| \"in_progress\";\n\nexport type TurnItemsView = \"not_loaded\" | \"summary\" | \"full\";\n\nexport type TurnError = {\n\tmessage: string;\n\tcodex_error_info?: unknown | null;\n\tadditional_details?: string | null;\n};\n\nexport type Turn = {\n\tid: string;\n\titems: TurnItem[];\n\titems_view: TurnItemsView;\n\tstatus: TurnStatus;\n\terror: TurnError | null;\n\tstarted_at: number | null;\n\tcompleted_at: number | null;\n\tduration_ms: number | null;\n};\n\nexport type PendingTurn = Turn & {\n\topened_explicitly: boolean;\n};\n\ntype InternalTurn = Turn & {\n\topened_explicitly: boolean;\n};\n\nexport class ThreadHistoryBuilder {\n\tprivate turns: InternalTurn[] = [];\n\tprivate next_item_index = 1;\n\n\tstatic fromTurns(turns: readonly Turn[]): ThreadHistoryBuilder {\n\t\tconst builder = new ThreadHistoryBuilder();\n\t\tbuilder.turns = turns.map((turn) => ({\n\t\t\t...cloneTurn(turn),\n\t\t\topened_explicitly: true,\n\t\t}));\n\t\tbuilder.next_item_index = nextItemIndexFromTurns(turns);\n\t\treturn builder;\n\t}\n\n\thandle_rollout_item(item: RolloutItem, index = this.next_item_index): void {\n\t\tif (item.type === \"event_msg\") {\n\t\t\tthis.handle_event(item.payload, `rollout-${index}`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (item.type === \"response_item\") {\n\t\t\tthis.handle_response_item(item.payload, `response-${index}`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (item.type === \"compacted\") {\n\t\t\tthis.append_to_current_turn({\n\t\t\t\ttype: \"ContextCompaction\",\n\t\t\t\tid: `compacted-${index}`,\n\t\t\t});\n\t\t}\n\t}\n\n\thandle_event(event: EventMsg, eventId = `event-${this.next_item_index}`): void {\n\t\tswitch (event.type) {\n\t\t\tcase \"turn_started\":\n\t\t\t\tthis.open_explicit_turn(event.turn_id);\n\t\t\t\tif (event.started_at !== undefined && event.started_at !== null) {\n\t\t\t\t\tconst turn = this.turn_by_id(event.turn_id);\n\t\t\t\t\tif (turn) {\n\t\t\t\t\t\tturn.started_at = event.started_at;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase \"turn_complete\":\n\t\t\t\tthis.complete_turn(event.turn_id, {\n\t\t\t\t\tstatus: \"completed\",\n\t\t\t\t\tcompleted_at: event.completed_at ?? null,\n\t\t\t\t\tduration_ms: event.duration_ms ?? null,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"turn_aborted\":\n\t\t\t\tthis.complete_turn(event.turn_id, {\n\t\t\t\t\tstatus: \"interrupted\",\n\t\t\t\t\tcompleted_at: event.completed_at ?? event.aborted_at ?? null,\n\t\t\t\t\tduration_ms: event.duration_ms ?? null,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"user_message\":\n\t\t\t\tthis.append_user_message(userMessageTurnItem(event, userMessageId(eventId)), {\n\t\t\t\t\treplaceDuplicate: true,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"agent_message\":\n\t\t\t\tthis.upsert_agent_message({\n\t\t\t\t\ttype: \"AgentMessage\",\n\t\t\t\t\tid: agentMessageId(eventId),\n\t\t\t\t\tcontent: [{ type: \"Text\", text: event.message }],\n\t\t\t\t\tphase: event.phase ?? null,\n\t\t\t\t\tmemory_citation: event.memory_citation ?? null,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"item_started\":\n\t\t\t\tthis.upsert_item_in_turn(event.turn_id, event.item, {\n\t\t\t\t\tstarted: true,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"item_completed\":\n\t\t\t\tthis.upsert_item_in_turn(event.turn_id, completedItem(event.item));\n\t\t\t\treturn;\n\t\t\tcase \"agent_message_content_delta\":\n\t\t\t\tthis.apply_agent_message_delta(event.item_id, event.delta);\n\t\t\t\treturn;\n\t\t\tcase \"plan_delta\":\n\t\t\t\tthis.apply_plan_delta(event.item_id, event.delta);\n\t\t\t\treturn;\n\t\t\tcase \"exec_command_begin\":\n\t\t\t\tthis.upsert_item_in_turn(event.turn_id, {\n\t\t\t\t\ttype: \"CommandExecution\",\n\t\t\t\t\tid: event.call_id,\n\t\t\t\t\tcommand: event.command,\n\t\t\t\t\tcwd: event.cwd,\n\t\t\t\t\tstatus: \"in_progress\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"exec_command_output_delta\":\n\t\t\t\tthis.apply_exec_command_output_delta(event);\n\t\t\t\treturn;\n\t\t\tcase \"exec_command_end\":\n\t\t\t\tthis.apply_exec_command_end(event);\n\t\t\t\treturn;\n\t\t\tcase \"patch_apply_updated\":\n\t\t\t\tthis.upsert_item_in_current_or_existing_turn(event.call_id, {\n\t\t\t\t\ttype: \"FileChange\",\n\t\t\t\t\tid: event.call_id,\n\t\t\t\t\tchanges: event.changes,\n\t\t\t\t\tstatus: event.status ?? null,\n\t\t\t\t\tauto_approved: false,\n\t\t\t\t\tstdout: event.stdout ?? \"\",\n\t\t\t\t\tstderr: event.stderr ?? \"\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"dynamic_tool_call_request\":\n\t\t\t\tthis.upsert_item_in_turn(event.turn_id, dynamicToolRequestTurnItem(event));\n\t\t\t\treturn;\n\t\t\tcase \"dynamic_tool_call_response\":\n\t\t\t\tthis.upsert_item_in_turn(event.turn_id, {\n\t\t\t\t\ttype: \"DynamicToolCall\",\n\t\t\t\t\tid: event.call_id,\n\t\t\t\t\tnamespace: event.namespace ?? null,\n\t\t\t\t\ttool: event.tool,\n\t\t\t\t\targuments: event.arguments,\n\t\t\t\t\tstatus: event.success ? \"completed\" : \"failed\",\n\t\t\t\t\tcontent_items: event.content_items,\n\t\t\t\t\tsuccess: event.success,\n\t\t\t\t\tduration: event.duration,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"mcp_tool_call_progress\":\n\t\t\t\tthis.upsert_item_in_turn(event.turn_id, {\n\t\t\t\t\ttype: \"McpToolCall\",\n\t\t\t\t\tid: event.call_id,\n\t\t\t\t\tserver: event.server_name,\n\t\t\t\t\ttool: event.tool_name,\n\t\t\t\t\targuments: {},\n\t\t\t\t\tstatus: \"inProgress\",\n\t\t\t\t\tresult: event.progress ?? event.message ?? null,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"image_generation_end\":\n\t\t\t\tthis.upsert_item_in_current_or_existing_turn(\n\t\t\t\t\tevent.call_id,\n\t\t\t\t\timageGenerationTurnItem(event, eventId),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\tcase \"error\": {\n\t\t\t\tconst turn = this.active_turn();\n\t\t\t\tif (turn) {\n\t\t\t\t\tturn.status = \"failed\";\n\t\t\t\t\tturn.error = {\n\t\t\t\t\t\tmessage: event.message,\n\t\t\t\t\t\tcodex_error_info: event.codex_error_info ?? null,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t}\n\n\thandle_response_item(item: ResponseItem, id: string): void {\n\t\tconst turnItem = parseTurnItem(item);\n\t\tif (!turnItem) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst itemWithFallbackId =\n\t\t\tturnItem.id.length > 0 ? turnItem : { ...turnItem, id };\n\n\t\tif (itemWithFallbackId.type === \"AgentMessage\") {\n\t\t\tthis.upsert_agent_message(itemWithFallbackId);\n\t\t\treturn;\n\t\t}\n\n\t\tif (itemWithFallbackId.type === \"UserMessage\") {\n\t\t\tthis.append_user_message(itemWithFallbackId, {\n\t\t\t\treplaceDuplicate: false,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.append_to_current_turn(itemWithFallbackId);\n\t}\n\n\tactive_turn_snapshot(): Turn | null {\n\t\tconst turn = this.active_turn();\n\t\treturn turn ? stripInternalTurn(turn) : null;\n\t}\n\n\tactive_turn_position(): number | null {\n\t\tconst turn = this.active_turn();\n\t\treturn turn ? this.turns.indexOf(turn) : null;\n\t}\n\n\tfinish(): Turn[] {\n\t\treturn this.turns.map(stripInternalTurn);\n\t}\n\n\thas_active_turn(): boolean {\n\t\treturn this.active_turn() !== null;\n\t}\n\n\treset(): void {\n\t\tthis.turns = [];\n\t\tthis.next_item_index = 1;\n\t}\n\n\tprivate open_explicit_turn(turnId: string): void {\n\t\tconst existing = this.turns.find((turn) => turn.id === turnId);\n\t\tif (existing) {\n\t\t\texisting.status = \"in_progress\";\n\t\t\texisting.opened_explicitly = true;\n\t\t\treturn;\n\t\t}\n\t\tthis.turns.push(newTurn(turnId, true));\n\t}\n\n\tprivate complete_turn(\n\t\tturnId: string,\n\t\tinput: {\n\t\t\tstatus: TurnStatus;\n\t\t\tcompleted_at: number | null;\n\t\t\tduration_ms: number | null;\n\t\t},\n\t): void {\n\t\tconst turn = this.turn_by_id(turnId) ?? this.ensure_turn(turnId, true);\n\t\tturn.status = input.status;\n\t\tturn.completed_at = input.completed_at;\n\t\tturn.duration_ms = input.duration_ms;\n\t}\n\n\tprivate append_user_message(\n\t\titem: UserMessageTurnItem,\n\t\toptions: { replaceDuplicate: boolean },\n\t): void {\n\t\tconst active = this.active_turn();\n\t\tif (!active || (!active.opened_explicitly && active.items.length > 0)) {\n\t\t\tthis.turns.push(newTurn(`turn-${this.turns.length + 1}`, false));\n\t\t}\n\t\tconst turn = this.active_turn() ?? this.ensure_turn();\n\t\tconst lastItem = turn.items.at(-1);\n\t\tif (\n\t\t\tlastItem?.type === \"UserMessage\" &&\n\t\t\tuserMessageFingerprint(lastItem) === userMessageFingerprint(item)\n\t\t) {\n\t\t\tif (options.replaceDuplicate) {\n\t\t\t\tturn.items[turn.items.length - 1] = item;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tturn.items.push(item);\n\t}\n\n\tprivate upsert_agent_message(item: AgentMessageTurnItem): void {\n\t\tconst turn = this.ensure_turn();\n\t\tconst lastItem = turn.items.at(-1);\n\t\tif (item.phase === \"streaming\") {\n\t\t\tif (lastItem?.type === \"AgentMessage\" && lastItem.phase === \"streaming\") {\n\t\t\t\tturn.items[turn.items.length - 1] = { ...item, id: lastItem.id };\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tturn.items.push({ ...item, id: `streaming-${item.id}` });\n\t\t\treturn;\n\t\t}\n\t\tif (lastItem?.type === \"AgentMessage\" && lastItem.phase === \"streaming\") {\n\t\t\tturn.items[turn.items.length - 1] = { ...item, id: lastItem.id };\n\t\t\treturn;\n\t\t}\n\t\tif (\n\t\t\tlastItem?.type === \"AgentMessage\" &&\n\t\t\tagentMessageText(lastItem) === agentMessageText(item)\n\t\t) {\n\t\t\tturn.items[turn.items.length - 1] = { ...item, id: lastItem.id };\n\t\t\treturn;\n\t\t}\n\t\tturn.items.push(item);\n\t}\n\n\tprivate upsert_item_in_turn(\n\t\tturnId: string | null | undefined,\n\t\titem: TurnItem,\n\t\toptions: { started?: boolean } = {},\n\t): void {\n\t\tconst turn = turnId ? this.ensure_turn(turnId, true) : this.ensure_turn();\n\t\tupsertItem(turn, options.started ? startedItem(item) : item);\n\t}\n\n\tprivate upsert_item_in_current_or_existing_turn(\n\t\titemId: string,\n\t\titem: TurnItem,\n\t): void {\n\t\tconst existingTurn = this.turns.find((turn) =>\n\t\t\tturn.items.some((candidate) => candidate.id === itemId),\n\t\t);\n\t\tupsertItem(existingTurn ?? this.ensure_turn(), item);\n\t}\n\n\tprivate append_to_current_turn(item: TurnItem): void {\n\t\tthis.ensure_turn().items.push(item);\n\t}\n\n\tprivate apply_agent_message_delta(itemId: string, delta: string): void {\n\t\tconst existing = this.find_item(itemId);\n\t\tif (!existing || existing.item.type !== \"AgentMessage\") {\n\t\t\tthis.append_to_current_turn({\n\t\t\t\ttype: \"AgentMessage\",\n\t\t\t\tid: itemId,\n\t\t\t\tcontent: [{ type: \"Text\", text: delta }],\n\t\t\t\tphase: \"streaming\",\n\t\t\t\tmemory_citation: null,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst item = existing.item;\n\t\tconst lastContent = item.content.at(-1);\n\t\tconst nextContent =\n\t\t\tlastContent?.type === \"Text\"\n\t\t\t\t? [\n\t\t\t\t\t\t...item.content.slice(0, -1),\n\t\t\t\t\t\t{ type: \"Text\" as const, text: `${lastContent.text}${delta}` },\n\t\t\t\t\t]\n\t\t\t\t: [...item.content, { type: \"Text\" as const, text: delta }];\n\t\texisting.turn.items[existing.index] = {\n\t\t\t...item,\n\t\t\tcontent: nextContent,\n\t\t\tphase: \"streaming\",\n\t\t};\n\t}\n\n\tprivate apply_plan_delta(itemId: string, delta: string): void {\n\t\tconst existing = this.find_item(itemId);\n\t\tif (!existing || existing.item.type !== \"Plan\") {\n\t\t\tthis.append_to_current_turn({ type: \"Plan\", id: itemId, text: delta });\n\t\t\treturn;\n\t\t}\n\t\texisting.turn.items[existing.index] = {\n\t\t\t...existing.item,\n\t\t\ttext: `${existing.item.text}${delta}`,\n\t\t};\n\t}\n\n\tprivate apply_exec_command_output_delta(\n\t\tmsg: Extract<EventMsg, { type: \"exec_command_output_delta\" }>,\n\t): void {\n\t\tconst existing = this.find_item(msg.call_id);\n\t\tif (!existing || existing.item.type !== \"CommandExecution\") {\n\t\t\treturn;\n\t\t}\n\t\texisting.turn.items[existing.index] = {\n\t\t\t...existing.item,\n\t\t\tstdout:\n\t\t\t\tmsg.stream === \"stdout\"\n\t\t\t\t\t? `${existing.item.stdout ?? \"\"}${msg.chunk}`\n\t\t\t\t\t: existing.item.stdout,\n\t\t\tstderr:\n\t\t\t\tmsg.stream === \"stderr\"\n\t\t\t\t\t? `${existing.item.stderr ?? \"\"}${msg.chunk}`\n\t\t\t\t\t: existing.item.stderr,\n\t\t};\n\t}\n\n\tprivate apply_exec_command_end(\n\t\tmsg: Extract<EventMsg, { type: \"exec_command_end\" }>,\n\t): void {\n\t\tconst existing = this.find_item(msg.call_id);\n\t\tconst item =\n\t\t\texisting?.item.type === \"CommandExecution\" ? existing.item : null;\n\t\tconst turn = msg.turn_id\n\t\t\t? this.ensure_turn(msg.turn_id, true)\n\t\t\t: existing?.turn ?? this.ensure_turn();\n\t\tupsertItem(turn, {\n\t\t\ttype: \"CommandExecution\",\n\t\t\tid: msg.call_id,\n\t\t\tcommand: item?.command ?? [],\n\t\t\tcwd: item?.cwd ?? \"\",\n\t\t\tstatus:\n\t\t\t\tmsg.status === \"completed\"\n\t\t\t\t\t? \"completed\"\n\t\t\t\t\t: msg.status === \"cancelled\"\n\t\t\t\t\t\t? \"cancelled\"\n\t\t\t\t\t\t: \"failed\",\n\t\t\tstdout: msg.stdout ?? msg.output?.stdout.text ?? item?.stdout ?? \"\",\n\t\t\tstderr: msg.stderr ?? msg.output?.stderr.text ?? item?.stderr ?? \"\",\n\t\t\texit_code: msg.exit_code,\n\t\t\tduration_ms: msg.duration_ms ?? msg.output?.duration_ms ?? null,\n\t\t});\n\t}\n\n\tprivate ensure_turn(id?: string, explicit = false): InternalTurn {\n\t\tif (id) {\n\t\t\tconst existing = this.turn_by_id(id);\n\t\t\tif (existing) {\n\t\t\t\treturn existing;\n\t\t\t}\n\t\t\tconst turn = newTurn(id, explicit);\n\t\t\tthis.turns.push(turn);\n\t\t\treturn turn;\n\t\t}\n\t\tconst active = this.active_turn();\n\t\tif (active) {\n\t\t\treturn active;\n\t\t}\n\t\tconst turn = newTurn(`turn-${this.turns.length + 1}`, false);\n\t\tthis.turns.push(turn);\n\t\treturn turn;\n\t}\n\n\tprivate active_turn(): InternalTurn | null {\n\t\tfor (let index = this.turns.length - 1; index >= 0; index -= 1) {\n\t\t\tconst turn = this.turns[index];\n\t\t\tif (turn?.status === \"in_progress\") {\n\t\t\t\treturn turn;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate turn_by_id(id: string): InternalTurn | null {\n\t\treturn this.turns.find((turn) => turn.id === id) ?? null;\n\t}\n\n\tprivate find_item(\n\t\titemId: string,\n\t): { turn: InternalTurn; item: TurnItem; index: number } | null {\n\t\tfor (const turn of this.turns) {\n\t\t\tconst index = turn.items.findIndex((item) => item.id === itemId);\n\t\t\tif (index !== -1) {\n\t\t\t\treturn { turn, item: turn.items[index] as TurnItem, index };\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n}\n\nexport function buildTurnsFromRolloutItems(\n\titems: readonly RolloutItem[],\n): Turn[] {\n\tconst builder = new ThreadHistoryBuilder();\n\tfor (const [index, item] of items.entries()) {\n\t\tbuilder.handle_rollout_item(item, index);\n\t}\n\treturn builder.finish();\n}\n\nexport function applyEventToThreadHistoryBuilder(\n\tbuilder: ThreadHistoryBuilder,\n\tevent: EventMsg,\n\teventId?: string,\n): ThreadHistoryBuilder {\n\tbuilder.handle_event(event, eventId);\n\treturn builder;\n}\n\nexport function flattenTurnsToTurnItems(turns: readonly Turn[]): TurnItem[] {\n\treturn turns.flatMap((turn) => turn.items);\n}\n\nexport function applyEventToTurns(\n\tturns: readonly Turn[],\n\tevent: EventMsg,\n\teventId?: string,\n): Turn[] {\n\tconst builder = ThreadHistoryBuilder.fromTurns(turns);\n\tbuilder.handle_event(event, eventId);\n\treturn builder.finish();\n}\n\nexport function applyResponseItemToTurns(\n\tturns: readonly Turn[],\n\titem: ResponseItem,\n\tid: string,\n): Turn[] {\n\tconst builder = ThreadHistoryBuilder.fromTurns(turns);\n\tbuilder.handle_response_item(item, id);\n\treturn builder.finish();\n}\n\nexport function appendCompactionTurnToTurns(\n\tturns: readonly Turn[],\n\tid: string,\n): Turn[] {\n\tconst builder = ThreadHistoryBuilder.fromTurns(turns);\n\tbuilder.handle_rollout_item({ type: \"compacted\", payload: { message: \"\" } }, 0);\n\tconst next = builder.finish();\n\tconst last = next.at(-1);\n\tif (last?.items.at(-1)?.type === \"ContextCompaction\") {\n\t\tlast.items[last.items.length - 1] = { type: \"ContextCompaction\", id };\n\t}\n\treturn next;\n}\n\nfunction newTurn(id: string, openedExplicitly: boolean): InternalTurn {\n\treturn {\n\t\tid,\n\t\titems: [],\n\t\titems_view: \"full\",\n\t\tstatus: \"in_progress\",\n\t\terror: null,\n\t\tstarted_at: null,\n\t\tcompleted_at: null,\n\t\tduration_ms: null,\n\t\topened_explicitly: openedExplicitly,\n\t};\n}\n\nfunction stripInternalTurn(turn: InternalTurn): Turn {\n\tconst { opened_explicitly, ...publicTurn } = turn;\n\tvoid opened_explicitly;\n\treturn cloneTurn(publicTurn);\n}\n\nfunction cloneTurn(turn: Turn): Turn {\n\treturn {\n\t\t...turn,\n\t\titems: turn.items.map((item) => structuredClone(item)),\n\t\terror: turn.error ? { ...turn.error } : null,\n\t};\n}\n\nfunction nextItemIndexFromTurns(turns: readonly Turn[]): number {\n\treturn (\n\t\tturns.reduce((count, turn) => count + turn.items.length, 0) + 1\n\t);\n}\n\nfunction upsertItem(turn: InternalTurn, item: TurnItem): void {\n\tconst index = turn.items.findIndex((candidate) => candidate.id === item.id);\n\tif (index === -1) {\n\t\tturn.items.push(item);\n\t\treturn;\n\t}\n\tturn.items[index] = item;\n}\n\nfunction startedItem(item: TurnItem): TurnItem {\n\treturn item.type === \"AgentMessage\"\n\t\t? { ...item, phase: item.phase ?? \"streaming\" }\n\t\t: item;\n}\n\nfunction completedItem(item: TurnItem): TurnItem {\n\treturn item.type === \"AgentMessage\"\n\t\t? { ...item, phase: item.phase ?? null }\n\t\t: item;\n}\n\nfunction dynamicToolRequestTurnItem(\n\trequest: DynamicToolCallRequest,\n): TurnItem {\n\treturn {\n\t\ttype: \"DynamicToolCall\",\n\t\tid: request.call_id,\n\t\tnamespace: request.namespace ?? null,\n\t\ttool: request.tool,\n\t\targuments: request.arguments,\n\t\tstatus: \"inProgress\",\n\t\tcontent_items: null,\n\t\tsuccess: null,\n\t\tduration: null,\n\t};\n}\n\nfunction userMessageId(eventId: string): string {\n\treturn `user-${eventId}`;\n}\n\nfunction agentMessageId(eventId: string): string {\n\treturn `agent-${eventId}`;\n}\n\nfunction userMessageTurnItem(\n\tmsg: UserMessageEventMsg,\n\tid: string,\n): UserMessageTurnItem {\n\treturn {\n\t\ttype: \"UserMessage\",\n\t\tid,\n\t\tcontent: userInputFromUserMessage(msg),\n\t};\n}\n\nfunction userInputFromUserMessage(msg: UserMessageEventMsg): UserInput[] {\n\tconst items: UserInput[] = [];\n\tif (msg.message.length > 0) {\n\t\titems.push({\n\t\t\ttype: \"text\",\n\t\t\ttext: msg.message,\n\t\t\ttext_elements: msg.text_elements,\n\t\t});\n\t}\n\tfor (const imageUrl of msg.images ?? []) {\n\t\titems.push({ type: \"image\", image_url: imageUrl });\n\t}\n\tfor (const path of msg.local_images ?? []) {\n\t\titems.push({ type: \"local_image\", path });\n\t}\n\treturn items;\n}\n\nfunction imageGenerationTurnItem(\n\tmsg: ImageGenerationEndEventMsg,\n\tid: string,\n): TurnItem {\n\treturn {\n\t\ttype: \"ImageGeneration\",\n\t\tid: msg.call_id || id,\n\t\tstatus: msg.status,\n\t\trevised_prompt: msg.revised_prompt,\n\t\tresult: msg.result,\n\t\tsaved_path: msg.saved_path,\n\t};\n}\n\nfunction agentMessageText(item: AgentMessageTurnItem): string {\n\treturn item.content.map((part) => part.text).join(\"\");\n}\n\nfunction userMessageFingerprint(item: UserMessageTurnItem): string {\n\treturn item.content\n\t\t.map((content) => {\n\t\t\tif (content.type === \"text\") {\n\t\t\t\treturn `text:${content.text}`;\n\t\t\t}\n\t\t\tif (content.type === \"image\") {\n\t\t\t\treturn `image:${content.image_url}`;\n\t\t\t}\n\t\t\tif (content.type === \"local_image\") {\n\t\t\t\treturn `local_image:${content.path}`;\n\t\t\t}\n\t\t\tif (content.type === \"skill\") {\n\t\t\t\treturn `skill:${content.name}:${content.path}`;\n\t\t\t}\n\t\t\treturn `mention:${content.name}:${content.path}`;\n\t\t})\n\t\t.join(\"\\n\");\n}\n","import type { ThreadId } from \"./ids\";\nimport type {\n\tDynamicToolCallRequest,\n\tEventMsg,\n\tRolloutItem,\n} from \"./protocol\";\nimport type { RequestPermissionsEvent } from \"./request_permissions\";\nimport type { RequestUserInputEvent } from \"./request_user_input\";\nimport type { StoredThreadHistory } from \"./thread-store\";\nimport {\n\tapplyEventToTurns,\n\tapplyResponseItemToTurns,\n\tappendCompactionTurnToTurns,\n\tflattenTurnsToTurnItems,\n\ttype Turn,\n} from \"./thread-history-builder\";\nimport type { TurnItem } from \"./items\";\n\nexport type RenderedThreadConnectionStatus =\n\t| \"idle\"\n\t| \"connecting\"\n\t| \"connected\"\n\t| \"reconnecting\"\n\t| \"closed\"\n\t| \"error\";\n\nexport type RenderedThreadState = {\n\tthread_id: ThreadId;\n\tturns: Turn[];\n\titems: TurnItem[];\n\tpending_request_user_input: RequestUserInputEvent | null;\n\tpending_request_permissions: RequestPermissionsEvent | null;\n\tpending_dynamic_tool_call_requests: DynamicToolCallRequest[];\n\trunning_turn_ids: string[];\n\twarnings: string[];\n\terrors: string[];\n\tlast_history_fingerprint: string | null;\n\tconnection_status: RenderedThreadConnectionStatus;\n};\n\nexport type ApplyEventOptions = {\n\tevent_id?: string;\n};\n\nexport function createRenderedThreadState(\n\tthreadId: ThreadId,\n): RenderedThreadState {\n\treturn {\n\t\tthread_id: threadId,\n\t\tturns: [],\n\t\titems: [],\n\t\tpending_request_user_input: null,\n\t\tpending_request_permissions: null,\n\t\tpending_dynamic_tool_call_requests: [],\n\t\trunning_turn_ids: [],\n\t\twarnings: [],\n\t\terrors: [],\n\t\tlast_history_fingerprint: null,\n\t\tconnection_status: \"idle\",\n\t};\n}\n\nexport function renderThreadFromHistory(\n\thistory: StoredThreadHistory,\n): RenderedThreadState {\n\tlet state = createRenderedThreadState(history.thread_id);\n\n\tfor (const [index, item] of history.items.entries()) {\n\t\tstate = applyRolloutItemToRenderedThread(state, item, index);\n\t}\n\n\treturn {\n\t\t...state,\n\t\trunning_turn_ids: [],\n\t\tlast_history_fingerprint: fingerprintRolloutItems(history.items),\n\t};\n}\n\nexport function applyRolloutItemToRenderedThread(\n\tstate: RenderedThreadState,\n\titem: RolloutItem,\n\tindex = state.items.length,\n): RenderedThreadState {\n\tif (item.type === \"event_msg\") {\n\t\treturn applyEventMsgToRenderedThread(state, item.payload, {\n\t\t\tevent_id: `rollout-${index}`,\n\t\t});\n\t}\n\n\tif (item.type === \"response_item\") {\n\t\treturn withTurns(\n\t\t\tstate,\n\t\t\tapplyResponseItemToTurns(state.turns, item.payload, `response-${index}`),\n\t\t);\n\t}\n\n\tif (item.type === \"compacted\") {\n\t\treturn withTurns(\n\t\t\tstate,\n\t\t\tappendCompactionTurnToTurns(state.turns, `compacted-${index}`),\n\t\t);\n\t}\n\n\treturn state;\n}\n\nexport function applyEventMsgToRenderedThread(\n\tstate: RenderedThreadState,\n\tmsg: EventMsg,\n\toptions: ApplyEventOptions = {},\n): RenderedThreadState {\n\tconst eventId = options.event_id ?? `event-${state.items.length}`;\n\tconst hadActiveTurn = hasActiveTurn(state.turns);\n\tconst next = withTurns(state, applyEventToTurns(state.turns, msg, eventId));\n\n\tswitch (msg.type) {\n\t\tcase \"turn_started\":\n\t\t\treturn {\n\t\t\t\t...next,\n\t\t\t\trunning_turn_ids: addUnique(next.running_turn_ids, msg.turn_id),\n\t\t\t};\n\t\tcase \"turn_complete\":\n\t\t\treturn clearPendingForTurn(\n\t\t\t\t{\n\t\t\t\t\t...next,\n\t\t\t\t\trunning_turn_ids: next.running_turn_ids.filter(\n\t\t\t\t\t\t(turnId) => turnId !== msg.turn_id,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\tmsg.turn_id,\n\t\t\t);\n\t\tcase \"turn_aborted\":\n\t\t\treturn clearPendingForTurn(\n\t\t\t\t{\n\t\t\t\t\t...next,\n\t\t\t\t\trunning_turn_ids: next.running_turn_ids.filter(\n\t\t\t\t\t\t(turnId) => turnId !== msg.turn_id,\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\tmsg.turn_id,\n\t\t\t);\n\t\tcase \"request_user_input\":\n\t\t\treturn {\n\t\t\t\t...next,\n\t\t\t\tpending_request_user_input: {\n\t\t\t\t\tcall_id: msg.call_id,\n\t\t\t\t\tturn_id: msg.turn_id,\n\t\t\t\t\tquestions: msg.questions.map((question) => ({\n\t\t\t\t\t\t...question,\n\t\t\t\t\t\toptions: question.options.map((option) => ({ ...option })),\n\t\t\t\t\t})),\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"request_permissions\":\n\t\t\treturn {\n\t\t\t\t...next,\n\t\t\t\tpending_request_permissions: {\n\t\t\t\t\tcall_id: msg.call_id,\n\t\t\t\t\tturn_id: msg.turn_id,\n\t\t\t\t\treason: msg.reason ?? null,\n\t\t\t\t\tpermissions: JSON.parse(JSON.stringify(msg.permissions)) as RequestPermissionsEvent[\"permissions\"],\n\t\t\t\t\tcwd: msg.cwd ?? null,\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"dynamic_tool_call_request\":\n\t\t\treturn {\n\t\t\t\t...next,\n\t\t\t\tpending_dynamic_tool_call_requests: upsertDynamicToolCallRequest(\n\t\t\t\t\tnext.pending_dynamic_tool_call_requests,\n\t\t\t\t\tmsg,\n\t\t\t\t),\n\t\t\t};\n\t\tcase \"dynamic_tool_call_response\":\n\t\t\treturn {\n\t\t\t\t...next,\n\t\t\t\tpending_dynamic_tool_call_requests:\n\t\t\t\t\tnext.pending_dynamic_tool_call_requests.filter(\n\t\t\t\t\t\t(request) => request.call_id !== msg.call_id,\n\t\t\t\t\t),\n\t\t\t};\n\t\tcase \"warning\":\n\t\t\treturn {\n\t\t\t\t...next,\n\t\t\t\twarnings: [...next.warnings, msg.message],\n\t\t\t};\n\t\tcase \"error\":\n\t\t\treturn hadActiveTurn\n\t\t\t\t? next\n\t\t\t\t: {\n\t\t\t\t\t\t...next,\n\t\t\t\t\t\terrors: [...next.errors, msg.message],\n\t\t\t\t\t};\n\t\tdefault:\n\t\t\treturn next;\n\t}\n}\n\nexport function setRenderedThreadConnectionStatus(\n\tstate: RenderedThreadState,\n\tconnectionStatus: RenderedThreadConnectionStatus,\n): RenderedThreadState {\n\treturn {\n\t\t...state,\n\t\tconnection_status: connectionStatus,\n\t};\n}\n\nexport function fingerprintRolloutItems(items: readonly RolloutItem[]): string {\n\tconst last = items.at(-1);\n\treturn `${items.length}:${hashString(JSON.stringify(last ?? null))}`;\n}\n\nfunction withTurns(\n\tstate: RenderedThreadState,\n\tturns: readonly Turn[],\n): RenderedThreadState {\n\tconst nextTurns = turns.map((turn) => ({\n\t\t...turn,\n\t\titems: turn.items.map((item) => structuredClone(item)),\n\t\terror: turn.error ? { ...turn.error } : null,\n\t}));\n\treturn {\n\t\t...state,\n\t\tturns: nextTurns,\n\t\titems: flattenTurnsToTurnItems(nextTurns),\n\t};\n}\n\nfunction clearPendingForTurn(\n\tstate: RenderedThreadState,\n\tturnId: string,\n): RenderedThreadState {\n\treturn {\n\t\t...state,\n\t\tpending_request_user_input:\n\t\t\tstate.pending_request_user_input?.turn_id === turnId\n\t\t\t\t? null\n\t\t\t\t: state.pending_request_user_input,\n\t\tpending_dynamic_tool_call_requests:\n\t\t\tstate.pending_dynamic_tool_call_requests.filter(\n\t\t\t\t(request) => request.turn_id !== turnId,\n\t\t\t),\n\t\tpending_request_permissions:\n\t\t\tstate.pending_request_permissions?.turn_id === turnId\n\t\t\t\t? null\n\t\t\t\t: state.pending_request_permissions,\n\t};\n}\n\nfunction upsertDynamicToolCallRequest(\n\trequests: DynamicToolCallRequest[],\n\trequest: DynamicToolCallRequest,\n): DynamicToolCallRequest[] {\n\treturn [\n\t\t...requests.filter((item) => item.call_id !== request.call_id),\n\t\t{\n\t\t\tcall_id: request.call_id,\n\t\t\tturn_id: request.turn_id,\n\t\t\tstarted_at_ms: request.started_at_ms,\n\t\t\tnamespace: request.namespace ?? null,\n\t\t\ttool: request.tool,\n\t\t\targuments: request.arguments,\n\t\t},\n\t];\n}\n\nfunction hasActiveTurn(turns: readonly Turn[]): boolean {\n\treturn turns.some((turn) => turn.status === \"in_progress\");\n}\n\nfunction addUnique(values: string[], value: string): string[] {\n\treturn values.includes(value) ? values : [...values, value];\n}\n\nfunction hashString(value: string): string {\n\tlet hash = 0;\n\n\tfor (let index = 0; index < value.length; index += 1) {\n\t\thash = (hash * 31 + value.charCodeAt(index)) >>> 0;\n\t}\n\n\treturn hash.toString(16);\n}\n"]}
|