@oddsquad/vite-plugin-lit 0.6.0 → 0.6.1

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 (38) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +2 -0
  3. package/bin.mjs +20 -0
  4. package/dist/client/assets/{browser-agent-rpc-BXhoSh1z-DXAVFObe.js → browser-agent-rpc-BXhoSh1z-F2EfZsFX.js} +3 -3
  5. package/dist/client/assets/{browser-agent-rpc-BXhoSh1z-DXAVFObe.js.map → browser-agent-rpc-BXhoSh1z-F2EfZsFX.js.map} +1 -1
  6. package/dist/client/assets/{index-DVr5EnyB.js → index-B2HYO7lk.js} +25 -18
  7. package/dist/client/assets/index-B2HYO7lk.js.map +1 -0
  8. package/dist/client/index.html +1 -1
  9. package/lib/confine.d.ts +22 -0
  10. package/lib/confine.d.ts.map +1 -0
  11. package/lib/confine.js +39 -0
  12. package/lib/confine.js.map +1 -0
  13. package/lib/devframe/definition.d.ts +10 -2
  14. package/lib/devframe/definition.d.ts.map +1 -1
  15. package/lib/devframe/definition.js +31 -9
  16. package/lib/devframe/definition.js.map +1 -1
  17. package/lib/devframe/protocol.d.ts +7 -3
  18. package/lib/devframe/protocol.d.ts.map +1 -1
  19. package/lib/devframe/protocol.js.map +1 -1
  20. package/lib/devframe/vite.d.ts.map +1 -1
  21. package/lib/devframe/vite.js +3 -0
  22. package/lib/devframe/vite.js.map +1 -1
  23. package/lib/http.d.ts +5 -0
  24. package/lib/http.d.ts.map +1 -1
  25. package/lib/http.js +5 -0
  26. package/lib/http.js.map +1 -1
  27. package/lib/plugins/open-in-editor.d.ts.map +1 -1
  28. package/lib/plugins/open-in-editor.js +11 -19
  29. package/lib/plugins/open-in-editor.js.map +1 -1
  30. package/lib/snapshot.d.ts +2 -1
  31. package/lib/snapshot.d.ts.map +1 -1
  32. package/lib/snapshot.js +17 -1
  33. package/lib/snapshot.js.map +1 -1
  34. package/lib/source-meta.d.ts.map +1 -1
  35. package/lib/source-meta.js +40 -1
  36. package/lib/source-meta.js.map +1 -1
  37. package/package.json +6 -6
  38. package/dist/client/assets/index-DVr5EnyB.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,42 @@
3
3
  Notable changes per release. Versions before 0.3.0 predate this file; see the
4
4
  git history for those.
5
5
 
6
+ ## 0.6.1 — 2026-09-29
7
+
8
+ A fix release. Components whose `extends` clause holds braces load in dev
9
+ again, and the plugin now shares one devframe with the current Vite DevTools.
10
+ The rest comes from a security pass over the dev server: source opens and
11
+ snapshot exports stay inside the project, and the standalone server won't go
12
+ without its code gate on a network address.
13
+
14
+ ### Changed
15
+
16
+ - **`lit-devtools dev --no-auth` only runs on localhost.** Combined with a
17
+ `--host` other machines can reach, it now refuses to start instead of
18
+ letting anyone on the network drive the panel without a code.
19
+
20
+ ### Fixed
21
+
22
+ - **Components whose `extends` clause has braces load in dev again.** With
23
+ `sourceOverlay` on, a class like `extends Dialog<{open: boolean}>` or
24
+ `extends Mixin(Base, {shadow: true})` broke the module with a 500 from the
25
+ dev server. Broken since 0.3.0.
26
+ - **Exporting a snapshot can no longer delete your files.** The export wipes
27
+ its output directory before writing, and nothing checked which directory
28
+ that was. It now only writes inside the dev server's working directory and
29
+ only replaces an earlier snapshot.
30
+ - **The panel can only open source files inside your project.** Source links
31
+ from the DevTools panel used to open any absolute path they were given. They
32
+ now follow the same rule as the in-page overlay: the path has to be under
33
+ the Vite root or `server.fs.allow`.
34
+ - **Symlinks can't send the editor outside your project.** Opening a source
35
+ file used to follow a symlink under the project to wherever it pointed. Now
36
+ the target has to be inside the project too.
37
+ - **One copy of devframe alongside the current Vite DevTools.** The plugin
38
+ pinned devframe 1.0.0 exactly, so apps on `@vitejs/devtools-kit` 0.7.6
39
+ installed a second copy and got an unmet-peer warning. It now accepts any
40
+ devframe 1.x.
41
+
6
42
  ## 0.6.0 — 2026-09-29
7
43
 
8
44
  A small release with one feature. The Lit timeline can now appear in Chrome
package/README.md CHANGED
@@ -3,6 +3,8 @@
3
3
  A Vite plugin for Lit projects with true HMR, CSS delivery helpers for shadow
4
4
  roots, and a DevTools timeline.
5
5
 
6
+ https://github.com/user-attachments/assets/bacc7649-746a-4ecf-a017-0370b5af23ca
7
+
6
8
  **[Documentation →](https://oddcelot.github.io/vite-plugin-lit/)**
7
9
 
8
10
  Based on `@lit-labs/vite-plugin-lit` (formerly `@lit-labs/vite-hmr`) from the
package/bin.mjs CHANGED
@@ -43,6 +43,13 @@ import {PACKAGE_VERSION} from './lib/devframe/paths.js';
43
43
  */
44
44
  const DEFAULT_DEV_PORT = 5180;
45
45
 
46
+ /** True for a host only this machine can reach. */
47
+ const isLoopbackHost = (host) =>
48
+ host === 'localhost' ||
49
+ host === '::1' ||
50
+ host === '[::1]' ||
51
+ /^127\.\d+\.\d+\.\d+$/.test(host);
52
+
46
53
  /** Fail with a readable message instead of a module-resolution stack trace. */
47
54
  const requirePeer = async (specifier, hint) => {
48
55
  try {
@@ -73,6 +80,19 @@ const main = async () => {
73
80
  'Skip the one-time-code gate, so a page can connect without a token'
74
81
  )
75
82
  .action(async (flags) => {
83
+ // Without the code gate, anything that can reach the port drives the
84
+ // panel's RPC: it can read the session and open project files in the
85
+ // developer's editor. On loopback that is this machine; on any other
86
+ // host it is the network.
87
+ if (flags.auth === false && !isLoopbackHost(String(flags.host))) {
88
+ console.error(
89
+ `[lit-devtools] --no-auth needs a loopback host, and ` +
90
+ `${flags.host} is reachable from other machines. Drop ` +
91
+ `--no-auth (pages then ask for the one-time code) or bind to ` +
92
+ `localhost.`
93
+ );
94
+ process.exit(1);
95
+ }
76
96
  const {createDevServer} = await import('devframe/adapters/dev');
77
97
  // A standalone server has no Vite, so it has no page of its own: the
78
98
  // panel stays empty until a page dials in with `connectToDevServer()`
@@ -1,5 +1,5 @@
1
- import { n as onBrowserAgentToolsChanged, r as nanoid, t as listBrowserAgentTools } from "./index-DVr5EnyB.js";
2
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/browser-agent-rpc-BXhoSh1z.mjs
1
+ import { n as onBrowserAgentToolsChanged, r as nanoid, t as listBrowserAgentTools } from "./index-B2HYO7lk.js";
2
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/browser-agent-rpc-BXhoSh1z.mjs
3
3
  var CLIENT_ID_STORAGE_KEY = "devframe:client-id";
4
4
  var memoryClientId;
5
5
  /**
@@ -66,4 +66,4 @@ function setupBrowserAgentRpcBridge(rpc) {
66
66
  //#endregion
67
67
  export { setupBrowserAgentRpcBridge };
68
68
 
69
- //# sourceMappingURL=browser-agent-rpc-BXhoSh1z-DXAVFObe.js.map
69
+ //# sourceMappingURL=browser-agent-rpc-BXhoSh1z-F2EfZsFX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-agent-rpc-BXhoSh1z-DXAVFObe.js","names":[],"sources":["../../../node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/browser-agent-rpc-BXhoSh1z.mjs"],"sourcesContent":["import { nanoid } from \"./utils/nanoid.mjs\";\nimport { n as onBrowserAgentToolsChanged, t as listBrowserAgentTools } from \"./browser-agent-Pu-FLk6I.mjs\";\n//#region src/client/client-id.ts\nconst CLIENT_ID_STORAGE_KEY = \"devframe:client-id\";\nlet memoryClientId;\n/**\n* This browser tab's stable client id: one nanoid per tab, persisted in\n* `sessionStorage` so it survives page reloads and RPC reconnects. The node\n* side uses it to tell connected tabs apart across reconnects (see #394).\n*\n* Tab duplication copies `sessionStorage`, so two tabs can briefly share an id\n* until per-tab disambiguation lands with the wider tab-metadata work.\n*/\nfunction resolveClientId(win = globalThis.window) {\n\ttry {\n\t\tconst storage = win?.sessionStorage;\n\t\tif (storage) {\n\t\t\tlet id = storage.getItem(CLIENT_ID_STORAGE_KEY);\n\t\t\tif (!id) {\n\t\t\t\tid = nanoid();\n\t\t\t\tstorage.setItem(CLIENT_ID_STORAGE_KEY, id);\n\t\t\t}\n\t\t\treturn id;\n\t\t}\n\t} catch {}\n\tmemoryClientId ??= nanoid();\n\treturn memoryClientId;\n}\n//#endregion\n//#region src/client/browser-agent-rpc.ts\n/** Mirror this document's browser-agent registry over its existing RPC connection. */\nfunction setupBrowserAgentRpcBridge(rpc) {\n\trpc.client.register({\n\t\tname: \"devframe:agent:invoke-client-tool\",\n\t\ttype: \"action\",\n\t\tjsonSerializable: true,\n\t\thandler: async (id, args) => {\n\t\t\tconst tool = listBrowserAgentTools().find((tool) => tool.id === id);\n\t\t\tif (!tool) throw new Error(`[devframe/agent] browser tool \"${id}\" not found`);\n\t\t\treturn await tool.invoke(args);\n\t\t}\n\t});\n\tlet queued = false;\n\tlet disposed = false;\n\tlet lastSyncedCount = 0;\n\tconst sync = () => {\n\t\tif (queued || disposed) return;\n\t\tqueued = true;\n\t\tqueueMicrotask(async () => {\n\t\t\tqueued = false;\n\t\t\tif (disposed) return;\n\t\t\tconst manifests = listBrowserAgentTools().map(({ invoke: _, ...manifest }) => manifest);\n\t\t\tif (manifests.length === 0 && lastSyncedCount === 0) return;\n\t\t\tlastSyncedCount = manifests.length;\n\t\t\tawait rpc.callOptional(\"devframe:agent:sync-client-tools\", resolveClientId(), manifests).catch(() => {});\n\t\t});\n\t};\n\tconst stopTools = onBrowserAgentToolsChanged(sync);\n\tconst stopConnection = rpc.events.on(\"connection:status\", (status) => {\n\t\tif (status === \"connected\") sync();\n\t});\n\tsync();\n\treturn () => {\n\t\tdisposed = true;\n\t\tstopTools();\n\t\tstopConnection();\n\t};\n}\n//#endregion\nexport { setupBrowserAgentRpcBridge };\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,IAAM,wBAAwB;AAC9B,IAAI;;;;;;;;;AASJ,SAAS,gBAAgB,MAAM,WAAW,QAAQ;CACjD,IAAI;EACH,MAAM,UAAU,KAAK;EACrB,IAAI,SAAS;GACZ,IAAI,KAAK,QAAQ,QAAQ,qBAAqB;GAC9C,IAAI,CAAC,IAAI;IACR,KAAK,OAAO;IACZ,QAAQ,QAAQ,uBAAuB,EAAE;GAC1C;GACA,OAAO;EACR;CACD,QAAQ,CAAC;CACT,mBAAmB,OAAO;CAC1B,OAAO;AACR;;AAIA,SAAS,2BAA2B,KAAK;CACxC,IAAI,OAAO,SAAS;EACnB,MAAM;EACN,MAAM;EACN,kBAAkB;EAClB,SAAS,OAAO,IAAI,SAAS;GAC5B,MAAM,OAAO,sBAAsB,CAAC,CAAC,MAAM,SAAS,KAAK,OAAO,EAAE;GAClE,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,kCAAkC,GAAG,YAAY;GAC5E,OAAO,MAAM,KAAK,OAAO,IAAI;EAC9B;CACD,CAAC;CACD,IAAI,SAAS;CACb,IAAI,WAAW;CACf,IAAI,kBAAkB;CACtB,MAAM,aAAa;EAClB,IAAI,UAAU,UAAU;EACxB,SAAS;EACT,eAAe,YAAY;GAC1B,SAAS;GACT,IAAI,UAAU;GACd,MAAM,YAAY,sBAAsB,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,eAAe,QAAQ;GACtF,IAAI,UAAU,WAAW,KAAK,oBAAoB,GAAG;GACrD,kBAAkB,UAAU;GAC5B,MAAM,IAAI,aAAa,oCAAoC,gBAAgB,GAAG,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;EACxG,CAAC;CACF;CACA,MAAM,YAAY,2BAA2B,IAAI;CACjD,MAAM,iBAAiB,IAAI,OAAO,GAAG,sBAAsB,WAAW;EACrE,IAAI,WAAW,aAAa,KAAK;CAClC,CAAC;CACD,KAAK;CACL,aAAa;EACZ,WAAW;EACX,UAAU;EACV,eAAe;CAChB;AACD"}
1
+ {"version":3,"file":"browser-agent-rpc-BXhoSh1z-F2EfZsFX.js","names":[],"sources":["../../../node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/browser-agent-rpc-BXhoSh1z.mjs"],"sourcesContent":["import { nanoid } from \"./utils/nanoid.mjs\";\nimport { n as onBrowserAgentToolsChanged, t as listBrowserAgentTools } from \"./browser-agent-Pu-FLk6I.mjs\";\n//#region src/client/client-id.ts\nconst CLIENT_ID_STORAGE_KEY = \"devframe:client-id\";\nlet memoryClientId;\n/**\n* This browser tab's stable client id: one nanoid per tab, persisted in\n* `sessionStorage` so it survives page reloads and RPC reconnects. The node\n* side uses it to tell connected tabs apart across reconnects (see #394).\n*\n* Tab duplication copies `sessionStorage`, so two tabs can briefly share an id\n* until per-tab disambiguation lands with the wider tab-metadata work.\n*/\nfunction resolveClientId(win = globalThis.window) {\n\ttry {\n\t\tconst storage = win?.sessionStorage;\n\t\tif (storage) {\n\t\t\tlet id = storage.getItem(CLIENT_ID_STORAGE_KEY);\n\t\t\tif (!id) {\n\t\t\t\tid = nanoid();\n\t\t\t\tstorage.setItem(CLIENT_ID_STORAGE_KEY, id);\n\t\t\t}\n\t\t\treturn id;\n\t\t}\n\t} catch {}\n\tmemoryClientId ??= nanoid();\n\treturn memoryClientId;\n}\n//#endregion\n//#region src/client/browser-agent-rpc.ts\n/** Mirror this document's browser-agent registry over its existing RPC connection. */\nfunction setupBrowserAgentRpcBridge(rpc) {\n\trpc.client.register({\n\t\tname: \"devframe:agent:invoke-client-tool\",\n\t\ttype: \"action\",\n\t\tjsonSerializable: true,\n\t\thandler: async (id, args) => {\n\t\t\tconst tool = listBrowserAgentTools().find((tool) => tool.id === id);\n\t\t\tif (!tool) throw new Error(`[devframe/agent] browser tool \"${id}\" not found`);\n\t\t\treturn await tool.invoke(args);\n\t\t}\n\t});\n\tlet queued = false;\n\tlet disposed = false;\n\tlet lastSyncedCount = 0;\n\tconst sync = () => {\n\t\tif (queued || disposed) return;\n\t\tqueued = true;\n\t\tqueueMicrotask(async () => {\n\t\t\tqueued = false;\n\t\t\tif (disposed) return;\n\t\t\tconst manifests = listBrowserAgentTools().map(({ invoke: _, ...manifest }) => manifest);\n\t\t\tif (manifests.length === 0 && lastSyncedCount === 0) return;\n\t\t\tlastSyncedCount = manifests.length;\n\t\t\tawait rpc.callOptional(\"devframe:agent:sync-client-tools\", resolveClientId(), manifests).catch(() => {});\n\t\t});\n\t};\n\tconst stopTools = onBrowserAgentToolsChanged(sync);\n\tconst stopConnection = rpc.events.on(\"connection:status\", (status) => {\n\t\tif (status === \"connected\") sync();\n\t});\n\tsync();\n\treturn () => {\n\t\tdisposed = true;\n\t\tstopTools();\n\t\tstopConnection();\n\t};\n}\n//#endregion\nexport { setupBrowserAgentRpcBridge };\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,IAAM,wBAAwB;AAC9B,IAAI;;;;;;;;;AASJ,SAAS,gBAAgB,MAAM,WAAW,QAAQ;CACjD,IAAI;EACH,MAAM,UAAU,KAAK;EACrB,IAAI,SAAS;GACZ,IAAI,KAAK,QAAQ,QAAQ,qBAAqB;GAC9C,IAAI,CAAC,IAAI;IACR,KAAK,OAAO;IACZ,QAAQ,QAAQ,uBAAuB,EAAE;GAC1C;GACA,OAAO;EACR;CACD,QAAQ,CAAC;CACT,mBAAmB,OAAO;CAC1B,OAAO;AACR;;AAIA,SAAS,2BAA2B,KAAK;CACxC,IAAI,OAAO,SAAS;EACnB,MAAM;EACN,MAAM;EACN,kBAAkB;EAClB,SAAS,OAAO,IAAI,SAAS;GAC5B,MAAM,OAAO,sBAAsB,CAAC,CAAC,MAAM,SAAS,KAAK,OAAO,EAAE;GAClE,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,kCAAkC,GAAG,YAAY;GAC5E,OAAO,MAAM,KAAK,OAAO,IAAI;EAC9B;CACD,CAAC;CACD,IAAI,SAAS;CACb,IAAI,WAAW;CACf,IAAI,kBAAkB;CACtB,MAAM,aAAa;EAClB,IAAI,UAAU,UAAU;EACxB,SAAS;EACT,eAAe,YAAY;GAC1B,SAAS;GACT,IAAI,UAAU;GACd,MAAM,YAAY,sBAAsB,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,eAAe,QAAQ;GACtF,IAAI,UAAU,WAAW,KAAK,oBAAoB,GAAG;GACrD,kBAAkB,UAAU;GAC5B,MAAM,IAAI,aAAa,oCAAoC,gBAAgB,GAAG,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;EACxG,CAAC;CACF;CACA,MAAM,YAAY,2BAA2B,IAAI;CACjD,MAAM,iBAAiB,IAAI,OAAO,GAAG,sBAAsB,WAAW;EACrE,IAAI,WAAW,aAAa,KAAK;CAClC,CAAC;CACD,KAAK;CACL,aAAa;EACZ,WAAW;EACX,UAAU;EACV,eAAe;CAChB;AACD"}
@@ -2656,7 +2656,7 @@ var VirtualizeDirective = class extends f {
2656
2656
  };
2657
2657
  var virtualize = e$1(VirtualizeDirective);
2658
2658
  //#endregion
2659
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/colors.mjs
2659
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/colors.mjs
2660
2660
  function makeColor(open, close) {
2661
2661
  const o = `\x1B[${open}m`;
2662
2662
  const c = `\x1B[${close}m`;
@@ -2686,7 +2686,7 @@ var colors = {
2686
2686
  underline: makeColor(4, 24)
2687
2687
  };
2688
2688
  //#endregion
2689
- //#region node_modules/.pnpm/nostics@1.2.0/node_modules/nostics/dist/index.mjs
2689
+ //#region node_modules/.pnpm/nostics@1.3.0/node_modules/nostics/dist/index.mjs
2690
2690
  /**
2691
2691
  * Transforms a value or a function that returns a value to a value.
2692
2692
  *
@@ -2723,6 +2723,10 @@ var Diagnostic = class Diagnostic extends Error {
2723
2723
  */
2724
2724
  sources;
2725
2725
  /**
2726
+ * Structured information associated with this diagnostic code.
2727
+ */
2728
+ data;
2729
+ /**
2726
2730
  * Alias for {@link Error.message}: the reason this diagnostic was raised.
2727
2731
  */
2728
2732
  get why() {
@@ -2741,6 +2745,7 @@ var Diagnostic = class Diagnostic extends Error {
2741
2745
  this.fix = init.fix;
2742
2746
  this.docs = init.docs;
2743
2747
  this.sources = init.sources;
2748
+ this.data = init.data;
2744
2749
  captureStackTrace?.(this, captureFrom);
2745
2750
  }
2746
2751
  /**
@@ -2754,6 +2759,7 @@ var Diagnostic = class Diagnostic extends Error {
2754
2759
  docs: this.docs,
2755
2760
  sources: this.sources,
2756
2761
  cause: this.cause,
2762
+ data: this.data,
2757
2763
  stack: this.stack
2758
2764
  };
2759
2765
  }
@@ -2789,7 +2795,8 @@ function defineDiagnostics(options) {
2789
2795
  fix: toValueWithArgs(def.fix, params),
2790
2796
  docs,
2791
2797
  cause: params.cause,
2792
- sources: params.sources
2798
+ sources: params.sources,
2799
+ data: toValueWithArgs(def.data, params)
2793
2800
  }, handle);
2794
2801
  for (const reporter of reporters) reporter(diagnostic, reporterOptions);
2795
2802
  return diagnostic;
@@ -2799,7 +2806,7 @@ function defineDiagnostics(options) {
2799
2806
  return result;
2800
2807
  }
2801
2808
  //#endregion
2802
- //#region node_modules/.pnpm/nostics@1.2.0/node_modules/nostics/dist/formatters/ansi.mjs
2809
+ //#region node_modules/.pnpm/nostics@1.3.0/node_modules/nostics/dist/formatters/ansi.mjs
2803
2810
  /* @__NO_SIDE_EFFECTS__ */
2804
2811
  function ansiFormatter(colors) {
2805
2812
  return (d) => {
@@ -2815,7 +2822,7 @@ function ansiFormatter(colors) {
2815
2822
  };
2816
2823
  }
2817
2824
  //#endregion
2818
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/tool-input-BAQXvvqL.mjs
2825
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/tool-input-BAQXvvqL.mjs
2819
2826
  /**
2820
2827
  * Centralized registry of the core devframe event names: the node-side host
2821
2828
  * bus events, the client RPC connection events, and the server→client
@@ -3194,7 +3201,7 @@ function toolInputToRpcArgs(input, argumentCount) {
3194
3201
  return collectPositionalArgs(input, argumentCount) ?? [input];
3195
3202
  }
3196
3203
  //#endregion
3197
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/hash-DdPnc4k3.mjs
3204
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/hash-DdPnc4k3.mjs
3198
3205
  function serialize$1(input) {
3199
3206
  if (typeof input === "string") return `'${input}'`;
3200
3207
  return new Serializer().serialize(input);
@@ -3547,7 +3554,7 @@ function hash(value) {
3547
3554
  return hash$1(value);
3548
3555
  }
3549
3556
  //#endregion
3550
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/events.mjs
3557
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/events.mjs
3551
3558
  /**
3552
3559
  * Create event emitter.
3553
3560
  */
@@ -3586,7 +3593,7 @@ function createEventEmitter() {
3586
3593
  };
3587
3594
  }
3588
3595
  //#endregion
3589
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/url.mjs
3596
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/url.mjs
3590
3597
  /**
3591
3598
  * URL path-joining and slash-normalization helpers shared by the adapters,
3592
3599
  * the RPC clients, and the hub's mount-path plumbing. In-house replacements
@@ -3631,7 +3638,7 @@ function withProtocol(input, protocol) {
3631
3638
  return protocol + (match ? input.slice(match[0].length) : input);
3632
3639
  }
3633
3640
  //#endregion
3634
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/nanoid.mjs
3641
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/nanoid.mjs
3635
3642
  var urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
3636
3643
  function nanoid(size = 21) {
3637
3644
  let id = "";
@@ -3640,7 +3647,7 @@ function nanoid(size = 21) {
3640
3647
  return id;
3641
3648
  }
3642
3649
  //#endregion
3643
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/shared-state-eQVYHNqA.mjs
3650
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/shared-state-eQVYHNqA.mjs
3644
3651
  var NOTHING = Symbol.for("immer-nothing");
3645
3652
  var DRAFTABLE = Symbol.for("immer-draftable");
3646
3653
  var DRAFT_STATE = Symbol.for("immer-state");
@@ -4584,7 +4591,7 @@ function createSharedState(options) {
4584
4591
  };
4585
4592
  }
4586
4593
  //#endregion
4587
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/structured-clone-CgtQ61SA.mjs
4594
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/structured-clone-CgtQ61SA.mjs
4588
4595
  var env = typeof self === "object" ? self : globalThis;
4589
4596
  var SAFE_ERROR_NAMES = /* @__PURE__ */ new Set([
4590
4597
  "Error",
@@ -4824,7 +4831,7 @@ function structuredCloneParse(value) {
4824
4831
  return parse(value);
4825
4832
  }
4826
4833
  //#endregion
4827
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/streaming-channel.mjs
4834
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/streaming-channel.mjs
4828
4835
  var DEFAULT_HIGH_WATER_MARK = 256;
4829
4836
  var StreamClosedError = class extends Error {
4830
4837
  name = "StreamClosedError";
@@ -5079,7 +5086,7 @@ function toErrorPayload(reason) {
5079
5086
  }
5080
5087
  }
5081
5088
  //#endregion
5082
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/agent-tool-name.mjs
5089
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/utils/agent-tool-name.mjs
5083
5090
  /**
5084
5091
  * Maximum tool-name length several MCP clients enforce (the Anthropic API
5085
5092
  * pattern is `^[a-zA-Z0-9_-]{1,128}$`).
@@ -5109,7 +5116,7 @@ function toAgentToolName(id) {
5109
5116
  return id.replace(/[^\w-]+/g, "_").slice(0, MAX_TOOL_NAME_LENGTH);
5110
5117
  }
5111
5118
  //#endregion
5112
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/client/index.mjs
5119
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/client/index.mjs
5113
5120
  /** Devframe runtime routes and static output conventions. */
5114
5121
  var DEVFRAME_CONNECTION_META_FILENAME = "__connection.json";
5115
5122
  /**
@@ -7009,7 +7016,7 @@ async function getDevframeRpcClient(options = {}) {
7009
7016
  bootstrapAuthSettled = true;
7010
7017
  });
7011
7018
  if (connectionMeta.mcp) __vitePreload(async () => {
7012
- const { setupBrowserAgentRpcBridge } = await import("./browser-agent-rpc-BXhoSh1z-DXAVFObe.js");
7019
+ const { setupBrowserAgentRpcBridge } = await import("./browser-agent-rpc-BXhoSh1z-F2EfZsFX.js");
7013
7020
  return { setupBrowserAgentRpcBridge };
7014
7021
  }, [], import.meta.url).then(({ setupBrowserAgentRpcBridge }) => {
7015
7022
  if (!closed) disposeBrowserAgentBridge = setupBrowserAgentRpcBridge(rpc);
@@ -8775,7 +8782,7 @@ var describeHmrReason = (reason) => {
8775
8782
  }
8776
8783
  };
8777
8784
  //#endregion
8778
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/browser-agent-Pu-FLk6I.mjs
8785
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/browser-agent-Pu-FLk6I.mjs
8779
8786
  var REGISTRY_KEY = Symbol.for("devframe:browser-agent-registry");
8780
8787
  var { tools, listeners: listeners$1 } = globalThis[REGISTRY_KEY] ??= {
8781
8788
  tools: /* @__PURE__ */ new Map(),
@@ -8800,7 +8807,7 @@ function onBrowserAgentToolsChanged(listener) {
8800
8807
  return () => listeners$1.delete(listener);
8801
8808
  }
8802
8809
  //#endregion
8803
- //#region node_modules/.pnpm/devframe@1.0.0_@devframes+agentic@1.0.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/in-page-channel/index.mjs
8810
+ //#region node_modules/.pnpm/devframe@1.1.0_@devframes+agentic@1.1.0_cac@7.0.0_srvx@1.0.5/node_modules/devframe/dist/in-page-channel/index.mjs
8804
8811
  var diagnostics = /* #__PURE__ */ defineDiagnostics$1({
8805
8812
  docsBase: "https://devfra.me/errors",
8806
8813
  codes: {
@@ -11719,4 +11726,4 @@ LitDevtoolsPanel = __decorate([t$2("lit-devtools-panel")], LitDevtoolsPanel);
11719
11726
  //#endregion
11720
11727
  export { onBrowserAgentToolsChanged as n, nanoid as r, listBrowserAgentTools as t };
11721
11728
 
11722
- //# sourceMappingURL=index-DVr5EnyB.js.map
11729
+ //# sourceMappingURL=index-B2HYO7lk.js.map