@gatanot/qualia_web 0.1.0

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.
Files changed (224) hide show
  1. package/build/client/_app/immutable/assets/0.BlmLthUu.css +1 -0
  2. package/build/client/_app/immutable/assets/0.BlmLthUu.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.BlmLthUu.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/2.C6F1hpzI.css +1 -0
  5. package/build/client/_app/immutable/assets/2.C6F1hpzI.css.br +0 -0
  6. package/build/client/_app/immutable/assets/2.C6F1hpzI.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/3.D8sLuVpx.css +1 -0
  8. package/build/client/_app/immutable/assets/3.D8sLuVpx.css.br +0 -0
  9. package/build/client/_app/immutable/assets/3.D8sLuVpx.css.gz +0 -0
  10. package/build/client/_app/immutable/assets/4.1xWrYHn4.css +1 -0
  11. package/build/client/_app/immutable/assets/4.1xWrYHn4.css.br +0 -0
  12. package/build/client/_app/immutable/assets/4.1xWrYHn4.css.gz +0 -0
  13. package/build/client/_app/immutable/assets/5.K6sy6bnZ.css +1 -0
  14. package/build/client/_app/immutable/assets/5.K6sy6bnZ.css.br +0 -0
  15. package/build/client/_app/immutable/assets/5.K6sy6bnZ.css.gz +0 -0
  16. package/build/client/_app/immutable/assets/ChatInput.CmxPxwkj.css +1 -0
  17. package/build/client/_app/immutable/assets/ChatInput.CmxPxwkj.css.br +0 -0
  18. package/build/client/_app/immutable/assets/ChatInput.CmxPxwkj.css.gz +0 -0
  19. package/build/client/_app/immutable/assets/KaTeX_AMS-Regular.BQhdFMY1.woff2 +0 -0
  20. package/build/client/_app/immutable/assets/KaTeX_AMS-Regular.DMm9YOAa.woff +0 -0
  21. package/build/client/_app/immutable/assets/KaTeX_AMS-Regular.DRggAlZN.ttf +0 -0
  22. package/build/client/_app/immutable/assets/KaTeX_Caligraphic-Bold.ATXxdsX0.ttf +0 -0
  23. package/build/client/_app/immutable/assets/KaTeX_Caligraphic-Bold.BEiXGLvX.woff +0 -0
  24. package/build/client/_app/immutable/assets/KaTeX_Caligraphic-Bold.Dq_IR9rO.woff2 +0 -0
  25. package/build/client/_app/immutable/assets/KaTeX_Caligraphic-Regular.CTRA-rTL.woff +0 -0
  26. package/build/client/_app/immutable/assets/KaTeX_Caligraphic-Regular.Di6jR-x-.woff2 +0 -0
  27. package/build/client/_app/immutable/assets/KaTeX_Caligraphic-Regular.wX97UBjC.ttf +0 -0
  28. package/build/client/_app/immutable/assets/KaTeX_Fraktur-Bold.BdnERNNW.ttf +0 -0
  29. package/build/client/_app/immutable/assets/KaTeX_Fraktur-Bold.BsDP51OF.woff +0 -0
  30. package/build/client/_app/immutable/assets/KaTeX_Fraktur-Bold.CL6g_b3V.woff2 +0 -0
  31. package/build/client/_app/immutable/assets/KaTeX_Fraktur-Regular.CB_wures.ttf +0 -0
  32. package/build/client/_app/immutable/assets/KaTeX_Fraktur-Regular.CTYiF6lA.woff2 +0 -0
  33. package/build/client/_app/immutable/assets/KaTeX_Fraktur-Regular.Dxdc4cR9.woff +0 -0
  34. package/build/client/_app/immutable/assets/KaTeX_Main-Bold.Cx986IdX.woff2 +0 -0
  35. package/build/client/_app/immutable/assets/KaTeX_Main-Bold.Jm3AIy58.woff +0 -0
  36. package/build/client/_app/immutable/assets/KaTeX_Main-Bold.waoOVXN0.ttf +0 -0
  37. package/build/client/_app/immutable/assets/KaTeX_Main-BoldItalic.DxDJ3AOS.woff2 +0 -0
  38. package/build/client/_app/immutable/assets/KaTeX_Main-BoldItalic.DzxPMmG6.ttf +0 -0
  39. package/build/client/_app/immutable/assets/KaTeX_Main-BoldItalic.SpSLRI95.woff +0 -0
  40. package/build/client/_app/immutable/assets/KaTeX_Main-Italic.3WenGoN9.ttf +0 -0
  41. package/build/client/_app/immutable/assets/KaTeX_Main-Italic.BMLOBm91.woff +0 -0
  42. package/build/client/_app/immutable/assets/KaTeX_Main-Italic.NWA7e6Wa.woff2 +0 -0
  43. package/build/client/_app/immutable/assets/KaTeX_Main-Regular.B22Nviop.woff2 +0 -0
  44. package/build/client/_app/immutable/assets/KaTeX_Main-Regular.Dr94JaBh.woff +0 -0
  45. package/build/client/_app/immutable/assets/KaTeX_Main-Regular.ypZvNtVU.ttf +0 -0
  46. package/build/client/_app/immutable/assets/KaTeX_Math-BoldItalic.B3XSjfu4.ttf +0 -0
  47. package/build/client/_app/immutable/assets/KaTeX_Math-BoldItalic.CZnvNsCZ.woff2 +0 -0
  48. package/build/client/_app/immutable/assets/KaTeX_Math-BoldItalic.iY-2wyZ7.woff +0 -0
  49. package/build/client/_app/immutable/assets/KaTeX_Math-Italic.DA0__PXp.woff +0 -0
  50. package/build/client/_app/immutable/assets/KaTeX_Math-Italic.flOr_0UB.ttf +0 -0
  51. package/build/client/_app/immutable/assets/KaTeX_Math-Italic.t53AETM-.woff2 +0 -0
  52. package/build/client/_app/immutable/assets/KaTeX_SansSerif-Bold.CFMepnvq.ttf +0 -0
  53. package/build/client/_app/immutable/assets/KaTeX_SansSerif-Bold.D1sUS0GD.woff2 +0 -0
  54. package/build/client/_app/immutable/assets/KaTeX_SansSerif-Bold.DbIhKOiC.woff +0 -0
  55. package/build/client/_app/immutable/assets/KaTeX_SansSerif-Italic.C3H0VqGB.woff2 +0 -0
  56. package/build/client/_app/immutable/assets/KaTeX_SansSerif-Italic.DN2j7dab.woff +0 -0
  57. package/build/client/_app/immutable/assets/KaTeX_SansSerif-Italic.YYjJ1zSn.ttf +0 -0
  58. package/build/client/_app/immutable/assets/KaTeX_SansSerif-Regular.BNo7hRIc.ttf +0 -0
  59. package/build/client/_app/immutable/assets/KaTeX_SansSerif-Regular.CS6fqUqJ.woff +0 -0
  60. package/build/client/_app/immutable/assets/KaTeX_SansSerif-Regular.DDBCnlJ7.woff2 +0 -0
  61. package/build/client/_app/immutable/assets/KaTeX_Script-Regular.C5JkGWo-.ttf +0 -0
  62. package/build/client/_app/immutable/assets/KaTeX_Script-Regular.D3wIWfF6.woff2 +0 -0
  63. package/build/client/_app/immutable/assets/KaTeX_Script-Regular.D5yQViql.woff +0 -0
  64. package/build/client/_app/immutable/assets/KaTeX_Size1-Regular.C195tn64.woff +0 -0
  65. package/build/client/_app/immutable/assets/KaTeX_Size1-Regular.Dbsnue_I.ttf +0 -0
  66. package/build/client/_app/immutable/assets/KaTeX_Size1-Regular.mCD8mA8B.woff2 +0 -0
  67. package/build/client/_app/immutable/assets/KaTeX_Size2-Regular.B7gKUWhC.ttf +0 -0
  68. package/build/client/_app/immutable/assets/KaTeX_Size2-Regular.Dy4dx90m.woff2 +0 -0
  69. package/build/client/_app/immutable/assets/KaTeX_Size2-Regular.oD1tc_U0.woff +0 -0
  70. package/build/client/_app/immutable/assets/KaTeX_Size3-Regular.CTq5MqoE.woff +0 -0
  71. package/build/client/_app/immutable/assets/KaTeX_Size3-Regular.DgpXs0kz.ttf +0 -0
  72. package/build/client/_app/immutable/assets/KaTeX_Size4-Regular.BF-4gkZK.woff +0 -0
  73. package/build/client/_app/immutable/assets/KaTeX_Size4-Regular.DWFBv043.ttf +0 -0
  74. package/build/client/_app/immutable/assets/KaTeX_Size4-Regular.Dl5lxZxV.woff2 +0 -0
  75. package/build/client/_app/immutable/assets/KaTeX_Typewriter-Regular.C0xS9mPB.woff +0 -0
  76. package/build/client/_app/immutable/assets/KaTeX_Typewriter-Regular.CO6r4hn1.woff2 +0 -0
  77. package/build/client/_app/immutable/assets/KaTeX_Typewriter-Regular.D3Ib7_Hf.ttf +0 -0
  78. package/build/client/_app/immutable/chunks/B39M1lOz.js +3 -0
  79. package/build/client/_app/immutable/chunks/B39M1lOz.js.br +0 -0
  80. package/build/client/_app/immutable/chunks/B39M1lOz.js.gz +0 -0
  81. package/build/client/_app/immutable/chunks/BMcRbUT8.js +3 -0
  82. package/build/client/_app/immutable/chunks/BMcRbUT8.js.br +0 -0
  83. package/build/client/_app/immutable/chunks/BMcRbUT8.js.gz +0 -0
  84. package/build/client/_app/immutable/chunks/BN2zEB6w.js +1 -0
  85. package/build/client/_app/immutable/chunks/BN2zEB6w.js.br +0 -0
  86. package/build/client/_app/immutable/chunks/BN2zEB6w.js.gz +0 -0
  87. package/build/client/_app/immutable/chunks/BVDlhZK_.js +1 -0
  88. package/build/client/_app/immutable/chunks/BVDlhZK_.js.br +2 -0
  89. package/build/client/_app/immutable/chunks/BVDlhZK_.js.gz +0 -0
  90. package/build/client/_app/immutable/chunks/CxmPiQW9.js +1 -0
  91. package/build/client/_app/immutable/chunks/CxmPiQW9.js.br +0 -0
  92. package/build/client/_app/immutable/chunks/CxmPiQW9.js.gz +0 -0
  93. package/build/client/_app/immutable/chunks/DAIlYrs_.js +1 -0
  94. package/build/client/_app/immutable/chunks/DAIlYrs_.js.br +0 -0
  95. package/build/client/_app/immutable/chunks/DAIlYrs_.js.gz +0 -0
  96. package/build/client/_app/immutable/chunks/Ir23lSxH.js +329 -0
  97. package/build/client/_app/immutable/chunks/Ir23lSxH.js.br +0 -0
  98. package/build/client/_app/immutable/chunks/Ir23lSxH.js.gz +0 -0
  99. package/build/client/_app/immutable/chunks/gZTJ0hjf.js +1 -0
  100. package/build/client/_app/immutable/chunks/gZTJ0hjf.js.br +0 -0
  101. package/build/client/_app/immutable/chunks/gZTJ0hjf.js.gz +0 -0
  102. package/build/client/_app/immutable/chunks/idCMFvY6.js +1 -0
  103. package/build/client/_app/immutable/chunks/idCMFvY6.js.br +2 -0
  104. package/build/client/_app/immutable/chunks/idCMFvY6.js.gz +0 -0
  105. package/build/client/_app/immutable/chunks/kNaey6uv.js +1 -0
  106. package/build/client/_app/immutable/chunks/kNaey6uv.js.br +0 -0
  107. package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
  108. package/build/client/_app/immutable/chunks/xihTtKlq.js +1 -0
  109. package/build/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
  110. package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
  111. package/build/client/_app/immutable/entry/app.CAKAEcgA.js +2 -0
  112. package/build/client/_app/immutable/entry/app.CAKAEcgA.js.br +0 -0
  113. package/build/client/_app/immutable/entry/app.CAKAEcgA.js.gz +0 -0
  114. package/build/client/_app/immutable/entry/start.BSM2k8tg.js +1 -0
  115. package/build/client/_app/immutable/entry/start.BSM2k8tg.js.br +0 -0
  116. package/build/client/_app/immutable/entry/start.BSM2k8tg.js.gz +0 -0
  117. package/build/client/_app/immutable/nodes/0.fnpvsEAN.js +1 -0
  118. package/build/client/_app/immutable/nodes/0.fnpvsEAN.js.br +0 -0
  119. package/build/client/_app/immutable/nodes/0.fnpvsEAN.js.gz +0 -0
  120. package/build/client/_app/immutable/nodes/1.CLtaTeie.js +1 -0
  121. package/build/client/_app/immutable/nodes/1.CLtaTeie.js.br +0 -0
  122. package/build/client/_app/immutable/nodes/1.CLtaTeie.js.gz +0 -0
  123. package/build/client/_app/immutable/nodes/2.BwxFyRtn.js +1 -0
  124. package/build/client/_app/immutable/nodes/2.BwxFyRtn.js.br +0 -0
  125. package/build/client/_app/immutable/nodes/2.BwxFyRtn.js.gz +0 -0
  126. package/build/client/_app/immutable/nodes/3.D2KZBL5g.js +4 -0
  127. package/build/client/_app/immutable/nodes/3.D2KZBL5g.js.br +0 -0
  128. package/build/client/_app/immutable/nodes/3.D2KZBL5g.js.gz +0 -0
  129. package/build/client/_app/immutable/nodes/4.B6LN5K9i.js +1 -0
  130. package/build/client/_app/immutable/nodes/4.B6LN5K9i.js.br +0 -0
  131. package/build/client/_app/immutable/nodes/4.B6LN5K9i.js.gz +0 -0
  132. package/build/client/_app/immutable/nodes/5.CVHYq0o4.js +10 -0
  133. package/build/client/_app/immutable/nodes/5.CVHYq0o4.js.br +0 -0
  134. package/build/client/_app/immutable/nodes/5.CVHYq0o4.js.gz +0 -0
  135. package/build/client/_app/version.json +1 -0
  136. package/build/client/_app/version.json.br +0 -0
  137. package/build/client/_app/version.json.gz +0 -0
  138. package/build/client/robots.txt +3 -0
  139. package/build/client/robots.txt.br +0 -0
  140. package/build/client/robots.txt.gz +0 -0
  141. package/build/env.js +70 -0
  142. package/build/env.js.map +1 -0
  143. package/build/handler.js +17 -0
  144. package/build/handler.js.map +1 -0
  145. package/build/index.js +140 -0
  146. package/build/index.js.map +1 -0
  147. package/build/server/chunks/0-CF_dr3E0.js +9 -0
  148. package/build/server/chunks/0-CF_dr3E0.js.map +1 -0
  149. package/build/server/chunks/1-CVoEVbhQ.js +9 -0
  150. package/build/server/chunks/1-CVoEVbhQ.js.map +1 -0
  151. package/build/server/chunks/2-BzhQC8cX.js +38 -0
  152. package/build/server/chunks/2-BzhQC8cX.js.map +1 -0
  153. package/build/server/chunks/3-CukYFw9L.js +9 -0
  154. package/build/server/chunks/3-CukYFw9L.js.map +1 -0
  155. package/build/server/chunks/4-4e_Gaah7.js +9 -0
  156. package/build/server/chunks/4-4e_Gaah7.js.map +1 -0
  157. package/build/server/chunks/5-B4fCEv4c.js +9 -0
  158. package/build/server/chunks/5-B4fCEv4c.js.map +1 -0
  159. package/build/server/chunks/ChatInput-GWTgCE1t.js +122 -0
  160. package/build/server/chunks/ChatInput-GWTgCE1t.js.map +1 -0
  161. package/build/server/chunks/_layout.svelte-MrMdtdjr.js +232 -0
  162. package/build/server/chunks/_layout.svelte-MrMdtdjr.js.map +1 -0
  163. package/build/server/chunks/_page.svelte-CfQFFres.js +64 -0
  164. package/build/server/chunks/_page.svelte-CfQFFres.js.map +1 -0
  165. package/build/server/chunks/_page.svelte-CgTaVEr0.js +189 -0
  166. package/build/server/chunks/_page.svelte-CgTaVEr0.js.map +1 -0
  167. package/build/server/chunks/_page.svelte-DEDJBB4D.js +602 -0
  168. package/build/server/chunks/_page.svelte-DEDJBB4D.js.map +1 -0
  169. package/build/server/chunks/_page.svelte-OC4xDCWu.js +67 -0
  170. package/build/server/chunks/_page.svelte-OC4xDCWu.js.map +1 -0
  171. package/build/server/chunks/_server.ts-BG3v883h.js +115 -0
  172. package/build/server/chunks/_server.ts-BG3v883h.js.map +1 -0
  173. package/build/server/chunks/_server.ts-C1hU_FnX.js +28 -0
  174. package/build/server/chunks/_server.ts-C1hU_FnX.js.map +1 -0
  175. package/build/server/chunks/_server.ts-CJOrsy4y.js +30 -0
  176. package/build/server/chunks/_server.ts-CJOrsy4y.js.map +1 -0
  177. package/build/server/chunks/_server.ts-Co2FAQm2.js +43 -0
  178. package/build/server/chunks/_server.ts-Co2FAQm2.js.map +1 -0
  179. package/build/server/chunks/_server.ts-D6NGuqud.js +106 -0
  180. package/build/server/chunks/_server.ts-D6NGuqud.js.map +1 -0
  181. package/build/server/chunks/_server.ts-DaHUgm60.js +26 -0
  182. package/build/server/chunks/_server.ts-DaHUgm60.js.map +1 -0
  183. package/build/server/chunks/_server.ts-DiHyx5ij.js +64 -0
  184. package/build/server/chunks/_server.ts-DiHyx5ij.js.map +1 -0
  185. package/build/server/chunks/_server.ts-GB-Qo389.js +73 -0
  186. package/build/server/chunks/_server.ts-GB-Qo389.js.map +1 -0
  187. package/build/server/chunks/_server.ts-K359HUPL.js +32 -0
  188. package/build/server/chunks/_server.ts-K359HUPL.js.map +1 -0
  189. package/build/server/chunks/_server.ts-e4VKCo3M.js +54 -0
  190. package/build/server/chunks/_server.ts-e4VKCo3M.js.map +1 -0
  191. package/build/server/chunks/_server.ts-nr6qwbTw.js +42 -0
  192. package/build/server/chunks/_server.ts-nr6qwbTw.js.map +1 -0
  193. package/build/server/chunks/chat-confirm-BW2aJ2qz.js +5 -0
  194. package/build/server/chunks/chat-confirm-BW2aJ2qz.js.map +1 -0
  195. package/build/server/chunks/chat-steering-DTefLITL.js +5 -0
  196. package/build/server/chunks/chat-steering-DTefLITL.js.map +1 -0
  197. package/build/server/chunks/client-BoLIct8q.js +69 -0
  198. package/build/server/chunks/client-BoLIct8q.js.map +1 -0
  199. package/build/server/chunks/config-d3FC8naq.js +4907 -0
  200. package/build/server/chunks/config-d3FC8naq.js.map +1 -0
  201. package/build/server/chunks/error.svelte-BpxjjtfZ.js +65 -0
  202. package/build/server/chunks/error.svelte-BpxjjtfZ.js.map +1 -0
  203. package/build/server/chunks/gateway-DWcUFfHo.js +478 -0
  204. package/build/server/chunks/gateway-DWcUFfHo.js.map +1 -0
  205. package/build/server/chunks/handler-BAQYBQgy.js +1454 -0
  206. package/build/server/chunks/handler-BAQYBQgy.js.map +1 -0
  207. package/build/server/chunks/hooks.server-C6heBR7o.js +35 -0
  208. package/build/server/chunks/hooks.server-C6heBR7o.js.map +1 -0
  209. package/build/server/chunks/index.js-N7Sh42pC.js +11584 -0
  210. package/build/server/chunks/index.js-N7Sh42pC.js.map +1 -0
  211. package/build/server/chunks/manifest.js-D2rH2GXr.js +143 -0
  212. package/build/server/chunks/manifest.js-D2rH2GXr.js.map +1 -0
  213. package/build/server/chunks/markdown-BYqQ8bKF.js +78593 -0
  214. package/build/server/chunks/markdown-BYqQ8bKF.js.map +1 -0
  215. package/build/server/chunks/prompts-tcGD1LCs.js +37 -0
  216. package/build/server/chunks/prompts-tcGD1LCs.js.map +1 -0
  217. package/build/server/chunks/session-store-B1Aop0Qn.js +50 -0
  218. package/build/server/chunks/session-store-B1Aop0Qn.js.map +1 -0
  219. package/build/server/chunks/stores-D_6JNTkz.js +36 -0
  220. package/build/server/chunks/stores-D_6JNTkz.js.map +1 -0
  221. package/build/shims.js +33 -0
  222. package/build/shims.js.map +1 -0
  223. package/handler.d.ts +8 -0
  224. package/package.json +46 -0
@@ -0,0 +1,602 @@
1
+ import { c as attr_class, f as ensure_array_like, e as escape_html, m as html, i as attr, k as derived, d as store_get, u as unsubscribe_stores } from './index.js-N7Sh42pC.js';
2
+ import { g as goto } from './client-BoLIct8q.js';
3
+ import { p as page } from './stores-D_6JNTkz.js';
4
+ import { a as activeWorkspace, d as bumpSession } from './session-store-B1Aop0Qn.js';
5
+ import { E as EmptyState, C as ChatInput } from './ChatInput-GWTgCE1t.js';
6
+ import { r as renderMarkdown } from './markdown-BYqQ8bKF.js';
7
+ import 'node:module';
8
+
9
+ //#region src/lib/components/ToolCallCard.svelte
10
+ function ToolCallCard($$renderer, $$props) {
11
+ $$renderer.component(($$renderer) => {
12
+ let { name, args, result = void 0 } = $$props;
13
+ let expanded = false;
14
+ let done = derived(() => !!result);
15
+ let errored = derived(() => result ? !result.success : false);
16
+ let summary = derived(() => {
17
+ const command = args.command;
18
+ if (command) return command.length > 60 ? command.slice(0, 60) + "…" : command;
19
+ const keys = Object.keys(args);
20
+ if (keys.length === 1) {
21
+ const v = String(args[keys[0]]);
22
+ return v.length > 60 ? v.slice(0, 60) + "…" : v;
23
+ }
24
+ return "";
25
+ });
26
+ $$renderer.push(`<div${attr_class("tool-call svelte-87mzaw", void 0, {
27
+ "tool-done": done(),
28
+ "expanded": expanded
29
+ })}><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> `);
30
+ if (summary() && true) {
31
+ $$renderer.push("<!--[0-->");
32
+ $$renderer.push(`<span class="tool-command svelte-87mzaw">${escape_html(summary())}</span>`);
33
+ } else $$renderer.push("<!--[-1-->");
34
+ $$renderer.push(`<!--]--></div> <span class="material-symbols-rounded expand-icon svelte-87mzaw">${escape_html("expand_more")}</span></div> `);
35
+ $$renderer.push("<!--[-1-->");
36
+ $$renderer.push(`<!--]--></div>`);
37
+ });
38
+ }
39
+ //#endregion
40
+ //#region src/lib/components/ConfirmInline.svelte
41
+ function ConfirmInline($$renderer, $$props) {
42
+ $$renderer.component(($$renderer) => {
43
+ let { message} = $$props;
44
+ $$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>`);
45
+ });
46
+ }
47
+ //#endregion
48
+ //#region src/lib/components/ReasoningBlock.svelte
49
+ function ReasoningBlock($$renderer, $$props) {
50
+ let { done = false } = $$props;
51
+ $$renderer.push(`<div${attr_class("reasoning svelte-1okjtiv", void 0, {
52
+ "expanded": false,
53
+ "done": done
54
+ })}><div class="reasoning-header svelte-1okjtiv"><span class="reasoning-label svelte-1okjtiv">Thought</span> `);
55
+ if (!done) {
56
+ $$renderer.push("<!--[0-->");
57
+ $$renderer.push(`<span class="reasoning-dot svelte-1okjtiv">●</span>`);
58
+ } else $$renderer.push("<!--[-1-->");
59
+ $$renderer.push(`<!--]--> <span class="material-symbols-rounded expand-icon svelte-1okjtiv">${escape_html("expand_more")}</span></div> `);
60
+ $$renderer.push("<!--[-1-->");
61
+ $$renderer.push(`<!--]--></div>`);
62
+ }
63
+ //#endregion
64
+ //#region src/lib/components/MessageBubble.svelte
65
+ function MessageBubble($$renderer, $$props) {
66
+ $$renderer.component(($$renderer) => {
67
+ let { message} = $$props;
68
+ let roleLabel = derived(() => message.role === "error" ? "错误" : "Qualia");
69
+ const htmlCache = /* @__PURE__ */ new Map();
70
+ let rollbackConfirm = false;
71
+ function getBlockHtml(content) {
72
+ const cached = htmlCache.get(content);
73
+ if (cached) return cached;
74
+ const html = renderMarkdown(content);
75
+ htmlCache.set(content, html);
76
+ return html;
77
+ }
78
+ function isLiveBlock(block, i) {
79
+ if (block.type !== "text") return false;
80
+ if (message.done) return false;
81
+ return i === message.blocks.length - 1;
82
+ }
83
+ $$renderer.push(`<div${attr_class("message-row svelte-1e5n1dp", void 0, {
84
+ "user": message.role === "user",
85
+ "error": message.role === "error"
86
+ })}><div class="message-body svelte-1e5n1dp">`);
87
+ if (message.role !== "user") {
88
+ $$renderer.push("<!--[0-->");
89
+ $$renderer.push(`<div class="message-role svelte-1e5n1dp">${escape_html(roleLabel())}</div>`);
90
+ } else $$renderer.push("<!--[-1-->");
91
+ $$renderer.push(`<!--]--> <!--[-->`);
92
+ const each_array = ensure_array_like(message.blocks);
93
+ for (let i = 0, $$length = each_array.length; i < $$length; i++) {
94
+ let block = each_array[i];
95
+ if (block.type === "text") {
96
+ $$renderer.push("<!--[0-->");
97
+ if (isLiveBlock(block, i)) {
98
+ $$renderer.push("<!--[0-->");
99
+ $$renderer.push(`<div class="message-content svelte-1e5n1dp">${escape_html(block.content)}</div>`);
100
+ } else {
101
+ $$renderer.push("<!--[-1-->");
102
+ $$renderer.push(`<div class="message-content markdown-body svelte-1e5n1dp">${html(getBlockHtml(block.content))}</div>`);
103
+ }
104
+ $$renderer.push(`<!--]-->`);
105
+ } else if (block.type === "image") {
106
+ $$renderer.push("<!--[1-->");
107
+ $$renderer.push(`<div class="image-block svelte-1e5n1dp"><img${attr("src", block.url)} alt="上传图片" class="svelte-1e5n1dp"/></div>`);
108
+ } else if (block.type === "reasoning") {
109
+ $$renderer.push("<!--[2-->");
110
+ ReasoningBlock($$renderer, {
111
+ content: block.content,
112
+ done: message.done
113
+ });
114
+ } else if (block.type === "tool") {
115
+ $$renderer.push("<!--[3-->");
116
+ ToolCallCard($$renderer, {
117
+ name: block.name,
118
+ args: block.args,
119
+ result: block.result
120
+ });
121
+ } else if (block.type === "confirm") {
122
+ $$renderer.push("<!--[4-->");
123
+ ConfirmInline($$renderer, {
124
+ confirmId: block.confirmId,
125
+ message: block.message});
126
+ } else if (block.type === "error_recovery") {
127
+ $$renderer.push("<!--[5-->");
128
+ $$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>`);
129
+ } else $$renderer.push("<!--[-1-->");
130
+ $$renderer.push(`<!--]-->`);
131
+ }
132
+ $$renderer.push(`<!--]--> `);
133
+ if (!message.done) {
134
+ $$renderer.push("<!--[0-->");
135
+ $$renderer.push(`<span class="cursor svelte-1e5n1dp">|</span>`);
136
+ } else $$renderer.push("<!--[-1-->");
137
+ $$renderer.push(`<!--]--> `);
138
+ if (message.role === "user" && message.done) {
139
+ $$renderer.push("<!--[0-->");
140
+ $$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> `);
141
+ $$renderer.push("<!--[-1-->");
142
+ $$renderer.push(`<!--]--></button></div>`);
143
+ } else $$renderer.push("<!--[-1-->");
144
+ $$renderer.push(`<!--]--></div></div>`);
145
+ });
146
+ }
147
+ //#endregion
148
+ //#region src/routes/chat/[sessionId]/+page.svelte
149
+ function _page($$renderer, $$props) {
150
+ $$renderer.component(($$renderer) => {
151
+ var $$store_subs;
152
+ let sessionId = derived(() => store_get($$store_subs ??= {}, "$page", page).params.sessionId);
153
+ let messages = [];
154
+ let input = "";
155
+ let streaming = false;
156
+ let currentAssistant = null;
157
+ let frontendConfirms = /* @__PURE__ */ new Map();
158
+ let focusTrigger = 0;
159
+ let inputQueue = [];
160
+ let abortController = null;
161
+ let streamReader = null;
162
+ let nearBottom = true;
163
+ let contextWindow = void 0;
164
+ let customIcon = false;
165
+ const cumulativeUsage = derived(() => {
166
+ let total = 0;
167
+ for (let i = messages.length - 1; i >= 0; i--) {
168
+ const msg = messages[i];
169
+ if (msg.role === "assistant" && msg.usage) {
170
+ total = msg.usage.total_tokens;
171
+ break;
172
+ }
173
+ }
174
+ const pct = contextWindow && total > 0 ? (total / contextWindow * 100).toFixed(1) : null;
175
+ return {
176
+ total,
177
+ pct
178
+ };
179
+ });
180
+ function scrollToBottom() {
181
+ requestAnimationFrame(() => {});
182
+ }
183
+ function forceScrollToBottom() {
184
+ nearBottom = true;
185
+ requestAnimationFrame(() => {});
186
+ }
187
+ function finishStreaming() {
188
+ if (currentAssistant) {
189
+ currentAssistant.done = true;
190
+ currentAssistant = null;
191
+ }
192
+ abortController = null;
193
+ streamReader = null;
194
+ streaming = false;
195
+ focusTrigger++;
196
+ scrollToBottom();
197
+ if (inputQueue.length > 0) sendMessage(inputQueue.shift());
198
+ }
199
+ function stopAI() {
200
+ abortController?.abort();
201
+ streamReader?.cancel().catch(() => {});
202
+ streamReader = null;
203
+ }
204
+ async function sendMessage(queued, skipUserMsg = false) {
205
+ const text = queued?.text?.trim();
206
+ const msgImages = queued?.images ?? [];
207
+ if (!text || !queued) return;
208
+ const userMsgId = queued.id;
209
+ if (streaming) {
210
+ if (!skipUserMsg) {
211
+ inputQueue.push({
212
+ id: userMsgId,
213
+ text,
214
+ images: [...msgImages]
215
+ });
216
+ fetch("/api/steer", {
217
+ method: "POST",
218
+ headers: { "Content-Type": "application/json" },
219
+ body: JSON.stringify({
220
+ sessionId: sessionId(),
221
+ messageId: userMsgId,
222
+ message: text
223
+ })
224
+ }).catch(() => {});
225
+ }
226
+ return;
227
+ }
228
+ [...msgImages];
229
+ if (!skipUserMsg) {
230
+ const blocks = [];
231
+ for (const img of msgImages) blocks.push({
232
+ type: "image",
233
+ url: img.url,
234
+ detail: img.detail
235
+ });
236
+ blocks.push({
237
+ type: "text",
238
+ content: text
239
+ });
240
+ messages.push({
241
+ id: userMsgId,
242
+ role: "user",
243
+ blocks,
244
+ done: true
245
+ });
246
+ forceScrollToBottom();
247
+ }
248
+ streaming = true;
249
+ const controller = new AbortController();
250
+ abortController = controller;
251
+ streamReader = null;
252
+ try {
253
+ const body = {
254
+ sessionId: sessionId(),
255
+ message: text,
256
+ workspace: store_get($$store_subs ??= {}, "$activeWorkspace", activeWorkspace)
257
+ };
258
+ if (!skipUserMsg) body.clientMessageId = userMsgId;
259
+ if (msgImages.length > 0) body.images = msgImages.map((img) => ({
260
+ url: img.url,
261
+ detail: img.detail || "auto"
262
+ }));
263
+ const res = await fetch("/api/chat", {
264
+ method: "POST",
265
+ headers: { "Content-Type": "application/json" },
266
+ body: JSON.stringify(body),
267
+ signal: controller.signal
268
+ });
269
+ if (!res.ok) {
270
+ const err = await res.json().catch(() => ({ error: "请求失败" }));
271
+ messages.push({
272
+ id: crypto.randomUUID(),
273
+ role: "error",
274
+ blocks: [{
275
+ type: "text",
276
+ content: err.error || "请求失败"
277
+ }],
278
+ done: true
279
+ });
280
+ finishStreaming();
281
+ return;
282
+ }
283
+ const newSid = res.headers.get("X-Session-Id");
284
+ if (newSid && newSid !== sessionId()) {
285
+ bumpSession(newSid);
286
+ goto("/chat/" + newSid, { replaceState: true });
287
+ return;
288
+ } else if (newSid) bumpSession(newSid);
289
+ const reader = res.body.getReader();
290
+ streamReader = reader;
291
+ const decoder = new TextDecoder();
292
+ let buffer = "";
293
+ while (true) {
294
+ const { done, value } = await reader.read();
295
+ if (done) break;
296
+ buffer += decoder.decode(value, { stream: true });
297
+ const lines = buffer.split("\n");
298
+ buffer = lines.pop() || "";
299
+ for (const line of lines) {
300
+ const trimmed = line.trim();
301
+ if (!trimmed || !trimmed.startsWith("data:")) continue;
302
+ const data = trimmed.slice(5).trim();
303
+ try {
304
+ await handleSSEEvent(JSON.parse(data));
305
+ } catch {}
306
+ }
307
+ }
308
+ finishStreaming();
309
+ } catch (e) {
310
+ if (e.name === "AbortError") {
311
+ if (currentAssistant) {
312
+ currentAssistant.done = true;
313
+ currentAssistant = null;
314
+ }
315
+ abortController = null;
316
+ streamReader = null;
317
+ streaming = false;
318
+ focusTrigger++;
319
+ if (inputQueue.length > 0) sendMessage(inputQueue.shift());
320
+ return;
321
+ }
322
+ messages.push({
323
+ id: crypto.randomUUID(),
324
+ role: "error",
325
+ blocks: [{
326
+ type: "text",
327
+ content: e.message || "连接失败"
328
+ }],
329
+ done: true
330
+ });
331
+ finishStreaming();
332
+ }
333
+ }
334
+ async function handleSSEEvent(event) {
335
+ switch (event.type) {
336
+ case "content": {
337
+ const text = event.text;
338
+ if (!currentAssistant) {
339
+ currentAssistant = {
340
+ id: crypto.randomUUID(),
341
+ role: "assistant",
342
+ blocks: [{
343
+ type: "text",
344
+ content: text
345
+ }],
346
+ done: false
347
+ };
348
+ messages.push(currentAssistant);
349
+ } else {
350
+ const blocks = currentAssistant.blocks;
351
+ const lastBlock = blocks[blocks.length - 1];
352
+ if (lastBlock && lastBlock.type === "text") lastBlock.content += text;
353
+ else blocks.push({
354
+ type: "text",
355
+ content: text
356
+ });
357
+ }
358
+ scrollToBottom();
359
+ break;
360
+ }
361
+ case "reasoning": {
362
+ const text = event.text;
363
+ if (!currentAssistant) {
364
+ currentAssistant = {
365
+ id: crypto.randomUUID(),
366
+ role: "assistant",
367
+ blocks: [{
368
+ type: "reasoning",
369
+ content: text
370
+ }],
371
+ done: false
372
+ };
373
+ messages.push(currentAssistant);
374
+ } else {
375
+ const blocks = currentAssistant.blocks;
376
+ const lastBlock = blocks[blocks.length - 1];
377
+ if (lastBlock && lastBlock.type === "reasoning") lastBlock.content += text;
378
+ else blocks.push({
379
+ type: "reasoning",
380
+ content: text
381
+ });
382
+ }
383
+ scrollToBottom();
384
+ break;
385
+ }
386
+ case "tool_call":
387
+ if (!currentAssistant) {
388
+ currentAssistant = {
389
+ id: crypto.randomUUID(),
390
+ role: "assistant",
391
+ blocks: [],
392
+ done: false
393
+ };
394
+ messages.push(currentAssistant);
395
+ }
396
+ currentAssistant.blocks.push({
397
+ type: "tool",
398
+ name: event.name,
399
+ args: event.args
400
+ });
401
+ break;
402
+ case "tool_result": {
403
+ if (!currentAssistant) {
404
+ currentAssistant = {
405
+ id: crypto.randomUUID(),
406
+ role: "assistant",
407
+ blocks: [],
408
+ done: false
409
+ };
410
+ messages.push(currentAssistant);
411
+ }
412
+ const blocks = currentAssistant.blocks;
413
+ for (let i = blocks.length - 1; i >= 0; i--) {
414
+ const block = blocks[i];
415
+ if (block.type === "tool" && !block.result && block.name === event.name) {
416
+ block.result = {
417
+ success: event.success,
418
+ output: event.output
419
+ };
420
+ break;
421
+ }
422
+ }
423
+ scrollToBottom();
424
+ break;
425
+ }
426
+ case "tool_execution_update": {
427
+ const toolName = event.name;
428
+ const updateText = event.text;
429
+ let found = false;
430
+ if (currentAssistant) {
431
+ for (let i = currentAssistant.blocks.length - 1; i >= 0; i--) {
432
+ const block = currentAssistant.blocks[i];
433
+ if (block.type === "tool" && block.name === toolName) {
434
+ if (!block.result) block.result = {
435
+ success: true,
436
+ output: ""
437
+ };
438
+ block.result = {
439
+ ...block.result,
440
+ output: block.result.output + updateText
441
+ };
442
+ found = true;
443
+ break;
444
+ }
445
+ }
446
+ if (found) messages = [...messages];
447
+ }
448
+ scrollToBottom();
449
+ break;
450
+ }
451
+ case "confirm_required": {
452
+ const confirmId = event.confirmId;
453
+ const reason = event.confirmation?.reason || "需要确认此操作";
454
+ if (!currentAssistant) {
455
+ currentAssistant = {
456
+ id: crypto.randomUUID(),
457
+ role: "assistant",
458
+ blocks: [],
459
+ done: false
460
+ };
461
+ messages.push(currentAssistant);
462
+ }
463
+ currentAssistant.blocks.push({
464
+ type: "confirm",
465
+ confirmId,
466
+ message: reason
467
+ });
468
+ await new Promise((resolve) => {
469
+ frontendConfirms.set(confirmId, resolve);
470
+ });
471
+ break;
472
+ }
473
+ case "error":
474
+ messages.push({
475
+ id: crypto.randomUUID(),
476
+ role: "error",
477
+ blocks: [{
478
+ type: "text",
479
+ content: event.message
480
+ }],
481
+ done: true
482
+ });
483
+ scrollToBottom();
484
+ break;
485
+ case "steering_consumed": {
486
+ const msgId = event.messageId;
487
+ const idx = inputQueue.findIndex((q) => q.id === msgId);
488
+ if (idx !== -1) inputQueue.splice(idx, 1);
489
+ break;
490
+ }
491
+ case "forked":
492
+ if (event.newSessionId) {
493
+ bumpSession(event.newSessionId);
494
+ goto("/chat/" + event.newSessionId, { });
495
+ }
496
+ break;
497
+ case "retrying":
498
+ if (currentAssistant) {
499
+ const idx = messages.indexOf(currentAssistant);
500
+ if (idx !== -1) messages.splice(idx, 1);
501
+ currentAssistant = null;
502
+ }
503
+ break;
504
+ case "retry_exhausted":
505
+ if (currentAssistant) {
506
+ const idx = messages.indexOf(currentAssistant);
507
+ if (idx !== -1) messages.splice(idx, 1);
508
+ currentAssistant = null;
509
+ }
510
+ currentAssistant = {
511
+ id: crypto.randomUUID(),
512
+ role: "assistant",
513
+ blocks: [{
514
+ type: "error_recovery",
515
+ message: event.message
516
+ }],
517
+ done: true
518
+ };
519
+ messages.push(currentAssistant);
520
+ currentAssistant = null;
521
+ streaming = false;
522
+ focusTrigger++;
523
+ break;
524
+ case "done":
525
+ if (currentAssistant && event.usage) currentAssistant.usage = event.usage;
526
+ if (event.contextWindow) contextWindow = event.contextWindow;
527
+ break;
528
+ }
529
+ }
530
+ let $$settled = true;
531
+ let $$inner_renderer;
532
+ function $$render_inner($$renderer) {
533
+ $$renderer.push(`<div class="chat-container svelte-1ca3w4l"><div${attr_class("messages svelte-1ca3w4l", void 0, { "welcome": messages.length === 0 })}>`);
534
+ if (messages.length === 0) {
535
+ $$renderer.push("<!--[0-->");
536
+ EmptyState($$renderer, { customIcon });
537
+ } else $$renderer.push("<!--[-1-->");
538
+ $$renderer.push(`<!--]--> <!--[-->`);
539
+ const each_array = ensure_array_like(messages);
540
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
541
+ let msg = each_array[$$index];
542
+ MessageBubble($$renderer, {
543
+ message: msg});
544
+ }
545
+ $$renderer.push(`<!--]--> `);
546
+ if (cumulativeUsage().total > 0) {
547
+ $$renderer.push("<!--[0-->");
548
+ $$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> `);
549
+ if (contextWindow) {
550
+ $$renderer.push("<!--[0-->");
551
+ $$renderer.push(`<span class="stats-sep svelte-1ca3w4l">/</span> <span class="stats-max svelte-1ca3w4l">${escape_html(contextWindow)}</span> `);
552
+ if (cumulativeUsage().pct) {
553
+ $$renderer.push("<!--[0-->");
554
+ $$renderer.push(`<span class="stats-pct svelte-1ca3w4l">(${escape_html(cumulativeUsage().pct)}%)</span>`);
555
+ } else $$renderer.push("<!--[-1-->");
556
+ $$renderer.push(`<!--]-->`);
557
+ } else $$renderer.push("<!--[-1-->");
558
+ $$renderer.push(`<!--]--></div>`);
559
+ } else $$renderer.push("<!--[-1-->");
560
+ $$renderer.push(`<!--]--></div> `);
561
+ if (!nearBottom && streaming) {
562
+ $$renderer.push("<!--[0-->");
563
+ $$renderer.push(`<button class="scroll-btn svelte-1ca3w4l"><span class="material-symbols-rounded svelte-1ca3w4l">arrow_downward</span></button>`);
564
+ } else $$renderer.push("<!--[-1-->");
565
+ $$renderer.push(`<!--]--> <div class="input-anchor svelte-1ca3w4l">`);
566
+ ChatInput($$renderer, {
567
+ streaming,
568
+ queueCount: inputQueue.length,
569
+ onsend: (imgs) => {
570
+ const msg = {
571
+ id: crypto.randomUUID(),
572
+ text: input,
573
+ images: imgs
574
+ };
575
+ input = "";
576
+ focusTrigger++;
577
+ sendMessage(msg);
578
+ },
579
+ onstop: stopAI,
580
+ focusTrigger,
581
+ get value() {
582
+ return input;
583
+ },
584
+ set value($$value) {
585
+ input = $$value;
586
+ $$settled = false;
587
+ }
588
+ });
589
+ $$renderer.push(`<!----></div></div>`);
590
+ }
591
+ do {
592
+ $$settled = true;
593
+ $$inner_renderer = $$renderer.copy();
594
+ $$render_inner($$inner_renderer);
595
+ } while (!$$settled);
596
+ $$renderer.subsume($$inner_renderer);
597
+ if ($$store_subs) unsubscribe_stores($$store_subs);
598
+ });
599
+ }
600
+
601
+ export { _page as default };
602
+ //# sourceMappingURL=_page.svelte-DEDJBB4D.js.map