@deepseek-insight/dsi 0.7.0 → 0.8.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 (103) hide show
  1. package/build/client/_app/immutable/assets/0.c2dRYi3B.css +2 -0
  2. package/build/client/_app/immutable/assets/2.DBblYO_a.css +1 -0
  3. package/build/client/_app/immutable/chunks/C0CuJuob.js +1 -0
  4. package/build/client/_app/immutable/chunks/{CFofWD1C.js → CvvYpRG9.js} +1 -1
  5. package/build/client/_app/immutable/chunks/D-Rolhzs.js +1 -0
  6. package/build/client/_app/immutable/chunks/{CzXb6qus.js → DpSjzsDs.js} +2 -2
  7. package/build/client/_app/immutable/chunks/GMyoOYdi.js +6 -0
  8. package/build/client/_app/immutable/chunks/J_8-FdbR.js +1 -0
  9. package/build/client/_app/immutable/entry/{app.DID8VW1I.js → app.GsYnI6xk.js} +2 -2
  10. package/build/client/_app/immutable/entry/start.keNjq0dA.js +1 -0
  11. package/build/client/_app/immutable/nodes/{0.oyzYR3-4.js → 0.BJVfjaPJ.js} +1 -1
  12. package/build/client/_app/immutable/nodes/{1.2U7ECroT.js → 1.rhLd5ssJ.js} +1 -1
  13. package/build/client/_app/immutable/nodes/2.DdzHBwFT.js +340 -0
  14. package/build/client/_app/version.json +1 -1
  15. package/build/handler.js +4 -4
  16. package/build/index.js +4 -4
  17. package/build/server/chunks/chunks/{app-config.svelte.js-D7wkLUkK.js → app-config.svelte.js-BM4WbMFB.js} +5 -3
  18. package/build/server/chunks/chunks/{config.js-B0w1-uCA.js → config.js-vThvQeMn.js} +12 -3
  19. package/build/server/chunks/chunks/{db.js-BmnKaIBo.js → db.js-B8BUpxGM.js} +2 -2
  20. package/build/server/chunks/chunks/{db2.js-CpSDQEUB.js → db2.js-CNe3I_g2.js} +2 -2
  21. package/build/server/chunks/chunks/{dsh-connection.js-CE6s1mIM.js → dsh-connection.js-xltcocWy.js} +181 -4
  22. package/build/server/chunks/chunks/{git-probe.js-DBbLffkp.js → git-probe.js-CUsTmhmV.js} +2 -2
  23. package/build/server/chunks/chunks/{insight-config.js-DZBwKFH9.js → insight-config.js-CaHHJpFK.js} +12 -5
  24. package/build/server/chunks/chunks/{internal2.js-DgxNmZhS.js → internal2.js-BtL7AFjQ.js} +3 -3
  25. package/build/server/chunks/chunks/{registry.js-D0ldrcNB.js → registry.js-BTiJ1Kaj.js} +2 -2
  26. package/build/server/chunks/chunks/{settings-document.js-BRTO59Al.js → settings-document.js-Gw1puaik.js} +2 -2
  27. package/build/server/chunks/chunks/{state.js-DPoVCoAg.js → state.js-D3ob-Gqa.js} +3 -3
  28. package/build/server/chunks/chunks/{watcher.js-Ck2BsXQf.js → watcher.js-DcT3cS4v.js} +4 -4
  29. package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-B7qOvtA5.js → _server.ts.js-19pFOjH8.js} +5 -5
  30. package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-DBLFNFXT.js → _server.ts.js-BcUn6axe.js} +7 -7
  31. package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-COyQSOOR.js → _server.ts.js-oMpzLZoy.js} +7 -7
  32. package/build/server/chunks/entries/endpoints/api/browser/_id_/close/{_server.ts.js-CJjvHo1Z.js → _server.ts.js-DC3qPMQS.js} +5 -5
  33. package/build/server/chunks/entries/endpoints/api/browser/_id_/input/{_server.ts.js-_XEUfVid.js → _server.ts.js-CHNcK7BH.js} +5 -5
  34. package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/{_server.ts.js-e7j-kKSK.js → _server.ts.js-CYkOJL2O.js} +5 -5
  35. package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/{_server.ts.js-BYiU0Wvv.js → _server.ts.js-DHTDi8KR.js} +5 -5
  36. package/build/server/chunks/entries/endpoints/api/browser/_id_/page/{_server.ts.js-RL1-uaVR.js → _server.ts.js-Y5khEC2l.js} +5 -5
  37. package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/{_server.ts.js-Cxc2r0BD.js → _server.ts.js-BmjgfZD2.js} +5 -5
  38. package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/{_server.ts.js-DQ1jgFuc.js → _server.ts.js-IxS-goi1.js} +5 -5
  39. package/build/server/chunks/entries/endpoints/api/browser/{_server.ts.js-DfbmPmUH.js → _server.ts.js-6STmJ7FD.js} +5 -5
  40. package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-CfcgdS1G.js → _server.ts.js-BVyx8gPc.js} +6 -5
  41. package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-BOgNWE9k.js → _server.ts.js-CNJbv6CC.js} +5 -5
  42. package/build/server/chunks/entries/endpoints/api/dsh/jobs/{_server.ts.js-DExfzwju.js → _server.ts.js-CDWmXDJX.js} +37 -5
  43. package/build/server/chunks/entries/endpoints/api/dsh/jobs/follow/_server.ts.js-BDXQcQSL.js +56 -0
  44. package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-vuxSBOKD.js → _server.ts.js-CgedtzOg.js} +5 -5
  45. package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-DYh0lUVR.js → _server.ts.js-ut2pK15B.js} +5 -5
  46. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-CzmMoP9-.js → _server.ts.js-Ct2W7g4c.js} +5 -5
  47. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-CXnfYfR4.js → _server.ts.js-Rke3V_qh.js} +5 -5
  48. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-CF2s7GwI.js → _server.ts.js-BYHm5WBA.js} +5 -5
  49. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-DKw9ktIO.js → _server.ts.js-B_bEUKkt.js} +5 -5
  50. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-pT2AO2S0.js → _server.ts.js-D78fGUQk.js} +5 -5
  51. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-D4H2h6fc.js → _server.ts.js-CgB_c7zG.js} +5 -5
  52. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-iwuADbdv.js → _server.ts.js-dVaW22_K.js} +5 -5
  53. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-C36DpiRX.js → _server.ts.js-Dl8SBXdH.js} +5 -5
  54. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-WApWfRu-.js → _server.ts.js-BKDiwMIE.js} +5 -5
  55. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-B8DQEsx6.js → _server.ts.js-D3FY2Wxt.js} +5 -5
  56. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-B0ACEjPX.js → _server.ts.js-BWuIEdjl.js} +4 -4
  57. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-CmYfLvHD.js → _server.ts.js-CeiQFOGP.js} +5 -5
  58. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-DrZveeFq.js → _server.ts.js-lMofZOns.js} +5 -5
  59. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-C-nVpTN7.js → _server.ts.js-CNalVHrK.js} +5 -5
  60. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-C-cuYV40.js → _server.ts.js-I2s8qvcV.js} +5 -5
  61. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-BoiybbwX.js → _server.ts.js-DTKELD7v.js} +5 -5
  62. package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-DDqjDxoc.js → _server.ts.js-BXSD__Gg.js} +5 -5
  63. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-DG0MHUkj.js → _server.ts.js-C9IZl2Qh.js} +5 -5
  64. package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-Cz4XSEfb.js → _server.ts.js-BRXu3UtL.js} +5 -5
  65. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-DV4wF7XG.js → _server.ts.js-DmnpiaD2.js} +5 -5
  66. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-X0mwkV_4.js → _server.ts.js-C5qCdsdm.js} +5 -5
  67. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-D_AEj6qx.js → _server.ts.js-BVUn49yf.js} +5 -5
  68. package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-Cj3S-2MC.js → _server.ts.js-DuCOsoF0.js} +5 -5
  69. package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-DuuhbcTE.js → _server.ts.js-2mcRY7IP.js} +5 -5
  70. package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-C72akYlH.js → _server.ts.js-DZjaHZxU.js} +5 -5
  71. package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-CEO2aw-C.js → _server.ts.js-DTVmsohJ.js} +5 -5
  72. package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-BhR4Cblt.js → _server.ts.js-DZXTArj7.js} +4 -4
  73. package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-BFdpm_he.js → _server.ts.js-LSc5EKH7.js} +6 -6
  74. package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-D5eW-2fL.js → _server.ts.js-DNjiScBe.js} +6 -6
  75. package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-iax8K9x8.js → _server.ts.js-CHMbLoSn.js} +6 -6
  76. package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-CdfiRwgl.js → _server.ts.js-BgM4JEAm.js} +6 -6
  77. package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-CBU0ug30.js → _server.ts.js-BH0cLS8o.js} +6 -6
  78. package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-CLozZQT3.js → _server.ts.js-BzlV3cVT.js} +6 -6
  79. package/build/server/chunks/entries/{hooks.server.js-BSnc9oHw.js → hooks.server.js-B-e4_ekh.js} +3 -3
  80. package/build/server/chunks/entries/pages/{_error.svelte.js-B9CGiiZy.js → _error.svelte.js-9cKDDMkE.js} +4 -4
  81. package/build/server/chunks/entries/pages/{_page.server.ts.js-yB-zbLkm.js → _page.server.ts.js-DttLUwdf.js} +2 -2
  82. package/build/server/chunks/entries/pages/{_page.svelte.js-D3F2fiR4.js → _page.svelte.js-hjZYZCe1.js} +9875 -9512
  83. package/build/server/chunks/{handler-CF16q5dY.js → handler-B_azsHTz.js} +3 -3
  84. package/build/server/chunks/{index.js-DsT3Sxoa.js → index.js-3VY3QWe-.js} +2 -2
  85. package/build/server/chunks/{manifest.js-CW2r9Rb1.js → manifest.js-hHcXduh_.js} +61 -54
  86. package/build/server/chunks/nodes/{0.js-gr8Z-ETs.js → 0.js-B_LVBEe8.js} +3 -3
  87. package/build/server/chunks/nodes/1.js-BRybp38b.js +9 -0
  88. package/build/server/chunks/nodes/{2.js-Cif5vNvc.js → 2.js-bVRsbAhW.js} +9 -9
  89. package/package.json +1 -1
  90. package/skills/dsi-pattern-thin/SKILL.md +116 -0
  91. package/skills/dsi-pattern-thin/references/case-study-2026-10-21-conversation-feed-host.md +64 -0
  92. package/skills/dsi-pattern-thin/references/case-study-2026-10-21-tool-run-row-host.md +66 -0
  93. package/template/.dsi/prompts.sqlite-shm +0 -0
  94. package/template/.dsi/prompts.sqlite-wal +0 -0
  95. package/build/client/_app/immutable/assets/0.CrT3Lf0L.css +0 -2
  96. package/build/client/_app/immutable/assets/2.ByYVysCj.css +0 -1
  97. package/build/client/_app/immutable/chunks/CW7JStOk.js +0 -1
  98. package/build/client/_app/immutable/chunks/D6mTYwDH.js +0 -6
  99. package/build/client/_app/immutable/chunks/DlfWhx6l.js +0 -1
  100. package/build/client/_app/immutable/chunks/DwWy6K0V.js +0 -1
  101. package/build/client/_app/immutable/entry/start.CkxDcwJy.js +0 -1
  102. package/build/client/_app/immutable/nodes/2.D1lz0hMu.js +0 -337
  103. package/build/server/chunks/nodes/1.js-BrruRgxj.js +0 -9
@@ -1 +1 @@
1
- {"version":"1792504632177"}
1
+ {"version":"1792589129567"}
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-CF16q5dY.js';
6
- import './server/chunks/index.js-DsT3Sxoa.js';
7
- import './server/chunks/manifest.js-CW2r9Rb1.js';
5
+ export { h as handler } from './server/chunks/handler-B_azsHTz.js';
6
+ import './server/chunks/index.js-3VY3QWe-.js';
7
+ import './server/chunks/manifest.js-hHcXduh_.js';
8
8
  import './env.js';
9
9
  import 'node:buffer';
10
10
  import 'node:crypto';
@@ -19,6 +19,6 @@ import 'node:url';
19
19
  import './server/chunks/chunks/index-server.js-CV2lq-ha.js';
20
20
  import './server/chunks/chunks/server.js-DqHGsQU2.js';
21
21
  import './server/chunks/chunks/internal.js-BcS47nI-.js';
22
- import './server/chunks/chunks/internal2.js-DgxNmZhS.js';
22
+ import './server/chunks/chunks/internal2.js-BtL7AFjQ.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-CF16q5dY.js';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-B_azsHTz.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-DsT3Sxoa.js';
17
+ import './server/chunks/index.js-3VY3QWe-.js';
18
18
  import './server/chunks/chunks/index-server.js-CV2lq-ha.js';
19
19
  import './server/chunks/chunks/server.js-DqHGsQU2.js';
20
20
  import './server/chunks/chunks/internal.js-BcS47nI-.js';
21
- import './server/chunks/chunks/internal2.js-DgxNmZhS.js';
21
+ import './server/chunks/chunks/internal2.js-BtL7AFjQ.js';
22
22
  import './server/chunks/chunks/exports.js-DH_tjtdv.js';
23
- import './server/chunks/manifest.js-CW2r9Rb1.js';
23
+ import './server/chunks/manifest.js-hHcXduh_.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_STATS_BAR_MODE, h as DEFAULT_POLL_IDLE_MS, j as DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS } from './config.js-B0w1-uCA.js';
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';
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
@@ -288,7 +288,8 @@ function freshDefault() {
288
288
  pollIdleMs: DEFAULT_POLL_IDLE_MS,
289
289
  statsBar: DEFAULT_STATS_BAR_MODE,
290
290
  collapsable: false,
291
- progressiveFold: false
291
+ progressiveFold: false,
292
+ heartbeatType: DEFAULT_HEARTBEAT_TYPE
292
293
  },
293
294
  home: { refreshMs: DEFAULT_HOME_REFRESH_MS },
294
295
  a2a: {
@@ -313,6 +314,7 @@ function freshDefault() {
313
314
  tags: [...DEFAULT_PROMPT_TAGS],
314
315
  dbPath: ""
315
316
  },
317
+ jobs: { autoClose: false },
316
318
  settingsHomes: {
317
319
  dsi: "~/.dsi",
318
320
  dsh: "~/.dsh"
@@ -329,4 +331,4 @@ function appConfig() {
329
331
  }
330
332
 
331
333
  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 };
332
- //# sourceMappingURL=app-config.svelte.js-D7wkLUkK.js.map
334
+ //# sourceMappingURL=app-config.svelte.js-BM4WbMFB.js.map
@@ -15,6 +15,14 @@ var DEFAULT_STATS_BAR_MODE = "full-ledger";
15
15
  function resolveStatsBarMode(v) {
16
16
  return v === "partial" || v === "full-ledger" ? v : DEFAULT_STATS_BAR_MODE;
17
17
  }
18
+ /** `conversation.heartbeatType` default — watch what the operator sees. */
19
+ var DEFAULT_HEARTBEAT_TYPE = "viewport-cap";
20
+ /** Literal gate for `conversation.heartbeatType` — same discipline as
21
+ * resolveStatsBarMode: only the two known strings pass. Both config
22
+ * readers run it. */
23
+ function resolveHeartbeatType(v) {
24
+ return v === "ticker-cap" || v === "viewport-cap" ? v : DEFAULT_HEARTBEAT_TYPE;
25
+ }
18
26
  /**
19
27
  * Boolean gates for the fold flags (ADR-0010 D2/A1): only strict booleans
20
28
  * pass; a missing section or non-boolean key falls back to its default.
@@ -27,7 +35,8 @@ function resolveConversationFlags(v) {
27
35
  const rec = isConfigRecord(v) ? v : {};
28
36
  return {
29
37
  collapsable: typeof rec.collapsable === "boolean" ? rec.collapsable : false,
30
- progressiveFold: typeof rec.progressiveFold === "boolean" ? rec.progressiveFold : false
38
+ progressiveFold: typeof rec.progressiveFold === "boolean" ? rec.progressiveFold : false,
39
+ heartbeatType: resolveHeartbeatType(rec.heartbeatType)
31
40
  };
32
41
  }
33
42
  /** The UI locale fleet — ADR D5. A fourth language is one catalog file
@@ -149,5 +158,5 @@ var DEFAULT_TERMINAL_GRACE_MS = 3e3;
149
158
  /** Output-silence bound a send-wait may settle on as inferred_idle. */
150
159
  var DEFAULT_TERMINAL_IDLE_MS = 1200;
151
160
 
152
- 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_STATS_BAR_MODE as g, DEFAULT_POLL_IDLE_MS as h, isConfigRecord as i, DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS as j, resolveSidebarPlacement as k, resolveWidthBounds as l, resolveZoomBounds as m, intWithin as n, resolveConversationFlags as o, resolveStatsBarMode as p, DEFAULT_TERMINAL_IDLE_MS as q, resolveA2aConfig as r, DEFAULT_TERMINAL_GRACE_MS as s, DEFAULT_TERMINAL_SPILL_BYTES as t, DEFAULT_TERMINAL_TAIL_BYTES as u, dshBaseUrl as v };
153
- //# sourceMappingURL=config.js-B0w1-uCA.js.map
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
@@ -1,4 +1,4 @@
1
- import { D as DSI_CONFIG_PATH } from './insight-config.js-DZBwKFH9.js';
1
+ import { D as DSI_CONFIG_PATH } from './insight-config.js-CaHHJpFK.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-BmnKaIBo.js.map
120
+ //# sourceMappingURL=db.js-B8BUpxGM.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-DZBwKFH9.js';
1
+ import { e as readPromptsConfig, D as DSI_CONFIG_PATH, j as joinTagWords, p as parseTagWords } from './insight-config.js-CaHHJpFK.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-CpSDQEUB.js.map
765
+ //# sourceMappingURL=db2.js-CNe3I_g2.js.map
@@ -1,5 +1,5 @@
1
- import { v as dshBaseUrl } from './config.js-B0w1-uCA.js';
2
- import { r as readDshAuthConfig, a as readServerConfig, b as readDshPresetEnglishConfig } from './insight-config.js-DZBwKFH9.js';
1
+ import { r as readDshAuthConfig, a as readServerConfig, b as readDshPresetEnglishConfig } from './insight-config.js-CaHHJpFK.js';
2
+ import { w as dshBaseUrl } from './config.js-vThvQeMn.js';
3
3
 
4
4
  //#region src/lib/server/dsh-rpc.ts
5
5
  /**
@@ -811,6 +811,8 @@ var DownlinkManager = class {
811
811
  */
812
812
  jobRosterStreams = /* @__PURE__ */ new Set();
813
813
  jobRosterWatched = /* @__PURE__ */ new Set();
814
+ /** ADR-0035 — live job.follow logical streams by relay key (owner|jobId). */
815
+ jobFollowStreams = /* @__PURE__ */ new Set();
814
816
  pendingJobRoster = /* @__PURE__ */ new Set();
815
817
  reconnectTimer;
816
818
  /** Wave 4.2 — consecutive failed generations; drives the backoff ladder. */
@@ -857,6 +859,7 @@ var DownlinkManager = class {
857
859
  this.openStateStream(socket, `workspaces-${String(this.streamSeq)}`, "workspace/follow");
858
860
  this.openStateStream(socket, `control-${String(this.streamSeq)}`, "session/control");
859
861
  for (const sessionId of this.jobRosterWatched) this.openJobRosterStream(sessionId);
862
+ for (const owner of this.conn.relay.jobFollowOwners()) this.openJobFollowStreamsOf(owner);
860
863
  this.pendingJobRoster.clear();
861
864
  }
862
865
  /** Open one state stream (workspace/follow | session/control) with empty args. */
@@ -905,12 +908,53 @@ var DownlinkManager = class {
905
908
  } catch {}
906
909
  }
907
910
  }
911
+ /**
912
+ * ADR-0035 — open (or ensure) the job/follow logical stream for one
913
+ * (owner, jobId). Idempotent per generation; parked when the carrier is
914
+ * still CONNECTING (the next onMuxOpen reopens tracked follows).
915
+ */
916
+ openJobFollowStream(owner, jobId) {
917
+ this.ensureDownlinks();
918
+ const socket = this.wsMux;
919
+ const key = owner + "|" + jobId;
920
+ if (socket === void 0 || this.opened === false) return;
921
+ if (this.jobFollowStreams.has(key)) return;
922
+ this.sendStreamOpen(socket, `jobfollow-${owner}.${jobId}.${String(this.streamSeq)}`, "job/follow", { args: { request: owner ? {
923
+ sessionId: owner,
924
+ jobId
925
+ } : { jobId } } });
926
+ this.jobFollowStreams.add(key);
927
+ }
928
+ /** ADR-0035 — the last-unwatch close (follow-relay calls this). */
929
+ closeJobFollowStream(owner, jobId) {
930
+ const key = owner + "|" + jobId;
931
+ this.jobFollowStreams.delete(key);
932
+ for (const streamId of [...this.streamSockets.keys()]) {
933
+ if (!streamId.startsWith(`jobfollow-${owner}.${jobId}.`)) continue;
934
+ this.streamSockets.delete(streamId);
935
+ try {
936
+ this.wsMux?.send?.(JSON.stringify({
937
+ type: "close",
938
+ streamId
939
+ }));
940
+ } catch {}
941
+ }
942
+ }
908
943
  /** Extract the sessionId from a jobs-<sessionId>-<seq> stream id. */
909
944
  jobRosterSessionIdOf(streamId) {
910
945
  const rest = streamId.slice(5);
911
946
  const cut = rest.lastIndexOf("-");
912
947
  return cut > 0 ? rest.slice(0, cut) : null;
913
948
  }
949
+ /** Reopen every tracked job follow owned by one owner (generation). */
950
+ openJobFollowStreamsOf(owner) {
951
+ for (const jobId of this.conn.relay.jobFollowJobsOf(owner)) this.openJobFollowStream(owner, jobId);
952
+ }
953
+ /** jobfollow item: relay to the follow-relay's sinks. */
954
+ onJobFollowItem(streamId, value) {
955
+ const parts = streamId.slice(10).split(".");
956
+ if (parts.length >= 3) this.conn.relay.onJobFollowItem(parts[0], parts[1], value);
957
+ }
914
958
  openEventStream(socket) {
915
959
  this.sendStreamOpen(socket, `events-${String(this.streamSeq)}`, REMOTE_EVENT_STREAM_ENDPOINT, REMOTE_EVENT_STREAM_PAYLOAD);
916
960
  }
@@ -977,6 +1021,7 @@ var DownlinkManager = class {
977
1021
  else if (frame.streamId.startsWith("events-")) this.onEventItem(value);
978
1022
  else if (frame.streamId.startsWith("workspaces-")) this.onWorkspaceItem(value);
979
1023
  else if (frame.streamId.startsWith("control-")) this.onControlItem(value);
1024
+ else if (frame.streamId.startsWith("jobfollow-")) this.onJobFollowItem(frame.streamId, value);
980
1025
  else if (frame.streamId.startsWith("jobs-")) {
981
1026
  const sessionId = this.jobRosterSessionIdOf(frame.streamId);
982
1027
  if (sessionId !== null) this.conn.relay.onJobRosterItem(sessionId, value);
@@ -984,7 +1029,13 @@ var DownlinkManager = class {
984
1029
  return;
985
1030
  }
986
1031
  if (frame.type === "error") {
987
- if (frame.streamId.startsWith("jobs-")) {
1032
+ if (frame.streamId.startsWith("jobfollow-")) {
1033
+ const parts = frame.streamId.slice(10).split(".");
1034
+ if (parts.length >= 3) {
1035
+ this.conn.relay.onJobFollowStreamError(parts[0], parts[1], frame.error?.code, frame.error?.message);
1036
+ this.jobFollowStreams.delete(parts[0] + "|" + parts[1]);
1037
+ }
1038
+ } else if (frame.streamId.startsWith("jobs-")) {
988
1039
  const sessionId = this.jobRosterSessionIdOf(frame.streamId);
989
1040
  if (sessionId !== null) {
990
1041
  this.conn.relay.onJobRosterStreamError(sessionId, frame.error?.code, frame.error?.message);
@@ -1268,6 +1319,100 @@ var DownlinkManager = class {
1268
1319
  }
1269
1320
  };
1270
1321
  //#endregion
1322
+ //#region src/lib/server/jobs/follow-relay.ts
1323
+ var JobFollowRelay = class JobFollowRelay {
1324
+ transport;
1325
+ entries = /* @__PURE__ */ new Map();
1326
+ constructor(transport) {
1327
+ this.transport = transport;
1328
+ }
1329
+ static keyOf(owner, jobId) {
1330
+ return owner + "|" + jobId;
1331
+ }
1332
+ /** Subscribe one browser sink; opens the host stream on first ref. */
1333
+ subscribe(owner, jobId, sink) {
1334
+ const key = JobFollowRelay.keyOf(owner, jobId);
1335
+ let entry = this.entries.get(key);
1336
+ if (entry === void 0) {
1337
+ entry = { sinks: /* @__PURE__ */ new Set() };
1338
+ this.entries.set(key, entry);
1339
+ this.transport.open(owner, jobId);
1340
+ }
1341
+ entry.sinks.add(sink);
1342
+ return () => {
1343
+ const e = this.entries.get(key);
1344
+ if (e === void 0) return;
1345
+ e.sinks.delete(sink);
1346
+ if (e.sinks.size === 0) {
1347
+ this.entries.delete(key);
1348
+ this.transport.close(owner, jobId);
1349
+ }
1350
+ };
1351
+ }
1352
+ /** Owners with at least one live follow (mux generation reopen). */
1353
+ owners() {
1354
+ const set = /* @__PURE__ */ new Set();
1355
+ for (const key of this.entries.keys()) set.add(key.slice(0, key.indexOf("|")));
1356
+ return [...set];
1357
+ }
1358
+ /** Job ids one owner follows live (mux generation reopen). */
1359
+ jobsOf(owner) {
1360
+ const prefix = owner + "|";
1361
+ return [...this.entries.keys()].filter((k) => k.startsWith(prefix)).map((k) => k.slice(prefix.length));
1362
+ }
1363
+ /** One host stream item (opened | output | status) to every sink. */
1364
+ onFrame(owner, jobId, value) {
1365
+ const entry = this.entries.get(JobFollowRelay.keyOf(owner, jobId));
1366
+ if (entry === void 0) return;
1367
+ const event = normalizeFrame(value);
1368
+ if (event !== null) for (const sink of entry.sinks) sink(event);
1369
+ }
1370
+ /** Host stream error to every sink (the tab shows an honest error). */
1371
+ onError(owner, jobId, code, message) {
1372
+ const entry = this.entries.get(JobFollowRelay.keyOf(owner, jobId));
1373
+ if (entry === void 0) return;
1374
+ const event = {
1375
+ type: "error",
1376
+ code,
1377
+ message
1378
+ };
1379
+ for (const sink of entry.sinks) sink(event);
1380
+ }
1381
+ };
1382
+ /** Coerce one raw host frame into a DsiJobFollowEvent (never trust wire). */
1383
+ function normalizeFrame(value) {
1384
+ if (value === null || typeof value !== "object") return null;
1385
+ const v = value;
1386
+ const type = v.type;
1387
+ if (type === "opened" || type === "status") {
1388
+ if (v.job !== null && typeof v.job === "object") return {
1389
+ type,
1390
+ job: v.job,
1391
+ from: typeof v.from === "number" ? v.from : 0
1392
+ };
1393
+ return null;
1394
+ }
1395
+ if (type === "output") return {
1396
+ type: "output",
1397
+ text: decodeChunks(v.chunks),
1398
+ next: typeof v.next === "number" ? v.next : 0,
1399
+ ...v.lossy === true ? { lossy: true } : {}
1400
+ };
1401
+ return null;
1402
+ }
1403
+ /** Decode the host's JobChunk[] into one text blob (best-effort). */
1404
+ function decodeChunks(chunks) {
1405
+ if (!Array.isArray(chunks)) return "";
1406
+ let out = "";
1407
+ for (const chunk of chunks) if (typeof chunk === "string") out += chunk;
1408
+ else if (chunk && typeof chunk === "object") {
1409
+ const c = chunk;
1410
+ if (typeof c.text === "string") out += c.text;
1411
+ else if (typeof c.data === "string") out += c.data;
1412
+ }
1413
+ return out;
1414
+ }
1415
+ //#endregion
1271
1416
  //#region src/lib/server/connection/rpc-relay.ts
1272
1417
  /**
1273
1418
  * connection/rpc-relay — the RPC relay + answer registry (ADR-0022 W4,
@@ -1871,6 +2016,38 @@ var RpcRelay = class {
1871
2016
  dispatchJobRoster(sessionId, jobs) {
1872
2017
  for (const listener of this.jobRosterListeners) listener(sessionId, jobs);
1873
2018
  }
2019
+ /** Lazy singleton: one relay over the downlink job/follow transport. */
2020
+ jobFollowRelay = null;
2021
+ ensureJobFollowRelay() {
2022
+ if (this.jobFollowRelay === null) {
2023
+ const downlinks = this.conn.downlinks;
2024
+ this.jobFollowRelay = new JobFollowRelay({
2025
+ open: (owner, jobId) => downlinks.openJobFollowStream(owner, jobId),
2026
+ close: (owner, jobId) => downlinks.closeJobFollowStream(owner, jobId)
2027
+ });
2028
+ }
2029
+ return this.jobFollowRelay;
2030
+ }
2031
+ /** Subscribe one browser sink to a job's follow stream (SSE route). */
2032
+ subscribeJobFollow(owner, jobId, sink) {
2033
+ return this.ensureJobFollowRelay().subscribe(owner, jobId, sink);
2034
+ }
2035
+ /** The owners with at least one live follow (mux generation reopen). */
2036
+ jobFollowOwners() {
2037
+ return this.jobFollowRelay === null ? [] : this.jobFollowRelay.owners();
2038
+ }
2039
+ /** The job ids one owner follows live (mux generation reopen). */
2040
+ jobFollowJobsOf(owner) {
2041
+ return this.jobFollowRelay === null ? [] : this.jobFollowRelay.jobsOf(owner);
2042
+ }
2043
+ /** Mux demux path: one jobfollow item to the relay's sinks. */
2044
+ onJobFollowItem(owner, jobId, value) {
2045
+ this.jobFollowRelay?.onFrame(owner, jobId, value);
2046
+ }
2047
+ /** Mux demux path: one jobfollow stream error to the relay's sinks. */
2048
+ onJobFollowStreamError(owner, jobId, code, message) {
2049
+ this.jobFollowRelay?.onError(owner, jobId, code, message);
2050
+ }
1874
2051
  /** Wire the open/close transports (called once by DshConnection). */
1875
2052
  wireJobRosterTransport(transport) {
1876
2053
  this.jobRosterTransport = transport;
@@ -2451,4 +2628,4 @@ var DshConnection = class {
2451
2628
  };
2452
2629
 
2453
2630
  export { DshRpcError as D, isPromptImageMediaType as a, buildPromptContent as b, getDshConnection as g, isSubagentRejection as i, mapRpcFailure as m, statusFor as s };
2454
- //# sourceMappingURL=dsh-connection.js-CE6s1mIM.js.map
2631
+ //# sourceMappingURL=dsh-connection.js-xltcocWy.js.map
@@ -1,4 +1,4 @@
1
- import { g as getDshConnection } from './dsh-connection.js-CE6s1mIM.js';
1
+ import { g as getDshConnection } from './dsh-connection.js-xltcocWy.js';
2
2
  import { h as historyToEvents } from './dsh-events.js-CGuF_had.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';
@@ -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-DBbLffkp.js.map
219
+ //# sourceMappingURL=git-probe.js-CUsTmhmV.js.map
@@ -1,5 +1,5 @@
1
- import { r as resolveA2aConfig, D as DEFAULT_PROMPT_TAGS, k as resolveSidebarPlacement, l as resolveWidthBounds, m as resolveZoomBounds, n as intWithin, o as resolveConversationFlags, p as resolveStatsBarMode, i as isConfigRecord, 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_STATS_BAR_MODE, h as DEFAULT_POLL_IDLE_MS, j as DEFAULT_ACCESS_CONFIRM_TIMEOUT_MS, q as DEFAULT_TERMINAL_IDLE_MS, s as DEFAULT_TERMINAL_GRACE_MS, t as DEFAULT_TERMINAL_SPILL_BYTES, u as DEFAULT_TERMINAL_TAIL_BYTES } from './config.js-B0w1-uCA.js';
2
- import { e as ensureDsiHome, m as migrateLegacyDsiConfig, p as parseYamlSettings } from './settings-document.js-BRTO59Al.js';
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';
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';
@@ -120,7 +120,8 @@ var DEFAULT_CONVERSATION_CONFIG = {
120
120
  pollIdleMs: DEFAULT_POLL_IDLE_MS,
121
121
  statsBar: DEFAULT_STATS_BAR_MODE,
122
122
  collapsable: false,
123
- progressiveFold: false
123
+ progressiveFold: false,
124
+ heartbeatType: DEFAULT_HEARTBEAT_TYPE
124
125
  };
125
126
  /** Read the `conversation` section (`pollRunningMs`, `pollIdleMs`). */
126
127
  function readConversationConfig(configPath) {
@@ -285,6 +286,12 @@ var DEFAULT_TERMINAL_CONFIG = {
285
286
  function boolOr(v, fallback) {
286
287
  return typeof v === "boolean" ? v : fallback;
287
288
  }
289
+ var DEFAULT_JOBS_CONFIG = { autoClose: false };
290
+ /** Read the `jobs` section. Not cached — runtime edits apply. */
291
+ function readJobsConfig(configPath) {
292
+ const rec = parseConfig(configPath)?.jobs;
293
+ return { autoClose: boolOr((isConfigRecord(rec) ? rec : {}).autoClose, DEFAULT_JOBS_CONFIG.autoClose) };
294
+ }
288
295
  /** Read the `terminal` section. Not cached — runtime edits apply, same
289
296
  * contract as every other section reader. */
290
297
  function readTerminalConfig(configPath) {
@@ -330,5 +337,5 @@ function readBrowserConfig(configPath) {
330
337
  };
331
338
  }
332
339
 
333
- export { DSI_CONFIG_PATH as D, readServerConfig as a, readDshPresetEnglishConfig as b, readA2aConfig as c, readBrowserConfig as d, readPromptsConfig as e, readSettingsHomes as f, readSidebarConfig as g, readPanelConfig as h, readHomeConfig as i, joinTagWords as j, readConversationConfig as k, readChatConfig as l, readDshSessionsRootConfig as m, isValidTagWord as n, DEFAULT_DSH_PRESET_ENGLISH as o, parseTagWords as p, DEFAULT_SERVER_CONFIG as q, readDshAuthConfig as r, DEFAULT_PROMPTS_CONFIG as s, DEFAULT_SIDEBAR_CONFIG as t, DEFAULT_PANEL_CONFIG as u, DEFAULT_A2A_CONFIG as v, DEFAULT_HOME_CONFIG as w, DEFAULT_CONVERSATION_CONFIG as x, DEFAULT_CHAT_CONFIG as y, readTerminalConfig as z };
334
- //# sourceMappingURL=insight-config.js-DZBwKFH9.js.map
340
+ 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 };
341
+ //# sourceMappingURL=insight-config.js-CaHHJpFK.js.map
@@ -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: "1ueafz"
583
+ version_hash: "zvzws2"
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-BSnc9oHw.js'));
591
+ ({handle, handleFetch, handleError, handleValidationError, init} = await import('../entries/hooks.server.js-B-e4_ekh.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-DgxNmZhS.js.map
606
+ //# sourceMappingURL=internal2.js-BtL7AFjQ.js.map
@@ -1,4 +1,4 @@
1
- import { d as readBrowserConfig } from './insight-config.js-DZBwKFH9.js';
1
+ import { d as readBrowserConfig } from './insight-config.js-CaHHJpFK.js';
2
2
  import { mkdirSync, rmSync, readdirSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import { spawn, spawnSync } from 'node:child_process';
@@ -574,4 +574,4 @@ var BrowserRegistry = class {
574
574
  var browserRegistry = new BrowserRegistry();
575
575
 
576
576
  export { BrowserRegistryRefusal as B, browserRegistry as b };
577
- //# sourceMappingURL=registry.js-D0ldrcNB.js.map
577
+ //# sourceMappingURL=registry.js-BTiJ1Kaj.js.map
@@ -1,4 +1,4 @@
1
- import { i as isConfigRecord } from './config.js-B0w1-uCA.js';
1
+ import { i as isConfigRecord } from './config.js-vThvQeMn.js';
2
2
  import { existsSync, readFileSync, cpSync, mkdirSync, writeFileSync, renameSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { homedir } from 'node:os';
@@ -159,4 +159,4 @@ function parseYamlSettings(text) {
159
159
  }
160
160
 
161
161
  export { SettingsParseError as S, ensureDsiHome as e, migrateLegacyDsiConfig as m, parseYamlSettings as p, readSettingsDocument as r, saveSettingsDocument as s };
162
- //# sourceMappingURL=settings-document.js-BRTO59Al.js.map
162
+ //# sourceMappingURL=settings-document.js-Gw1puaik.js.map
@@ -1,9 +1,9 @@
1
1
  import { i as index_server_exports } from './index-server.js-CV2lq-ha.js';
2
2
  import './shared.js-HQ0rfhm4.js';
3
- import './internal2.js-DgxNmZhS.js';
3
+ import './internal2.js-BtL7AFjQ.js';
4
4
  import './exports.js-DH_tjtdv.js';
5
5
  import { U as snapshot, g as getContext, n as noop } from './server.js-DqHGsQU2.js';
6
- import { U as UI_LOCALES } from './config.js-B0w1-uCA.js';
6
+ import { U as UI_LOCALES } from './config.js-vThvQeMn.js';
7
7
  import { c as getLocale } from './runtime.js-CCJi3XaY.js';
8
8
  import './utils.js-CAdNO8Tu.js';
9
9
 
@@ -304,4 +304,4 @@ var page = {
304
304
  };
305
305
 
306
306
  export { afterNavigate as a, backtoworkspace2 as b, currentLocale as c, dshunreachable1 as d, replaceState as e, page as p, reapednote1 as r, sessionnotfound2 as s, t, unexpectederror1 as u };
307
- //# sourceMappingURL=state.js-DPoVCoAg.js.map
307
+ //# sourceMappingURL=state.js-D3ob-Gqa.js.map
@@ -1,6 +1,6 @@
1
- import { c as readA2aConfig } from './insight-config.js-DZBwKFH9.js';
2
- import { i as insertWaiting, o as openA2aDb, s as settleRow, p as pruneTerminalBefore, l as listWaiting } from './db.js-BmnKaIBo.js';
3
- import { g as getDshConnection } from './dsh-connection.js-CE6s1mIM.js';
1
+ import { c as readA2aConfig } from './insight-config.js-CaHHJpFK.js';
2
+ import { i as insertWaiting, o as openA2aDb, s as settleRow, p as pruneTerminalBefore, l as listWaiting } from './db.js-B8BUpxGM.js';
3
+ import { g as getDshConnection } from './dsh-connection.js-xltcocWy.js';
4
4
  import { a as entryForEvent, h as historyToEvents } from './dsh-events.js-CGuF_had.js';
5
5
 
6
6
  //#region src/lib/server/a2a/matcher.ts
@@ -470,4 +470,4 @@ function registerWatch(row) {
470
470
  }
471
471
 
472
472
  export { configureWatcher as c, ensureStarted as e, registerWatch as r };
473
- //# sourceMappingURL=watcher.js-Ck2BsXQf.js.map
473
+ //# sourceMappingURL=watcher.js-DcT3cS4v.js.map
@@ -1,8 +1,8 @@
1
- import { g as getRow } from '../../../../../chunks/db.js-BmnKaIBo.js';
1
+ import { g as getRow } from '../../../../../chunks/db.js-B8BUpxGM.js';
2
2
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
- import '../../../../../chunks/insight-config.js-DZBwKFH9.js';
4
- import '../../../../../chunks/config.js-B0w1-uCA.js';
5
- import '../../../../../chunks/settings-document.js-BRTO59Al.js';
3
+ import '../../../../../chunks/insight-config.js-CaHHJpFK.js';
4
+ import '../../../../../chunks/config.js-vThvQeMn.js';
5
+ import '../../../../../chunks/settings-document.js-Gw1puaik.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
8
8
  import 'node:os';
@@ -36,4 +36,4 @@ var GET = ({ params }) => {
36
36
  };
37
37
 
38
38
  export { GET };
39
- //# sourceMappingURL=_server.ts.js-B7qOvtA5.js.map
39
+ //# sourceMappingURL=_server.ts.js-19pFOjH8.js.map
@@ -1,16 +1,16 @@
1
- import { a as listRecent } from '../../../../chunks/db.js-BmnKaIBo.js';
2
- import { e as ensureStarted } from '../../../../chunks/watcher.js-Ck2BsXQf.js';
1
+ import { a as listRecent } from '../../../../chunks/db.js-B8BUpxGM.js';
2
+ import { e as ensureStarted } from '../../../../chunks/watcher.js-DcT3cS4v.js';
3
3
  import { j as json } from '../../../../chunks/utils.js-CAdNO8Tu.js';
4
- import '../../../../chunks/insight-config.js-DZBwKFH9.js';
5
- import '../../../../chunks/config.js-B0w1-uCA.js';
6
- import '../../../../chunks/settings-document.js-BRTO59Al.js';
4
+ import '../../../../chunks/insight-config.js-CaHHJpFK.js';
5
+ import '../../../../chunks/config.js-vThvQeMn.js';
6
+ import '../../../../chunks/settings-document.js-Gw1puaik.js';
7
7
  import 'node:fs';
8
8
  import 'node:path';
9
9
  import 'node:os';
10
10
  import 'yaml';
11
11
  import '../../../../chunks/settings-home2.js-f75-B6RI.js';
12
12
  import 'node:sqlite';
13
- import '../../../../chunks/dsh-connection.js-CE6s1mIM.js';
13
+ import '../../../../chunks/dsh-connection.js-xltcocWy.js';
14
14
  import '../../../../chunks/dsh-events.js-CGuF_had.js';
15
15
  import '../../../../chunks/merge.js-yMwW440S.js';
16
16
  import '../../../../chunks/shared.js-HQ0rfhm4.js';
@@ -61,4 +61,4 @@ var GET = ({ url }) => {
61
61
  };
62
62
 
63
63
  export { GET };
64
- //# sourceMappingURL=_server.ts.js-DBLFNFXT.js.map
64
+ //# sourceMappingURL=_server.ts.js-BcUn6axe.js.map
@@ -1,16 +1,16 @@
1
- import { c as readA2aConfig } from '../../../../../chunks/insight-config.js-DZBwKFH9.js';
2
- import { g as getDshConnection } from '../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
3
- import { c as configureWatcher, r as registerWatch } from '../../../../../chunks/watcher.js-Ck2BsXQf.js';
1
+ import { c as readA2aConfig } from '../../../../../chunks/insight-config.js-CaHHJpFK.js';
2
+ import { g as getDshConnection } from '../../../../../chunks/dsh-connection.js-xltcocWy.js';
3
+ import { c as configureWatcher, r as registerWatch } from '../../../../../chunks/watcher.js-DcT3cS4v.js';
4
4
  import { m as mintA2aId } from '../../../../../chunks/a2a-protocol.js-C77mVg2Q.js';
5
5
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
6
- import '../../../../../chunks/config.js-B0w1-uCA.js';
7
- import '../../../../../chunks/settings-document.js-BRTO59Al.js';
6
+ import '../../../../../chunks/config.js-vThvQeMn.js';
7
+ import '../../../../../chunks/settings-document.js-Gw1puaik.js';
8
8
  import 'node:fs';
9
9
  import 'node:path';
10
10
  import 'node:os';
11
11
  import 'yaml';
12
12
  import '../../../../../chunks/settings-home2.js-f75-B6RI.js';
13
- import '../../../../../chunks/db.js-BmnKaIBo.js';
13
+ import '../../../../../chunks/db.js-B8BUpxGM.js';
14
14
  import 'node:sqlite';
15
15
  import '../../../../../chunks/dsh-events.js-CGuF_had.js';
16
16
  import '../../../../../chunks/merge.js-yMwW440S.js';
@@ -99,4 +99,4 @@ var POST = async ({ request }) => {
99
99
  };
100
100
 
101
101
  export { POST };
102
- //# sourceMappingURL=_server.ts.js-COyQSOOR.js.map
102
+ //# sourceMappingURL=_server.ts.js-oMpzLZoy.js.map
@@ -1,8 +1,8 @@
1
- import { b as browserRegistry } from '../../../../../../chunks/registry.js-D0ldrcNB.js';
1
+ import { b as browserRegistry } from '../../../../../../chunks/registry.js-BTiJ1Kaj.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
- import '../../../../../../chunks/insight-config.js-DZBwKFH9.js';
4
- import '../../../../../../chunks/config.js-B0w1-uCA.js';
5
- import '../../../../../../chunks/settings-document.js-BRTO59Al.js';
3
+ import '../../../../../../chunks/insight-config.js-CaHHJpFK.js';
4
+ import '../../../../../../chunks/config.js-vThvQeMn.js';
5
+ import '../../../../../../chunks/settings-document.js-Gw1puaik.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
8
8
  import 'node:os';
@@ -29,4 +29,4 @@ var POST = async (ctx) => {
29
29
  };
30
30
 
31
31
  export { POST };
32
- //# sourceMappingURL=_server.ts.js-CJjvHo1Z.js.map
32
+ //# sourceMappingURL=_server.ts.js-DC3qPMQS.js.map