@deepseek-insight/dsi 0.6.11 → 0.6.13

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 (28) hide show
  1. package/.agents/skills/dsi-plugin-rack/rack.d.mts +9 -1
  2. package/build/client/_app/immutable/assets/{2.BuaCdYrs.css → 2.TjyfZ8TI.css} +1 -1
  3. package/build/client/_app/immutable/chunks/BSX3zxxe.js +1 -0
  4. package/build/client/_app/immutable/chunks/CBWX33xU.js +1 -0
  5. package/build/client/_app/immutable/chunks/{BNTNz9oR.js → DH97Ob03.js} +1 -1
  6. package/build/client/_app/immutable/chunks/{KLsbJ_6V.js → eyDitxcV.js} +2 -2
  7. package/build/client/_app/immutable/entry/{app.BNlAGT8a.js → app.DCcnFQ6s.js} +2 -2
  8. package/build/client/_app/immutable/entry/start.Bm2Eu_Kt.js +1 -0
  9. package/build/client/_app/immutable/nodes/{1.CeFdv8vr.js → 1.CDGZQIFv.js} +1 -1
  10. package/build/client/_app/immutable/nodes/{2.Boib-Q5k.js → 2.CkElf2vL.js} +105 -105
  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/{internal.js-XBbRSE8G.js → internal.js-C5Fo4WLt.js} +2 -2
  15. package/build/server/chunks/chunks/{state.js-DgcRLBLq.js → state.js-CNi3NKqw.js} +2 -2
  16. package/build/server/chunks/entries/pages/{_error.svelte.js-CRYTX4NJ.js → _error.svelte.js-PlQs-wbe.js} +3 -3
  17. package/build/server/chunks/entries/pages/{_page.svelte.js-jCShpNgz.js → _page.svelte.js-D7IjMk16.js} +182 -177
  18. package/build/server/chunks/{handler-CDSfkiHz.js → handler-Cggng81p.js} +3 -3
  19. package/build/server/chunks/{index.js-BOeQQ7jF.js → index.js-CB1S72sp.js} +2 -2
  20. package/build/server/chunks/{manifest.js-CvDWy0oM.js → manifest.js-rqnBYdpW.js} +4 -4
  21. package/build/server/chunks/nodes/{1.js-1rT6o2jA.js → 1.js-BsUzZAWK.js} +3 -3
  22. package/build/server/chunks/nodes/{2.js-CGXIkDa5.js → 2.js-D7l2_l01.js} +4 -4
  23. package/package.json +1 -1
  24. package/template/.dsi/resources/plugins-reff.md +6 -5
  25. package/template/.dsi/resources/skills-reff.md +4 -4
  26. package/build/client/_app/immutable/chunks/CiFavIif.js +0 -1
  27. package/build/client/_app/immutable/chunks/DN37js12.js +0 -1
  28. package/build/client/_app/immutable/entry/start.BQEoVg3q.js +0 -1
@@ -1,4 +1,4 @@
1
- import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-XBbRSE8G.js';
1
+ import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-C5Fo4WLt.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-DgcRLBLq.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-CNi3NKqw.js';
11
11
  import 'yaml';
12
12
  import 'html-to-image';
13
13
  import hljs from 'highlight.js/lib/core';
@@ -2422,6 +2422,38 @@ var copypanelcolumn2 = ((inputs = {}, options = {}) => {
2422
2422
  return en_copypanelcolumn2();
2423
2423
  });
2424
2424
  //#endregion
2425
+ //#region src/lib/paraglide/messages/copypromptmanagerimage3.js
2426
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
2427
+ /** @typedef {{}} Copypromptmanagerimage3Inputs */
2428
+ var en_copypromptmanagerimage3 = () => {
2429
+ return `Copy prompt manager as image (Shift+Click to save)`;
2430
+ };
2431
+ var zh_copypromptmanagerimage3 = () => {
2432
+ return `将提示词管理器复制为图片(Shift+点击保存)`;
2433
+ };
2434
+ var id_copypromptmanagerimage3 = () => {
2435
+ return `Salin manajer prompt sebagai gambar (Shift+Klik untuk menyimpan)`;
2436
+ };
2437
+ var es_copypromptmanagerimage3 = () => {
2438
+ return `Copiar gestor de prompts como imagen (Shift+clic para guardar)`;
2439
+ };
2440
+ /**
2441
+ * | output |
2442
+ * | --- |
2443
+ * | "Copy prompt manager as image (Shift+Click to save)" |
2444
+ *
2445
+ * @param {Copypromptmanagerimage3Inputs} inputs
2446
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
2447
+ * @returns {LocalizedString}
2448
+ */
2449
+ var copypromptmanagerimage3 = ((inputs = {}, options = {}) => {
2450
+ const locale = options.locale ?? getLocale();
2451
+ if (locale === "zh") return zh_copypromptmanagerimage3();
2452
+ if (locale === "id") return id_copypromptmanagerimage3();
2453
+ if (locale === "es") return es_copypromptmanagerimage3();
2454
+ return en_copypromptmanagerimage3();
2455
+ });
2456
+ //#endregion
2425
2457
  //#region src/lib/paraglide/messages/copyreasoning1.js
2426
2458
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
2427
2459
  /** @typedef {{}} Copyreasoning1Inputs */
@@ -12726,6 +12758,38 @@ var turnfailed1 = ((inputs = {}, options = {}) => {
12726
12758
  return en_turnfailed1();
12727
12759
  });
12728
12760
  //#endregion
12761
+ //#region src/lib/paraglide/messages/turninflight2.js
12762
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
12763
+ /** @typedef {{}} Turninflight2Inputs */
12764
+ var en_turninflight2 = () => {
12765
+ return `Turn in flight…`;
12766
+ };
12767
+ var zh_turninflight2 = () => {
12768
+ return `回合进行中…`;
12769
+ };
12770
+ var id_turninflight2 = () => {
12771
+ return `Giliran sedang berjalan…`;
12772
+ };
12773
+ var es_turninflight2 = () => {
12774
+ return `Turno en curso…`;
12775
+ };
12776
+ /**
12777
+ * | output |
12778
+ * | --- |
12779
+ * | "Turn in flight…" |
12780
+ *
12781
+ * @param {Turninflight2Inputs} inputs
12782
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
12783
+ * @returns {LocalizedString}
12784
+ */
12785
+ var turninflight2 = ((inputs = {}, options = {}) => {
12786
+ const locale = options.locale ?? getLocale();
12787
+ if (locale === "zh") return zh_turninflight2();
12788
+ if (locale === "id") return id_turninflight2();
12789
+ if (locale === "es") return es_turninflight2();
12790
+ return en_turninflight2();
12791
+ });
12792
+ //#endregion
12729
12793
  //#region src/lib/paraglide/messages/turnstopped1.js
12730
12794
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
12731
12795
  /** @typedef {{}} Turnstopped1Inputs */
@@ -13540,6 +13604,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
13540
13604
  copyPageImage: () => copypageimage2,
13541
13605
  copyPanelAsImage: () => copypanelasimage3,
13542
13606
  copyPanelColumn: () => copypanelcolumn2,
13607
+ copyPromptManagerImage: () => copypromptmanagerimage3,
13543
13608
  copyReasoning: () => copyreasoning1,
13544
13609
  copySessionPath: () => copysessionpath2,
13545
13610
  copySpecImage: () => copyspecimage2,
@@ -13865,6 +13930,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
13865
13930
  toolTitleToolCall: () => tooltitletoolcall3,
13866
13931
  toolTitleWrite: () => tooltitlewrite2,
13867
13932
  turnFailed: () => turnfailed1,
13933
+ turnInFlight: () => turninflight2,
13868
13934
  turnStopped: () => turnstopped1,
13869
13935
  turnTokenUsage: () => turntokenusage2,
13870
13936
  turnUsage: () => turnusage1,
@@ -13969,6 +14035,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
13969
14035
  copyPageImage: () => copypageimage2,
13970
14036
  copyPanelAsImage: () => copypanelasimage3,
13971
14037
  copyPanelColumn: () => copypanelcolumn2,
14038
+ copyPromptManagerImage: () => copypromptmanagerimage3,
13972
14039
  copyReasoning: () => copyreasoning1,
13973
14040
  copySessionPath: () => copysessionpath2,
13974
14041
  copySpecImage: () => copyspecimage2,
@@ -14295,6 +14362,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
14295
14362
  toolTitleToolCall: () => tooltitletoolcall3,
14296
14363
  toolTitleWrite: () => tooltitlewrite2,
14297
14364
  turnFailed: () => turnfailed1,
14365
+ turnInFlight: () => turninflight2,
14298
14366
  turnStopped: () => turnstopped1,
14299
14367
  turnTokenUsage: () => turntokenusage2,
14300
14368
  turnUsage: () => turnusage1,
@@ -14463,6 +14531,20 @@ function Bookmark_plus($$renderer, $$props) {
14463
14531
  ]));
14464
14532
  }
14465
14533
  //#endregion
14534
+ //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/camera.svelte
14535
+ function Camera($$renderer, $$props) {
14536
+ let { $$slots, $$events, ...props } = $$props;
14537
+ Icon($$renderer, spread_props([
14538
+ { name: "camera" },
14539
+ props,
14540
+ { 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", {
14541
+ "cx": "12",
14542
+ "cy": "13",
14543
+ "r": "3"
14544
+ }]] }
14545
+ ]));
14546
+ }
14547
+ //#endregion
14466
14548
  //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/check.svelte
14467
14549
  function Check($$renderer, $$props) {
14468
14550
  let { $$slots, $$events, ...props } = $$props;
@@ -14664,31 +14746,6 @@ function Hourglass($$renderer, $$props) {
14664
14746
  ]));
14665
14747
  }
14666
14748
  //#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
14749
  //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/list-checks.svelte
14693
14750
  function List_checks($$renderer, $$props) {
14694
14751
  let { $$slots, $$events, ...props } = $$props;
@@ -16541,7 +16598,10 @@ function CanvasCopyButton($$renderer, $$props) {
16541
16598
  let { container, title = "Copy canvas as image (Shift+Click to save)", size = 12, class: className = "", mode = "full" } = $$props;
16542
16599
  $$renderer.push(`<button data-svelte="CanvasCopyButton" type="button"${attr_class(className)}${attr("title", title)} data-testid="canvas-copy-button">`);
16543
16600
  $$renderer.push("<!--[-1-->");
16544
- Image($$renderer, { size });
16601
+ Camera($$renderer, {
16602
+ size,
16603
+ class: "text-red-500"
16604
+ });
16545
16605
  $$renderer.push(`<!--]--></button>`);
16546
16606
  });
16547
16607
  }
@@ -17567,6 +17627,31 @@ function StickToBottomToggle($$renderer, $$props) {
17567
17627
  });
17568
17628
  }
17569
17629
  //#endregion
17630
+ //#region src/lib/components/composer/sibling/StreamingIndicator.svelte
17631
+ function StreamingIndicator($$renderer, $$props) {
17632
+ $$renderer.component(($$renderer) => {
17633
+ /**
17634
+ * StreamingIndicator — three bouncing dots (OCI Composer port,
17635
+ * 2026-08-24). Presentational: title in, dots out.
17636
+ *
17637
+ * Default anchor is the OCI textarea overlay, DSI-tuned: absolute
17638
+ * against the host's RELATIVE wrapper — right edge, vertically
17639
+ * centered on the host's ACTION BUTTON (bottom-anchored at half the
17640
+ * button height, so the dots stay put when the textarea auto-grows;
17641
+ * the row is items-end, wrapper bottom = button bottom). Streaming
17642
+ * red, pointer-events none. `center` switches to inline flow for
17643
+ * hosts that place the dots in the transcript themselves (e.g. the
17644
+ * snippet-passing fixture).
17645
+ *
17646
+ * Contract pins (chat-components tests): the testid element carries
17647
+ * role=status + aria-label and holds EXACTLY the three dot spans —
17648
+ * no wrapper element.
17649
+ */
17650
+ let { title = "streaming", center = false } = $$props;
17651
+ $$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>`);
17652
+ });
17653
+ }
17654
+ //#endregion
17570
17655
  //#region src/lib/utils/token-estimate.ts
17571
17656
  /**
17572
17657
  * Client-side token estimation heuristic (OCI port, 2026-08-23).
@@ -17625,31 +17710,6 @@ function ModelSelector($$renderer, $$props) {
17625
17710
  });
17626
17711
  }
17627
17712
  //#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
17713
  //#region src/lib/components/composer/sibling/ContextConsumption.svelte
17654
17714
  function ContextConsumption($$renderer, $$props) {
17655
17715
  $$renderer.component(($$renderer) => {
@@ -18147,24 +18207,13 @@ function PromptManagerSearch($$renderer, $$props) {
18147
18207
  //#endregion
18148
18208
  //#region src/lib/components/prompt-manager/PromptManagerToolbar.svelte
18149
18209
  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
- });
18210
+ /**
18211
+ * PromptManagerToolbar — the sticky header's first row (2026-09-19):
18212
+ * LEFT — the prompts.sqlite FULL path (server-expanded, rides
18213
+ * /api/config prompts.dbPath; unknown → the filename only).
18214
+ */
18215
+ let { dbPath } = $$props;
18216
+ $$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
18217
  }
18169
18218
  //#endregion
18170
18219
  //#region src/lib/components/prompt-manager/PromptManagerHeader.svelte
@@ -18183,7 +18232,7 @@ function PromptManagerHeader($$renderer, $$props) {
18183
18232
  * $bindable (the search box owns keystrokes, the panel owns the
18184
18233
  * value — it derives the +token filter from it).
18185
18234
  */
18186
- let { selectedCount, vocabulary, tagFilter, dbPath, container, sortState, loading, hasRows, addingNew, searchQ = "", textMode = "pre", ontoggle, onsearchinput, ondeleteselected, onunselectall, onsort, onadd, oncanceladd } = $$props;
18235
+ let { selectedCount, vocabulary, tagFilter, dbPath, sortState, loading, hasRows, addingNew, searchQ = "", textMode = "pre", ontoggle, onsearchinput, ondeleteselected, onunselectall, onsort, onadd, oncanceladd } = $$props;
18187
18236
  /** Direction icon for a column header. */
18188
18237
  function sortIcon(col) {
18189
18238
  if (!sortState || sortState.col !== col) return "↕";
@@ -18193,10 +18242,7 @@ function PromptManagerHeader($$renderer, $$props) {
18193
18242
  let $$inner_renderer;
18194
18243
  function $$render_inner($$renderer) {
18195
18244
  $$renderer.push(`<div data-svelte="PromptManagerHeader" class="mgr-header svelte-aw18b1">`);
18196
- PromptManagerToolbar($$renderer, {
18197
- dbPath,
18198
- container
18199
- });
18245
+ PromptManagerToolbar($$renderer, { dbPath });
18200
18246
  $$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
18247
  if (vocabulary.length > 0) {
18202
18248
  $$renderer.push("<!--[0-->");
@@ -18367,8 +18413,6 @@ function PromptManagerPanel($$renderer, $$props) {
18367
18413
  let newMacro = false;
18368
18414
  let errorMsg = null;
18369
18415
  let searchTimer = null;
18370
- /** The panel's root element — the CanvasCopyButton capture target. */
18371
- let rootEl = null;
18372
18416
  const profile = derived(() => null);
18373
18417
  /** The operator's vocabulary (settings.yaml prompts.tags via /api/config). */
18374
18418
  const vocabulary = derived(() => appConfig().prompts.tags);
@@ -18503,7 +18547,6 @@ function PromptManagerPanel($$renderer, $$props) {
18503
18547
  selectedCount: selected.size,
18504
18548
  vocabulary: vocabulary(),
18505
18549
  dbPath: appConfig().prompts.dbPath,
18506
- container: rootEl,
18507
18550
  tagFilter,
18508
18551
  sortState,
18509
18552
  loading: loading$1,
@@ -19199,6 +19242,21 @@ function rowFactsByPanelId(rows) {
19199
19242
  return new Map(rows.map((r) => [r.panel.id, r]));
19200
19243
  }
19201
19244
  //#endregion
19245
+ //#region src/lib/components/prompt-manager/PromptsManagerDialogHeader.svelte
19246
+ function PromptsManagerDialogHeader($$renderer, $$props) {
19247
+ $$renderer.component(($$renderer) => {
19248
+ $$renderer.push(`<div data-svelte="PromptsManagerDialogHeader" class="mgr-dialog-header svelte-98olme"><div class="mgr-dialog-title svelte-98olme">${escape_html(MANAGER_ROW_TITLE)}</div> `);
19249
+ CanvasCopyButton($$renderer, {
19250
+ container: void 0,
19251
+ mode: "visible",
19252
+ title: t(copypromptmanagerimage3),
19253
+ size: 14,
19254
+ class: "inline-flex h-[22px] w-[22px] shrink-0 items-center justify-center rounded transition-colors hover:bg-surface-hover"
19255
+ });
19256
+ $$renderer.push(`<!----> <button type="button" class="mgr-dialog-close svelte-98olme"${attr("aria-label", t(close))}>×</button></div>`);
19257
+ });
19258
+ }
19259
+ //#endregion
19202
19260
  //#region src/lib/components/prompt-manager/PromptsManagerDialog.svelte
19203
19261
  function PromptsManagerDialog($$renderer, $$props) {
19204
19262
  $$renderer.component(($$renderer) => {
@@ -19221,7 +19279,9 @@ function PromptsManagerDialog($$renderer, $$props) {
19221
19279
  * {#if} — onclose unmounts it.
19222
19280
  */
19223
19281
  let { onclose, onchanged } = $$props;
19224
- $$renderer.push(`<div data-svelte="PromptsManagerDialog" class="mgr-backdrop svelte-2gs0br" role="presentation"></div> <div data-svelte="PromptsManagerDialog" class="mgr-modal svelte-2gs0br" role="dialog"${attr("aria-label", t(managesavedprompts2))} tabindex="-1"><div class="mgr-dialog-header svelte-2gs0br"><div class="mgr-dialog-title svelte-2gs0br">${escape_html(MANAGER_ROW_TITLE)}</div> <button type="button" class="mgr-dialog-close svelte-2gs0br"${attr("aria-label", t(close))}>×</button></div> <div class="mgr-dialog-body svelte-2gs0br">`);
19282
+ $$renderer.push(`<div data-svelte="PromptsManagerDialog" class="mgr-backdrop svelte-2gs0br" role="presentation"></div> <div data-svelte="PromptsManagerDialog" class="mgr-modal svelte-2gs0br" role="dialog"${attr("aria-label", t(managesavedprompts2))} tabindex="-1">`);
19283
+ PromptsManagerDialogHeader($$renderer);
19284
+ $$renderer.push(`<!----> <div class="mgr-dialog-body svelte-2gs0br">`);
19225
19285
  PromptManagerPanel($$renderer, {
19226
19286
  onclose,
19227
19287
  onchanged
@@ -20976,7 +21036,7 @@ function ToolsAndStatusHeader($$renderer, $$props) {
20976
21036
  CanvasCopyButton($$renderer, {
20977
21037
  container: transcript,
20978
21038
  title: t(copyconversationimage2),
20979
- size: 12,
21039
+ size: 15,
20980
21040
  class: "shrink-0 rounded-md p-1 text-slate-400 hover:bg-slate-100 hover:text-slate-600"
20981
21041
  });
20982
21042
  } else $$renderer.push("<!--[-1-->");
@@ -27944,7 +28004,12 @@ function ConversationPanel($$renderer, $$props) {
27944
28004
  stick,
27945
28005
  ontoggle: onStickToggle
27946
28006
  });
27947
- $$renderer.push(`<!----></div>`);
28007
+ $$renderer.push(`<!----> `);
28008
+ if (store.isStreaming) {
28009
+ $$renderer.push("<!--[0-->");
28010
+ StreamingIndicator($$renderer, { title: turninflight2() });
28011
+ } else $$renderer.push("<!--[-1-->");
28012
+ $$renderer.push(`<!--]--></div>`);
27948
28013
  } else $$renderer.push("<!--[-1-->");
27949
28014
  $$renderer.push(`<!--]--></div>`);
27950
28015
  }
@@ -28061,7 +28126,6 @@ function TerminalDesk($$renderer, $$props) {
28061
28126
  /** Null = self-open (the panel runs its own ladder and reports back
28062
28127
  * via onAssigned); set = the desk holds this session's lease. */
28063
28128
  let { onShellExit, restored = null, onMirror } = $$props;
28064
- const captureEl = derived(() => null);
28065
28129
  let nextKey = 1;
28066
28130
  const mkKey = () => nextKey++;
28067
28131
  const defaultTab = () => ({
@@ -28163,30 +28227,19 @@ function TerminalDesk($$renderer, $$props) {
28163
28227
  $$renderer.push(`<div class="p-3 text-xs text-slate-500" data-testid="terminal-desk-restoring">...</div>`);
28164
28228
  } else {
28165
28229
  $$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
- }
28230
+ TerminalTabHeader($$renderer, {
28231
+ children: ($$renderer) => {
28232
+ $$renderer.push(`<!--[-->`);
28233
+ const each_array = ensure_array_like(tabs);
28234
+ for (let i = 0, $$length = each_array.length; i < $$length; i++) {
28235
+ each_array[i];
28236
+ TerminalTabButton($$renderer, {
28237
+ index: i,
28238
+ label: "T" + (i + 1),
28239
+ selected: i === selectedTab});
28240
+ }
28241
+ $$renderer.push(`<!--]-->`);
28242
+ }});
28190
28243
  $$renderer.push(`<!----> <!--[-->`);
28191
28244
  const each_array_1 = ensure_array_like(tabs);
28192
28245
  for (let i = 0, $$length = each_array_1.length; i < $$length; i++) {
@@ -28237,22 +28290,14 @@ function SettingsSkillsToolbar($$renderer, $$props) {
28237
28290
  /**
28238
28291
  * SettingsSkillsToolbar — the shelf's first chrome row (The Shelf
28239
28292
  * 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
28293
+ * the PromptManagerToolbar path-label slot); RIGHT the search input. The collapse/expand fold pill moved to the
28242
28294
  * header, after the reload verb (2026-09-21 operator order).
28243
28295
  *
28244
28296
  * Presentational: the panel owns searchQ ($bindable — the box owns
28245
28297
  * keystrokes, the panel owns the value); this renders the row.
28246
28298
  */
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>`);
28299
+ let { generatedAt, searchQ = "" } = $$props;
28300
+ $$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
28301
  bind_props($$props, { searchQ });
28257
28302
  });
28258
28303
  }
@@ -28389,14 +28434,12 @@ function SettingsSkillsPanel($$renderer, $$props) {
28389
28434
  let tab = initialTab;
28390
28435
  initialCollapsed === null ? null : new Set(initialCollapsed);
28391
28436
  let searchQ = initialSearch;
28392
- let rootEl = null;
28393
28437
  let $$settled = true;
28394
28438
  let $$inner_renderer;
28395
28439
  function $$render_inner($$renderer) {
28396
28440
  $$renderer.push(`<div data-svelte="SettingsSkillsPanel" class="skill-shelf svelte-lnunga" data-testid="skill-shelf">`);
28397
28441
  SettingsSkillsToolbar($$renderer, {
28398
28442
  generatedAt: "",
28399
- container: rootEl,
28400
28443
  get searchQ() {
28401
28444
  return searchQ;
28402
28445
  },
@@ -28511,19 +28554,11 @@ function PluginManagerToolbar($$renderer, $$props) {
28511
28554
  /**
28512
28555
  * PluginManagerToolbar — the rack's first chrome row, the shelf
28513
28556
  * Toolbar's grammar (SettingsSkillsToolbar, The Shelf Chrome ADR D2):
28514
- * LEFT the snapshot timestamp; RIGHT the search input and the panel
28515
- * capture. Presentational: the panel owns searchQ ($bindable — the
28557
+ * LEFT the snapshot timestamp; RIGHT the search input. Presentational: the panel owns searchQ ($bindable — the
28516
28558
  * box owns keystrokes, the panel owns the value); this renders the row.
28517
28559
  */
28518
- let { generatedAt, searchQ = "", container } = $$props;
28519
- $$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">`);
28520
- CanvasCopyButton($$renderer, {
28521
- container,
28522
- mode: "visible",
28523
- title: t(copypanelasimage3),
28524
- size: 12
28525
- });
28526
- $$renderer.push(`<!----></span></div></div>`);
28560
+ let { generatedAt, searchQ = "" } = $$props;
28561
+ $$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>`);
28527
28562
  bind_props($$props, { searchQ });
28528
28563
  });
28529
28564
  }
@@ -28552,14 +28587,12 @@ function PluginManagerPanel($$renderer, $$props) {
28552
28587
  let floorBounce = false;
28553
28588
  let tab = initialTab === "uninstall" ? "uninstall" : "install";
28554
28589
  let searchQ = "";
28555
- let rootEl = null;
28556
28590
  let $$settled = true;
28557
28591
  let $$inner_renderer;
28558
28592
  function $$render_inner($$renderer) {
28559
28593
  $$renderer.push(`<div data-svelte="PluginManagerPanel" class="rack svelte-z3jis1" data-testid="rack-body">`);
28560
28594
  PluginManagerToolbar($$renderer, {
28561
28595
  generatedAt: "",
28562
- container: rootEl,
28563
28596
  get searchQ() {
28564
28597
  return searchQ;
28565
28598
  },
@@ -28734,14 +28767,6 @@ function InjectedDocPanel($$renderer, $$props) {
28734
28767
  //#region src/lib/components/panels/WorkspaceExplorerButtons.svelte
28735
28768
  function WorkspaceExplorerButtons($$renderer, $$props) {
28736
28769
  $$renderer.component(($$renderer) => {
28737
- /**
28738
- * WorkspaceExplorerButtons — the toolbar's action cluster, extracted
28739
- * from WorkspaceExplorerToolbar (2026-09-13): Refresh, Collapse-all,
28740
- * and the panel-column PNG capture button. INTENT ONLY (Module
28741
- * Communication Map): the buttons emit onRefresh / onCollapseAll —
28742
- * the panel owns the state the intents act on.
28743
- */
28744
- let { container} = $$props;
28745
28770
  $$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))}>`);
28746
28771
  Refresh_cw($$renderer, {
28747
28772
  size: 12,
@@ -28752,24 +28777,16 @@ function WorkspaceExplorerButtons($$renderer, $$props) {
28752
28777
  size: 12,
28753
28778
  "aria-hidden": "true"
28754
28779
  });
28755
- $$renderer.push(`<!----></button> `);
28756
- CanvasCopyButton($$renderer, {
28757
- container,
28758
- title: t(copypanelcolumn2),
28759
- size: 12
28760
- });
28761
- $$renderer.push(`<!----></div>`);
28780
+ $$renderer.push(`<!----></button></div>`);
28762
28781
  });
28763
28782
  }
28764
28783
  //#endregion
28765
28784
  //#region src/lib/components/panels/WorkspaceExplorerToolbar.svelte
28766
28785
  function WorkspaceExplorerToolbar($$renderer, $$props) {
28767
28786
  $$renderer.component(($$renderer) => {
28768
- let columnEl = null;
28769
28787
  let { activeTab = "explorer"} = $$props;
28770
28788
  $$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> `);
28771
- WorkspaceExplorerButtons($$renderer, {
28772
- container: columnEl});
28789
+ WorkspaceExplorerButtons($$renderer);
28773
28790
  $$renderer.push(`<!----></div>`);
28774
28791
  });
28775
28792
  }
@@ -29148,7 +29165,8 @@ function WorkspaceFileToolbar($$renderer, $$props) {
29148
29165
  CanvasCopyButton($$renderer, {
29149
29166
  container: columnEl,
29150
29167
  title: workspacePanelCopy.common.copyColumn,
29151
- size: 12
29168
+ size: 18,
29169
+ class: "shrink-0 rounded-md p-1 text-slate-400 hover:bg-slate-100 hover:text-slate-600"
29152
29170
  });
29153
29171
  $$renderer.push(`<!----></span></div>`);
29154
29172
  bind_props($$props, { tab });
@@ -29987,30 +30005,6 @@ function PanelsZoom($$renderer, $$props) {
29987
30005
  //#region src/lib/components/panels/PanelHeader.svelte
29988
30006
  function PanelHeader($$renderer, $$props) {
29989
30007
  $$renderer.component(($$renderer) => {
29990
- /**
29991
- * PanelHeader — a panel column's header strip (Panel Floor W3 task
29992
- * 3.2, ADR-0006). The panel's CONVERSATION header (rename, workspace
29993
- * chip, status) stays inside ConversationPanel — this is the floor
29994
- * chrome strip above it: which session the column holds, the move
29995
- * chevrons (OCI ColumnHeader precedent: swap with the neighbor
29996
- * through the registry, hidden at the row's edges), and the close
29997
- * button. Presentational except the move invoke, which is a registry
29998
- * action (leaf→root); close reports upward via onremove.
29999
- *
30000
- * Session-id label (2026-08-25): the label is the session id in
30001
- * full — never truncated — prefixed by a copy-id icon button
30002
- * (SessionIdAndName precedent: the click copies the id, 2s ✓
30003
- * feedback). The session title is deliberately absent: it already
30004
- * renders below in ConversationPanel's SessionIdAndName, so the
30005
- * floor strip carries only the column's identity.
30006
- *
30007
- * Lens mode (The Panel Loupe ADR D8, 2026-09-04): the loupe renders
30008
- * this header whole but its floor-identity verbs inert — BOTH move
30009
- * chevrons and the close render visible-disabled regardless of edge
30010
- * or mount props (order/membership live on the column), while label
30011
- * and copy-id stay live (the clipboard has no floor membership).
30012
- * Default false: a floor mount renders exactly as before.
30013
- */
30014
30008
  let { panelId, sessionId, label, copyValue, copyLabel, labelTestId, selected = false, canMoveLeft = false, canMoveRight = false, lens = false, onremove } = $$props;
30015
30009
  $$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")}>`);
30016
30010
  if (copyValue !== void 0 || label === void 0) {
@@ -30044,6 +30038,17 @@ function PanelHeader($$renderer, $$props) {
30044
30038
  $$renderer.push(`<!----></button>`);
30045
30039
  } else $$renderer.push("<!--[-1-->");
30046
30040
  $$renderer.push(`<!--]--> `);
30041
+ if (!lens) {
30042
+ $$renderer.push("<!--[0-->");
30043
+ CanvasCopyButton($$renderer, {
30044
+ container: void 0,
30045
+ mode: "visible",
30046
+ title: workspacePanelCopy.common.copyColumn,
30047
+ size: 14,
30048
+ class: "inline-flex h-[22px] w-[22px] shrink-0 items-center justify-center rounded transition-colors hover:bg-surface-hover"
30049
+ });
30050
+ } else $$renderer.push("<!--[-1-->");
30051
+ $$renderer.push(`<!--]--> `);
30047
30052
  if (onremove || lens) {
30048
30053
  $$renderer.push("<!--[0-->");
30049
30054
  $$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))}>`);
@@ -31254,4 +31259,4 @@ function _page($$renderer, $$props) {
31254
31259
  }
31255
31260
 
31256
31261
  export { _page as default };
31257
- //# sourceMappingURL=_page.svelte.js-jCShpNgz.js.map
31262
+ //# sourceMappingURL=_page.svelte.js-D7IjMk16.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-BOeQQ7jF.js';
13
- import { m as manifest } from './manifest.js-CvDWy0oM.js';
12
+ import { S as Server } from './index.js-CB1S72sp.js';
13
+ import { m as manifest } from './manifest.js-rqnBYdpW.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-CDSfkiHz.js.map
1735
+ //# sourceMappingURL=handler-Cggng81p.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-XBbRSE8G.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-C5Fo4WLt.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-BOeQQ7jF.js.map
3864
+ //# sourceMappingURL=index.js-CB1S72sp.js.map