@deepseek-insight/dsi 0.8.4 → 0.9.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 (211) hide show
  1. package/.agents/skills/glass-dsi/SKILL.md +195 -0
  2. package/.agents/skills/glass-dsi/references/cdp-verification.md +132 -0
  3. package/.agents/skills/glass-dsi/scripts/_connect.mjs +81 -0
  4. package/.agents/skills/glass-dsi/scripts/glass-url.mjs +48 -0
  5. package/.agents/skills/glass-dsi/scripts/glass.mjs +84 -0
  6. package/.agents/skills/glass-url/SKILL.md +117 -0
  7. package/.agents/skills/glass-url/scripts/_args.mjs +49 -0
  8. package/.agents/skills/glass-url/scripts/_connect.mjs +99 -0
  9. package/.agents/skills/glass-url/scripts/glass-url.mjs +114 -0
  10. package/bin/dsi.mjs +23 -74
  11. package/bin/lib/zai-patch.mjs +115 -0
  12. package/build/client/_app/immutable/assets/0.Ch5VtsKp.css +2 -0
  13. package/build/client/_app/immutable/assets/2.D0QOh44D.css +1 -0
  14. package/build/client/_app/immutable/chunks/{DwcY-69G.js → 02Wfo2G3.js} +1 -1
  15. package/build/client/_app/immutable/chunks/0Tfhif1V.js +3 -0
  16. package/build/client/_app/immutable/chunks/{GKkjunMm.js → 0ruuBBbh.js} +2 -2
  17. package/build/client/_app/immutable/chunks/{DUCaFYlx.js → 4bHE1npv.js} +1 -1
  18. package/build/client/_app/immutable/chunks/{4cwyag_I.js → B4hDUAJl.js} +1 -1
  19. package/build/client/_app/immutable/chunks/{Cr2ck_ss.js → BIPXB-2I.js} +1 -1
  20. package/build/client/_app/immutable/chunks/{CeLBjOd9.js → BIgv-kQR.js} +1 -1
  21. package/build/client/_app/immutable/chunks/BK6k1nBs.js +1 -0
  22. package/build/client/_app/immutable/chunks/{SN3Efo-Q.js → BKwmKcDY.js} +1 -1
  23. package/build/client/_app/immutable/chunks/{CRFuOqJI.js → BORjuqef.js} +1 -1
  24. package/build/client/_app/immutable/chunks/{CH_bR_0j.js → BPmZB0-N.js} +1 -1
  25. package/build/client/_app/immutable/chunks/BROtno1Y.js +1 -0
  26. package/build/client/_app/immutable/chunks/{DEVxi5CK.js → BT5Iel00.js} +1 -1
  27. package/build/client/_app/immutable/chunks/{DdI16loP.js → BX3y_1Hh.js} +1 -1
  28. package/build/client/_app/immutable/chunks/{DuiFyTVb.js → Bea1gxLq.js} +1 -1
  29. package/build/client/_app/immutable/chunks/{D0uxHECr.js → BpkpgvVw.js} +1 -1
  30. package/build/client/_app/immutable/chunks/{CB55Rp7-.js → BreZS7EW.js} +1 -1
  31. package/build/client/_app/immutable/chunks/{BmDADyfH.js → BsS_byzk.js} +1 -1
  32. package/build/client/_app/immutable/chunks/{BWRXzjmQ.js → Bslg-dr5.js} +1 -1
  33. package/build/client/_app/immutable/chunks/{BkYT72a1.js → C-YczRN1.js} +1 -1
  34. package/build/client/_app/immutable/chunks/{DBKMIEwD.js → C2aW4lzo.js} +1 -1
  35. package/build/client/_app/immutable/chunks/{C4gs6zoI.js → C2qFXaz5.js} +1 -1
  36. package/build/client/_app/immutable/chunks/{BBd0nTHG.js → C5RyRpOh.js} +1 -1
  37. package/build/client/_app/immutable/chunks/{DJQr4efH.js → C5iHDVU_.js} +1 -1
  38. package/build/client/_app/immutable/chunks/{B4F5liKq.js → C7opVlLF.js} +1 -1
  39. package/build/client/_app/immutable/chunks/{DIxy2USu.js → CAuEkmZ4.js} +1 -1
  40. package/build/client/_app/immutable/chunks/{BO99LSSA.js → CIkiqgtA.js} +1 -1
  41. package/build/client/_app/immutable/chunks/{Bpd0I3U7.js → CJesWaZn.js} +1 -1
  42. package/build/client/_app/immutable/chunks/{at6PQqQ4.js → CRsoS5Y9.js} +1 -1
  43. package/build/client/_app/immutable/chunks/CTWtsoJD.js +6 -0
  44. package/build/client/_app/immutable/chunks/CWk5gmU2.js +1 -0
  45. package/build/client/_app/immutable/chunks/{lF8CNVOA.js → CXkrluSK.js} +1 -1
  46. package/build/client/_app/immutable/chunks/{DmRY6FWm.js → C_8kFZ_X.js} +4 -4
  47. package/build/client/_app/immutable/chunks/{D6KenyiF.js → Ch7hUoAH.js} +1 -1
  48. package/build/client/_app/immutable/chunks/{CnzmIbjr.js → ChmmHPdM.js} +1 -1
  49. package/build/client/_app/immutable/chunks/{DfUgh5E_.js → CjajmcJs.js} +1 -1
  50. package/build/client/_app/immutable/chunks/{q5PRaRZk.js → Ck6GS6Vb.js} +1 -1
  51. package/build/client/_app/immutable/chunks/{eFcFJ9Ld.js → ClGoDr_f.js} +1 -1
  52. package/build/client/_app/immutable/chunks/{BQC6O_RV.js → ClqGHlec.js} +1 -1
  53. package/build/client/_app/immutable/chunks/{zypfUZYM.js → CnW6hje6.js} +1 -1
  54. package/build/client/_app/immutable/chunks/{OW5Q7tGb.js → CpI6VYCH.js} +1 -1
  55. package/build/client/_app/immutable/chunks/{BXKc4uuX.js → CygwwaiE.js} +1 -1
  56. package/build/client/_app/immutable/chunks/{Bqwvv7Vf.js → CyhZtsZO.js} +35 -35
  57. package/build/client/_app/immutable/chunks/{BenkQ_4r.js → D-E2Noqq.js} +1 -1
  58. package/build/client/_app/immutable/chunks/{DuRZnRVw.js → D4Btzp_A.js} +1 -1
  59. package/build/client/_app/immutable/chunks/{CdaJvl_A.js → D4C3Jijv.js} +1 -1
  60. package/build/client/_app/immutable/chunks/D9jhmf3I.js +1 -0
  61. package/build/client/_app/immutable/chunks/{Cf0aMC4n.js → DCw0gAtv.js} +1 -1
  62. package/build/client/_app/immutable/chunks/{B6bTO8_7.js → DEW3KpiC.js} +1 -1
  63. package/build/client/_app/immutable/chunks/{O6xxeEm8.js → DYLFbKJe.js} +1 -1
  64. package/build/client/_app/immutable/chunks/{BsBBq-Qk.js → DYu7kgVa.js} +1 -1
  65. package/build/client/_app/immutable/chunks/Dfexc5qV.js +1 -0
  66. package/build/client/_app/immutable/chunks/{kzciT-3i.js → DhmUE8Ri.js} +1 -1
  67. package/build/client/_app/immutable/chunks/{DdJNsJBH.js → DjwX3rAC.js} +1 -1
  68. package/build/client/_app/immutable/chunks/{CajOZJDl.js → DlOfy8Sx.js} +1 -1
  69. package/build/client/_app/immutable/chunks/{CK5vhXvt.js → Do7Y1_MQ.js} +1 -1
  70. package/build/client/_app/immutable/chunks/{ap4GAVq-.js → Dq2XIb1m.js} +1 -1
  71. package/build/client/_app/immutable/chunks/{Czey8tDK.js → DuT_Qr5k.js} +1 -1
  72. package/build/client/_app/immutable/chunks/{4B6J_kM2.js → DyGggFea.js} +1 -1
  73. package/build/client/_app/immutable/chunks/{D0ChUnpi.js → Dym4i64U.js} +1 -1
  74. package/build/client/_app/immutable/chunks/FPsIAiN_.js +1 -0
  75. package/build/client/_app/immutable/chunks/{CevKuuic.js → GIczpP_D.js} +1 -1
  76. package/build/client/_app/immutable/chunks/{B2jrDnt8.js → LjOLSmU7.js} +1 -1
  77. package/build/client/_app/immutable/chunks/VtK73aN-.js +8 -0
  78. package/build/client/_app/immutable/chunks/{AcmOeh2U.js → ZqoQH_jm.js} +1 -1
  79. package/build/client/_app/immutable/chunks/{BlwWx85l.js → aXn6rE_7.js} +1 -1
  80. package/build/client/_app/immutable/chunks/{Czc4_W7v.js → dUOeoGwg.js} +1 -1
  81. package/build/client/_app/immutable/chunks/f50lp1rr.js +1 -0
  82. package/build/client/_app/immutable/chunks/{7FnrqGK9.js → lvLrv1cG.js} +1 -1
  83. package/build/client/_app/immutable/chunks/{CZoElI5B.js → pt3_jHwh.js} +1 -1
  84. package/build/client/_app/immutable/chunks/{Byu_teLA.js → q8irUX-p.js} +1 -1
  85. package/build/client/_app/immutable/chunks/{CnxoqrkQ.js → qmOgUo3c.js} +1 -1
  86. package/build/client/_app/immutable/chunks/vpNeypNM.js +1 -0
  87. package/build/client/_app/immutable/chunks/{DU8C5thd.js → xvTPLhcB.js} +1 -1
  88. package/build/client/_app/immutable/chunks/{DFBKiA2Z.js → zp7hrpsC.js} +1 -1
  89. package/build/client/_app/immutable/entry/app.D4oc_iez.js +2 -0
  90. package/build/client/_app/immutable/entry/start.Xkr2MCWg.js +1 -0
  91. package/build/client/_app/immutable/nodes/0.fsrqKU9i.js +1 -0
  92. package/build/client/_app/immutable/nodes/1.3F37GwcO.js +1 -0
  93. package/build/client/_app/immutable/nodes/2.DsWNNw0K.js +340 -0
  94. package/build/client/_app/version.json +1 -1
  95. package/build/handler.js +6 -6
  96. package/build/index.js +6 -6
  97. package/build/server/chunks/chunks/{app-config.svelte.js-BM4WbMFB.js → app-config.svelte.js-BXjvTmJu.js} +8 -3
  98. package/build/server/chunks/chunks/{config.js-vThvQeMn.js → config.js-r_jw_bQQ.js} +54 -2
  99. package/build/server/chunks/chunks/{db.js-DQm6CZ_r.js → db.js-f2PmBjyD.js} +2 -2
  100. package/build/server/chunks/chunks/{db2.js-DUhFxA3a.js → db2.js-DkwY64WO.js} +2 -2
  101. package/build/server/chunks/chunks/{dsh-connection.js-BgeraFA2.js → dsh-connection.js-BW07Aicl.js} +18 -10
  102. package/build/server/chunks/chunks/{dsh-events.js-BUkLR6ZV.js → dsh-events.js-BHf0lLZ5.js} +16 -3
  103. package/build/server/chunks/chunks/{git-probe.js-CLF37SRh.js → git-probe.js-CQqTV7XX.js} +3 -3
  104. package/build/server/chunks/chunks/{index-server.js-DmIEbDVz.js → index-server.js-CPkVoRxB.js} +2 -2
  105. package/build/server/chunks/chunks/{insight-config.js-Dp_2gB5J.js → insight-config.js-C5-Rhh5A.js} +19 -6
  106. package/build/server/chunks/chunks/{internal2.js-J3h-US64.js → internal2.js-DbC8VGqD.js} +4 -4
  107. package/build/server/chunks/chunks/ledger-stats.js-BWACyDPg.js +72 -0
  108. package/build/server/chunks/chunks/{registry.js-CZNJZ0C-.js → registry.js-CWnRQ4vx.js} +751 -53
  109. package/build/server/chunks/chunks/{registry2.js-D3Pr1Rv9.js → registry2.js-CFzpvj9c.js} +17 -1
  110. package/build/server/chunks/chunks/{server.js-B1bDXhHu.js → server.js-Dijo7DtV.js} +2 -2
  111. package/build/server/chunks/chunks/{settings-document.js-Gw1puaik.js → settings-document.js-DxKURfc_.js} +2 -2
  112. package/build/server/chunks/chunks/{state.js-8RBD56dL.js → state.js-DR4xiIVw.js} +5 -5
  113. package/build/server/chunks/chunks/{watcher.js-BVKnoQUw.js → watcher.js-DvlNn8X0.js} +5 -5
  114. package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-BjzdVwdY.js → _server.ts.js-DItDXV23.js} +5 -5
  115. package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-3kQCQuHT.js → _server.ts.js-Hor8QZb1.js} +8 -8
  116. package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-BUBTCLFn.js → _server.ts.js-CEvvsa8B.js} +8 -8
  117. package/build/server/chunks/entries/endpoints/api/browser/_id_/activate/{_server.ts.js-BdMJzENm.js → _server.ts.js-sXqf-okw.js} +5 -5
  118. package/build/server/chunks/entries/endpoints/api/browser/_id_/close/{_server.ts.js-B5z9-N8Y.js → _server.ts.js-Byj9ApJh.js} +5 -5
  119. package/build/server/chunks/entries/endpoints/api/browser/_id_/closetab/{_server.ts.js-CnZHun5r.js → _server.ts.js-DOIsrzvg.js} +16 -9
  120. package/build/server/chunks/entries/endpoints/api/browser/_id_/element/{_server.ts.js-C1oM2Ihf.js → _server.ts.js-Cq3gmRfE.js} +5 -5
  121. package/build/server/chunks/entries/endpoints/api/browser/_id_/history/_server.ts.js-BGSLIV0t.js +61 -0
  122. package/build/server/chunks/entries/endpoints/api/browser/_id_/input/{_server.ts.js-DmbqGRMg.js → _server.ts.js-8slca75-.js} +5 -5
  123. package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/{_server.ts.js-Cj80T1yH.js → _server.ts.js-CpbdTYds.js} +5 -5
  124. package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/{_server.ts.js-6gi1UYTJ.js → _server.ts.js-Bls9LtLY.js} +5 -5
  125. package/build/server/chunks/entries/endpoints/api/browser/_id_/opentab/{_server.ts.js-Bhx_J7ot.js → _server.ts.js-DqNi_iW_.js} +5 -5
  126. package/build/server/chunks/entries/endpoints/api/browser/_id_/page/{_server.ts.js-DvQXNnX9.js → _server.ts.js-DuXWwo7i.js} +5 -5
  127. package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/{_server.ts.js-MflkVWUn.js → _server.ts.js-DXfqBDEw.js} +38 -9
  128. package/build/server/chunks/entries/endpoints/api/browser/_id_/tabs/{_server.ts.js-CoUSlLcP.js → _server.ts.js-Bgnl8lYs.js} +5 -5
  129. package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/{_server.ts.js-DNk4EgjJ.js → _server.ts.js-FHmQVbrv.js} +5 -5
  130. package/build/server/chunks/entries/endpoints/api/browser/_id_/zoom/_server.ts.js-BV4cBtSA.js +62 -0
  131. package/build/server/chunks/entries/endpoints/api/browser/{_server.ts.js-CECKap7O.js → _server.ts.js-4vgkwh7v.js} +9 -6
  132. package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-C8XDnDwe.js → _server.ts.js-C_9kwANR.js} +16 -6
  133. package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-BFmWshpv.js → _server.ts.js-h1OTHcL4.js} +5 -5
  134. package/build/server/chunks/entries/endpoints/api/dsh/jobs/{_server.ts.js-DATWy5mQ.js → _server.ts.js-B6nih9Sd.js} +5 -5
  135. package/build/server/chunks/entries/endpoints/api/dsh/jobs/follow/{_server.ts.js-CugOD1Zd.js → _server.ts.js-Cf17SVmD.js} +5 -5
  136. package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-DCupM4da.js → _server.ts.js-DjNwMbdS.js} +5 -5
  137. package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-Bh1btvr9.js → _server.ts.js-Cz5aaEhC.js} +5 -5
  138. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/_server.ts.js-BFBy5O9Y.js +78 -0
  139. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-WI9yH2iG.js → _server.ts.js-CgEdCo3T.js} +5 -5
  140. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-bN9adUqz.js → _server.ts.js-Bo_aEnHh.js} +5 -5
  141. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-Bxlm966G.js → _server.ts.js-Bd2G_GaH.js} +5 -5
  142. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-CM-raN_Q.js → _server.ts.js-DL64FyRw.js} +5 -5
  143. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-BzP30TXW.js → _server.ts.js-MhOGB66D.js} +7 -70
  144. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-DvNkrTaY.js → _server.ts.js-MjPgXgGO.js} +5 -5
  145. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-DXbCrefw.js → _server.ts.js-BUjDae5H.js} +5 -5
  146. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-B7YRQhuJ.js → _server.ts.js-dTKd7Hsv.js} +6 -6
  147. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-C_AEaLLJ.js → _server.ts.js-B82rvKoI.js} +5 -5
  148. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-Dj-pF5ik.js → _server.ts.js-Cqijsi-c.js} +4 -4
  149. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-BX9FWJ6g.js → _server.ts.js-CL_vVv2p.js} +29 -6
  150. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-CQ2Bmtu4.js → _server.ts.js-WS4W9Ly4.js} +5 -5
  151. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-Ha7xjnKW.js → _server.ts.js-B72KGRGh.js} +5 -5
  152. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-BOg6llHk.js → _server.ts.js-DK5xb2b5.js} +5 -5
  153. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-DBqGALzZ.js → _server.ts.js-lhT87EQu.js} +5 -5
  154. package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-CvA8WDDb.js → _server.ts.js-CMhfhbkN.js} +5 -5
  155. package/build/server/chunks/entries/endpoints/api/dsh/subagents/_server.ts.js-BLvcFsg6.js +72 -0
  156. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-BfjNH40j.js → _server.ts.js-D_rw2Uq6.js} +5 -5
  157. package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-De_qumyr.js → _server.ts.js-DfXpMMpw.js} +5 -5
  158. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-tFpJJHCb.js → _server.ts.js-2mJCJVxk.js} +5 -5
  159. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-DVx5GGA_.js → _server.ts.js-BCx0Lzjf.js} +5 -5
  160. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-DuKT-aZp.js → _server.ts.js-DECaSjwp.js} +5 -5
  161. package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-DsWFidFY.js → _server.ts.js-i_ciJzlb.js} +5 -5
  162. package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-C6j0adQs.js → _server.ts.js-BO1pScn7.js} +5 -5
  163. package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-BChAg4hm.js → _server.ts.js-Buhpf7WE.js} +5 -5
  164. package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-BPSHqbZN.js → _server.ts.js-DngUQzcT.js} +4 -4
  165. package/build/server/chunks/entries/endpoints/api/terminal/_id_/output/{_server.ts.js-BNBxebgG.js → _server.ts.js-DLETP4yQ.js} +2 -2
  166. package/build/server/chunks/entries/endpoints/api/terminal/_id_/reattach/{_server.ts.js-DDRJBGIr.js → _server.ts.js-uWl6oxPS.js} +2 -2
  167. package/build/server/chunks/entries/endpoints/api/terminal/_id_/send/{_server.ts.js-CA0vc_Cm.js → _server.ts.js-DYNmXaAd.js} +9 -2
  168. package/build/server/chunks/entries/endpoints/api/terminal/_id_/stream/{_server.ts.js-D6L8Gd_f.js → _server.ts.js-C5m3Ktho.js} +2 -2
  169. package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-D5CbUe5k.js → _server.ts.js-DoTNvcOa.js} +5 -5
  170. package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-B-5YihUA.js → _server.ts.js-BzYOJSkI.js} +7 -7
  171. package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-DT5jRZFE.js → _server.ts.js-xcNesei9.js} +7 -7
  172. package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-DtW-utrd.js → _server.ts.js-DsJWYdxt.js} +7 -7
  173. package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-8AIAo9jX.js → _server.ts.js-CNCku9BR.js} +7 -7
  174. package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-CMw96vjY.js → _server.ts.js-nLsNjOxj.js} +7 -7
  175. package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-DKufa14_.js → _server.ts.js-urQk2-ds.js} +7 -7
  176. package/build/server/chunks/entries/{hooks.server.js-B-e4_ekh.js → hooks.server.js-CU2RE5vs.js} +3 -3
  177. package/build/server/chunks/entries/pages/{_error.svelte.js-DRPduJdP.js → _error.svelte.js-e018KpwE.js} +6 -6
  178. package/build/server/chunks/entries/pages/{_page.server.ts.js-7x6ZfGoB.js → _page.server.ts.js-BK3Y6eff.js} +3 -3
  179. package/build/server/chunks/entries/pages/{_page.svelte.js-Dek8Q1_v.js → _page.svelte.js-DQWBiRk1.js} +4185 -1734
  180. package/build/server/chunks/{handler-DUyvzXsb.js → handler-DsD7I1_u.js} +3 -3
  181. package/build/server/chunks/{index.js-BrP1SRzN.js → index.js-C_WAkwJs.js} +4 -4
  182. package/build/server/chunks/{manifest.js-C4z6aoYx.js → manifest.js-DUy52VaP.js} +85 -64
  183. package/build/server/chunks/nodes/{0.js-BuB3t8Br.js → 0.js-CuV3dXVD.js} +3 -3
  184. package/build/server/chunks/nodes/1.js-Dc5QC-NJ.js +9 -0
  185. package/build/server/chunks/nodes/{2.js-C-o9KF10.js → 2.js-PwcF4_kT.js} +10 -10
  186. package/package.json +2 -2
  187. package/skills/{dsi-kb-scenario → dsi-fc-scenario}/SKILL.md +11 -6
  188. package/template/.dsi/prompts.sqlite +0 -0
  189. package/template/.dsi/prompts.sqlite-shm +0 -0
  190. package/template/.dsi/prompts.sqlite-wal +0 -0
  191. package/template/.dsi/settings.yaml +7 -2
  192. package/build/client/_app/immutable/assets/0.cswkTiBk.css +0 -2
  193. package/build/client/_app/immutable/assets/2.BPprd30B.css +0 -1
  194. package/build/client/_app/immutable/chunks/BHDqH9nE.js +0 -1
  195. package/build/client/_app/immutable/chunks/C7Sg_49n.js +0 -1
  196. package/build/client/_app/immutable/chunks/CAneZX4t.js +0 -8
  197. package/build/client/_app/immutable/chunks/D-Rolhzs.js +0 -1
  198. package/build/client/_app/immutable/chunks/DQXo7qdJ.js +0 -1
  199. package/build/client/_app/immutable/chunks/DY0MQ1mO.js +0 -1
  200. package/build/client/_app/immutable/chunks/K3xyLTzZ.js +0 -1
  201. package/build/client/_app/immutable/chunks/NcOjFWr3.js +0 -6
  202. package/build/client/_app/immutable/chunks/cHj8EuyS.js +0 -3
  203. package/build/client/_app/immutable/chunks/o7DVZODA.js +0 -1
  204. package/build/client/_app/immutable/chunks/pdYhlwhf.js +0 -1
  205. package/build/client/_app/immutable/entry/app.DYNedUxy.js +0 -2
  206. package/build/client/_app/immutable/entry/start.BzyrBssE.js +0 -1
  207. package/build/client/_app/immutable/nodes/0.DQYP6BCS.js +0 -1
  208. package/build/client/_app/immutable/nodes/1.CHB5qqQ9.js +0 -1
  209. package/build/client/_app/immutable/nodes/2.C6No1310.js +0 -340
  210. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/_server.ts.js-Cb8SBWVw.js +0 -46
  211. package/build/server/chunks/nodes/1.js-CW4V8ni8.js +0 -9
@@ -1 +1 @@
1
- {"version":"1792948858224"}
1
+ {"version":"1793694843765"}
package/build/handler.js CHANGED
@@ -2,9 +2,9 @@ import './shims.js';
2
2
  import 'node:fs';
3
3
  import 'node:path';
4
4
  import 'node:process';
5
- export { h as handler } from './server/chunks/handler-DUyvzXsb.js';
6
- import './server/chunks/index.js-BrP1SRzN.js';
7
- import './server/chunks/manifest.js-C4z6aoYx.js';
5
+ export { h as handler } from './server/chunks/handler-DsD7I1_u.js';
6
+ import './server/chunks/index.js-C_WAkwJs.js';
7
+ import './server/chunks/manifest.js-DUy52VaP.js';
8
8
  import './env.js';
9
9
  import 'node:buffer';
10
10
  import 'node:crypto';
@@ -16,9 +16,9 @@ import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
16
16
  import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
17
17
  import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
18
18
  import 'node:url';
19
- import './server/chunks/chunks/index-server.js-DmIEbDVz.js';
20
- import './server/chunks/chunks/server.js-B1bDXhHu.js';
19
+ import './server/chunks/chunks/index-server.js-CPkVoRxB.js';
20
+ import './server/chunks/chunks/server.js-Dijo7DtV.js';
21
21
  import './server/chunks/chunks/internal.js-BcS47nI-.js';
22
- import './server/chunks/chunks/internal2.js-J3h-US64.js';
22
+ import './server/chunks/chunks/internal2.js-DbC8VGqD.js';
23
23
  import './server/chunks/chunks/exports.js-DH_tjtdv.js';
24
24
  //# sourceMappingURL=handler.js.map
package/build/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'node:http';
2
2
  import fs__default from 'node:fs';
3
3
  import process from 'node:process';
4
- import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-DUyvzXsb.js';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-DsD7I1_u.js';
5
5
  import { env, timeout_env } from './env.js';
6
6
  import { rm } from 'node:fs/promises';
7
7
  import './shims.js';
@@ -14,13 +14,13 @@ import 'node:stream';
14
14
  import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
15
15
  import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
16
16
  import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
17
- import './server/chunks/index.js-BrP1SRzN.js';
18
- import './server/chunks/chunks/index-server.js-DmIEbDVz.js';
19
- import './server/chunks/chunks/server.js-B1bDXhHu.js';
17
+ import './server/chunks/index.js-C_WAkwJs.js';
18
+ import './server/chunks/chunks/index-server.js-CPkVoRxB.js';
19
+ import './server/chunks/chunks/server.js-Dijo7DtV.js';
20
20
  import './server/chunks/chunks/internal.js-BcS47nI-.js';
21
- import './server/chunks/chunks/internal2.js-J3h-US64.js';
21
+ import './server/chunks/chunks/internal2.js-DbC8VGqD.js';
22
22
  import './server/chunks/chunks/exports.js-DH_tjtdv.js';
23
- import './server/chunks/manifest.js-C4z6aoYx.js';
23
+ import './server/chunks/manifest.js-DUy52VaP.js';
24
24
  import 'node:url';
25
25
 
26
26
  const path = env('SOCKET_PATH', false);
@@ -1,4 +1,4 @@
1
- import { D as DEFAULT_PROMPT_TAGS, a as DEFAULT_SIDEBAR_PLACEMENT, b as DEFAULT_PANEL_MAX_ZOOM, c as DEFAULT_PANEL_MIN_ZOOM, d as DEFAULT_A2A_WATCH_TIMEOUT_MS, e as DEFAULT_A2A_FAST_POLL_MS, f as DEFAULT_HOME_REFRESH_MS, g as DEFAULT_HEARTBEAT_TYPE, h as DEFAULT_STATS_BAR_MODE, j as DEFAULT_POLL_IDLE_MS, k as DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS } from './config.js-vThvQeMn.js';
1
+ import { D as DEFAULT_PROMPT_TAGS, a as DEFAULT_SIDEBAR_PLACEMENT, b as DEFAULT_PANEL_PRESETS, c as DEFAULT_PANEL_MAX_ZOOM, d as DEFAULT_PANEL_MIN_ZOOM, e as DEFAULT_A2A_WATCH_TIMEOUT_MS, f as DEFAULT_A2A_FAST_POLL_MS, g as DEFAULT_BROWSER_MAX_WIDTH, h as DEFAULT_HOME_REFRESH_MS, j as DEFAULT_HEARTBEAT_TYPE, k as DEFAULT_STATS_BAR_MODE, l as DEFAULT_POLL_IDLE_MS, m as DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS } from './config.js-r_jw_bQQ.js';
2
2
 
3
3
  //#region src/lib/services/chat/prompt-trigger.ts
4
4
  /** Which mode a trigger query is in — the char after nothing: the FIRST
@@ -292,6 +292,10 @@ function freshDefault() {
292
292
  heartbeatType: DEFAULT_HEARTBEAT_TYPE
293
293
  },
294
294
  home: { refreshMs: DEFAULT_HOME_REFRESH_MS },
295
+ browserWidths: {
296
+ defaultWidth: 860,
297
+ maxWidth: DEFAULT_BROWSER_MAX_WIDTH
298
+ },
295
299
  a2a: {
296
300
  fastPollMs: DEFAULT_A2A_FAST_POLL_MS,
297
301
  watchTimeoutMs: DEFAULT_A2A_WATCH_TIMEOUT_MS,
@@ -302,7 +306,8 @@ function freshDefault() {
302
306
  minWidth: 480,
303
307
  maxWidth: 860,
304
308
  minZoom: DEFAULT_PANEL_MIN_ZOOM,
305
- maxZoom: DEFAULT_PANEL_MAX_ZOOM
309
+ maxZoom: DEFAULT_PANEL_MAX_ZOOM,
310
+ presets: { ...DEFAULT_PANEL_PRESETS }
306
311
  },
307
312
  sidebar: {
308
313
  defaultWidth: 400,
@@ -331,4 +336,4 @@ function appConfig() {
331
336
  }
332
337
 
333
338
  export { appConfig as a, parseTagWords as b, searchKey as c, textPreviewOf as d, getTrigger as g, isValidTagWord as i, previewSegments as p, shouldRecordPrompt as s, triggerMode as t };
334
- //# sourceMappingURL=app-config.svelte.js-BM4WbMFB.js.map
339
+ //# sourceMappingURL=app-config.svelte.js-BXjvTmJu.js.map
@@ -83,6 +83,58 @@ var DEFAULT_PROMPT_TAGS = [
83
83
  "rca",
84
84
  "kb"
85
85
  ];
86
+ var DEFAULT_PANEL_PRESETS = {
87
+ agent: {},
88
+ glass: {},
89
+ sidebar: {},
90
+ zoom: {}
91
+ };
92
+ /** Shared gate for the preset maps — the server reader AND the browser
93
+ * assembler run this EXACT function (the resolveA2aConfig pattern). The
94
+ * numeric kinds speak the uniform dial grammar (ADR-0006a ext 6): nested
95
+ * `width` map or flat slot map; only chord slots 1..9 survive; junk drops
96
+ * silently. */
97
+ function resolvePanelPresets(section) {
98
+ const rec = isConfigRecord(section) ? section : {};
99
+ const readDial = (key, lo, hi) => {
100
+ const m = isConfigRecord(rec[key]) ? rec[key] : {};
101
+ const src = (isConfigRecord(m.width) ? m.width : null) ?? m;
102
+ const out = {};
103
+ for (const [k, v] of Object.entries(src)) {
104
+ const slot = Number(k);
105
+ const px = intWithin(v, lo, hi, NaN);
106
+ if (Number.isInteger(slot) && slot >= 1 && slot <= 9 && !Number.isNaN(px)) out[slot] = px;
107
+ }
108
+ return out;
109
+ };
110
+ const sb = isConfigRecord(rec.sidebar) ? rec.sidebar : {};
111
+ const nested = isConfigRecord(sb.state) || isConfigRecord(sb.width);
112
+ const sbState = isConfigRecord(sb.state) ? sb.state : {};
113
+ const sbWidth = isConfigRecord(sb.width) ? sb.width : {};
114
+ const laneSource = (k) => nested ? {
115
+ state: sbState[k],
116
+ width: sbWidth[k]
117
+ } : sb[k];
118
+ const sidebar = {};
119
+ const laneSlots = new Set(nested ? [...Object.keys(sbState), ...Object.keys(sbWidth)] : Object.keys(sb));
120
+ for (const k of laneSlots) {
121
+ const slot = Number(k);
122
+ if (!Number.isInteger(slot) || slot < 1 || slot > 9) continue;
123
+ const src = laneSource(k);
124
+ const lane = {};
125
+ if (src.state === "collapse" || src.state === "expand") lane.state = src.state;
126
+ const px = intWithin(src.width, 200, 4e3, NaN);
127
+ if (!Number.isNaN(px)) lane.width = px;
128
+ if (lane.state !== void 0 || lane.width !== void 0) sidebar[slot] = lane;
129
+ }
130
+ return {
131
+ agent: readDial("agent", 200, 4e3),
132
+ glass: readDial("glass", 200, 4e3),
133
+ sidebar,
134
+ zoom: readDial("zoom", 25, 300)
135
+ };
136
+ }
137
+ var DEFAULT_BROWSER_MAX_WIDTH = 1024;
86
138
  var DEFAULT_PANEL_MIN_ZOOM = .25;
87
139
  var DEFAULT_PANEL_MAX_ZOOM = 1.25;
88
140
  /** `sidebar.placement` default — the out-of-zoom rail (by-design layout). */
@@ -158,5 +210,5 @@ var DEFAULT_TERMINAL_GRACE_MS = 3e3;
158
210
  /** Output-silence bound a send-wait may settle on as inferred_idle. */
159
211
  var DEFAULT_TERMINAL_IDLE_MS = 1200;
160
212
 
161
- export { DEFAULT_PROMPT_TAGS as D, UI_LOCALES as U, DEFAULT_SIDEBAR_PLACEMENT as a, DEFAULT_PANEL_MAX_ZOOM as b, DEFAULT_PANEL_MIN_ZOOM as c, DEFAULT_A2A_WATCH_TIMEOUT_MS as d, DEFAULT_A2A_FAST_POLL_MS as e, DEFAULT_HOME_REFRESH_MS as f, DEFAULT_HEARTBEAT_TYPE as g, DEFAULT_STATS_BAR_MODE as h, isConfigRecord as i, DEFAULT_POLL_IDLE_MS as j, DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS as k, resolveSidebarPlacement as l, resolveWidthBounds as m, resolveZoomBounds as n, intWithin as o, resolveConversationFlags as p, resolveStatsBarMode as q, resolveA2aConfig as r, DEFAULT_TERMINAL_IDLE_MS as s, DEFAULT_TERMINAL_GRACE_MS as t, DEFAULT_TERMINAL_SPILL_BYTES as u, DEFAULT_TERMINAL_TAIL_BYTES as v, dshBaseUrl as w };
162
- //# sourceMappingURL=config.js-vThvQeMn.js.map
213
+ export { DEFAULT_PROMPT_TAGS as D, UI_LOCALES as U, DEFAULT_SIDEBAR_PLACEMENT as a, DEFAULT_PANEL_PRESETS as b, DEFAULT_PANEL_MAX_ZOOM as c, DEFAULT_PANEL_MIN_ZOOM as d, DEFAULT_A2A_WATCH_TIMEOUT_MS as e, DEFAULT_A2A_FAST_POLL_MS as f, DEFAULT_BROWSER_MAX_WIDTH as g, DEFAULT_HOME_REFRESH_MS as h, isConfigRecord as i, DEFAULT_HEARTBEAT_TYPE as j, DEFAULT_STATS_BAR_MODE as k, DEFAULT_POLL_IDLE_MS as l, DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS as m, intWithin as n, resolveSidebarPlacement as o, resolveWidthBounds as p, resolvePanelPresets as q, resolveA2aConfig as r, resolveZoomBounds as s, resolveConversationFlags as t, resolveStatsBarMode as u, DEFAULT_TERMINAL_IDLE_MS as v, DEFAULT_TERMINAL_GRACE_MS as w, DEFAULT_TERMINAL_SPILL_BYTES as x, DEFAULT_TERMINAL_TAIL_BYTES as y, dshBaseUrl as z };
214
+ //# sourceMappingURL=config.js-r_jw_bQQ.js.map
@@ -1,4 +1,4 @@
1
- import { D as DSI_CONFIG_PATH } from './insight-config.js-Dp_2gB5J.js';
1
+ import { D as DSI_CONFIG_PATH } from './insight-config.js-C5-Rhh5A.js';
2
2
  import { mkdirSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { DatabaseSync } from 'node:sqlite';
@@ -117,4 +117,4 @@ function pruneTerminalBefore(cutoffMs, db = openA2aDb()) {
117
117
  }
118
118
 
119
119
  export { listRecent as a, getRow as g, insertWaiting as i, listWaiting as l, openA2aDb as o, pruneTerminalBefore as p, settleRow as s };
120
- //# sourceMappingURL=db.js-DQm6CZ_r.js.map
120
+ //# sourceMappingURL=db.js-f2PmBjyD.js.map
@@ -1,4 +1,4 @@
1
- import { e as readPromptsConfig, D as DSI_CONFIG_PATH, j as joinTagWords, p as parseTagWords } from './insight-config.js-Dp_2gB5J.js';
1
+ import { e as readPromptsConfig, D as DSI_CONFIG_PATH, j as joinTagWords, p as parseTagWords } from './insight-config.js-C5-Rhh5A.js';
2
2
  import { mkdirSync } from 'node:fs';
3
3
  import { join, dirname } from 'node:path';
4
4
  import { DatabaseSync } from 'node:sqlite';
@@ -762,4 +762,4 @@ function updatePrompt(id, fields) {
762
762
  }
763
763
 
764
764
  export { countPromptUse as a, renamePromptLabel as b, createPrompt as c, deletePrompt as d, listPrompts as l, resolvePromptsDbPath as r, searchPrompts as s, updatePrompt as u };
765
- //# sourceMappingURL=db2.js-DUhFxA3a.js.map
765
+ //# sourceMappingURL=db2.js-DkwY64WO.js.map
@@ -1,5 +1,5 @@
1
- import { r as readDshAuthConfig, a as readServerConfig, b as readDshPresetEnglishConfig } from './insight-config.js-Dp_2gB5J.js';
2
- import { w as dshBaseUrl } from './config.js-vThvQeMn.js';
1
+ import { r as readDshAuthConfig, a as readServerConfig, b as readDshPresetEnglishConfig } from './insight-config.js-C5-Rhh5A.js';
2
+ import { z as dshBaseUrl } from './config.js-r_jw_bQQ.js';
3
3
 
4
4
  //#region src/lib/server/dsh-rpc.ts
5
5
  /**
@@ -1872,13 +1872,18 @@ var RpcRelay = class {
1872
1872
  * image read. Returns the ref plus canonical base64 data; host refusals
1873
1873
  * (unknown id, foreign session) reject as DshRpcError → 502 upstream.
1874
1874
  *
1875
- * @param sessionId - owning session (authorization scope).
1876
- * @param attachmentId - durable content-addressed id from an ImageBlock.
1875
+ * 0.2.2 contract (2026-10-29 release jump): verify-by-ref — the wire arg
1876
+ * is the FULL image reference inside request.attachment; id-only reads
1877
+ * reject gateway/input-invalid (live-probed). The ref is the DsiImageRef
1878
+ * the ledger fold already carries (content.ts imageRefsOfContent).
1879
+ *
1880
+ * @param sessionId - owning session (gateway permission scope).
1881
+ * @param ref - complete image reference from the folded session log.
1877
1882
  */
1878
- async readAttachment(sessionId, attachmentId) {
1883
+ async readAttachment(sessionId, ref) {
1879
1884
  return await this.conn.rpc(DSH_METHODS.attachment, DSH_ARGS.attachment({
1880
1885
  sessionId,
1881
- attachmentId
1886
+ attachment: ref
1882
1887
  }));
1883
1888
  }
1884
1889
  async pickDirectory(signal) {
@@ -2551,9 +2556,12 @@ var DshConnection = class {
2551
2556
  async listDirectory(path) {
2552
2557
  return this.relay.listDirectory(path);
2553
2558
  }
2554
- /** session.attachment — session-authorized durable image read. */
2555
- async readAttachment(sessionId, attachmentId) {
2556
- return this.relay.readAttachment(sessionId, attachmentId);
2559
+ /** session.attachment — session-authorized durable image read. The 0.2.2
2560
+ * contract (2026-10-29 release jump) is verify-by-ref: the caller supplies
2561
+ * the FULL image reference (DsiImageRef, mirrored from the wire
2562
+ * ImageBlock) and the host checks it against the stored bytes. */
2563
+ async readAttachment(sessionId, ref) {
2564
+ return this.relay.readAttachment(sessionId, ref);
2557
2565
  }
2558
2566
  /** host.pickDirectory — the NATIVE directory chooser. */
2559
2567
  async pickDirectory(signal) {
@@ -2628,4 +2636,4 @@ var DshConnection = class {
2628
2636
  };
2629
2637
 
2630
2638
  export { DshRpcError as D, isPromptImageMediaType as a, buildPromptContent as b, getDshConnection as g, isSubagentRejection as i, mapRpcFailure as m, statusFor as s };
2631
- //# sourceMappingURL=dsh-connection.js-BgeraFA2.js.map
2639
+ //# sourceMappingURL=dsh-connection.js-BW07Aicl.js.map
@@ -185,8 +185,18 @@ function contextInjectionProducer(data) {
185
185
  if (source.plugin === RUNTIME_CONTEXT_PLUGIN && source.form === RUNTIME_CONTEXT_FORM && textOfContent(data?.content).startsWith(RUNTIME_CONTEXT_TEXT_PREFIX)) return "runtime-context";
186
186
  if (source.plugin === "compact") return "compaction";
187
187
  if (source.plugin === "user-approval") return "user-approval";
188
+ if (source.plugin === "goal") return "goal";
189
+ if (source.plugin === "tool-goal") return "tool-goal";
190
+ if (source.plugin === "time-context") return "time-context";
191
+ if (source.plugin === "goal") return "goal";
192
+ if (source.plugin === "tool-goal") return "tool-goal";
193
+ if (source.plugin === "time-context") return "time-context";
188
194
  return "plugin";
189
195
  }
196
+ if (source.kind === "goal") return "goal";
197
+ if (source.kind === "tool-goal") return "tool-goal";
198
+ if (source.kind === "time-context") return "time-context";
199
+ if (source.kind === "user-approval") return "user-approval";
190
200
  if (source.kind === "agent-instructions" && source.form === "instructions") return "instructions";
191
201
  if (source.kind === "skill-catalog" && source.form === "catalog") return "skill-catalog";
192
202
  if (source.kind === "skill-invocation" && source.form === "instructions") return "skill-invocation";
@@ -483,7 +493,10 @@ function entryForEvent(event) {
483
493
  const message = data?.message;
484
494
  const callId = readStr(message?.source?.callId) ?? `seq:${event.seq}`;
485
495
  const resultPart = firstOfType(message?.content, "tool-result");
486
- const resultText = textOfContent(resultPart?.content) || void 0;
496
+ const blockIsError = resultPart?.isError === true;
497
+ const messageIsError = message?.isError === true;
498
+ const dataHasError = data?.error !== void 0;
499
+ const resultText = (resultPart ? textOfContent(resultPart.content) : "") || (!resultPart ? textOfContent(message?.content) : "") || void 0;
487
500
  return {
488
501
  kind: "tool-result",
489
502
  id: `tr:${callId}`,
@@ -491,7 +504,7 @@ function entryForEvent(event) {
491
504
  time: event.time,
492
505
  callId,
493
506
  toolName: "",
494
- ok: !resultPart || resultPart.isError !== true,
507
+ ok: !(blockIsError || messageIsError || dataHasError),
495
508
  summary: resultText,
496
509
  resultText,
497
510
  ...readViewFrom(event.view) !== void 0 ? { readView: readViewFrom(event.view) } : {}
@@ -550,4 +563,4 @@ function historyToEvents(history) {
550
563
  }
551
564
 
552
565
  export { entryForEvent as a, eventsToEntries as e, historyToEvents as h };
553
- //# sourceMappingURL=dsh-events.js-BUkLR6ZV.js.map
566
+ //# sourceMappingURL=dsh-events.js-BHf0lLZ5.js.map
@@ -1,5 +1,5 @@
1
- import { g as getDshConnection } from './dsh-connection.js-BgeraFA2.js';
2
- import { h as historyToEvents } from './dsh-events.js-BUkLR6ZV.js';
1
+ import { g as getDshConnection } from './dsh-connection.js-BW07Aicl.js';
2
+ import { h as historyToEvents } from './dsh-events.js-BHf0lLZ5.js';
3
3
  import { a as foldKnobs, f as filterKnobEvents, F as FULL_ACCESS_PRESET } from './permission-state.js-B7UpAHBv.js';
4
4
  import { promises } from 'node:fs';
5
5
  import * as nodePath from 'node:path';
@@ -216,4 +216,4 @@ async function gitStatus(repo) {
216
216
  }
217
217
 
218
218
  export { GitUnavailableError as G, gitStatus as a, gitFileHead as b, detectRepos as d, gitGateEnabled as g, isInsideRoot as i, parsePorcelainStatus as p, resolveEnclosingRepo as r };
219
- //# sourceMappingURL=git-probe.js-CLF37SRh.js.map
219
+ //# sourceMappingURL=git-probe.js-CQqTV7XX.js.map
@@ -1,5 +1,5 @@
1
1
  import { u as uneval } from './uneval.js-BJ9Qq2SF.js';
2
- import { s as ssr_context, r as run, a as setContext, n as noop, h as hasContext, g as getContext, b as getAllContexts, c as getAbortSignal, d as createContext, l as lifecycle_function_unavailable, e as experimental_async_required, f as get_render_context, i as hydratable_serialization_failed } from './server.js-B1bDXhHu.js';
2
+ import { s as ssr_context, r as run, a as setContext, n as noop, h as hasContext, g as getContext, b as getAllContexts, c as getAbortSignal, d as createContext, l as lifecycle_function_unavailable, e as experimental_async_required, f as get_render_context, i as hydratable_serialization_failed } from './server.js-Dijo7DtV.js';
3
3
 
4
4
  //#region \0rolldown/runtime.js
5
5
  var __defProp = Object.defineProperty;
@@ -144,4 +144,4 @@ async function tick() {}
144
144
  async function settled() {}
145
145
 
146
146
  export { __commonJSMin as _, __exportAll as a, index_server_exports as i, onDestroy as o };
147
- //# sourceMappingURL=index-server.js-DmIEbDVz.js.map
147
+ //# sourceMappingURL=index-server.js-CPkVoRxB.js.map
@@ -1,5 +1,5 @@
1
- import { r as resolveA2aConfig, i as isConfigRecord, D as DEFAULT_PROMPT_TAGS, l as resolveSidebarPlacement, m as resolveWidthBounds, n as resolveZoomBounds, o as intWithin, p as resolveConversationFlags, q as resolveStatsBarMode, a as DEFAULT_SIDEBAR_PLACEMENT, b as DEFAULT_PANEL_MAX_ZOOM, c as DEFAULT_PANEL_MIN_ZOOM, d as DEFAULT_A2A_WATCH_TIMEOUT_MS, e as DEFAULT_A2A_FAST_POLL_MS, f as DEFAULT_HOME_REFRESH_MS, g as DEFAULT_HEARTBEAT_TYPE, h as DEFAULT_STATS_BAR_MODE, j as DEFAULT_POLL_IDLE_MS, k as DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS, s as DEFAULT_TERMINAL_IDLE_MS, t as DEFAULT_TERMINAL_GRACE_MS, u as DEFAULT_TERMINAL_SPILL_BYTES, v as DEFAULT_TERMINAL_TAIL_BYTES } from './config.js-vThvQeMn.js';
2
- import { e as ensureDsiHome, m as migrateLegacyDsiConfig, p as parseYamlSettings } from './settings-document.js-Gw1puaik.js';
1
+ import { r as resolveA2aConfig, n as intWithin, i as isConfigRecord, D as DEFAULT_PROMPT_TAGS, o as resolveSidebarPlacement, p as resolveWidthBounds, q as resolvePanelPresets, s as resolveZoomBounds, t as resolveConversationFlags, u as resolveStatsBarMode, a as DEFAULT_SIDEBAR_PLACEMENT, c as DEFAULT_PANEL_MAX_ZOOM, d as DEFAULT_PANEL_MIN_ZOOM, e as DEFAULT_A2A_WATCH_TIMEOUT_MS, f as DEFAULT_A2A_FAST_POLL_MS, h as DEFAULT_HOME_REFRESH_MS, j as DEFAULT_HEARTBEAT_TYPE, k as DEFAULT_STATS_BAR_MODE, l as DEFAULT_POLL_IDLE_MS, m as DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS, v as DEFAULT_TERMINAL_IDLE_MS, w as DEFAULT_TERMINAL_GRACE_MS, x as DEFAULT_TERMINAL_SPILL_BYTES, y as DEFAULT_TERMINAL_TAIL_BYTES } from './config.js-r_jw_bQQ.js';
2
+ import { e as ensureDsiHome, m as migrateLegacyDsiConfig, p as parseYamlSettings } from './settings-document.js-DxKURfc_.js';
3
3
  import { s as settingsHomeDir } from './settings-home2.js-f75-B6RI.js';
4
4
  import { readFileSync } from 'node:fs';
5
5
  import { dirname, join } from 'node:path';
@@ -227,6 +227,13 @@ function readPanelConfig(configPath) {
227
227
  ...zooms
228
228
  };
229
229
  }
230
+ /** Read the `panel.agent` / `panel.glass` / `panel.sidebar` preset maps
231
+ * (Width Preset Chord, ADR-0006a 2026-10-29). The gate is the SHARED
232
+ * `resolvePanelPresets` in `$lib/config` — the browser assembler runs the
233
+ * exact same function on the wire body (the resolveA2aConfig pattern). */
234
+ function readPanelPresets(configPath) {
235
+ return resolvePanelPresets(parseConfig(configPath)?.panel);
236
+ }
230
237
  var DEFAULT_SIDEBAR_CONFIG = {
231
238
  defaultWidth: 400,
232
239
  minWidth: 200,
@@ -316,7 +323,10 @@ var DEFAULT_BROWSER_CONFIG = {
316
323
  maxSessions: 4,
317
324
  idleMs: 6e5,
318
325
  screencastQuality: 90,
319
- screencastMaxFps: 15
326
+ screencastMaxFps: 15,
327
+ contentZoom: .8,
328
+ defaultWidth: 860,
329
+ maxWidth: 1024
320
330
  };
321
331
  function strOr(v, fallback) {
322
332
  return typeof v === "string" && v.length > 0 ? v : fallback;
@@ -335,9 +345,12 @@ function readBrowserConfig(configPath) {
335
345
  maxSessions: intWithin(section.maxSessions, 1, 32, DEFAULT_BROWSER_CONFIG.maxSessions),
336
346
  idleMs: intWithin(section.idleMs, 1e4, 864e5, DEFAULT_BROWSER_CONFIG.idleMs),
337
347
  screencastQuality: intWithin(section.screencastQuality, 10, 100, DEFAULT_BROWSER_CONFIG.screencastQuality),
338
- screencastMaxFps: intWithin(section.screencastMaxFps, 1, 60, DEFAULT_BROWSER_CONFIG.screencastMaxFps)
348
+ screencastMaxFps: intWithin(section.screencastMaxFps, 1, 60, DEFAULT_BROWSER_CONFIG.screencastMaxFps),
349
+ contentZoom: typeof section.contentZoom === "number" && Number.isFinite(section.contentZoom) && section.contentZoom >= .25 && section.contentZoom <= 3 ? section.contentZoom : DEFAULT_BROWSER_CONFIG.contentZoom,
350
+ defaultWidth: intWithin(section.defaultWidth, 200, 4e3, DEFAULT_BROWSER_CONFIG.defaultWidth),
351
+ maxWidth: intWithin(section.maxWidth, 200, 4e3, DEFAULT_BROWSER_CONFIG.maxWidth)
339
352
  };
340
353
  }
341
354
 
342
- export { readTerminalConfig as A, DSI_CONFIG_PATH as D, readServerConfig as a, readDshPresetEnglishConfig as b, readA2aConfig as c, readBrowserConfig as d, readPromptsConfig as e, readSettingsHomes as f, readJobsConfig as g, readSidebarConfig as h, readPanelConfig as i, joinTagWords as j, readHomeConfig as k, readConversationConfig as l, readChatConfig as m, readDshSessionsRootConfig as n, isValidTagWord as o, parseTagWords as p, DEFAULT_DSH_PRESET_ENGLISH as q, readDshAuthConfig as r, DEFAULT_SERVER_CONFIG as s, DEFAULT_PROMPTS_CONFIG as t, DEFAULT_SIDEBAR_CONFIG as u, DEFAULT_PANEL_CONFIG as v, DEFAULT_A2A_CONFIG as w, DEFAULT_HOME_CONFIG as x, DEFAULT_CONVERSATION_CONFIG as y, DEFAULT_CHAT_CONFIG as z };
343
- //# sourceMappingURL=insight-config.js-Dp_2gB5J.js.map
355
+ export { DEFAULT_CHAT_CONFIG as A, readTerminalConfig as B, DSI_CONFIG_PATH as D, readServerConfig as a, readDshPresetEnglishConfig as b, readA2aConfig as c, readBrowserConfig as d, readPromptsConfig as e, readSettingsHomes as f, readJobsConfig as g, readSidebarConfig as h, readPanelPresets as i, joinTagWords as j, readPanelConfig as k, readHomeConfig as l, readConversationConfig as m, readChatConfig as n, readDshSessionsRootConfig as o, parseTagWords as p, isValidTagWord as q, readDshAuthConfig as r, DEFAULT_DSH_PRESET_ENGLISH as s, DEFAULT_SERVER_CONFIG as t, DEFAULT_PROMPTS_CONFIG as u, DEFAULT_SIDEBAR_CONFIG as v, DEFAULT_PANEL_CONFIG as w, DEFAULT_A2A_CONFIG as x, DEFAULT_HOME_CONFIG as y, DEFAULT_CONVERSATION_CONFIG as z };
356
+ //# sourceMappingURL=insight-config.js-C5-Rhh5A.js.map
@@ -1,4 +1,4 @@
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-B1bDXhHu.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-Dijo7DtV.js';
2
2
 
3
3
  /**
4
4
  * `$env/dynamic/public`
@@ -580,7 +580,7 @@ var options = {
580
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",
581
581
  error: error_template_default
582
582
  },
583
- version_hash: "15kqjss"
583
+ version_hash: "1sp3mqh"
584
584
  };
585
585
  async function get_hooks() {
586
586
  let handle;
@@ -588,7 +588,7 @@ async function get_hooks() {
588
588
  let handleError;
589
589
  let handleValidationError;
590
590
  let init;
591
- ({handle, handleFetch, handleError, handleValidationError, init} = await import('../entries/hooks.server.js-B-e4_ekh.js'));
591
+ ({handle, handleFetch, handleError, handleValidationError, init} = await import('../entries/hooks.server.js-CU2RE5vs.js'));
592
592
  let reroute;
593
593
  let transport;
594
594
  return {
@@ -603,4 +603,4 @@ async function get_hooks() {
603
603
  }
604
604
 
605
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-J3h-US64.js.map
606
+ //# sourceMappingURL=internal2.js-DbC8VGqD.js.map
@@ -0,0 +1,72 @@
1
+ //#region src/lib/services/conversation/ledger-stats.ts
2
+ /** Non-negative finite number guard (projection values are JSON).
3
+ * Exported (Subagent Anchor ADR D2) so the /api/dsh/subagents join
4
+ * validates the same JSON projection values with the same guard —
5
+ * behavior byte-identical, one validator per house. */
6
+ function nn(v) {
7
+ return typeof v === "number" && Number.isFinite(v) && v >= 0 ? v : null;
8
+ }
9
+ /** Validate one projection record field-by-field; null on any miss.
10
+ * Exported (Subagent Anchor ADR D2) alongside `nn` for the subagents
11
+ * endpoint — the SAME validator, so the popup's numbers and the panel's
12
+ * stats bar can never disagree on what counts as present. */
13
+ function statsRecord(raw, fields) {
14
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw)) return null;
15
+ const o = raw;
16
+ const out = {};
17
+ for (const field of fields) {
18
+ const v = nn(o[field]);
19
+ if (v === null) return null;
20
+ out[field] = v;
21
+ }
22
+ return out;
23
+ }
24
+ var SESSION_STATS_FIELDS = [
25
+ "turns",
26
+ "steps",
27
+ "llmMs",
28
+ "toolMs",
29
+ "ttftMs",
30
+ "ttftSteps",
31
+ "decodeMs",
32
+ "decodeTokens"
33
+ ];
34
+ var TOKEN_USAGE_FIELDS = [
35
+ "uncachedInputTokens",
36
+ "cacheReadTokens",
37
+ "cacheWriteTokens",
38
+ "outputTokens"
39
+ ];
40
+ /**
41
+ * Validate the projections block's ledger-stats pair.
42
+ *
43
+ * @param sessionStats - projections.values.sessionStats (sessionStats wire view).
44
+ * @param tokenUsage - projections.values.tokenUsage (the flat
45
+ * TokenUsageProjection wire value — the persisted fold state's totals
46
+ * wrapper never rides the projection stream).
47
+ * @returns the merged ledger stats, or null when either projection is
48
+ * absent or malformed (the caller keeps the partial fold).
49
+ */
50
+ function ledgerStatsFromProjections(sessionStats, tokenUsage) {
51
+ const stats = statsRecord(sessionStats, SESSION_STATS_FIELDS);
52
+ if (stats === null) return null;
53
+ const totals = statsRecord(tokenUsage, TOKEN_USAGE_FIELDS);
54
+ if (totals === null) return null;
55
+ return {
56
+ turns: stats.turns,
57
+ steps: stats.steps,
58
+ llmMs: stats.llmMs,
59
+ toolMs: stats.toolMs,
60
+ ttftMs: stats.ttftMs,
61
+ ttftSteps: stats.ttftSteps,
62
+ decodeMs: stats.decodeMs,
63
+ decodeTokens: stats.decodeTokens,
64
+ uncachedInputTokens: totals.uncachedInputTokens,
65
+ cacheReadTokens: totals.cacheReadTokens,
66
+ cacheWriteTokens: totals.cacheWriteTokens,
67
+ outputTokens: totals.outputTokens
68
+ };
69
+ }
70
+
71
+ export { ledgerStatsFromProjections as l };
72
+ //# sourceMappingURL=ledger-stats.js-BWACyDPg.js.map