@deepseek-insight/dsi 0.6.11 → 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 (29) hide show
  1. package/.agents/skills/dsi-plugin-rack/rack.d.mts +9 -1
  2. package/build/client/_app/immutable/assets/2.Bzy6Q5kl.css +1 -0
  3. package/build/client/_app/immutable/chunks/{KLsbJ_6V.js → 66qbK5h1.js} +2 -2
  4. package/build/client/_app/immutable/chunks/{BNTNz9oR.js → D3W5wGWM.js} +1 -1
  5. package/build/client/_app/immutable/chunks/D73RufXg.js +1 -0
  6. package/build/client/_app/immutable/chunks/NtHUheoE.js +1 -0
  7. package/build/client/_app/immutable/entry/{app.BNlAGT8a.js → app.D8WfdLSe.js} +2 -2
  8. package/build/client/_app/immutable/entry/start.CVl0g0cv.js +1 -0
  9. package/build/client/_app/immutable/nodes/{1.CeFdv8vr.js → 1.X0If5xAN.js} +1 -1
  10. package/build/client/_app/immutable/nodes/{2.Boib-Q5k.js → 2.CELzu2i6.js} +219 -219
  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-D_QJoxN-.js} +2 -2
  15. package/build/server/chunks/chunks/{state.js-DgcRLBLq.js → state.js-DbUk4Hrz.js} +2 -2
  16. package/build/server/chunks/entries/pages/{_error.svelte.js-CRYTX4NJ.js → _error.svelte.js-AsgAVyDR.js} +3 -3
  17. package/build/server/chunks/entries/pages/{_page.svelte.js-jCShpNgz.js → _page.svelte.js-CFdCjELr.js} +130 -176
  18. package/build/server/chunks/{handler-CDSfkiHz.js → handler-Bx2fbkEJ.js} +3 -3
  19. package/build/server/chunks/{index.js-BOeQQ7jF.js → index.js-BldXQ38P.js} +2 -2
  20. package/build/server/chunks/{manifest.js-CvDWy0oM.js → manifest.js-Du-9DaEd.js} +4 -4
  21. package/build/server/chunks/nodes/1.js-D55AmdZs.js +9 -0
  22. package/build/server/chunks/nodes/{2.js-CGXIkDa5.js → 2.js-DGLcInR6.js} +4 -4
  23. package/package.json +1 -1
  24. package/template/.dsi/resources/plugins-reff.md +6 -5
  25. package/build/client/_app/immutable/assets/2.BuaCdYrs.css +0 -1
  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
  29. package/build/server/chunks/nodes/1.js-1rT6o2jA.js +0 -9
@@ -1 +1 @@
1
- {"version":"1791347962511"}
1
+ {"version":"1791369987011"}
package/build/handler.js CHANGED
@@ -2,9 +2,9 @@ import './shims.js';
2
2
  import 'node:fs';
3
3
  import 'node:path';
4
4
  import 'node:process';
5
- export { h as handler } from './server/chunks/handler-CDSfkiHz.js';
6
- import './server/chunks/index.js-BOeQQ7jF.js';
7
- import './server/chunks/manifest.js-CvDWy0oM.js';
5
+ export { h as handler } from './server/chunks/handler-Bx2fbkEJ.js';
6
+ import './server/chunks/index.js-BldXQ38P.js';
7
+ import './server/chunks/manifest.js-Du-9DaEd.js';
8
8
  import './env.js';
9
9
  import 'node:buffer';
10
10
  import 'node:crypto';
@@ -16,7 +16,7 @@ import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
16
16
  import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
17
17
  import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
18
18
  import 'node:url';
19
- import './server/chunks/chunks/internal.js-XBbRSE8G.js';
19
+ import './server/chunks/chunks/internal.js-D_QJoxN-.js';
20
20
  import './server/chunks/chunks/server.js-11-pxAWV.js';
21
21
  import './server/chunks/chunks/internal2.js-BcS47nI-.js';
22
22
  import './server/chunks/chunks/exports.js-DH_tjtdv.js';
package/build/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'node:http';
2
2
  import fs__default from 'node:fs';
3
3
  import process from 'node:process';
4
- import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-CDSfkiHz.js';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-Bx2fbkEJ.js';
5
5
  import { env, timeout_env } from './env.js';
6
6
  import { rm } from 'node:fs/promises';
7
7
  import './shims.js';
@@ -14,12 +14,12 @@ import 'node:stream';
14
14
  import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
15
15
  import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
16
16
  import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
17
- import './server/chunks/index.js-BOeQQ7jF.js';
18
- import './server/chunks/chunks/internal.js-XBbRSE8G.js';
17
+ import './server/chunks/index.js-BldXQ38P.js';
18
+ import './server/chunks/chunks/internal.js-D_QJoxN-.js';
19
19
  import './server/chunks/chunks/server.js-11-pxAWV.js';
20
20
  import './server/chunks/chunks/internal2.js-BcS47nI-.js';
21
21
  import './server/chunks/chunks/exports.js-DH_tjtdv.js';
22
- import './server/chunks/manifest.js-CvDWy0oM.js';
22
+ import './server/chunks/manifest.js-Du-9DaEd.js';
23
23
  import 'node:url';
24
24
 
25
25
  const path = env('SOCKET_PATH', false);
@@ -722,7 +722,7 @@ var options = {
722
722
  app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"%paraglide.locale%\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.svg\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"tap\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
723
723
  error: error_template_default
724
724
  },
725
- version_hash: "lip9ub"
725
+ version_hash: "thit4h"
726
726
  };
727
727
  async function get_hooks() {
728
728
  let handle;
@@ -745,4 +745,4 @@ async function get_hooks() {
745
745
  }
746
746
 
747
747
  export { __commonJSMin as _, set_public_env as a, set_read_implementation as b, onDestroy as c, __exportAll as d, get_hooks as g, index_server_exports as i, options as o, public_env as p, read_implementation as r, set_private_env as s };
748
- //# sourceMappingURL=internal.js-XBbRSE8G.js.map
748
+ //# sourceMappingURL=internal.js-D_QJoxN-.js.map
@@ -1,4 +1,4 @@
1
- import { i as index_server_exports } from './internal.js-XBbRSE8G.js';
1
+ import { i as index_server_exports } from './internal.js-D_QJoxN-.js';
2
2
  import './shared.js-HQ0rfhm4.js';
3
3
  import './exports.js-DH_tjtdv.js';
4
4
  import { U as snapshot, J as getContext, G as noop } from './server.js-11-pxAWV.js';
@@ -303,4 +303,4 @@ var page = {
303
303
  };
304
304
 
305
305
  export { afterNavigate as a, backtoworkspace2 as b, replaceState as c, dshunreachable1 as d, currentLocale as e, page as p, reapednote1 as r, sessionnotfound2 as s, t, unexpectederror1 as u };
306
- //# sourceMappingURL=state.js-DgcRLBLq.js.map
306
+ //# sourceMappingURL=state.js-DbUk4Hrz.js.map
@@ -1,7 +1,7 @@
1
1
  import { V as head, W as escape_html, y as derived } from '../../chunks/server.js-11-pxAWV.js';
2
- import { t, p as page, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, u as unexpectederror1, b as backtoworkspace2 } from '../../chunks/state.js-DgcRLBLq.js';
2
+ import { t, p as page, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, u as unexpectederror1, b as backtoworkspace2 } from '../../chunks/state.js-DbUk4Hrz.js';
3
3
  import '../../chunks/uneval.js-BJ9Qq2SF.js';
4
- import '../../chunks/internal.js-XBbRSE8G.js';
4
+ import '../../chunks/internal.js-D_QJoxN-.js';
5
5
  import '../../chunks/shared.js-HQ0rfhm4.js';
6
6
  import '../../chunks/exports.js-DH_tjtdv.js';
7
7
  import '../../chunks/config.js-B0w1-uCA.js';
@@ -40,4 +40,4 @@ function _error($$renderer, $$props) {
40
40
  }
41
41
 
42
42
  export { _error as default };
43
- //# sourceMappingURL=_error.svelte.js-CRYTX4NJ.js.map
43
+ //# sourceMappingURL=_error.svelte.js-AsgAVyDR.js.map
@@ -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-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-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-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
  },
@@ -28511,19 +28503,11 @@ function PluginManagerToolbar($$renderer, $$props) {
28511
28503
  /**
28512
28504
  * PluginManagerToolbar — the rack's first chrome row, the shelf
28513
28505
  * 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
28506
+ * LEFT the snapshot timestamp; RIGHT the search input. Presentational: the panel owns searchQ ($bindable — the
28516
28507
  * box owns keystrokes, the panel owns the value); this renders the row.
28517
28508
  */
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>`);
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>`);
28527
28511
  bind_props($$props, { searchQ });
28528
28512
  });
28529
28513
  }
@@ -28552,14 +28536,12 @@ function PluginManagerPanel($$renderer, $$props) {
28552
28536
  let floorBounce = false;
28553
28537
  let tab = initialTab === "uninstall" ? "uninstall" : "install";
28554
28538
  let searchQ = "";
28555
- let rootEl = null;
28556
28539
  let $$settled = true;
28557
28540
  let $$inner_renderer;
28558
28541
  function $$render_inner($$renderer) {
28559
28542
  $$renderer.push(`<div data-svelte="PluginManagerPanel" class="rack svelte-z3jis1" data-testid="rack-body">`);
28560
28543
  PluginManagerToolbar($$renderer, {
28561
28544
  generatedAt: "",
28562
- container: rootEl,
28563
28545
  get searchQ() {
28564
28546
  return searchQ;
28565
28547
  },
@@ -28734,14 +28716,6 @@ function InjectedDocPanel($$renderer, $$props) {
28734
28716
  //#region src/lib/components/panels/WorkspaceExplorerButtons.svelte
28735
28717
  function WorkspaceExplorerButtons($$renderer, $$props) {
28736
28718
  $$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
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))}>`);
28746
28720
  Refresh_cw($$renderer, {
28747
28721
  size: 12,
@@ -28752,24 +28726,16 @@ function WorkspaceExplorerButtons($$renderer, $$props) {
28752
28726
  size: 12,
28753
28727
  "aria-hidden": "true"
28754
28728
  });
28755
- $$renderer.push(`<!----></button> `);
28756
- CanvasCopyButton($$renderer, {
28757
- container,
28758
- title: t(copypanelcolumn2),
28759
- size: 12
28760
- });
28761
- $$renderer.push(`<!----></div>`);
28729
+ $$renderer.push(`<!----></button></div>`);
28762
28730
  });
28763
28731
  }
28764
28732
  //#endregion
28765
28733
  //#region src/lib/components/panels/WorkspaceExplorerToolbar.svelte
28766
28734
  function WorkspaceExplorerToolbar($$renderer, $$props) {
28767
28735
  $$renderer.component(($$renderer) => {
28768
- let columnEl = null;
28769
28736
  let { activeTab = "explorer"} = $$props;
28770
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> `);
28771
- WorkspaceExplorerButtons($$renderer, {
28772
- container: columnEl});
28738
+ WorkspaceExplorerButtons($$renderer);
28773
28739
  $$renderer.push(`<!----></div>`);
28774
28740
  });
28775
28741
  }
@@ -29148,7 +29114,8 @@ function WorkspaceFileToolbar($$renderer, $$props) {
29148
29114
  CanvasCopyButton($$renderer, {
29149
29115
  container: columnEl,
29150
29116
  title: workspacePanelCopy.common.copyColumn,
29151
- size: 12
29117
+ size: 18,
29118
+ class: "shrink-0 rounded-md p-1 text-slate-400 hover:bg-slate-100 hover:text-slate-600"
29152
29119
  });
29153
29120
  $$renderer.push(`<!----></span></div>`);
29154
29121
  bind_props($$props, { tab });
@@ -29987,30 +29954,6 @@ function PanelsZoom($$renderer, $$props) {
29987
29954
  //#region src/lib/components/panels/PanelHeader.svelte
29988
29955
  function PanelHeader($$renderer, $$props) {
29989
29956
  $$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
29957
  let { panelId, sessionId, label, copyValue, copyLabel, labelTestId, selected = false, canMoveLeft = false, canMoveRight = false, lens = false, onremove } = $$props;
30015
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")}>`);
30016
29959
  if (copyValue !== void 0 || label === void 0) {
@@ -30044,6 +29987,17 @@ function PanelHeader($$renderer, $$props) {
30044
29987
  $$renderer.push(`<!----></button>`);
30045
29988
  } else $$renderer.push("<!--[-1-->");
30046
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(`<!--]--> `);
30047
30001
  if (onremove || lens) {
30048
30002
  $$renderer.push("<!--[0-->");
30049
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))}>`);
@@ -31254,4 +31208,4 @@ function _page($$renderer, $$props) {
31254
31208
  }
31255
31209
 
31256
31210
  export { _page as default };
31257
- //# sourceMappingURL=_page.svelte.js-jCShpNgz.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-BOeQQ7jF.js';
13
- import { m as manifest } from './manifest.js-CvDWy0oM.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-CDSfkiHz.js.map
1735
+ //# sourceMappingURL=handler-Bx2fbkEJ.js.map