@deepseek-insight/dsi 0.8.3 → 0.8.4

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 (46) hide show
  1. package/build/client/_app/immutable/assets/0.cswkTiBk.css +2 -0
  2. package/build/client/_app/immutable/chunks/C7Sg_49n.js +1 -0
  3. package/build/client/_app/immutable/chunks/{BoHeiMOU.js → CnzmIbjr.js} +1 -1
  4. package/build/client/_app/immutable/chunks/DY0MQ1mO.js +1 -0
  5. package/build/client/_app/immutable/chunks/{C9QAOGL1.js → GKkjunMm.js} +2 -2
  6. package/build/client/_app/immutable/entry/{app.S_mxIoOg.js → app.DYNedUxy.js} +2 -2
  7. package/build/client/_app/immutable/entry/start.BzyrBssE.js +1 -0
  8. package/build/client/_app/immutable/nodes/{1.D20V6eTe.js → 1.CHB5qqQ9.js} +1 -1
  9. package/build/client/_app/immutable/nodes/{2.BHcBdFqH.js → 2.C6No1310.js} +197 -197
  10. package/build/client/_app/version.json +1 -1
  11. package/build/handler.js +4 -4
  12. package/build/index.js +4 -4
  13. package/build/server/chunks/chunks/{internal2.js-Ba5p8uFM.js → internal2.js-J3h-US64.js} +2 -2
  14. package/build/server/chunks/chunks/{registry.js-C2MdrfNv.js → registry.js-CZNJZ0C-.js} +64 -15
  15. package/build/server/chunks/chunks/{state.js-BSiAgink.js → state.js-8RBD56dL.js} +2 -2
  16. package/build/server/chunks/entries/endpoints/api/browser/_id_/activate/{_server.ts.js-CogDOHKu.js → _server.ts.js-BdMJzENm.js} +2 -2
  17. package/build/server/chunks/entries/endpoints/api/browser/_id_/close/{_server.ts.js-xOt7LnS1.js → _server.ts.js-B5z9-N8Y.js} +2 -2
  18. package/build/server/chunks/entries/endpoints/api/browser/_id_/closetab/{_server.ts.js-CSmVPvSM.js → _server.ts.js-CnZHun5r.js} +2 -2
  19. package/build/server/chunks/entries/endpoints/api/browser/_id_/element/{_server.ts.js-BA40oCDW.js → _server.ts.js-C1oM2Ihf.js} +2 -2
  20. package/build/server/chunks/entries/endpoints/api/browser/_id_/input/{_server.ts.js-EX7eVzjp.js → _server.ts.js-DmbqGRMg.js} +2 -2
  21. package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/{_server.ts.js-B_EcmyFt.js → _server.ts.js-Cj80T1yH.js} +2 -2
  22. package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/{_server.ts.js-C3dYbyS3.js → _server.ts.js-6gi1UYTJ.js} +2 -2
  23. package/build/server/chunks/entries/endpoints/api/browser/_id_/opentab/{_server.ts.js-CMhJJO25.js → _server.ts.js-Bhx_J7ot.js} +8 -6
  24. package/build/server/chunks/entries/endpoints/api/browser/_id_/page/{_server.ts.js-DIW4uI2S.js → _server.ts.js-DvQXNnX9.js} +2 -2
  25. package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/{_server.ts.js-CIPIlq5X.js → _server.ts.js-MflkVWUn.js} +2 -2
  26. package/build/server/chunks/entries/endpoints/api/browser/_id_/tabs/{_server.ts.js-CoEdOiml.js → _server.ts.js-CoUSlLcP.js} +2 -2
  27. package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/{_server.ts.js-CdELUoGT.js → _server.ts.js-DNk4EgjJ.js} +2 -2
  28. package/build/server/chunks/entries/endpoints/api/browser/{_server.ts.js-ea6HpNGh.js → _server.ts.js-CECKap7O.js} +2 -2
  29. package/build/server/chunks/entries/pages/{_error.svelte.js-D8-G0evO.js → _error.svelte.js-DRPduJdP.js} +3 -3
  30. package/build/server/chunks/entries/pages/{_page.svelte.js-7xWLRsiZ.js → _page.svelte.js-Dek8Q1_v.js} +238 -20
  31. package/build/server/chunks/{handler-BedQ0jP-.js → handler-DUyvzXsb.js} +3 -3
  32. package/build/server/chunks/{index.js-BF6tPPQs.js → index.js-BrP1SRzN.js} +2 -2
  33. package/build/server/chunks/{manifest.js-3c0p7QAl.js → manifest.js-C4z6aoYx.js} +18 -18
  34. package/build/server/chunks/nodes/{0.js-B3i7sGR_.js → 0.js-BuB3t8Br.js} +3 -3
  35. package/build/server/chunks/nodes/1.js-CW4V8ni8.js +9 -0
  36. package/build/server/chunks/nodes/{2.js-CgnRGwm6.js → 2.js-C-o9KF10.js} +3 -3
  37. package/package.json +1 -1
  38. package/template/.dsi/prompts.sqlite-shm +0 -0
  39. package/template/.dsi/prompts.sqlite-wal +0 -0
  40. package/template/.dsi/settings.yaml +2 -2
  41. package/build/client/_app/immutable/assets/0.DyOAkKS-.css +0 -2
  42. package/build/client/_app/immutable/chunks/QJuSx3RG.js +0 -1
  43. package/build/client/_app/immutable/chunks/sC_8Ss7w.js +0 -1
  44. package/build/client/_app/immutable/entry/start.BPQAB3iV.js +0 -1
  45. package/build/server/chunks/nodes/1.js-eUf50uxI.js +0 -9
  46. /package/build/client/_app/immutable/nodes/{0.6dTmg1Xv.js → 0.DQYP6BCS.js} +0 -0
@@ -1 +1 @@
1
- {"version":"1792901739906"}
1
+ {"version":"1792948858224"}
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-BedQ0jP-.js';
6
- import './server/chunks/index.js-BF6tPPQs.js';
7
- import './server/chunks/manifest.js-3c0p7QAl.js';
5
+ export { h as handler } from './server/chunks/handler-DUyvzXsb.js';
6
+ import './server/chunks/index.js-BrP1SRzN.js';
7
+ import './server/chunks/manifest.js-C4z6aoYx.js';
8
8
  import './env.js';
9
9
  import 'node:buffer';
10
10
  import 'node:crypto';
@@ -19,6 +19,6 @@ import 'node:url';
19
19
  import './server/chunks/chunks/index-server.js-DmIEbDVz.js';
20
20
  import './server/chunks/chunks/server.js-B1bDXhHu.js';
21
21
  import './server/chunks/chunks/internal.js-BcS47nI-.js';
22
- import './server/chunks/chunks/internal2.js-Ba5p8uFM.js';
22
+ import './server/chunks/chunks/internal2.js-J3h-US64.js';
23
23
  import './server/chunks/chunks/exports.js-DH_tjtdv.js';
24
24
  //# sourceMappingURL=handler.js.map
package/build/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'node:http';
2
2
  import fs__default from 'node:fs';
3
3
  import process from 'node:process';
4
- import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-BedQ0jP-.js';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-DUyvzXsb.js';
5
5
  import { env, timeout_env } from './env.js';
6
6
  import { rm } from 'node:fs/promises';
7
7
  import './shims.js';
@@ -14,13 +14,13 @@ import 'node:stream';
14
14
  import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
15
15
  import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
16
16
  import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
17
- import './server/chunks/index.js-BF6tPPQs.js';
17
+ import './server/chunks/index.js-BrP1SRzN.js';
18
18
  import './server/chunks/chunks/index-server.js-DmIEbDVz.js';
19
19
  import './server/chunks/chunks/server.js-B1bDXhHu.js';
20
20
  import './server/chunks/chunks/internal.js-BcS47nI-.js';
21
- import './server/chunks/chunks/internal2.js-Ba5p8uFM.js';
21
+ import './server/chunks/chunks/internal2.js-J3h-US64.js';
22
22
  import './server/chunks/chunks/exports.js-DH_tjtdv.js';
23
- import './server/chunks/manifest.js-3c0p7QAl.js';
23
+ import './server/chunks/manifest.js-C4z6aoYx.js';
24
24
  import 'node:url';
25
25
 
26
26
  const path = env('SOCKET_PATH', false);
@@ -580,7 +580,7 @@ var options = {
580
580
  app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"%paraglide.locale%\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.svg\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <script>\n /* The Three-State Lamp pre-paint (ADR-0023 D3, 2026-10-11): resolve\n * the choice and set html[data-theme] BEFORE the bundle paints —\n * no flash of light on a dark reload. The key 'dsi-theme' is\n * pinned identical to src/lib/utils/theme-prefs.svelte.ts by\n * tests/unit/theme-prefs.test.ts; change both together. */\n try {\n var m = location.search.match(/[?&]profile=([^&]*)/);\n var prof = m ? m[1].replace(/[^A-Za-z0-9_-]/g, '').slice(0, 40) : '';\n var k = 'dsi-theme' + (prof ? '_' + prof : '');\n var t = localStorage.getItem(k);\n if (t !== 'light' && t !== 'dark' && t !== 'system') t = 'system';\n document.documentElement.dataset.theme =\n t === 'dark' || (t === 'system' && window.matchMedia && matchMedia('(prefers-color-scheme: dark)').matches)\n ? 'dark'\n : 'light';\n } catch (e) {\n document.documentElement.dataset.theme = 'light';\n }\n <\/script>\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"tap\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
581
581
  error: error_template_default
582
582
  },
583
- version_hash: "1k3urn6"
583
+ version_hash: "15kqjss"
584
584
  };
585
585
  async function get_hooks() {
586
586
  let handle;
@@ -603,4 +603,4 @@ async function get_hooks() {
603
603
  }
604
604
 
605
605
  export { set_public_env as a, set_read_implementation as b, get_hooks as g, options as o, public_env as p, read_implementation as r, set_private_env as s };
606
- //# sourceMappingURL=internal2.js-Ba5p8uFM.js.map
606
+ //# sourceMappingURL=internal2.js-J3h-US64.js.map
@@ -95,6 +95,22 @@ var BrowserRelay = class {
95
95
  };
96
96
  for (const sub of this.subscribers) sub(this.latest);
97
97
  }
98
+ /** Navigate reseed (ADR-0039 follow-up, 2026-10-25): unlike seed(), this
99
+ * REPLACES an existing frame. A discrete navigation under a paced
100
+ * screencast (everyNthFrame > 2, headless) composites too few frames for
101
+ * Chrome to emit anything — and the ring still holds the OPENER's
102
+ * synthesized frame, which seed() refuses to advance past, so the glass
103
+ * would freeze on the old face forever. A navigation is a real face
104
+ * change: it must land even over a synthesized frame. */
105
+ reseed(frame) {
106
+ if (!this.cdp) throw new RelayClosedError();
107
+ this.seq += 1;
108
+ this.latest = {
109
+ ...frame,
110
+ seq: this.seq
111
+ };
112
+ for (const sub of this.subscribers) sub(this.latest);
113
+ }
98
114
  latestFrame() {
99
115
  if (!this.cdp) throw new RelayClosedError();
100
116
  return this.latest;
@@ -678,18 +694,25 @@ var BrowserRegistry = class {
678
694
  });
679
695
  }
680
696
  /** Navigate the session's active page — public because causing page
681
- * damage is the only reliable way to make screencast emit a frame. */
697
+ * damage is the only reliable way to make screencast emit a frame.
698
+ * BUGFIX (ADR-0039 follow-up, 2026-10-25): at a paced cadence finer than
699
+ * everyNthFrame=2 (e.g. the operator's live screencastMaxFps: 10 →
700
+ * everyNthFrame 3), a HEADLESS single-damage navigate composites only
701
+ * 1–2 frames and Chrome emits NOTHING — the glass froze on the old face
702
+ * after every header navigate. A bounded no-frame grace re-fires the
703
+ * deterministic captureScreenshot seed (the activate()/resize idiom):
704
+ * pacing still governs LIVE video; a discrete navigation always lands. */
682
705
  async navigate(id, url, opts) {
683
706
  const e = this.peek(id);
684
707
  const h = await this.handleOf(e, opts?.targetId);
685
708
  await h.cdp.send("Page.enable").catch(() => void 0);
709
+ const prevSeq = h.relay.latestFrame()?.seq ?? -1;
686
710
  if (opts?.waitLoad) {
687
711
  const loaded = this.waitLoad(h);
688
712
  await h.cdp.send("Page.navigate", { url });
689
713
  await loaded;
690
- return;
691
- }
692
- await h.cdp.send("Page.navigate", { url });
714
+ } else await h.cdp.send("Page.navigate", { url });
715
+ this.seedAfterNavigate(h, prevSeq).catch(() => void 0);
693
716
  }
694
717
  /** Match the page viewport to the panel's glass box (ADR-0031
695
718
  * amendment 2): the screencast frame then equals the panel size, so
@@ -734,6 +757,27 @@ var BrowserRegistry = class {
734
757
  }
735
758
  });
736
759
  }
760
+ /** The navigate path's seed arm (ADR-0039 follow-up): same bounded grace,
761
+ * but the synthesized replacement must land OVER the opener's synthesized
762
+ * frame — seed() refuses that, reseed() is the honest verb (the mirror
763
+ * froze on the old face after every paced navigate otherwise). */
764
+ async seedAfterNavigate(handle, prevSeq) {
765
+ for (let i = 0; i < 10 && (handle.relay.latestFrame()?.seq ?? -1) === prevSeq; i += 1) await new Promise((r) => setTimeout(r, 100));
766
+ if ((handle.relay.latestFrame()?.seq ?? -1) !== prevSeq) return;
767
+ const cfg = readBrowserConfig();
768
+ const shot = await handle.cdp.send("Page.captureScreenshot", {
769
+ format: "jpeg",
770
+ quality: cfg.screencastQuality
771
+ }).catch(() => null);
772
+ if (shot?.data) handle.relay.reseed({
773
+ seq: 0,
774
+ jpeg: shot.data,
775
+ metadata: {
776
+ seeded: true,
777
+ navigate: true
778
+ }
779
+ });
780
+ }
737
781
  /** The history position (ADR-0031): every proxy-verb answer carries it
738
782
  * so the header's back/forward buttons stay honest at the ends. */
739
783
  async navInfo(id, targetId) {
@@ -838,8 +882,14 @@ var BrowserRegistry = class {
838
882
  };
839
883
  }
840
884
  }
841
- /** Open a NEW tab in the glass at `url` and make it the active face
842
- * (the context menu's 'open in new tab' verbs). Returns the new tab. */
885
+ /** Open a NEW tab in the glass and make it the active face. With a
886
+ * `url`: the context-menu open-link/image path — create BLANK then
887
+ * navigate through the verb seam (createTarget with a URL races its own
888
+ * navigation and lands on chrome-error, observed 2026-10-25). WITHOUT a
889
+ * url (ADR-0042 D2, the + chip): createTarget ONLY — the birth state
890
+ * again, no navigation. Either way activate() applies the first-frame
891
+ * contract (ADR-0040 D4 / ADR-0042 D4: grace, then a captureScreenshot
892
+ * seed) and returns the boundary payload the caller paints. */
843
893
  async openTab(id, url, opts) {
844
894
  const e = this.peek(id);
845
895
  if (e.closed) throw new BrowserRegistryRefusal("CLOSED", "session is closing");
@@ -847,22 +897,21 @@ var BrowserRegistry = class {
847
897
  if (!src) throw new BrowserRegistryRefusal("CLOSED", "no tab handle to create from");
848
898
  const targetId = (await src.send("Target.createTarget", { url: "about:blank" }))?.targetId;
849
899
  if (!targetId) throw new BrowserRegistryRefusal("NO_TARGET", "Target.createTarget returned no id");
850
- await this.navigate(id, url, {
900
+ if (url) await this.navigate(id, url, {
851
901
  waitLoad: true,
852
902
  targetId
853
903
  });
854
- if (opts?.activate ?? true) await this.activate(id, targetId);
904
+ if (opts?.activate ?? true) return {
905
+ ...await this.activate(id, targetId),
906
+ targetId
907
+ };
855
908
  const h = e.tabs.get(targetId);
856
- const pi = await this.pageInfo(id, targetId).catch(() => ({
857
- url,
858
- title: ""
859
- }));
860
909
  return {
861
910
  targetId,
862
911
  seq: h?.relay.latestFrame()?.seq ?? 0,
863
912
  jpeg: h?.relay.latestFrame()?.jpeg ?? null,
864
- url: pi.url || url,
865
- title: pi.title
913
+ url: url ?? "about:blank",
914
+ title: ""
866
915
  };
867
916
  }
868
917
  /** Apply the remembered panel viewport by RESIZING THE WINDOW (round 10:
@@ -951,4 +1000,4 @@ var BrowserRegistry = class {
951
1000
  var browserRegistry = new BrowserRegistry();
952
1001
 
953
1002
  export { BrowserRegistryRefusal as B, browserRegistry as b };
954
- //# sourceMappingURL=registry.js-C2MdrfNv.js.map
1003
+ //# sourceMappingURL=registry.js-CZNJZ0C-.js.map
@@ -1,6 +1,6 @@
1
1
  import { i as index_server_exports } from './index-server.js-DmIEbDVz.js';
2
2
  import './shared.js-HQ0rfhm4.js';
3
- import './internal2.js-Ba5p8uFM.js';
3
+ import './internal2.js-J3h-US64.js';
4
4
  import './exports.js-DH_tjtdv.js';
5
5
  import { U as snapshot, g as getContext, n as noop } from './server.js-B1bDXhHu.js';
6
6
  import { U as UI_LOCALES } from './config.js-vThvQeMn.js';
@@ -304,4 +304,4 @@ var page = {
304
304
  };
305
305
 
306
306
  export { afterNavigate as a, backtoworkspace2 as b, currentLocale as c, dshunreachable1 as d, replaceState as e, page as p, reapednote1 as r, sessionnotfound2 as s, t, unexpectederror1 as u };
307
- //# sourceMappingURL=state.js-BSiAgink.js.map
307
+ //# sourceMappingURL=state.js-8RBD56dL.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -42,4 +42,4 @@ var POST = async (ctx) => {
42
42
  };
43
43
 
44
44
  export { POST };
45
- //# sourceMappingURL=_server.ts.js-CogDOHKu.js.map
45
+ //# sourceMappingURL=_server.ts.js-BdMJzENm.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -29,4 +29,4 @@ var POST = async (ctx) => {
29
29
  };
30
30
 
31
31
  export { POST };
32
- //# sourceMappingURL=_server.ts.js-xOt7LnS1.js.map
32
+ //# sourceMappingURL=_server.ts.js-B5z9-N8Y.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -41,4 +41,4 @@ var POST = async (ctx) => {
41
41
  };
42
42
 
43
43
  export { POST };
44
- //# sourceMappingURL=_server.ts.js-CSmVPvSM.js.map
44
+ //# sourceMappingURL=_server.ts.js-CnZHun5r.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -40,4 +40,4 @@ var POST = async (ctx) => {
40
40
  };
41
41
 
42
42
  export { POST };
43
- //# sourceMappingURL=_server.ts.js-BA40oCDW.js.map
43
+ //# sourceMappingURL=_server.ts.js-C1oM2Ihf.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -76,4 +76,4 @@ var POST = async (ctx) => {
76
76
  };
77
77
 
78
78
  export { POST };
79
- //# sourceMappingURL=_server.ts.js-EX7eVzjp.js.map
79
+ //# sourceMappingURL=_server.ts.js-DmbqGRMg.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -47,4 +47,4 @@ var GET = (ctx) => {
47
47
  };
48
48
 
49
49
  export { GET };
50
- //# sourceMappingURL=_server.ts.js-B_EcmyFt.js.map
50
+ //# sourceMappingURL=_server.ts.js-Cj80T1yH.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -63,4 +63,4 @@ var POST = async (ctx) => {
63
63
  };
64
64
 
65
65
  export { POST };
66
- //# sourceMappingURL=_server.ts.js-C3dYbyS3.js.map
66
+ //# sourceMappingURL=_server.ts.js-6gi1UYTJ.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -17,8 +17,9 @@ import '../../../../../../chunks/uneval.js-BJ9Qq2SF.js';
17
17
  //#region src/routes/api/browser/[id]/opentab/+server.ts
18
18
  /**
19
19
  * /api/browser/[id]/opentab — open a NEW tab in the glass and make it the
20
- * active face (the context menu's 'open in new tab' verbs, BUGFIX
21
- * 2026-10-25). Body { url } — http(s) or data: like navigate.
20
+ * active face. With { url } (http(s) or data: like navigate): the context
21
+ * menu's 'open in new tab' verbs. WITHOUT a url — absent or empty (ADR-0042
22
+ * D1, the strip's + chip): a BLANK tab, the birth state again.
22
23
  */
23
24
  var URL_OK = /^https?:\/\/|^data:text\/html/;
24
25
  var POST = async (ctx) => {
@@ -29,9 +30,10 @@ var POST = async (ctx) => {
29
30
  } catch {
30
31
  return json({ error: "BAD_REQUEST" }, { status: 400 });
31
32
  }
32
- if (typeof body.url !== "string" || !URL_OK.test(body.url)) return json({ error: "BAD_URL" }, { status: 400 });
33
+ const hasUrl = body.url !== void 0 && body.url !== "";
34
+ if (hasUrl && (typeof body.url !== "string" || !URL_OK.test(body.url))) return json({ error: "BAD_URL" }, { status: 400 });
33
35
  try {
34
- return json(await browserRegistry.openTab(ctx.params.id, body.url));
36
+ return json(await browserRegistry.openTab(ctx.params.id, hasUrl ? body.url : void 0));
35
37
  } catch (err) {
36
38
  if (err instanceof BrowserRegistryRefusal) return json({
37
39
  error: err.code,
@@ -42,4 +44,4 @@ var POST = async (ctx) => {
42
44
  };
43
45
 
44
46
  export { POST };
45
- //# sourceMappingURL=_server.ts.js-CMhJJO25.js.map
47
+ //# sourceMappingURL=_server.ts.js-Bhx_J7ot.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -31,4 +31,4 @@ var GET = async (ctx) => {
31
31
  };
32
32
 
33
33
  export { GET };
34
- //# sourceMappingURL=_server.ts.js-DIW4uI2S.js.map
34
+ //# sourceMappingURL=_server.ts.js-DvQXNnX9.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -71,4 +71,4 @@ var GET = (ctx) => {
71
71
  };
72
72
 
73
73
  export { GET };
74
- //# sourceMappingURL=_server.ts.js-CIPIlq5X.js.map
74
+ //# sourceMappingURL=_server.ts.js-MflkVWUn.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -31,4 +31,4 @@ var GET = async (ctx) => {
31
31
  };
32
32
 
33
33
  export { GET };
34
- //# sourceMappingURL=_server.ts.js-CoEdOiml.js.map
34
+ //# sourceMappingURL=_server.ts.js-CoUSlLcP.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../../../chunks/config.js-vThvQeMn.js';
@@ -41,4 +41,4 @@ var POST = async (ctx) => {
41
41
  };
42
42
 
43
43
  export { POST };
44
- //# sourceMappingURL=_server.ts.js-CdELUoGT.js.map
44
+ //# sourceMappingURL=_server.ts.js-DNk4EgjJ.js.map
@@ -1,4 +1,4 @@
1
- import { b as browserRegistry } from '../../../../chunks/registry.js-C2MdrfNv.js';
1
+ import { b as browserRegistry } from '../../../../chunks/registry.js-CZNJZ0C-.js';
2
2
  import { j as json } from '../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../chunks/insight-config.js-Dp_2gB5J.js';
4
4
  import '../../../../chunks/config.js-vThvQeMn.js';
@@ -44,4 +44,4 @@ var POST = async (event) => {
44
44
  };
45
45
 
46
46
  export { GET, POST };
47
- //# sourceMappingURL=_server.ts.js-ea6HpNGh.js.map
47
+ //# sourceMappingURL=_server.ts.js-CECKap7O.js.map
@@ -1,9 +1,9 @@
1
1
  import { V as head, W as escape_html, M as derived } from '../../chunks/server.js-B1bDXhHu.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-BSiAgink.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-8RBD56dL.js';
3
3
  import '../../chunks/uneval.js-BJ9Qq2SF.js';
4
4
  import '../../chunks/index-server.js-DmIEbDVz.js';
5
5
  import '../../chunks/shared.js-HQ0rfhm4.js';
6
- import '../../chunks/internal2.js-Ba5p8uFM.js';
6
+ import '../../chunks/internal2.js-J3h-US64.js';
7
7
  import '../../chunks/exports.js-DH_tjtdv.js';
8
8
  import '../../chunks/config.js-vThvQeMn.js';
9
9
  import '../../chunks/runtime.js-CCJi3XaY.js';
@@ -41,4 +41,4 @@ function _error($$renderer, $$props) {
41
41
  }
42
42
 
43
43
  export { _error as default };
44
- //# sourceMappingURL=_error.svelte.js-D8-G0evO.js.map
44
+ //# sourceMappingURL=_error.svelte.js-DRPduJdP.js.map