@deepseek-insight/dsi 0.6.10 → 0.6.12

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 (31) hide show
  1. package/.agents/skills/dsi-ov-setup/SKILL.md +134 -0
  2. package/.agents/skills/dsi-plugin-rack/rack.d.mts +9 -1
  3. package/build/client/_app/immutable/assets/2.Bzy6Q5kl.css +1 -0
  4. package/build/client/_app/immutable/chunks/{XOquLDe4.js → 66qbK5h1.js} +2 -2
  5. package/build/client/_app/immutable/chunks/{Dg3LIDOQ.js → D3W5wGWM.js} +1 -1
  6. package/build/client/_app/immutable/chunks/D73RufXg.js +1 -0
  7. package/build/client/_app/immutable/chunks/NtHUheoE.js +1 -0
  8. package/build/client/_app/immutable/entry/{app.BTSQLfJD.js → app.D8WfdLSe.js} +2 -2
  9. package/build/client/_app/immutable/entry/start.CVl0g0cv.js +1 -0
  10. package/build/client/_app/immutable/nodes/{1.Bj5dhQm8.js → 1.X0If5xAN.js} +1 -1
  11. package/build/client/_app/immutable/nodes/{2.D2grr0LI.js → 2.CELzu2i6.js} +219 -219
  12. package/build/client/_app/version.json +1 -1
  13. package/build/handler.js +4 -4
  14. package/build/index.js +4 -4
  15. package/build/server/chunks/chunks/{internal.js-CiymEM9G.js → internal.js-D_QJoxN-.js} +2 -2
  16. package/build/server/chunks/chunks/{state.js-Dve2UFKe.js → state.js-DbUk4Hrz.js} +2 -2
  17. package/build/server/chunks/entries/pages/{_error.svelte.js-DUc94aLg.js → _error.svelte.js-AsgAVyDR.js} +3 -3
  18. package/build/server/chunks/entries/pages/{_page.svelte.js-CGKKJjvq.js → _page.svelte.js-CFdCjELr.js} +154 -198
  19. package/build/server/chunks/{handler-DndMFIB-.js → handler-Bx2fbkEJ.js} +3 -3
  20. package/build/server/chunks/{index.js-XCtYQ9iw.js → index.js-BldXQ38P.js} +2 -2
  21. package/build/server/chunks/{manifest.js-B6QH7eda.js → manifest.js-Du-9DaEd.js} +4 -4
  22. package/build/server/chunks/nodes/1.js-D55AmdZs.js +9 -0
  23. package/build/server/chunks/nodes/{2.js-DiZQ86Is.js → 2.js-DGLcInR6.js} +4 -4
  24. package/package.json +1 -1
  25. package/template/.dsi/prompts.sqlite +0 -0
  26. package/template/.dsi/resources/plugins-reff.md +6 -5
  27. package/build/client/_app/immutable/assets/2.BuaCdYrs.css +0 -1
  28. package/build/client/_app/immutable/chunks/B7sQH3rV.js +0 -1
  29. package/build/client/_app/immutable/chunks/ivdzpE2c.js +0 -1
  30. package/build/client/_app/immutable/entry/start.DMTgnn1w.js +0 -1
  31. package/build/server/chunks/nodes/1.js-DgkiAL8m.js +0 -9
@@ -1,4 +1,4 @@
1
- import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-CiymEM9G.js';
1
+ import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-D_QJoxN-.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-D9tSYE7f.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-BW7TwbBy.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-Dve2UFKe.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-DbUk4Hrz.js';
11
11
  import 'yaml';
12
12
  import 'html-to-image';
13
13
  import hljs from 'highlight.js/lib/core';
@@ -12726,6 +12726,38 @@ var turnfailed1 = ((inputs = {}, options = {}) => {
12726
12726
  return en_turnfailed1();
12727
12727
  });
12728
12728
  //#endregion
12729
+ //#region src/lib/paraglide/messages/turninflight2.js
12730
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
12731
+ /** @typedef {{}} Turninflight2Inputs */
12732
+ var en_turninflight2 = () => {
12733
+ return `Turn in flight…`;
12734
+ };
12735
+ var zh_turninflight2 = () => {
12736
+ return `回合进行中…`;
12737
+ };
12738
+ var id_turninflight2 = () => {
12739
+ return `Giliran sedang berjalan…`;
12740
+ };
12741
+ var es_turninflight2 = () => {
12742
+ return `Turno en curso…`;
12743
+ };
12744
+ /**
12745
+ * | output |
12746
+ * | --- |
12747
+ * | "Turn in flight…" |
12748
+ *
12749
+ * @param {Turninflight2Inputs} inputs
12750
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
12751
+ * @returns {LocalizedString}
12752
+ */
12753
+ var turninflight2 = ((inputs = {}, options = {}) => {
12754
+ const locale = options.locale ?? getLocale();
12755
+ if (locale === "zh") return zh_turninflight2();
12756
+ if (locale === "id") return id_turninflight2();
12757
+ if (locale === "es") return es_turninflight2();
12758
+ return en_turninflight2();
12759
+ });
12760
+ //#endregion
12729
12761
  //#region src/lib/paraglide/messages/turnstopped1.js
12730
12762
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
12731
12763
  /** @typedef {{}} Turnstopped1Inputs */
@@ -13865,6 +13897,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
13865
13897
  toolTitleToolCall: () => tooltitletoolcall3,
13866
13898
  toolTitleWrite: () => tooltitlewrite2,
13867
13899
  turnFailed: () => turnfailed1,
13900
+ turnInFlight: () => turninflight2,
13868
13901
  turnStopped: () => turnstopped1,
13869
13902
  turnTokenUsage: () => turntokenusage2,
13870
13903
  turnUsage: () => turnusage1,
@@ -14295,6 +14328,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
14295
14328
  toolTitleToolCall: () => tooltitletoolcall3,
14296
14329
  toolTitleWrite: () => tooltitlewrite2,
14297
14330
  turnFailed: () => turnfailed1,
14331
+ turnInFlight: () => turninflight2,
14298
14332
  turnStopped: () => turnstopped1,
14299
14333
  turnTokenUsage: () => turntokenusage2,
14300
14334
  turnUsage: () => turnusage1,
@@ -14463,6 +14497,20 @@ function Bookmark_plus($$renderer, $$props) {
14463
14497
  ]));
14464
14498
  }
14465
14499
  //#endregion
14500
+ //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/camera.svelte
14501
+ function Camera($$renderer, $$props) {
14502
+ let { $$slots, $$events, ...props } = $$props;
14503
+ Icon($$renderer, spread_props([
14504
+ { name: "camera" },
14505
+ props,
14506
+ { iconNode: [["path", { "d": "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z" }], ["circle", {
14507
+ "cx": "12",
14508
+ "cy": "13",
14509
+ "r": "3"
14510
+ }]] }
14511
+ ]));
14512
+ }
14513
+ //#endregion
14466
14514
  //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/check.svelte
14467
14515
  function Check($$renderer, $$props) {
14468
14516
  let { $$slots, $$events, ...props } = $$props;
@@ -14664,31 +14712,6 @@ function Hourglass($$renderer, $$props) {
14664
14712
  ]));
14665
14713
  }
14666
14714
  //#endregion
14667
- //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/image.svelte
14668
- function Image($$renderer, $$props) {
14669
- let { $$slots, $$events, ...props } = $$props;
14670
- Icon($$renderer, spread_props([
14671
- { name: "image" },
14672
- props,
14673
- { iconNode: [
14674
- ["rect", {
14675
- "width": "18",
14676
- "height": "18",
14677
- "x": "3",
14678
- "y": "3",
14679
- "rx": "2",
14680
- "ry": "2"
14681
- }],
14682
- ["circle", {
14683
- "cx": "9",
14684
- "cy": "9",
14685
- "r": "2"
14686
- }],
14687
- ["path", { "d": "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" }]
14688
- ] }
14689
- ]));
14690
- }
14691
- //#endregion
14692
14715
  //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/list-checks.svelte
14693
14716
  function List_checks($$renderer, $$props) {
14694
14717
  let { $$slots, $$events, ...props } = $$props;
@@ -16541,7 +16564,10 @@ function CanvasCopyButton($$renderer, $$props) {
16541
16564
  let { container, title = "Copy canvas as image (Shift+Click to save)", size = 12, class: className = "", mode = "full" } = $$props;
16542
16565
  $$renderer.push(`<button data-svelte="CanvasCopyButton" type="button"${attr_class(className)}${attr("title", title)} data-testid="canvas-copy-button">`);
16543
16566
  $$renderer.push("<!--[-1-->");
16544
- Image($$renderer, { size });
16567
+ Camera($$renderer, {
16568
+ size,
16569
+ class: "text-red-500"
16570
+ });
16545
16571
  $$renderer.push(`<!--]--></button>`);
16546
16572
  });
16547
16573
  }
@@ -17567,6 +17593,31 @@ function StickToBottomToggle($$renderer, $$props) {
17567
17593
  });
17568
17594
  }
17569
17595
  //#endregion
17596
+ //#region src/lib/components/composer/sibling/StreamingIndicator.svelte
17597
+ function StreamingIndicator($$renderer, $$props) {
17598
+ $$renderer.component(($$renderer) => {
17599
+ /**
17600
+ * StreamingIndicator — three bouncing dots (OCI Composer port,
17601
+ * 2026-08-24). Presentational: title in, dots out.
17602
+ *
17603
+ * Default anchor is the OCI textarea overlay, DSI-tuned: absolute
17604
+ * against the host's RELATIVE wrapper — right edge, vertically
17605
+ * centered on the host's ACTION BUTTON (bottom-anchored at half the
17606
+ * button height, so the dots stay put when the textarea auto-grows;
17607
+ * the row is items-end, wrapper bottom = button bottom). Streaming
17608
+ * red, pointer-events none. `center` switches to inline flow for
17609
+ * hosts that place the dots in the transcript themselves (e.g. the
17610
+ * snippet-passing fixture).
17611
+ *
17612
+ * Contract pins (chat-components tests): the testid element carries
17613
+ * role=status + aria-label and holds EXACTLY the three dot spans —
17614
+ * no wrapper element.
17615
+ */
17616
+ let { title = "streaming", center = false } = $$props;
17617
+ $$renderer.push(`<span data-svelte="StreamingIndicator"${attr_class("streaming-indicator svelte-1sd3euh", void 0, { "centered": center })} role="status"${attr("aria-label", t(streaming))} data-testid="streaming-indicator"${attr("title", title)}><span class="dot dot-1 svelte-1sd3euh"></span> <span class="dot dot-2 svelte-1sd3euh"></span> <span class="dot dot-3 svelte-1sd3euh"></span></span>`);
17618
+ });
17619
+ }
17620
+ //#endregion
17570
17621
  //#region src/lib/utils/token-estimate.ts
17571
17622
  /**
17572
17623
  * Client-side token estimation heuristic (OCI port, 2026-08-23).
@@ -17625,31 +17676,6 @@ function ModelSelector($$renderer, $$props) {
17625
17676
  });
17626
17677
  }
17627
17678
  //#endregion
17628
- //#region src/lib/components/composer/sibling/StreamingIndicator.svelte
17629
- function StreamingIndicator($$renderer, $$props) {
17630
- $$renderer.component(($$renderer) => {
17631
- /**
17632
- * StreamingIndicator — three bouncing dots (OCI Composer port,
17633
- * 2026-08-24). Presentational: title in, dots out.
17634
- *
17635
- * Default anchor is the OCI textarea overlay, DSI-tuned: absolute
17636
- * against the host's RELATIVE wrapper — right edge, vertically
17637
- * centered on the host's ACTION BUTTON (bottom-anchored at half the
17638
- * button height, so the dots stay put when the textarea auto-grows;
17639
- * the row is items-end, wrapper bottom = button bottom). Streaming
17640
- * red, pointer-events none. `center` switches to inline flow for
17641
- * hosts that place the dots in the transcript themselves (e.g. the
17642
- * snippet-passing fixture).
17643
- *
17644
- * Contract pins (chat-components tests): the testid element carries
17645
- * role=status + aria-label and holds EXACTLY the three dot spans —
17646
- * no wrapper element.
17647
- */
17648
- let { title = "streaming", center = false } = $$props;
17649
- $$renderer.push(`<span data-svelte="StreamingIndicator"${attr_class("streaming-indicator svelte-1sd3euh", void 0, { "centered": center })} role="status"${attr("aria-label", t(streaming))} data-testid="streaming-indicator"${attr("title", title)}><span class="dot dot-1 svelte-1sd3euh"></span> <span class="dot dot-2 svelte-1sd3euh"></span> <span class="dot dot-3 svelte-1sd3euh"></span></span>`);
17650
- });
17651
- }
17652
- //#endregion
17653
17679
  //#region src/lib/components/composer/sibling/ContextConsumption.svelte
17654
17680
  function ContextConsumption($$renderer, $$props) {
17655
17681
  $$renderer.component(($$renderer) => {
@@ -18147,24 +18173,13 @@ function PromptManagerSearch($$renderer, $$props) {
18147
18173
  //#endregion
18148
18174
  //#region src/lib/components/prompt-manager/PromptManagerToolbar.svelte
18149
18175
  function PromptManagerToolbar($$renderer, $$props) {
18150
- $$renderer.component(($$renderer) => {
18151
- /**
18152
- * PromptManagerToolbar — the sticky header's first row (2026-09-19):
18153
- * LEFT — the prompts.sqlite FULL path (server-expanded, rides
18154
- * /api/config prompts.dbPath; unknown → the filename only).
18155
- * RIGHT — a CanvasCopyButton capturing the whole PromptManagerPanel
18156
- * (the container prop is the panel's root element).
18157
- */
18158
- let { dbPath, container } = $$props;
18159
- $$renderer.push(`<div data-svelte="PromptManagerToolbar" class="mgr-toolbar-row svelte-1j41j2p"><span class="mgr-db-path svelte-1j41j2p"${attr("title", dbPath)}>${escape_html(dbPath || "prompts.sqlite")}</span> `);
18160
- CanvasCopyButton($$renderer, {
18161
- container,
18162
- mode: "visible",
18163
- title: t(copypanelasimage3),
18164
- class: "shrink-0 rounded-md text-slate-400 hover:bg-slate-100 hover:text-slate-600"
18165
- });
18166
- $$renderer.push(`<!----></div>`);
18167
- });
18176
+ /**
18177
+ * PromptManagerToolbar — the sticky header's first row (2026-09-19):
18178
+ * LEFT — the prompts.sqlite FULL path (server-expanded, rides
18179
+ * /api/config prompts.dbPath; unknown → the filename only).
18180
+ */
18181
+ let { dbPath } = $$props;
18182
+ $$renderer.push(`<div data-svelte="PromptManagerToolbar" class="mgr-toolbar-row svelte-1j41j2p"><span class="mgr-db-path svelte-1j41j2p"${attr("title", dbPath)}>${escape_html(dbPath || "prompts.sqlite")}</span></div>`);
18168
18183
  }
18169
18184
  //#endregion
18170
18185
  //#region src/lib/components/prompt-manager/PromptManagerHeader.svelte
@@ -18183,7 +18198,7 @@ function PromptManagerHeader($$renderer, $$props) {
18183
18198
  * $bindable (the search box owns keystrokes, the panel owns the
18184
18199
  * value — it derives the +token filter from it).
18185
18200
  */
18186
- let { selectedCount, vocabulary, tagFilter, dbPath, container, sortState, loading, hasRows, addingNew, searchQ = "", textMode = "pre", ontoggle, onsearchinput, ondeleteselected, onunselectall, onsort, onadd, oncanceladd } = $$props;
18201
+ let { selectedCount, vocabulary, tagFilter, dbPath, sortState, loading, hasRows, addingNew, searchQ = "", textMode = "pre", ontoggle, onsearchinput, ondeleteselected, onunselectall, onsort, onadd, oncanceladd } = $$props;
18187
18202
  /** Direction icon for a column header. */
18188
18203
  function sortIcon(col) {
18189
18204
  if (!sortState || sortState.col !== col) return "↕";
@@ -18193,10 +18208,7 @@ function PromptManagerHeader($$renderer, $$props) {
18193
18208
  let $$inner_renderer;
18194
18209
  function $$render_inner($$renderer) {
18195
18210
  $$renderer.push(`<div data-svelte="PromptManagerHeader" class="mgr-header svelte-aw18b1">`);
18196
- PromptManagerToolbar($$renderer, {
18197
- dbPath,
18198
- container
18199
- });
18211
+ PromptManagerToolbar($$renderer, { dbPath });
18200
18212
  $$renderer.push(`<!----> <div class="mgr-header-bar svelte-aw18b1"><button type="button" class="mgr-btn mgr-btn-danger svelte-aw18b1"${attr("disabled", selectedCount === 0, true)}${attr("title", selectedCount > 0 ? `Delete ${selectedCount} selected` : "Select rows to enable delete")}>${escape_html(t(del))}${escape_html(selectedCount > 0 ? ` (${selectedCount})` : "")}</button> <div class="mgr-toolbar svelte-aw18b1">`);
18201
18213
  if (vocabulary.length > 0) {
18202
18214
  $$renderer.push("<!--[0-->");
@@ -18367,8 +18379,6 @@ function PromptManagerPanel($$renderer, $$props) {
18367
18379
  let newMacro = false;
18368
18380
  let errorMsg = null;
18369
18381
  let searchTimer = null;
18370
- /** The panel's root element — the CanvasCopyButton capture target. */
18371
- let rootEl = null;
18372
18382
  const profile = derived(() => null);
18373
18383
  /** The operator's vocabulary (settings.yaml prompts.tags via /api/config). */
18374
18384
  const vocabulary = derived(() => appConfig().prompts.tags);
@@ -18503,7 +18513,6 @@ function PromptManagerPanel($$renderer, $$props) {
18503
18513
  selectedCount: selected.size,
18504
18514
  vocabulary: vocabulary(),
18505
18515
  dbPath: appConfig().prompts.dbPath,
18506
- container: rootEl,
18507
18516
  tagFilter,
18508
18517
  sortState,
18509
18518
  loading: loading$1,
@@ -20976,7 +20985,7 @@ function ToolsAndStatusHeader($$renderer, $$props) {
20976
20985
  CanvasCopyButton($$renderer, {
20977
20986
  container: transcript,
20978
20987
  title: t(copyconversationimage2),
20979
- size: 12,
20988
+ size: 18,
20980
20989
  class: "shrink-0 rounded-md p-1 text-slate-400 hover:bg-slate-100 hover:text-slate-600"
20981
20990
  });
20982
20991
  } else $$renderer.push("<!--[-1-->");
@@ -27944,7 +27953,12 @@ function ConversationPanel($$renderer, $$props) {
27944
27953
  stick,
27945
27954
  ontoggle: onStickToggle
27946
27955
  });
27947
- $$renderer.push(`<!----></div>`);
27956
+ $$renderer.push(`<!----> `);
27957
+ if (store.isStreaming) {
27958
+ $$renderer.push("<!--[0-->");
27959
+ StreamingIndicator($$renderer, { title: turninflight2() });
27960
+ } else $$renderer.push("<!--[-1-->");
27961
+ $$renderer.push(`<!--]--></div>`);
27948
27962
  } else $$renderer.push("<!--[-1-->");
27949
27963
  $$renderer.push(`<!--]--></div>`);
27950
27964
  }
@@ -28061,7 +28075,6 @@ function TerminalDesk($$renderer, $$props) {
28061
28075
  /** Null = self-open (the panel runs its own ladder and reports back
28062
28076
  * via onAssigned); set = the desk holds this session's lease. */
28063
28077
  let { onShellExit, restored = null, onMirror } = $$props;
28064
- const captureEl = derived(() => null);
28065
28078
  let nextKey = 1;
28066
28079
  const mkKey = () => nextKey++;
28067
28080
  const defaultTab = () => ({
@@ -28163,30 +28176,19 @@ function TerminalDesk($$renderer, $$props) {
28163
28176
  $$renderer.push(`<div class="p-3 text-xs text-slate-500" data-testid="terminal-desk-restoring">...</div>`);
28164
28177
  } else {
28165
28178
  $$renderer.push("<!--[-1-->");
28166
- {
28167
- function actions($$renderer) {
28168
- CanvasCopyButton($$renderer, {
28169
- container: captureEl(),
28170
- mode: "visible",
28171
- title: t(copypanelasimage3),
28172
- size: 12
28173
- });
28174
- }
28175
- TerminalTabHeader($$renderer, {
28176
- actions,
28177
- children: ($$renderer) => {
28178
- $$renderer.push(`<!--[-->`);
28179
- const each_array = ensure_array_like(tabs);
28180
- for (let i = 0, $$length = each_array.length; i < $$length; i++) {
28181
- each_array[i];
28182
- TerminalTabButton($$renderer, {
28183
- index: i,
28184
- label: "T" + (i + 1),
28185
- selected: i === selectedTab});
28186
- }
28187
- $$renderer.push(`<!--]-->`);
28188
- }});
28189
- }
28179
+ TerminalTabHeader($$renderer, {
28180
+ children: ($$renderer) => {
28181
+ $$renderer.push(`<!--[-->`);
28182
+ const each_array = ensure_array_like(tabs);
28183
+ for (let i = 0, $$length = each_array.length; i < $$length; i++) {
28184
+ each_array[i];
28185
+ TerminalTabButton($$renderer, {
28186
+ index: i,
28187
+ label: "T" + (i + 1),
28188
+ selected: i === selectedTab});
28189
+ }
28190
+ $$renderer.push(`<!--]-->`);
28191
+ }});
28190
28192
  $$renderer.push(`<!----> <!--[-->`);
28191
28193
  const each_array_1 = ensure_array_like(tabs);
28192
28194
  for (let i = 0, $$length = each_array_1.length; i < $$length; i++) {
@@ -28237,22 +28239,14 @@ function SettingsSkillsToolbar($$renderer, $$props) {
28237
28239
  /**
28238
28240
  * SettingsSkillsToolbar — the shelf's first chrome row (The Shelf
28239
28241
  * Chrome ADR, D2): LEFT the snapshot timestamp ("Snapshot taken: …",
28240
- * the PromptManagerToolbar path-label slot); RIGHT the search input
28241
- * and the panel capture. The collapse/expand fold pill moved to the
28242
+ * the PromptManagerToolbar path-label slot); RIGHT the search input. The collapse/expand fold pill moved to the
28242
28243
  * header, after the reload verb (2026-09-21 operator order).
28243
28244
  *
28244
28245
  * Presentational: the panel owns searchQ ($bindable — the box owns
28245
28246
  * keystrokes, the panel owns the value); this renders the row.
28246
28247
  */
28247
- let { generatedAt, searchQ = "", container } = $$props;
28248
- $$renderer.push(`<div data-svelte="SettingsSkillsToolbar" class="shelf-toolbar svelte-vtrjhj" data-testid="shelf-toolbar"><span class="shelf-generated-label svelte-vtrjhj" data-testid="shelf-generated">${escape_html(t(skillsshelfgeneratedat3))}: ${escape_html(generatedAt)}</span> <div class="shelf-toolbar-actions svelte-vtrjhj"><input class="shelf-search svelte-vtrjhj" type="search"${attr("placeholder", t(skillsshelfsearch2))}${attr("aria-label", t(skillsshelfsearch2))}${attr("value", searchQ)} data-testid="shelf-search"/> <span class="copy-slot svelte-vtrjhj">`);
28249
- CanvasCopyButton($$renderer, {
28250
- container,
28251
- mode: "visible",
28252
- title: t(copypanelasimage3),
28253
- size: 12
28254
- });
28255
- $$renderer.push(`<!----></span></div></div>`);
28248
+ let { generatedAt, searchQ = "" } = $$props;
28249
+ $$renderer.push(`<div data-svelte="SettingsSkillsToolbar" class="shelf-toolbar svelte-vtrjhj" data-testid="shelf-toolbar"><span class="shelf-generated-label svelte-vtrjhj" data-testid="shelf-generated">${escape_html(t(skillsshelfgeneratedat3))}: ${escape_html(generatedAt)}</span> <div class="shelf-toolbar-actions svelte-vtrjhj"><input class="shelf-search svelte-vtrjhj" type="search"${attr("placeholder", t(skillsshelfsearch2))}${attr("aria-label", t(skillsshelfsearch2))}${attr("value", searchQ)} data-testid="shelf-search"/></div></div>`);
28256
28250
  bind_props($$props, { searchQ });
28257
28251
  });
28258
28252
  }
@@ -28389,14 +28383,12 @@ function SettingsSkillsPanel($$renderer, $$props) {
28389
28383
  let tab = initialTab;
28390
28384
  initialCollapsed === null ? null : new Set(initialCollapsed);
28391
28385
  let searchQ = initialSearch;
28392
- let rootEl = null;
28393
28386
  let $$settled = true;
28394
28387
  let $$inner_renderer;
28395
28388
  function $$render_inner($$renderer) {
28396
28389
  $$renderer.push(`<div data-svelte="SettingsSkillsPanel" class="skill-shelf svelte-lnunga" data-testid="skill-shelf">`);
28397
28390
  SettingsSkillsToolbar($$renderer, {
28398
28391
  generatedAt: "",
28399
- container: rootEl,
28400
28392
  get searchQ() {
28401
28393
  return searchQ;
28402
28394
  },
@@ -28458,29 +28450,31 @@ function PluginManagerReloadButton($$renderer, $$props) {
28458
28450
  //#endregion
28459
28451
  //#region src/lib/components/settings-plugins/PluginManagerHeaderActions.svelte
28460
28452
  function PluginManagerHeaderActions($$renderer, $$props) {
28461
- /**
28462
- * PluginManagerHeaderActions - the rack header's action cluster,
28463
- * the shelf HeaderActions' grammar (SettingsSkillsHeaderActions,
28464
- * The Shelf Chrome ADR): the reload verb + the lineage-fold pill
28465
- * (collapse-all / expand-all, sits AFTER the reload verb).
28466
- * Presentational: every verb and all state are owned by
28467
- * PluginManagerPanel.
28468
- */
28469
- let { loading, floorBounce} = $$props;
28470
- $$renderer.push(`<div data-svelte="PluginManagerHeaderActions" class="rack-header-actions svelte-1g0idp7">`);
28471
- PluginManagerReloadButton($$renderer, {
28472
- disabled: loading || floorBounce});
28473
- $$renderer.push(`<!----> <div class="seg-group svelte-1g0idp7" role="group" aria-label="Plugin Rack" data-testid="rack-fold-toggle"><button type="button" class="seg left svelte-1g0idp7" data-testid="rack-collapse-all">`);
28474
- Chevrons_down_up($$renderer, {
28475
- size: 12,
28476
- "aria-hidden": "true"
28477
- });
28478
- $$renderer.push(`<!----></button> <button type="button" class="seg right svelte-1g0idp7" data-testid="rack-expand-all">`);
28479
- Chevrons_up_down($$renderer, {
28480
- size: 12,
28481
- "aria-hidden": "true"
28453
+ $$renderer.component(($$renderer) => {
28454
+ /**
28455
+ * PluginManagerHeaderActions - the rack header's action cluster,
28456
+ * the shelf HeaderActions' grammar (SettingsSkillsHeaderActions,
28457
+ * The Shelf Chrome ADR): the reload verb + the lineage-fold pill
28458
+ * (collapse-all / expand-all, sits AFTER the reload verb).
28459
+ * Presentational: every verb and all state are owned by
28460
+ * PluginManagerPanel.
28461
+ */
28462
+ let { loading, floorBounce} = $$props;
28463
+ $$renderer.push(`<div data-svelte="PluginManagerHeaderActions" class="rack-header-actions svelte-1g0idp7">`);
28464
+ PluginManagerReloadButton($$renderer, {
28465
+ disabled: loading || floorBounce});
28466
+ $$renderer.push(`<!----> <div class="seg-group svelte-1g0idp7" role="group"${attr("aria-label", t(pluginracktitle2))} data-testid="rack-fold-toggle"><button type="button" class="seg left svelte-1g0idp7" data-testid="rack-collapse-all">`);
28467
+ Chevrons_down_up($$renderer, {
28468
+ size: 12,
28469
+ "aria-hidden": "true"
28470
+ });
28471
+ $$renderer.push(`<!----></button> <button type="button" class="seg right svelte-1g0idp7" data-testid="rack-expand-all">`);
28472
+ Chevrons_up_down($$renderer, {
28473
+ size: 12,
28474
+ "aria-hidden": "true"
28475
+ });
28476
+ $$renderer.push(`<!----></button></div></div>`);
28482
28477
  });
28483
- $$renderer.push(`<!----></button></div></div>`);
28484
28478
  }
28485
28479
  //#endregion
28486
28480
  //#region src/lib/components/settings-plugins/PluginManagerHeader.svelte
@@ -28509,19 +28503,11 @@ function PluginManagerToolbar($$renderer, $$props) {
28509
28503
  /**
28510
28504
  * PluginManagerToolbar — the rack's first chrome row, the shelf
28511
28505
  * Toolbar's grammar (SettingsSkillsToolbar, The Shelf Chrome ADR D2):
28512
- * LEFT the snapshot timestamp; RIGHT the search input and the panel
28513
- * capture. Presentational: the panel owns searchQ ($bindable — the
28506
+ * LEFT the snapshot timestamp; RIGHT the search input. Presentational: the panel owns searchQ ($bindable — the
28514
28507
  * box owns keystrokes, the panel owns the value); this renders the row.
28515
28508
  */
28516
- let { generatedAt, searchQ = "", container } = $$props;
28517
- $$renderer.push(`<div data-svelte="PluginManagerToolbar" class="rack-toolbar svelte-m789m0" data-testid="rack-toolbar"><span class="rack-generated-label svelte-m789m0" data-testid="rack-generated">${escape_html(t(skillsshelfgeneratedat3))}: ${escape_html(generatedAt)}</span> <div class="rack-toolbar-actions svelte-m789m0"><input class="rack-search svelte-m789m0" type="search"${attr("placeholder", t(pluginracksearch2))}${attr("aria-label", t(pluginracksearch2))}${attr("value", searchQ)} data-testid="rack-search"/> <span class="copy-slot svelte-m789m0">`);
28518
- CanvasCopyButton($$renderer, {
28519
- container,
28520
- mode: "visible",
28521
- title: t(copypanelasimage3),
28522
- size: 12
28523
- });
28524
- $$renderer.push(`<!----></span></div></div>`);
28509
+ let { generatedAt, searchQ = "" } = $$props;
28510
+ $$renderer.push(`<div data-svelte="PluginManagerToolbar" class="rack-toolbar svelte-m789m0" data-testid="rack-toolbar"><span class="rack-generated-label svelte-m789m0" data-testid="rack-generated">${escape_html(t(skillsshelfgeneratedat3))}: ${escape_html(generatedAt)}</span> <div class="rack-toolbar-actions svelte-m789m0"><input class="rack-search svelte-m789m0" type="search"${attr("placeholder", t(pluginracksearch2))}${attr("aria-label", t(pluginracksearch2))}${attr("value", searchQ)} data-testid="rack-search"/></div></div>`);
28525
28511
  bind_props($$props, { searchQ });
28526
28512
  });
28527
28513
  }
@@ -28550,14 +28536,12 @@ function PluginManagerPanel($$renderer, $$props) {
28550
28536
  let floorBounce = false;
28551
28537
  let tab = initialTab === "uninstall" ? "uninstall" : "install";
28552
28538
  let searchQ = "";
28553
- let rootEl = null;
28554
28539
  let $$settled = true;
28555
28540
  let $$inner_renderer;
28556
28541
  function $$render_inner($$renderer) {
28557
28542
  $$renderer.push(`<div data-svelte="PluginManagerPanel" class="rack svelte-z3jis1" data-testid="rack-body">`);
28558
28543
  PluginManagerToolbar($$renderer, {
28559
28544
  generatedAt: "",
28560
- container: rootEl,
28561
28545
  get searchQ() {
28562
28546
  return searchQ;
28563
28547
  },
@@ -28732,14 +28716,6 @@ function InjectedDocPanel($$renderer, $$props) {
28732
28716
  //#region src/lib/components/panels/WorkspaceExplorerButtons.svelte
28733
28717
  function WorkspaceExplorerButtons($$renderer, $$props) {
28734
28718
  $$renderer.component(($$renderer) => {
28735
- /**
28736
- * WorkspaceExplorerButtons — the toolbar's action cluster, extracted
28737
- * from WorkspaceExplorerToolbar (2026-09-13): Refresh, Collapse-all,
28738
- * and the panel-column PNG capture button. INTENT ONLY (Module
28739
- * Communication Map): the buttons emit onRefresh / onCollapseAll —
28740
- * the panel owns the state the intents act on.
28741
- */
28742
- let { container} = $$props;
28743
28719
  $$renderer.push(`<div data-svelte="WorkspaceExplorerButtons" class="actions svelte-14l0ymn"><button class="head-btn svelte-14l0ymn" data-testid="explorer-refresh"${attr("aria-label", t(refresh))}${attr("title", t(refresh))}>`);
28744
28720
  Refresh_cw($$renderer, {
28745
28721
  size: 12,
@@ -28750,24 +28726,16 @@ function WorkspaceExplorerButtons($$renderer, $$props) {
28750
28726
  size: 12,
28751
28727
  "aria-hidden": "true"
28752
28728
  });
28753
- $$renderer.push(`<!----></button> `);
28754
- CanvasCopyButton($$renderer, {
28755
- container,
28756
- title: t(copypanelcolumn2),
28757
- size: 12
28758
- });
28759
- $$renderer.push(`<!----></div>`);
28729
+ $$renderer.push(`<!----></button></div>`);
28760
28730
  });
28761
28731
  }
28762
28732
  //#endregion
28763
28733
  //#region src/lib/components/panels/WorkspaceExplorerToolbar.svelte
28764
28734
  function WorkspaceExplorerToolbar($$renderer, $$props) {
28765
28735
  $$renderer.component(($$renderer) => {
28766
- let columnEl = null;
28767
28736
  let { activeTab = "explorer"} = $$props;
28768
28737
  $$renderer.push(`<div data-svelte="WorkspaceExplorerToolbar" class="explorer-toolbar svelte-b18z79" data-testid="explorer-toolbar"><div class="tabs svelte-b18z79" role="tablist" data-testid="explorer-tabs"><button role="tab"${attr_class("tab svelte-b18z79", void 0, { "active": activeTab === "explorer" })}${attr("aria-selected", activeTab === "explorer")} data-testid="git-tab-explorer">${escape_html(t(giteyetabexplorer3))}</button> <button role="tab"${attr_class("tab svelte-b18z79", void 0, { "active": activeTab === "changes" })}${attr("aria-selected", activeTab === "changes")} data-testid="git-tab-changes">${escape_html(t(giteyetabchanges3))}</button></div> `);
28769
- WorkspaceExplorerButtons($$renderer, {
28770
- container: columnEl});
28738
+ WorkspaceExplorerButtons($$renderer);
28771
28739
  $$renderer.push(`<!----></div>`);
28772
28740
  });
28773
28741
  }
@@ -29146,7 +29114,8 @@ function WorkspaceFileToolbar($$renderer, $$props) {
29146
29114
  CanvasCopyButton($$renderer, {
29147
29115
  container: columnEl,
29148
29116
  title: workspacePanelCopy.common.copyColumn,
29149
- size: 12
29117
+ size: 18,
29118
+ class: "shrink-0 rounded-md p-1 text-slate-400 hover:bg-slate-100 hover:text-slate-600"
29150
29119
  });
29151
29120
  $$renderer.push(`<!----></span></div>`);
29152
29121
  bind_props($$props, { tab });
@@ -29985,30 +29954,6 @@ function PanelsZoom($$renderer, $$props) {
29985
29954
  //#region src/lib/components/panels/PanelHeader.svelte
29986
29955
  function PanelHeader($$renderer, $$props) {
29987
29956
  $$renderer.component(($$renderer) => {
29988
- /**
29989
- * PanelHeader — a panel column's header strip (Panel Floor W3 task
29990
- * 3.2, ADR-0006). The panel's CONVERSATION header (rename, workspace
29991
- * chip, status) stays inside ConversationPanel — this is the floor
29992
- * chrome strip above it: which session the column holds, the move
29993
- * chevrons (OCI ColumnHeader precedent: swap with the neighbor
29994
- * through the registry, hidden at the row's edges), and the close
29995
- * button. Presentational except the move invoke, which is a registry
29996
- * action (leaf→root); close reports upward via onremove.
29997
- *
29998
- * Session-id label (2026-08-25): the label is the session id in
29999
- * full — never truncated — prefixed by a copy-id icon button
30000
- * (SessionIdAndName precedent: the click copies the id, 2s ✓
30001
- * feedback). The session title is deliberately absent: it already
30002
- * renders below in ConversationPanel's SessionIdAndName, so the
30003
- * floor strip carries only the column's identity.
30004
- *
30005
- * Lens mode (The Panel Loupe ADR D8, 2026-09-04): the loupe renders
30006
- * this header whole but its floor-identity verbs inert — BOTH move
30007
- * chevrons and the close render visible-disabled regardless of edge
30008
- * or mount props (order/membership live on the column), while label
30009
- * and copy-id stay live (the clipboard has no floor membership).
30010
- * Default false: a floor mount renders exactly as before.
30011
- */
30012
29957
  let { panelId, sessionId, label, copyValue, copyLabel, labelTestId, selected = false, canMoveLeft = false, canMoveRight = false, lens = false, onremove } = $$props;
30013
29958
  $$renderer.push(`<div data-svelte="PanelHeader"${attr_class("panel-header svelte-1xanvl9", void 0, { "selected": selected })} data-testid="panel-header"${attr("title", label ?? sessionId)}><span class="label svelte-1xanvl9"${attr("data-testid", labelTestId ?? "panel-header-label")}>`);
30014
29959
  if (copyValue !== void 0 || label === void 0) {
@@ -30042,6 +29987,17 @@ function PanelHeader($$renderer, $$props) {
30042
29987
  $$renderer.push(`<!----></button>`);
30043
29988
  } else $$renderer.push("<!--[-1-->");
30044
29989
  $$renderer.push(`<!--]--> `);
29990
+ if (!lens) {
29991
+ $$renderer.push("<!--[0-->");
29992
+ CanvasCopyButton($$renderer, {
29993
+ container: void 0,
29994
+ mode: "visible",
29995
+ title: workspacePanelCopy.common.copyColumn,
29996
+ size: 14,
29997
+ class: "inline-flex h-[22px] w-[22px] shrink-0 items-center justify-center rounded transition-colors hover:bg-surface-hover"
29998
+ });
29999
+ } else $$renderer.push("<!--[-1-->");
30000
+ $$renderer.push(`<!--]--> `);
30045
30001
  if (onremove || lens) {
30046
30002
  $$renderer.push("<!--[0-->");
30047
30003
  $$renderer.push(`<button type="button" class="hdr-btn svelte-1xanvl9"${attr("disabled", lens, true)} data-testid="panel-close"${attr("aria-label", t(() => closepanelnamed2({ id: sessionId })))}${attr("title", t(closepanelhint2))}>`);
@@ -31252,4 +31208,4 @@ function _page($$renderer, $$props) {
31252
31208
  }
31253
31209
 
31254
31210
  export { _page as default };
31255
- //# sourceMappingURL=_page.svelte.js-CGKKJjvq.js.map
31211
+ //# sourceMappingURL=_page.svelte.js-CFdCjELr.js.map
@@ -9,8 +9,8 @@ import * as qs from 'node:querystring';
9
9
  import { Readable } from 'node:stream';
10
10
  import { S as SvelteKitError } from './chunks/shared.js-HQ0rfhm4.js';
11
11
  import './chunks/utils.js-CAdNO8Tu.js';
12
- import { S as Server } from './index.js-XCtYQ9iw.js';
13
- import { m as manifest } from './manifest.js-B6QH7eda.js';
12
+ import { S as Server } from './index.js-BldXQ38P.js';
13
+ import { m as manifest } from './manifest.js-Du-9DaEd.js';
14
14
  import { env, dir, env_prefix } from '../../env.js';
15
15
  import { format } from 'node:url';
16
16
 
@@ -1732,4 +1732,4 @@ const handler = sequence(
1732
1732
  );
1733
1733
 
1734
1734
  export { format_listening_address as f, handler as h, polka as p };
1735
- //# sourceMappingURL=handler-DndMFIB-.js.map
1735
+ //# sourceMappingURL=handler-Bx2fbkEJ.js.map
@@ -1,4 +1,4 @@
1
- import { _ as __commonJSMin, o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal.js-CiymEM9G.js';
1
+ import { _ as __commonJSMin, o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal.js-D_QJoxN-.js';
2
2
  import { n as noop, T as TRAILING_SLASH_PARAM, I as INVALIDATED_PARAM, R as Redirect, b as get_relative_path, S as SvelteKitError, g as get_status, t as text_encoder, o as once, H as HttpError, d as normalize_error, e as create_remote_key, f as parse_remote_arg, s as stringify, h as stringify$1, A as ActionFailure, i as split_remote_key, j as base64_encode } from './chunks/shared.js-HQ0rfhm4.js';
3
3
  import { b as base, o as override, a as assets, r as reset, c as app_dir } from './chunks/internal2.js-BcS47nI-.js';
4
4
  import { f as format_server_error, j as json, i as is_form_content_type, t as text, h as has_prerendered_path, a as handle_fatal_error, r as redirect_response, g as get_set_cookies, n as negotiate, w as with_request_store, p as parseString, m as merge_tracing, b as method_not_allowed, s as static_error_page, c as handle_error_and_jsonify, d as get_global_name, e as create_replacer, k as serialize_uses, l as clarify_devalue_error, E as ENDPOINT_METHODS, P as PAGE_METHODS, o as get_node_type, q as isRedirect, u as escape_html, v as error, x as deserialize_binary_form } from './chunks/utils.js-CAdNO8Tu.js';
@@ -3861,4 +3861,4 @@ var Server = class {
3861
3861
  };
3862
3862
 
3863
3863
  export { Server as S };
3864
- //# sourceMappingURL=index.js-XCtYQ9iw.js.map
3864
+ //# sourceMappingURL=index.js-BldXQ38P.js.map
@@ -10,11 +10,11 @@ return {
10
10
  assets: new Set(["favicon.svg"]),
11
11
  mimeTypes: {".svg":"image/svg+xml"},
12
12
  _: {
13
- client: {start:"_app/immutable/entry/start.DMTgnn1w.js",app:"_app/immutable/entry/app.BTSQLfJD.js",imports:["_app/immutable/entry/start.DMTgnn1w.js","_app/immutable/chunks/XOquLDe4.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/entry/app.BTSQLfJD.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
13
+ client: {start:"_app/immutable/entry/start.CVl0g0cv.js",app:"_app/immutable/entry/app.D8WfdLSe.js",imports:["_app/immutable/entry/start.CVl0g0cv.js","_app/immutable/chunks/66qbK5h1.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/entry/app.D8WfdLSe.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
14
  nodes: [
15
15
  __memo(() => import('./nodes/0.js-B0560RI0.js')),
16
- __memo(() => import('./nodes/1.js-DgkiAL8m.js')),
17
- __memo(() => import('./nodes/2.js-DiZQ86Is.js'))
16
+ __memo(() => import('./nodes/1.js-D55AmdZs.js')),
17
+ __memo(() => import('./nodes/2.js-DGLcInR6.js'))
18
18
  ],
19
19
  remotes: {
20
20
 
@@ -445,4 +445,4 @@ return {
445
445
  })();
446
446
 
447
447
  export { manifest as m };
448
- //# sourceMappingURL=manifest.js-B6QH7eda.js.map
448
+ //# sourceMappingURL=manifest.js-Du-9DaEd.js.map
@@ -0,0 +1,9 @@
1
+ const index = 1;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('../entries/pages/_error.svelte.js-AsgAVyDR.js')).default;
4
+ const imports = ["_app/immutable/nodes/1.X0If5xAN.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D3W5wGWM.js","_app/immutable/chunks/66qbK5h1.js","_app/immutable/chunks/DlfWhx6l.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=1.js-D55AmdZs.js.map