@deepseek-insight/dsi 0.5.31 → 0.5.33

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 (79) hide show
  1. package/build/client/_app/immutable/assets/0.BU1D48E8.css +2 -0
  2. package/build/client/_app/immutable/assets/2.PKDcj4V6.css +1 -0
  3. package/build/client/_app/immutable/chunks/{CgNCitGK.js → C6qkDvEg.js} +2 -2
  4. package/build/client/_app/immutable/chunks/CCeZTRyg.js +1 -0
  5. package/build/client/_app/immutable/chunks/DB0_Ut01.js +1 -0
  6. package/build/client/_app/immutable/chunks/{2on6iyc3.js → DGget9Lk.js} +1 -1
  7. package/build/client/_app/immutable/entry/{app.CQmyDBAG.js → app.CivPp_F8.js} +2 -2
  8. package/build/client/_app/immutable/entry/start.BS5ewb9B.js +1 -0
  9. package/build/client/_app/immutable/nodes/{1.BZc7zU_C.js → 1.DLvBQOBf.js} +1 -1
  10. package/build/client/_app/immutable/nodes/2.BCq5Ttag.js +174 -0
  11. package/build/client/_app/version.json +1 -1
  12. package/build/handler.js +4 -4
  13. package/build/index.js +4 -4
  14. package/build/server/chunks/chunks/{db.js-BTsRdpsi.js → db.js-BylhmazO.js} +2 -2
  15. package/build/server/chunks/chunks/{db2.js-ou6Vlz7O.js → db2.js-BDE3IYQf.js} +2 -2
  16. package/build/server/chunks/chunks/{dsh-connection.js-DawPog_I.js → dsh-connection.js-BSzUs8-n.js} +2 -2
  17. package/build/server/chunks/chunks/{git-probe.js-D5q52JMr.js → git-probe.js-DoWgYcXG.js} +2 -2
  18. package/build/server/chunks/chunks/{insight-config.js-DiF58x83.js → insight-config.js-XUD5BN0g.js} +6 -3
  19. package/build/server/chunks/chunks/{internal.js-BtKbXGxV.js → internal.js-L3lTruRr.js} +2 -2
  20. package/build/server/chunks/chunks/{state.js-DO4TvfeY.js → state.js-YbeUlJBc.js} +2 -2
  21. package/build/server/chunks/chunks/{watcher.js-BJlOJaBs.js → watcher.js-ZBFDj7d0.js} +4 -4
  22. package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-CDJ0OmUG.js → _server.ts.js-DQenu1Rx.js} +3 -3
  23. package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-BVFSRjvv.js → _server.ts.js-C12q5Acf.js} +5 -5
  24. package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-Bhou8F5X.js → _server.ts.js-CdMcLL0n.js} +5 -5
  25. package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-BJIzdaiA.js → _server.ts.js-CeSzWmzO.js} +3 -3
  26. package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-C6n_idy7.js → _server.ts.js-BJMlDa_R.js} +3 -3
  27. package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-DADH8M-H.js → _server.ts.js-C5xgupWg.js} +3 -3
  28. package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-bC_NLj4U.js → _server.ts.js-DG0cxf9Y.js} +3 -3
  29. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-CoScceI5.js → _server.ts.js-CjIzvUMY.js} +3 -3
  30. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-C1FgtncS.js → _server.ts.js-DqvT86T0.js} +3 -3
  31. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-PIxDn234.js → _server.ts.js-BzBZnI3P.js} +3 -3
  32. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-B_CRf61I.js → _server.ts.js-DHWvuiKn.js} +3 -3
  33. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-DGGUjpY9.js → _server.ts.js-ARtFWpnE.js} +3 -3
  34. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-xEVeT3pb.js → _server.ts.js-rH3qhAct.js} +3 -3
  35. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-Df8t4hkX.js → _server.ts.js-D_fm0cJY.js} +3 -3
  36. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-CH1L9p8z.js → _server.ts.js-BqpeQTZq.js} +3 -3
  37. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-BvG76FMN.js → _server.ts.js-CHKAkZEq.js} +3 -3
  38. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-t8Oiyikl.js → _server.ts.js-DxiKkvE-.js} +2 -2
  39. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-C7fokwxa.js → _server.ts.js-DmjKvFqc.js} +3 -3
  40. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-Cfm2eSa-.js → _server.ts.js-N1651orW.js} +3 -3
  41. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-DJ3WSBOS.js → _server.ts.js-w1dYBirS.js} +3 -3
  42. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-B8lDX-zk.js → _server.ts.js-Bwb62OTc.js} +3 -3
  43. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-DCKvoONe.js → _server.ts.js-D2BCSITG.js} +3 -3
  44. package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-Bl4xBKoB.js → _server.ts.js-t_DpnCyJ.js} +3 -3
  45. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js--FCZv4Np.js → _server.ts.js-BddU8qpx.js} +3 -3
  46. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file-bytes/{_server.ts.js-DEUnD1Mn.js → _server.ts.js-Di_7wqCI.js} +3 -3
  47. package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-BiHVvbW-.js → _server.ts.js-DPz9GQJJ.js} +3 -3
  48. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-CcDE1rk8.js → _server.ts.js-C1jO88hY.js} +3 -3
  49. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-C8vdE5Jr.js → _server.ts.js-C1akVoP3.js} +3 -3
  50. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-C9cgB8t0.js → _server.ts.js-C4RkBuGZ.js} +3 -3
  51. package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-oR6Qu-Wa.js → _server.ts.js-jiY6dVD-.js} +3 -3
  52. package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-j8TNOmk3.js → _server.ts.js-C0r4Wyxc.js} +3 -3
  53. package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-B6UZ2HZ5.js → _server.ts.js-wKxhb4I-.js} +3 -3
  54. package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-BWE38_9X.js → _server.ts.js-DmU2MBc5.js} +2 -2
  55. package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-CmM-ksLQ.js → _server.ts.js-DHhod6dT.js} +4 -2
  56. package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-1pMekv7y.js → _server.ts.js-D1gyOGEM.js} +4 -4
  57. package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-Cwebkv8Y.js → _server.ts.js-D5XlAzdL.js} +4 -4
  58. package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-4JF7UGE-.js → _server.ts.js-BKJbQR9z.js} +4 -4
  59. package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-B5i8ziTR.js → _server.ts.js-CehoxXA_.js} +4 -4
  60. package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-zYBj_jzG.js → _server.ts.js-DMhaSADa.js} +4 -4
  61. package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-BbgR18Zo.js → _server.ts.js-BQRvPo9G.js} +4 -4
  62. package/build/server/chunks/entries/pages/{_error.svelte.js-BppCLlQz.js → _error.svelte.js-CYWDZLI7.js} +3 -3
  63. package/build/server/chunks/entries/pages/{_page.server.ts.js-CNmIVlOY.js → _page.server.ts.js-C3_-EdaG.js} +2 -2
  64. package/build/server/chunks/entries/pages/{_page.svelte.js-B26jgDy0.js → _page.svelte.js-D-nbMlOD.js} +414 -116
  65. package/build/server/chunks/{handler-H035jucs.js → handler-Dtl9b654.js} +3 -3
  66. package/build/server/chunks/{index.js-BwOnKfpd.js → index.js-Dm6-G-_6.js} +2 -2
  67. package/build/server/chunks/{manifest.js-DSGtd5rA.js → manifest.js-CqSIh_aQ.js} +45 -45
  68. package/build/server/chunks/nodes/{0.js--kZVi_Mf.js → 0.js-CWZQcgo6.js} +3 -3
  69. package/build/server/chunks/nodes/1.js-BXDgJSsl.js +9 -0
  70. package/build/server/chunks/nodes/{2.js-Bws89uBE.js → 2.js-BUXLNNKI.js} +7 -7
  71. package/package.json +1 -1
  72. package/build/client/_app/immutable/assets/0.CeQisprJ.css +0 -2
  73. package/build/client/_app/immutable/assets/2.DUjQJ-eX.css +0 -1
  74. package/build/client/_app/immutable/chunks/3oS6cDzS.js +0 -1
  75. package/build/client/_app/immutable/chunks/BG5jnpAS.js +0 -1
  76. package/build/client/_app/immutable/entry/start.CX9hkEBk.js +0 -1
  77. package/build/client/_app/immutable/nodes/2.Bl8zOReA.js +0 -174
  78. package/build/server/chunks/nodes/1.js-CyCPH90h.js +0 -9
  79. /package/build/client/_app/immutable/nodes/{0.CioJu6OT.js → 0.ze9O6tWo.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-BtKbXGxV.js';
1
+ import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-L3lTruRr.js';
2
2
  import { V as head, y as derived, X as bind_props, W as escape_html, Y as attr, Z as attr_style, _ as attr_class, x as setContext, $ as spread_props, a0 as attributes, a1 as clsx, a2 as ensure_array_like, a3 as element, J as getContext, a4 as stringify, a5 as html, F as run, a6 as props_id } from '../../chunks/server.js-11-pxAWV.js';
3
3
  import { U as UI_LOCALES } from '../../chunks/config.js-B0w1-uCA.js';
4
4
  import { m as mergeEntries, c as collapseSystemPromptEntries, t as truncate } from '../../chunks/dsh-events.js-DEZgATm-.js';
@@ -7,7 +7,7 @@ import { b as applyKnobEvent, E as EMPTY_KNOBS, r as resolvePermission, l as loc
7
7
  import { D as DEFAULT_IMAGE_LIMITS } from '../../chunks/image-limits.js-CUdJ0f7r.js';
8
8
  import { a as appConfig, t as triggerMode, g as getTrigger, p as previewSegments, i as isValidTagWord, b as textPreviewOf, s as searchKey, c as shouldRecordPrompt, d as parseTagWords } from '../../chunks/app-config.svelte.js-BBPHOX4N.js';
9
9
  import { c as getLocale } from '../../chunks/runtime.js-CCJi3XaY.js';
10
- import { p as page, a as afterNavigate, t, c as replaceState, e as currentLocale, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-DO4TvfeY.js';
10
+ import { p as page, a as afterNavigate, t, c as replaceState, e as currentLocale, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-YbeUlJBc.js';
11
11
  import 'yaml';
12
12
  import 'html-to-image';
13
13
  import hljs from 'highlight.js/lib/core';
@@ -10870,6 +10870,38 @@ var terminalpaneltitle2 = ((inputs = {}, options = {}) => {
10870
10870
  return en_terminalpaneltitle2();
10871
10871
  });
10872
10872
  //#endregion
10873
+ //#region src/lib/paraglide/messages/terminalsessioncap2.js
10874
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
10875
+ /** @typedef {{}} Terminalsessioncap2Inputs */
10876
+ var en_terminalsessioncap2 = () => {
10877
+ return `Session cap reached — close a terminal to open another.`;
10878
+ };
10879
+ var zh_terminalsessioncap2 = () => {
10880
+ return `已达会话上限 — 请先关闭一个终端。`;
10881
+ };
10882
+ var id_terminalsessioncap2 = () => {
10883
+ return `Batas sesi tercapai — tutup satu terminal untuk membuka yang lain.`;
10884
+ };
10885
+ var es_terminalsessioncap2 = () => {
10886
+ return `Límite de sesiones alcanzado — cierra una terminal para abrir otra.`;
10887
+ };
10888
+ /**
10889
+ * | output |
10890
+ * | --- |
10891
+ * | "Session cap reached — close a terminal to open another." |
10892
+ *
10893
+ * @param {Terminalsessioncap2Inputs} inputs
10894
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
10895
+ * @returns {LocalizedString}
10896
+ */
10897
+ var terminalsessioncap2 = ((inputs = {}, options = {}) => {
10898
+ const locale = options.locale ?? getLocale();
10899
+ if (locale === "zh") return zh_terminalsessioncap2();
10900
+ if (locale === "id") return id_terminalsessioncap2();
10901
+ if (locale === "es") return es_terminalsessioncap2();
10902
+ return en_terminalsessioncap2();
10903
+ });
10904
+ //#endregion
10873
10905
  //#region src/lib/paraglide/messages/terminalsettleinferredidle3.js
10874
10906
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
10875
10907
  /** @typedef {{}} Terminalsettleinferredidle3Inputs */
@@ -10998,6 +11030,38 @@ var terminalsettletimeout2 = ((inputs = {}, options = {}) => {
10998
11030
  return en_terminalsettletimeout2();
10999
11031
  });
11000
11032
  //#endregion
11033
+ //#region src/lib/paraglide/messages/terminaltabclose2.js
11034
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
11035
+ /** @typedef {{}} Terminaltabclose2Inputs */
11036
+ var en_terminaltabclose2 = () => {
11037
+ return `Close tab`;
11038
+ };
11039
+ var zh_terminaltabclose2 = () => {
11040
+ return `关闭标签页`;
11041
+ };
11042
+ var id_terminaltabclose2 = () => {
11043
+ return `Tutup tab`;
11044
+ };
11045
+ var es_terminaltabclose2 = () => {
11046
+ return `Cerrar pestaña`;
11047
+ };
11048
+ /**
11049
+ * | output |
11050
+ * | --- |
11051
+ * | "Close tab" |
11052
+ *
11053
+ * @param {Terminaltabclose2Inputs} inputs
11054
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
11055
+ * @returns {LocalizedString}
11056
+ */
11057
+ var terminaltabclose2 = ((inputs = {}, options = {}) => {
11058
+ const locale = options.locale ?? getLocale();
11059
+ if (locale === "zh") return zh_terminaltabclose2();
11060
+ if (locale === "id") return id_terminaltabclose2();
11061
+ if (locale === "es") return es_terminaltabclose2();
11062
+ return en_terminaltabclose2();
11063
+ });
11064
+ //#endregion
11001
11065
  //#region src/lib/paraglide/messages/text.js
11002
11066
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
11003
11067
  /** @typedef {{}} TextInputs */
@@ -12559,10 +12623,12 @@ var _index_exports = /* @__PURE__ */ __exportAll({
12559
12623
  terminalDisabled: () => terminaldisabled1,
12560
12624
  terminalOpening: () => terminalopening1,
12561
12625
  terminalPanelTitle: () => terminalpaneltitle2,
12626
+ terminalSessionCap: () => terminalsessioncap2,
12562
12627
  terminalSettleInferredIdle: () => terminalsettleinferredidle3,
12563
12628
  terminalSettleSessionExit: () => terminalsettlesessionexit3,
12564
12629
  terminalSettleStdinRead: () => terminalsettlestdinread3,
12565
12630
  terminalSettleTimeout: () => terminalsettletimeout2,
12631
+ terminalTabClose: () => terminaltabclose2,
12566
12632
  text: () => text,
12567
12633
  thinkLabel: () => thinklabel1,
12568
12634
  thinkingLabel: () => thinkinglabel1,
@@ -12950,10 +13016,12 @@ var messages_exports = /* @__PURE__ */ __exportAll({
12950
13016
  terminalDisabled: () => terminaldisabled1,
12951
13017
  terminalOpening: () => terminalopening1,
12952
13018
  terminalPanelTitle: () => terminalpaneltitle2,
13019
+ terminalSessionCap: () => terminalsessioncap2,
12953
13020
  terminalSettleInferredIdle: () => terminalsettleinferredidle3,
12954
13021
  terminalSettleSessionExit: () => terminalsettlesessionexit3,
12955
13022
  terminalSettleStdinRead: () => terminalsettlestdinread3,
12956
13023
  terminalSettleTimeout: () => terminalsettletimeout2,
13024
+ terminalTabClose: () => terminaltabclose2,
12957
13025
  text: () => text,
12958
13026
  thinkLabel: () => thinklabel1,
12959
13027
  thinkingLabel: () => thinkinglabel1,
@@ -14809,7 +14877,7 @@ function links(text) {
14809
14877
  });
14810
14878
  }
14811
14879
  //#endregion
14812
- //#region src/lib/components/chat/StripTip.svelte
14880
+ //#region src/lib/components/chat/suggest-strip/StripTip.svelte
14813
14881
  function StripTip($$renderer, $$props) {
14814
14882
  $$renderer.component(($$renderer) => {
14815
14883
  /**
@@ -14832,7 +14900,7 @@ function StripTip($$renderer, $$props) {
14832
14900
  });
14833
14901
  }
14834
14902
  //#endregion
14835
- //#region src/lib/components/chat/StripChip.svelte
14903
+ //#region src/lib/components/chat/suggest-strip/StripChip.svelte
14836
14904
  function StripChip($$renderer, $$props) {
14837
14905
  $$renderer.component(($$renderer) => {
14838
14906
  /**
@@ -14863,13 +14931,13 @@ function StripChip($$renderer, $$props) {
14863
14931
  let editLabel = row.label ?? "";
14864
14932
  let editUses = String(row.use_count);
14865
14933
  let editText = row.text;
14866
- $$renderer.push(`<div data-svelte="StripChip"${attr_class("strip-chip svelte-1ylllv7", void 0, { "active": active })}><button type="button" class="strip-pick svelte-1ylllv7" role="option"${attr("aria-selected", active)}${attr("title", row.text)}><span class="strip-label svelte-1ylllv7" role="presentation"><!--[-->`);
14934
+ $$renderer.push(`<div data-svelte="StripChip"${attr_class("strip-chip svelte-exwam9", void 0, { "active": active })}><button type="button" class="strip-pick svelte-exwam9" role="option"${attr("aria-selected", active)}${attr("title", row.text)}><span class="strip-label svelte-exwam9" role="presentation"><!--[-->`);
14867
14935
  const each_array = ensure_array_like(segments());
14868
14936
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
14869
14937
  let seg = each_array[$$index];
14870
14938
  if (seg.hit) {
14871
14939
  $$renderer.push("<!--[0-->");
14872
- $$renderer.push(`<span class="hl svelte-1ylllv7">${escape_html(seg.text)}</span>`);
14940
+ $$renderer.push(`<span class="hl svelte-exwam9">${escape_html(seg.text)}</span>`);
14873
14941
  } else {
14874
14942
  $$renderer.push("<!--[-1-->");
14875
14943
  $$renderer.push(`${escape_html(seg.text)}`);
@@ -14879,17 +14947,17 @@ function StripChip($$renderer, $$props) {
14879
14947
  $$renderer.push(`<!--]--></span> `);
14880
14948
  if (row.text.includes("\n")) {
14881
14949
  $$renderer.push("<!--[0-->");
14882
- $$renderer.push(`<span class="strip-ml svelte-1ylllv7">⏎</span>`);
14950
+ $$renderer.push(`<span class="strip-ml svelte-exwam9">⏎</span>`);
14883
14951
  } else $$renderer.push("<!--[-1-->");
14884
- $$renderer.push(`<!--]--> <span class="strip-count svelte-1ylllv7">×${escape_html(row.use_count)}</span></button> `);
14952
+ $$renderer.push(`<!--]--> <span class="strip-count svelte-exwam9">×${escape_html(row.use_count)}</span></button> `);
14885
14953
  if (mode === "run" && onstep !== void 0) {
14886
14954
  $$renderer.push("<!--[0-->");
14887
- $$renderer.push(`<div class="strip-step svelte-1ylllv7"><button type="button" class="strip-step-btn svelte-1ylllv7"${attr("aria-label", t(stepthismacro2))}${attr("title", t(stepheldtitle2))}>⏯</button></div>`);
14955
+ $$renderer.push(`<div class="strip-step svelte-exwam9"><button type="button" class="strip-step-btn svelte-exwam9"${attr("aria-label", t(stepthismacro2))}${attr("title", t(stepheldtitle2))}>⏯</button></div>`);
14888
14956
  } else $$renderer.push("<!--[-1-->");
14889
14957
  $$renderer.push(`<!--]--> `);
14890
14958
  if (hasMenu()) {
14891
14959
  $$renderer.push("<!--[0-->");
14892
- $$renderer.push(`<div class="strip-menu svelte-1ylllv7"><button type="button" class="strip-menu-btn svelte-1ylllv7"${attr("aria-label", t(promptoptions1))}>⋯</button></div>`);
14960
+ $$renderer.push(`<div class="strip-menu svelte-exwam9"><button type="button" class="strip-menu-btn svelte-exwam9"${attr("aria-label", t(promptoptions1))}>⋯</button></div>`);
14893
14961
  } else $$renderer.push("<!--[-1-->");
14894
14962
  $$renderer.push(`<!--]--> `);
14895
14963
  StripTip($$renderer, {
@@ -14900,16 +14968,16 @@ function StripChip($$renderer, $$props) {
14900
14968
  $$renderer.push(`<!----> `);
14901
14969
  if (menuOpen && onrename !== void 0 && ondelete !== void 0) {
14902
14970
  $$renderer.push("<!--[0-->");
14903
- $$renderer.push(`<div class="strip-menu-pop svelte-1ylllv7" role="menu" tabindex="-1"${attr_style("")}><div class="strip-menu-form svelte-1ylllv7"><label class="strip-menu-field svelte-1ylllv7"><span>${escape_html(t(uses))}</span> <input type="number" class="strip-menu-input strip-menu-uses svelte-1ylllv7"${attr("value", editUses)} min="1"${attr("aria-label", t(uses))}/></label> <label class="strip-menu-field svelte-1ylllv7"><span>${escape_html(t(label))}</span> <input type="text" class="strip-menu-input svelte-1ylllv7"${attr("value", editLabel)}${attr("placeholder", t(label))} maxlength="60"${attr("aria-label", t(promptlabelaria2))}/></label> <label class="strip-menu-field svelte-1ylllv7"><span>${escape_html(t(text))}</span> <textarea class="strip-menu-text svelte-1ylllv7"${attr("aria-label", t(prompttextaria2))}>`);
14971
+ $$renderer.push(`<div class="strip-menu-pop svelte-exwam9" role="menu" tabindex="-1"${attr_style("")}><div class="strip-menu-form svelte-exwam9"><label class="strip-menu-field svelte-exwam9"><span>${escape_html(t(uses))}</span> <input type="number" class="strip-menu-input strip-menu-uses svelte-exwam9"${attr("value", editUses)} min="1"${attr("aria-label", t(uses))}/></label> <label class="strip-menu-field svelte-exwam9"><span>${escape_html(t(label))}</span> <input type="text" class="strip-menu-input svelte-exwam9"${attr("value", editLabel)}${attr("placeholder", t(label))} maxlength="60"${attr("aria-label", t(promptlabelaria2))}/></label> <label class="strip-menu-field svelte-exwam9"><span>${escape_html(t(text))}</span> <textarea class="strip-menu-text svelte-exwam9"${attr("aria-label", t(prompttextaria2))}>`);
14904
14972
  const $$body = escape_html(editText);
14905
14973
  if ($$body) $$renderer.push(`${$$body}`);
14906
- $$renderer.push(`</textarea></label></div> <div class="strip-menu-actions svelte-1ylllv7"><button type="button" class="strip-menu-save svelte-1ylllv7">${escape_html(t(save))}</button> <button type="button" class="strip-menu-delete svelte-1ylllv7">${escape_html(t(_delete))}</button></div></div>`);
14974
+ $$renderer.push(`</textarea></label></div> <div class="strip-menu-actions svelte-exwam9"><button type="button" class="strip-menu-save svelte-exwam9">${escape_html(t(save))}</button> <button type="button" class="strip-menu-delete svelte-exwam9">${escape_html(t(_delete))}</button></div></div>`);
14907
14975
  } else $$renderer.push("<!--[-1-->");
14908
14976
  $$renderer.push(`<!--]--></div>`);
14909
14977
  });
14910
14978
  }
14911
14979
  //#endregion
14912
- //#region src/lib/components/chat/SuggestLine.svelte
14980
+ //#region src/lib/components/chat/suggest-strip/SuggestLine.svelte
14913
14981
  function SuggestLine($$renderer, $$props) {
14914
14982
  $$renderer.component(($$renderer) => {
14915
14983
  /**
@@ -14921,13 +14989,13 @@ function SuggestLine($$renderer, $$props) {
14921
14989
  let { onmanage } = $$props;
14922
14990
  if (onmanage) {
14923
14991
  $$renderer.push("<!--[0-->");
14924
- $$renderer.push(`<button data-svelte="SuggestLine" type="button" class="strip-manage svelte-rgc8xj">${escape_html(t(manageprompts1))}</button>`);
14992
+ $$renderer.push(`<button data-svelte="SuggestLine" type="button" class="strip-manage svelte-pzs55x">${escape_html(t(manageprompts1))}</button>`);
14925
14993
  } else $$renderer.push("<!--[-1-->");
14926
14994
  $$renderer.push(`<!--]-->`);
14927
14995
  });
14928
14996
  }
14929
14997
  //#endregion
14930
- //#region src/lib/components/chat/StripTagChips.svelte
14998
+ //#region src/lib/components/chat/suggest-strip/StripTagChips.svelte
14931
14999
  function StripTagChips($$renderer, $$props) {
14932
15000
  $$renderer.component(($$renderer) => {
14933
15001
  /**
@@ -14940,11 +15008,11 @@ function StripTagChips($$renderer, $$props) {
14940
15008
  let { recTags, checked} = $$props;
14941
15009
  if (recTags.length > 0) {
14942
15010
  $$renderer.push("<!--[0-->");
14943
- $$renderer.push(`<div data-svelte="StripTagChips" class="strip-tag-chips svelte-1dki9fw" role="group"${attr("aria-label", t(filterbytags2))}><!--[-->`);
15011
+ $$renderer.push(`<div data-svelte="StripTagChips" class="strip-tag-chips svelte-1kzzzu2" role="group"${attr("aria-label", t(filterbytags2))}><!--[-->`);
14944
15012
  const each_array = ensure_array_like(recTags);
14945
15013
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
14946
15014
  let word = each_array[$$index];
14947
- $$renderer.push(`<label${attr_class("strip-tag-chip svelte-1dki9fw", void 0, { "on": checked.includes(word) })}><input type="checkbox"${attr("checked", checked.includes(word), true)} class="svelte-1dki9fw"/> ${escape_html(word)}</label>`);
15015
+ $$renderer.push(`<label${attr_class("strip-tag-chip svelte-1kzzzu2", void 0, { "on": checked.includes(word) })}><input type="checkbox"${attr("checked", checked.includes(word), true)} class="svelte-1kzzzu2"/> ${escape_html(word)}</label>`);
14948
15016
  }
14949
15017
  $$renderer.push(`<!--]--></div>`);
14950
15018
  } else $$renderer.push("<!--[-1-->");
@@ -14959,7 +15027,7 @@ function saveTagFilter(base, words, profile) {
14959
15027
  } catch {}
14960
15028
  }
14961
15029
  //#endregion
14962
- //#region src/lib/components/chat/SuggestStrip.svelte
15030
+ //#region src/lib/components/chat/suggest-strip/SuggestStrip.svelte
14963
15031
  function SuggestStrip($$renderer, $$props) {
14964
15032
  $$renderer.component(($$renderer) => {
14965
15033
  /**
@@ -15018,7 +15086,7 @@ function SuggestStrip($$renderer, $$props) {
15018
15086
  });
15019
15087
  if (rows.length > 0) {
15020
15088
  $$renderer.push("<!--[0-->");
15021
- $$renderer.push(`<div data-svelte="SuggestStrip" class="suggest-strip svelte-17pdojr" role="listbox"${attr("aria-label", t(promptsuggestions1))} data-testid="suggest-strip"><!--[-->`);
15089
+ $$renderer.push(`<div data-svelte="SuggestStrip" class="suggest-strip svelte-172t8ad" role="listbox"${attr("aria-label", t(promptsuggestions1))} data-testid="suggest-strip"><!--[-->`);
15022
15090
  const each_array = ensure_array_like(visibleItems());
15023
15091
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
15024
15092
  let { row, index } = each_array[$$index];
@@ -16147,7 +16215,7 @@ function bytesToBase64(data) {
16147
16215
  return btoa(binary);
16148
16216
  }
16149
16217
  //#endregion
16150
- //#region src/lib/components/chat/ConversationError.svelte
16218
+ //#region src/lib/components/conversation/ConversationError.svelte
16151
16219
  function ConversationError($$renderer, $$props) {
16152
16220
  $$renderer.component(($$renderer) => {
16153
16221
  /**
@@ -16637,7 +16705,7 @@ function AttachmentChips($$renderer, $$props) {
16637
16705
  });
16638
16706
  }
16639
16707
  //#endregion
16640
- //#region src/lib/components/chat/CommandHelpCard.svelte
16708
+ //#region src/lib/components/card/CommandHelpCard.svelte
16641
16709
  function CommandHelpCard($$renderer, $$props) {
16642
16710
  $$renderer.component(($$renderer) => {
16643
16711
  /**
@@ -16659,34 +16727,34 @@ function CommandHelpCard($$renderer, $$props) {
16659
16727
  * `?`/`!`, the help intent on a leading `/` or an `@token ?` tail).
16660
16728
  */
16661
16729
  let { view } = $$props;
16662
- $$renderer.push(`<div data-svelte="CommandHelpCard" class="command-help svelte-1tbbgiz" role="note"${attr("aria-label", t(commandhelp1))} data-testid="command-help"><div class="help-usage svelte-1tbbgiz"><code class="svelte-1tbbgiz">${escape_html(view.usage)}</code> <span class="help-tag svelte-1tbbgiz">${escape_html(view.tag)}</span></div> <p class="help-summary svelte-1tbbgiz">${escape_html(view.summary)}</p> `);
16730
+ $$renderer.push(`<div data-svelte="CommandHelpCard" class="command-help svelte-y0c21v" role="note"${attr("aria-label", t(commandhelp1))} data-testid="command-help"><div class="help-usage svelte-y0c21v"><code class="svelte-y0c21v">${escape_html(view.usage)}</code> <span class="help-tag svelte-y0c21v">${escape_html(view.tag)}</span></div> <p class="help-summary svelte-y0c21v">${escape_html(view.summary)}</p> `);
16663
16731
  if (view.params.length > 0) {
16664
16732
  $$renderer.push("<!--[0-->");
16665
- $$renderer.push(`<dl class="help-params svelte-1tbbgiz"><!--[-->`);
16733
+ $$renderer.push(`<dl class="help-params svelte-y0c21v"><!--[-->`);
16666
16734
  const each_array = ensure_array_like(view.params);
16667
16735
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
16668
16736
  let p = each_array[$$index];
16669
- $$renderer.push(`<dt class="svelte-1tbbgiz"><code class="svelte-1tbbgiz">${escape_html(p.name)}</code></dt> <dd class="svelte-1tbbgiz">${escape_html(p.description)}</dd>`);
16737
+ $$renderer.push(`<dt class="svelte-y0c21v"><code class="svelte-y0c21v">${escape_html(p.name)}</code></dt> <dd class="svelte-y0c21v">${escape_html(p.description)}</dd>`);
16670
16738
  }
16671
16739
  $$renderer.push(`<!--]--></dl>`);
16672
16740
  } else $$renderer.push("<!--[-1-->");
16673
16741
  $$renderer.push(`<!--]--> `);
16674
16742
  if (view.examples.length > 0) {
16675
16743
  $$renderer.push("<!--[0-->");
16676
- $$renderer.push(`<ul class="help-examples svelte-1tbbgiz"><!--[-->`);
16744
+ $$renderer.push(`<ul class="help-examples svelte-y0c21v"><!--[-->`);
16677
16745
  const each_array_1 = ensure_array_like(view.examples);
16678
16746
  for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
16679
16747
  let ex = each_array_1[$$index_1];
16680
- $$renderer.push(`<li class="svelte-1tbbgiz"><code class="svelte-1tbbgiz">${escape_html(ex.line)}</code><span>${escape_html(ex.description)}</span></li>`);
16748
+ $$renderer.push(`<li class="svelte-y0c21v"><code class="svelte-y0c21v">${escape_html(ex.line)}</code><span>${escape_html(ex.description)}</span></li>`);
16681
16749
  }
16682
16750
  $$renderer.push(`<!--]--></ul>`);
16683
16751
  } else $$renderer.push("<!--[-1-->");
16684
16752
  $$renderer.push(`<!--]--> `);
16685
16753
  if (view.note !== void 0) {
16686
16754
  $$renderer.push("<!--[0-->");
16687
- $$renderer.push(`<p class="help-note svelte-1tbbgiz">${escape_html(view.note)}</p>`);
16755
+ $$renderer.push(`<p class="help-note svelte-y0c21v">${escape_html(view.note)}</p>`);
16688
16756
  } else $$renderer.push("<!--[-1-->");
16689
- $$renderer.push(`<!--]--> <p class="help-hint svelte-1tbbgiz">${escape_html(t(eschidesa2))} <code>?</code> ${escape_html(t(eschidesb2))}</p></div>`);
16757
+ $$renderer.push(`<!--]--> <p class="help-hint svelte-y0c21v">${escape_html(t(eschidesa2))} <code>?</code> ${escape_html(t(eschidesb2))}</p></div>`);
16690
16758
  });
16691
16759
  }
16692
16760
  //#endregion
@@ -17953,13 +18021,21 @@ function parseCommand(text) {
17953
18021
  args
17954
18022
  };
17955
18023
  }
17956
- case "/dsi-prompts":
17957
18024
  case "/dsi-terminal":
18025
+ if (args === "" || args === "--new-tab" || args === "--split-down") return {
18026
+ type: "terminal",
18027
+ args: "",
18028
+ ...args !== "" ? { terminalAction: args.slice(2) } : {}
18029
+ };
18030
+ return {
18031
+ type: "terminal",
18032
+ args
18033
+ };
18034
+ case "/dsi-prompts":
17958
18035
  case "/dsi-settings":
17959
18036
  case "/dsh-settings": return {
17960
18037
  type: {
17961
18038
  "/dsi-prompts": "promptmanager",
17962
- "/dsi-terminal": "terminal",
17963
18039
  "/dsi-settings": "dsisettings",
17964
18040
  "/dsh-settings": "dshsettings"
17965
18041
  }[token],
@@ -18093,13 +18169,23 @@ var COMMAND_HELP = {
18093
18169
  ]
18094
18170
  },
18095
18171
  terminal: {
18096
- usage: "/dsi-terminal",
18097
- summary: "Aims the operator terminal panel: the open terminal takes the focus; otherwise a NEW panel opens to the right of this conversation. Renders the disabled note unless terminal.enabled is set in settings.",
18172
+ usage: "/dsi-terminal [--new-tab | --split-down]",
18173
+ summary: "Aims the operator terminal desk: the open desk takes the focus; otherwise a NEW panel opens to the right of this conversation. --new-tab appends a tab; --split-down stacks another shell under the selected one; the two flags cannot combine. Renders the disabled note unless terminal.enabled is set in settings.",
18098
18174
  params: [],
18099
- examples: [{
18100
- line: "/dsi-terminal",
18101
- description: "The terminal panel comes forward — beside this conversation if it was closed."
18102
- }]
18175
+ examples: [
18176
+ {
18177
+ line: "/dsi-terminal",
18178
+ description: "The terminal desk comes forward — beside this conversation if it was closed."
18179
+ },
18180
+ {
18181
+ line: "/dsi-terminal --new-tab",
18182
+ description: "A new desk tab, selected; the previous tab keeps running, hidden."
18183
+ },
18184
+ {
18185
+ line: "/dsi-terminal --split-down",
18186
+ description: "Another shell stacked under the selected one, in the same tab."
18187
+ }
18188
+ ]
18103
18189
  },
18104
18190
  promptmanager: {
18105
18191
  usage: "/dsi-prompts",
@@ -19142,7 +19228,7 @@ function PromptInput($$renderer, $$props) {
19142
19228
  });
19143
19229
  }
19144
19230
  //#endregion
19145
- //#region src/lib/components/chat/ConversationFooter.svelte
19231
+ //#region src/lib/components/conversation/ConversationFooter.svelte
19146
19232
  function ConversationFooter($$renderer, $$props) {
19147
19233
  $$renderer.component(($$renderer) => {
19148
19234
  /**
@@ -19185,7 +19271,7 @@ function ConversationFooter($$renderer, $$props) {
19185
19271
  });
19186
19272
  }
19187
19273
  //#endregion
19188
- //#region src/lib/components/chat/DisplayWorkspace.svelte
19274
+ //#region src/lib/components/conversation/DisplayWorkspace.svelte
19189
19275
  function DisplayWorkspace($$renderer, $$props) {
19190
19276
  $$renderer.component(($$renderer) => {
19191
19277
  /**
@@ -19216,7 +19302,7 @@ function DisplayWorkspace($$renderer, $$props) {
19216
19302
  });
19217
19303
  }
19218
19304
  //#endregion
19219
- //#region src/lib/components/chat/EditingTitle.svelte
19305
+ //#region src/lib/components/conversation/EditingTitle.svelte
19220
19306
  function EditingTitle($$renderer, $$props) {
19221
19307
  $$renderer.component(($$renderer) => {
19222
19308
  /**
@@ -19254,7 +19340,7 @@ function EditingTitle($$renderer, $$props) {
19254
19340
  });
19255
19341
  }
19256
19342
  //#endregion
19257
- //#region src/lib/components/chat/SessionAccess.svelte
19343
+ //#region src/lib/components/conversation/SessionAccess.svelte
19258
19344
  function SessionAccess($$renderer, $$props) {
19259
19345
  /**
19260
19346
  * SessionAccess (2026-08-26) — the header’s access badge, extracted
@@ -19305,7 +19391,7 @@ function SessionAccess($$renderer, $$props) {
19305
19391
  $$renderer.push(`<!--]-->`);
19306
19392
  }
19307
19393
  //#endregion
19308
- //#region src/lib/components/chat/SessionIdAndName.svelte
19394
+ //#region src/lib/components/conversation/SessionIdAndName.svelte
19309
19395
  function SessionIdAndName($$renderer, $$props) {
19310
19396
  $$renderer.component(($$renderer) => {
19311
19397
  /**
@@ -19356,7 +19442,7 @@ function SessionIdAndName($$renderer, $$props) {
19356
19442
  });
19357
19443
  }
19358
19444
  //#endregion
19359
- //#region src/lib/components/chat/ForkButton.svelte
19445
+ //#region src/lib/components/conversation/ForkButton.svelte
19360
19446
  function ForkButton($$renderer, $$props) {
19361
19447
  $$renderer.component(($$renderer) => {
19362
19448
  /**
@@ -19407,7 +19493,7 @@ function ForkButton($$renderer, $$props) {
19407
19493
  });
19408
19494
  }
19409
19495
  //#endregion
19410
- //#region src/lib/components/chat/OpenParentButton.svelte
19496
+ //#region src/lib/components/conversation/OpenParentButton.svelte
19411
19497
  function OpenParentButton($$renderer, $$props) {
19412
19498
  $$renderer.component(($$renderer) => {
19413
19499
  /**
@@ -19451,7 +19537,7 @@ function OpenParentButton($$renderer, $$props) {
19451
19537
  });
19452
19538
  }
19453
19539
  //#endregion
19454
- //#region src/lib/components/chat/PlanModeChip.svelte
19540
+ //#region src/lib/components/conversation/PlanModeChip.svelte
19455
19541
  function PlanModeChip($$renderer, $$props) {
19456
19542
  $$renderer.component(($$renderer) => {
19457
19543
  /**
@@ -19481,7 +19567,7 @@ function PlanModeChip($$renderer, $$props) {
19481
19567
  });
19482
19568
  }
19483
19569
  //#endregion
19484
- //#region src/lib/components/chat/ToolsAndStatusHeader.svelte
19570
+ //#region src/lib/components/conversation/ToolsAndStatusHeader.svelte
19485
19571
  function ToolsAndStatusHeader($$renderer, $$props) {
19486
19572
  $$renderer.component(($$renderer) => {
19487
19573
  /**
@@ -19508,7 +19594,7 @@ function ToolsAndStatusHeader($$renderer, $$props) {
19508
19594
  $$renderer.push(`<!----> `);
19509
19595
  if (agent) {
19510
19596
  $$renderer.push("<!--[0-->");
19511
- $$renderer.push(`<span class="agent-chip svelte-mhnbss" data-testid="agent-chip"${attr("title", agentId ? `agent preset — ${agentId}` : void 0)}>`);
19597
+ $$renderer.push(`<span class="agent-chip svelte-1uiman" data-testid="agent-chip"${attr("title", agentId ? `agent preset — ${agentId}` : void 0)}>`);
19512
19598
  if (agentId) {
19513
19599
  $$renderer.push("<!--[0-->");
19514
19600
  $$renderer.push(`<button type="button" class="shrink-0" data-testid="agent-chip-copy-id"${attr("aria-label", t(copyagentpresetid3))}${attr("title", agentId)}>`);
@@ -19544,7 +19630,7 @@ function ToolsAndStatusHeader($$renderer, $$props) {
19544
19630
  });
19545
19631
  }
19546
19632
  //#endregion
19547
- //#region src/lib/components/chat/ConversationHeader.svelte
19633
+ //#region src/lib/components/conversation/ConversationHeader.svelte
19548
19634
  function ConversationHeader($$renderer, $$props) {
19549
19635
  /**
19550
19636
  * ConversationHeader — the conversation page's top bar (extracted
@@ -19817,7 +19903,7 @@ function ForkHereButton($$renderer, $$props) {
19817
19903
  });
19818
19904
  }
19819
19905
  //#endregion
19820
- //#region src/lib/components/message/ToolsMessage.svelte
19906
+ //#region src/lib/components/message/common/ToolsMessage.svelte
19821
19907
  function ToolsMessage($$renderer, $$props) {
19822
19908
  $$renderer.component(($$renderer) => {
19823
19909
  let { text, container, showSave = true, showRaw = false, fork = null } = $$props;
@@ -19887,7 +19973,7 @@ function ToolsMessage($$renderer, $$props) {
19887
19973
  });
19888
19974
  }
19889
19975
  //#endregion
19890
- //#region src/lib/components/message/RelativeTime.svelte
19976
+ //#region src/lib/components/message/common/RelativeTime.svelte
19891
19977
  function RelativeTime($$renderer, $$props) {
19892
19978
  $$renderer.component(($$renderer) => {
19893
19979
  let { time, role, prefix = void 0, class: className = "" } = $$props;
@@ -19898,7 +19984,7 @@ function RelativeTime($$renderer, $$props) {
19898
19984
  });
19899
19985
  }
19900
19986
  //#endregion
19901
- //#region src/lib/components/message/MessageBubble.svelte
19987
+ //#region src/lib/components/message/prompt/MessageBubble.svelte
19902
19988
  function MessageBubble($$renderer, $$props) {
19903
19989
  /**
19904
19990
  * MessageBubble — the chat bubble shell one message sits in
@@ -19979,7 +20065,7 @@ function MessageBubble($$renderer, $$props) {
19979
20065
  $$renderer.subsume($$inner_renderer);
19980
20066
  }
19981
20067
  //#endregion
19982
- //#region src/lib/components/message/MessageImages.svelte
20068
+ //#region src/lib/components/message/prompt/MessageImages.svelte
19983
20069
  function MessageImages($$renderer, $$props) {
19984
20070
  $$renderer.component(($$renderer) => {
19985
20071
  /**
@@ -20021,7 +20107,7 @@ function MessageImages($$renderer, $$props) {
20021
20107
  });
20022
20108
  }
20023
20109
  //#endregion
20024
- //#region src/lib/components/message/PromptBubble.svelte
20110
+ //#region src/lib/components/message/prompt/PromptBubble.svelte
20025
20111
  function PromptBubble($$renderer, $$props) {
20026
20112
  $$renderer.component(($$renderer) => {
20027
20113
  /**
@@ -20260,7 +20346,7 @@ function ContextSnapshotBody($$renderer, $$props) {
20260
20346
  });
20261
20347
  }
20262
20348
  //#endregion
20263
- //#region src/lib/components/message/SystemPromptChip.svelte
20349
+ //#region src/lib/components/message/chips/SystemPromptChip.svelte
20264
20350
  function SystemPromptChip($$renderer, $$props) {
20265
20351
  $$renderer.component(($$renderer) => {
20266
20352
  /**
@@ -20303,7 +20389,7 @@ function SystemPromptChip($$renderer, $$props) {
20303
20389
  });
20304
20390
  }
20305
20391
  //#endregion
20306
- //#region src/lib/components/message/ChipPopup.svelte
20392
+ //#region src/lib/components/message/assistant/ChipPopup.svelte
20307
20393
  function ChipPopup($$renderer, $$props) {
20308
20394
  $$renderer.component(($$renderer) => {
20309
20395
  /**
@@ -20326,7 +20412,7 @@ function ChipPopup($$renderer, $$props) {
20326
20412
  });
20327
20413
  }
20328
20414
  //#endregion
20329
- //#region src/lib/components/message/TurnUsagePanel.svelte
20415
+ //#region src/lib/components/message/assistant/TurnUsagePanel.svelte
20330
20416
  function TurnUsagePanel($$renderer, $$props) {
20331
20417
  $$renderer.component(($$renderer) => {
20332
20418
  let { usage: usage$1, class: className = "" } = $$props;
@@ -20339,7 +20425,7 @@ function TurnUsagePanel($$renderer, $$props) {
20339
20425
  });
20340
20426
  }
20341
20427
  //#endregion
20342
- //#region src/lib/components/message/AssistantTurn.svelte
20428
+ //#region src/lib/components/message/assistant/AssistantTurn.svelte
20343
20429
  function AssistantTurn($$renderer, $$props) {
20344
20430
  $$renderer.component(($$renderer) => {
20345
20431
  /**
@@ -20499,7 +20585,7 @@ function ReasoningSection($$renderer, $$props) {
20499
20585
  });
20500
20586
  }
20501
20587
  //#endregion
20502
- //#region src/lib/components/message/ToolCallChip.svelte
20588
+ //#region src/lib/components/message/chips/ToolCallChip.svelte
20503
20589
  function ToolCallChip($$renderer, $$props) {
20504
20590
  $$renderer.component(($$renderer) => {
20505
20591
  /**
@@ -20528,7 +20614,7 @@ function ToolCallChip($$renderer, $$props) {
20528
20614
  if (kind === "result") return ok === false ? "bg-red-500" : "bg-emerald-500";
20529
20615
  return "bg-slate-400";
20530
20616
  });
20531
- $$renderer.push(`<div data-svelte="ToolCallChip" class="self-start text-xs" data-testid="tool-chip"${attr("data-kind", kind)}${attr("data-status", status)}><button type="button"${attr("aria-expanded", open)} data-testid="tool-chip-toggle"${attr_class(`chip-button inline-flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-mono font-medium mx-0.5 my-0.5 align-middle shrink-0 transition-colors select-none cursor-pointer ${kind === "result" && ok === false ? "bg-red-50 text-red-700 border border-red-200" : kind === "result" ? "bg-emerald-50 text-emerald-700 border border-emerald-200" : status === "fail" ? "bg-red-50 text-red-700 border border-red-200" : open ? "bg-accent-purple/20 text-accent-purple border border-accent-purple/30" : "bg-surface-alt text-text-secondary border border-surface-border hover:bg-surface-hover hover:text-text-primary"}`, "svelte-1p1wfzw")}>`);
20617
+ $$renderer.push(`<div data-svelte="ToolCallChip" class="self-start text-xs" data-testid="tool-chip"${attr("data-kind", kind)}${attr("data-status", status)}><button type="button"${attr("aria-expanded", open)} data-testid="tool-chip-toggle"${attr_class(`chip-button inline-flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-mono font-medium mx-0.5 my-0.5 align-middle shrink-0 transition-colors select-none cursor-pointer ${kind === "result" && ok === false ? "bg-red-50 text-red-700 border border-red-200" : kind === "result" ? "bg-emerald-50 text-emerald-700 border border-emerald-200" : status === "fail" ? "bg-red-50 text-red-700 border border-red-200" : open ? "bg-accent-purple/20 text-accent-purple border border-accent-purple/30" : "bg-surface-alt text-text-secondary border border-surface-border hover:bg-surface-hover hover:text-text-primary"}`, "svelte-12asc4k")}>`);
20532
20618
  if (open) {
20533
20619
  $$renderer.push("<!--[0-->");
20534
20620
  Chevron_down($$renderer, { size: 10 });
@@ -20536,7 +20622,7 @@ function ToolCallChip($$renderer, $$props) {
20536
20622
  $$renderer.push("<!--[-1-->");
20537
20623
  Chevron_right($$renderer, { size: 10 });
20538
20624
  }
20539
- $$renderer.push(`<!--]--> <span class="text-[10px]">${escape_html(label())}</span> <span aria-hidden="true" data-testid="tool-chip-dot"${attr_class(`w-1.5 h-1.5 shrink-0 rounded-full ${stringify(dotClass())}`, "svelte-1p1wfzw")}></span></button></div>`);
20625
+ $$renderer.push(`<!--]--> <span class="text-[10px]">${escape_html(label())}</span> <span aria-hidden="true" data-testid="tool-chip-dot"${attr_class(`w-1.5 h-1.5 shrink-0 rounded-full ${stringify(dotClass())}`, "svelte-12asc4k")}></span></button></div>`);
20540
20626
  });
20541
20627
  }
20542
20628
  //#endregion
@@ -20585,7 +20671,7 @@ function escapeText(text) {
20585
20671
  return text.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
20586
20672
  }
20587
20673
  //#endregion
20588
- //#region src/lib/components/message/FileContentViewer.svelte
20674
+ //#region src/lib/components/common/viewers/FileContentViewer.svelte
20589
20675
  function FileContentViewer($$renderer, $$props) {
20590
20676
  $$renderer.component(($$renderer) => {
20591
20677
  /**
@@ -20697,7 +20783,7 @@ function ToolCallDetail($$renderer, $$props) {
20697
20783
  });
20698
20784
  }
20699
20785
  //#endregion
20700
- //#region src/lib/components/message/TurnErrorChip.svelte
20786
+ //#region src/lib/components/message/chips/TurnErrorChip.svelte
20701
20787
  function TurnErrorChip($$renderer, $$props) {
20702
20788
  $$renderer.component(($$renderer) => {
20703
20789
  /**
@@ -20710,7 +20796,7 @@ function TurnErrorChip($$renderer, $$props) {
20710
20796
  */
20711
20797
  /** Popup split: expanded state is OWNED BY THE PAGE (OCI pattern). */
20712
20798
  let { code, open = false} = $$props;
20713
- $$renderer.push(`<div data-svelte="TurnErrorChip" class="self-start text-xs" data-testid="turn-error-chip"><button type="button"${attr("aria-expanded", open)} data-testid="turn-error-toggle" class="chip-button inline-flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-mono font-medium mx-0.5 my-0.5 align-middle shrink-0 transition-colors select-none cursor-pointer bg-red-50 text-red-700 border border-red-200 hover:bg-red-100 svelte-1gttfnp">`);
20799
+ $$renderer.push(`<div data-svelte="TurnErrorChip" class="self-start text-xs" data-testid="turn-error-chip"><button type="button"${attr("aria-expanded", open)} data-testid="turn-error-toggle" class="chip-button inline-flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-mono font-medium mx-0.5 my-0.5 align-middle shrink-0 transition-colors select-none cursor-pointer bg-red-50 text-red-700 border border-red-200 hover:bg-red-100 svelte-1yepfwx">`);
20714
20800
  if (open) {
20715
20801
  $$renderer.push("<!--[0-->");
20716
20802
  Chevron_down($$renderer, { size: 10 });
@@ -20722,7 +20808,7 @@ function TurnErrorChip($$renderer, $$props) {
20722
20808
  });
20723
20809
  }
20724
20810
  //#endregion
20725
- //#region src/lib/components/message/WorkflowRunCard.svelte
20811
+ //#region src/lib/components/message/cards/WorkflowRunCard.svelte
20726
20812
  function WorkflowRunCard($$renderer, $$props) {
20727
20813
  $$renderer.component(($$renderer) => {
20728
20814
  /**
@@ -20879,7 +20965,7 @@ function planReviewOf(questions) {
20879
20965
  };
20880
20966
  }
20881
20967
  //#endregion
20882
- //#region src/lib/components/answerer/QuestionCard.svelte
20968
+ //#region src/lib/components/card/QuestionCard.svelte
20883
20969
  function QuestionCard($$renderer, $$props) {
20884
20970
  $$renderer.component(($$renderer) => {
20885
20971
  /**
@@ -21196,7 +21282,7 @@ function goalVerb(toolName, action) {
21196
21282
  }
21197
21283
  }
21198
21284
  //#endregion
21199
- //#region src/lib/components/message/GoalCard.svelte
21285
+ //#region src/lib/components/message/cards/GoalCard.svelte
21200
21286
  function GoalCard($$renderer, $$props) {
21201
21287
  $$renderer.component(($$renderer) => {
21202
21288
  /**
@@ -21674,7 +21760,7 @@ function buildDispatchReadView(argsRaw, contentText) {
21674
21760
  };
21675
21761
  }
21676
21762
  //#endregion
21677
- //#region src/lib/components/message/CodeCard.svelte
21763
+ //#region src/lib/components/message/cards/CodeCard.svelte
21678
21764
  function CodeCard($$renderer, $$props) {
21679
21765
  $$renderer.component(($$renderer) => {
21680
21766
  /**
@@ -21911,7 +21997,7 @@ function todoListPreview(argsRaw) {
21911
21997
  return line.length > 120 ? line.slice(0, 119) + "…" : line;
21912
21998
  }
21913
21999
  //#endregion
21914
- //#region src/lib/components/message/TodoCard.svelte
22000
+ //#region src/lib/components/message/cards/TodoCard.svelte
21915
22001
  function TodoCard($$renderer, $$props) {
21916
22002
  $$renderer.component(($$renderer) => {
21917
22003
  /**
@@ -22127,7 +22213,7 @@ function createStickToBottom(options = {}) {
22127
22213
  };
22128
22214
  }
22129
22215
  //#endregion
22130
- //#region src/lib/components/message/InlineToolCalls.svelte
22216
+ //#region src/lib/components/message/assistant/InlineToolCalls.svelte
22131
22217
  function InlineToolCalls($$renderer, $$props) {
22132
22218
  $$renderer.component(($$renderer) => {
22133
22219
  /**
@@ -22505,7 +22591,7 @@ function InlineToolCalls($$renderer, $$props) {
22505
22591
  });
22506
22592
  }
22507
22593
  //#endregion
22508
- //#region src/lib/components/chat/TurnProcessDisclosure.svelte
22594
+ //#region src/lib/components/message/assistant/TurnProcessDisclosure.svelte
22509
22595
  function TurnProcessDisclosure($$renderer, $$props) {
22510
22596
  $$renderer.component(($$renderer) => {
22511
22597
  let { toolCallCount, messageCount, subagentCount, open} = $$props;
@@ -22526,7 +22612,7 @@ function TurnProcessDisclosure($$renderer, $$props) {
22526
22612
  });
22527
22613
  }
22528
22614
  //#endregion
22529
- //#region src/lib/components/answerer/ApprovalCard.svelte
22615
+ //#region src/lib/components/card/ApprovalCard.svelte
22530
22616
  function ApprovalCard($$renderer, $$props) {
22531
22617
  $$renderer.component(($$renderer) => {
22532
22618
  /**
@@ -22807,7 +22893,7 @@ function turnProcess(entries, opts) {
22807
22893
  };
22808
22894
  }
22809
22895
  //#endregion
22810
- //#region src/lib/components/chat/ConversationScrollArea.svelte
22896
+ //#region src/lib/components/conversation/ConversationScrollArea.svelte
22811
22897
  function ConversationScrollArea($$renderer, $$props) {
22812
22898
  $$renderer.component(($$renderer) => {
22813
22899
  /**
@@ -23530,7 +23616,7 @@ async function executeCommand(command, ctx, onNote) {
23530
23616
  if (command.type === "workspace") return runWorkspaceLine(command.wsPath, command.wsName, ctx, onNote);
23531
23617
  if (command.type === "mention") return runMention(command.sessionId ?? "", command.args, command.a2aId, ctx, onNote);
23532
23618
  if (command.type === "promptmanager") return runPromptManager(command.args, ctx, onNote);
23533
- if (command.type === "terminal") return runTerminal(command.args, ctx, onNote);
23619
+ if (command.type === "terminal") return runTerminal(command.args, command.terminalAction, ctx, onNote);
23534
23620
  if (command.type === "skillshelf") return runSkillShelf(command.args, command.reload === true, ctx, onNote);
23535
23621
  if (command.type === "dsisettings" || command.type === "dshsettings") return runSettingsEditor(command.type === "dsisettings" ? "dsi" : "dsh", command.type === "dsisettings" ? "/dsi-settings" : "/dsh-settings", command.args, ctx, onNote);
23536
23622
  if (command.type === "loadinjected") return runLoadInjected(command.filename, command.addPanel === true, ctx, onNote);
@@ -23655,14 +23741,17 @@ async function executeCommand(command, ctx, onNote) {
23655
23741
  * command. No wire call — the manager content talks to /api/prompts itself.
23656
23742
  */
23657
23743
  /**
23658
- * /dsi-terminal (Web Terminal spec Wave 5, 2026-09-24): aim the operator
23659
- * terminal panel — the manager-request grammar. The enabled gate lives
23660
- * HERE (the composer gives honest feedback even before a panel exists):
23661
- * a disabled flag notes the fact and opens nothing.
23744
+ * /dsi-terminal (Web Terminal spec Wave 5, 2026-09-24; widened by The
23745
+ * Terminal Desk ADR 2026-09-24 D2): aim the operator terminal desk — the
23746
+ * manager-request grammar. The enabled gate lives HERE (the composer gives
23747
+ * honest feedback even before a panel exists): a disabled flag notes the
23748
+ * fact and opens nothing. action carries the parser-admitted flag
23749
+ * ('new-tab' | 'split-down') onward — with no desk on the floor all three
23750
+ * shapes create the first tab; the action discriminates only when one exists.
23662
23751
  */
23663
- async function runTerminal(args, ctx, onNote) {
23752
+ async function runTerminal(args, action, ctx, onNote) {
23664
23753
  if (args !== "") {
23665
- const usage = "usage: /dsi-terminal";
23754
+ const usage = "usage: /dsi-terminal [--new-tab | --split-down]";
23666
23755
  onNote?.(false, usage);
23667
23756
  return {
23668
23757
  ok: false,
@@ -24240,7 +24329,7 @@ async function resolveWorkspaceToken(token) {
24240
24329
  return { note: `/new: no workspace "${token}" — the registry holds: ${rows.map((w) => w.title).join(", ")}; adopt a new one with /workspace <full-path>` };
24241
24330
  }
24242
24331
  //#endregion
24243
- //#region src/lib/components/chat/InjectedShelfButton.svelte
24332
+ //#region src/lib/components/conversation/InjectedShelfButton.svelte
24244
24333
  function InjectedShelfButton($$renderer, $$props) {
24245
24334
  $$renderer.component(($$renderer) => {
24246
24335
  /**
@@ -24273,7 +24362,7 @@ function InjectedShelfButton($$renderer, $$props) {
24273
24362
  function $$render_inner($$renderer) {
24274
24363
  if (members().length > 0) {
24275
24364
  $$renderer.push("<!--[0-->");
24276
- $$renderer.push(`<div data-svelte="InjectedShelfButton" class="relative svelte-ntohaz"><button type="button"${attr_class("floating-anchor-btn tone-maroon svelte-ntohaz", void 0, { "active": open })}${attr("title", t(injectedtitle1))} data-testid="injected-shelf-button">`);
24365
+ $$renderer.push(`<div data-svelte="InjectedShelfButton" class="relative svelte-1la1glg"><button type="button"${attr_class("floating-anchor-btn tone-maroon svelte-1la1glg", void 0, { "active": open })}${attr("title", t(injectedtitle1))} data-testid="injected-shelf-button">`);
24277
24366
  File_text($$renderer, { size: 14 });
24278
24367
  $$renderer.push(`<!----></button> `);
24279
24368
  FloatingAnchorContainerPopup($$renderer, {
@@ -24295,15 +24384,15 @@ function InjectedShelfButton($$renderer, $$props) {
24295
24384
  let m = each_array[i];
24296
24385
  if (i > 0 && members()[i - 1].firstLoad === true && m.firstLoad === false) {
24297
24386
  $$renderer.push("<!--[0-->");
24298
- $$renderer.push(`<hr class="shelf-divider svelte-ntohaz" data-testid="shelf-first-load-divider"/>`);
24387
+ $$renderer.push(`<hr class="shelf-divider svelte-1la1glg" data-testid="shelf-first-load-divider"/>`);
24299
24388
  } else $$renderer.push("<!--[-1-->");
24300
- $$renderer.push(`<!--]--> <div class="shelf-item svelte-ntohaz" data-testid="injected-shelf-item"${attr("data-display-path", m.displayPath)}>`);
24389
+ $$renderer.push(`<!--]--> <div class="shelf-item svelte-1la1glg" data-testid="injected-shelf-item"${attr("data-display-path", m.displayPath)}>`);
24301
24390
  CopyButton($$renderer, {
24302
24391
  value: m.origin === "system-prompt" ? injectedRecordFor(entries, m.displayPath)?.text ?? m.displayPath : injectedFullPath(workspace, m.displayPath),
24303
24392
  title: m.origin === "system-prompt" ? "Copy prompt text — a shelf name, not a file" : "Copy full path",
24304
24393
  class: "shelf-copy"
24305
24394
  });
24306
- $$renderer.push(`<!----> <button type="button" role="menuitem" class="shelf-pick svelte-ntohaz" data-testid="injected-shelf-pick"${attr("title", m.displayPath)}><span class="shelf-pick-path svelte-ntohaz">${escape_html(m.displayPath)}</span></button></div>`);
24395
+ $$renderer.push(`<!----> <button type="button" role="menuitem" class="shelf-pick svelte-1la1glg" data-testid="injected-shelf-pick"${attr("title", m.displayPath)}><span class="shelf-pick-path svelte-1la1glg">${escape_html(m.displayPath)}</span></button></div>`);
24307
24396
  }
24308
24397
  $$renderer.push(`<!--]-->`);
24309
24398
  },
@@ -24322,7 +24411,7 @@ function InjectedShelfButton($$renderer, $$props) {
24322
24411
  });
24323
24412
  }
24324
24413
  //#endregion
24325
- //#region src/lib/components/chat/ConversationFloatingAnchor.svelte
24414
+ //#region src/lib/components/conversation/ConversationFloatingAnchor.svelte
24326
24415
  function ConversationFloatingAnchor($$renderer, $$props) {
24327
24416
  /**
24328
24417
  * ConversationFloatingAnchor — the conversation page's floating action
@@ -24359,7 +24448,7 @@ function ConversationFloatingAnchor($$renderer, $$props) {
24359
24448
  $$renderer.push(`<!--]-->`);
24360
24449
  }
24361
24450
  //#endregion
24362
- //#region src/lib/components/chat/A2aChipStack.svelte
24451
+ //#region src/lib/components/conversation/A2aChipStack.svelte
24363
24452
  function A2aChipStack($$renderer, $$props) {
24364
24453
  $$renderer.component(($$renderer) => {
24365
24454
  /**
@@ -24447,7 +24536,7 @@ function A2aChipStack($$renderer, $$props) {
24447
24536
  });
24448
24537
  }
24449
24538
  //#endregion
24450
- //#region src/lib/components/chat/ConversationStatsBar.svelte
24539
+ //#region src/lib/components/conversation/ConversationStatsBar.svelte
24451
24540
  function ConversationStatsBar($$renderer, $$props) {
24452
24541
  $$renderer.component(($$renderer) => {
24453
24542
  /**
@@ -24495,15 +24584,15 @@ function ConversationStatsBar($$renderer, $$props) {
24495
24584
  });
24496
24585
  if (stats !== null) {
24497
24586
  $$renderer.push("<!--[0-->");
24498
- $$renderer.push(`<div data-svelte="ConversationStatsBar" class="stats-bar svelte-1bg5es8" data-testid="conversation-stats-bar"${attr("title", segments().join(" | "))}><!--[-->`);
24587
+ $$renderer.push(`<div data-svelte="ConversationStatsBar" class="stats-bar svelte-1v5mccr" data-testid="conversation-stats-bar"${attr("title", segments().join(" | "))}><!--[-->`);
24499
24588
  const each_array = ensure_array_like(segments());
24500
24589
  for (let i = 0, $$length = each_array.length; i < $$length; i++) {
24501
24590
  let segment = each_array[i];
24502
24591
  if (i > 0) {
24503
24592
  $$renderer.push("<!--[0-->");
24504
- $$renderer.push(`<span class="sep svelte-1bg5es8" aria-hidden="true">|</span>`);
24593
+ $$renderer.push(`<span class="sep svelte-1v5mccr" aria-hidden="true">|</span>`);
24505
24594
  } else $$renderer.push("<!--[-1-->");
24506
- $$renderer.push(`<!--]--> <span class="segment svelte-1bg5es8" data-testid="stats-segment">${escape_html(segment)}</span>`);
24595
+ $$renderer.push(`<!--]--> <span class="segment svelte-1v5mccr" data-testid="stats-segment">${escape_html(segment)}</span>`);
24507
24596
  }
24508
24597
  $$renderer.push(`<!--]--></div>`);
24509
24598
  } else $$renderer.push("<!--[-1-->");
@@ -25032,7 +25121,7 @@ var macroRunner = {
25032
25121
  }
25033
25122
  };
25034
25123
  //#endregion
25035
- //#region src/lib/components/chat/MacroRunSheet.svelte
25124
+ //#region src/lib/components/conversation/MacroRunSheet.svelte
25036
25125
  function MacroRunSheet($$renderer, $$props) {
25037
25126
  $$renderer.component(($$renderer) => {
25038
25127
  /**
@@ -25103,15 +25192,15 @@ function MacroRunSheet($$renderer, $$props) {
25103
25192
  });
25104
25193
  if (run.phase !== "idle") {
25105
25194
  $$renderer.push("<!--[0-->");
25106
- $$renderer.push(`<div data-svelte="MacroRunSheet" class="macro-run svelte-zl61ov" data-testid="macro-run"><div class="macro-chip svelte-zl61ov"${attr("data-phase", run.phase)} data-testid="macro-chip"><button type="button" class="macro-chip-label svelte-zl61ov"${attr("aria-expanded", expanded)}${attr("title", run.note ?? "Macro run")}><span class="macro-chip-text svelte-zl61ov">${escape_html(chipLabel())}</span> <span class="macro-chip-caret svelte-zl61ov">${escape_html("▸")}</span></button> `);
25195
+ $$renderer.push(`<div data-svelte="MacroRunSheet" class="macro-run svelte-1ojr83s" data-testid="macro-run"><div class="macro-chip svelte-1ojr83s"${attr("data-phase", run.phase)} data-testid="macro-chip"><button type="button" class="macro-chip-label svelte-1ojr83s"${attr("aria-expanded", expanded)}${attr("title", run.note ?? "Macro run")}><span class="macro-chip-text svelte-1ojr83s">${escape_html(chipLabel())}</span> <span class="macro-chip-caret svelte-1ojr83s">${escape_html("▸")}</span></button> `);
25107
25196
  if (canAbort() && onabort) {
25108
25197
  $$renderer.push("<!--[0-->");
25109
- $$renderer.push(`<button type="button" class="macro-stop svelte-zl61ov" data-testid="macro-stop"${attr("title", t(dropunsubmittedtitle2))}>${escape_html(t(stop))}</button>`);
25198
+ $$renderer.push(`<button type="button" class="macro-stop svelte-1ojr83s" data-testid="macro-stop"${attr("title", t(dropunsubmittedtitle2))}>${escape_html(t(stop))}</button>`);
25110
25199
  } else $$renderer.push("<!--[-1-->");
25111
25200
  $$renderer.push(`<!--]--> `);
25112
25201
  if (ended() && onclose) {
25113
25202
  $$renderer.push("<!--[0-->");
25114
- $$renderer.push(`<button type="button" class="macro-close svelte-zl61ov" data-testid="macro-close"${attr("aria-label", t(dismissrunsheet2))}${attr("title", t(dismiss))}>✕</button>`);
25203
+ $$renderer.push(`<button type="button" class="macro-close svelte-1ojr83s" data-testid="macro-close"${attr("aria-label", t(dismissrunsheet2))}${attr("title", t(dismiss))}>✕</button>`);
25115
25204
  } else $$renderer.push("<!--[-1-->");
25116
25205
  $$renderer.push(`<!--]--></div> `);
25117
25206
  $$renderer.push("<!--[-1-->");
@@ -25121,7 +25210,7 @@ function MacroRunSheet($$renderer, $$props) {
25121
25210
  });
25122
25211
  }
25123
25212
  //#endregion
25124
- //#region src/lib/components/chat/GoalBar.svelte
25213
+ //#region src/lib/components/conversation/GoalBar.svelte
25125
25214
  function GoalBar($$renderer, $$props) {
25126
25215
  $$renderer.component(($$renderer) => {
25127
25216
  /**
@@ -25162,33 +25251,33 @@ function GoalBar($$renderer, $$props) {
25162
25251
  const phaseAction = derived(() => goal?.phase === "active" ? "pause" : goal?.phase === "paused" ? "resume" : void 0);
25163
25252
  if (goal && goal.phase !== "complete") {
25164
25253
  $$renderer.push("<!--[0-->");
25165
- $$renderer.push(`<div data-svelte="GoalBar" class="goal-bar svelte-k3rmjz" data-testid="goal-bar"><div class="goal-chip svelte-k3rmjz"${attr("data-phase", goal.phase)} data-testid="goal-chip"${attr("title", blockedTitle())}><button type="button" class="goal-chip-label svelte-k3rmjz"${attr("aria-expanded", expanded)}${attr("title", blockedTitle() ?? goal.objective)}><span class="goal-chip-glyph svelte-k3rmjz" aria-hidden="true">${escape_html(glyph())}</span> <span class="goal-chip-text svelte-k3rmjz">goal ${escape_html(goal.phase)} · ${escape_html(shortObjective())}</span> <span class="goal-chip-caret svelte-k3rmjz">${escape_html("▸")}</span></button> `);
25254
+ $$renderer.push(`<div data-svelte="GoalBar" class="goal-bar svelte-132xors" data-testid="goal-bar"><div class="goal-chip svelte-132xors"${attr("data-phase", goal.phase)} data-testid="goal-chip"${attr("title", blockedTitle())}><button type="button" class="goal-chip-label svelte-132xors"${attr("aria-expanded", expanded)}${attr("title", blockedTitle() ?? goal.objective)}><span class="goal-chip-glyph svelte-132xors" aria-hidden="true">${escape_html(glyph())}</span> <span class="goal-chip-text svelte-132xors">goal ${escape_html(goal.phase)} · ${escape_html(shortObjective())}</span> <span class="goal-chip-caret svelte-132xors">${escape_html("▸")}</span></button> `);
25166
25255
  if (phaseAction() === "pause" && onpause) {
25167
25256
  $$renderer.push("<!--[0-->");
25168
- $$renderer.push(`<button type="button" class="goal-action svelte-k3rmjz" data-testid="goal-pause"${attr("title", t(pausegoal1))}>${escape_html(t(pause))}</button>`);
25257
+ $$renderer.push(`<button type="button" class="goal-action svelte-132xors" data-testid="goal-pause"${attr("title", t(pausegoal1))}>${escape_html(t(pause))}</button>`);
25169
25258
  } else $$renderer.push("<!--[-1-->");
25170
25259
  $$renderer.push(`<!--]--> `);
25171
25260
  if (phaseAction() === "resume" && onresume) {
25172
25261
  $$renderer.push("<!--[0-->");
25173
- $$renderer.push(`<button type="button" class="goal-action svelte-k3rmjz" data-testid="goal-resume"${attr("title", t(resumegoal1))}>${escape_html(t(resume))}</button>`);
25262
+ $$renderer.push(`<button type="button" class="goal-action svelte-132xors" data-testid="goal-resume"${attr("title", t(resumegoal1))}>${escape_html(t(resume))}</button>`);
25174
25263
  } else $$renderer.push("<!--[-1-->");
25175
25264
  $$renderer.push(`<!--]--> `);
25176
25265
  if (onedit) {
25177
25266
  $$renderer.push("<!--[0-->");
25178
- $$renderer.push(`<button type="button" class="goal-action svelte-k3rmjz" data-testid="goal-edit"${attr("title", t(editobjectivetitle2))}>${escape_html(t(edit))}</button>`);
25267
+ $$renderer.push(`<button type="button" class="goal-action svelte-132xors" data-testid="goal-edit"${attr("title", t(editobjectivetitle2))}>${escape_html(t(edit))}</button>`);
25179
25268
  } else $$renderer.push("<!--[-1-->");
25180
25269
  $$renderer.push(`<!--]--> `);
25181
25270
  if (onclear) {
25182
25271
  $$renderer.push("<!--[0-->");
25183
- $$renderer.push(`<button type="button" class="goal-action goal-clear svelte-k3rmjz" data-testid="goal-clear"${attr("aria-label", t(clearthegoal2))}${attr("title", t(clearbtn1))}>✕</button>`);
25272
+ $$renderer.push(`<button type="button" class="goal-action goal-clear svelte-132xors" data-testid="goal-clear"${attr("aria-label", t(clearthegoal2))}${attr("title", t(clearbtn1))}>✕</button>`);
25184
25273
  } else $$renderer.push("<!--[-1-->");
25185
25274
  $$renderer.push(`<!--]--></div> `);
25186
25275
  if (editor) {
25187
25276
  $$renderer.push("<!--[0-->");
25188
- $$renderer.push(`<div class="goal-edit-form svelte-k3rmjz" data-testid="goal-edit-form"><label class="goal-edit-label svelte-k3rmjz"><span>objective</span> <textarea data-testid="goal-edit-objective" rows="2" class="svelte-k3rmjz">`);
25277
+ $$renderer.push(`<div class="goal-edit-form svelte-132xors" data-testid="goal-edit-form"><label class="goal-edit-label svelte-132xors"><span>objective</span> <textarea data-testid="goal-edit-objective" rows="2" class="svelte-132xors">`);
25189
25278
  const $$body = escape_html(editor.objective);
25190
25279
  if ($$body) $$renderer.push(`${$$body}`);
25191
- $$renderer.push(`</textarea></label> <label class="goal-edit-label svelte-k3rmjz"><span>${escape_html(t(maxrounds1))}</span> <input type="number" min="1" step="1" data-testid="goal-edit-rounds"${attr("value", editor.maxGoalRounds)} class="svelte-k3rmjz"/></label> <div class="goal-controls svelte-k3rmjz"><button type="button" data-testid="goal-edit-submit" class="svelte-k3rmjz">${escape_html(t(save))}</button> <button type="button" data-testid="goal-edit-cancel" class="svelte-k3rmjz">${escape_html(t(cancel))}</button></div></div>`);
25280
+ $$renderer.push(`</textarea></label> <label class="goal-edit-label svelte-132xors"><span>${escape_html(t(maxrounds1))}</span> <input type="number" min="1" step="1" data-testid="goal-edit-rounds"${attr("value", editor.maxGoalRounds)} class="svelte-132xors"/></label> <div class="goal-controls svelte-132xors"><button type="button" data-testid="goal-edit-submit" class="svelte-132xors">${escape_html(t(save))}</button> <button type="button" data-testid="goal-edit-cancel" class="svelte-132xors">${escape_html(t(cancel))}</button></div></div>`);
25192
25281
  } else $$renderer.push("<!--[-1-->");
25193
25282
  $$renderer.push(`<!--]--> `);
25194
25283
  $$renderer.push("<!--[-1-->");
@@ -25206,7 +25295,7 @@ function contextWindowOf(modelId) {
25206
25295
  return void 0;
25207
25296
  }
25208
25297
  //#endregion
25209
- //#region src/lib/components/chat/ConversationPanel.svelte
25298
+ //#region src/lib/components/conversation/ConversationPanel.svelte
25210
25299
  function ConversationPanel($$renderer, $$props) {
25211
25300
  $$renderer.component(($$renderer) => {
25212
25301
  /**
@@ -25597,7 +25686,7 @@ function ConversationPanel($$renderer, $$props) {
25597
25686
  let $$settled = true;
25598
25687
  let $$inner_renderer;
25599
25688
  function $$render_inner($$renderer) {
25600
- head("18u549u", $$renderer, ($$renderer) => {
25689
+ head("f76kgh", $$renderer, ($$renderer) => {
25601
25690
  $$renderer.title(($$renderer) => {
25602
25691
  $$renderer.push(`<title>${escape_html(title ?? (sessionId ? sessionId.slice(0, 12) + "…" : "deepseek-insight"))}</title>`);
25603
25692
  });
@@ -25673,15 +25762,15 @@ function ConversationPanel($$renderer, $$props) {
25673
25762
  $$renderer.push(`<!----> `);
25674
25763
  if (commandNote !== null) {
25675
25764
  $$renderer.push("<!--[0-->");
25676
- $$renderer.push(`<div${attr_class("command-note svelte-18u549u", void 0, { "command-note-error": commandNote.kind === "error" })} data-testid="command-note" role="status">${escape_html(commandNote.text)}</div>`);
25765
+ $$renderer.push(`<div${attr_class("command-note svelte-f76kgh", void 0, { "command-note-error": commandNote.kind === "error" })} data-testid="command-note" role="status">${escape_html(commandNote.text)}</div>`);
25677
25766
  } else $$renderer.push("<!--[-1-->");
25678
25767
  $$renderer.push(`<!--]--> `);
25679
25768
  if (composerError() !== null) {
25680
25769
  $$renderer.push("<!--[0-->");
25681
- $$renderer.push(`<div class="command-note command-note-error composer-error svelte-18u549u" data-testid="composer-error" role="alert"><span>${escape_html(composerError().message)}</span> `);
25770
+ $$renderer.push(`<div class="command-note command-note-error composer-error svelte-f76kgh" data-testid="composer-error" role="alert"><span>${escape_html(composerError().message)}</span> `);
25682
25771
  if (composerError().reason === "MODEL_DOES_NOT_SUPPORT_IMAGES") {
25683
25772
  $$renderer.push("<!--[0-->");
25684
- $$renderer.push(`<span class="composer-error-hint svelte-18u549u">${escape_html(t(imageskepthint2))}</span>`);
25773
+ $$renderer.push(`<span class="composer-error-hint svelte-f76kgh">${escape_html(t(imageskepthint2))}</span>`);
25685
25774
  } else $$renderer.push("<!--[-1-->");
25686
25775
  $$renderer.push(`<!--]--></div>`);
25687
25776
  } else $$renderer.push("<!--[-1-->");
@@ -25709,10 +25798,10 @@ function ConversationPanel($$renderer, $$props) {
25709
25798
  onclear: () => void runGoalVerb("clear"),
25710
25799
  onedit: openGoalEditor,
25711
25800
  editor: goalEditor});
25712
- $$renderer.push(`<!----> <div class="composer-area svelte-18u549u">`);
25801
+ $$renderer.push(`<!----> <div class="composer-area svelte-f76kgh">`);
25713
25802
  if (agent !== null) {
25714
25803
  $$renderer.push("<!--[0-->");
25715
- $$renderer.push(`<div class="composer-stick svelte-18u549u" data-testid="composer-stick-toggle">`);
25804
+ $$renderer.push(`<div class="composer-stick svelte-f76kgh" data-testid="composer-stick-toggle">`);
25716
25805
  StickToBottomToggle($$renderer, {
25717
25806
  stick,
25718
25807
  ontoggle: onStickToggle
@@ -25741,7 +25830,7 @@ function ConversationPanel($$renderer, $$props) {
25741
25830
  $$renderer.push(`<!--]--> `);
25742
25831
  if (subagent) {
25743
25832
  $$renderer.push("<!--[0-->");
25744
- $$renderer.push(`<div class="floating-stick svelte-18u549u" data-testid="floating-stick-toggle">`);
25833
+ $$renderer.push(`<div class="floating-stick svelte-f76kgh" data-testid="floating-stick-toggle">`);
25745
25834
  StickToBottomToggle($$renderer, {
25746
25835
  stick,
25747
25836
  ontoggle: onStickToggle
@@ -25800,6 +25889,173 @@ function TerminalPanel($$renderer, $$props) {
25800
25889
  });
25801
25890
  }
25802
25891
  //#endregion
25892
+ //#region src/lib/components/terminal/TerminalTabHeader.svelte
25893
+ function TerminalTabHeader($$renderer, $$props) {
25894
+ let { children } = $$props;
25895
+ $$renderer.push(`<div data-svelte="TerminalTabHeader" role="tablist" class="flex items-center gap-1 border-b border-slate-800 px-1 py-0.5" data-testid="terminal-tab-header">`);
25896
+ children($$renderer);
25897
+ $$renderer.push(`<!----></div>`);
25898
+ }
25899
+ //#endregion
25900
+ //#region src/lib/components/terminal/TerminalTabButton.svelte
25901
+ function TerminalTabButton($$renderer, $$props) {
25902
+ $$renderer.component(($$renderer) => {
25903
+ let { index, selected, label} = $$props;
25904
+ $$renderer.push(`<div data-svelte="TerminalTabButton" role="tab"${attr("aria-selected", selected)} tabindex="0"${attr_class(`flex cursor-pointer items-center gap-1 rounded px-2 py-0.5 text-[10px] ${selected ? "bg-slate-700 text-slate-100" : "text-slate-400 hover:bg-slate-800"}`)}${attr("data-testid", `terminal-tab-button-${stringify(index)}`)}${attr("data-selected", selected ? "true" : "false")}><span>${escape_html(label)}</span> <span class="ml-1 rounded px-1 text-slate-500 hover:bg-slate-600 hover:text-slate-200" role="button" tabindex="-1"${attr("aria-label", t(terminaltabclose2) + " " + label)}${attr("data-testid", `terminal-tab-close-${stringify(index)}`)}>×</span></div>`);
25905
+ });
25906
+ }
25907
+ //#endregion
25908
+ //#region src/lib/components/terminal/TerminalTabContainer.svelte
25909
+ function TerminalTabContainer($$renderer, $$props) {
25910
+ let { index, visible, children } = $$props;
25911
+ $$renderer.push(`<div data-svelte="TerminalTabContainer"${attr_class(`min-h-0 grow ${visible ? "flex" : "hidden"} flex-col`)}${attr("hidden", !visible)}${attr("data-testid", `terminal-tab-container-${stringify(index)}`)}${attr("data-visible", visible ? "true" : "false")}>`);
25912
+ children($$renderer);
25913
+ $$renderer.push(`<!----></div>`);
25914
+ }
25915
+ //#endregion
25916
+ //#region src/lib/components/terminal/TerminalSplitContainer.svelte
25917
+ function TerminalSplitContainer($$renderer, $$props) {
25918
+ let { rowCount, children } = $$props;
25919
+ $$renderer.push(`<div data-svelte="TerminalSplitContainer"${attr_class(`flex min-h-0 grow flex-col gap-0.5 ${rowCount > 1 ? "overflow-y-auto" : "overflow-hidden"}`)} data-testid="terminal-split-container"${attr("data-rows", rowCount)}>`);
25920
+ children($$renderer);
25921
+ $$renderer.push(`<!----></div>`);
25922
+ }
25923
+ //#endregion
25924
+ //#region src/lib/components/terminal/TerminalDesk.svelte
25925
+ function TerminalDesk($$renderer, $$props) {
25926
+ $$renderer.component(($$renderer) => {
25927
+ /** TerminalDesk — the ONE terminal floor slot (Terminal Desk ADR,
25928
+ * 2026-09-24, D1/D3): tabs of stacked rows over the server's N-session
25929
+ * registry. The floor counts desks (always at most one); this
25930
+ * component owns the tab/row tree, selection, the close cascades (D5),
25931
+ * and the reload survival pair (D3): the blob MIRROR rides out via
25932
+ * onMirror; the probe's live session list adjudicates the REBUILD —
25933
+ * remembered ids that are gone or exited drop, survivors re-attach
25934
+ * (byte-0 replay per the Surviving Shell's amended D3), and an
25935
+ * all-dead desk falls back to one fresh self-open row. Row sessions
25936
+ * the desk mints itself are handed to the panel (row mode); the FIRST
25937
+ * row of a virgin desk self-opens via the panel's own ladder, so a
25938
+ * bare command behaves byte-identically to the pre-desk panel. */
25939
+ /** Null = self-open (the panel runs its own ladder and reports back
25940
+ * via onAssigned); set = the desk holds this session's lease. */
25941
+ let { onShellExit, restored = null, onMirror } = $$props;
25942
+ let nextKey = 1;
25943
+ const mkKey = () => nextKey++;
25944
+ const defaultTab = () => ({
25945
+ key: mkKey(),
25946
+ rows: [{
25947
+ key: mkKey(),
25948
+ assigned: null
25949
+ }]
25950
+ });
25951
+ let restoring = !!restored && restored.tabs.length > 0;
25952
+ let tabs = restoring ? [] : [defaultTab()];
25953
+ let selectedTab = 0;
25954
+ let opening = false;
25955
+ let capped = false;
25956
+ /** Mint a fresh session server-side and hand it to a new row (row
25957
+ * mode). A new tab or split-down NEVER re-attaches an existing
25958
+ * session — the reattach ladder is reload-recovery, not a spawner. */
25959
+ async function mintSession() {
25960
+ opening = true;
25961
+ try {
25962
+ const res = await fetch("/api/terminal", {
25963
+ method: "POST",
25964
+ headers: { "content-type": "application/json" },
25965
+ body: "{}"
25966
+ });
25967
+ if (!res.ok) {
25968
+ if ((await res.json().catch(() => ({})))?.error === "MAX_SESSIONS") capped = true;
25969
+ return null;
25970
+ }
25971
+ const body = await res.json();
25972
+ return {
25973
+ key: mkKey(),
25974
+ assigned: {
25975
+ sessionId: body.sessionId,
25976
+ token: body.token
25977
+ }
25978
+ };
25979
+ } finally {
25980
+ opening = false;
25981
+ }
25982
+ }
25983
+ /** The floor's forwarded command action (ADR D2): --new-tab appends a
25984
+ * tab and selects it; --split-down stacks a row on the SELECTED tab.
25985
+ * Both open a fresh session (never re-attach). */
25986
+ function applyAction(action) {
25987
+ (async () => {
25988
+ const row = await mintSession();
25989
+ if (!row) return;
25990
+ if (action === "new-tab") {
25991
+ tabs.push({
25992
+ key: mkKey(),
25993
+ rows: [row]
25994
+ });
25995
+ selectedTab = tabs.length - 1;
25996
+ } else tabs[selectedTab].rows.push(row);
25997
+ })();
25998
+ }
25999
+ $$renderer.push(`<div data-svelte="TerminalDesk" class="flex h-full min-h-0 flex-col rounded-lg bg-slate-900" data-testid="terminal-desk">`);
26000
+ if (restoring) {
26001
+ $$renderer.push("<!--[0-->");
26002
+ $$renderer.push(`<div class="p-3 text-xs text-slate-500" data-testid="terminal-desk-restoring">...</div>`);
26003
+ } else {
26004
+ $$renderer.push("<!--[-1-->");
26005
+ TerminalTabHeader($$renderer, {
26006
+ children: ($$renderer) => {
26007
+ $$renderer.push(`<!--[-->`);
26008
+ const each_array = ensure_array_like(tabs);
26009
+ for (let i = 0, $$length = each_array.length; i < $$length; i++) {
26010
+ each_array[i];
26011
+ TerminalTabButton($$renderer, {
26012
+ index: i,
26013
+ label: "T" + (i + 1),
26014
+ selected: i === selectedTab});
26015
+ }
26016
+ $$renderer.push(`<!--]-->`);
26017
+ }});
26018
+ $$renderer.push(`<!----> <!--[-->`);
26019
+ const each_array_1 = ensure_array_like(tabs);
26020
+ for (let i = 0, $$length = each_array_1.length; i < $$length; i++) {
26021
+ let tab = each_array_1[i];
26022
+ TerminalTabContainer($$renderer, {
26023
+ index: i,
26024
+ visible: i === selectedTab,
26025
+ children: ($$renderer) => {
26026
+ TerminalSplitContainer($$renderer, {
26027
+ rowCount: tab.rows.length,
26028
+ children: ($$renderer) => {
26029
+ $$renderer.push(`<!--[-->`);
26030
+ const each_array_2 = ensure_array_like(tab.rows);
26031
+ for (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {
26032
+ let row = each_array_2[$$index_1];
26033
+ $$renderer.push(`<div class="min-h-0" style="flex: 1 1 0; min-height: 10rem;">`);
26034
+ TerminalPanel($$renderer, {
26035
+ assigned: row.assigned});
26036
+ $$renderer.push(`<!----></div>`);
26037
+ }
26038
+ $$renderer.push(`<!--]-->`);
26039
+ }});
26040
+ }});
26041
+ }
26042
+ $$renderer.push(`<!--]--> `);
26043
+ if (opening) {
26044
+ $$renderer.push("<!--[0-->");
26045
+ $$renderer.push(`<div class="p-2 text-[10px] text-slate-500" data-testid="terminal-desk-opening">...</div>`);
26046
+ } else $$renderer.push("<!--[-1-->");
26047
+ $$renderer.push(`<!--]--> `);
26048
+ if (capped) {
26049
+ $$renderer.push("<!--[0-->");
26050
+ $$renderer.push(`<div class="p-2 text-[10px] text-slate-500" data-testid="terminal-desk-capped">${escape_html(t(terminalsessioncap2))}</div>`);
26051
+ } else $$renderer.push("<!--[-1-->");
26052
+ $$renderer.push(`<!--]-->`);
26053
+ }
26054
+ $$renderer.push(`<!--]--></div>`);
26055
+ bind_props($$props, { applyAction });
26056
+ });
26057
+ }
26058
+ //#endregion
25803
26059
  //#region src/lib/components/settings-skills/SettingsSkillsToolbar.svelte
25804
26060
  function SettingsSkillsToolbar($$renderer, $$props) {
25805
26061
  $$renderer.component(($$renderer) => {
@@ -27397,6 +27653,31 @@ function clampExpanded(value) {
27397
27653
  }
27398
27654
  return out;
27399
27655
  }
27656
+ /** The terminal desk's structure clamp (Terminal Desk ADR D3, Wave 3):
27657
+ * sanitize a stored desk mirror into { tabs, selectedTab } or undefined.
27658
+ * Junk drops FIELD-WISE — non-string sessionIds drop, empty/junk tabs
27659
+ * drop, selectedTab clamps into range — so a stale blob degrades to
27660
+ * "fewer rows remembered", never a phantom row. All tabs dropped (or
27661
+ * junk at the top) ⇒ undefined: the desk falls back to one fresh row. */
27662
+ function clampDeskMirror(value) {
27663
+ if (value === null || typeof value !== "object") return void 0;
27664
+ const raw = value;
27665
+ if (!Array.isArray(raw.tabs)) return void 0;
27666
+ const tabs = [];
27667
+ for (const tab of raw.tabs) {
27668
+ if (tab === null || typeof tab !== "object") continue;
27669
+ const ids = tab.sessionIds;
27670
+ if (!Array.isArray(ids)) continue;
27671
+ const sessionIds = ids.filter((id) => typeof id === "string" && id.length > 0);
27672
+ if (sessionIds.length === 0) continue;
27673
+ tabs.push({ sessionIds });
27674
+ }
27675
+ if (tabs.length === 0) return void 0;
27676
+ return {
27677
+ tabs,
27678
+ selectedTab: typeof raw.selectedTab === "number" && Number.isFinite(raw.selectedTab) ? Math.max(0, Math.min(tabs.length - 1, Math.round(raw.selectedTab))) : 0
27679
+ };
27680
+ }
27400
27681
  /** Persisted defaults when nothing (usable) is stored. */
27401
27682
  function defaultPanelPrefs() {
27402
27683
  return {
@@ -27466,11 +27747,15 @@ function sanitizePanels(raw) {
27466
27747
  kind: "prompt-manager",
27467
27748
  width
27468
27749
  };
27469
- if (entry.kind === "terminal") return {
27470
- id: entry.id,
27471
- kind: "terminal",
27472
- width
27473
- };
27750
+ if (entry.kind === "terminal") {
27751
+ const desk = clampDeskMirror(entry.desk);
27752
+ return {
27753
+ id: entry.id,
27754
+ kind: "terminal",
27755
+ ...desk ? { desk } : {},
27756
+ width
27757
+ };
27758
+ }
27474
27759
  if (entry.kind === "settings-editor") return {
27475
27760
  id: entry.id,
27476
27761
  kind: "settings-editor",
@@ -28403,6 +28688,15 @@ function _page($$renderer, $$props) {
28403
28688
  let treePct = clampTreePct(initialPrefs.treePct);
28404
28689
  let panels = seededInitially ? [makePanel(seedSessionId(), seedCold?.agentPreset ?? null)] : initialPrefs.panels;
28405
28690
  syncPanelIdSeq(panels);
28691
+ /** The one terminal desk's ref (Terminal Desk ADR D1/D2, Wave 2): the
28692
+ * floor forwards the parsed command action (--new-tab / --split-down)
28693
+ * into the desk's methods when the desk is already open — repeat bare
28694
+ * stays focus-only. */
28695
+ /** The desk's published structure mirror, by panel id (Terminal Desk
28696
+ * ADR D3, Wave 3): read at savePanelPrefs time — the $effect that
28697
+ * persists the floor serializes each terminal entry's desk field.
28698
+ * A copy, never the authority; the probe adjudicates on rebuild. */
28699
+ let terminalDeskMirrors = {};
28406
28700
  let selectedPanelId = seededInitially ? panels[0]?.id ?? null : initialPrefs.selectedPanelId;
28407
28701
  /** Which panel the loupe reads (The Panel Loupe ADR D5, 2026-09-04):
28408
28702
  * session-local by decision — never persisted (the R2 effect above
@@ -28711,7 +29005,11 @@ function _page($$renderer, $$props) {
28711
29005
  if (panel.kind === "terminal") {
28712
29006
  $$renderer.push("<!--[0-->");
28713
29007
  $$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-terminal">`);
28714
- TerminalPanel($$renderer);
29008
+ TerminalDesk($$renderer, {
29009
+ restored: panel.desk ?? null,
29010
+ onMirror: (m) => terminalDeskMirrors[panel.id] = m,
29011
+ onShellExit: () => removePanel(panel.id)
29012
+ });
28715
29013
  $$renderer.push(`<!----></div>`);
28716
29014
  } else if (panel.kind === "prompt-manager") {
28717
29015
  $$renderer.push("<!--[1-->");
@@ -28947,4 +29245,4 @@ function _page($$renderer, $$props) {
28947
29245
  }
28948
29246
 
28949
29247
  export { _page as default };
28950
- //# sourceMappingURL=_page.svelte.js-B26jgDy0.js.map
29248
+ //# sourceMappingURL=_page.svelte.js-D-nbMlOD.js.map