@deepseek-insight/dsi 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +204 -0
- package/README.md +98 -0
- package/bin/dsi.mjs +147 -0
- package/build/client/_app/immutable/assets/0.DqFt8jIM.css +2 -0
- package/build/client/_app/immutable/assets/2.YlW45hiM.css +1 -0
- package/build/client/_app/immutable/assets/codicon.Brq4_Ui5.ttf +0 -0
- package/build/client/_app/immutable/assets/editor.jjEx9u7D.css +1 -0
- package/build/client/_app/immutable/assets/settings-monaco.C1CMdMvw.css +1 -0
- package/build/client/_app/immutable/chunks/-g7BcI22.js +4 -0
- package/build/client/_app/immutable/chunks/08VXUWAP.js +1 -0
- package/build/client/_app/immutable/chunks/2irkVCIh.js +10 -0
- package/build/client/_app/immutable/chunks/43DmfD33.js +1 -0
- package/build/client/_app/immutable/chunks/6GKQw8m6.js +99 -0
- package/build/client/_app/immutable/chunks/6RTg0lbw.js +1 -0
- package/build/client/_app/immutable/chunks/9TvT6fta.js +120 -0
- package/build/client/_app/immutable/chunks/B1YSaoU7.js +96 -0
- package/build/client/_app/immutable/chunks/B2J2w5EN.js +1 -0
- package/build/client/_app/immutable/chunks/B5-_aFwp.js +2 -0
- package/build/client/_app/immutable/chunks/B8-Q2PIv.js +1 -0
- package/build/client/_app/immutable/chunks/B8J7ngcE.js +1 -0
- package/build/client/_app/immutable/chunks/B9JPFI3C.js +2 -0
- package/build/client/_app/immutable/chunks/BAZKJuQw.js +1 -0
- package/build/client/_app/immutable/chunks/BBKpNcUe.js +1 -0
- package/build/client/_app/immutable/chunks/BEEn4gHE.js +1 -0
- package/build/client/_app/immutable/chunks/BEtHBSE6.js +1 -0
- package/build/client/_app/immutable/chunks/BFoDCU3G.js +1 -0
- package/build/client/_app/immutable/chunks/BHtPwB2y.js +847 -0
- package/build/client/_app/immutable/chunks/BI-MrBd-.js +1 -0
- package/build/client/_app/immutable/chunks/BI4pMaIG.js +1 -0
- package/build/client/_app/immutable/chunks/BJL7RCQE.js +4 -0
- package/build/client/_app/immutable/chunks/BKxtCVv1.js +1 -0
- package/build/client/_app/immutable/chunks/BOfSXrr7.js +1 -0
- package/build/client/_app/immutable/chunks/BOotOW0E.js +1 -0
- package/build/client/_app/immutable/chunks/BTzV9O1M.js +3 -0
- package/build/client/_app/immutable/chunks/BW-FRVGs.js +1 -0
- package/build/client/_app/immutable/chunks/BWPQTe0t.js +1 -0
- package/build/client/_app/immutable/chunks/BYgofb2h.js +1 -0
- package/build/client/_app/immutable/chunks/Ba7i2nA0.js +1 -0
- package/build/client/_app/immutable/chunks/Bb19NAkg.js +1 -0
- package/build/client/_app/immutable/chunks/Bc_sGQ0U.js +1 -0
- package/build/client/_app/immutable/chunks/BeGwcela.js +1 -0
- package/build/client/_app/immutable/chunks/BeZqd5lB.js +1 -0
- package/build/client/_app/immutable/chunks/Beo7Z46k.js +7 -0
- package/build/client/_app/immutable/chunks/BhNEBkk_.js +39 -0
- package/build/client/_app/immutable/chunks/BifhSqXX.js +1 -0
- package/build/client/_app/immutable/chunks/Bjy-W4x2.js +81 -0
- package/build/client/_app/immutable/chunks/BlltJnm0.js +1 -0
- package/build/client/_app/immutable/chunks/Bn9NRi0R.js +168 -0
- package/build/client/_app/immutable/chunks/BnF5Jm-h.js +1 -0
- package/build/client/_app/immutable/chunks/Bp4uuUjI.js +3 -0
- package/build/client/_app/immutable/chunks/BrTsmS-o.js +57 -0
- package/build/client/_app/immutable/chunks/Bri6UV-V.js +1 -0
- package/build/client/_app/immutable/chunks/Btk-1DaX.js +1 -0
- package/build/client/_app/immutable/chunks/BwWrilGY.js +1 -0
- package/build/client/_app/immutable/chunks/Bxkupp3x.js +1 -0
- package/build/client/_app/immutable/chunks/Bz4Y3fRF.js +1 -0
- package/build/client/_app/immutable/chunks/C-OQMol4.js +1 -0
- package/build/client/_app/immutable/chunks/C-y9NEjX.js +1 -0
- package/build/client/_app/immutable/chunks/C1JXY9b5.js +30 -0
- package/build/client/_app/immutable/chunks/C2x7inlt.js +321 -0
- package/build/client/_app/immutable/chunks/C531GsRP.js +2 -0
- package/build/client/_app/immutable/chunks/C5TAQhFO.js +1 -0
- package/build/client/_app/immutable/chunks/C5_-GSwl.js +1 -0
- package/build/client/_app/immutable/chunks/C6lv30UQ.js +1 -0
- package/build/client/_app/immutable/chunks/C7h46wYY.js +1 -0
- package/build/client/_app/immutable/chunks/C8Ef5oNN.js +1 -0
- package/build/client/_app/immutable/chunks/CA_WNCsl.js +41 -0
- package/build/client/_app/immutable/chunks/CC2rA5mh.js +1 -0
- package/build/client/_app/immutable/chunks/CHdTS7qa.js +15 -0
- package/build/client/_app/immutable/chunks/CIPQ_RoX.js +1 -0
- package/build/client/_app/immutable/chunks/CJ_zvTBg.js +72 -0
- package/build/client/_app/immutable/chunks/CPEyWost.js +1 -0
- package/build/client/_app/immutable/chunks/CPgSxomx.js +1 -0
- package/build/client/_app/immutable/chunks/CRfGWb83.js +1 -0
- package/build/client/_app/immutable/chunks/CTgm3pse.js +1 -0
- package/build/client/_app/immutable/chunks/CVaqCwHa.js +1 -0
- package/build/client/_app/immutable/chunks/CWKM3f5q.js +1 -0
- package/build/client/_app/immutable/chunks/CWVpRRWx.js +162 -0
- package/build/client/_app/immutable/chunks/CXMH3UgJ.js +257 -0
- package/build/client/_app/immutable/chunks/CZ-RNlot.js +1 -0
- package/build/client/_app/immutable/chunks/CZXl7qUb.js +70 -0
- package/build/client/_app/immutable/chunks/C_N-eONP.js +1 -0
- package/build/client/_app/immutable/chunks/Cb1pwoev.js +1 -0
- package/build/client/_app/immutable/chunks/CcL1k2On.js +11 -0
- package/build/client/_app/immutable/chunks/CcWV7GYH.js +1 -0
- package/build/client/_app/immutable/chunks/CcwsVR0C.js +1 -0
- package/build/client/_app/immutable/chunks/Cd6K7Y8m.js +1 -0
- package/build/client/_app/immutable/chunks/CfSJPG6W.js +1 -0
- package/build/client/_app/immutable/chunks/CfZ7uSQe.js +38 -0
- package/build/client/_app/immutable/chunks/Cimd5fb3.js +1 -0
- package/build/client/_app/immutable/chunks/Cj-Zm41R.js +36 -0
- package/build/client/_app/immutable/chunks/CjZ_QSbm.js +1 -0
- package/build/client/_app/immutable/chunks/CkrcOjFY.js +1 -0
- package/build/client/_app/immutable/chunks/ClamHrr6.js +1 -0
- package/build/client/_app/immutable/chunks/Cm7r79vr.js +1 -0
- package/build/client/_app/immutable/chunks/CmbEK4CY.js +84 -0
- package/build/client/_app/immutable/chunks/CmvnEPtD.js +7 -0
- package/build/client/_app/immutable/chunks/CopQ2nXW.js +1 -0
- package/build/client/_app/immutable/chunks/CpzslTdj.js +1 -0
- package/build/client/_app/immutable/chunks/CsHVnZCH.js +1 -0
- package/build/client/_app/immutable/chunks/CsQS60Ue.js +1 -0
- package/build/client/_app/immutable/chunks/CuRJVwEq.js +1 -0
- package/build/client/_app/immutable/chunks/D-oSqn_W.js +1 -0
- package/build/client/_app/immutable/chunks/D-ptJ9y-.js +1 -0
- package/build/client/_app/immutable/chunks/D05T4iGw.js +1 -0
- package/build/client/_app/immutable/chunks/D0I62FkS.js +1 -0
- package/build/client/_app/immutable/chunks/D16vkywU.js +1 -0
- package/build/client/_app/immutable/chunks/D1qzYj9m.js +1 -0
- package/build/client/_app/immutable/chunks/D3hlyOfw.js +1 -0
- package/build/client/_app/immutable/chunks/D4gq_dik.js +1 -0
- package/build/client/_app/immutable/chunks/D7fX-3xy.js +1 -0
- package/build/client/_app/immutable/chunks/D8-5qLJg.js +231 -0
- package/build/client/_app/immutable/chunks/D8hlhfM3.js +1 -0
- package/build/client/_app/immutable/chunks/DAS1CLuE.js +24 -0
- package/build/client/_app/immutable/chunks/DGarjVZC.js +1 -0
- package/build/client/_app/immutable/chunks/DGd2pJF5.js +1 -0
- package/build/client/_app/immutable/chunks/DHpiXF5c.js +1 -0
- package/build/client/_app/immutable/chunks/DHwB1DNv.js +161 -0
- package/build/client/_app/immutable/chunks/DIMkf-bt.js +3 -0
- package/build/client/_app/immutable/chunks/DISqw1ZD.js +1 -0
- package/build/client/_app/immutable/chunks/DITEY8D_.js +62 -0
- package/build/client/_app/immutable/chunks/DL0yNkAA.js +1 -0
- package/build/client/_app/immutable/chunks/DL1Hc2zs.js +1 -0
- package/build/client/_app/immutable/chunks/DLOOos_8.js +292 -0
- package/build/client/_app/immutable/chunks/DMUM7wLl.js +1 -0
- package/build/client/_app/immutable/chunks/DPKol_4Z.js +139 -0
- package/build/client/_app/immutable/chunks/DS17s2tU.js +1 -0
- package/build/client/_app/immutable/chunks/DT7zqm-g.js +1 -0
- package/build/client/_app/immutable/chunks/DTj74zXo.js +1 -0
- package/build/client/_app/immutable/chunks/DV3o63ZY.js +1 -0
- package/build/client/_app/immutable/chunks/DVXVVWkX.js +129 -0
- package/build/client/_app/immutable/chunks/DWDfcLfy.js +206 -0
- package/build/client/_app/immutable/chunks/DXeGLmed.js +8 -0
- package/build/client/_app/immutable/chunks/DYqsupvX.js +1 -0
- package/build/client/_app/immutable/chunks/DZ6u0Z-K.js +1 -0
- package/build/client/_app/immutable/chunks/DZFCIeNp.js +1 -0
- package/build/client/_app/immutable/chunks/D_Lu-MrJ.js +1 -0
- package/build/client/_app/immutable/chunks/DauUninz.js +1 -0
- package/build/client/_app/immutable/chunks/DbInun42.js +1 -0
- package/build/client/_app/immutable/chunks/DbcKN35_.js +3 -0
- package/build/client/_app/immutable/chunks/DcZe4Woe.js +1 -0
- package/build/client/_app/immutable/chunks/DdL9SqIa.js +1 -0
- package/build/client/_app/immutable/chunks/De2hgUGE.js +1 -0
- package/build/client/_app/immutable/chunks/DezsRK8O.js +1 -0
- package/build/client/_app/immutable/chunks/Dg_UWGX7.js +24 -0
- package/build/client/_app/immutable/chunks/Dj2t5yNg.js +1 -0
- package/build/client/_app/immutable/chunks/DkqhCAOL.js +1 -0
- package/build/client/_app/immutable/chunks/DlQrSOw4.js +7 -0
- package/build/client/_app/immutable/chunks/DmHpPYUd.js +1 -0
- package/build/client/_app/immutable/chunks/Dmn-tsie.js +1 -0
- package/build/client/_app/immutable/chunks/DpFanUEy.js +298 -0
- package/build/client/_app/immutable/chunks/DqwfDHZH.js +89 -0
- package/build/client/_app/immutable/chunks/Dr0pcX_F.js +1 -0
- package/build/client/_app/immutable/chunks/DrH0SRf2.js +1 -0
- package/build/client/_app/immutable/chunks/DsF7k-Jl.js +1 -0
- package/build/client/_app/immutable/chunks/DtBGId5S.js +2 -0
- package/build/client/_app/immutable/chunks/DuM1hSCa.js +1 -0
- package/build/client/_app/immutable/chunks/Du_ODUAO.js +1 -0
- package/build/client/_app/immutable/chunks/DvCMcJ3P.js +1 -0
- package/build/client/_app/immutable/chunks/Dy-Kn_BL.js +1 -0
- package/build/client/_app/immutable/chunks/DzVMo6mB.js +62 -0
- package/build/client/_app/immutable/chunks/ESmLJICu.js +1 -0
- package/build/client/_app/immutable/chunks/FvmIjYaQ.js +1 -0
- package/build/client/_app/immutable/chunks/GBaNblmo.js +1 -0
- package/build/client/_app/immutable/chunks/HclGiUj8.js +1 -0
- package/build/client/_app/immutable/chunks/Ju5jF6hy.js +1 -0
- package/build/client/_app/immutable/chunks/KythIMN8.js +1 -0
- package/build/client/_app/immutable/chunks/LWre5GKl.js +40 -0
- package/build/client/_app/immutable/chunks/NEE52Syq.js +1 -0
- package/build/client/_app/immutable/chunks/No6lfiAw.js +1 -0
- package/build/client/_app/immutable/chunks/OmE6SGvs.js +106 -0
- package/build/client/_app/immutable/chunks/P_ok0Z_j.js +2 -0
- package/build/client/_app/immutable/chunks/PaZBB01u.js +1 -0
- package/build/client/_app/immutable/chunks/Rh9cy7xg.js +2 -0
- package/build/client/_app/immutable/chunks/SOo6toE5.js +1 -0
- package/build/client/_app/immutable/chunks/TNLUqJaC.js +1 -0
- package/build/client/_app/immutable/chunks/UNxFjlik.js +1 -0
- package/build/client/_app/immutable/chunks/UmdltqoE.js +1 -0
- package/build/client/_app/immutable/chunks/Z5eAx3Zn.js +1 -0
- package/build/client/_app/immutable/chunks/bTuwJoIa.js +1 -0
- package/build/client/_app/immutable/chunks/fmXr3nnJ.js +1 -0
- package/build/client/_app/immutable/chunks/fybaL0A-.js +1 -0
- package/build/client/_app/immutable/chunks/gp-XZpBa.js +3 -0
- package/build/client/_app/immutable/chunks/h-p5ZdY8.js +1 -0
- package/build/client/_app/immutable/chunks/hxYEUgOo.js +1 -0
- package/build/client/_app/immutable/chunks/i0VQdJtv.js +1 -0
- package/build/client/_app/immutable/chunks/i0X4ZdIN.js +1 -0
- package/build/client/_app/immutable/chunks/mVHw7KEX.js +7 -0
- package/build/client/_app/immutable/chunks/nDMCpPkF.js +1 -0
- package/build/client/_app/immutable/chunks/nr791fC2.js +1 -0
- package/build/client/_app/immutable/chunks/onAF5SnQ.js +1 -0
- package/build/client/_app/immutable/chunks/oz_6vUea.js +1 -0
- package/build/client/_app/immutable/chunks/qEGLx2Wc.js +78 -0
- package/build/client/_app/immutable/chunks/raVGrKQy.js +44 -0
- package/build/client/_app/immutable/chunks/sBoK_t0W.js +1 -0
- package/build/client/_app/immutable/chunks/sIEmSkn6.js +34 -0
- package/build/client/_app/immutable/chunks/wFIeY1Cf.js +88 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/build/client/_app/immutable/chunks/zpcgJjUg.js +127 -0
- package/build/client/_app/immutable/entry/app.B2QxMn0t.js +2 -0
- package/build/client/_app/immutable/entry/start.BR3A4iFi.js +1 -0
- package/build/client/_app/immutable/nodes/0.B_ZEZy7b.js +1 -0
- package/build/client/_app/immutable/nodes/1.By3Gd2cs.js +1 -0
- package/build/client/_app/immutable/nodes/2.1TAwiWw1.js +69 -0
- package/build/client/_app/immutable/workers/css.worker-DRH2OcAG.js +93 -0
- package/build/client/_app/immutable/workers/html.worker-DQLddT9h.js +506 -0
- package/build/client/_app/immutable/workers/json.worker-D_Dqrls5.js +62 -0
- package/build/client/_app/immutable/workers/settings-editor-worker-D9zwrD0f.js +30 -0
- package/build/client/_app/immutable/workers/ts.worker-DkYoA6bF.js +67738 -0
- package/build/client/_app/immutable/workers/yaml.worker-BTGFEDOA.js +449 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/favicon.svg +7 -0
- package/build/env.js +70 -0
- package/build/handler.js +23 -0
- package/build/index.js +146 -0
- package/build/server/chunks/chunks/a2a-protocol.js-C77mVg2Q.js +52 -0
- package/build/server/chunks/chunks/app-config.svelte.js-Co9jacqT.js +52 -0
- package/build/server/chunks/chunks/config.js-BBYogCe7.js +123 -0
- package/build/server/chunks/chunks/db.js-DcmO3JAx.js +120 -0
- package/build/server/chunks/chunks/db2.js-DBltVUGg.js +717 -0
- package/build/server/chunks/chunks/dsh-connection.js-DwihVtk_.js +1957 -0
- package/build/server/chunks/chunks/dsh-events.js-BtDxaV6Q.js +706 -0
- package/build/server/chunks/chunks/env.js-l0sNRNKZ.js +2 -0
- package/build/server/chunks/chunks/exports.js-DMiPee3x.js +263 -0
- package/build/server/chunks/chunks/goal-projection.js-0_34t60K.js +44 -0
- package/build/server/chunks/chunks/image-limits.js-BMPZ55kJ.js +186 -0
- package/build/server/chunks/chunks/insight-config.js-CfMPTA6Z.js +352 -0
- package/build/server/chunks/chunks/internal.js-CQzEjdyk.js +747 -0
- package/build/server/chunks/chunks/internal2.js-D-DAuSVh.js +22 -0
- package/build/server/chunks/chunks/server.js-DoCd0fEo.js +4104 -0
- package/build/server/chunks/chunks/shared.js-C4-Py8s_.js +775 -0
- package/build/server/chunks/chunks/state.js-CpmOS0a2.js +114 -0
- package/build/server/chunks/chunks/uneval.js-BJ9Qq2SF.js +488 -0
- package/build/server/chunks/chunks/utils.js-tOWCe9Wk.js +933 -0
- package/build/server/chunks/chunks/watcher.js-BelxjMOP.js +473 -0
- package/build/server/chunks/entries/endpoints/api/a2a/_id_/_server.ts.js-B4HUNFZv.js +37 -0
- package/build/server/chunks/entries/endpoints/api/a2a/_server.ts.js-JDV_oqbX.js +61 -0
- package/build/server/chunks/entries/endpoints/api/a2a/register/_server.ts.js-Dxwc-7-5.js +99 -0
- package/build/server/chunks/entries/endpoints/api/config/_server.ts.js-D8i35bGH.js +35 -0
- package/build/server/chunks/entries/endpoints/api/dsh/directory/_server.ts.js-CeBU1G85.js +43 -0
- package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/_server.ts.js-CyrVUxv3.js +36 -0
- package/build/server/chunks/entries/endpoints/api/dsh/presets/_server.ts.js-qeO_1htT.js +33 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/_server.ts.js-DnHffohz.js +44 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/_server.ts.js-fm6MFyjP.js +33 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/_server.ts.js-wJ9V_Ue7.js +42 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/_server.ts.js-o83L4GUY.js +85 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/_server.ts.js-DLCHSC1M.js +212 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/_server.ts.js-Ca6NU9HO.js +58 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/_server.ts.js-RteR85vn.js +138 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/_server.ts.js-CEKDkK7v.js +55 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/_server.ts.js-D7ziyW3d.js +35 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/_server.ts.js-DbkD4JZb.js +92 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/_server.ts.js-eOLNlf1-.js +94 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/_server.ts.js-txQRocK9.js +57 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/_server.ts.js-D3WGYzkE.js +69 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/_server.ts.js-g2GtvLTs.js +69 -0
- package/build/server/chunks/entries/endpoints/api/dsh/sessions/_server.ts.js-17yKojU_.js +85 -0
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/_server.ts.js-D16pEhvd.js +99 -0
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/save/_server.ts.js-BXpZNLK8.js +110 -0
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file-bytes/_server.ts.js-hBlyjq-x.js +113 -0
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/_server.ts.js-KWRnsAkm.js +59 -0
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_server.ts.js-DzNvvCxK.js +55 -0
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/_server.ts.js-MK5925CY.js +45 -0
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/_server.ts.js-w3Mo0nf7.js +63 -0
- package/build/server/chunks/entries/endpoints/api/prompts/_id_/_server.ts.js-CInfjM-i.js +64 -0
- package/build/server/chunks/entries/endpoints/api/prompts/_server.ts.js-C1lqP1OV.js +87 -0
- package/build/server/chunks/entries/endpoints/api/prompts/use/_server.ts.js-B36YMKMt.js +54 -0
- package/build/server/chunks/entries/endpoints/api/settings/_server.ts.js-CHvHNzeB.js +101 -0
- package/build/server/chunks/entries/pages/_error.svelte.js-BE3-BWDd.js +41 -0
- package/build/server/chunks/entries/pages/_layout.svelte.js-EFiihTdF.js +18 -0
- package/build/server/chunks/entries/pages/_layout.ts.js-CNSo-Z1U.js +22 -0
- package/build/server/chunks/entries/pages/_page.server.ts.js-Bk8UuUXA.js +85 -0
- package/build/server/chunks/entries/pages/_page.svelte.js-CfmKQYLK.js +13883 -0
- package/build/server/chunks/handler-BshnD4Y4.js +1735 -0
- package/build/server/chunks/index.js-I_pMeIwQ.js +3864 -0
- package/build/server/chunks/manifest.js-DwhpAk_y.js +273 -0
- package/build/server/chunks/nodes/0.js-DCyDo8-C.js +12 -0
- package/build/server/chunks/nodes/1.js-Dx7z_VWN.js +9 -0
- package/build/server/chunks/nodes/2.js-CLw9pxho.js +24 -0
- package/build/shims.js +33 -0
- package/package.json +65 -0
- package/template/.dsi/a2a.sqlite +0 -0
- package/template/.dsi/config.json +42 -0
- package/template/.dsi/prompts.sqlite +0 -0
- package/template/.dsi/settings.yaml +33 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"1789100088232"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
|
2
|
+
<rect width="32" height="32" rx="7" fill="#41476D" />
|
|
3
|
+
<path d="M16 7c-4.97 0-9 3.8-9 8.49 0 2.63 1.26 4.98 3.23 6.54l.03 3.22c.01.38.44.6.76.4l3.17-1.99c.59.08 1.2.13 1.81.13 4.97 0 9-3.8 9-8.49S20.97 7 16 7z" fill="#fff" />
|
|
4
|
+
<circle cx="12.2" cy="15.6" r="1.5" fill="#41476D" />
|
|
5
|
+
<circle cx="16" cy="15.6" r="1.5" fill="#41476D" />
|
|
6
|
+
<circle cx="19.8" cy="15.6" r="1.5" fill="#41476D" />
|
|
7
|
+
</svg>
|
package/build/env.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
|
|
5
|
+
// since env.js is an entrypoint, `dir` will point to the output directory
|
|
6
|
+
const dir = path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
|
|
8
|
+
const expected_unprefixed = new Set(['LISTEN_PID', 'LISTEN_FDS']);
|
|
9
|
+
|
|
10
|
+
const env_prefix = "";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param {string} name
|
|
14
|
+
* @param {any} [fallback]
|
|
15
|
+
*/
|
|
16
|
+
function env(name, fallback) {
|
|
17
|
+
const prefix = expected_unprefixed.has(name) ? '' : env_prefix;
|
|
18
|
+
const prefixed = prefix + name;
|
|
19
|
+
return prefixed in process.env ? process.env[prefixed] : fallback;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const integer_regexp = /^\d+$/;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Throw a consistently-structured parsing error for environment variables.
|
|
26
|
+
* @param {string} name
|
|
27
|
+
* @param {any} value
|
|
28
|
+
* @param {string} description
|
|
29
|
+
* @returns {never}
|
|
30
|
+
*/
|
|
31
|
+
function parsing_error(name, value, description) {
|
|
32
|
+
throw new Error(
|
|
33
|
+
`Invalid value for environment variable ${name}: ${JSON.stringify(value)} (${description})`
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Check the environment for a timeout value (non-negative integer) in seconds.
|
|
39
|
+
* @param {string} name
|
|
40
|
+
* @param {number} [fallback]
|
|
41
|
+
* @returns {number | undefined}
|
|
42
|
+
*/
|
|
43
|
+
function timeout_env(name, fallback) {
|
|
44
|
+
const raw = env(name, fallback);
|
|
45
|
+
if (!raw) {
|
|
46
|
+
return fallback;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (!integer_regexp.test(raw)) {
|
|
50
|
+
parsing_error(name, raw, 'should be a non-negative integer');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const parsed = Number.parseInt(raw, 10);
|
|
54
|
+
|
|
55
|
+
// We don't technically need to check `Number.isNaN` because the value already passed the regexp test.
|
|
56
|
+
// However, just in case there's some new codepath introduced somewhere down the line, it's probably good
|
|
57
|
+
// to stick this in here.
|
|
58
|
+
if (Number.isNaN(parsed)) {
|
|
59
|
+
parsing_error(name, raw, 'should be a non-negative integer');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (parsed < 0) {
|
|
63
|
+
parsing_error(name, raw, 'should be a non-negative integer');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return parsed;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { dir, env, env_prefix, timeout_env };
|
|
70
|
+
//# sourceMappingURL=env.js.map
|
package/build/handler.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import './shims.js';
|
|
2
|
+
import 'node:fs';
|
|
3
|
+
import 'node:path';
|
|
4
|
+
import 'node:process';
|
|
5
|
+
export { h as handler } from './server/chunks/handler-BshnD4Y4.js';
|
|
6
|
+
import './server/chunks/index.js-I_pMeIwQ.js';
|
|
7
|
+
import './server/chunks/manifest.js-DwhpAk_y.js';
|
|
8
|
+
import './env.js';
|
|
9
|
+
import 'node:buffer';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'node:http';
|
|
12
|
+
import 'node:timers';
|
|
13
|
+
import 'node:querystring';
|
|
14
|
+
import 'node:stream';
|
|
15
|
+
import './server/chunks/chunks/shared.js-C4-Py8s_.js';
|
|
16
|
+
import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
|
|
17
|
+
import './server/chunks/chunks/utils.js-tOWCe9Wk.js';
|
|
18
|
+
import 'node:url';
|
|
19
|
+
import './server/chunks/chunks/internal.js-CQzEjdyk.js';
|
|
20
|
+
import './server/chunks/chunks/server.js-DoCd0fEo.js';
|
|
21
|
+
import './server/chunks/chunks/internal2.js-D-DAuSVh.js';
|
|
22
|
+
import './server/chunks/chunks/exports.js-DMiPee3x.js';
|
|
23
|
+
//# sourceMappingURL=handler.js.map
|
package/build/index.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import http from 'node:http';
|
|
2
|
+
import fs__default from 'node:fs';
|
|
3
|
+
import process from 'node:process';
|
|
4
|
+
import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-BshnD4Y4.js';
|
|
5
|
+
import { env, timeout_env } from './env.js';
|
|
6
|
+
import { rm } from 'node:fs/promises';
|
|
7
|
+
import './shims.js';
|
|
8
|
+
import 'node:buffer';
|
|
9
|
+
import 'node:crypto';
|
|
10
|
+
import 'node:path';
|
|
11
|
+
import 'node:timers';
|
|
12
|
+
import 'node:querystring';
|
|
13
|
+
import 'node:stream';
|
|
14
|
+
import './server/chunks/chunks/shared.js-C4-Py8s_.js';
|
|
15
|
+
import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
|
|
16
|
+
import './server/chunks/chunks/utils.js-tOWCe9Wk.js';
|
|
17
|
+
import './server/chunks/index.js-I_pMeIwQ.js';
|
|
18
|
+
import './server/chunks/chunks/internal.js-CQzEjdyk.js';
|
|
19
|
+
import './server/chunks/chunks/server.js-DoCd0fEo.js';
|
|
20
|
+
import './server/chunks/chunks/internal2.js-D-DAuSVh.js';
|
|
21
|
+
import './server/chunks/chunks/exports.js-DMiPee3x.js';
|
|
22
|
+
import './server/chunks/manifest.js-DwhpAk_y.js';
|
|
23
|
+
import 'node:url';
|
|
24
|
+
|
|
25
|
+
const path = env('SOCKET_PATH', false);
|
|
26
|
+
const host = env('HOST', '0.0.0.0');
|
|
27
|
+
const port = env('PORT', !path && '3000');
|
|
28
|
+
|
|
29
|
+
const shutdown_timeout = parseInt(env('SHUTDOWN_TIMEOUT', '30'));
|
|
30
|
+
const idle_timeout = parseInt(env('IDLE_TIMEOUT', '0'));
|
|
31
|
+
const listen_pid = parseInt(env('LISTEN_PID', '0'));
|
|
32
|
+
const listen_fds = parseInt(env('LISTEN_FDS', '0'));
|
|
33
|
+
// https://www.freedesktop.org/software/systemd/man/latest/sd_listen_fds.html
|
|
34
|
+
const SD_LISTEN_FDS_START = 3;
|
|
35
|
+
|
|
36
|
+
if (listen_pid !== 0 && listen_pid !== process.pid) {
|
|
37
|
+
throw new Error(`received LISTEN_PID ${listen_pid} but current process id is ${process.pid}`);
|
|
38
|
+
}
|
|
39
|
+
if (listen_fds > 1) {
|
|
40
|
+
throw new Error(
|
|
41
|
+
`only one socket is allowed for socket activation, but LISTEN_FDS was set to ${listen_fds}`
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const socket_activation = listen_pid === process.pid && listen_fds === 1;
|
|
46
|
+
|
|
47
|
+
let requests = 0;
|
|
48
|
+
/** @type {NodeJS.Timeout | void} */
|
|
49
|
+
let shutdown_timeout_id;
|
|
50
|
+
/** @type {NodeJS.Timeout | void} */
|
|
51
|
+
let idle_timeout_id;
|
|
52
|
+
|
|
53
|
+
// Initialize the HTTP server here so that we can set properties before starting to listen.
|
|
54
|
+
// Otherwise, polka delays creating the server until listen() is called. Settings these
|
|
55
|
+
// properties after the server has started listening could lead to race conditions.
|
|
56
|
+
const httpServer = http.createServer();
|
|
57
|
+
|
|
58
|
+
const keep_alive_timeout = timeout_env('KEEP_ALIVE_TIMEOUT');
|
|
59
|
+
if (keep_alive_timeout !== undefined) {
|
|
60
|
+
// Convert the keep-alive timeout from seconds to milliseconds (the unit Node.js expects).
|
|
61
|
+
httpServer.keepAliveTimeout = keep_alive_timeout * 1000;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const headers_timeout = timeout_env('HEADERS_TIMEOUT');
|
|
65
|
+
if (headers_timeout !== undefined) {
|
|
66
|
+
// Convert the headers timeout from seconds to milliseconds (the unit Node.js expects).
|
|
67
|
+
httpServer.headersTimeout = headers_timeout * 1000;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const server = polka({ server: httpServer }).use(handler);
|
|
71
|
+
|
|
72
|
+
if (socket_activation) {
|
|
73
|
+
server.listen({ fd: SD_LISTEN_FDS_START }, () => {
|
|
74
|
+
console.log(`Listening on file descriptor ${SD_LISTEN_FDS_START}`);
|
|
75
|
+
});
|
|
76
|
+
} else {
|
|
77
|
+
if (path) {
|
|
78
|
+
try {
|
|
79
|
+
if (fs__default.statSync(path).size === 0) {
|
|
80
|
+
await rm(path);
|
|
81
|
+
}
|
|
82
|
+
} catch {
|
|
83
|
+
// ignore
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
server.listen({ path, host, port }, () => {
|
|
88
|
+
console.log(`Listening on ${format_listening_address(path, host, port, httpServer.address())}`);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** @param {'SIGINT' | 'SIGTERM' | 'IDLE'} reason */
|
|
93
|
+
function graceful_shutdown(reason) {
|
|
94
|
+
if (shutdown_timeout_id) return;
|
|
95
|
+
|
|
96
|
+
// If a connection was opened with a keep-alive header close() will wait for the connection to
|
|
97
|
+
// time out rather than close it even if it is not handling any requests, so call this first
|
|
98
|
+
httpServer.closeIdleConnections();
|
|
99
|
+
|
|
100
|
+
httpServer.close((error) => {
|
|
101
|
+
// occurs if the server is already closed
|
|
102
|
+
if (error) return;
|
|
103
|
+
|
|
104
|
+
if (shutdown_timeout_id) {
|
|
105
|
+
clearTimeout(shutdown_timeout_id);
|
|
106
|
+
}
|
|
107
|
+
if (idle_timeout_id) {
|
|
108
|
+
clearTimeout(idle_timeout_id);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// @ts-expect-error custom events cannot be typed
|
|
112
|
+
process.emit('sveltekit:shutdown', reason);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
shutdown_timeout_id = setTimeout(() => httpServer.closeAllConnections(), shutdown_timeout * 1000);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
httpServer.on(
|
|
119
|
+
'request',
|
|
120
|
+
/** @param {import('node:http').IncomingMessage} req */
|
|
121
|
+
(req) => {
|
|
122
|
+
requests++;
|
|
123
|
+
|
|
124
|
+
if (socket_activation && idle_timeout_id) {
|
|
125
|
+
idle_timeout_id = clearTimeout(idle_timeout_id);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
req.on('close', () => {
|
|
129
|
+
requests--;
|
|
130
|
+
|
|
131
|
+
if (shutdown_timeout_id) {
|
|
132
|
+
// close connections as soon as they become idle, so they don't accept new requests
|
|
133
|
+
httpServer.closeIdleConnections();
|
|
134
|
+
}
|
|
135
|
+
if (requests === 0 && socket_activation && idle_timeout) {
|
|
136
|
+
idle_timeout_id = setTimeout(() => graceful_shutdown('IDLE'), idle_timeout * 1000);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
process.on('SIGTERM', graceful_shutdown);
|
|
143
|
+
process.on('SIGINT', graceful_shutdown);
|
|
144
|
+
|
|
145
|
+
export { host, path, port, server };
|
|
146
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//#region src/lib/services/chat/a2a-protocol.ts
|
|
2
|
+
/** Minted id shape: `a2a-` + 16 lowercase hex chars (crypto random). */
|
|
3
|
+
var MINT_HEX_CHARS = 16;
|
|
4
|
+
/** The leading signature token: `***;` + the message after it. */
|
|
5
|
+
var SIGNATURE_RE = new RegExp(`^_a2a_:(a2a-[0-9a-f]{1,64});\\s*([\\s\\S]*)$`, "i");
|
|
6
|
+
/** Mint a fresh correlation id: `a2a-` + 16 hex from crypto random. */
|
|
7
|
+
function mintA2aId() {
|
|
8
|
+
const bytes = new Uint8Array(MINT_HEX_CHARS / 2);
|
|
9
|
+
crypto.getRandomValues(bytes);
|
|
10
|
+
return `a2a-${Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("")}`;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parse a leading `_a2a_:<id>;` token off a composer message.
|
|
14
|
+
* Returns null when the token is absent, malformed (missing `;`, empty id,
|
|
15
|
+
* non-hex id), or not leading — a signature mid-prose is never plumbing
|
|
16
|
+
* (ADR §4 Trial A: prose echoes are the model's output, not the sender's).
|
|
17
|
+
* Case-tolerant on marker and id; the id is normalized to lowercase.
|
|
18
|
+
*/
|
|
19
|
+
function parseA2aSignature(text) {
|
|
20
|
+
const m = SIGNATURE_RE.exec(text.trim());
|
|
21
|
+
if (m === null) return null;
|
|
22
|
+
return {
|
|
23
|
+
id: m[1].toLowerCase(),
|
|
24
|
+
message: m[2].trim()
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** The Trial-B instruction sentence (ADR §3 — mandatory injection). */
|
|
28
|
+
function protocolSentence(id) {
|
|
29
|
+
return `Protocol: end your reply with exactly this signature as the final characters: _a2a_:${id};`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Append the Trial-B protocol line to a message (ADR §3: the delivered
|
|
33
|
+
* message carries exactly one instruction line). A terminal period joins
|
|
34
|
+
* unless the message already ends in punctuation; an empty message
|
|
35
|
+
* delivers the protocol line alone.
|
|
36
|
+
*/
|
|
37
|
+
function injectProtocolLine(message, id) {
|
|
38
|
+
const m = message.trim();
|
|
39
|
+
if (m === "") return protocolSentence(id);
|
|
40
|
+
return `${m}${/[.!?]$/.test(m) ? " " : ". "}${protocolSentence(id)}`;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build the text actually delivered to the target session (Task 3.3's POST
|
|
44
|
+
* body): strip any leading signature token, then inject the protocol line
|
|
45
|
+
* for the id the ledger will track (minted or user-supplied).
|
|
46
|
+
*/
|
|
47
|
+
function buildDeliveredText(message, id) {
|
|
48
|
+
return injectProtocolLine(parseA2aSignature(message)?.message ?? message.trim(), id);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export { buildDeliveredText as b, mintA2aId as m, parseA2aSignature as p };
|
|
52
|
+
//# sourceMappingURL=a2a-protocol.js-C77mVg2Q.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { D as DEFAULT_SIDEBAR_PLACEMENT, a as DEFAULT_PANEL_MAX_ZOOM, b as DEFAULT_PANEL_MIN_ZOOM, c as DEFAULT_A2A_WATCH_TIMEOUT_MS, d as DEFAULT_A2A_FAST_POLL_MS, e as DEFAULT_HOME_REFRESH_MS, f as DEFAULT_STATS_BAR_MODE, g as DEFAULT_POLL_IDLE_MS, h as DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS } from './config.js-BBYogCe7.js';
|
|
2
|
+
|
|
3
|
+
//#region src/lib/services/config/app-config.svelte.ts
|
|
4
|
+
function freshDefault() {
|
|
5
|
+
return {
|
|
6
|
+
chat: {
|
|
7
|
+
input: { maxRows: 15 },
|
|
8
|
+
accessConfirmTimeoutMs: DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS,
|
|
9
|
+
macro: {
|
|
10
|
+
maxLines: 25,
|
|
11
|
+
maxDepth: 3
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
conversation: {
|
|
15
|
+
pollRunningMs: 500,
|
|
16
|
+
pollIdleMs: DEFAULT_POLL_IDLE_MS,
|
|
17
|
+
statsBar: DEFAULT_STATS_BAR_MODE,
|
|
18
|
+
collapsable: false,
|
|
19
|
+
progressiveFold: false
|
|
20
|
+
},
|
|
21
|
+
home: { refreshMs: DEFAULT_HOME_REFRESH_MS },
|
|
22
|
+
a2a: {
|
|
23
|
+
fastPollMs: DEFAULT_A2A_FAST_POLL_MS,
|
|
24
|
+
watchTimeoutMs: DEFAULT_A2A_WATCH_TIMEOUT_MS,
|
|
25
|
+
retentionDays: 90
|
|
26
|
+
},
|
|
27
|
+
panel: {
|
|
28
|
+
defaultWidth: 730,
|
|
29
|
+
minWidth: 480,
|
|
30
|
+
maxWidth: 860,
|
|
31
|
+
minZoom: DEFAULT_PANEL_MIN_ZOOM,
|
|
32
|
+
maxZoom: DEFAULT_PANEL_MAX_ZOOM
|
|
33
|
+
},
|
|
34
|
+
sidebar: {
|
|
35
|
+
defaultWidth: 280,
|
|
36
|
+
minWidth: 200,
|
|
37
|
+
maxWidth: 500,
|
|
38
|
+
placement: DEFAULT_SIDEBAR_PLACEMENT
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
var config = freshDefault();
|
|
43
|
+
/**
|
|
44
|
+
* Reactive config view. Read it inside an $effect/$derived — it updates
|
|
45
|
+
* when the load lands (e.g. the prompt clamp re-measures on arrival).
|
|
46
|
+
*/
|
|
47
|
+
function appConfig() {
|
|
48
|
+
return config;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export { appConfig as a };
|
|
52
|
+
//# sourceMappingURL=app-config.svelte.js-Co9jacqT.js.map
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/** DSH Host base URL; override with DSH_BASE_URL (tests, alternate hosts). */
|
|
2
|
+
function dshBaseUrl() {
|
|
3
|
+
return process.env.DSH_BASE_URL || "http://127.0.0.1:3080";
|
|
4
|
+
}
|
|
5
|
+
/** `chat.accessConfirmTimeoutMs` default — how long the access chip waits
|
|
6
|
+
* for knob events after a successful /permission POST before clearing the
|
|
7
|
+
* pick with an honest "switch not confirmed" note. */
|
|
8
|
+
var DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS = 12e3;
|
|
9
|
+
var DEFAULT_POLL_IDLE_MS = 2e3;
|
|
10
|
+
/** `conversation.statsBar` default — the whole-ledger truth. */
|
|
11
|
+
var DEFAULT_STATS_BAR_MODE = "full-ledger";
|
|
12
|
+
/** Literal gate for `conversation.statsBar`: only the two known strings
|
|
13
|
+
* pass; anything else falls back to the default (same shape as
|
|
14
|
+
* resolveSidebarPlacement). Both config readers run it. */
|
|
15
|
+
function resolveStatsBarMode(v) {
|
|
16
|
+
return v === "partial" || v === "full-ledger" ? v : DEFAULT_STATS_BAR_MODE;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Boolean gates for the fold flags (ADR-0010 D2/A1): only strict booleans
|
|
20
|
+
* pass; a missing section or non-boolean key falls back to its default.
|
|
21
|
+
* Same discipline as resolveStatsBarMode — both config readers run it.
|
|
22
|
+
*
|
|
23
|
+
* @param v the raw `conversation` config section
|
|
24
|
+
* @returns the resolved collapsable/progressiveFold pair
|
|
25
|
+
*/
|
|
26
|
+
function resolveConversationFlags(v) {
|
|
27
|
+
const rec = isConfigRecord(v) ? v : {};
|
|
28
|
+
return {
|
|
29
|
+
collapsable: typeof rec.collapsable === "boolean" ? rec.collapsable : false,
|
|
30
|
+
progressiveFold: typeof rec.progressiveFold === "boolean" ? rec.progressiveFold : false
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** `home.refreshMs` default — home list + spine refresh cadence (BC-7). */
|
|
34
|
+
var DEFAULT_HOME_REFRESH_MS = 5e3;
|
|
35
|
+
/** `a2a.fastPollMs` default — LIST-lane tick (ONE batched session.list for
|
|
36
|
+
* all waiting targets). 0 = fast lane OFF: the spine's own ~5s cadence
|
|
37
|
+
* (home.refreshMs) is the only motion — the kill-switch (PRD risk 3). */
|
|
38
|
+
var DEFAULT_A2A_FAST_POLL_MS = 1e3;
|
|
39
|
+
/** `a2a.watchTimeoutMs` default — deadline before an honest `timeout`
|
|
40
|
+
* settle (silence is never failure; the row keeps the error text). */
|
|
41
|
+
var DEFAULT_A2A_WATCH_TIMEOUT_MS = 6e5;
|
|
42
|
+
/** Resolve the whole `a2a` section at once — the single gate site both
|
|
43
|
+
* readers share (server read + browser apply): fastPollMs int [0, 60000]
|
|
44
|
+
* (0 disables the fast lane → spine cadence), watchTimeoutMs int
|
|
45
|
+
* [60000, 3600000], retentionDays int [1, 3650]; every miss reverts to
|
|
46
|
+
* its default. A non-record section is just three misses. */
|
|
47
|
+
function resolveA2aConfig(section) {
|
|
48
|
+
const rec = isConfigRecord(section) ? section : {};
|
|
49
|
+
return {
|
|
50
|
+
fastPollMs: intWithin(rec.fastPollMs, 0, 6e4, DEFAULT_A2A_FAST_POLL_MS),
|
|
51
|
+
watchTimeoutMs: intWithin(rec.watchTimeoutMs, 6e4, 36e5, DEFAULT_A2A_WATCH_TIMEOUT_MS),
|
|
52
|
+
retentionDays: intWithin(rec.retentionDays, 1, 3650, 90)
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
var DEFAULT_PANEL_MIN_ZOOM = .25;
|
|
56
|
+
var DEFAULT_PANEL_MAX_ZOOM = 1.25;
|
|
57
|
+
/** `sidebar.placement` default — the out-of-zoom rail (by-design layout). */
|
|
58
|
+
var DEFAULT_SIDEBAR_PLACEMENT = "none";
|
|
59
|
+
/**
|
|
60
|
+
* Placement literal gate: only the two known strings pass; missing,
|
|
61
|
+
* typo'd, or foreign values fall back to the default. The exact same
|
|
62
|
+
* gate runs server-side (readSidebarConfig) and client-side
|
|
63
|
+
* (applyConfig) — a stale or foreign /api/config body can never smuggle
|
|
64
|
+
* an unknown mode past the store.
|
|
65
|
+
*/
|
|
66
|
+
function resolveSidebarPlacement(v) {
|
|
67
|
+
return v === "panels-zoom" || v === "none" ? v : DEFAULT_SIDEBAR_PLACEMENT;
|
|
68
|
+
}
|
|
69
|
+
/** Integer within [min, max], else the fallback. */
|
|
70
|
+
function intWithin(v, min, max, fallback) {
|
|
71
|
+
return typeof v === "number" && Number.isInteger(v) && v >= min && v <= max ? v : fallback;
|
|
72
|
+
}
|
|
73
|
+
/** Finite number within [min, max], else the fallback. */
|
|
74
|
+
function numWithin(v, min, max, fallback) {
|
|
75
|
+
return typeof v === "number" && Number.isFinite(v) && v >= min && v <= max ? v : fallback;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Resolve a width-bounds triple (panel or sidebar) from a config section:
|
|
79
|
+
* bounds must be integers in [pxMin, pxMax] and crossed bounds (min > max)
|
|
80
|
+
* revert BOTH to defaults (never an inverted clamp). defaultWidth accepts
|
|
81
|
+
* any finite number and CLAMPS into the resolved bounds — the operator's
|
|
82
|
+
* "tighten" intent survives, exactly like the use-site clamp would.
|
|
83
|
+
*/
|
|
84
|
+
function resolveWidthBounds(section, dflt, pxMin, pxMax) {
|
|
85
|
+
const rec = isConfigRecord(section) ? section : {};
|
|
86
|
+
let minWidth = intWithin(rec.minWidth, pxMin, pxMax, dflt.minWidth);
|
|
87
|
+
let maxWidth = intWithin(rec.maxWidth, pxMin, pxMax, dflt.maxWidth);
|
|
88
|
+
if (minWidth > maxWidth) {
|
|
89
|
+
minWidth = dflt.minWidth;
|
|
90
|
+
maxWidth = dflt.maxWidth;
|
|
91
|
+
}
|
|
92
|
+
const rawDefault = rec.defaultWidth;
|
|
93
|
+
const defaultWidth = typeof rawDefault === "number" && Number.isFinite(rawDefault) ? rawDefault : dflt.defaultWidth;
|
|
94
|
+
return {
|
|
95
|
+
minWidth,
|
|
96
|
+
maxWidth,
|
|
97
|
+
defaultWidth: Math.max(minWidth, Math.min(maxWidth, defaultWidth))
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Resolve a zoom-bounds pair: finite numbers in [zMin, zMax]; crossed
|
|
102
|
+
* (min > max) reverts both to defaults.
|
|
103
|
+
*/
|
|
104
|
+
function resolveZoomBounds(section, dfltMin, dfltMax, zMin, zMax) {
|
|
105
|
+
const rec = isConfigRecord(section) ? section : {};
|
|
106
|
+
let minZoom = numWithin(rec.minZoom, zMin, zMax, dfltMin);
|
|
107
|
+
let maxZoom = numWithin(rec.maxZoom, zMin, zMax, dfltMax);
|
|
108
|
+
if (minZoom > maxZoom) {
|
|
109
|
+
minZoom = dfltMin;
|
|
110
|
+
maxZoom = dfltMax;
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
minZoom,
|
|
114
|
+
maxZoom
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** POX guard: is this a plain object (not array/null)? Config sections only. */
|
|
118
|
+
function isConfigRecord(v) {
|
|
119
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export { DEFAULT_SIDEBAR_PLACEMENT as D, DEFAULT_PANEL_MAX_ZOOM as a, DEFAULT_PANEL_MIN_ZOOM as b, DEFAULT_A2A_WATCH_TIMEOUT_MS as c, DEFAULT_A2A_FAST_POLL_MS as d, DEFAULT_HOME_REFRESH_MS as e, DEFAULT_STATS_BAR_MODE as f, DEFAULT_POLL_IDLE_MS as g, DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS as h, resolveSidebarPlacement as i, resolveWidthBounds as j, resolveZoomBounds as k, intWithin as l, resolveConversationFlags as m, resolveStatsBarMode as n, isConfigRecord as o, dshBaseUrl as p, resolveA2aConfig as r };
|
|
123
|
+
//# sourceMappingURL=config.js-BBYogCe7.js.map
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { D as DSI_CONFIG_PATH } from './insight-config.js-CfMPTA6Z.js';
|
|
2
|
+
import { mkdirSync } from 'node:fs';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { DatabaseSync } from 'node:sqlite';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the ledger path: explicit argument → `DSI_A2A_DB` env →
|
|
8
|
+
* sibling of DSI_CONFIG_PATH (`~/.dsi/a2a.sqlite`).
|
|
9
|
+
*/
|
|
10
|
+
function resolveA2aDbPath(path) {
|
|
11
|
+
return process.env["DSI_A2A_DB"] ?? join(dirname(DSI_CONFIG_PATH), "a2a.sqlite");
|
|
12
|
+
}
|
|
13
|
+
var DDL = [`CREATE TABLE IF NOT EXISTS a2a_exchange (
|
|
14
|
+
id TEXT PRIMARY KEY,
|
|
15
|
+
from_session TEXT NOT NULL,
|
|
16
|
+
to_session TEXT NOT NULL,
|
|
17
|
+
message TEXT NOT NULL,
|
|
18
|
+
watermark_turn INTEGER NOT NULL,
|
|
19
|
+
watermark_seq INTEGER,
|
|
20
|
+
sent_at INTEGER NOT NULL,
|
|
21
|
+
state TEXT NOT NULL DEFAULT 'waiting',
|
|
22
|
+
reply_text TEXT,
|
|
23
|
+
reply_turn INTEGER,
|
|
24
|
+
settled_at INTEGER,
|
|
25
|
+
error TEXT
|
|
26
|
+
)`, `CREATE INDEX IF NOT EXISTS idx_a2a_waiting
|
|
27
|
+
ON a2a_exchange (sent_at)
|
|
28
|
+
WHERE state = 'waiting'`].join(";\n");
|
|
29
|
+
/** v1→v2 (2026-08-25 bug fix): add watermark_seq to pre-fix ledgers. */
|
|
30
|
+
var MIGRATE_V2 = `ALTER TABLE a2a_exchange ADD COLUMN watermark_seq INTEGER`;
|
|
31
|
+
/**
|
|
32
|
+
* Open (and ensure) the ledger. Idempotent: DDL re-runs safely, so a
|
|
33
|
+
* second open of the same file is a no-op schema-wise (Task 2.1-T probe).
|
|
34
|
+
*
|
|
35
|
+
* Caching: an explicit `path` always returns a FRESH handle (test/tmp
|
|
36
|
+
* isolation); the no-arg form memoizes one default handle per process —
|
|
37
|
+
* the watcher and routes share it.
|
|
38
|
+
*/
|
|
39
|
+
var defaultDb = null;
|
|
40
|
+
function openA2aDb(path) {
|
|
41
|
+
if (defaultDb !== null) return defaultDb;
|
|
42
|
+
const file = resolveA2aDbPath();
|
|
43
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
44
|
+
const db = new DatabaseSync(file, { readOnly: false });
|
|
45
|
+
db.exec("PRAGMA journal_mode = WAL;");
|
|
46
|
+
db.exec(`${DDL};`);
|
|
47
|
+
try {
|
|
48
|
+
db.exec(MIGRATE_V2);
|
|
49
|
+
} catch {}
|
|
50
|
+
defaultDb = db;
|
|
51
|
+
return db;
|
|
52
|
+
}
|
|
53
|
+
function mapRow(r) {
|
|
54
|
+
return {
|
|
55
|
+
id: r.id,
|
|
56
|
+
fromSession: r.from_session,
|
|
57
|
+
toSession: r.to_session,
|
|
58
|
+
message: r.message,
|
|
59
|
+
watermarkTurn: r.watermark_turn,
|
|
60
|
+
watermarkSeq: r.watermark_seq ?? null,
|
|
61
|
+
sentAt: r.sent_at,
|
|
62
|
+
state: r.state,
|
|
63
|
+
replyText: r.reply_text ?? null,
|
|
64
|
+
replyTurn: r.reply_turn ?? null,
|
|
65
|
+
settledAt: r.settled_at ?? null,
|
|
66
|
+
error: r.error ?? null
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** INSERT one waiting row — the send itself (ADR §6: INSERT-at-send). */
|
|
70
|
+
function insertWaiting(row, db = openA2aDb()) {
|
|
71
|
+
db.prepare(`INSERT INTO a2a_exchange
|
|
72
|
+
(id, from_session, to_session, message, watermark_turn, watermark_seq, sent_at, state)
|
|
73
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, 'waiting')`).run(row.id, row.fromSession, row.toSession, row.message, row.watermarkTurn, row.watermarkSeq ?? null, row.sentAt);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Settle a row — exactly once. Refuses: unknown id, a `waiting` target
|
|
77
|
+
* state, or an already-terminal row (single-UPDATE guard: the WHERE
|
|
78
|
+
* clause pins `state='waiting'`, so the database itself rejects any
|
|
79
|
+
* second settle — no rewrites after settle, by construction).
|
|
80
|
+
*/
|
|
81
|
+
function settleRow(settle, db = openA2aDb()) {
|
|
82
|
+
const { id, state, replyText, replyTurn, error } = settle;
|
|
83
|
+
if (state === "waiting") throw new Error(`a2a settle refused for ${id}: 'waiting' is not a settle state`);
|
|
84
|
+
if (db.prepare(`UPDATE a2a_exchange
|
|
85
|
+
SET state = ?, reply_text = ?, reply_turn = ?, settled_at = ?, error = ?
|
|
86
|
+
WHERE id = ? AND state = 'waiting'`).run(state, replyText ?? null, replyTurn ?? null, Date.now(), error ?? null, id).changes !== 1) {
|
|
87
|
+
const current = db.prepare("SELECT state FROM a2a_exchange WHERE id = ?").get(id);
|
|
88
|
+
if (current === void 0) throw new Error(`a2a settle refused for ${id}: row not found`);
|
|
89
|
+
throw new Error(`a2a settle refused for ${id}: row is terminal ('${current.state}') — settled rows never change`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** All waiting rows, oldest first (the watcher's LIST-lane input). */
|
|
93
|
+
function listWaiting(db = openA2aDb()) {
|
|
94
|
+
return db.prepare(`SELECT * FROM a2a_exchange WHERE state = 'waiting' ORDER BY sent_at ASC`).all().map(mapRow);
|
|
95
|
+
}
|
|
96
|
+
/** Recent rows, newest first — the read API's list (optional sender filter).
|
|
97
|
+
* rowid DESC breaks same-ms ties: the later INSERT is the newer row. */
|
|
98
|
+
function listRecent(limit = 20, fromSession, db = openA2aDb()) {
|
|
99
|
+
const sql = fromSession ? `SELECT * FROM a2a_exchange WHERE from_session = ? ORDER BY sent_at DESC, rowid DESC LIMIT ?` : `SELECT * FROM a2a_exchange ORDER BY sent_at DESC, rowid DESC LIMIT ?`;
|
|
100
|
+
const stmt = db.prepare(sql);
|
|
101
|
+
return (fromSession ? stmt.all(fromSession, limit) : stmt.all(limit)).map(mapRow);
|
|
102
|
+
}
|
|
103
|
+
/** One row or null. */
|
|
104
|
+
function getRow(id, db = openA2aDb()) {
|
|
105
|
+
const r = db.prepare("SELECT * FROM a2a_exchange WHERE id = ?").get(id);
|
|
106
|
+
return r ? mapRow(r) : null;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Retention (boot sweep only, W3): delete TERMINAL rows settled strictly
|
|
110
|
+
* before the cutoff. Waiting rows are never pruned — an unresolved watch
|
|
111
|
+
* outranks retention. Returns the number pruned.
|
|
112
|
+
*/
|
|
113
|
+
function pruneTerminalBefore(cutoffMs, db = openA2aDb()) {
|
|
114
|
+
const result = db.prepare(`DELETE FROM a2a_exchange
|
|
115
|
+
WHERE state != 'waiting' AND settled_at IS NOT NULL AND settled_at < ?`).run(cutoffMs);
|
|
116
|
+
return Number(result.changes);
|
|
117
|
+
}
|
|
118
|
+
|
|
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-DcmO3JAx.js.map
|