@deepseek-insight/dsi 0.6.12 → 0.6.14

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 (189) hide show
  1. package/.agents/skills/dsi-thin/SKILL.md +140 -0
  2. package/.agents/skills/dsi-thin/references/ADR-0019-snapshot.md +363 -0
  3. package/.agents/skills/dsi-thin/references/authority-adr.md +28 -0
  4. package/.agents/skills/dsi-thin/references/input-contract.md +42 -0
  5. package/.agents/skills/dsi-thin/references/proven-gates.md +61 -0
  6. package/.agents/skills/dsi-thin/references/two-lane-contract.md +53 -0
  7. package/build/client/_app/immutable/assets/0.B-dIufDc.css +2 -0
  8. package/build/client/_app/immutable/assets/2.B70dfiy3.css +1 -0
  9. package/build/client/_app/immutable/chunks/{B9fOkvHb.js → 0HT0ILkA.js} +1 -1
  10. package/build/client/_app/immutable/chunks/{Dwt_JXeR.js → 2KTqoQH-.js} +1 -1
  11. package/build/client/_app/immutable/chunks/{BIvFR1xA.js → 2M1KS72j.js} +1 -1
  12. package/build/client/_app/immutable/chunks/{a1Hqq5w-.js → 2XtVrxH4.js} +1 -1
  13. package/build/client/_app/immutable/chunks/38H6DLwz.js +1 -0
  14. package/build/client/_app/immutable/chunks/{Cdn_bzx2.js → 3E8jbhSl.js} +1 -1
  15. package/build/client/_app/immutable/chunks/{CmNEu9LM.js → A5Iiq81h.js} +1 -1
  16. package/build/client/_app/immutable/chunks/{C48u-2qp.js → ANnPTMPF.js} +1 -1
  17. package/build/client/_app/immutable/chunks/{BfChGCnE.js → B5S0Wke9.js} +1 -1
  18. package/build/client/_app/immutable/chunks/BBDOLPkB.js +1 -0
  19. package/build/client/_app/immutable/chunks/{DJ36HFmi.js → BImoJlJo.js} +1 -1
  20. package/build/client/_app/immutable/chunks/{DqRXQwgi.js → BJsp4NMH.js} +1 -1
  21. package/build/client/_app/immutable/chunks/{C7a8i7sD.js → BKU5-8Td.js} +1 -1
  22. package/build/client/_app/immutable/chunks/BMgyB-Sy.js +1 -0
  23. package/build/client/_app/immutable/chunks/BYHxHjHc.js +1 -0
  24. package/build/client/_app/immutable/chunks/{BC5nqwvj.js → BZ6uvzU8.js} +1 -1
  25. package/build/client/_app/immutable/chunks/{CvjdFV1E.js → B_Gknb5_.js} +1 -1
  26. package/build/client/_app/immutable/chunks/{CDTTZjYW.js → Bf1I5ROF.js} +1 -1
  27. package/build/client/_app/immutable/chunks/{CaAId7nh.js → Bh_Z0-Fh.js} +1 -1
  28. package/build/client/_app/immutable/chunks/{CLvIgAhR.js → BjafRUyA.js} +1 -1
  29. package/build/client/_app/immutable/chunks/{CG77uzLI.js → Bq4mG8qS.js} +1 -1
  30. package/build/client/_app/immutable/chunks/{CI1tkkzb.js → BqX9BB0G.js} +1 -1
  31. package/build/client/_app/immutable/chunks/BwNsQhd8.js +1 -0
  32. package/build/client/_app/immutable/chunks/{CvWnUnS1.js → Bx68-tOf.js} +1 -1
  33. package/build/client/_app/immutable/chunks/{RIIj2qfU.js → C1dC47iq.js} +1 -1
  34. package/build/client/_app/immutable/chunks/{BNx4_m7U.js → C6zqVyWx.js} +1 -1
  35. package/build/client/_app/immutable/chunks/{GLtnCmfd.js → C8seIiU_.js} +1 -1
  36. package/build/client/_app/immutable/chunks/{B_6pr4k2.js → CCWXLdgd.js} +1 -1
  37. package/build/client/_app/immutable/chunks/{D5ecapQY.js → CHYEvS-6.js} +1 -1
  38. package/build/client/_app/immutable/chunks/{OVDjSnH6.js → CIH5Juz4.js} +1 -1
  39. package/build/client/_app/immutable/chunks/CMByLjfJ.js +1 -0
  40. package/build/client/_app/immutable/chunks/{CnAA0dO8.js → CNJYmM8n.js} +1 -1
  41. package/build/client/_app/immutable/chunks/CP4wchdA.js +2 -0
  42. package/build/client/_app/immutable/chunks/{B2hm1w7K.js → CQTGR8fW.js} +1 -1
  43. package/build/client/_app/immutable/chunks/{Bp4vT1Ke.js → CW2uYEvb.js} +1 -1
  44. package/build/client/_app/immutable/chunks/{BPFR73BS.js → C_Gd0Wor.js} +1 -1
  45. package/build/client/_app/immutable/chunks/{Dn4fSUjR.js → C_MwBDNt.js} +1 -1
  46. package/build/client/_app/immutable/chunks/{Dea0pTfN.js → Ch7rc-L7.js} +4 -4
  47. package/build/client/_app/immutable/chunks/{J3KpJGd_.js → ChC4viXw.js} +1 -1
  48. package/build/client/_app/immutable/chunks/{4pCoNSa4.js → CiLhSVIj.js} +1 -1
  49. package/build/client/_app/immutable/chunks/{C7iYNw8X.js → Cx8YXmgi.js} +1 -1
  50. package/build/client/_app/immutable/chunks/{BRNBFqQ_.js → D4I0Dqwh.js} +1 -1
  51. package/build/client/_app/immutable/chunks/D6mTYwDH.js +6 -0
  52. package/build/client/_app/immutable/chunks/{l5GiMY16.js → D7-uGicP.js} +1 -1
  53. package/build/client/_app/immutable/chunks/{C8wGq5T2.js → D7XrPGMK.js} +1 -1
  54. package/build/client/_app/immutable/chunks/{xRO38jd8.js → D7eKc9ur.js} +1 -1
  55. package/build/client/_app/immutable/chunks/{CEj_BGCY.js → DCmONIPx.js} +1 -1
  56. package/build/client/_app/immutable/chunks/DJWLLhNJ.js +1 -0
  57. package/build/client/_app/immutable/chunks/{qkxAgKjo.js → DNf96C-O.js} +1 -1
  58. package/build/client/_app/immutable/chunks/{D4Ogpdhb.js → DSqRqQNp.js} +1 -1
  59. package/build/client/_app/immutable/chunks/{D4xFb7_b.js → DT1b6JaK.js} +1 -1
  60. package/build/client/_app/immutable/chunks/{D3bC95qg.js → DWYSL4om.js} +1 -1
  61. package/build/client/_app/immutable/chunks/{Bi5NvDds.js → DYfx-RRD.js} +1 -1
  62. package/build/client/_app/immutable/chunks/{Bi25XSWW.js → DfIqw6WM.js} +1 -1
  63. package/build/client/_app/immutable/chunks/{CGux-rdo.js → Dj4_qcIH.js} +4 -4
  64. package/build/client/_app/immutable/chunks/{Cx__ttXF.js → Dk9aRp2m.js} +1 -1
  65. package/build/client/_app/immutable/chunks/{C-58cZAk.js → DmLHHlla.js} +3 -3
  66. package/build/client/_app/immutable/chunks/{GNZHLVjs.js → Do0VAo0_.js} +1 -1
  67. package/build/client/_app/immutable/chunks/{BFsDYOFz.js → DrVddB75.js} +1 -1
  68. package/build/client/_app/immutable/chunks/{CdFbOrCf.js → Dso_gKeU.js} +1 -1
  69. package/build/client/_app/immutable/chunks/{Bl78Sc72.js → DykTZ90H.js} +1 -1
  70. package/build/client/_app/immutable/chunks/{DNlR6G0m.js → GdM4UPkS.js} +1 -1
  71. package/build/client/_app/immutable/chunks/{B52Khb6E.js → IBXFCASw.js} +1 -1
  72. package/build/client/_app/immutable/chunks/{BIUi504d.js → IoX9lmZK.js} +1 -1
  73. package/build/client/_app/immutable/chunks/{Bn64J6A-.js → bpkmZ_Dv.js} +1 -1
  74. package/build/client/_app/immutable/chunks/{iK_uzrhN.js → crRp5OG4.js} +1 -1
  75. package/build/client/_app/immutable/chunks/da2fibLv.js +8 -0
  76. package/build/client/_app/immutable/chunks/{BOKyldQm.js → dcghWWmq.js} +1 -1
  77. package/build/client/_app/immutable/chunks/{CItDRTlN.js → fJBuRi-A.js} +1 -1
  78. package/build/client/_app/immutable/chunks/{CRe9IZg0.js → gXyYVhfn.js} +1 -1
  79. package/build/client/_app/immutable/chunks/{C2vkjTiv.js → j2lJ25s0.js} +1 -1
  80. package/build/client/_app/immutable/chunks/{DypDva7F.js → l3etNtOh.js} +1 -1
  81. package/build/client/_app/immutable/chunks/{BGQXNvll.js → olUfRNXS.js} +1 -1
  82. package/build/client/_app/immutable/chunks/{D3W5wGWM.js → uEyn1Z7p.js} +1 -1
  83. package/build/client/_app/immutable/entry/app.CCuVGpQc.js +2 -0
  84. package/build/client/_app/immutable/entry/start.BtgtnpyB.js +1 -0
  85. package/build/client/_app/immutable/nodes/0.GHtnahSb.js +1 -0
  86. package/build/client/_app/immutable/nodes/1.CaQ_jAq8.js +1 -0
  87. package/build/client/_app/immutable/nodes/2.DxOLlTKc.js +337 -0
  88. package/build/client/_app/version.json +1 -1
  89. package/build/handler.js +7 -6
  90. package/build/index.js +7 -6
  91. package/build/server/chunks/chunks/{app-config.svelte.js-BW7TwbBy.js → app-config.svelte.js-D7wkLUkK.js} +2 -2
  92. package/build/server/chunks/chunks/{db.js-BylhmazO.js → db.js-DRhjT6xK.js} +2 -2
  93. package/build/server/chunks/chunks/{db2.js-Cm8FBINY.js → db2.js-DUta2B-n.js} +207 -222
  94. package/build/server/chunks/chunks/{dsh-connection.js-Lnv7PlHw.js → dsh-connection.js-DRtqPR_j.js} +959 -752
  95. package/build/server/chunks/chunks/{dsh-events.js-D9tSYE7f.js → dsh-events.js-B_E1BU9F.js} +141 -350
  96. package/build/server/chunks/chunks/{git-probe.js-D_H3YQbR.js → git-probe.js-Daf6r7Z9.js} +3 -3
  97. package/build/server/chunks/chunks/index-server.js-CV2lq-ha.js +147 -0
  98. package/build/server/chunks/chunks/{insight-config.js-XUD5BN0g.js → insight-config.js-CA-iT3lB.js} +5 -3
  99. package/build/server/chunks/chunks/{internal2.js-BcS47nI-.js → internal.js-BcS47nI-.js} +1 -1
  100. package/build/server/chunks/chunks/{internal.js-D_QJoxN-.js → internal2.js-DAPn3Vk8.js} +11 -153
  101. package/build/server/chunks/chunks/merge.js-yMwW440S.js +228 -0
  102. package/build/server/chunks/chunks/{server.js-11-pxAWV.js → server.js-DqHGsQU2.js} +2 -2
  103. package/build/server/chunks/chunks/{state.js-DbUk4Hrz.js → state.js-CsIZcr7q.js} +5 -4
  104. package/build/server/chunks/chunks/theme-prefs.svelte.js-8CaWz46g.js +109 -0
  105. package/build/server/chunks/chunks/{watcher.js-DU-MZGLU.js → watcher.js-CoR53lwR.js} +5 -5
  106. package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-DQenu1Rx.js → _server.ts.js-CpeC2QLb.js} +3 -3
  107. package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-BvEDeAhP.js → _server.ts.js-BKlF4XGH.js} +7 -6
  108. package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-DLJ4sQBq.js → _server.ts.js-BpEhlidV.js} +7 -6
  109. package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-zogZnK_B.js → _server.ts.js-BG78X__J.js} +3 -3
  110. package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-BAfRDeE_.js → _server.ts.js-Dmh7f-hU.js} +3 -3
  111. package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-N21TnqYh.js → _server.ts.js-BEci0ZAx.js} +3 -3
  112. package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-C5ckDTov.js → _server.ts.js-OXFzXBSp.js} +3 -3
  113. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-CEPz4kVZ.js → _server.ts.js-x44GKy4R.js} +3 -3
  114. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-CUB5TKnW.js → _server.ts.js-Da5ZqeJ7.js} +3 -3
  115. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-BfDAa0Vb.js → _server.ts.js-BACv9hW-.js} +3 -3
  116. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-QiLS5yAj.js → _server.ts.js-BtiUS3iD.js} +3 -3
  117. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-C5kJrRx-.js → _server.ts.js-BOOyd1LI.js} +3 -3
  118. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-vydjdEkJ.js → _server.ts.js-D0GwQbdF.js} +5 -4
  119. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-y5sqH_UC.js → _server.ts.js-Bd0JYMlf.js} +3 -3
  120. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-BoYIpj-f.js → _server.ts.js-DqAV7OOv.js} +3 -3
  121. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-SchAEll8.js → _server.ts.js-Cz4P-68E.js} +5 -4
  122. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-B8bmQCwT.js → _server.ts.js-C4fXXBIM.js} +3 -3
  123. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-DxiKkvE-.js → _server.ts.js-_SIiC8sn.js} +2 -2
  124. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-BBexDstc.js → _server.ts.js-BiqNZiiN.js} +3 -3
  125. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-fd9StFXw.js → _server.ts.js-Bdx9V4oY.js} +3 -3
  126. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-98HaDusY.js → _server.ts.js-CuBqoV3c.js} +3 -3
  127. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-DN9APffn.js → _server.ts.js-CXPFI_Pn.js} +3 -3
  128. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-CeROEmUY.js → _server.ts.js-CRcaw4Yo.js} +3 -3
  129. package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-DKHmiqIs.js → _server.ts.js-dYrtVHDP.js} +3 -3
  130. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-S6XZDJmC.js → _server.ts.js-BtlfuMjf.js} +3 -3
  131. package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-CA4PUERZ.js → _server.ts.js-D12kAP9B.js} +3 -3
  132. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-BObM3Axz.js → _server.ts.js-C9JHp1WU.js} +3 -3
  133. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-CA34p4GV.js → _server.ts.js-bLF4Fbgn.js} +3 -3
  134. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-DPoRM_7u.js → _server.ts.js-BSw_zD-0.js} +3 -3
  135. package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-u-regI3R.js → _server.ts.js-bRLZ5TWI.js} +3 -3
  136. package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-YtkQGu7O.js → _server.ts.js-ChzWZoFk.js} +3 -3
  137. package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-tv0ivn2x.js → _server.ts.js-DdH5QmPS.js} +3 -3
  138. package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-DmU2MBc5.js → _server.ts.js-DwGQj520.js} +2 -2
  139. package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-DHhod6dT.js → _server.ts.js-CwXC6Stk.js} +3 -2
  140. package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-BmEUPTSa.js → _server.ts.js-CqyKA9g2.js} +6 -5
  141. package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-_1uYvYEA.js → _server.ts.js-yu695YoE.js} +6 -5
  142. package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-DaXO3et9.js → _server.ts.js-BhDAvM6y.js} +6 -5
  143. package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-hp85iKSu.js → _server.ts.js-BRUgPrJ2.js} +6 -5
  144. package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-CPB-9252.js → _server.ts.js-C7VJ2G4_.js} +6 -5
  145. package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-DKqzSQBE.js → _server.ts.js-BH5BRA_d.js} +6 -5
  146. package/build/server/chunks/entries/pages/{_error.svelte.js-AsgAVyDR.js → _error.svelte.js-B5TEtccE.js} +10 -9
  147. package/build/server/chunks/entries/pages/_layout.svelte.js-DRfiLzlz.js +20 -0
  148. package/build/server/chunks/entries/pages/{_page.server.ts.js-DTjoTdYK.js → _page.server.ts.js-CityLNBO.js} +3 -3
  149. package/build/server/chunks/entries/pages/{_page.svelte.js-CFdCjELr.js → _page.svelte.js-i6KsWK9O.js} +4654 -2413
  150. package/build/server/chunks/{handler-Bx2fbkEJ.js → handler-XuK3Ihhf.js} +3 -3
  151. package/build/server/chunks/{index.js-BldXQ38P.js → index.js-D2FEiD0I.js} +5 -4
  152. package/build/server/chunks/{manifest.js-Du-9DaEd.js → manifest.js-B_kahcFI.js} +45 -45
  153. package/build/server/chunks/nodes/0.js-C0B2o0le.js +12 -0
  154. package/build/server/chunks/nodes/1.js-C2e7NFqd.js +9 -0
  155. package/build/server/chunks/nodes/{2.js-DGLcInR6.js → 2.js-Bh3kLeYq.js} +9 -8
  156. package/package.json +2 -2
  157. package/skills/dsi-sloc/SKILL.md +117 -0
  158. package/skills/dsi-sloc/references/measurement.md +79 -0
  159. package/skills/dsi-sloc/references/report-skeleton.md +79 -0
  160. package/skills/dsi-thin/SKILL.md +214 -0
  161. package/skills/dsi-thin/references/ADR-0019-snapshot.md +363 -0
  162. package/skills/dsi-thin/references/authority-adr.md +28 -0
  163. package/skills/dsi-thin/references/input-contract.md +42 -0
  164. package/skills/dsi-thin/references/proven-gates.md +61 -0
  165. package/skills/dsi-thin/references/two-lane-contract.md +53 -0
  166. package/template/.dsi/prompts.sqlite +0 -0
  167. package/template/.dsi/prompts.sqlite-shm +0 -0
  168. package/template/.dsi/prompts.sqlite-wal +0 -0
  169. package/template/.dsi/resources/skills-reff.md +5 -4
  170. package/build/client/_app/immutable/assets/0.CRU0GiZX.css +0 -2
  171. package/build/client/_app/immutable/assets/2.Bzy6Q5kl.css +0 -1
  172. package/build/client/_app/immutable/chunks/-BV4MEqr.js +0 -1
  173. package/build/client/_app/immutable/chunks/66qbK5h1.js +0 -2
  174. package/build/client/_app/immutable/chunks/BLxS3bAX.js +0 -6
  175. package/build/client/_app/immutable/chunks/CPhcxli7.js +0 -1
  176. package/build/client/_app/immutable/chunks/CT1m72HM.js +0 -1
  177. package/build/client/_app/immutable/chunks/CxnI-Htc.js +0 -8
  178. package/build/client/_app/immutable/chunks/D0uZseUH.js +0 -1
  179. package/build/client/_app/immutable/chunks/D73RufXg.js +0 -1
  180. package/build/client/_app/immutable/chunks/HwuqC1sa.js +0 -1
  181. package/build/client/_app/immutable/chunks/NtHUheoE.js +0 -1
  182. package/build/client/_app/immutable/entry/app.D8WfdLSe.js +0 -2
  183. package/build/client/_app/immutable/entry/start.CVl0g0cv.js +0 -1
  184. package/build/client/_app/immutable/nodes/0.k1Ikzbp6.js +0 -1
  185. package/build/client/_app/immutable/nodes/1.X0If5xAN.js +0 -1
  186. package/build/client/_app/immutable/nodes/2.CELzu2i6.js +0 -337
  187. package/build/server/chunks/entries/pages/_layout.svelte.js-EFiihTdF.js +0 -18
  188. package/build/server/chunks/nodes/0.js-B0560RI0.js +0 -12
  189. package/build/server/chunks/nodes/1.js-D55AmdZs.js +0 -9
@@ -278,7 +278,8 @@ function readSettingsHomes() {
278
278
  };
279
279
  }
280
280
  var DEFAULT_TERMINAL_CONFIG = {
281
- enabled: false,
281
+ enabled: true,
282
+ theming: false,
282
283
  maxSessions: 8
283
284
  };
284
285
  function boolOr(v, fallback) {
@@ -291,6 +292,7 @@ function readTerminalConfig(configPath) {
291
292
  const section = isConfigRecord(rec) ? rec : {};
292
293
  return {
293
294
  enabled: boolOr(section.enabled, DEFAULT_TERMINAL_CONFIG.enabled),
295
+ theming: boolOr(section.theming, DEFAULT_TERMINAL_CONFIG.theming),
294
296
  tailBytes: intWithin(section.tailBytes, 4096, 8e6, DEFAULT_TERMINAL_TAIL_BYTES),
295
297
  spillMaxBytes: intWithin(section.spillMaxBytes, 1e6, 1e9, DEFAULT_TERMINAL_SPILL_BYTES),
296
298
  graceMs: intWithin(section.graceMs, 250, 3e4, DEFAULT_TERMINAL_GRACE_MS),
@@ -299,5 +301,5 @@ function readTerminalConfig(configPath) {
299
301
  };
300
302
  }
301
303
 
302
- export { DSI_CONFIG_PATH as D, readDshAuthConfig as a, readServerConfig as b, readA2aConfig as c, readPromptsConfig as d, readSettingsHomes as e, readSidebarConfig as f, readPanelConfig as g, readHomeConfig as h, readConversationConfig as i, joinTagWords as j, readChatConfig as k, readDshSessionsRootConfig as l, isValidTagWord as m, DEFAULT_DSH_PRESET_ENGLISH as n, DEFAULT_SERVER_CONFIG as o, parseTagWords as p, DEFAULT_PROMPTS_CONFIG as q, readDshPresetEnglishConfig as r, DEFAULT_SIDEBAR_CONFIG as s, DEFAULT_PANEL_CONFIG as t, DEFAULT_A2A_CONFIG as u, DEFAULT_HOME_CONFIG as v, DEFAULT_CONVERSATION_CONFIG as w, DEFAULT_CHAT_CONFIG as x, readTerminalConfig as y };
303
- //# sourceMappingURL=insight-config.js-XUD5BN0g.js.map
304
+ export { DSI_CONFIG_PATH as D, readServerConfig as a, readDshPresetEnglishConfig as b, readA2aConfig as c, readPromptsConfig as d, readSettingsHomes as e, readSidebarConfig as f, readPanelConfig as g, readHomeConfig as h, readConversationConfig as i, joinTagWords as j, readChatConfig as k, readDshSessionsRootConfig as l, isValidTagWord as m, DEFAULT_DSH_PRESET_ENGLISH as n, DEFAULT_SERVER_CONFIG as o, parseTagWords as p, DEFAULT_PROMPTS_CONFIG as q, readDshAuthConfig as r, DEFAULT_SIDEBAR_CONFIG as s, DEFAULT_PANEL_CONFIG as t, DEFAULT_A2A_CONFIG as u, DEFAULT_HOME_CONFIG as v, DEFAULT_CONVERSATION_CONFIG as w, DEFAULT_CHAT_CONFIG as x, readTerminalConfig as y };
305
+ //# sourceMappingURL=insight-config.js-CA-iT3lB.js.map
@@ -19,4 +19,4 @@ function reset() {
19
19
  }
20
20
 
21
21
  export { assets as a, base as b, app_dir as c, override as o, reset as r };
22
- //# sourceMappingURL=internal2.js-BcS47nI-.js.map
22
+ //# sourceMappingURL=internal.js-BcS47nI-.js.map
@@ -1,18 +1,5 @@
1
- import { u as uneval } from './uneval.js-BJ9Qq2SF.js';
2
- import { r as render, s as set, L as LEGACY_PROPS, g as get, f as flushSync, d as define_property, m as mutable_source, i as init_operations, a as get_first_child, b as get_next_sibling, H as HYDRATION_ERROR, c as set_hydrating, e as set_hydrate_node, h as hydration_failed, j as clear_text_content, k as component_root, l as hydrate_node, n as create_text, o as boundary, p as array_from, q as is_passive_event, t as set_active_reaction, u as set_active_effect, v as active_reaction, w as active_effect, x as setContext, y as derived, z as ssr_context, A as hydrating, B as push$1, C as component_context, D as hydration_mismatch, E as pop$1, F as run, G as noop, I as hasContext, J as getContext, K as getAllContexts, M as getAbortSignal, N as createContext, O as lifecycle_function_unavailable, P as experimental_async_required, Q as get_render_context, R as hydratable_serialization_failed } from './server.js-11-pxAWV.js';
1
+ import { j as render, k as set, L as LEGACY_PROPS, m as get, o as flushSync, p as define_property, q as mutable_source, t as init_operations, u as get_first_child, v as get_next_sibling, H as HYDRATION_ERROR, w as set_hydrating, x as set_hydrate_node, y as hydration_failed, z as clear_text_content, A as component_root, B as hydrate_node, C as create_text, D as boundary, E as array_from, F as is_passive_event, G as set_active_reaction, I as set_active_effect, J as active_reaction, K as active_effect, a as setContext, M as derived, N as hydrating, O as push$1, P as component_context, Q as hydration_mismatch, R as pop$1 } from './server.js-DqHGsQU2.js';
3
2
 
4
- //#region \0rolldown/runtime.js
5
- var __defProp = Object.defineProperty;
6
- var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
7
- var __exportAll = (all, no_symbols) => {
8
- let target = {};
9
- for (var name in all) __defProp(target, name, {
10
- get: all[name],
11
- enumerable: true
12
- });
13
- __defProp(target, Symbol.toStringTag, { value: "Module" });
14
- return target;
15
- };
16
3
  /**
17
4
  * `$env/dynamic/public`
18
5
  * @type {Record<string, string>}
@@ -146,7 +133,7 @@ function assign_nodes(start, end) {
146
133
  * @param {MountOptions<Props>} options
147
134
  * @returns {Exports}
148
135
  */
149
- function mount$1(component, options) {
136
+ function mount(component, options) {
150
137
  return _mount(component, options);
151
138
  }
152
139
  /**
@@ -174,7 +161,7 @@ function mount$1(component, options) {
174
161
  * }} options
175
162
  * @returns {Exports}
176
163
  */
177
- function hydrate$1(component, options) {
164
+ function hydrate(component, options) {
178
165
  init_operations();
179
166
  options.intro = options.intro ?? false;
180
167
  const target = options.target;
@@ -199,7 +186,7 @@ function hydrate$1(component, options) {
199
186
  init_operations();
200
187
  clear_text_content(target);
201
188
  set_hydrating(false);
202
- return mount$1(component, options);
189
+ return mount(component, options);
203
190
  } finally {
204
191
  set_hydrating(was_hydrating);
205
192
  set_hydrate_node(previous_hydrate_node);
@@ -303,7 +290,7 @@ var mounted_components = /* @__PURE__ */ new WeakMap();
303
290
  * @param {{ outro?: boolean }} [options]
304
291
  * @returns {Promise<void>}
305
292
  */
306
- function unmount$1(component, options) {
293
+ function unmount(component, options) {
307
294
  const fn = mounted_components.get(component);
308
295
  if (fn) {
309
296
  mounted_components.delete(component);
@@ -380,7 +367,7 @@ var Svelte4Component = class {
380
367
  return Reflect.set(target, prop, value);
381
368
  }
382
369
  });
383
- this.#instance = (options.hydrate ? hydrate$1 : mount$1)(options.component, {
370
+ this.#instance = (options.hydrate ? hydrate : mount)(options.component, {
384
371
  target: options.target,
385
372
  anchor: options.anchor,
386
373
  props,
@@ -408,7 +395,7 @@ var Svelte4Component = class {
408
395
  Object.assign(props, next);
409
396
  };
410
397
  this.#instance.$destroy = () => {
411
- unmount$1(this.#instance);
398
+ unmount(this.#instance);
412
399
  };
413
400
  }
414
401
  /** @param {Record<string, any>} props */
@@ -497,135 +484,6 @@ value: (onfulfilled, onrejected) => {
497
484
  return component_constructor;
498
485
  }
499
486
  //#endregion
500
- //#region node_modules/.pnpm/svelte@5.56.10/node_modules/svelte/src/internal/server/hydratable.js
501
- /** @import { HydratableLookupEntry } from '#server' */
502
- /**
503
- * @template T
504
- * @param {string} key
505
- * @param {() => T} fn
506
- * @returns {T}
507
- */
508
- function hydratable(key, fn) {
509
- experimental_async_required();
510
- const { hydratable } = get_render_context();
511
- let entry = hydratable.lookup.get(key);
512
- if (entry !== void 0) return entry.value;
513
- const value = fn();
514
- entry = encode(key, value, hydratable.unresolved_promises);
515
- hydratable.lookup.set(key, entry);
516
- return value;
517
- }
518
- /**
519
- * @param {string} key
520
- * @param {any} value
521
- * @param {Map<Promise<any>, string>} [unresolved]
522
- */
523
- function encode(key, value, unresolved) {
524
- /** @type {HydratableLookupEntry} */
525
- const entry = {
526
- value,
527
- serialized: ""
528
- };
529
- let uid = 1;
530
- entry.serialized = uneval(entry.value, (value, uneval) => {
531
- if (is_promise(value)) {
532
- const placeholder = `"${uid++}"`;
533
- const p = value.then((v) => {
534
- entry.serialized = entry.serialized.replace(placeholder, () => `r(${uneval(v)})`);
535
- }).catch((devalue_error) => hydratable_serialization_failed(key, serialization_stack(entry.stack, devalue_error?.stack)));
536
- p.catch(() => {}).finally(() => unresolved?.delete(p));
537
- (entry.promises ??= []).push(p);
538
- return placeholder;
539
- }
540
- });
541
- return entry;
542
- }
543
- /**
544
- * @param {any} value
545
- * @returns {value is Promise<any>}
546
- */
547
- function is_promise(value) {
548
- return Object.prototype.toString.call(value) === "[object Promise]";
549
- }
550
- /**
551
- * @param {string | undefined} root_stack
552
- * @param {string | undefined} uneval_stack
553
- */
554
- function serialization_stack(root_stack, uneval_stack) {
555
- let out = "";
556
- if (root_stack) out += root_stack + "\n";
557
- if (uneval_stack) out += "Caused by:\n" + uneval_stack + "\n";
558
- return out || "<missing stack trace>";
559
- }
560
- //#endregion
561
- //#region node_modules/.pnpm/svelte@5.56.10/node_modules/svelte/src/internal/server/blocks/snippet.js
562
- /** @import { Snippet } from 'svelte' */
563
- /** @import { Renderer } from '../renderer' */
564
- /** @import { Getters } from '#shared' */
565
- /**
566
- * Create a snippet programmatically
567
- * @template {unknown[]} Params
568
- * @param {(...params: Getters<Params>) => {
569
- * render: () => string
570
- * setup?: (element: Element) => void | (() => void)
571
- * }} fn
572
- * @returns {Snippet<Params>}
573
- */
574
- function createRawSnippet(fn) {
575
- return (renderer, ...args) => {
576
- var getters = args.map((value) => () => value);
577
- renderer.push(fn(...getters).render().trim());
578
- };
579
- }
580
- //#endregion
581
- //#region node_modules/.pnpm/svelte@5.56.10/node_modules/svelte/src/index-server.js
582
- /** @import { SSRContext } from '#server' */
583
- /** @import { Renderer } from './internal/server/renderer.js' */
584
- var index_server_exports = /* @__PURE__ */ __exportAll({
585
- afterUpdate: () => noop,
586
- beforeUpdate: () => noop,
587
- createContext: () => createContext,
588
- createEventDispatcher: () => createEventDispatcher,
589
- createRawSnippet: () => createRawSnippet,
590
- flushSync: () => noop,
591
- fork: () => fork,
592
- getAbortSignal: () => getAbortSignal,
593
- getAllContexts: () => getAllContexts,
594
- getContext: () => getContext,
595
- hasContext: () => hasContext,
596
- hydratable: () => hydratable,
597
- hydrate: () => hydrate,
598
- mount: () => mount,
599
- onDestroy: () => onDestroy,
600
- onMount: () => noop,
601
- setContext: () => setContext,
602
- settled: () => settled,
603
- tick: () => tick,
604
- unmount: () => unmount,
605
- untrack: () => run
606
- });
607
- /** @param {() => void} fn */
608
- function onDestroy(fn) {
609
- /** @type {Renderer} */ ssr_context.r.on_destroy(fn);
610
- }
611
- function createEventDispatcher() {
612
- return noop;
613
- }
614
- function mount() {
615
- lifecycle_function_unavailable("mount");
616
- }
617
- function hydrate() {
618
- lifecycle_function_unavailable("hydrate");
619
- }
620
- function unmount() {
621
- lifecycle_function_unavailable("unmount");
622
- }
623
- function fork() {
624
- lifecycle_function_unavailable("fork");
625
- }
626
- async function tick() {}
627
- async function settled() {}
628
- //#endregion
629
487
  //#region .svelte-kit/generated/root.svelte
630
488
  function Root($$renderer, $$props) {
631
489
  $$renderer.component(($$renderer) => {
@@ -719,10 +577,10 @@ var options = {
719
577
  service_worker_options: void 0,
720
578
  server_error_boundaries: false,
721
579
  templates: {
722
- app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"%paraglide.locale%\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.svg\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"tap\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
580
+ app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"%paraglide.locale%\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.svg\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <script>\n /* The Three-State Lamp pre-paint (ADR-0023 D3, 2026-10-11): resolve\n * the choice and set html[data-theme] BEFORE the bundle paints —\n * no flash of light on a dark reload. The key 'dsi-theme' is\n * pinned identical to src/lib/utils/theme-prefs.svelte.ts by\n * tests/unit/theme-prefs.test.ts; change both together. */\n try {\n var m = location.search.match(/[?&]profile=([^&]*)/);\n var prof = m ? m[1].replace(/[^A-Za-z0-9_-]/g, '').slice(0, 40) : '';\n var k = 'dsi-theme' + (prof ? '_' + prof : '');\n var t = localStorage.getItem(k);\n if (t !== 'light' && t !== 'dark' && t !== 'system') t = 'system';\n document.documentElement.dataset.theme =\n t === 'dark' || (t === 'system' && window.matchMedia && matchMedia('(prefers-color-scheme: dark)').matches)\n ? 'dark'\n : 'light';\n } catch (e) {\n document.documentElement.dataset.theme = 'light';\n }\n <\/script>\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"tap\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
723
581
  error: error_template_default
724
582
  },
725
- version_hash: "thit4h"
583
+ version_hash: "133rlis"
726
584
  };
727
585
  async function get_hooks() {
728
586
  let handle;
@@ -744,5 +602,5 @@ async function get_hooks() {
744
602
  };
745
603
  }
746
604
 
747
- export { __commonJSMin as _, set_public_env as a, set_read_implementation as b, onDestroy as c, __exportAll as d, get_hooks as g, index_server_exports as i, options as o, public_env as p, read_implementation as r, set_private_env as s };
748
- //# sourceMappingURL=internal.js-D_QJoxN-.js.map
605
+ export { set_public_env as a, set_read_implementation as b, get_hooks as g, options as o, public_env as p, read_implementation as r, set_private_env as s };
606
+ //# sourceMappingURL=internal2.js-DAPn3Vk8.js.map
@@ -0,0 +1,228 @@
1
+ //#region src/lib/utils/truncate.ts
2
+ /**
3
+ * Cut `text` to at most `max` characters. `max` <= 0 returns the full text
4
+ * (max means "no limit" — documented contract, pinned by tests).
5
+ */
6
+ function truncate(text, max) {
7
+ if (max <= 0 || text.length <= max) return {
8
+ head: text,
9
+ truncated: false,
10
+ cutChars: 0
11
+ };
12
+ return {
13
+ head: text.slice(0, max),
14
+ truncated: true,
15
+ cutChars: text.length - max
16
+ };
17
+ }
18
+ //#endregion
19
+ //#region src/lib/services/conversation/events/merge.ts
20
+ /**
21
+ * Merge incoming DsiEntry deltas into an existing list (id-keyed, idempotent):
22
+ *
23
+ * assistant-message, same id, finalized — REPLACES (the assembled message
24
+ * is authoritative over any streamed prefix, text AND reasoning; this
25
+ * is how the durable assistant/message finalizes the live-tail bubble
26
+ * folded by the store's applyLiveStream);
27
+ * any other kind, known id — ignored (retransmit);
28
+ * unknown id — appended.
29
+ *
30
+ * (Ledger v2 removed the durable chunk events whose fragments CONCAT'ed
31
+ * here while streaming; the live tail carries the full accumulation each
32
+ * poll and replaces wholesale in the store, outside this merge.)
33
+ *
34
+ * Tool lifecycle (Wave 1, task 1.2): tool/call is born status:'pending';
35
+ * a paired tool/result flips it to pass/fail (result.ok, i.e. isError on the
36
+ * wire) and carries durationMs = result.time − call.time — both directions of
37
+ * arrival (cold load has call+result together; polls may deliver result into
38
+ * a list that already holds the call). An orphan result (no call in the list)
39
+ * keeps its honest state: name unknown → 'tool', duration undefined.
40
+ *
41
+ * Also pairs tool-result entries with their tool-call by callId (fills
42
+ * toolName). Server cold load and client poll deltas share these rules.
43
+ */
44
+ function mergeEntries(existing, incoming) {
45
+ const merged = existing.map((e) => ({ ...e }));
46
+ for (const entry of incoming) {
47
+ const at = merged.findIndex((e) => e.id === entry.id);
48
+ if (at === -1) {
49
+ merged.push({ ...entry });
50
+ continue;
51
+ }
52
+ const candidate = merged[at];
53
+ if (candidate.kind === "workflow-run" && entry.kind === "workflow-run") {
54
+ merged[at] = mergeWorkflowRun(candidate, entry);
55
+ continue;
56
+ }
57
+ if (candidate.kind === "code-dispatch" && entry.kind === "code-dispatch") {
58
+ if (entry.argsRaw !== void 0) candidate.argsRaw = entry.argsRaw;
59
+ candidate.time = entry.time > candidate.time ? entry.time : candidate.time;
60
+ if (entry.settled) {
61
+ candidate.settled = true;
62
+ candidate.isError = entry.isError;
63
+ candidate.contentText = entry.contentText;
64
+ }
65
+ continue;
66
+ }
67
+ const prev = candidate;
68
+ if (prev.kind === "assistant-message" && entry.kind === "assistant-message") {
69
+ if (!entry.streaming) {
70
+ const next = { ...entry };
71
+ if (next.reasoning === void 0 && prev.reasoning !== void 0) {
72
+ next.reasoning = prev.reasoning;
73
+ next.reasoningStreaming = false;
74
+ }
75
+ if (next.text === "") next.text = prev.text;
76
+ merged[at] = next;
77
+ }
78
+ continue;
79
+ }
80
+ if (candidate.kind === "files-edited" && entry.kind === "files-edited") {
81
+ if (entry.seq > candidate.seq) merged[at] = { ...entry };
82
+ continue;
83
+ }
84
+ }
85
+ const calls = /* @__PURE__ */ new Map();
86
+ for (const e of merged) if (e.kind === "tool-call") calls.set(e.callId, e);
87
+ for (const e of merged) {
88
+ if (e.kind !== "tool-result") continue;
89
+ const call = calls.get(e.callId);
90
+ if (call) {
91
+ if (!e.toolName || e.toolName === "" || e.toolName === "tool") e.toolName = call.toolName;
92
+ if (!e.durationMs && e.time >= call.time) e.durationMs = e.time - call.time;
93
+ }
94
+ if (!e.toolName || e.toolName === "") e.toolName = "tool";
95
+ if (call && call.status === "pending") call.status = e.ok ? "pass" : "fail";
96
+ }
97
+ foldCodeDispatches(merged);
98
+ return merged;
99
+ }
100
+ /**
101
+ * Fold `code-dispatch` partials onto their parent tool-call entries
102
+ * (ADR D1/D2, 2026-09-05). Start and settled partials merge by subCallId —
103
+ * a settle fills content/isError and never un-settles; a late start after a
104
+ * settle keeps the settle's facts. Entries fold by parentCallId → the call's
105
+ * `dispatches` list in `<n>` submission order. Orphans (no parent call in
106
+ * the list) are dropped — the fold never guesses a parent. Idempotent:
107
+ * retransmitted partials rewrite the same facts; the folded entry carries
108
+ * fresh arrays, so re-running never aliases a prior list.
109
+ */
110
+ function foldCodeDispatches(entries) {
111
+ const bySub = /* @__PURE__ */ new Map();
112
+ for (const e of entries) {
113
+ if (e.kind !== "code-dispatch") continue;
114
+ const prev = bySub.get(e.subCallId);
115
+ if (prev === void 0) {
116
+ bySub.set(e.subCallId, e);
117
+ continue;
118
+ }
119
+ prev.time = e.time > prev.time ? e.time : prev.time;
120
+ if (e.argsRaw !== void 0) prev.argsRaw = e.argsRaw;
121
+ if (e.settled) {
122
+ prev.settled = true;
123
+ prev.isError = e.isError;
124
+ prev.contentText = e.contentText;
125
+ }
126
+ }
127
+ if (bySub.size === 0) return;
128
+ const calls = /* @__PURE__ */ new Map();
129
+ for (const e of entries) if (e.kind === "tool-call") calls.set(e.callId, e);
130
+ const grouped = /* @__PURE__ */ new Map();
131
+ for (const d of bySub.values()) {
132
+ const list = grouped.get(d.parentCallId) ?? [];
133
+ list.push(d);
134
+ grouped.set(d.parentCallId, list);
135
+ }
136
+ const orderOf = (subCallId) => {
137
+ const m = /:(?:code|ptc):(\d+)$/.exec(subCallId);
138
+ return m !== null ? Number(m[1]) : Number.MAX_SAFE_INTEGER;
139
+ };
140
+ for (const [parentCallId, list] of grouped) {
141
+ list.sort((a, b) => orderOf(a.subCallId) - orderOf(b.subCallId));
142
+ const call = calls.get(parentCallId);
143
+ if (call === void 0) continue;
144
+ const kept = new Map(call.dispatches?.map((d) => [d.subCallId, d]) ?? []);
145
+ const next = [];
146
+ const seen = /* @__PURE__ */ new Set();
147
+ for (const d of list) {
148
+ seen.add(d.subCallId);
149
+ const k = kept.get(d.subCallId);
150
+ const winner = d.settled ? d : k?.settled ? k : d;
151
+ next.push({
152
+ subCallId: d.subCallId,
153
+ name: d.name,
154
+ ...winner.argsRaw !== void 0 ? { argsRaw: winner.argsRaw } : k?.argsRaw !== void 0 ? { argsRaw: k.argsRaw } : {},
155
+ settled: d.settled || (k?.settled ?? false),
156
+ ...winner.isError !== void 0 ? { isError: winner.isError } : {},
157
+ ...winner.contentText !== void 0 ? { contentText: winner.contentText } : {}
158
+ });
159
+ }
160
+ for (const d of kept.values()) if (!seen.has(d.subCallId)) next.push({ ...d });
161
+ next.sort((a, b) => orderOf(a.subCallId) - orderOf(b.subCallId));
162
+ call.dispatches = next;
163
+ }
164
+ for (let i = entries.length - 1; i >= 0; i--) if (entries[i].kind === "code-dispatch") entries.splice(i, 1);
165
+ }
166
+ /**
167
+ * Collapse repeated `system-prompt` entries to one row per DISTINCT text
168
+ * (2026-09-01): a request/header is appended per epoch — initial, resume,
169
+ * change, series — so an uncollapsed transcript would repeat the identical
170
+ * "System prompt" row after every host restart or tools-only header bump.
171
+ * DSH's own Chat decides per header (`showsPrompt`); DSI cannot, because
172
+ * scroll-up pages map through fresh calls with no earlier-page state — so
173
+ * the rule is textual and stateless: keep a system-prompt row only when its
174
+ * text differs from the last KEPT one. Pure, order-preserving, idempotent;
175
+ * safe to re-run at every merge point (mapped batches, client deltas,
176
+ * prepended older pages).
177
+ */
178
+ function collapseSystemPromptEntries(entries) {
179
+ let lastKept;
180
+ const out = [];
181
+ for (const e of entries) {
182
+ if (e.kind === "system-prompt") {
183
+ if (e.text === lastKept) continue;
184
+ lastKept = e.text;
185
+ }
186
+ out.push(e);
187
+ }
188
+ return out;
189
+ }
190
+ /**
191
+ * Fold ONE workflow-run partial into the running entry (2026-08-31).
192
+ * Partials carry only what their event proved — run-start owns the name,
193
+ * agent-start appends a member, agent-end settles a member by its member
194
+ * seq (label/childId are NEVER overwritten by a settle partial's empty
195
+ * strings), run-end sets the terminal status. Idempotent: a retransmitted
196
+ * partial rewrites the same facts; a running status never un-settles a
197
+ * terminal one.
198
+ */
199
+ function mergeWorkflowRun(prev, incoming) {
200
+ const agents = [...prev.agents];
201
+ for (const a of incoming.agents) {
202
+ const at = agents.findIndex((x) => x.seq === a.seq);
203
+ if (at === -1) {
204
+ agents.push({ ...a });
205
+ continue;
206
+ }
207
+ agents[at] = {
208
+ ...agents[at],
209
+ label: agents[at].label === "" && a.label !== "" ? a.label : agents[at].label,
210
+ childId: agents[at].childId === "" && a.childId !== "" ? a.childId : agents[at].childId,
211
+ startedAt: agents[at].startedAt > 0 ? agents[at].startedAt : a.startedAt,
212
+ status: a.status !== "running" ? a.status : agents[at].status,
213
+ ...a.phase !== void 0 ? { phase: a.phase } : {},
214
+ ...a.endedAt !== void 0 ? { endedAt: a.endedAt } : {}
215
+ };
216
+ }
217
+ return {
218
+ ...prev,
219
+ seq: Math.max(prev.seq, incoming.seq),
220
+ time: Math.max(prev.time, incoming.time),
221
+ name: prev.name !== "" ? prev.name : incoming.name,
222
+ status: incoming.status !== "running" ? incoming.status : prev.status,
223
+ agents
224
+ };
225
+ }
226
+
227
+ export { collapseSystemPromptEntries as c, mergeEntries as m, truncate as t };
228
+ //# sourceMappingURL=merge.js-yMwW440S.js.map
@@ -4171,5 +4171,5 @@ function derived(fn) {
4171
4171
  };
4172
4172
  }
4173
4173
 
4174
- export { spread_props as $, hydrating as A, push$1 as B, component_context as C, hydration_mismatch as D, pop$1 as E, run as F, noop as G, HYDRATION_ERROR as H, hasContext as I, getContext as J, getAllContexts as K, LEGACY_PROPS as L, getAbortSignal as M, createContext as N, lifecycle_function_unavailable as O, experimental_async_required as P, get_render_context as Q, hydratable_serialization_failed as R, writable as S, readable as T, snapshot as U, head as V, escape_html as W, bind_props as X, attr as Y, attr_style as Z, attr_class as _, get_first_child as a, attributes as a0, clsx as a1, ensure_array_like as a2, element as a3, stringify as a4, html as a5, props_id as a6, get_next_sibling as b, set_hydrating as c, define_property as d, set_hydrate_node as e, flushSync as f, get as g, hydration_failed as h, init_operations as i, clear_text_content as j, component_root as k, hydrate_node as l, mutable_source as m, create_text as n, boundary as o, array_from as p, is_passive_event as q, render as r, set as s, set_active_reaction as t, set_active_effect as u, active_reaction as v, active_effect as w, setContext as x, derived as y, ssr_context as z };
4175
- //# sourceMappingURL=server.js-11-pxAWV.js.map
4174
+ export { spread_props as $, component_root as A, hydrate_node as B, create_text as C, boundary as D, array_from as E, is_passive_event as F, set_active_reaction as G, HYDRATION_ERROR as H, set_active_effect as I, active_reaction as J, active_effect as K, LEGACY_PROPS as L, derived as M, hydrating as N, push$1 as O, component_context as P, hydration_mismatch as Q, pop$1 as R, writable as S, readable as T, snapshot as U, head as V, escape_html as W, bind_props as X, attr as Y, attr_style as Z, attr_class as _, setContext as a, attributes as a0, clsx as a1, ensure_array_like as a2, element as a3, stringify as a4, html as a5, props_id as a6, getAllContexts as b, getAbortSignal as c, createContext as d, experimental_async_required as e, get_render_context as f, getContext as g, hasContext as h, hydratable_serialization_failed as i, render as j, set as k, lifecycle_function_unavailable as l, get as m, noop as n, flushSync as o, define_property as p, mutable_source as q, run as r, ssr_context as s, init_operations as t, get_first_child as u, get_next_sibling as v, set_hydrating as w, set_hydrate_node as x, hydration_failed as y, clear_text_content as z };
4175
+ //# sourceMappingURL=server.js-DqHGsQU2.js.map
@@ -1,7 +1,8 @@
1
- import { i as index_server_exports } from './internal.js-D_QJoxN-.js';
1
+ import { i as index_server_exports } from './index-server.js-CV2lq-ha.js';
2
2
  import './shared.js-HQ0rfhm4.js';
3
+ import './internal2.js-DAPn3Vk8.js';
3
4
  import './exports.js-DH_tjtdv.js';
4
- import { U as snapshot, J as getContext, G as noop } from './server.js-11-pxAWV.js';
5
+ import { U as snapshot, g as getContext, n as noop } from './server.js-DqHGsQU2.js';
5
6
  import { U as UI_LOCALES } from './config.js-B0w1-uCA.js';
6
7
  import { c as getLocale } from './runtime.js-CCJi3XaY.js';
7
8
  import './utils.js-CAdNO8Tu.js';
@@ -302,5 +303,5 @@ var page = {
302
303
  }
303
304
  };
304
305
 
305
- export { afterNavigate as a, backtoworkspace2 as b, replaceState as c, dshunreachable1 as d, currentLocale as e, page as p, reapednote1 as r, sessionnotfound2 as s, t, unexpectederror1 as u };
306
- //# sourceMappingURL=state.js-DbUk4Hrz.js.map
306
+ export { afterNavigate as a, backtoworkspace2 as b, currentLocale as c, dshunreachable1 as d, replaceState as e, page as p, reapednote1 as r, sessionnotfound2 as s, t, unexpectederror1 as u };
307
+ //# sourceMappingURL=state.js-CsIZcr7q.js.map
@@ -0,0 +1,109 @@
1
+ //#region src/lib/utils/storage-profile.ts
2
+ /**
3
+ * Storage profile — the ONE home of the workspace-profile key convention
4
+ * (extends the 2026-08-24 profile desks from dsi-panels to EVERY dsi-*
5
+ * localStorage key):
6
+ *
7
+ * no profile → dsi-panels · dsi-sidebar · dsi-session-filter
8
+ * ?profile=widi → dsi-panels_widi · dsi-sidebar_widi · dsi-session-filter_widi
9
+ *
10
+ * The profile is sticky (?profile= survives the seed strip, keys the
11
+ * desks) and sanitized here once — every prefs module routes its key
12
+ * through dsiKey so no two call sites re-implement the suffix.
13
+ */
14
+ /**
15
+ * Sanitize a raw `?profile=` value into a storage-key-safe segment.
16
+ * Keeps `[A-Za-z0-9_-]` (case preserved — profiles are exact ids), caps at
17
+ * 40 chars; anything that sanitizes to nothing is not a profile.
18
+ * @returns the safe segment, or null when the value carries no usable
19
+ * characters (the caller then behaves as if no profile were set).
20
+ */
21
+ function sanitizeWorkspaceProfile(raw) {
22
+ const safe = raw.replace(/[^A-Za-z0-9_-]/g, "").slice(0, 40);
23
+ return safe.length > 0 ? safe : null;
24
+ }
25
+ /**
26
+ * The storage key for a workspace profile.
27
+ * @param base the un-suffixed dsi-* key (e.g. 'dsi-panels').
28
+ * @param profile sanitized profile segment, or null/undefined for the
29
+ * default desk (the base key unchanged).
30
+ */
31
+ function dsiKey(base, profile) {
32
+ return profile ? `${base}_${profile}` : base;
33
+ }
34
+ //#endregion
35
+ //#region src/lib/utils/theme-prefs.svelte.ts
36
+ var THEME_BASE_KEY = "dsi-theme";
37
+ var currentProfile = () => typeof location === "undefined" ? null : sanitizeWorkspaceProfile(new URLSearchParams(location.search).get("profile") ?? "");
38
+ var storageKey = () => dsiKey(THEME_BASE_KEY, currentProfile());
39
+ var osPrefersDark = () => typeof window !== "undefined" && !!window.matchMedia?.("(prefers-color-scheme: dark)").matches;
40
+ var readStoredChoice = () => {
41
+ if (typeof localStorage === "undefined") return "system";
42
+ try {
43
+ const raw = localStorage.getItem(storageKey());
44
+ return raw === "light" || raw === "dark" || raw === "system" ? raw : "system";
45
+ } catch {
46
+ return "system";
47
+ }
48
+ };
49
+ var resolve = (choice) => choice === "system" ? osPrefersDark() ? "dark" : "light" : choice;
50
+ function createThemePrefs() {
51
+ let choice = "system";
52
+ let resolved = "light";
53
+ let listeningMq = null;
54
+ const apply = () => {
55
+ if (typeof document !== "undefined") document.documentElement.dataset.theme = resolved;
56
+ };
57
+ const persist = () => {
58
+ if (typeof localStorage === "undefined") return;
59
+ try {
60
+ localStorage.setItem(storageKey(), choice);
61
+ } catch {}
62
+ };
63
+ return {
64
+ get choice() {
65
+ return choice;
66
+ },
67
+ get resolved() {
68
+ return resolved;
69
+ },
70
+ /** Mount-time adoption: the pre-paint script (D3) already resolved and
71
+ * set the attribute before the bundle ran — we ADOPT it (flash-free),
72
+ * re-deriving the choice from storage. We only paint ourselves when
73
+ * the attribute was somehow missing. */
74
+ adopt() {
75
+ choice = readStoredChoice();
76
+ const attr = typeof document !== "undefined" ? document.documentElement.dataset.theme : void 0;
77
+ if (attr === "dark" || attr === "light") resolved = attr;
78
+ else {
79
+ resolved = resolve(choice);
80
+ apply();
81
+ }
82
+ this.listen();
83
+ },
84
+ /** The operator picked a state. Persist the CHOICE (never the resolved
85
+ * value — system must keep following the OS), then paint. */
86
+ set(next) {
87
+ choice = next;
88
+ resolved = resolve(next);
89
+ persist();
90
+ apply();
91
+ },
92
+ /** Live OS following, only while the choice is system (D2). */
93
+ listen() {
94
+ if (typeof window === "undefined" || !window.matchMedia) return;
95
+ const mq = window.matchMedia("(prefers-color-scheme: dark)");
96
+ if (listeningMq === mq) return;
97
+ listeningMq = mq;
98
+ mq.addEventListener("change", (e) => {
99
+ if (choice !== "system") return;
100
+ resolved = e.matches ? "dark" : "light";
101
+ apply();
102
+ });
103
+ }
104
+ };
105
+ }
106
+ var themePrefs = createThemePrefs();
107
+
108
+ export { dsiKey as d, sanitizeWorkspaceProfile as s, themePrefs as t };
109
+ //# sourceMappingURL=theme-prefs.svelte.js-8CaWz46g.js.map
@@ -1,7 +1,7 @@
1
- import { c as readA2aConfig } from './insight-config.js-XUD5BN0g.js';
2
- import { i as insertWaiting, o as openA2aDb, s as settleRow, p as pruneTerminalBefore, l as listWaiting } from './db.js-BylhmazO.js';
3
- import { g as getDshConnection } from './dsh-connection.js-Lnv7PlHw.js';
4
- import { a as entryForEvent, h as historyToEvents } from './dsh-events.js-D9tSYE7f.js';
1
+ import { c as readA2aConfig } from './insight-config.js-CA-iT3lB.js';
2
+ import { i as insertWaiting, o as openA2aDb, s as settleRow, p as pruneTerminalBefore, l as listWaiting } from './db.js-DRhjT6xK.js';
3
+ import { g as getDshConnection } from './dsh-connection.js-DRtqPR_j.js';
4
+ import { a as entryForEvent, h as historyToEvents } from './dsh-events.js-B_E1BU9F.js';
5
5
 
6
6
  //#region src/lib/server/a2a/matcher.ts
7
7
  /**
@@ -470,4 +470,4 @@ function registerWatch(row) {
470
470
  }
471
471
 
472
472
  export { configureWatcher as c, ensureStarted as e, registerWatch as r };
473
- //# sourceMappingURL=watcher.js-DU-MZGLU.js.map
473
+ //# sourceMappingURL=watcher.js-CoR53lwR.js.map
@@ -1,6 +1,6 @@
1
- import { g as getRow } from '../../../../../chunks/db.js-BylhmazO.js';
1
+ import { g as getRow } from '../../../../../chunks/db.js-DRhjT6xK.js';
2
2
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
- import '../../../../../chunks/insight-config.js-XUD5BN0g.js';
3
+ import '../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
4
  import '../../../../../chunks/config.js-B0w1-uCA.js';
5
5
  import '../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
@@ -36,4 +36,4 @@ var GET = ({ params }) => {
36
36
  };
37
37
 
38
38
  export { GET };
39
- //# sourceMappingURL=_server.ts.js-DQenu1Rx.js.map
39
+ //# sourceMappingURL=_server.ts.js-CpeC2QLb.js.map