@deepseek-insight/dsi 0.6.20 → 0.7.0

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 (100) hide show
  1. package/bin/dsi.mjs +16 -8
  2. package/bin/lib/dev-mode.mjs +6 -2
  3. package/build/client/_app/immutable/assets/0.CrT3Lf0L.css +2 -0
  4. package/build/client/_app/immutable/assets/{2.BqRWIIgD.css → 2.ByYVysCj.css} +1 -1
  5. package/build/client/_app/immutable/chunks/{BbvYWcEs.js → CFofWD1C.js} +1 -1
  6. package/build/client/_app/immutable/chunks/CW7JStOk.js +1 -0
  7. package/build/client/_app/immutable/chunks/CzXb6qus.js +2 -0
  8. package/build/client/_app/immutable/chunks/DwWy6K0V.js +1 -0
  9. package/build/client/_app/immutable/entry/{app.BAD3jsui.js → app.DID8VW1I.js} +2 -2
  10. package/build/client/_app/immutable/entry/start.CkxDcwJy.js +1 -0
  11. package/build/client/_app/immutable/nodes/{1.COHJn6QL.js → 1.2U7ECroT.js} +1 -1
  12. package/build/client/_app/immutable/nodes/2.D1lz0hMu.js +337 -0
  13. package/build/client/_app/version.json +1 -1
  14. package/build/handler.js +4 -4
  15. package/build/index.js +4 -4
  16. package/build/server/chunks/chunks/{db.js-DRhjT6xK.js → db.js-BmnKaIBo.js} +2 -2
  17. package/build/server/chunks/chunks/{db2.js-DUta2B-n.js → db2.js-CpSDQEUB.js} +2 -2
  18. package/build/server/chunks/chunks/deliverables.js-Dg6XzNkW.js +46 -0
  19. package/build/server/chunks/chunks/{dsh-connection.js-DL5qjlq2.js → dsh-connection.js-CE6s1mIM.js} +2 -2
  20. package/build/server/chunks/chunks/{dsh-events.js-35seDLwL.js → dsh-events.js-CGuF_had.js} +2 -1
  21. package/build/server/chunks/chunks/{git-probe.js-D4DjBXSY.js → git-probe.js-DBbLffkp.js} +3 -3
  22. package/build/server/chunks/chunks/{insight-config.js-CA-iT3lB.js → insight-config.js-DZBwKFH9.js} +31 -2
  23. package/build/server/chunks/chunks/{internal2.js-BDzd2OUR.js → internal2.js-DgxNmZhS.js} +2 -2
  24. package/build/server/chunks/chunks/registry.js-D0ldrcNB.js +577 -0
  25. package/build/server/chunks/chunks/{registry.js-G1hzOje_.js → registry2.js-D3Pr1Rv9.js} +2 -2
  26. package/build/server/chunks/chunks/{state.js-Cb31UwpL.js → state.js-DPoVCoAg.js} +2 -2
  27. package/build/server/chunks/chunks/{watcher.js-CACduBB9.js → watcher.js-Ck2BsXQf.js} +5 -5
  28. package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-CpeC2QLb.js → _server.ts.js-B7qOvtA5.js} +3 -3
  29. package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-DHFHuGSm.js → _server.ts.js-DBLFNFXT.js} +6 -6
  30. package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-CUUfDBcc.js → _server.ts.js-COyQSOOR.js} +6 -6
  31. package/build/server/chunks/entries/endpoints/api/browser/_id_/close/_server.ts.js-CJjvHo1Z.js +32 -0
  32. package/build/server/chunks/entries/endpoints/api/browser/_id_/input/_server.ts.js-_XEUfVid.js +78 -0
  33. package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/_server.ts.js-e7j-kKSK.js +50 -0
  34. package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/_server.ts.js-BYiU0Wvv.js +62 -0
  35. package/build/server/chunks/entries/endpoints/api/browser/_id_/page/_server.ts.js-RL1-uaVR.js +33 -0
  36. package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/_server.ts.js-Cxc2r0BD.js +74 -0
  37. package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/_server.ts.js-DQ1jgFuc.js +42 -0
  38. package/build/server/chunks/entries/endpoints/api/browser/_server.ts.js-DfbmPmUH.js +37 -0
  39. package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-BG78X__J.js → _server.ts.js-CfcgdS1G.js} +3 -3
  40. package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-Cae4x1c7.js → _server.ts.js-BOgNWE9k.js} +3 -3
  41. package/build/server/chunks/entries/endpoints/api/dsh/jobs/{_server.ts.js-hGmoSsDv.js → _server.ts.js-DExfzwju.js} +3 -3
  42. package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-BLb8o1cY.js → _server.ts.js-vuxSBOKD.js} +3 -3
  43. package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-BFeDKrPz.js → _server.ts.js-DYh0lUVR.js} +3 -3
  44. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-DmSTTfI5.js → _server.ts.js-CzmMoP9-.js} +3 -3
  45. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-Cus9XrC9.js → _server.ts.js-CXnfYfR4.js} +3 -3
  46. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-DcrNU0_y.js → _server.ts.js-CF2s7GwI.js} +3 -3
  47. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-CpuEcp6p.js → _server.ts.js-DKw9ktIO.js} +3 -3
  48. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-CU9o8Tho.js → _server.ts.js-pT2AO2S0.js} +3 -3
  49. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-BiAJcPpb.js → _server.ts.js-D4H2h6fc.js} +9 -5
  50. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-BMMZlvr7.js → _server.ts.js-iwuADbdv.js} +3 -3
  51. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-DZ6qFrfm.js → _server.ts.js-C36DpiRX.js} +3 -3
  52. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-ecbtat_C.js → _server.ts.js-WApWfRu-.js} +4 -4
  53. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-CPZuvN-_.js → _server.ts.js-B8DQEsx6.js} +3 -3
  54. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-_SIiC8sn.js → _server.ts.js-B0ACEjPX.js} +2 -2
  55. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-Dcfp7gSm.js → _server.ts.js-CmYfLvHD.js} +3 -3
  56. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-CmxqUwLT.js → _server.ts.js-DrZveeFq.js} +3 -3
  57. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-DCNKXRwy.js → _server.ts.js-C-nVpTN7.js} +3 -3
  58. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-AURyR2ll.js → _server.ts.js-C-cuYV40.js} +3 -3
  59. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-BVF36vTO.js → _server.ts.js-BoiybbwX.js} +3 -3
  60. package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-LX3JZbRr.js → _server.ts.js-DDqjDxoc.js} +3 -3
  61. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-BJ0d199o.js → _server.ts.js-DG0MHUkj.js} +3 -3
  62. package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-BDy9jQXv.js → _server.ts.js-Cz4XSEfb.js} +3 -3
  63. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-DoTpSXIc.js → _server.ts.js-DV4wF7XG.js} +3 -3
  64. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-BnfIobo7.js → _server.ts.js-X0mwkV_4.js} +3 -3
  65. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-KRyjIODB.js → _server.ts.js-D_AEj6qx.js} +3 -3
  66. package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-bRLZ5TWI.js → _server.ts.js-Cj3S-2MC.js} +3 -3
  67. package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-ChzWZoFk.js → _server.ts.js-DuuhbcTE.js} +3 -3
  68. package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-DdH5QmPS.js → _server.ts.js-C72akYlH.js} +3 -3
  69. package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-DwGQj520.js → _server.ts.js-CEO2aw-C.js} +2 -2
  70. package/build/server/chunks/entries/endpoints/api/terminal/_id_/output/{_server.ts.js-m6Cug5hN.js → _server.ts.js-BNBxebgG.js} +3 -3
  71. package/build/server/chunks/entries/endpoints/api/terminal/_id_/reattach/{_server.ts.js-wSsMKLiw.js → _server.ts.js-DDRJBGIr.js} +3 -3
  72. package/build/server/chunks/entries/endpoints/api/terminal/_id_/send/{_server.ts.js-CTc5xP72.js → _server.ts.js-CA0vc_Cm.js} +3 -3
  73. package/build/server/chunks/entries/endpoints/api/terminal/_id_/stream/{_server.ts.js-C8PLMU0Y.js → _server.ts.js-D6L8Gd_f.js} +3 -3
  74. package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-CwXC6Stk.js → _server.ts.js-BhR4Cblt.js} +4 -4
  75. package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-Cb7X2G82.js → _server.ts.js-BFdpm_he.js} +5 -5
  76. package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-DZ67v729.js → _server.ts.js-D5eW-2fL.js} +5 -5
  77. package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-BuO5Stmm.js → _server.ts.js-iax8K9x8.js} +5 -5
  78. package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-Bb_I5Ze7.js → _server.ts.js-CdfiRwgl.js} +5 -5
  79. package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-cHWxh5VB.js → _server.ts.js-CBU0ug30.js} +5 -5
  80. package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-Blcfn0zm.js → _server.ts.js-CLozZQT3.js} +5 -5
  81. package/build/server/chunks/entries/pages/{_error.svelte.js-BqHQUTpg.js → _error.svelte.js-B9CGiiZy.js} +3 -3
  82. package/build/server/chunks/entries/pages/{_page.server.ts.js-C_ydvzuE.js → _page.server.ts.js-yB-zbLkm.js} +8 -3
  83. package/build/server/chunks/entries/pages/{_page.svelte.js-CWiGV7R5.js → _page.svelte.js-D3F2fiR4.js} +1047 -98
  84. package/build/server/chunks/{handler-CPdXYlKK.js → handler-CF16q5dY.js} +3 -3
  85. package/build/server/chunks/{index.js-CNYTOWSB.js → index.js-DsT3Sxoa.js} +2 -2
  86. package/build/server/chunks/{manifest.js-CQRa1JdF.js → manifest.js-CW2r9Rb1.js} +106 -50
  87. package/build/server/chunks/nodes/{0.js-zSkx80Fq.js → 0.js-gr8Z-ETs.js} +3 -3
  88. package/build/server/chunks/nodes/1.js-BrruRgxj.js +9 -0
  89. package/build/server/chunks/nodes/{2.js-CL8x9-EN.js → 2.js-Cif5vNvc.js} +9 -8
  90. package/package.json +4 -1
  91. package/template/.dsi/prompts.sqlite-shm +0 -0
  92. package/template/.dsi/prompts.sqlite-wal +0 -0
  93. package/build/client/_app/immutable/assets/0.KhAZv9mf.css +0 -2
  94. package/build/client/_app/immutable/chunks/BNsgelmQ.js +0 -1
  95. package/build/client/_app/immutable/chunks/C9uc32GW.js +0 -1
  96. package/build/client/_app/immutable/chunks/tw7vR7yM.js +0 -2
  97. package/build/client/_app/immutable/entry/start.CFzOCQr3.js +0 -1
  98. package/build/client/_app/immutable/nodes/2.CpHpu496.js +0 -337
  99. package/build/server/chunks/nodes/1.js-BQXeCZbQ.js +0 -9
  100. /package/build/client/_app/immutable/nodes/{0.Jl8y_yU6.js → 0.oyzYR3-4.js} +0 -0
@@ -1,6 +1,6 @@
1
- import { c as readA2aConfig } from '../../../../../chunks/insight-config.js-CA-iT3lB.js';
2
- import { g as getDshConnection } from '../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
3
- import { c as configureWatcher, r as registerWatch } from '../../../../../chunks/watcher.js-CACduBB9.js';
1
+ import { c as readA2aConfig } from '../../../../../chunks/insight-config.js-DZBwKFH9.js';
2
+ import { g as getDshConnection } from '../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
3
+ import { c as configureWatcher, r as registerWatch } from '../../../../../chunks/watcher.js-Ck2BsXQf.js';
4
4
  import { m as mintA2aId } from '../../../../../chunks/a2a-protocol.js-C77mVg2Q.js';
5
5
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
6
6
  import '../../../../../chunks/config.js-B0w1-uCA.js';
@@ -10,9 +10,9 @@ import 'node:path';
10
10
  import 'node:os';
11
11
  import 'yaml';
12
12
  import '../../../../../chunks/settings-home2.js-f75-B6RI.js';
13
- import '../../../../../chunks/db.js-DRhjT6xK.js';
13
+ import '../../../../../chunks/db.js-BmnKaIBo.js';
14
14
  import 'node:sqlite';
15
- import '../../../../../chunks/dsh-events.js-35seDLwL.js';
15
+ import '../../../../../chunks/dsh-events.js-CGuF_had.js';
16
16
  import '../../../../../chunks/merge.js-yMwW440S.js';
17
17
  import '../../../../../chunks/shared.js-HQ0rfhm4.js';
18
18
  import '../../../../../chunks/uneval.js-BJ9Qq2SF.js';
@@ -99,4 +99,4 @@ var POST = async ({ request }) => {
99
99
  };
100
100
 
101
101
  export { POST };
102
- //# sourceMappingURL=_server.ts.js-CUUfDBcc.js.map
102
+ //# sourceMappingURL=_server.ts.js-COyQSOOR.js.map
@@ -0,0 +1,32 @@
1
+ import { b as browserRegistry } from '../../../../../../chunks/registry.js-D0ldrcNB.js';
2
+ import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
+ import '../../../../../../chunks/insight-config.js-DZBwKFH9.js';
4
+ import '../../../../../../chunks/config.js-B0w1-uCA.js';
5
+ import '../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:os';
9
+ import 'yaml';
10
+ import '../../../../../../chunks/settings-home2.js-f75-B6RI.js';
11
+ import 'node:child_process';
12
+ import 'node:crypto';
13
+ import 'playwright-core';
14
+ import '../../../../../../chunks/shared.js-HQ0rfhm4.js';
15
+ import '../../../../../../chunks/uneval.js-BJ9Qq2SF.js';
16
+
17
+ //#region src/routes/api/browser/[id]/close/+server.ts
18
+ /**
19
+ * /api/browser/[id]/close — the D8 owner-release endpoint.
20
+ * Kills the MCP child, the CDP session, the headed Chromium; frees the port;
21
+ * removes the registry entry. Idempotent: closing a gone session is 200.
22
+ */
23
+ var POST = async (ctx) => {
24
+ const r = await browserRegistry.close(ctx.params.id);
25
+ return json({
26
+ ok: r.ok,
27
+ alreadyClosed: r.alreadyClosed
28
+ });
29
+ };
30
+
31
+ export { POST };
32
+ //# sourceMappingURL=_server.ts.js-CJjvHo1Z.js.map
@@ -0,0 +1,78 @@
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-D0ldrcNB.js';
2
+ import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
+ import '../../../../../../chunks/insight-config.js-DZBwKFH9.js';
4
+ import '../../../../../../chunks/config.js-B0w1-uCA.js';
5
+ import '../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:os';
9
+ import 'yaml';
10
+ import '../../../../../../chunks/settings-home2.js-f75-B6RI.js';
11
+ import 'node:child_process';
12
+ import 'node:crypto';
13
+ import 'playwright-core';
14
+ import '../../../../../../chunks/shared.js-HQ0rfhm4.js';
15
+ import '../../../../../../chunks/uneval.js-BJ9Qq2SF.js';
16
+
17
+ //#region src/routes/api/browser/[id]/input/+server.ts
18
+ /**
19
+ * /api/browser/[id]/input — the pointer/keyboard dispatcher (Wave 1, 1.4).
20
+ * Body is a validated InputDispatch (mouse | key | text) in ALREADY-SCALED
21
+ * CSS-pixel coordinates — the panel owns the displayed÷viewport math (D6).
22
+ * 409 CLOSED after panel-close (D8); 404 NO_SESSION for an unknown id.
23
+ */
24
+ var MOUSE_TYPES = /* @__PURE__ */ new Set([
25
+ "mousePressed",
26
+ "mouseReleased",
27
+ "mouseMoved",
28
+ "mouseWheel"
29
+ ]);
30
+ var KEY_TYPES = /* @__PURE__ */ new Set(["keyDown", "keyUp"]);
31
+ function validate(body) {
32
+ const b = body;
33
+ if (!b || typeof b !== "object") return null;
34
+ if (b.kind === "mouse" && MOUSE_TYPES.has(String(b.type)) && Number.isFinite(b.x) && Number.isFinite(b.y)) return {
35
+ kind: "mouse",
36
+ type: b.type,
37
+ x: Number(b.x),
38
+ y: Number(b.y),
39
+ button: typeof b.button === "string" ? b.button : void 0,
40
+ clickCount: typeof b.clickCount === "number" ? b.clickCount : void 0,
41
+ deltaX: typeof b.deltaX === "number" ? b.deltaX : void 0,
42
+ deltaY: typeof b.deltaY === "number" ? b.deltaY : void 0
43
+ };
44
+ if (b.kind === "key" && KEY_TYPES.has(String(b.type)) && typeof b.key === "string" && typeof b.code === "string") return {
45
+ kind: "key",
46
+ type: b.type,
47
+ key: b.key,
48
+ code: b.code,
49
+ windowsVirtualKeyCode: Number(b.windowsVirtualKeyCode) || 0,
50
+ text: typeof b.text === "string" ? b.text : void 0
51
+ };
52
+ if (b.kind === "text" && typeof b.text === "string" && b.text.length < 4096) return {
53
+ kind: "text",
54
+ text: b.text
55
+ };
56
+ return null;
57
+ }
58
+ var POST = async (ctx) => {
59
+ let body;
60
+ try {
61
+ body = await ctx.request.json();
62
+ } catch {
63
+ return json({ error: "BAD_REQUEST" }, { status: 400 });
64
+ }
65
+ const input = validate(body);
66
+ if (!input) return json({ error: "BAD_INPUT" }, { status: 400 });
67
+ try {
68
+ await browserRegistry.dispatch(ctx.params.id, input);
69
+ return json({ ok: true });
70
+ } catch (err) {
71
+ if (err instanceof BrowserRegistryRefusal) return json({ error: err.code }, { status: err.code === "NO_SESSION" ? 404 : 409 });
72
+ if (err.name === "RelayClosedError") return json({ error: "CLOSED" }, { status: 409 });
73
+ throw err;
74
+ }
75
+ };
76
+
77
+ export { POST };
78
+ //# sourceMappingURL=_server.ts.js-_XEUfVid.js.map
@@ -0,0 +1,50 @@
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-D0ldrcNB.js';
2
+ import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
+ import '../../../../../../chunks/insight-config.js-DZBwKFH9.js';
4
+ import '../../../../../../chunks/config.js-B0w1-uCA.js';
5
+ import '../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:os';
9
+ import 'yaml';
10
+ import '../../../../../../chunks/settings-home2.js-f75-B6RI.js';
11
+ import 'node:child_process';
12
+ import 'node:crypto';
13
+ import 'playwright-core';
14
+ import '../../../../../../chunks/shared.js-HQ0rfhm4.js';
15
+ import '../../../../../../chunks/uneval.js-BJ9Qq2SF.js';
16
+
17
+ //#region src/routes/api/browser/[id]/mcp/+server.ts
18
+ /**
19
+ * /api/browser/[id]/mcp — the agent's connection descriptor (Wave 3, 3.3).
20
+ * GET: where the DSH agent's MCP config points for THIS session —
21
+ * { mode, url?, pid? }. The in-process brain serves SSE on the sibling
22
+ * listener; the child mode is stdio (the agent host spawns it itself).
23
+ */
24
+ var GET = (ctx) => {
25
+ try {
26
+ const info = browserRegistry.list().find((s) => s.id === ctx.params.id);
27
+ if (!info) return json({ error: "NO_SESSION" }, { status: 404 });
28
+ if (info.mcp === "in-process") return json({
29
+ mode: "in-process",
30
+ url: browserRegistry.mcpBrainUrl(ctx.params.id),
31
+ health: info.mcpHealth
32
+ });
33
+ if (info.mcp === "child") return json({
34
+ mode: "stdio",
35
+ command: "npx @playwright/mcp@<pin> --cdp-endpoint http://127.0.0.1:" + info.port,
36
+ pid: info.pid,
37
+ health: info.mcpHealth
38
+ });
39
+ return json({
40
+ mode: "none",
41
+ health: info.mcpHealth
42
+ });
43
+ } catch (err) {
44
+ if (err instanceof BrowserRegistryRefusal) return json({ error: err.code }, { status: 404 });
45
+ throw err;
46
+ }
47
+ };
48
+
49
+ export { GET };
50
+ //# sourceMappingURL=_server.ts.js-e7j-kKSK.js.map
@@ -0,0 +1,62 @@
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-D0ldrcNB.js';
2
+ import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
+ import '../../../../../../chunks/insight-config.js-DZBwKFH9.js';
4
+ import '../../../../../../chunks/config.js-B0w1-uCA.js';
5
+ import '../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:os';
9
+ import 'yaml';
10
+ import '../../../../../../chunks/settings-home2.js-f75-B6RI.js';
11
+ import 'node:child_process';
12
+ import 'node:crypto';
13
+ import 'playwright-core';
14
+ import '../../../../../../chunks/shared.js-HQ0rfhm4.js';
15
+ import '../../../../../../chunks/uneval.js-BJ9Qq2SF.js';
16
+
17
+ //#region src/routes/api/browser/[id]/navigate/+server.ts
18
+ /**
19
+ * /api/browser/[id]/navigate — drive the mirrored browser's page from the
20
+ * header proxies (ADR-0031 D1–D4): a closed union of { url } (the original
21
+ * address-bar verb, ADR-0029 Wave 2), { action: 'reload' } (D4),
22
+ * { action: 'back' } / { action: 'forward' } (D3). One route, one refusal
23
+ * path; every branch answers the landed page's pageInfo.
24
+ */
25
+ var URL_OK = /^https?:\/\/|^data:text\/html/;
26
+ var ACTIONS = /* @__PURE__ */ new Set([
27
+ "reload",
28
+ "back",
29
+ "forward"
30
+ ]);
31
+ var POST = async (ctx) => {
32
+ let body;
33
+ try {
34
+ body = await ctx.request.json();
35
+ } catch {
36
+ return json({ error: "BAD_REQUEST" }, { status: 400 });
37
+ }
38
+ if (!("url" in body) === !("action" in body)) return json({ error: "BAD_REQUEST" }, { status: 400 });
39
+ try {
40
+ if ("url" in body) {
41
+ if (typeof body.url !== "string" || !URL_OK.test(body.url)) return json({ error: "BAD_URL" }, { status: 400 });
42
+ await browserRegistry.navigate(ctx.params.id, body.url, { waitLoad: true });
43
+ return json({
44
+ ...await browserRegistry.pageInfo(ctx.params.id),
45
+ ...await browserRegistry.navInfo(ctx.params.id)
46
+ });
47
+ }
48
+ if (typeof body.action !== "string" || !ACTIONS.has(body.action)) return json({ error: "BAD_ACTION" }, { status: 400 });
49
+ if (body.action === "reload") return json(await browserRegistry.reload(ctx.params.id));
50
+ const info = await browserRegistry.pageHistory(ctx.params.id, body.action);
51
+ return json(info);
52
+ } catch (err) {
53
+ if (err instanceof BrowserRegistryRefusal) return json({
54
+ error: err.code,
55
+ reason: err.message
56
+ }, { status: err.code === "NO_SESSION" ? 404 : 409 });
57
+ throw err;
58
+ }
59
+ };
60
+
61
+ export { POST };
62
+ //# sourceMappingURL=_server.ts.js-BYiU0Wvv.js.map
@@ -0,0 +1,33 @@
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-D0ldrcNB.js';
2
+ import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
+ import '../../../../../../chunks/insight-config.js-DZBwKFH9.js';
4
+ import '../../../../../../chunks/config.js-B0w1-uCA.js';
5
+ import '../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:os';
9
+ import 'yaml';
10
+ import '../../../../../../chunks/settings-home2.js-f75-B6RI.js';
11
+ import 'node:child_process';
12
+ import 'node:crypto';
13
+ import 'playwright-core';
14
+ import '../../../../../../chunks/shared.js-HQ0rfhm4.js';
15
+ import '../../../../../../chunks/uneval.js-BJ9Qq2SF.js';
16
+
17
+ //#region src/routes/api/browser/[id]/page/+server.ts
18
+ /**
19
+ * /api/browser/[id]/page — the active page's { url, title } (Wave 2
20
+ * amendment: the status strip's location read; the e2e's DOM-truth channel).
21
+ */
22
+ var GET = async (ctx) => {
23
+ if (browserRegistry.isClosed(ctx.params.id)) return json({ error: "CLOSED" }, { status: 409 });
24
+ try {
25
+ return json(await browserRegistry.pageInfo(ctx.params.id));
26
+ } catch (err) {
27
+ if (err instanceof BrowserRegistryRefusal) return json({ error: err.code }, { status: err.code === "NO_SESSION" ? 404 : 409 });
28
+ throw err;
29
+ }
30
+ };
31
+
32
+ export { GET };
33
+ //# sourceMappingURL=_server.ts.js-RL1-uaVR.js.map
@@ -0,0 +1,74 @@
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-D0ldrcNB.js';
2
+ import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
+ import '../../../../../../chunks/insight-config.js-DZBwKFH9.js';
4
+ import '../../../../../../chunks/config.js-B0w1-uCA.js';
5
+ import '../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:os';
9
+ import 'yaml';
10
+ import '../../../../../../chunks/settings-home2.js-f75-B6RI.js';
11
+ import 'node:child_process';
12
+ import 'node:crypto';
13
+ import 'playwright-core';
14
+ import '../../../../../../chunks/shared.js-HQ0rfhm4.js';
15
+ import '../../../../../../chunks/uneval.js-BJ9Qq2SF.js';
16
+
17
+ //#region src/routes/api/browser/[id]/stream/+server.ts
18
+ /**
19
+ * /api/browser/[id]/stream — the SSE downstream (Wave 1 task 1.4).
20
+ * Frames: frame (seq + jpeg base64 + metadata), closed. ?fromSeq resumes a
21
+ * late attacher from the latest frame (the terminal fromByte pattern).
22
+ * Cancel arm: client going away MUST drop the subscriber or the next frame
23
+ * enqueues into a dead controller (crash RCA 2026-09-24 lesson).
24
+ */
25
+ var SSE_HEADERS = {
26
+ "content-type": "text/event-stream",
27
+ "cache-control": "no-store",
28
+ connection: "keep-alive",
29
+ "x-accel-buffering": "no",
30
+ "content-encoding": "identity"
31
+ };
32
+ function sse(event, data) {
33
+ return "event: " + event + "\ndata: " + JSON.stringify(data) + "\n\n";
34
+ }
35
+ var GET = (ctx) => {
36
+ const id = ctx.params.id;
37
+ try {
38
+ browserRegistry.peek(id);
39
+ } catch (err) {
40
+ if (err instanceof BrowserRegistryRefusal) return json({ error: err.code }, { status: err.code === "NO_SESSION" ? 404 : 403 });
41
+ throw err;
42
+ }
43
+ const fromSeq = Number(ctx.url.searchParams.get("fromSeq") ?? "0");
44
+ const relay = browserRegistry.relay(id);
45
+ browserRegistry.noteStreamOpen(id);
46
+ const encoder = new TextEncoder();
47
+ const state = { closed: false };
48
+ let off = null;
49
+ const stream = new ReadableStream({
50
+ start(controller) {
51
+ const push = (chunk) => {
52
+ if (state.closed) return;
53
+ try {
54
+ controller.enqueue(encoder.encode(chunk));
55
+ } catch {
56
+ state.closed = true;
57
+ off?.();
58
+ }
59
+ };
60
+ const latest = relay.latestFrame();
61
+ if (latest && Number.isFinite(fromSeq) && latest.seq > fromSeq) push(sse("frame", latest));
62
+ off = relay.subscribe((f) => push(sse("frame", f)));
63
+ },
64
+ cancel() {
65
+ state.closed = true;
66
+ off?.();
67
+ browserRegistry.noteStreamClose(id);
68
+ }
69
+ });
70
+ return new Response(stream, { headers: SSE_HEADERS });
71
+ };
72
+
73
+ export { GET };
74
+ //# sourceMappingURL=_server.ts.js-Cxc2r0BD.js.map
@@ -0,0 +1,42 @@
1
+ import { b as browserRegistry, B as BrowserRegistryRefusal } from '../../../../../../chunks/registry.js-D0ldrcNB.js';
2
+ import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
+ import '../../../../../../chunks/insight-config.js-DZBwKFH9.js';
4
+ import '../../../../../../chunks/config.js-B0w1-uCA.js';
5
+ import '../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:os';
9
+ import 'yaml';
10
+ import '../../../../../../chunks/settings-home2.js-f75-B6RI.js';
11
+ import 'node:child_process';
12
+ import 'node:crypto';
13
+ import 'playwright-core';
14
+ import '../../../../../../chunks/shared.js-HQ0rfhm4.js';
15
+ import '../../../../../../chunks/uneval.js-BJ9Qq2SF.js';
16
+
17
+ //#region src/routes/api/browser/[id]/viewport/+server.ts
18
+ /**
19
+ * /api/browser/[id]/viewport — size the mirrored page to the panel's
20
+ * glass box (ADR-0031 amendment 2): the screencast frame then matches
21
+ * the panel, so content renders at native scale, never zoomed. The
22
+ * registry clamps; this route only validates shapes.
23
+ */
24
+ var POST = async (ctx) => {
25
+ let body;
26
+ try {
27
+ body = await ctx.request.json();
28
+ } catch {
29
+ return json({ error: "BAD_REQUEST" }, { status: 400 });
30
+ }
31
+ if (typeof body.width !== "number" || typeof body.height !== "number" || !Number.isFinite(body.width) || !Number.isFinite(body.height)) return json({ error: "BAD_REQUEST" }, { status: 400 });
32
+ try {
33
+ await browserRegistry.setViewport(ctx.params.id, body.width, body.height);
34
+ return json({ ok: true });
35
+ } catch (err) {
36
+ if (err instanceof BrowserRegistryRefusal) return json({ error: err.code }, { status: err.code === "NO_SESSION" ? 404 : 409 });
37
+ throw err;
38
+ }
39
+ };
40
+
41
+ export { POST };
42
+ //# sourceMappingURL=_server.ts.js-DQ1jgFuc.js.map
@@ -0,0 +1,37 @@
1
+ import { b as browserRegistry } from '../../../../chunks/registry.js-D0ldrcNB.js';
2
+ import { j as json } from '../../../../chunks/utils.js-CAdNO8Tu.js';
3
+ import '../../../../chunks/insight-config.js-DZBwKFH9.js';
4
+ import '../../../../chunks/config.js-B0w1-uCA.js';
5
+ import '../../../../chunks/settings-document.js-BRTO59Al.js';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:os';
9
+ import 'yaml';
10
+ import '../../../../chunks/settings-home2.js-f75-B6RI.js';
11
+ import 'node:child_process';
12
+ import 'node:crypto';
13
+ import 'playwright-core';
14
+ import '../../../../chunks/shared.js-HQ0rfhm4.js';
15
+ import '../../../../chunks/uneval.js-BJ9Qq2SF.js';
16
+
17
+ //#region src/routes/api/browser/+server.ts
18
+ /**
19
+ * /api/browser — the session table (Wave 1 task 1.4).
20
+ * GET lists sessions; POST opens a new headed browser session (D2/D5) and
21
+ * returns { id, port }. The registry owns every refusal.
22
+ */
23
+ var GET = () => json({ sessions: browserRegistry.list() });
24
+ var POST = async () => {
25
+ try {
26
+ const info = await browserRegistry.open();
27
+ return json(info);
28
+ } catch (e) {
29
+ return json({
30
+ error: "OPEN_FAILED",
31
+ message: e.message
32
+ }, { status: 500 });
33
+ }
34
+ };
35
+
36
+ export { GET, POST };
37
+ //# sourceMappingURL=_server.ts.js-DfbmPmUH.js.map
@@ -1,5 +1,5 @@
1
- import { e as readSettingsHomes, d as readPromptsConfig, f as readSidebarConfig, g as readPanelConfig, c as readA2aConfig, h as readHomeConfig, i as readConversationConfig, k as readChatConfig } from '../../../../chunks/insight-config.js-CA-iT3lB.js';
2
- import { r as resolvePromptsDbPath } from '../../../../chunks/db2.js-DUta2B-n.js';
1
+ import { f as readSettingsHomes, e as readPromptsConfig, g as readSidebarConfig, h as readPanelConfig, c as readA2aConfig, i as readHomeConfig, k as readConversationConfig, l as readChatConfig } from '../../../../chunks/insight-config.js-DZBwKFH9.js';
2
+ import { r as resolvePromptsDbPath } from '../../../../chunks/db2.js-CpSDQEUB.js';
3
3
  import { j as json } from '../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import { homedir } from 'node:os';
5
5
  import '../../../../chunks/config.js-B0w1-uCA.js';
@@ -49,4 +49,4 @@ var GET = async () => {
49
49
  };
50
50
 
51
51
  export { GET };
52
- //# sourceMappingURL=_server.ts.js-BG78X__J.js.map
52
+ //# sourceMappingURL=_server.ts.js-CfcgdS1G.js.map
@@ -1,7 +1,7 @@
1
- import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
1
+ import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
2
2
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../chunks/config.js-B0w1-uCA.js';
4
- import '../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
+ import '../../../../../chunks/insight-config.js-DZBwKFH9.js';
5
5
  import '../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -42,4 +42,4 @@ var GET = async ({ url }) => {
42
42
  };
43
43
 
44
44
  export { GET };
45
- //# sourceMappingURL=_server.ts.js-Cae4x1c7.js.map
45
+ //# sourceMappingURL=_server.ts.js-BOgNWE9k.js.map
@@ -1,7 +1,7 @@
1
- import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
1
+ import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
2
2
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../chunks/config.js-B0w1-uCA.js';
4
- import '../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
+ import '../../../../../chunks/insight-config.js-DZBwKFH9.js';
5
5
  import '../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -90,4 +90,4 @@ var POST = async ({ request }) => {
90
90
  };
91
91
 
92
92
  export { GET, POST };
93
- //# sourceMappingURL=_server.ts.js-hGmoSsDv.js.map
93
+ //# sourceMappingURL=_server.ts.js-DExfzwju.js.map
@@ -1,7 +1,7 @@
1
- import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
1
+ import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
2
2
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../chunks/config.js-B0w1-uCA.js';
4
- import '../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
+ import '../../../../../chunks/insight-config.js-DZBwKFH9.js';
5
5
  import '../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -35,4 +35,4 @@ var POST = async ({ request }) => {
35
35
  };
36
36
 
37
37
  export { POST };
38
- //# sourceMappingURL=_server.ts.js-BLb8o1cY.js.map
38
+ //# sourceMappingURL=_server.ts.js-vuxSBOKD.js.map
@@ -1,7 +1,7 @@
1
- import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
1
+ import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
2
2
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../chunks/config.js-B0w1-uCA.js';
4
- import '../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
+ import '../../../../../chunks/insight-config.js-DZBwKFH9.js';
5
5
  import '../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -32,4 +32,4 @@ var GET = async () => {
32
32
  };
33
33
 
34
34
  export { GET };
35
- //# sourceMappingURL=_server.ts.js-BFeDKrPz.js.map
35
+ //# sourceMappingURL=_server.ts.js-DYh0lUVR.js.map
@@ -1,7 +1,7 @@
1
- import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
1
+ import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
2
2
  import { j as json } from '../../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../../chunks/config.js-B0w1-uCA.js';
4
- import '../../../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
+ import '../../../../../../../chunks/insight-config.js-DZBwKFH9.js';
5
5
  import '../../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -43,4 +43,4 @@ var GET = async ({ params, url }) => {
43
43
  };
44
44
 
45
45
  export { GET };
46
- //# sourceMappingURL=_server.ts.js-DmSTTfI5.js.map
46
+ //# sourceMappingURL=_server.ts.js-CzmMoP9-.js.map
@@ -1,7 +1,7 @@
1
- import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
1
+ import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
2
2
  import { j as json } from '../../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../../chunks/config.js-B0w1-uCA.js';
4
- import '../../../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
+ import '../../../../../../../chunks/insight-config.js-DZBwKFH9.js';
5
5
  import '../../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -32,4 +32,4 @@ var POST = async ({ params }) => {
32
32
  };
33
33
 
34
34
  export { POST };
35
- //# sourceMappingURL=_server.ts.js-Cus9XrC9.js.map
35
+ //# sourceMappingURL=_server.ts.js-CXnfYfR4.js.map
@@ -1,7 +1,7 @@
1
- import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
1
+ import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
2
2
  import { j as json } from '../../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../../chunks/config.js-B0w1-uCA.js';
4
- import '../../../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
+ import '../../../../../../../chunks/insight-config.js-DZBwKFH9.js';
5
5
  import '../../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -41,4 +41,4 @@ var GET = async ({ params }) => {
41
41
  };
42
42
 
43
43
  export { GET };
44
- //# sourceMappingURL=_server.ts.js-DcrNU0_y.js.map
44
+ //# sourceMappingURL=_server.ts.js-CF2s7GwI.js.map
@@ -1,7 +1,7 @@
1
- import { g as getDshConnection } from '../../../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
1
+ import { g as getDshConnection } from '../../../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
2
2
  import { j as json } from '../../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../../chunks/config.js-B0w1-uCA.js';
4
- import '../../../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
+ import '../../../../../../../chunks/insight-config.js-DZBwKFH9.js';
5
5
  import '../../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -139,4 +139,4 @@ var GET = async ({ params, url }) => {
139
139
  };
140
140
 
141
141
  export { GET };
142
- //# sourceMappingURL=_server.ts.js-CpuEcp6p.js.map
142
+ //# sourceMappingURL=_server.ts.js-DKw9ktIO.js.map
@@ -1,7 +1,7 @@
1
- import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../../../chunks/dsh-connection.js-DL5qjlq2.js';
1
+ import { g as getDshConnection, s as statusFor, m as mapRpcFailure } from '../../../../../../../chunks/dsh-connection.js-CE6s1mIM.js';
2
2
  import { j as json } from '../../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import '../../../../../../../chunks/config.js-B0w1-uCA.js';
4
- import '../../../../../../../chunks/insight-config.js-CA-iT3lB.js';
4
+ import '../../../../../../../chunks/insight-config.js-DZBwKFH9.js';
5
5
  import '../../../../../../../chunks/settings-document.js-BRTO59Al.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -84,4 +84,4 @@ var POST = async ({ params, request }) => {
84
84
  };
85
85
 
86
86
  export { POST };
87
- //# sourceMappingURL=_server.ts.js-CU9o8Tho.js.map
87
+ //# sourceMappingURL=_server.ts.js-pT2AO2S0.js.map