@gatanot/qualia_web 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/_app/immutable/chunks/B3Tl-glk.js +3 -0
- package/build/client/_app/immutable/chunks/B3Tl-glk.js.br +0 -0
- package/build/client/_app/immutable/chunks/B3Tl-glk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CxmPiQW9.js → CSQL0SK4.js} +1 -1
- package/build/client/_app/immutable/chunks/CSQL0SK4.js.br +0 -0
- package/build/client/_app/immutable/chunks/CSQL0SK4.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CodIJQI8.js +1 -0
- package/build/client/_app/immutable/chunks/CodIJQI8.js.br +2 -0
- package/build/client/_app/immutable/chunks/CodIJQI8.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.CAKAEcgA.js → app.sztFHSFr.js} +2 -2
- package/build/client/_app/immutable/entry/app.sztFHSFr.js.br +0 -0
- package/build/client/_app/immutable/entry/app.sztFHSFr.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.vm6ptYk8.js +1 -0
- package/build/client/_app/immutable/entry/start.vm6ptYk8.js.br +1 -0
- package/build/client/_app/immutable/entry/start.vm6ptYk8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.fnpvsEAN.js → 0.DS0qNAWW.js} +1 -1
- package/build/client/_app/immutable/nodes/0.DS0qNAWW.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DS0qNAWW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.CLtaTeie.js → 1.CbWQK0pS.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CbWQK0pS.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CbWQK0pS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.BwxFyRtn.js → 2.BQRorALz.js} +1 -1
- package/build/client/_app/immutable/nodes/2.BQRorALz.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BQRorALz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.D2KZBL5g.js → 3.D62SyLQS.js} +1 -1
- package/build/client/_app/immutable/nodes/3.D62SyLQS.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D62SyLQS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.B6LN5K9i.js → 4.BoU1LLAs.js} +1 -1
- package/build/client/_app/immutable/nodes/4.BoU1LLAs.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BoU1LLAs.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/handler.js +3 -3
- package/build/index.js +3 -3
- package/build/server/chunks/{0-CF_dr3E0.js → 0-DVj7JuQM.js} +3 -3
- package/build/server/chunks/{0-CF_dr3E0.js.map → 0-DVj7JuQM.js.map} +1 -1
- package/build/server/chunks/{1-CVoEVbhQ.js → 1-Bd5Vu8m_.js} +3 -3
- package/build/server/chunks/{1-CVoEVbhQ.js.map → 1-Bd5Vu8m_.js.map} +1 -1
- package/build/server/chunks/{2-BzhQC8cX.js → 2-DgtygtE8.js} +5 -5
- package/build/server/chunks/{2-BzhQC8cX.js.map → 2-DgtygtE8.js.map} +1 -1
- package/build/server/chunks/{3-CukYFw9L.js → 3-BrzeknZB.js} +3 -3
- package/build/server/chunks/{3-CukYFw9L.js.map → 3-BrzeknZB.js.map} +1 -1
- package/build/server/chunks/4-C6g5vipV.js +9 -0
- package/build/server/chunks/{4-4e_Gaah7.js.map → 4-C6g5vipV.js.map} +1 -1
- package/build/server/chunks/{5-B4fCEv4c.js → 5-Bc-Iv5NV.js} +2 -2
- package/build/server/chunks/{5-B4fCEv4c.js.map → 5-Bc-Iv5NV.js.map} +1 -1
- package/build/server/chunks/{ChatInput-GWTgCE1t.js → ChatInput-GPXQG-DJ.js} +2 -2
- package/build/server/chunks/{ChatInput-GWTgCE1t.js.map → ChatInput-GPXQG-DJ.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-MrMdtdjr.js → _layout.svelte-BrIFiFxT.js} +5 -5
- package/build/server/chunks/{_layout.svelte-MrMdtdjr.js.map → _layout.svelte-BrIFiFxT.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-OC4xDCWu.js → _page.svelte-CtaGhRdz.js} +5 -5
- package/build/server/chunks/{_page.svelte-OC4xDCWu.js.map → _page.svelte-CtaGhRdz.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CfQFFres.js → _page.svelte-DgAwNHKm.js} +5 -5
- package/build/server/chunks/{_page.svelte-CfQFFres.js.map → _page.svelte-DgAwNHKm.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CgTaVEr0.js → _page.svelte-DpfcGY3P.js} +3 -3
- package/build/server/chunks/{_page.svelte-CgTaVEr0.js.map → _page.svelte-DpfcGY3P.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DEDJBB4D.js → _page.svelte-g3xR2V1m.js} +7 -7
- package/build/server/chunks/{_page.svelte-DEDJBB4D.js.map → _page.svelte-g3xR2V1m.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D6NGuqud.js → _server.ts-1Qey6gUs.js} +3 -3
- package/build/server/chunks/{_server.ts-D6NGuqud.js.map → _server.ts-1Qey6gUs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CJOrsy4y.js → _server.ts-B8muK7Tl.js} +3 -3
- package/build/server/chunks/{_server.ts-CJOrsy4y.js.map → _server.ts-B8muK7Tl.js.map} +1 -1
- package/build/server/chunks/{_server.ts-K359HUPL.js → _server.ts-BydeSZjf.js} +3 -3
- package/build/server/chunks/{_server.ts-K359HUPL.js.map → _server.ts-BydeSZjf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DiHyx5ij.js → _server.ts-DQkvzHwv.js} +4 -4
- package/build/server/chunks/{_server.ts-DiHyx5ij.js.map → _server.ts-DQkvzHwv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-e4VKCo3M.js → _server.ts-DamX-ESD.js} +3 -3
- package/build/server/chunks/{_server.ts-e4VKCo3M.js.map → _server.ts-DamX-ESD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-nr6qwbTw.js → _server.ts-_IHmtcF8.js} +3 -3
- package/build/server/chunks/{_server.ts-nr6qwbTw.js.map → _server.ts-_IHmtcF8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-GB-Qo389.js → _server.ts-eiimbDQG.js} +3 -3
- package/build/server/chunks/{_server.ts-GB-Qo389.js.map → _server.ts-eiimbDQG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BG3v883h.js → _server.ts-ouWIsxXX.js} +3 -3
- package/build/server/chunks/{_server.ts-BG3v883h.js.map → _server.ts-ouWIsxXX.js.map} +1 -1
- package/build/server/chunks/{client-BoLIct8q.js → client-Cv79hrZo.js} +2 -2
- package/build/server/chunks/{client-BoLIct8q.js.map → client-Cv79hrZo.js.map} +1 -1
- package/build/server/chunks/{config-d3FC8naq.js → config-DS5dPt9_.js} +2 -2
- package/build/server/chunks/{config-d3FC8naq.js.map → config-DS5dPt9_.js.map} +1 -1
- package/build/server/chunks/{error.svelte-BpxjjtfZ.js → error.svelte-B153hSeK.js} +3 -3
- package/build/server/chunks/{error.svelte-BpxjjtfZ.js.map → error.svelte-B153hSeK.js.map} +1 -1
- package/build/server/chunks/{gateway-DWcUFfHo.js → gateway-0QMjPPVX.js} +3 -3
- package/build/server/chunks/{gateway-DWcUFfHo.js.map → gateway-0QMjPPVX.js.map} +1 -1
- package/build/server/chunks/{handler-BAQYBQgy.js → handler-BqMzY9sS.js} +3 -3
- package/build/server/chunks/{handler-BAQYBQgy.js.map → handler-BqMzY9sS.js.map} +1 -1
- package/build/server/chunks/{hooks.server-C6heBR7o.js → hooks.server-CctbZs5A.js} +4 -4
- package/build/server/chunks/{hooks.server-C6heBR7o.js.map → hooks.server-CctbZs5A.js.map} +1 -1
- package/build/server/chunks/{index.js-N7Sh42pC.js → index.js-CJZab21L.js} +3 -3
- package/build/server/chunks/index.js-CJZab21L.js.map +1 -0
- package/build/server/chunks/{manifest.js-D2rH2GXr.js → manifest.js-fLXWPs35.js} +16 -16
- package/build/server/chunks/{manifest.js-D2rH2GXr.js.map → manifest.js-fLXWPs35.js.map} +1 -1
- package/build/server/chunks/{markdown-BYqQ8bKF.js → markdown-YyE7dFVj.js} +2 -2
- package/build/server/chunks/{markdown-BYqQ8bKF.js.map → markdown-YyE7dFVj.js.map} +1 -1
- package/build/server/chunks/{session-store-B1Aop0Qn.js → session-store-DFVI78g2.js} +2 -2
- package/build/server/chunks/{session-store-B1Aop0Qn.js.map → session-store-DFVI78g2.js.map} +1 -1
- package/build/server/chunks/{stores-D_6JNTkz.js → stores-HHI1779R.js} +3 -3
- package/build/server/chunks/{stores-D_6JNTkz.js.map → stores-HHI1779R.js.map} +1 -1
- package/package.json +2 -2
- package/build/client/_app/immutable/chunks/BMcRbUT8.js +0 -3
- package/build/client/_app/immutable/chunks/BMcRbUT8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BMcRbUT8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BVDlhZK_.js +0 -1
- package/build/client/_app/immutable/chunks/BVDlhZK_.js.br +0 -2
- package/build/client/_app/immutable/chunks/BVDlhZK_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CxmPiQW9.js.br +0 -0
- package/build/client/_app/immutable/chunks/CxmPiQW9.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CAKAEcgA.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CAKAEcgA.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BSM2k8tg.js +0 -1
- package/build/client/_app/immutable/entry/start.BSM2k8tg.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BSM2k8tg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.fnpvsEAN.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.fnpvsEAN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CLtaTeie.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CLtaTeie.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BwxFyRtn.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BwxFyRtn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.D2KZBL5g.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D2KZBL5g.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.B6LN5K9i.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.B6LN5K9i.js.gz +0 -0
- package/build/server/chunks/4-4e_Gaah7.js +0 -9
- package/build/server/chunks/index.js-N7Sh42pC.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_page.svelte-DEDJBB4D.js","sources":["../../../.svelte-kit/output/server/entries/pages/chat/_sessionId_/_page.svelte.js"],"sourcesContent":["import { H as attr, U as escape_html, a as ensure_array_like, c as store_get, d as html, i as derived, n as attr_class, u as unsubscribe_stores } from \"../../../../chunks/dev.js\";\nimport { n as goto } from \"../../../../chunks/client.js\";\nimport { t as page } from \"../../../../chunks/stores.js\";\nimport \"../../../../chunks/navigation.js\";\nimport { a as pendingFirstImages, i as forkSession, n as bumpSession, o as pendingFirstMessage, t as activeWorkspace } from \"../../../../chunks/session-store.js\";\nimport \"../../../../chunks/model-picker-state.svelte.js\";\nimport { n as EmptyState, t as ChatInput } from \"../../../../chunks/ChatInput.js\";\nimport { t as renderMarkdown } from \"../../../../chunks/markdown.js\";\n//#region src/lib/components/ToolCallCard.svelte\nfunction ToolCallCard($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, args, result = void 0 } = $$props;\n\t\tlet expanded = false;\n\t\tlet done = derived(() => !!result);\n\t\tlet errored = derived(() => result ? !result.success : false);\n\t\tlet summary = derived(() => {\n\t\t\tconst command = args.command;\n\t\t\tif (command) return command.length > 60 ? command.slice(0, 60) + \"…\" : command;\n\t\t\tconst keys = Object.keys(args);\n\t\t\tif (keys.length === 1) {\n\t\t\t\tconst v = String(args[keys[0]]);\n\t\t\t\treturn v.length > 60 ? v.slice(0, 60) + \"…\" : v;\n\t\t\t}\n\t\t\treturn \"\";\n\t\t});\n\t\t$$renderer.push(`<div${attr_class(\"tool-call svelte-87mzaw\", void 0, {\n\t\t\t\"tool-done\": done(),\n\t\t\t\"expanded\": expanded\n\t\t})}><div class=\"tool-header svelte-87mzaw\"><span class=\"material-symbols-rounded tool-icon svelte-87mzaw\">${escape_html(errored() ? \"warning\" : done() ? \"check_circle\" : \"pending\")}</span> <div class=\"tool-summary svelte-87mzaw\"><span class=\"tool-name svelte-87mzaw\">${escape_html(name)}</span> `);\n\t\tif (summary() && true) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"tool-command svelte-87mzaw\">${escape_html(summary())}</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> <span class=\"material-symbols-rounded expand-icon svelte-87mzaw\">${escape_html(\"expand_more\")}</span></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/ConfirmInline.svelte\nfunction ConfirmInline($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { confirmId, message, onresolve } = $$props;\n\t\t$$renderer.push(`<div class=\"confirm-inline svelte-ovag81\"><div class=\"confirm-header svelte-ovag81\"><span class=\"material-symbols-rounded confirm-icon svelte-ovag81\">gavel</span> <span class=\"confirm-label svelte-ovag81\">需要确认操作</span></div> <p class=\"confirm-message svelte-ovag81\">${escape_html(message)}</p> <div class=\"confirm-actions svelte-ovag81\"><button class=\"btn btn-outline svelte-ovag81\">拒绝</button> <button class=\"btn btn-primary svelte-ovag81\">允许</button></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/ReasoningBlock.svelte\nfunction ReasoningBlock($$renderer, $$props) {\n\tlet { content = \"\", done = false } = $$props;\n\t$$renderer.push(`<div${attr_class(\"reasoning svelte-1okjtiv\", void 0, {\n\t\t\"expanded\": false,\n\t\t\"done\": done\n\t})}><div class=\"reasoning-header svelte-1okjtiv\"><span class=\"reasoning-label svelte-1okjtiv\">Thought</span> `);\n\tif (!done) {\n\t\t$$renderer.push(\"<!--[0-->\");\n\t\t$$renderer.push(`<span class=\"reasoning-dot svelte-1okjtiv\">●</span>`);\n\t} else $$renderer.push(\"<!--[-1-->\");\n\t$$renderer.push(`<!--]--> <span class=\"material-symbols-rounded expand-icon svelte-1okjtiv\">${escape_html(\"expand_more\")}</span></div> `);\n\t$$renderer.push(\"<!--[-1-->\");\n\t$$renderer.push(`<!--]--></div>`);\n}\n//#endregion\n//#region src/lib/components/MessageBubble.svelte\nfunction MessageBubble($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { message, onconfirm, onrecovery, onrollback, onfork } = $$props;\n\t\tlet roleLabel = derived(() => message.role === \"error\" ? \"错误\" : \"Qualia\");\n\t\tconst htmlCache = /* @__PURE__ */ new Map();\n\t\tlet rollbackConfirm = false;\n\t\tfunction getBlockHtml(content) {\n\t\t\tconst cached = htmlCache.get(content);\n\t\t\tif (cached) return cached;\n\t\t\tconst html = renderMarkdown(content);\n\t\t\thtmlCache.set(content, html);\n\t\t\treturn html;\n\t\t}\n\t\tfunction isLiveBlock(block, i) {\n\t\t\tif (block.type !== \"text\") return false;\n\t\t\tif (message.done) return false;\n\t\t\treturn i === message.blocks.length - 1;\n\t\t}\n\t\tfunction handleConfirm(confirmId, approved) {\n\t\t\tonconfirm?.(confirmId, approved);\n\t\t}\n\t\t$$renderer.push(`<div${attr_class(\"message-row svelte-1e5n1dp\", void 0, {\n\t\t\t\"user\": message.role === \"user\",\n\t\t\t\"error\": message.role === \"error\"\n\t\t})}><div class=\"message-body svelte-1e5n1dp\">`);\n\t\tif (message.role !== \"user\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"message-role svelte-1e5n1dp\">${escape_html(roleLabel())}</div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <!--[-->`);\n\t\tconst each_array = ensure_array_like(message.blocks);\n\t\tfor (let i = 0, $$length = each_array.length; i < $$length; i++) {\n\t\t\tlet block = each_array[i];\n\t\t\tif (block.type === \"text\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\tif (isLiveBlock(block, i)) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"message-content svelte-1e5n1dp\">${escape_html(block.content)}</div>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"message-content markdown-body svelte-1e5n1dp\">${html(getBlockHtml(block.content))}</div>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t} else if (block.type === \"image\") {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<div class=\"image-block svelte-1e5n1dp\"><img${attr(\"src\", block.url)} alt=\"上传图片\" class=\"svelte-1e5n1dp\"/></div>`);\n\t\t\t} else if (block.type === \"reasoning\") {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\tReasoningBlock($$renderer, {\n\t\t\t\t\tcontent: block.content,\n\t\t\t\t\tdone: message.done\n\t\t\t\t});\n\t\t\t} else if (block.type === \"tool\") {\n\t\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t\tToolCallCard($$renderer, {\n\t\t\t\t\tname: block.name,\n\t\t\t\t\targs: block.args,\n\t\t\t\t\tresult: block.result\n\t\t\t\t});\n\t\t\t} else if (block.type === \"confirm\") {\n\t\t\t\t$$renderer.push(\"<!--[4-->\");\n\t\t\t\tConfirmInline($$renderer, {\n\t\t\t\t\tconfirmId: block.confirmId,\n\t\t\t\t\tmessage: block.message,\n\t\t\t\t\tonresolve: handleConfirm\n\t\t\t\t});\n\t\t\t} else if (block.type === \"error_recovery\") {\n\t\t\t\t$$renderer.push(\"<!--[5-->\");\n\t\t\t\t$$renderer.push(`<div class=\"error-recovery svelte-1e5n1dp\"><p class=\"recovery-msg svelte-1e5n1dp\">${escape_html(block.message)}</p> <div class=\"recovery-actions svelte-1e5n1dp\"><button class=\"btn-recovery svelte-1e5n1dp\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">refresh</span> 重试</button> <button class=\"btn-recovery btn-recovery-secondary svelte-1e5n1dp\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">undo</span> 回退</button></div></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (!message.done) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"cursor svelte-1e5n1dp\">|</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (message.role === \"user\" && message.done) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"msg-actions svelte-1e5n1dp\"><button class=\"action-btn svelte-1e5n1dp\" title=\"复制\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">content_copy</span></button> <button class=\"action-btn svelte-1e5n1dp\" title=\"分叉\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">call_split</span></button> <button${attr_class(\"action-btn svelte-1e5n1dp\", void 0, { \"confirm\": rollbackConfirm })} title=\"回退到此\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">undo</span> `);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></button></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/routes/chat/[sessionId]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tvar $$store_subs;\n\t\tlet sessionId = derived(() => store_get($$store_subs ??= {}, \"$page\", page).params.sessionId);\n\t\tlet messages = [];\n\t\tlet input = \"\";\n\t\tlet streaming = false;\n\t\tlet currentAssistant = null;\n\t\tlet frontendConfirms = /* @__PURE__ */ new Map();\n\t\tlet focusTrigger = 0;\n\t\tlet inputQueue = [];\n\t\tlet abortController = null;\n\t\tlet streamReader = null;\n\t\tlet nearBottom = true;\n\t\tlet lastUserMessage = \"\";\n\t\tlet lastUserImages = [];\n\t\tlet contextWindow = void 0;\n\t\tlet customIcon = false;\n\t\tconst cumulativeUsage = derived(() => {\n\t\t\tlet total = 0;\n\t\t\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\t\t\tconst msg = messages[i];\n\t\t\t\tif (msg.role === \"assistant\" && msg.usage) {\n\t\t\t\t\ttotal = msg.usage.total_tokens;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst pct = contextWindow && total > 0 ? (total / contextWindow * 100).toFixed(1) : null;\n\t\t\treturn {\n\t\t\t\ttotal,\n\t\t\t\tpct\n\t\t\t};\n\t\t});\n\t\tfunction scrollToBottom() {\n\t\t\trequestAnimationFrame(() => {});\n\t\t}\n\t\tfunction forceScrollToBottom() {\n\t\t\tnearBottom = true;\n\t\t\trequestAnimationFrame(() => {});\n\t\t}\n\t\tfunction finishStreaming() {\n\t\t\tif (currentAssistant) {\n\t\t\t\tcurrentAssistant.done = true;\n\t\t\t\tcurrentAssistant = null;\n\t\t\t}\n\t\t\tabortController = null;\n\t\t\tstreamReader = null;\n\t\t\tstreaming = false;\n\t\t\tfocusTrigger++;\n\t\t\tscrollToBottom();\n\t\t\tif (inputQueue.length > 0) sendMessage(inputQueue.shift());\n\t\t}\n\t\tfunction stopAI() {\n\t\t\tabortController?.abort();\n\t\t\tstreamReader?.cancel().catch(() => {});\n\t\t\tstreamReader = null;\n\t\t}\n\t\tfunction handleConfirm(confirmId, approved) {\n\t\t\tfor (const msg of messages) {\n\t\t\t\tconst idx = msg.blocks.findIndex((b) => b.type === \"confirm\" && b.confirmId === confirmId);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tmsg.blocks.splice(idx, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfetch(\"/api/confirm\", {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tconfirmId,\n\t\t\t\t\tapproved\n\t\t\t\t})\n\t\t\t});\n\t\t\tconst resolve = frontendConfirms.get(confirmId);\n\t\t\tif (resolve) {\n\t\t\t\tfrontendConfirms.delete(confirmId);\n\t\t\t\tresolve();\n\t\t\t}\n\t\t}\n\t\tfunction handleRecovery(action) {\n\t\t\tconst recoveryMsg = messages.find((m) => m.blocks.some((b) => b.type === \"error_recovery\"));\n\t\t\tif (recoveryMsg) {\n\t\t\t\tconst idx = messages.indexOf(recoveryMsg);\n\t\t\t\tif (idx !== -1) messages.splice(idx, 1);\n\t\t\t}\n\t\t\tif (action === \"retry\") {\n\t\t\t\tif (lastUserMessage) sendMessage({\n\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\ttext: lastUserMessage,\n\t\t\t\t\timages: lastUserImages\n\t\t\t\t}, true);\n\t\t\t} else {\n\t\t\t\tinput = lastUserMessage;\n\t\t\t\tfocusTrigger++;\n\t\t\t}\n\t\t}\n\t\tasync function handleRollback(messageId) {\n\t\t\tif (streaming) {\n\t\t\t\tstopAI();\n\t\t\t\tawait new Promise((r) => setTimeout(r, 100));\n\t\t\t}\n\t\t\tconst idx = messages.findIndex((m) => m.id === messageId);\n\t\t\tif (idx === -1) return;\n\t\t\tconst rollbackText = messages[idx].blocks.filter((b) => b.type === \"text\").map((b) => b.content).join(\"\\n\");\n\t\t\tif (idx < messages.length - 1) messages.splice(idx + 1);\n\t\t\tmessages.splice(idx, 1);\n\t\t\tfetch(\"/api/messages\", {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\taction: \"deleteFrom\",\n\t\t\t\t\tsessionId: sessionId(),\n\t\t\t\t\tmessageId\n\t\t\t\t})\n\t\t\t}).catch(() => {});\n\t\t\tinput = rollbackText;\n\t\t\tfocusTrigger++;\n\t\t}\n\t\tasync function sendMessage(queued, skipUserMsg = false) {\n\t\t\tconst text = queued?.text?.trim();\n\t\t\tconst msgImages = queued?.images ?? [];\n\t\t\tif (!text || !queued) return;\n\t\t\tconst userMsgId = queued.id;\n\t\t\tif (streaming) {\n\t\t\t\tif (!skipUserMsg) {\n\t\t\t\t\tinputQueue.push({\n\t\t\t\t\t\tid: userMsgId,\n\t\t\t\t\t\ttext,\n\t\t\t\t\t\timages: [...msgImages]\n\t\t\t\t\t});\n\t\t\t\t\tfetch(\"/api/steer\", {\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\t\tsessionId: sessionId(),\n\t\t\t\t\t\t\tmessageId: userMsgId,\n\t\t\t\t\t\t\tmessage: text\n\t\t\t\t\t\t})\n\t\t\t\t\t}).catch(() => {});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlastUserMessage = text;\n\t\t\tlastUserImages = [...msgImages];\n\t\t\tif (!skipUserMsg) {\n\t\t\t\tconst blocks = [];\n\t\t\t\tfor (const img of msgImages) blocks.push({\n\t\t\t\t\ttype: \"image\",\n\t\t\t\t\turl: img.url,\n\t\t\t\t\tdetail: img.detail\n\t\t\t\t});\n\t\t\t\tblocks.push({\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\tcontent: text\n\t\t\t\t});\n\t\t\t\tmessages.push({\n\t\t\t\t\tid: userMsgId,\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tblocks,\n\t\t\t\t\tdone: true\n\t\t\t\t});\n\t\t\t\tforceScrollToBottom();\n\t\t\t}\n\t\t\tstreaming = true;\n\t\t\tconst controller = new AbortController();\n\t\t\tabortController = controller;\n\t\t\tstreamReader = null;\n\t\t\ttry {\n\t\t\t\tconst body = {\n\t\t\t\t\tsessionId: sessionId(),\n\t\t\t\t\tmessage: text,\n\t\t\t\t\tworkspace: store_get($$store_subs ??= {}, \"$activeWorkspace\", activeWorkspace)\n\t\t\t\t};\n\t\t\t\tif (!skipUserMsg) body.clientMessageId = userMsgId;\n\t\t\t\tif (msgImages.length > 0) body.images = msgImages.map((img) => ({\n\t\t\t\t\turl: img.url,\n\t\t\t\t\tdetail: img.detail || \"auto\"\n\t\t\t\t}));\n\t\t\t\tconst res = await fetch(\"/api/chat\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t\tbody: JSON.stringify(body),\n\t\t\t\t\tsignal: controller.signal\n\t\t\t\t});\n\t\t\t\tif (!res.ok) {\n\t\t\t\t\tconst err = await res.json().catch(() => ({ error: \"请求失败\" }));\n\t\t\t\t\tmessages.push({\n\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\trole: \"error\",\n\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\tcontent: err.error || \"请求失败\"\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tdone: true\n\t\t\t\t\t});\n\t\t\t\t\tfinishStreaming();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst newSid = res.headers.get(\"X-Session-Id\");\n\t\t\t\tif (newSid && newSid !== sessionId()) {\n\t\t\t\t\tbumpSession(newSid);\n\t\t\t\t\tgoto(\"/chat/\" + newSid, { replaceState: true });\n\t\t\t\t\treturn;\n\t\t\t\t} else if (newSid) bumpSession(newSid);\n\t\t\t\tconst reader = res.body.getReader();\n\t\t\t\tstreamReader = reader;\n\t\t\t\tconst decoder = new TextDecoder();\n\t\t\t\tlet buffer = \"\";\n\t\t\t\twhile (true) {\n\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\tif (done) break;\n\t\t\t\t\tbuffer += decoder.decode(value, { stream: true });\n\t\t\t\t\tconst lines = buffer.split(\"\\n\");\n\t\t\t\t\tbuffer = lines.pop() || \"\";\n\t\t\t\t\tfor (const line of lines) {\n\t\t\t\t\t\tconst trimmed = line.trim();\n\t\t\t\t\t\tif (!trimmed || !trimmed.startsWith(\"data:\")) continue;\n\t\t\t\t\t\tconst data = trimmed.slice(5).trim();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait handleSSEEvent(JSON.parse(data));\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfinishStreaming();\n\t\t\t} catch (e) {\n\t\t\t\tif (e.name === \"AbortError\") {\n\t\t\t\t\tif (currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant.done = true;\n\t\t\t\t\t\tcurrentAssistant = null;\n\t\t\t\t\t}\n\t\t\t\t\tabortController = null;\n\t\t\t\t\tstreamReader = null;\n\t\t\t\t\tstreaming = false;\n\t\t\t\t\tfocusTrigger++;\n\t\t\t\t\tif (inputQueue.length > 0) sendMessage(inputQueue.shift());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmessages.push({\n\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\trole: \"error\",\n\t\t\t\t\tblocks: [{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\tcontent: e.message || \"连接失败\"\n\t\t\t\t\t}],\n\t\t\t\t\tdone: true\n\t\t\t\t});\n\t\t\t\tfinishStreaming();\n\t\t\t}\n\t\t}\n\t\tasync function handleFork(messageId) {\n\t\t\tif (streaming || !sessionId()) return;\n\t\t\tconst result = await forkSession(sessionId(), messageId);\n\t\t\tif (result) {\n\t\t\t\tgoto(\"/chat/\" + result.newSessionId, { replaceState: false });\n\t\t\t\tpendingFirstMessage.set(result.draftContent);\n\t\t\t\tpendingFirstImages.set([]);\n\t\t\t}\n\t\t}\n\t\tasync function handleSSEEvent(event) {\n\t\t\tswitch (event.type) {\n\t\t\t\tcase \"content\": {\n\t\t\t\t\tconst text = event.text;\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tcontent: text\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst blocks = currentAssistant.blocks;\n\t\t\t\t\t\tconst lastBlock = blocks[blocks.length - 1];\n\t\t\t\t\t\tif (lastBlock && lastBlock.type === \"text\") lastBlock.content += text;\n\t\t\t\t\t\telse blocks.push({\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\tcontent: text\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"reasoning\": {\n\t\t\t\t\tconst text = event.text;\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\t\t\tcontent: text\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst blocks = currentAssistant.blocks;\n\t\t\t\t\t\tconst lastBlock = blocks[blocks.length - 1];\n\t\t\t\t\t\tif (lastBlock && lastBlock.type === \"reasoning\") lastBlock.content += text;\n\t\t\t\t\t\telse blocks.push({\n\t\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\t\tcontent: text\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_call\":\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t}\n\t\t\t\t\tcurrentAssistant.blocks.push({\n\t\t\t\t\t\ttype: \"tool\",\n\t\t\t\t\t\tname: event.name,\n\t\t\t\t\t\targs: event.args\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tool_result\": {\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t}\n\t\t\t\t\tconst blocks = currentAssistant.blocks;\n\t\t\t\t\tfor (let i = blocks.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tconst block = blocks[i];\n\t\t\t\t\t\tif (block.type === \"tool\" && !block.result && block.name === event.name) {\n\t\t\t\t\t\t\tblock.result = {\n\t\t\t\t\t\t\t\tsuccess: event.success,\n\t\t\t\t\t\t\t\toutput: event.output\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_execution_update\": {\n\t\t\t\t\tconst toolName = event.name;\n\t\t\t\t\tconst updateText = event.text;\n\t\t\t\t\tlet found = false;\n\t\t\t\t\tif (currentAssistant) {\n\t\t\t\t\t\tfor (let i = currentAssistant.blocks.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tconst block = currentAssistant.blocks[i];\n\t\t\t\t\t\t\tif (block.type === \"tool\" && block.name === toolName) {\n\t\t\t\t\t\t\t\tif (!block.result) block.result = {\n\t\t\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\t\t\toutput: \"\"\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tblock.result = {\n\t\t\t\t\t\t\t\t\t...block.result,\n\t\t\t\t\t\t\t\t\toutput: block.result.output + updateText\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (found) messages = [...messages];\n\t\t\t\t\t}\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"confirm_required\": {\n\t\t\t\t\tconst confirmId = event.confirmId;\n\t\t\t\t\tconst reason = event.confirmation?.reason || \"需要确认此操作\";\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t}\n\t\t\t\t\tcurrentAssistant.blocks.push({\n\t\t\t\t\t\ttype: \"confirm\",\n\t\t\t\t\t\tconfirmId,\n\t\t\t\t\t\tmessage: reason\n\t\t\t\t\t});\n\t\t\t\t\tawait new Promise((resolve) => {\n\t\t\t\t\t\tfrontendConfirms.set(confirmId, resolve);\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"error\":\n\t\t\t\t\tmessages.push({\n\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\trole: \"error\",\n\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\tcontent: event.message\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tdone: true\n\t\t\t\t\t});\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"steering_consumed\": {\n\t\t\t\t\tconst msgId = event.messageId;\n\t\t\t\t\tconst idx = inputQueue.findIndex((q) => q.id === msgId);\n\t\t\t\t\tif (idx !== -1) inputQueue.splice(idx, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"forked\":\n\t\t\t\t\tif (event.newSessionId) {\n\t\t\t\t\t\tbumpSession(event.newSessionId);\n\t\t\t\t\t\tgoto(\"/chat/\" + event.newSessionId, { replaceState: true });\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"retrying\":\n\t\t\t\t\tif (currentAssistant) {\n\t\t\t\t\t\tconst idx = messages.indexOf(currentAssistant);\n\t\t\t\t\t\tif (idx !== -1) messages.splice(idx, 1);\n\t\t\t\t\t\tcurrentAssistant = null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"retry_exhausted\":\n\t\t\t\t\tif (currentAssistant) {\n\t\t\t\t\t\tconst idx = messages.indexOf(currentAssistant);\n\t\t\t\t\t\tif (idx !== -1) messages.splice(idx, 1);\n\t\t\t\t\t\tcurrentAssistant = null;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\ttype: \"error_recovery\",\n\t\t\t\t\t\t\tmessage: event.message\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tdone: true\n\t\t\t\t\t};\n\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\tcurrentAssistant = null;\n\t\t\t\t\tstreaming = false;\n\t\t\t\t\tfocusTrigger++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"done\":\n\t\t\t\t\tif (currentAssistant && event.usage) currentAssistant.usage = event.usage;\n\t\t\t\t\tif (event.contextWindow) contextWindow = event.contextWindow;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet $$settled = true;\n\t\tlet $$inner_renderer;\n\t\tfunction $$render_inner($$renderer) {\n\t\t\t$$renderer.push(`<div class=\"chat-container svelte-1ca3w4l\"><div${attr_class(\"messages svelte-1ca3w4l\", void 0, { \"welcome\": messages.length === 0 })}>`);\n\t\t\tif (messages.length === 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\tEmptyState($$renderer, { customIcon });\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> <!--[-->`);\n\t\t\tconst each_array = ensure_array_like(messages);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet msg = each_array[$$index];\n\t\t\t\tMessageBubble($$renderer, {\n\t\t\t\t\tmessage: msg,\n\t\t\t\t\tonconfirm: handleConfirm,\n\t\t\t\t\tonrecovery: handleRecovery,\n\t\t\t\t\tonrollback: handleRollback,\n\t\t\t\t\tonfork: handleFork\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (cumulativeUsage().total > 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"stats-line svelte-1ca3w4l\"><span class=\"stats-label svelte-1ca3w4l\">Token</span> <span class=\"stats-value svelte-1ca3w4l\">${escape_html(cumulativeUsage().total)}</span> `);\n\t\t\t\tif (contextWindow) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"stats-sep svelte-1ca3w4l\">/</span> <span class=\"stats-max svelte-1ca3w4l\">${escape_html(contextWindow)}</span> `);\n\t\t\t\t\tif (cumulativeUsage().pct) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<span class=\"stats-pct svelte-1ca3w4l\">(${escape_html(cumulativeUsage().pct)}%)</span>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div> `);\n\t\t\tif (!nearBottom && streaming) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<button class=\"scroll-btn svelte-1ca3w4l\"><span class=\"material-symbols-rounded svelte-1ca3w4l\">arrow_downward</span></button>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> <div class=\"input-anchor svelte-1ca3w4l\">`);\n\t\t\tChatInput($$renderer, {\n\t\t\t\tstreaming,\n\t\t\t\tqueueCount: inputQueue.length,\n\t\t\t\tonsend: (imgs) => {\n\t\t\t\t\tconst msg = {\n\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\ttext: input,\n\t\t\t\t\t\timages: imgs\n\t\t\t\t\t};\n\t\t\t\t\tinput = \"\";\n\t\t\t\t\tfocusTrigger++;\n\t\t\t\t\tsendMessage(msg);\n\t\t\t\t},\n\t\t\t\tonstop: stopAI,\n\t\t\t\tfocusTrigger,\n\t\t\t\tget value() {\n\t\t\t\t\treturn input;\n\t\t\t\t},\n\t\t\t\tset value($$value) {\n\t\t\t\t\tinput = $$value;\n\t\t\t\t\t$$settled = false;\n\t\t\t\t}\n\t\t\t});\n\t\t\t$$renderer.push(`<!----></div></div>`);\n\t\t}\n\t\tdo {\n\t\t\t$$settled = true;\n\t\t\t$$inner_renderer = $$renderer.copy();\n\t\t\t$$render_inner($$inner_renderer);\n\t\t} while (!$$settled);\n\t\t$$renderer.subsume($$inner_renderer);\n\t\tif ($$store_subs) unsubscribe_stores($$store_subs);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_page.svelte-g3xR2V1m.js","sources":["../../../.svelte-kit/output/server/entries/pages/chat/_sessionId_/_page.svelte.js"],"sourcesContent":["import { H as attr, U as escape_html, a as ensure_array_like, c as store_get, d as html, i as derived, n as attr_class, u as unsubscribe_stores } from \"../../../../chunks/dev.js\";\nimport { n as goto } from \"../../../../chunks/client.js\";\nimport { t as page } from \"../../../../chunks/stores.js\";\nimport \"../../../../chunks/navigation.js\";\nimport { a as pendingFirstImages, i as forkSession, n as bumpSession, o as pendingFirstMessage, t as activeWorkspace } from \"../../../../chunks/session-store.js\";\nimport \"../../../../chunks/model-picker-state.svelte.js\";\nimport { n as EmptyState, t as ChatInput } from \"../../../../chunks/ChatInput.js\";\nimport { t as renderMarkdown } from \"../../../../chunks/markdown.js\";\n//#region src/lib/components/ToolCallCard.svelte\nfunction ToolCallCard($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, args, result = void 0 } = $$props;\n\t\tlet expanded = false;\n\t\tlet done = derived(() => !!result);\n\t\tlet errored = derived(() => result ? !result.success : false);\n\t\tlet summary = derived(() => {\n\t\t\tconst command = args.command;\n\t\t\tif (command) return command.length > 60 ? command.slice(0, 60) + \"…\" : command;\n\t\t\tconst keys = Object.keys(args);\n\t\t\tif (keys.length === 1) {\n\t\t\t\tconst v = String(args[keys[0]]);\n\t\t\t\treturn v.length > 60 ? v.slice(0, 60) + \"…\" : v;\n\t\t\t}\n\t\t\treturn \"\";\n\t\t});\n\t\t$$renderer.push(`<div${attr_class(\"tool-call svelte-87mzaw\", void 0, {\n\t\t\t\"tool-done\": done(),\n\t\t\t\"expanded\": expanded\n\t\t})}><div class=\"tool-header svelte-87mzaw\"><span class=\"material-symbols-rounded tool-icon svelte-87mzaw\">${escape_html(errored() ? \"warning\" : done() ? \"check_circle\" : \"pending\")}</span> <div class=\"tool-summary svelte-87mzaw\"><span class=\"tool-name svelte-87mzaw\">${escape_html(name)}</span> `);\n\t\tif (summary() && true) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"tool-command svelte-87mzaw\">${escape_html(summary())}</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> <span class=\"material-symbols-rounded expand-icon svelte-87mzaw\">${escape_html(\"expand_more\")}</span></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/ConfirmInline.svelte\nfunction ConfirmInline($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { confirmId, message, onresolve } = $$props;\n\t\t$$renderer.push(`<div class=\"confirm-inline svelte-ovag81\"><div class=\"confirm-header svelte-ovag81\"><span class=\"material-symbols-rounded confirm-icon svelte-ovag81\">gavel</span> <span class=\"confirm-label svelte-ovag81\">需要确认操作</span></div> <p class=\"confirm-message svelte-ovag81\">${escape_html(message)}</p> <div class=\"confirm-actions svelte-ovag81\"><button class=\"btn btn-outline svelte-ovag81\">拒绝</button> <button class=\"btn btn-primary svelte-ovag81\">允许</button></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/ReasoningBlock.svelte\nfunction ReasoningBlock($$renderer, $$props) {\n\tlet { content = \"\", done = false } = $$props;\n\t$$renderer.push(`<div${attr_class(\"reasoning svelte-1okjtiv\", void 0, {\n\t\t\"expanded\": false,\n\t\t\"done\": done\n\t})}><div class=\"reasoning-header svelte-1okjtiv\"><span class=\"reasoning-label svelte-1okjtiv\">Thought</span> `);\n\tif (!done) {\n\t\t$$renderer.push(\"<!--[0-->\");\n\t\t$$renderer.push(`<span class=\"reasoning-dot svelte-1okjtiv\">●</span>`);\n\t} else $$renderer.push(\"<!--[-1-->\");\n\t$$renderer.push(`<!--]--> <span class=\"material-symbols-rounded expand-icon svelte-1okjtiv\">${escape_html(\"expand_more\")}</span></div> `);\n\t$$renderer.push(\"<!--[-1-->\");\n\t$$renderer.push(`<!--]--></div>`);\n}\n//#endregion\n//#region src/lib/components/MessageBubble.svelte\nfunction MessageBubble($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { message, onconfirm, onrecovery, onrollback, onfork } = $$props;\n\t\tlet roleLabel = derived(() => message.role === \"error\" ? \"错误\" : \"Qualia\");\n\t\tconst htmlCache = /* @__PURE__ */ new Map();\n\t\tlet rollbackConfirm = false;\n\t\tfunction getBlockHtml(content) {\n\t\t\tconst cached = htmlCache.get(content);\n\t\t\tif (cached) return cached;\n\t\t\tconst html = renderMarkdown(content);\n\t\t\thtmlCache.set(content, html);\n\t\t\treturn html;\n\t\t}\n\t\tfunction isLiveBlock(block, i) {\n\t\t\tif (block.type !== \"text\") return false;\n\t\t\tif (message.done) return false;\n\t\t\treturn i === message.blocks.length - 1;\n\t\t}\n\t\tfunction handleConfirm(confirmId, approved) {\n\t\t\tonconfirm?.(confirmId, approved);\n\t\t}\n\t\t$$renderer.push(`<div${attr_class(\"message-row svelte-1e5n1dp\", void 0, {\n\t\t\t\"user\": message.role === \"user\",\n\t\t\t\"error\": message.role === \"error\"\n\t\t})}><div class=\"message-body svelte-1e5n1dp\">`);\n\t\tif (message.role !== \"user\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"message-role svelte-1e5n1dp\">${escape_html(roleLabel())}</div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <!--[-->`);\n\t\tconst each_array = ensure_array_like(message.blocks);\n\t\tfor (let i = 0, $$length = each_array.length; i < $$length; i++) {\n\t\t\tlet block = each_array[i];\n\t\t\tif (block.type === \"text\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\tif (isLiveBlock(block, i)) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"message-content svelte-1e5n1dp\">${escape_html(block.content)}</div>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"message-content markdown-body svelte-1e5n1dp\">${html(getBlockHtml(block.content))}</div>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t} else if (block.type === \"image\") {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<div class=\"image-block svelte-1e5n1dp\"><img${attr(\"src\", block.url)} alt=\"上传图片\" class=\"svelte-1e5n1dp\"/></div>`);\n\t\t\t} else if (block.type === \"reasoning\") {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\tReasoningBlock($$renderer, {\n\t\t\t\t\tcontent: block.content,\n\t\t\t\t\tdone: message.done\n\t\t\t\t});\n\t\t\t} else if (block.type === \"tool\") {\n\t\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t\tToolCallCard($$renderer, {\n\t\t\t\t\tname: block.name,\n\t\t\t\t\targs: block.args,\n\t\t\t\t\tresult: block.result\n\t\t\t\t});\n\t\t\t} else if (block.type === \"confirm\") {\n\t\t\t\t$$renderer.push(\"<!--[4-->\");\n\t\t\t\tConfirmInline($$renderer, {\n\t\t\t\t\tconfirmId: block.confirmId,\n\t\t\t\t\tmessage: block.message,\n\t\t\t\t\tonresolve: handleConfirm\n\t\t\t\t});\n\t\t\t} else if (block.type === \"error_recovery\") {\n\t\t\t\t$$renderer.push(\"<!--[5-->\");\n\t\t\t\t$$renderer.push(`<div class=\"error-recovery svelte-1e5n1dp\"><p class=\"recovery-msg svelte-1e5n1dp\">${escape_html(block.message)}</p> <div class=\"recovery-actions svelte-1e5n1dp\"><button class=\"btn-recovery svelte-1e5n1dp\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">refresh</span> 重试</button> <button class=\"btn-recovery btn-recovery-secondary svelte-1e5n1dp\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">undo</span> 回退</button></div></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (!message.done) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"cursor svelte-1e5n1dp\">|</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (message.role === \"user\" && message.done) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"msg-actions svelte-1e5n1dp\"><button class=\"action-btn svelte-1e5n1dp\" title=\"复制\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">content_copy</span></button> <button class=\"action-btn svelte-1e5n1dp\" title=\"分叉\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">call_split</span></button> <button${attr_class(\"action-btn svelte-1e5n1dp\", void 0, { \"confirm\": rollbackConfirm })} title=\"回退到此\"><span class=\"material-symbols-rounded svelte-1e5n1dp\">undo</span> `);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></button></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/routes/chat/[sessionId]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tvar $$store_subs;\n\t\tlet sessionId = derived(() => store_get($$store_subs ??= {}, \"$page\", page).params.sessionId);\n\t\tlet messages = [];\n\t\tlet input = \"\";\n\t\tlet streaming = false;\n\t\tlet currentAssistant = null;\n\t\tlet frontendConfirms = /* @__PURE__ */ new Map();\n\t\tlet focusTrigger = 0;\n\t\tlet inputQueue = [];\n\t\tlet abortController = null;\n\t\tlet streamReader = null;\n\t\tlet nearBottom = true;\n\t\tlet lastUserMessage = \"\";\n\t\tlet lastUserImages = [];\n\t\tlet contextWindow = void 0;\n\t\tlet customIcon = false;\n\t\tconst cumulativeUsage = derived(() => {\n\t\t\tlet total = 0;\n\t\t\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\t\t\tconst msg = messages[i];\n\t\t\t\tif (msg.role === \"assistant\" && msg.usage) {\n\t\t\t\t\ttotal = msg.usage.total_tokens;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst pct = contextWindow && total > 0 ? (total / contextWindow * 100).toFixed(1) : null;\n\t\t\treturn {\n\t\t\t\ttotal,\n\t\t\t\tpct\n\t\t\t};\n\t\t});\n\t\tfunction scrollToBottom() {\n\t\t\trequestAnimationFrame(() => {});\n\t\t}\n\t\tfunction forceScrollToBottom() {\n\t\t\tnearBottom = true;\n\t\t\trequestAnimationFrame(() => {});\n\t\t}\n\t\tfunction finishStreaming() {\n\t\t\tif (currentAssistant) {\n\t\t\t\tcurrentAssistant.done = true;\n\t\t\t\tcurrentAssistant = null;\n\t\t\t}\n\t\t\tabortController = null;\n\t\t\tstreamReader = null;\n\t\t\tstreaming = false;\n\t\t\tfocusTrigger++;\n\t\t\tscrollToBottom();\n\t\t\tif (inputQueue.length > 0) sendMessage(inputQueue.shift());\n\t\t}\n\t\tfunction stopAI() {\n\t\t\tabortController?.abort();\n\t\t\tstreamReader?.cancel().catch(() => {});\n\t\t\tstreamReader = null;\n\t\t}\n\t\tfunction handleConfirm(confirmId, approved) {\n\t\t\tfor (const msg of messages) {\n\t\t\t\tconst idx = msg.blocks.findIndex((b) => b.type === \"confirm\" && b.confirmId === confirmId);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tmsg.blocks.splice(idx, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfetch(\"/api/confirm\", {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tconfirmId,\n\t\t\t\t\tapproved\n\t\t\t\t})\n\t\t\t});\n\t\t\tconst resolve = frontendConfirms.get(confirmId);\n\t\t\tif (resolve) {\n\t\t\t\tfrontendConfirms.delete(confirmId);\n\t\t\t\tresolve();\n\t\t\t}\n\t\t}\n\t\tfunction handleRecovery(action) {\n\t\t\tconst recoveryMsg = messages.find((m) => m.blocks.some((b) => b.type === \"error_recovery\"));\n\t\t\tif (recoveryMsg) {\n\t\t\t\tconst idx = messages.indexOf(recoveryMsg);\n\t\t\t\tif (idx !== -1) messages.splice(idx, 1);\n\t\t\t}\n\t\t\tif (action === \"retry\") {\n\t\t\t\tif (lastUserMessage) sendMessage({\n\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\ttext: lastUserMessage,\n\t\t\t\t\timages: lastUserImages\n\t\t\t\t}, true);\n\t\t\t} else {\n\t\t\t\tinput = lastUserMessage;\n\t\t\t\tfocusTrigger++;\n\t\t\t}\n\t\t}\n\t\tasync function handleRollback(messageId) {\n\t\t\tif (streaming) {\n\t\t\t\tstopAI();\n\t\t\t\tawait new Promise((r) => setTimeout(r, 100));\n\t\t\t}\n\t\t\tconst idx = messages.findIndex((m) => m.id === messageId);\n\t\t\tif (idx === -1) return;\n\t\t\tconst rollbackText = messages[idx].blocks.filter((b) => b.type === \"text\").map((b) => b.content).join(\"\\n\");\n\t\t\tif (idx < messages.length - 1) messages.splice(idx + 1);\n\t\t\tmessages.splice(idx, 1);\n\t\t\tfetch(\"/api/messages\", {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\taction: \"deleteFrom\",\n\t\t\t\t\tsessionId: sessionId(),\n\t\t\t\t\tmessageId\n\t\t\t\t})\n\t\t\t}).catch(() => {});\n\t\t\tinput = rollbackText;\n\t\t\tfocusTrigger++;\n\t\t}\n\t\tasync function sendMessage(queued, skipUserMsg = false) {\n\t\t\tconst text = queued?.text?.trim();\n\t\t\tconst msgImages = queued?.images ?? [];\n\t\t\tif (!text || !queued) return;\n\t\t\tconst userMsgId = queued.id;\n\t\t\tif (streaming) {\n\t\t\t\tif (!skipUserMsg) {\n\t\t\t\t\tinputQueue.push({\n\t\t\t\t\t\tid: userMsgId,\n\t\t\t\t\t\ttext,\n\t\t\t\t\t\timages: [...msgImages]\n\t\t\t\t\t});\n\t\t\t\t\tfetch(\"/api/steer\", {\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\t\tsessionId: sessionId(),\n\t\t\t\t\t\t\tmessageId: userMsgId,\n\t\t\t\t\t\t\tmessage: text\n\t\t\t\t\t\t})\n\t\t\t\t\t}).catch(() => {});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlastUserMessage = text;\n\t\t\tlastUserImages = [...msgImages];\n\t\t\tif (!skipUserMsg) {\n\t\t\t\tconst blocks = [];\n\t\t\t\tfor (const img of msgImages) blocks.push({\n\t\t\t\t\ttype: \"image\",\n\t\t\t\t\turl: img.url,\n\t\t\t\t\tdetail: img.detail\n\t\t\t\t});\n\t\t\t\tblocks.push({\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\tcontent: text\n\t\t\t\t});\n\t\t\t\tmessages.push({\n\t\t\t\t\tid: userMsgId,\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tblocks,\n\t\t\t\t\tdone: true\n\t\t\t\t});\n\t\t\t\tforceScrollToBottom();\n\t\t\t}\n\t\t\tstreaming = true;\n\t\t\tconst controller = new AbortController();\n\t\t\tabortController = controller;\n\t\t\tstreamReader = null;\n\t\t\ttry {\n\t\t\t\tconst body = {\n\t\t\t\t\tsessionId: sessionId(),\n\t\t\t\t\tmessage: text,\n\t\t\t\t\tworkspace: store_get($$store_subs ??= {}, \"$activeWorkspace\", activeWorkspace)\n\t\t\t\t};\n\t\t\t\tif (!skipUserMsg) body.clientMessageId = userMsgId;\n\t\t\t\tif (msgImages.length > 0) body.images = msgImages.map((img) => ({\n\t\t\t\t\turl: img.url,\n\t\t\t\t\tdetail: img.detail || \"auto\"\n\t\t\t\t}));\n\t\t\t\tconst res = await fetch(\"/api/chat\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t\tbody: JSON.stringify(body),\n\t\t\t\t\tsignal: controller.signal\n\t\t\t\t});\n\t\t\t\tif (!res.ok) {\n\t\t\t\t\tconst err = await res.json().catch(() => ({ error: \"请求失败\" }));\n\t\t\t\t\tmessages.push({\n\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\trole: \"error\",\n\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\tcontent: err.error || \"请求失败\"\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tdone: true\n\t\t\t\t\t});\n\t\t\t\t\tfinishStreaming();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst newSid = res.headers.get(\"X-Session-Id\");\n\t\t\t\tif (newSid && newSid !== sessionId()) {\n\t\t\t\t\tbumpSession(newSid);\n\t\t\t\t\tgoto(\"/chat/\" + newSid, { replaceState: true });\n\t\t\t\t\treturn;\n\t\t\t\t} else if (newSid) bumpSession(newSid);\n\t\t\t\tconst reader = res.body.getReader();\n\t\t\t\tstreamReader = reader;\n\t\t\t\tconst decoder = new TextDecoder();\n\t\t\t\tlet buffer = \"\";\n\t\t\t\twhile (true) {\n\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\tif (done) break;\n\t\t\t\t\tbuffer += decoder.decode(value, { stream: true });\n\t\t\t\t\tconst lines = buffer.split(\"\\n\");\n\t\t\t\t\tbuffer = lines.pop() || \"\";\n\t\t\t\t\tfor (const line of lines) {\n\t\t\t\t\t\tconst trimmed = line.trim();\n\t\t\t\t\t\tif (!trimmed || !trimmed.startsWith(\"data:\")) continue;\n\t\t\t\t\t\tconst data = trimmed.slice(5).trim();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait handleSSEEvent(JSON.parse(data));\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfinishStreaming();\n\t\t\t} catch (e) {\n\t\t\t\tif (e.name === \"AbortError\") {\n\t\t\t\t\tif (currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant.done = true;\n\t\t\t\t\t\tcurrentAssistant = null;\n\t\t\t\t\t}\n\t\t\t\t\tabortController = null;\n\t\t\t\t\tstreamReader = null;\n\t\t\t\t\tstreaming = false;\n\t\t\t\t\tfocusTrigger++;\n\t\t\t\t\tif (inputQueue.length > 0) sendMessage(inputQueue.shift());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmessages.push({\n\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\trole: \"error\",\n\t\t\t\t\tblocks: [{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\tcontent: e.message || \"连接失败\"\n\t\t\t\t\t}],\n\t\t\t\t\tdone: true\n\t\t\t\t});\n\t\t\t\tfinishStreaming();\n\t\t\t}\n\t\t}\n\t\tasync function handleFork(messageId) {\n\t\t\tif (streaming || !sessionId()) return;\n\t\t\tconst result = await forkSession(sessionId(), messageId);\n\t\t\tif (result) {\n\t\t\t\tgoto(\"/chat/\" + result.newSessionId, { replaceState: false });\n\t\t\t\tpendingFirstMessage.set(result.draftContent);\n\t\t\t\tpendingFirstImages.set([]);\n\t\t\t}\n\t\t}\n\t\tasync function handleSSEEvent(event) {\n\t\t\tswitch (event.type) {\n\t\t\t\tcase \"content\": {\n\t\t\t\t\tconst text = event.text;\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tcontent: text\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst blocks = currentAssistant.blocks;\n\t\t\t\t\t\tconst lastBlock = blocks[blocks.length - 1];\n\t\t\t\t\t\tif (lastBlock && lastBlock.type === \"text\") lastBlock.content += text;\n\t\t\t\t\t\telse blocks.push({\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\tcontent: text\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"reasoning\": {\n\t\t\t\t\tconst text = event.text;\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\t\t\tcontent: text\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst blocks = currentAssistant.blocks;\n\t\t\t\t\t\tconst lastBlock = blocks[blocks.length - 1];\n\t\t\t\t\t\tif (lastBlock && lastBlock.type === \"reasoning\") lastBlock.content += text;\n\t\t\t\t\t\telse blocks.push({\n\t\t\t\t\t\t\ttype: \"reasoning\",\n\t\t\t\t\t\t\tcontent: text\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_call\":\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t}\n\t\t\t\t\tcurrentAssistant.blocks.push({\n\t\t\t\t\t\ttype: \"tool\",\n\t\t\t\t\t\tname: event.name,\n\t\t\t\t\t\targs: event.args\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tool_result\": {\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t}\n\t\t\t\t\tconst blocks = currentAssistant.blocks;\n\t\t\t\t\tfor (let i = blocks.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tconst block = blocks[i];\n\t\t\t\t\t\tif (block.type === \"tool\" && !block.result && block.name === event.name) {\n\t\t\t\t\t\t\tblock.result = {\n\t\t\t\t\t\t\t\tsuccess: event.success,\n\t\t\t\t\t\t\t\toutput: event.output\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_execution_update\": {\n\t\t\t\t\tconst toolName = event.name;\n\t\t\t\t\tconst updateText = event.text;\n\t\t\t\t\tlet found = false;\n\t\t\t\t\tif (currentAssistant) {\n\t\t\t\t\t\tfor (let i = currentAssistant.blocks.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tconst block = currentAssistant.blocks[i];\n\t\t\t\t\t\t\tif (block.type === \"tool\" && block.name === toolName) {\n\t\t\t\t\t\t\t\tif (!block.result) block.result = {\n\t\t\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\t\t\toutput: \"\"\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tblock.result = {\n\t\t\t\t\t\t\t\t\t...block.result,\n\t\t\t\t\t\t\t\t\toutput: block.result.output + updateText\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (found) messages = [...messages];\n\t\t\t\t\t}\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"confirm_required\": {\n\t\t\t\t\tconst confirmId = event.confirmId;\n\t\t\t\t\tconst reason = event.confirmation?.reason || \"需要确认此操作\";\n\t\t\t\t\tif (!currentAssistant) {\n\t\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tblocks: [],\n\t\t\t\t\t\t\tdone: false\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\t}\n\t\t\t\t\tcurrentAssistant.blocks.push({\n\t\t\t\t\t\ttype: \"confirm\",\n\t\t\t\t\t\tconfirmId,\n\t\t\t\t\t\tmessage: reason\n\t\t\t\t\t});\n\t\t\t\t\tawait new Promise((resolve) => {\n\t\t\t\t\t\tfrontendConfirms.set(confirmId, resolve);\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"error\":\n\t\t\t\t\tmessages.push({\n\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\trole: \"error\",\n\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\tcontent: event.message\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tdone: true\n\t\t\t\t\t});\n\t\t\t\t\tscrollToBottom();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"steering_consumed\": {\n\t\t\t\t\tconst msgId = event.messageId;\n\t\t\t\t\tconst idx = inputQueue.findIndex((q) => q.id === msgId);\n\t\t\t\t\tif (idx !== -1) inputQueue.splice(idx, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"forked\":\n\t\t\t\t\tif (event.newSessionId) {\n\t\t\t\t\t\tbumpSession(event.newSessionId);\n\t\t\t\t\t\tgoto(\"/chat/\" + event.newSessionId, { replaceState: true });\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"retrying\":\n\t\t\t\t\tif (currentAssistant) {\n\t\t\t\t\t\tconst idx = messages.indexOf(currentAssistant);\n\t\t\t\t\t\tif (idx !== -1) messages.splice(idx, 1);\n\t\t\t\t\t\tcurrentAssistant = null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"retry_exhausted\":\n\t\t\t\t\tif (currentAssistant) {\n\t\t\t\t\t\tconst idx = messages.indexOf(currentAssistant);\n\t\t\t\t\t\tif (idx !== -1) messages.splice(idx, 1);\n\t\t\t\t\t\tcurrentAssistant = null;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentAssistant = {\n\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tblocks: [{\n\t\t\t\t\t\t\ttype: \"error_recovery\",\n\t\t\t\t\t\t\tmessage: event.message\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tdone: true\n\t\t\t\t\t};\n\t\t\t\t\tmessages.push(currentAssistant);\n\t\t\t\t\tcurrentAssistant = null;\n\t\t\t\t\tstreaming = false;\n\t\t\t\t\tfocusTrigger++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"done\":\n\t\t\t\t\tif (currentAssistant && event.usage) currentAssistant.usage = event.usage;\n\t\t\t\t\tif (event.contextWindow) contextWindow = event.contextWindow;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet $$settled = true;\n\t\tlet $$inner_renderer;\n\t\tfunction $$render_inner($$renderer) {\n\t\t\t$$renderer.push(`<div class=\"chat-container svelte-1ca3w4l\"><div${attr_class(\"messages svelte-1ca3w4l\", void 0, { \"welcome\": messages.length === 0 })}>`);\n\t\t\tif (messages.length === 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\tEmptyState($$renderer, { customIcon });\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> <!--[-->`);\n\t\t\tconst each_array = ensure_array_like(messages);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet msg = each_array[$$index];\n\t\t\t\tMessageBubble($$renderer, {\n\t\t\t\t\tmessage: msg,\n\t\t\t\t\tonconfirm: handleConfirm,\n\t\t\t\t\tonrecovery: handleRecovery,\n\t\t\t\t\tonrollback: handleRollback,\n\t\t\t\t\tonfork: handleFork\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (cumulativeUsage().total > 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"stats-line svelte-1ca3w4l\"><span class=\"stats-label svelte-1ca3w4l\">Token</span> <span class=\"stats-value svelte-1ca3w4l\">${escape_html(cumulativeUsage().total)}</span> `);\n\t\t\t\tif (contextWindow) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"stats-sep svelte-1ca3w4l\">/</span> <span class=\"stats-max svelte-1ca3w4l\">${escape_html(contextWindow)}</span> `);\n\t\t\t\t\tif (cumulativeUsage().pct) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<span class=\"stats-pct svelte-1ca3w4l\">(${escape_html(cumulativeUsage().pct)}%)</span>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div> `);\n\t\t\tif (!nearBottom && streaming) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<button class=\"scroll-btn svelte-1ca3w4l\"><span class=\"material-symbols-rounded svelte-1ca3w4l\">arrow_downward</span></button>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> <div class=\"input-anchor svelte-1ca3w4l\">`);\n\t\t\tChatInput($$renderer, {\n\t\t\t\tstreaming,\n\t\t\t\tqueueCount: inputQueue.length,\n\t\t\t\tonsend: (imgs) => {\n\t\t\t\t\tconst msg = {\n\t\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\t\ttext: input,\n\t\t\t\t\t\timages: imgs\n\t\t\t\t\t};\n\t\t\t\t\tinput = \"\";\n\t\t\t\t\tfocusTrigger++;\n\t\t\t\t\tsendMessage(msg);\n\t\t\t\t},\n\t\t\t\tonstop: stopAI,\n\t\t\t\tfocusTrigger,\n\t\t\t\tget value() {\n\t\t\t\t\treturn input;\n\t\t\t\t},\n\t\t\t\tset value($$value) {\n\t\t\t\t\tinput = $$value;\n\t\t\t\t\t$$settled = false;\n\t\t\t\t}\n\t\t\t});\n\t\t\t$$renderer.push(`<!----></div></div>`);\n\t\t}\n\t\tdo {\n\t\t\t$$settled = true;\n\t\t\t$$inner_renderer = $$renderer.copy();\n\t\t\t$$render_inner($$inner_renderer);\n\t\t} while (!$$settled);\n\t\t$$renderer.subsume($$inner_renderer);\n\t\tif ($$store_subs) unsubscribe_stores($$store_subs);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as createStorage, r as readConfig } from './config-
|
|
1
|
+
import { c as createStorage, r as readConfig } from './config-DS5dPt9_.js';
|
|
2
2
|
import './chat-steering-DTefLITL.js';
|
|
3
3
|
import './prompts-tcGD1LCs.js';
|
|
4
4
|
import 'node:fs';
|
|
@@ -7,7 +7,7 @@ import 'node:fs/promises';
|
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import 'node:os';
|
|
10
|
-
import './index.js-
|
|
10
|
+
import './index.js-CJZab21L.js';
|
|
11
11
|
import 'node:module';
|
|
12
12
|
import 'fs';
|
|
13
13
|
import 'path';
|
|
@@ -103,4 +103,4 @@ async function POST({ request }) {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
export { GET, POST };
|
|
106
|
-
//# sourceMappingURL=_server.ts-
|
|
106
|
+
//# sourceMappingURL=_server.ts-1Qey6gUs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-1Qey6gUs.js","sources":["../../../.svelte-kit/output/server/entries/endpoints/api/sessions/_server.ts.js"],"sourcesContent":["import { o as readConfig, x as createStorage } from \"../../../../chunks/config.js\";\n//#region src/routes/api/sessions/+server.ts\nasync function GET() {\n\ttry {\n\t\tconst sessions = await createStorage({ enabled: readConfig().storageEnabled }).listSessions();\n\t\treturn new Response(JSON.stringify(sessions), { headers: { \"Content-Type\": \"application/json\" } });\n\t} catch (e) {\n\t\treturn new Response(JSON.stringify({ error: e.message }), {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t}\n}\nasync function POST({ request }) {\n\ttry {\n\t\tconst body = await request.json();\n\t\tconst { action } = body;\n\t\tconst storage = createStorage({ enabled: readConfig().storageEnabled });\n\t\tswitch (action) {\n\t\t\tcase \"create\": {\n\t\t\t\tconst { workspace } = body;\n\t\t\t\tconst session = await storage.createSession(void 0, void 0, workspace || \"\");\n\t\t\t\treturn new Response(JSON.stringify(session), { headers: { \"Content-Type\": \"application/json\" } });\n\t\t\t}\n\t\t\tcase \"fork\": {\n\t\t\t\tconst { sessionId, messageId } = body;\n\t\t\t\tif (!sessionId || !messageId) return new Response(JSON.stringify({ error: \"缺少 sessionId 或 messageId\" }), {\n\t\t\t\t\tstatus: 400,\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t\t\t});\n\t\t\t\tconst parentSession = await storage.getSession(sessionId);\n\t\t\t\tif (!parentSession) return new Response(JSON.stringify({ error: \"会话不存在\" }), {\n\t\t\t\t\tstatus: 404,\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t\t\t});\n\t\t\t\tconst allMessages = await storage.getMessages(sessionId);\n\t\t\t\tconst targetMsg = allMessages.find((m) => m.id === messageId);\n\t\t\t\tif (!targetMsg) return new Response(JSON.stringify({ error: \"消息不存在\" }), {\n\t\t\t\t\tstatus: 404,\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t\t\t});\n\t\t\t\tconst beforeMessages = allMessages.filter((m) => m.seq < targetMsg.seq && m.role !== \"system\");\n\t\t\t\tconst newSession = await storage.createSession(`[分叉] ${parentSession.title}`, parentSession.memory_snapshot, parentSession.workspace);\n\t\t\t\tfor (const msg of beforeMessages) await storage.addMessage(newSession.id, {\n\t\t\t\t\tsession_id: newSession.id,\n\t\t\t\t\trole: msg.role,\n\t\t\t\t\tcontent: msg.content,\n\t\t\t\t\treasoning_content: msg.reasoning_content,\n\t\t\t\t\ttool_calls: msg.tool_calls,\n\t\t\t\t\ttool_call_id: msg.tool_call_id,\n\t\t\t\t\tname: msg.name,\n\t\t\t\t\tusage: msg.usage\n\t\t\t\t});\n\t\t\t\treturn new Response(JSON.stringify({\n\t\t\t\t\tnewSessionId: newSession.id,\n\t\t\t\t\tdraftContent: targetMsg.content\n\t\t\t\t}), { headers: { \"Content-Type\": \"application/json\" } });\n\t\t\t}\n\t\t\tcase \"setTitle\": {\n\t\t\t\tconst { sessionId, title } = body;\n\t\t\t\tawait storage.setSessionTitle(sessionId, title);\n\t\t\t\treturn new Response(JSON.stringify({ ok: true }), { headers: { \"Content-Type\": \"application/json\" } });\n\t\t\t}\n\t\t\tcase \"delete\": {\n\t\t\t\tconst { sessionId } = body;\n\t\t\t\tawait storage.deleteSession(sessionId);\n\t\t\t\treturn new Response(JSON.stringify({ ok: true }), { headers: { \"Content-Type\": \"application/json\" } });\n\t\t\t}\n\t\t\tcase \"getMessages\": {\n\t\t\t\tconst { sessionId } = body;\n\t\t\t\tconst messages = await storage.getMessages(sessionId);\n\t\t\t\treturn new Response(JSON.stringify(messages), { headers: { \"Content-Type\": \"application/json\" } });\n\t\t\t}\n\t\t\tcase \"listWorkspaces\": {\n\t\t\t\tconst workspaces = await storage.listWorkspaces();\n\t\t\t\treturn new Response(JSON.stringify(workspaces), { headers: { \"Content-Type\": \"application/json\" } });\n\t\t\t}\n\t\t\tdefault: return new Response(JSON.stringify({ error: \"未知操作\" }), {\n\t\t\t\tstatus: 400,\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t\t});\n\t\t}\n\t} catch (e) {\n\t\treturn new Response(JSON.stringify({ error: e.message }), {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t}\n}\n//#endregion\nexport { GET, POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA;AACA,eAAe,GAAG,GAAG;AACrB,CAAC,IAAI;AACL,EAAE,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,YAAY,EAAE;AAC/F,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACpG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;AAC5D,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAChD,GAAG,CAAC;AACJ,CAAC;AACD;AACA,eAAe,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE;AACjC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AACzB,EAAE,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,cAAc,EAAE,CAAC;AACzE,EAAE,QAAQ,MAAM;AAChB,GAAG,KAAK,QAAQ,EAAE;AAClB,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;AAC9B,IAAI,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;AAChF,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACrG,GAAG;AACH,GAAG,KAAK,MAAM,EAAE;AAChB,IAAI,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI;AACzC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,EAAE;AAC7G,KAAK,MAAM,EAAE,GAAG;AAChB,KAAK,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAClD,KAAK,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AAC7D,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;AAChF,KAAK,MAAM,EAAE,GAAG;AAChB,KAAK,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAClD,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;AAC5D,IAAI,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC;AACjE,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;AAC5E,KAAK,MAAM,EAAE,GAAG;AAChB,KAAK,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAClD,KAAK,CAAC;AACN,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClG,IAAI,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC;AACzI,IAAI,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE;AAC9E,KAAK,UAAU,EAAE,UAAU,CAAC,EAAE;AAC9B,KAAK,IAAI,EAAE,GAAG,CAAC,IAAI;AACnB,KAAK,OAAO,EAAE,GAAG,CAAC,OAAO;AACzB,KAAK,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;AAC7C,KAAK,UAAU,EAAE,GAAG,CAAC,UAAU;AAC/B,KAAK,YAAY,EAAE,GAAG,CAAC,YAAY;AACnC,KAAK,IAAI,EAAE,GAAG,CAAC,IAAI;AACnB,KAAK,KAAK,EAAE,GAAG,CAAC;AAChB,KAAK,CAAC;AACN,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,KAAK,YAAY,EAAE,UAAU,CAAC,EAAE;AAChC,KAAK,YAAY,EAAE,SAAS,CAAC;AAC7B,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAC5D,GAAG;AACH,GAAG,KAAK,UAAU,EAAE;AACpB,IAAI,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI;AACrC,IAAI,MAAM,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC;AACnD,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAC1G,GAAG;AACH,GAAG,KAAK,QAAQ,EAAE;AAClB,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;AAC9B,IAAI,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC;AAC1C,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAC1G,GAAG;AACH,GAAG,KAAK,aAAa,EAAE;AACvB,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;AAC9B,IAAI,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;AACzD,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACtG,GAAG;AACH,GAAG,KAAK,gBAAgB,EAAE;AAC1B,IAAI,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE;AACrD,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACxG,GAAG;AACH,GAAG,SAAS,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;AACnE,IAAI,MAAM,EAAE,GAAG;AACf,IAAI,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AACjD,IAAI,CAAC;AACL;AACA,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;AAC5D,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAChD,GAAG,CAAC;AACJ,CAAC;AACD;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as runSummarizeJob } from './config-
|
|
1
|
+
import { p as runSummarizeJob } from './config-DS5dPt9_.js';
|
|
2
2
|
import './chat-steering-DTefLITL.js';
|
|
3
3
|
import './prompts-tcGD1LCs.js';
|
|
4
4
|
import 'node:fs';
|
|
@@ -7,7 +7,7 @@ import 'node:fs/promises';
|
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import 'node:os';
|
|
10
|
-
import './index.js-
|
|
10
|
+
import './index.js-CJZab21L.js';
|
|
11
11
|
import 'node:module';
|
|
12
12
|
import 'fs';
|
|
13
13
|
import 'path';
|
|
@@ -27,4 +27,4 @@ async function POST({ request }) {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export { POST };
|
|
30
|
-
//# sourceMappingURL=_server.ts-
|
|
30
|
+
//# sourceMappingURL=_server.ts-B8muK7Tl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-B8muK7Tl.js","sources":["../../../.svelte-kit/output/server/entries/endpoints/api/summarize/_server.ts.js"],"sourcesContent":["import { p as runSummarizeJob } from \"../../../../chunks/config.js\";\n//#region src/routes/api/summarize/+server.ts\nasync function POST({ request }) {\n\ttry {\n\t\tconst result = await runSummarizeJob((await request.json().catch(() => ({}))).force === true);\n\t\treturn new Response(JSON.stringify(result), { headers: { \"Content-Type\": \"application/json\" } });\n\t} catch (e) {\n\t\treturn new Response(JSON.stringify({ error: e.message }), {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t}\n}\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA;AACA,eAAe,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE;AACjC,CAAC,IAAI;AACL,EAAE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAC/F,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAClG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;AAC5D,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAChD,GAAG,CAAC;AACJ,CAAC;AACD;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { q as getAllTasks, t as deleteTask, u as resumeTask, v as pauseTask } from './config-
|
|
2
|
-
import { j as json } from './index.js-
|
|
1
|
+
import { q as getAllTasks, t as deleteTask, u as resumeTask, v as pauseTask } from './config-DS5dPt9_.js';
|
|
2
|
+
import { j as json } from './index.js-CJZab21L.js';
|
|
3
3
|
import './chat-steering-DTefLITL.js';
|
|
4
4
|
import './prompts-tcGD1LCs.js';
|
|
5
5
|
import 'node:fs';
|
|
@@ -29,4 +29,4 @@ async function POST({ request }) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export { GET, POST };
|
|
32
|
-
//# sourceMappingURL=_server.ts-
|
|
32
|
+
//# sourceMappingURL=_server.ts-BydeSZjf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-BydeSZjf.js","sources":["../../../.svelte-kit/output/server/entries/endpoints/api/tasks/_server.ts.js"],"sourcesContent":["import { C as getAllTasks, S as deleteTask, T as resumeTask, w as pauseTask } from \"../../../../chunks/config.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/tasks/+server.ts\nfunction GET() {\n\treturn json({ tasks: getAllTasks() });\n}\nasync function POST({ request }) {\n\tconst { action, id } = await request.json();\n\tif (!id) return json({ error: \"缺少任务 ID\" }, { status: 400 });\n\tswitch (action) {\n\t\tcase \"pause\": return json({ success: await pauseTask(id) });\n\t\tcase \"resume\": return json({ success: await resumeTask(id) });\n\t\tcase \"delete\": return json({ success: await deleteTask(id) });\n\t\tdefault: return json({ error: `未知操作: ${action}` }, { status: 400 });\n\t}\n}\n//#endregion\nexport { GET, POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA;AACA,SAAS,GAAG,GAAG;AACf,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC;AACtC;AACA,eAAe,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE;AACjC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC5C,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC5D,CAAC,QAAQ,MAAM;AACf,EAAE,KAAK,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7D,EAAE,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/D,EAAE,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/D,EAAE,SAAS,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrE;AACA;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as readConfig, w as writeConfig, k as setReasoningEffort, l as setActiveModel, m as removeProvider, n as addProvider } from './config-
|
|
2
|
-
import { E as EmailAdapter } from './gateway-
|
|
3
|
-
import { j as json } from './index.js-
|
|
1
|
+
import { r as readConfig, w as writeConfig, k as setReasoningEffort, l as setActiveModel, m as removeProvider, n as addProvider } from './config-DS5dPt9_.js';
|
|
2
|
+
import { E as EmailAdapter } from './gateway-0QMjPPVX.js';
|
|
3
|
+
import { j as json } from './index.js-CJZab21L.js';
|
|
4
4
|
import './chat-steering-DTefLITL.js';
|
|
5
5
|
import './prompts-tcGD1LCs.js';
|
|
6
6
|
import 'node:fs';
|
|
@@ -61,4 +61,4 @@ async function PUT({ request }) {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export { GET, PUT };
|
|
64
|
-
//# sourceMappingURL=_server.ts-
|
|
64
|
+
//# sourceMappingURL=_server.ts-DQkvzHwv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-DQkvzHwv.js","sources":["../../../.svelte-kit/output/server/entries/endpoints/api/config/_server.ts.js"],"sourcesContent":["import { c as setActiveModel, l as setReasoningEffort, o as readConfig, s as removeProvider, t as addProvider, u as writeConfig } from \"../../../../chunks/config.js\";\nimport { r as EmailAdapter } from \"../../../../chunks/gateway.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/config/+server.ts\nasync function GET() {\n\treturn json(readConfig());\n}\nasync function PUT({ request }) {\n\ttry {\n\t\tconst body = await request.json();\n\t\tswitch (body.action) {\n\t\t\tcase \"addProvider\": {\n\t\t\t\tconst provider = body.provider;\n\t\t\t\tif (!provider.name || !provider.apiKey || !provider.baseURL) return json({ error: \"Missing required fields: name, apiKey, baseURL\" }, { status: 400 });\n\t\t\t\treturn json(addProvider(provider));\n\t\t\t}\n\t\t\tcase \"removeProvider\": return json(removeProvider(body.name));\n\t\t\tcase \"setActiveModel\": return json(setActiveModel(body.modelId));\n\t\t\tcase \"setReasoningEffort\": return json(setReasoningEffort(body.value));\n\t\t\tcase \"writeConfig\":\n\t\t\t\twriteConfig(body.config);\n\t\t\t\treturn json(readConfig());\n\t\t\tcase \"testEmail\": {\n\t\t\t\tconst raw = body.config;\n\t\t\t\tconst cfg = {\n\t\t\t\t\tsmtpHost: String(raw.smtpHost || \"\"),\n\t\t\t\t\tsmtpPort: Number(raw.smtpPort || 465),\n\t\t\t\t\tsmtpSecure: raw.smtpSecure !== false,\n\t\t\t\t\tuser: String(raw.user || \"\"),\n\t\t\t\t\tpassword: String(raw.password || \"\"),\n\t\t\t\t\tfrom: String(raw.from || \"\"),\n\t\t\t\t\tto: String(raw.to || \"\")\n\t\t\t\t};\n\t\t\t\tif (!cfg.smtpHost || !cfg.user || !cfg.to) return json({\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: \"SMTP 服务器、账号、收件人不能为空\"\n\t\t\t\t});\n\t\t\t\tconst adapter = new EmailAdapter(cfg);\n\t\t\t\tconst ok = await adapter.connect();\n\t\t\t\tawait adapter.disconnect();\n\t\t\t\treturn json({ success: ok });\n\t\t\t}\n\t\t\tdefault: return json({ error: \"Unknown action\" }, { status: 400 });\n\t\t}\n\t} catch (e) {\n\t\treturn json({ error: e.message }, { status: 500 });\n\t}\n}\n//#endregion\nexport { GET, PUT };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA;AACA,eAAe,GAAG,GAAG;AACrB,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B;AACA,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE;AAChC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACnC,EAAE,QAAQ,IAAI,CAAC,MAAM;AACrB,GAAG,KAAK,aAAa,EAAE;AACvB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC1J,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtC,GAAG;AACH,GAAG,KAAK,gBAAgB,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChE,GAAG,KAAK,gBAAgB,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnE,GAAG,KAAK,oBAAoB,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzE,GAAG,KAAK,aAAa;AACrB,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;AAC7B,GAAG,KAAK,WAAW,EAAE;AACrB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;AAC3B,IAAI,MAAM,GAAG,GAAG;AAChB,KAAK,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;AACzC,KAAK,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC;AAC1C,KAAK,UAAU,EAAE,GAAG,CAAC,UAAU,KAAK,KAAK;AACzC,KAAK,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AACjC,KAAK,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;AACzC,KAAK,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AACjC,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;AAC5B,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AAC3D,KAAK,OAAO,EAAE,KAAK;AACnB,KAAK,KAAK,EAAE;AACZ,KAAK,CAAC;AACN,IAAI,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC;AACzC,IAAI,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;AACtC,IAAI,MAAM,OAAO,CAAC,UAAU,EAAE;AAC9B,IAAI,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAChC,GAAG;AACH,GAAG,SAAS,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrE;AACA,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpD,CAAC;AACD;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as readConfig, o as getAllAvailableModels } from './config-
|
|
2
|
-
import { j as json } from './index.js-
|
|
1
|
+
import { r as readConfig, o as getAllAvailableModels } from './config-DS5dPt9_.js';
|
|
2
|
+
import { j as json } from './index.js-CJZab21L.js';
|
|
3
3
|
import './chat-steering-DTefLITL.js';
|
|
4
4
|
import './prompts-tcGD1LCs.js';
|
|
5
5
|
import 'node:fs';
|
|
@@ -51,4 +51,4 @@ async function GET() {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export { GET };
|
|
54
|
-
//# sourceMappingURL=_server.ts-
|
|
54
|
+
//# sourceMappingURL=_server.ts-DamX-ESD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-DamX-ESD.js","sources":["../../../.svelte-kit/output/server/entries/endpoints/api/models/_server.ts.js"],"sourcesContent":["import { o as readConfig, r as getAllAvailableModels } from \"../../../../chunks/config.js\";\nimport { json } from \"@sveltejs/kit\";\n//#region src/routes/api/models/+server.ts\nasync function GET() {\n\tconst config = readConfig();\n\tconst models = getAllAvailableModels();\n\tfor (const provider of config.providers) if (provider.type === \"ollama\") {\n\t\tlet ollamaURL = (provider.ollamaURL || provider.baseURL?.replace(/\\/v1\\/?$/, \"\") || \"http://localhost:11434\").replace(/\\/+$/, \"\");\n\t\ttry {\n\t\t\tconst res = await fetch(`${ollamaURL}/api/tags`);\n\t\t\tif (res.ok) {\n\t\t\t\tconst data = await res.json();\n\t\t\t\tfor (const m of data.models || []) models.push({\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tid: m.name,\n\t\t\t\t\t\tname: m.name,\n\t\t\t\t\t\tcontextWindow: 128e3,\n\t\t\t\t\t\tsupportsReasoning: false,\n\t\t\t\t\t\treasoningEffortValues: [],\n\t\t\t\t\t\tsupportsVision: false\n\t\t\t\t\t},\n\t\t\t\t\tproviderName: provider.name\n\t\t\t\t});\n\t\t\t} else console.error(`[ollama] /api/tags returned ${res.status} for ${ollamaURL}`);\n\t\t} catch (e) {\n\t\t\tconsole.error(`[ollama] failed to fetch models from ${ollamaURL}: ${e.message}`);\n\t\t}\n\t}\n\treturn json(models.map((m) => ({\n\t\tid: m.model.id,\n\t\tname: m.model.name,\n\t\tcontextWindow: m.model.contextWindow,\n\t\tsupportsReasoning: m.model.supportsReasoning,\n\t\treasoningEffortValues: m.model.reasoningEffortValues,\n\t\tsupportsVision: m.model.supportsVision,\n\t\tproviderName: m.providerName\n\t})));\n}\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA;AACA,eAAe,GAAG,GAAG;AACrB,CAAC,MAAM,MAAM,GAAG,UAAU,EAAE;AAC5B,CAAC,MAAM,MAAM,GAAG,qBAAqB,EAAE;AACvC,CAAC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC1E,EAAE,IAAI,SAAS,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,wBAAwB,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACnI,EAAE,IAAI;AACN,GAAG,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AACnD,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE;AACf,IAAI,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;AACjC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;AACnD,KAAK,KAAK,EAAE;AACZ,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI;AAChB,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI;AAClB,MAAM,aAAa,EAAE,KAAK;AAC1B,MAAM,iBAAiB,EAAE,KAAK;AAC9B,MAAM,qBAAqB,EAAE,EAAE;AAC/B,MAAM,cAAc,EAAE;AACtB,MAAM;AACN,KAAK,YAAY,EAAE,QAAQ,CAAC;AAC5B,KAAK,CAAC;AACN,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AACrF,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;AACd,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,qCAAqC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnF,EAAE;AACF,CAAC;AACD,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAChC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;AAChB,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;AACpB,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa;AACtC,EAAE,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB;AAC9C,EAAE,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB;AACtD,EAAE,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc;AACxC,EAAE,YAAY,EAAE,CAAC,CAAC;AAClB,EAAE,CAAC,CAAC,CAAC;AACL;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as createStorage, r as readConfig } from './config-
|
|
1
|
+
import { c as createStorage, r as readConfig } from './config-DS5dPt9_.js';
|
|
2
2
|
import './chat-steering-DTefLITL.js';
|
|
3
3
|
import './prompts-tcGD1LCs.js';
|
|
4
4
|
import 'node:fs';
|
|
@@ -7,7 +7,7 @@ import 'node:fs/promises';
|
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import 'node:os';
|
|
10
|
-
import './index.js-
|
|
10
|
+
import './index.js-CJZab21L.js';
|
|
11
11
|
import 'node:module';
|
|
12
12
|
import 'fs';
|
|
13
13
|
import 'path';
|
|
@@ -39,4 +39,4 @@ async function POST({ request }) {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export { POST };
|
|
42
|
-
//# sourceMappingURL=_server.ts-
|
|
42
|
+
//# sourceMappingURL=_server.ts-_IHmtcF8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-_IHmtcF8.js","sources":["../../../.svelte-kit/output/server/entries/endpoints/api/messages/_server.ts.js"],"sourcesContent":["import { o as readConfig, x as createStorage } from \"../../../../chunks/config.js\";\n//#region src/routes/api/messages/+server.ts\nasync function POST({ request }) {\n\ttry {\n\t\tconst { action, sessionId, messageId } = await request.json();\n\t\tif (!sessionId || !messageId) return new Response(JSON.stringify({ error: \"缺少参数\" }), {\n\t\t\tstatus: 400,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t\tconst storage = createStorage({ enabled: readConfig().storageEnabled });\n\t\tif (action === \"deleteFrom\") {\n\t\t\tawait storage.deleteMessagesFrom(sessionId, messageId);\n\t\t\treturn new Response(JSON.stringify({ ok: true }), { headers: { \"Content-Type\": \"application/json\" } });\n\t\t}\n\t\treturn new Response(JSON.stringify({ error: \"未知操作\" }), {\n\t\t\tstatus: 400,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t} catch (e) {\n\t\treturn new Response(JSON.stringify({ error: e.message }), {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t}\n}\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA;AACA,eAAe,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE;AACjC,CAAC,IAAI;AACL,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AAC/D,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;AACvF,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAChD,GAAG,CAAC;AACJ,EAAE,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,cAAc,EAAE,CAAC;AACzE,EAAE,IAAI,MAAM,KAAK,YAAY,EAAE;AAC/B,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC;AACzD,GAAG,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACzG,EAAE;AACF,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;AACzD,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAChD,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;AAC5D,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAChD,GAAG,CAAC;AACJ,CAAC;AACD;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as readConfig, w as writeConfig, g as getDataDir, a as getDataPath } from './config-
|
|
1
|
+
import { r as readConfig, w as writeConfig, g as getDataDir, a as getDataPath } from './config-DS5dPt9_.js';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { unlink, readFile, mkdir, writeFile } from 'node:fs/promises';
|
|
4
4
|
import './chat-steering-DTefLITL.js';
|
|
@@ -7,7 +7,7 @@ import 'node:path';
|
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'node:child_process';
|
|
9
9
|
import 'node:os';
|
|
10
|
-
import './index.js-
|
|
10
|
+
import './index.js-CJZab21L.js';
|
|
11
11
|
import 'node:module';
|
|
12
12
|
import 'fs';
|
|
13
13
|
import 'path';
|
|
@@ -70,4 +70,4 @@ async function DELETE() {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
export { DELETE, GET, POST };
|
|
73
|
-
//# sourceMappingURL=_server.ts-
|
|
73
|
+
//# sourceMappingURL=_server.ts-eiimbDQG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-eiimbDQG.js","sources":["../../../.svelte-kit/output/server/entries/endpoints/api/brand-icon/_server.ts.js"],"sourcesContent":["import { D as getDataDir, O as getDataPath, o as readConfig, u as writeConfig } from \"../../../../chunks/config.js\";\nimport { existsSync } from \"node:fs\";\nimport { mkdir, readFile, unlink, writeFile } from \"node:fs/promises\";\n//#region src/routes/api/brand-icon/+server.ts\nvar ICON_PATH = getDataPath(\"brand-icon\");\nasync function GET() {\n\ttry {\n\t\tif (!existsSync(ICON_PATH)) return new Response(null, { status: 404 });\n\t\tconst buffer = await readFile(ICON_PATH);\n\t\treturn new Response(buffer, { headers: {\n\t\t\t\"Content-Type\": \"image/png\",\n\t\t\t\"Cache-Control\": \"public, max-age=3600\"\n\t\t} });\n\t} catch {\n\t\treturn new Response(null, { status: 404 });\n\t}\n}\nasync function POST({ request }) {\n\ttry {\n\t\tconst file = (await request.formData()).get(\"file\");\n\t\tif (!file || !(file instanceof File)) return new Response(JSON.stringify({ error: \"未提供图片文件\" }), {\n\t\t\tstatus: 400,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t\tconst buffer = Buffer.from(await file.arrayBuffer());\n\t\tif (!existsSync(getDataDir())) await mkdir(getDataDir(), { recursive: true });\n\t\tawait writeFile(ICON_PATH, buffer);\n\t\tconst config = readConfig();\n\t\tconfig.customBrandIcon = true;\n\t\twriteConfig(config);\n\t\treturn new Response(JSON.stringify({\n\t\t\tok: true,\n\t\t\tcustomBrandIcon: true\n\t\t}), { headers: { \"Content-Type\": \"application/json\" } });\n\t} catch (e) {\n\t\treturn new Response(JSON.stringify({ error: e.message }), {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t}\n}\nasync function DELETE() {\n\ttry {\n\t\tif (existsSync(ICON_PATH)) await unlink(ICON_PATH);\n\t\tconst config = readConfig();\n\t\tconfig.customBrandIcon = false;\n\t\twriteConfig(config);\n\t\treturn new Response(JSON.stringify({\n\t\t\tok: true,\n\t\t\tcustomBrandIcon: false\n\t\t}), { headers: { \"Content-Type\": \"application/json\" } });\n\t} catch (e) {\n\t\treturn new Response(JSON.stringify({ error: e.message }), {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t}\n}\n//#endregion\nexport { DELETE, GET, POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as readConfig, b as getProviderForModel, d as getActiveModel, e as createProvider, c as createStorage, f as getContextWindow, T as ToolRegistry, C as CORE_TOOLS, S as SCHEDULING_TOOLS, h as createSearchHistoryTool, i as ContextBuilder, A as AgentLoop, j as AgentLogger, s as sessionLock } from './config-
|
|
1
|
+
import { r as readConfig, b as getProviderForModel, d as getActiveModel, e as createProvider, c as createStorage, f as getContextWindow, T as ToolRegistry, C as CORE_TOOLS, S as SCHEDULING_TOOLS, h as createSearchHistoryTool, i as ContextBuilder, A as AgentLoop, j as AgentLogger, s as sessionLock } from './config-DS5dPt9_.js';
|
|
2
2
|
import { p as pendingConfirms } from './chat-confirm-BW2aJ2qz.js';
|
|
3
3
|
import './chat-steering-DTefLITL.js';
|
|
4
4
|
import './prompts-tcGD1LCs.js';
|
|
@@ -8,7 +8,7 @@ import 'node:fs/promises';
|
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'node:child_process';
|
|
10
10
|
import 'node:os';
|
|
11
|
-
import './index.js-
|
|
11
|
+
import './index.js-CJZab21L.js';
|
|
12
12
|
import 'node:module';
|
|
13
13
|
import 'fs';
|
|
14
14
|
import 'path';
|
|
@@ -112,4 +112,4 @@ async function POST({ request }) {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
export { POST };
|
|
115
|
-
//# sourceMappingURL=_server.ts-
|
|
115
|
+
//# sourceMappingURL=_server.ts-ouWIsxXX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-ouWIsxXX.js","sources":["../../../.svelte-kit/output/server/entries/endpoints/api/chat/_server.ts.js"],"sourcesContent":["import { A as createProvider, E as sessionLock, _ as SCHEDULING_TOOLS, a as getProviderForModel, f as AgentLogger, g as CORE_TOOLS, h as AgentLoop, i as getContextWindow, k as ToolRegistry, m as ContextBuilder, n as getActiveModel, o as readConfig, v as createSearchHistoryTool, x as createStorage } from \"../../../../chunks/config.js\";\nimport { t as pendingConfirms } from \"../../../../chunks/chat-confirm.js\";\n//#region src/routes/api/chat/+server.ts\nasync function POST({ request }) {\n\ttry {\n\t\tlet { sessionId, message, images, clientMessageId, workspace } = await request.json();\n\t\tif (!message?.trim()) return new Response(JSON.stringify({ error: \"消息不能为空\" }), {\n\t\t\tstatus: 400,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t\tconst config = readConfig();\n\t\tif (!config.activeModel) return new Response(JSON.stringify({ error: \"未选择模型,请先在设置中配置供应商\" }), {\n\t\t\tstatus: 400,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t\tconst providerConfig = getProviderForModel(config.activeModel);\n\t\tif (!providerConfig) return new Response(JSON.stringify({ error: \"未找到对应模型的供应商配置\" }), {\n\t\t\tstatus: 400,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t\tconst model = getActiveModel();\n\t\tif (!model) return new Response(JSON.stringify({ error: \"未选择模型\" }), {\n\t\t\tstatus: 400,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t\tconst provider = createProvider({\n\t\t\t...providerConfig,\n\t\t\tactiveModel: model.id,\n\t\t\tcontextWindow: model.contextWindow\n\t\t});\n\t\tconst storage = createStorage({ enabled: config.storageEnabled });\n\t\tconst contextWindow = getContextWindow();\n\t\tconst registry = new ToolRegistry();\n\t\tfor (const t of CORE_TOOLS) registry.register(t);\n\t\tfor (const t of SCHEDULING_TOOLS) registry.register(t);\n\t\tregistry.register(createSearchHistoryTool(storage));\n\t\tconst contextBuilder = new ContextBuilder();\n\t\tconst onConfirm = async (_conf, confirmId) => {\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tpendingConfirms.set(confirmId, { resolve });\n\t\t\t\trequest.signal.addEventListener(\"abort\", () => {\n\t\t\t\t\tpendingConfirms.delete(confirmId);\n\t\t\t\t\tresolve(false);\n\t\t\t\t}, { once: true });\n\t\t\t});\n\t\t};\n\t\tconst agent = new AgentLoop(provider, storage, registry, onConfirm, request.signal, new AgentLogger(sessionId || \"(new)\"), config.compressionMode, config.compressionThreshold);\n\t\tlet sid = sessionId;\n\t\tif (!sid) sid = (await storage.createSession(void 0, void 0, workspace)).id;\n\t\telse if (!await storage.getSession(sid)) sid = (await storage.createSession(void 0, void 0, workspace)).id;\n\t\tconst imageContents = (images || []).map((img) => ({\n\t\t\ttype: \"image_url\",\n\t\t\timage_url: {\n\t\t\t\turl: img.url,\n\t\t\t\tdetail: img.detail || \"auto\"\n\t\t\t}\n\t\t}));\n\t\tconst storageContent = imageContents.length > 0 ? JSON.stringify([{\n\t\t\ttype: \"text\",\n\t\t\ttext: message\n\t\t}, ...imageContents]) : message;\n\t\tconst buildResult = await contextBuilder.build(sid, message, imageContents, storage, contextWindow, config.systemPrompt);\n\t\tconst stream = new ReadableStream({ async start(controller) {\n\t\t\tfunction send(event) {\n\t\t\t\tcontroller.enqueue(`data: ${JSON.stringify(event)}\\n\\n`);\n\t\t\t}\n\t\t\tlet release;\n\t\t\ttry {\n\t\t\t\trelease = await sessionLock.acquire(sid);\n\t\t\t\tfor await (const event of agent.run(sid, storageContent, buildResult, clientMessageId)) if (event.type === \"done\") send({\n\t\t\t\t\t...event,\n\t\t\t\t\tcontextWindow\n\t\t\t\t});\n\t\t\t\telse send(event);\n\t\t\t} catch (e) {\n\t\t\t\tsend({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: e.message || \"未知错误\"\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tif (release) release();\n\t\t\t}\n\t\t\tcontroller.close();\n\t\t} });\n\t\treturn new Response(stream, { headers: {\n\t\t\t\"Content-Type\": \"text/event-stream\",\n\t\t\t\"Cache-Control\": \"no-cache, no-transform\",\n\t\t\t\"Connection\": \"keep-alive\",\n\t\t\t\"X-Accel-Buffering\": \"no\",\n\t\t\t\"X-Session-Id\": sid\n\t\t} });\n\t} catch (e) {\n\t\treturn new Response(JSON.stringify({ error: e.message }), {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t}\n}\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|