devframe 0.9.4 → 0.9.5

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 (55) hide show
  1. package/dist/{_shared-BPovvJW8.d.mts → _shared-CsBsnhuO.d.mts} +1 -1
  2. package/dist/adapters/build.d.mts +5 -4
  3. package/dist/adapters/build.mjs +4 -3
  4. package/dist/adapters/cac.d.mts +1 -1
  5. package/dist/adapters/cac.mjs +1 -1
  6. package/dist/adapters/dev.d.mts +11 -10
  7. package/dist/adapters/dev.mjs +1 -1
  8. package/dist/adapters/embedded.d.mts +1 -1
  9. package/dist/adapters/initiate.d.mts +8 -7
  10. package/dist/adapters/initiate.mjs +1 -1
  11. package/dist/adapters/mcp.d.mts +1 -1
  12. package/dist/adapters/mcp.mjs +1 -1
  13. package/dist/client/index.d.mts +1 -1
  14. package/dist/client/index.mjs +1 -1
  15. package/dist/constants.d.mts +1 -1
  16. package/dist/constants.mjs +1 -1
  17. package/dist/{context-CQW0lSw8.mjs → context-Bc5S40Qt.mjs} +2 -2
  18. package/dist/{context-BUJGvlje.mjs → context-Cx9V9Grq.mjs} +1 -1
  19. package/dist/{context-CO7eZHJy.d.mts → context-DO0Qu1O8.d.mts} +1 -1
  20. package/dist/{context-_i51nYOs.d.mts → context-c0OlSc12.d.mts} +20 -8
  21. package/dist/{dev-lpIvwagf.mjs → dev-BRQA42Lh.mjs} +6 -5
  22. package/dist/{events-DKfSmoTj.mjs → events-DzolaBEs.mjs} +1 -1
  23. package/dist/{host-agent-B84av916.mjs → host-agent-DbPWo0Bl.mjs} +1 -1
  24. package/dist/{http-BKiqHcXX.mjs → http-D7wWuy7-.mjs} +2 -2
  25. package/dist/{index-CEvd-YXD.d.mts → index-B_DPNIT4.d.mts} +2 -2
  26. package/dist/index.d.mts +11 -3
  27. package/dist/index.mjs +11 -1
  28. package/dist/{instance-shell-BHvBIGP4.d.mts → instance-shell-CPuYY8pw.d.mts} +2 -2
  29. package/dist/{instance-shell-B-uevnK-.mjs → instance-shell-fB5PyVtR.mjs} +1 -1
  30. package/dist/internal/index.d.mts +5 -5
  31. package/dist/internal/index.mjs +2 -2
  32. package/dist/node/auth.d.mts +2 -2
  33. package/dist/node/auth.mjs +1 -1
  34. package/dist/node/hub-internals.d.mts +2 -2
  35. package/dist/node/hub-internals.mjs +1 -1
  36. package/dist/node/index.d.mts +1 -1
  37. package/dist/node/index.mjs +1 -1
  38. package/dist/recipes/common-rpc-functions.d.mts +1 -1
  39. package/dist/recipes/interactive-auth.d.mts +2 -2
  40. package/dist/recipes/interactive-auth.mjs +1 -1
  41. package/dist/{remote-assets-Bg4gCUZ_.d.mts → remote-assets-B13_vRkJ.d.mts} +1 -1
  42. package/dist/{revoke-3Q6aDKWk.mjs → revoke-PihtvVil.mjs} +1 -1
  43. package/dist/rpc/transports/ws-bun.d.mts +1 -1
  44. package/dist/rpc/transports/ws-deno.d.mts +1 -1
  45. package/dist/{rpc-core-CDZoGYiD.d.mts → rpc-core-Oyz-cJBC.d.mts} +2 -2
  46. package/dist/types/index.d.mts +2 -2
  47. package/dist/utils/events.d.mts +1 -1
  48. package/dist/utils/remote-assets.d.mts +1 -1
  49. package/dist/utils/serve-static.d.mts +1 -1
  50. package/dist/utils/serve-static.mjs +1 -1
  51. package/dist/utils/shared-state.d.mts +1 -1
  52. package/dist/utils/streaming-channel.d.mts +1 -1
  53. package/package.json +1 -1
  54. package/skills/devframe/SKILL.md +2 -2
  55. package/skills/devframe/templates/hub.ts +1 -1
@@ -1,4 +1,4 @@
1
- import { F as DevframeDefinition, G as McpRouteOptions, I as DevframeDeploymentKind, t as ConnectionMeta } from "./context-_i51nYOs.mjs";
1
+ import { F as DevframeDefinition, G as McpRouteOptions, I as DevframeDeploymentKind, t as ConnectionMeta } from "./context-c0OlSc12.mjs";
2
2
  //#region src/adapters/_shared.d.ts
3
3
  /**
4
4
  * Resolve the mount base path for a devframe's SPA. Hosted adapters
@@ -1,5 +1,5 @@
1
- import { F as DevframeDefinition, V as DevframeSnapshotRpcEntry, o as DevframeNodeContext } from "../context-_i51nYOs.mjs";
2
- import { o as StaticAssetsSource } from "../remote-assets-Bg4gCUZ_.mjs";
1
+ import { F as DevframeDefinition, V as DevframeSnapshotRpcEntry, o as DevframeNodeContext } from "../context-c0OlSc12.mjs";
2
+ import { o as StaticAssetsSource } from "../remote-assets-B13_vRkJ.mjs";
3
3
  //#region src/adapters/build.d.ts
4
4
  interface CreateBuildOptions {
5
5
  /** Output directory. Defaults to `dist-static`. */
@@ -7,8 +7,9 @@ interface CreateBuildOptions {
7
7
  /**
8
8
  * Override the SPA dist to copy into `outDir` — a local directory or a
9
9
  * remote-assets declaration (materialized in full at build time). When
10
- * omitted the adapter reads `devframe.cli?.distDir` — authors typically
11
- * set this once on the definition itself.
10
+ * omitted the adapter reads `devframe.clientAssets` (or the deprecated
11
+ * `devframe.cli?.distDir`) — authors typically set this once on the
12
+ * definition itself.
12
13
  */
13
14
  distDir?: StaticAssetsSource;
14
15
  /**
@@ -1,10 +1,11 @@
1
1
  import { s as colors } from "../nostics-CzECRXpE.mjs";
2
2
  import { n as strictJsonStringify } from "../serialization-BGzEwAdr.mjs";
3
+ import { resolveClientAssets } from "../index.mjs";
3
4
  import { DEVFRAME_CONNECTION_META_FILENAME, DEVFRAME_RPC_DUMP_DIRNAME, DEVFRAME_RPC_DUMP_MANIFEST_FILENAME } from "../constants.mjs";
4
5
  import { t as collectStaticRpcDump } from "../static-DV_qUSRS.mjs";
5
6
  import { n as structuredCloneStringify } from "../structured-clone-CbAV5rFI.mjs";
6
7
  import { t as diagnostics } from "../diagnostics-BXWW3VK-.mjs";
7
- import { t as createHostContext } from "../context-CQW0lSw8.mjs";
8
+ import { t as createHostContext } from "../context-Bc5S40Qt.mjs";
8
9
  import { t as resolveStaticAssetsSource } from "../remote-assets-DezQmPQU.mjs";
9
10
  import { t as createH3DevframeHost } from "../host-h3-fRbF9yor.mjs";
10
11
  import process from "node:process";
@@ -26,8 +27,8 @@ import fs$1 from "node:fs/promises";
26
27
  async function createBuild(d, options = {}) {
27
28
  if (d.capabilities?.build === false && !options.force) throw diagnostics.DF0042({ id: d.id });
28
29
  const outDir = resolve(options.outDir ?? "dist-static");
29
- const distSource = options.distDir ?? d.cli?.distDir;
30
- if (!distSource) throw new Error(`[devframe] createBuild: no distDir for "${d.id}". Set \`cli.distDir\` on the definition or pass it as an option.`);
30
+ const distSource = options.distDir ?? resolveClientAssets(d);
31
+ if (!distSource) throw new Error(`[devframe] createBuild: no client assets for "${d.id}". Set \`clientAssets\` on the definition or pass it as an option.`);
31
32
  if (existsSync(outDir)) await fs$1.rm(outDir, { recursive: true });
32
33
  await fs$1.mkdir(outDir, { recursive: true });
33
34
  const host = createH3DevframeHost({
@@ -1,4 +1,4 @@
1
- import { Dt as parseCliFlags, Et as defineCliFlags, F as DevframeDefinition, Tt as InferCliFlags, wt as CliFlagsSchema } from "../context-_i51nYOs.mjs";
1
+ import { Dt as parseCliFlags, Et as defineCliFlags, F as DevframeDefinition, Tt as InferCliFlags, wt as CliFlagsSchema } from "../context-c0OlSc12.mjs";
2
2
  import { CAC } from "cac";
3
3
  import { H3 } from "h3";
4
4
  //#region src/adapters/cac.d.ts
@@ -1,7 +1,7 @@
1
1
  import { s as colors } from "../nostics-CzECRXpE.mjs";
2
2
  import { r as resolveDevServerPort } from "../_shared-BM3PdYli.mjs";
3
3
  import { createBuild } from "./build.mjs";
4
- import { t as createDevServer } from "../dev-lpIvwagf.mjs";
4
+ import { t as createDevServer } from "../dev-BRQA42Lh.mjs";
5
5
  import process from "node:process";
6
6
  import cac$1 from "cac";
7
7
  //#region src/adapters/flags.ts
@@ -1,8 +1,8 @@
1
1
  import { d as DevframeRpcConnection, n as WsOriginRegistry, u as DevframeNodeRpcSessionMeta } from "../ws-server-DLtEoLdR.mjs";
2
- import { Ct as DevframeAuthHandler, F as DevframeDefinition, G as McpRouteOptions, U as DevframeSseOptions, W as DevframeWsOptions, s as DevframeNodeRpcSession } from "../context-_i51nYOs.mjs";
3
- import { o as StaticAssetsSource } from "../remote-assets-Bg4gCUZ_.mjs";
4
- import { c as StartedServer } from "../instance-shell-BHvBIGP4.mjs";
5
- import { a as resolveMcpConnectionMeta, i as resolveDevServerPort, t as ResolveDevServerPortOptions } from "../_shared-BPovvJW8.mjs";
2
+ import { Ct as DevframeAuthHandler, F as DevframeDefinition, G as McpRouteOptions, U as DevframeSseOptions, W as DevframeWsOptions, s as DevframeNodeRpcSession } from "../context-c0OlSc12.mjs";
3
+ import { o as StaticAssetsSource } from "../remote-assets-B13_vRkJ.mjs";
4
+ import { c as StartedServer } from "../instance-shell-CPuYY8pw.mjs";
5
+ import { a as resolveMcpConnectionMeta, i as resolveDevServerPort, t as ResolveDevServerPortOptions } from "../_shared-CsBsnhuO.mjs";
6
6
  import { H3 } from "h3";
7
7
  //#region src/adapters/dev.d.ts
8
8
  interface CreateDevServerOptions {
@@ -21,11 +21,12 @@ interface CreateDevServerOptions {
21
21
  */
22
22
  flags?: Record<string, unknown>;
23
23
  /**
24
- * Override `def.cli?.distDir`. When neither this option nor
25
- * `def.cli?.distDir` is set, the dev server runs in **bridge mode** —
26
- * only `__connection.json` and the WS endpoint are mounted; the SPA
27
- * is expected to be hosted elsewhere (e.g. by a parent Vite/Nuxt
28
- * dev server via `devframeViteBridge` from `@devframes/vite`).
24
+ * Override the definition's `clientAssets` (or deprecated `cli.distDir`).
25
+ * When neither this option nor the definition's client assets are set, the
26
+ * dev server runs in **bridge mode** — only `__connection.json` and the WS
27
+ * endpoint are mounted; the SPA is expected to be hosted elsewhere (e.g. by
28
+ * a parent Vite/Nuxt dev server via `devframeViteBridge` from
29
+ * `@devframes/vite`).
29
30
  */
30
31
  distDir?: StaticAssetsSource;
31
32
  /**
@@ -117,7 +118,7 @@ interface CreateDevServerOptions {
117
118
  * h3 + WebSocket RPC + (optionally) the author's SPA mounted at the
118
119
  * resolved base path.
119
120
  *
120
- * When `distDir` is omitted (and `def.cli?.distDir` is unset) the
121
+ * When `distDir` is omitted (and the definition's client assets are unset) the
121
122
  * server runs in **bridge mode**: only `__connection.json` and the WS
122
123
  * endpoint are mounted, with no SPA mount. The SPA is expected to be
123
124
  * hosted elsewhere (e.g. by a parent Vite/Nuxt dev server) — see
@@ -1,3 +1,3 @@
1
1
  import { i as resolveMcpConnectionMeta, r as resolveDevServerPort } from "../_shared-BM3PdYli.mjs";
2
- import { t as createDevServer } from "../dev-lpIvwagf.mjs";
2
+ import { t as createDevServer } from "../dev-BRQA42Lh.mjs";
3
3
  export { createDevServer, resolveDevServerPort, resolveMcpConnectionMeta };
@@ -1,4 +1,4 @@
1
- import { F as DevframeDefinition, o as DevframeNodeContext } from "../context-_i51nYOs.mjs";
1
+ import { F as DevframeDefinition, o as DevframeNodeContext } from "../context-c0OlSc12.mjs";
2
2
  //#region src/adapters/embedded.d.ts
3
3
  interface CreateEmbeddedOptions {
4
4
  /** Target context the devframe is registered into. Required. */
@@ -1,7 +1,7 @@
1
1
  import { d as DevframeRpcConnection, n as WsOriginRegistry, u as DevframeNodeRpcSessionMeta } from "../ws-server-DLtEoLdR.mjs";
2
- import { Ct as DevframeAuthHandler, F as DevframeDefinition, G as McpRouteOptions, U as DevframeSseOptions, W as DevframeWsOptions, bt as DevframeStorageScope, o as DevframeNodeContext, s as DevframeNodeRpcSession, t as ConnectionMeta } from "../context-_i51nYOs.mjs";
3
- import { o as StaticAssetsSource } from "../remote-assets-Bg4gCUZ_.mjs";
4
- import { c as StartedServer, f as DevframeInstanceRecord } from "../instance-shell-BHvBIGP4.mjs";
2
+ import { Ct as DevframeAuthHandler, F as DevframeDefinition, G as McpRouteOptions, U as DevframeSseOptions, W as DevframeWsOptions, bt as DevframeStorageScope, o as DevframeNodeContext, s as DevframeNodeRpcSession, t as ConnectionMeta } from "../context-c0OlSc12.mjs";
3
+ import { o as StaticAssetsSource } from "../remote-assets-B13_vRkJ.mjs";
4
+ import { c as StartedServer, f as DevframeInstanceRecord } from "../instance-shell-CPuYY8pw.mjs";
5
5
  import { Buffer } from "node:buffer";
6
6
  import { IncomingMessage, Server, ServerResponse } from "node:http";
7
7
  import { Duplex } from "node:stream";
@@ -18,10 +18,11 @@ interface InitDevframeOptions {
18
18
  */
19
19
  base: string;
20
20
  /**
21
- * Override `def.cli?.distDir`. When neither is set — or `false` is passed
22
- * to suppress the definition's own `distDir` — the handler runs in
23
- * **bridge mode**: only `__connection.json`, the WS endpoint, and the MCP
24
- * route (when enabled) are served; the SPA is hosted elsewhere.
21
+ * Override the definition's `clientAssets` (or deprecated `cli.distDir`).
22
+ * When neither is set — or `false` is passed to suppress the definition's
23
+ * own client assets — the handler runs in **bridge mode**: only
24
+ * `__connection.json`, the WS endpoint, and the MCP route (when enabled) are
25
+ * served; the SPA is hosted elsewhere.
25
26
  */
26
27
  distDir?: StaticAssetsSource | false;
27
28
  /**
@@ -1,2 +1,2 @@
1
- import { n as getInstanceInternals, r as initDevframe } from "../dev-lpIvwagf.mjs";
1
+ import { n as getInstanceInternals, r as initDevframe } from "../dev-BRQA42Lh.mjs";
2
2
  export { getInstanceInternals, initDevframe };
@@ -1,4 +1,4 @@
1
- import { F as DevframeDefinition, o as DevframeNodeContext } from "../context-_i51nYOs.mjs";
1
+ import { F as DevframeDefinition, o as DevframeNodeContext } from "../context-c0OlSc12.mjs";
2
2
  import { H3 } from "h3";
3
3
  import "@modelcontextprotocol/server";
4
4
  //#region src/adapters/mcp/build-server.d.ts
@@ -1,2 +1,2 @@
1
- import { i as createMcpServer, n as mountMcpHttp, r as createMcpFetchHandler } from "../http-BKiqHcXX.mjs";
1
+ import { i as createMcpServer, n as mountMcpHttp, r as createMcpFetchHandler } from "../http-D7wWuy7-.mjs";
2
2
  export { createMcpFetchHandler, createMcpServer, mountMcpHttp };
@@ -1,6 +1,6 @@
1
1
  import { f as RpcCacheManager, p as RpcCacheOptions } from "../index-DOg4S5wk.mjs";
2
2
  import { _ as RpcFunctionDefinition, w as RpcFunctionsCollector } from "../types-BBLeGfpt.mjs";
3
- import { Q as DevframeServiceScopeOf, X as DevframeServiceMeta, _t as DevframeRpcServerFunctions, b as StreamSink, d as RpcSharedStateHost, dt as ScopedRpcFn, ft as ScopedServerFunctions, gt as DevframeRpcClientFunctions, k as SharedState, mt as SettingsForNamespace, nt as DevframeServicesState, ot as DevframeSettings, pt as ScopedSharedStates, t as ConnectionMeta, u as RpcSharedStateGetOptions, y as StreamReader, zt as EventEmitter } from "../context-_i51nYOs.mjs";
3
+ import { Q as DevframeServiceScopeOf, X as DevframeServiceMeta, _t as DevframeRpcServerFunctions, b as StreamSink, d as RpcSharedStateHost, dt as ScopedRpcFn, ft as ScopedServerFunctions, gt as DevframeRpcClientFunctions, k as SharedState, mt as SettingsForNamespace, nt as DevframeServicesState, ot as DevframeSettings, pt as ScopedSharedStates, t as ConnectionMeta, u as RpcSharedStateGetOptions, y as StreamReader, zt as EventEmitter } from "../context-c0OlSc12.mjs";
4
4
  import { t as SseRpcChannelOptions } from "../sse-client-CdGD_B8_.mjs";
5
5
  import { t as WsRpcChannelOptions } from "../ws-client-Bo2t6hES.mjs";
6
6
  import { BirpcOptions, BirpcReturn } from "birpc";
@@ -15,7 +15,7 @@ import { createBirpc } from "birpc";
15
15
  * broadcast notifications — so these names live in one place instead of
16
16
  * scattered string literals.
17
17
  *
18
- * **Keep this in sync with [`docs/guide/events.md`](../../../docs/guide/events.md)**
18
+ * **Keep this in sync with [`docs/content/1.guide/20.events.md`](../../../docs/content/1.guide/20.events.md)**
19
19
  * (the "Core devframe events" section): every name here appears in that page's
20
20
  * tables, and every name there resolves to an entry here. Add, rename, or
21
21
  * remove a name in both places in the same change, and reference
@@ -5,7 +5,7 @@
5
5
  * broadcast notifications — so these names live in one place instead of
6
6
  * scattered string literals.
7
7
  *
8
- * **Keep this in sync with [`docs/guide/events.md`](../../../docs/guide/events.md)**
8
+ * **Keep this in sync with [`docs/content/1.guide/20.events.md`](../../../docs/content/1.guide/20.events.md)**
9
9
  * (the "Core devframe events" section): every name here appears in that page's
10
10
  * tables, and every name there resolves to an entry here. Add, rename, or
11
11
  * remove a name in both places in the same change, and reference
@@ -1,4 +1,4 @@
1
- import { t as DEVFRAME_EVENTS } from "./events-DKfSmoTj.mjs";
1
+ import { t as DEVFRAME_EVENTS } from "./events-DzolaBEs.mjs";
2
2
  //#region src/constants.ts
3
3
  const DEVFRAME_CONNECTION_META_FILENAME = "__connection.json";
4
4
  /**
@@ -2,10 +2,10 @@ import { i as defineDiagnostics } from "./nostics-CzECRXpE.mjs";
2
2
  import { t as diagnostics } from "./diagnostics-CD8nlgll.mjs";
3
3
  import { RpcFunctionsCollectorBase } from "./rpc/index.mjs";
4
4
  import { defineRpcFunction } from "./index.mjs";
5
- import { t as DEVFRAME_EVENTS } from "./events-DKfSmoTj.mjs";
5
+ import { t as DEVFRAME_EVENTS } from "./events-DzolaBEs.mjs";
6
6
  import { DEVFRAME_SERVICES_STATE_KEY } from "./constants.mjs";
7
7
  import { t as diagnostics$1 } from "./diagnostics-BXWW3VK-.mjs";
8
- import { r as createEventEmitter, t as DevframeAgentHost } from "./host-agent-B84av916.mjs";
8
+ import { r as createEventEmitter, t as DevframeAgentHost } from "./host-agent-DbPWo0Bl.mjs";
9
9
  import { n as createDebug, t as resolveStaticAssetsSource } from "./remote-assets-DezQmPQU.mjs";
10
10
  import { t as createStorage } from "./storage-BXNVhKyR.mjs";
11
11
  import { createRequire } from "node:module";
@@ -1,6 +1,6 @@
1
1
  import { n as randomToken } from "./crypto-token-XCqTSMg9.mjs";
2
2
  import { t as createStorage } from "./storage-BXNVhKyR.mjs";
3
- import { n as revokeAuthToken, t as revokeActiveConnectionsForToken } from "./revoke-3Q6aDKWk.mjs";
3
+ import { n as revokeAuthToken, t as revokeActiveConnectionsForToken } from "./revoke-PihtvVil.mjs";
4
4
  import { join } from "pathe";
5
5
  //#region src/node/hub-internals/context.ts
6
6
  const internalContextMap = /* @__PURE__ */ new WeakMap();
@@ -1,4 +1,4 @@
1
- import { k as SharedState, o as DevframeNodeContext } from "./context-_i51nYOs.mjs";
1
+ import { k as SharedState, o as DevframeNodeContext } from "./context-c0OlSc12.mjs";
2
2
  //#region src/node/hub-internals/context.d.ts
3
3
  interface InternalAnonymousAuthStorage {
4
4
  trusted: Record<string, {
@@ -1,7 +1,7 @@
1
1
  import { d as RpcFunctionsCollectorBase } from "./index-DOg4S5wk.mjs";
2
2
  import { _ as RpcFunctionDefinition, v as RpcFunctionDefinitionAny } from "./types-BBLeGfpt.mjs";
3
3
  import { d as DevframeRpcConnection, u as DevframeNodeRpcSessionMeta } from "./ws-server-DLtEoLdR.mjs";
4
- import { a as RemoteAssetsStore, o as StaticAssetsSource } from "./remote-assets-Bg4gCUZ_.mjs";
4
+ import { a as RemoteAssetsStore, o as StaticAssetsSource } from "./remote-assets-B13_vRkJ.mjs";
5
5
  import { m as defineDiagnostics } from "./nostics-SPGDgHEP.mjs";
6
6
  import { BirpcReturn } from "birpc";
7
7
  import { StandardSchemaV1 } from "@standard-schema/spec";
@@ -444,8 +444,8 @@ interface DevframeHost {
444
444
  * for cross-origin or sandboxed iframes. Implementations serve the same
445
445
  * meta they expose at the hub's own base.
446
446
  *
447
- * Optional in the type, but a host that mounts a devframe with a servable
448
- * `distDir` yet omits this hook triggers a `DF8106` diagnostic, since the
447
+ * Optional in the type, but a host that mounts a devframe with servable
448
+ * `clientAssets` yet omits this hook triggers a `DF8106` diagnostic, since the
449
449
  * SPA's `./__connection.json` fetch would otherwise fall through and break
450
450
  * silently. A static-snapshot host that bakes the meta into its served files
451
451
  * can implement it as a no-op to acknowledge this intentionally.
@@ -1234,10 +1234,11 @@ interface DevframeCliOptions {
1234
1234
  */
1235
1235
  mcp?: boolean | McpRouteOptions;
1236
1236
  /**
1237
- * Author's SPA dist — served as the devframe's UI. A local directory, or
1238
- * a {@link StaticAssetsSource} remote declaration (`{ package, version }`)
1239
- * served through devframe's caching CDN back-proxy so the assets need not
1240
- * ship inside the node package.
1237
+ * Author's SPA dist — served as the devframe's UI.
1238
+ *
1239
+ * @deprecated Moved to the top-level {@link DevframeDefinition.clientAssets}.
1240
+ * Set `clientAssets` on the definition instead. This field is still read as a
1241
+ * fallback when `clientAssets` is unset, so existing definitions keep working.
1241
1242
  */
1242
1243
  distDir?: StaticAssetsSource;
1243
1244
  /**
@@ -1357,7 +1358,7 @@ interface DevframeDefinition {
1357
1358
  * consuming app's.
1358
1359
  *
1359
1360
  * - **Remote assets** — becomes the default `resolveFrom` for any remote
1360
- * {@link StaticAssetsSource} the devframe hosts (its `cli.distDir`, and
1361
+ * {@link StaticAssetsSource} the devframe hosts (its `clientAssets`, and
1361
1362
  * every `ctx.views.hostStatic` call) that doesn't set one explicitly, so a
1362
1363
  * locally installed copy of the assets package is served with zero
1363
1364
  * network. A per-asset `resolveFrom` still wins, and an explicit
@@ -1434,6 +1435,17 @@ interface DevframeDefinition {
1434
1435
  * `client.services.has(pkg)` and degrade.
1435
1436
  */
1436
1437
  services?: DevframeServiceInput[];
1438
+ /**
1439
+ * Author's SPA dist — served as the devframe's UI. A local directory, or
1440
+ * a {@link StaticAssetsSource} remote declaration (`{ package, version }`)
1441
+ * served through devframe's caching CDN back-proxy so the assets need not
1442
+ * ship inside the node package.
1443
+ *
1444
+ * Consumed by every adapter that serves the UI (`dev`, `build`, `vite`,
1445
+ * `next`, and the hub install path). When unset, the deprecated
1446
+ * {@link DevframeCliOptions.distDir} is read as a fallback.
1447
+ */
1448
+ clientAssets?: StaticAssetsSource;
1437
1449
  /** RPC-level configuration for this devframe (see {@link DevframeRpcOptions}). */
1438
1450
  rpc?: DevframeRpcOptions;
1439
1451
  /** Server-side setup — the primary entrypoint. Runs in every runtime. */
@@ -1,10 +1,11 @@
1
+ import { resolveClientAssets } from "./index.mjs";
1
2
  import { DEVFRAME_CONNECTION_META_FILENAME } from "./constants.mjs";
2
3
  import { t as diagnostics } from "./diagnostics-BXWW3VK-.mjs";
3
- import { t as createHostContext } from "./context-CQW0lSw8.mjs";
4
+ import { t as createHostContext } from "./context-Bc5S40Qt.mjs";
4
5
  import { t as resolveStaticAssetsSource } from "./remote-assets-DezQmPQU.mjs";
5
6
  import { i as resolveMcpConnectionMeta, n as resolveBasePath, r as resolveDevServerPort, t as normalizeBasePath } from "./_shared-BM3PdYli.mjs";
6
7
  import { t as createH3DevframeHost } from "./host-h3-fRbF9yor.mjs";
7
- import { i as normalizeHttpServerUrl, n as resolveInstanceRegister, t as createInstanceShell } from "./instance-shell-B-uevnK-.mjs";
8
+ import { i as normalizeHttpServerUrl, n as resolveInstanceRegister, t as createInstanceShell } from "./instance-shell-fB5PyVtR.mjs";
8
9
  import { open } from "./utils/open.mjs";
9
10
  import { mountStaticHandler } from "./utils/serve-static.mjs";
10
11
  import { createServer } from "node:http";
@@ -37,7 +38,7 @@ function getInstanceInternals(handler) {
37
38
  */
38
39
  function initDevframe(def, options) {
39
40
  const base = normalizeBasePath(options.base);
40
- const distDir = options.distDir === false ? void 0 : options.distDir ?? def.cli?.distDir;
41
+ const distDir = options.distDir === false ? void 0 : options.distDir ?? resolveClientAssets(def);
41
42
  const app = options.app ?? new H3();
42
43
  const host = options.host ?? def.cli?.host ?? "localhost";
43
44
  const shell = createInstanceShell({
@@ -91,7 +92,7 @@ function initDevframe(def, options) {
91
92
  const mcpPath = joinURL(base, mcpMeta.path);
92
93
  let mountMcpHttp;
93
94
  try {
94
- ({mountMcpHttp} = await import("./http-BKiqHcXX.mjs").then((n) => n.t));
95
+ ({mountMcpHttp} = await import("./http-D7wWuy7-.mjs").then((n) => n.t));
95
96
  } catch (error) {
96
97
  const reason = error instanceof Error ? error.message : String(error);
97
98
  throw diagnostics.DF0017({
@@ -142,7 +143,7 @@ function initDevframe(def, options) {
142
143
  * h3 + WebSocket RPC + (optionally) the author's SPA mounted at the
143
144
  * resolved base path.
144
145
  *
145
- * When `distDir` is omitted (and `def.cli?.distDir` is unset) the
146
+ * When `distDir` is omitted (and the definition's client assets are unset) the
146
147
  * server runs in **bridge mode**: only `__connection.json` and the WS
147
148
  * endpoint are mounted, with no SPA mount. The SPA is expected to be
148
149
  * hosted elsewhere (e.g. by a parent Vite/Nuxt dev server) — see
@@ -5,7 +5,7 @@
5
5
  * broadcast notifications — so these names live in one place instead of
6
6
  * scattered string literals.
7
7
  *
8
- * **Keep this in sync with [`docs/guide/events.md`](../../../docs/guide/events.md)**
8
+ * **Keep this in sync with [`docs/content/1.guide/20.events.md`](../../../docs/content/1.guide/20.events.md)**
9
9
  * (the "Core devframe events" section): every name here appears in that page's
10
10
  * tables, and every name there resolves to an entry here. Add, rename, or
11
11
  * remove a name in both places in the same change, and reference
@@ -1,4 +1,4 @@
1
- import { t as DEVFRAME_EVENTS } from "./events-DKfSmoTj.mjs";
1
+ import { t as DEVFRAME_EVENTS } from "./events-DzolaBEs.mjs";
2
2
  import { t as diagnostics } from "./diagnostics-BXWW3VK-.mjs";
3
3
  //#region src/utils/events.ts
4
4
  /**
@@ -1,9 +1,9 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-B4iAMlE-.mjs";
2
2
  import { t as Diagnostic } from "./nostics-CzECRXpE.mjs";
3
- import { t as DEVFRAME_EVENTS } from "./events-DKfSmoTj.mjs";
3
+ import { t as DEVFRAME_EVENTS } from "./events-DzolaBEs.mjs";
4
4
  import { i as isAllowedOrigin } from "./ws-server-BdSLrhxE.mjs";
5
5
  import { t as diagnostics } from "./diagnostics-BXWW3VK-.mjs";
6
- import { t as createHostContext } from "./context-CQW0lSw8.mjs";
6
+ import { t as createHostContext } from "./context-Bc5S40Qt.mjs";
7
7
  import { t as toAgentToolName } from "./agent-tool-name-EgfoFO8C.mjs";
8
8
  import { randomUUID } from "node:crypto";
9
9
  import process from "node:process";
@@ -1,5 +1,5 @@
1
- import { k as SharedState, o as DevframeNodeContext, s as DevframeNodeRpcSession } from "./context-_i51nYOs.mjs";
2
- import { n as InternalAnonymousAuthStorage } from "./context-CO7eZHJy.mjs";
1
+ import { k as SharedState, o as DevframeNodeContext, s as DevframeNodeRpcSession } from "./context-c0OlSc12.mjs";
2
+ import { n as InternalAnonymousAuthStorage } from "./context-DO0Qu1O8.mjs";
3
3
  //#region src/node/auth/revoke.d.ts
4
4
  /**
5
5
  * Flip `isTrusted` to false on any live WS clients connected with `token`
package/dist/index.d.mts CHANGED
@@ -1,8 +1,8 @@
1
1
  import "./index-DOg4S5wk.mjs";
2
2
  import { C as RpcFunctionType, T as RpcReturnSchema, _ as RpcFunctionDefinition, g as RpcFunctionAgentOptions, i as RpcArgsSchema } from "./types-BBLeGfpt.mjs";
3
3
  import { d as DevframeRpcConnection, f as DevframeRpcConnectionRequest, p as DevframeRpcTransportKind, u as DevframeNodeRpcSessionMeta } from "./ws-server-DLtEoLdR.mjs";
4
- import { $ as DevframeServicesHost, At as AgentResource, B as DevframeSetupInfo, Bt as EventUnsubscribe, F as DevframeDefinition, Ft as AgentToolProvider, G as McpRouteOptions, H as DevframeSnapshotRpcInputs, I as DevframeDeploymentKind, It as AgentToolProviderHandle, J as DevframeServiceId, K as DevframeServiceDefinition, L as DevframeDockDefaults, Lt as DevframeAgentHost, Mt as AgentResourceInput, Nt as AgentTool, Ot as AgentHandle, P as DevframeCliOptions, Pt as AgentToolInput, Q as DevframeServiceScopeOf, R as DevframeDuplicationStrategy, Rt as DevframeAgentHostEvents, St as DevframeDiagnosticsLogger, U as DevframeSseOptions, V as DevframeSnapshotRpcEntry, Vt as EventsMap, W as DevframeWsOptions, X as DevframeServiceMeta, Y as DevframeServiceInput, Z as DevframeServiceOf, _t as DevframeRpcServerFunctions, a as DevframeConnectionConfigsRegistry, at as DevframeScopedStreamingHost, bt as DevframeStorageScope, c as RpcBroadcastOptions, ct as DevframeSettingsStore, d as RpcSharedStateHost, dt as ScopedRpcFn, et as DevframeServicesRegistry, f as RpcStreamingChannel, ft as ScopedServerFunctions, gt as DevframeRpcClientFunctions, ht as DevframeViewHost, i as DevframeCapabilities, it as DevframeScopedNodeRpc, jt as AgentResourceContent, kt as AgentManifest, l as RpcFunctionsHost, lt as ScopedBroadcastOptions, m as RpcStreamingHost, mt as SettingsForNamespace, n as ConnectionMetaSse, nt as DevframeServicesState, o as DevframeNodeContext, ot as DevframeSettings, p as RpcStreamingChannelOptions, pt as ScopedSharedStates, q as DevframeServiceDescriptor, r as ConnectionMetaWebsocket, rt as DevframeScopedNodeContext, s as DevframeNodeRpcSession, st as DevframeSettingsRegistry, t as ConnectionMeta, tt as DevframeServicesScopeRegistry, u as RpcSharedStateGetOptions, ut as ScopedClientFunctions, vt as DevframeRpcSharedStates, xt as DevframeDiagnosticsHost, yt as DevframeHost, z as DevframeRpcOptions, zt as EventEmitter } from "./context-_i51nYOs.mjs";
5
- import { a as RemoteAssetsStore, i as RemoteAssetsProviderCustom, n as RemoteAssetsErrorMessage, o as StaticAssetsSource, r as RemoteAssetsProvider, t as RemoteAssets } from "./remote-assets-Bg4gCUZ_.mjs";
4
+ import { $ as DevframeServicesHost, At as AgentResource, B as DevframeSetupInfo, Bt as EventUnsubscribe, F as DevframeDefinition, Ft as AgentToolProvider, G as McpRouteOptions, H as DevframeSnapshotRpcInputs, I as DevframeDeploymentKind, It as AgentToolProviderHandle, J as DevframeServiceId, K as DevframeServiceDefinition, L as DevframeDockDefaults, Lt as DevframeAgentHost, Mt as AgentResourceInput, Nt as AgentTool, Ot as AgentHandle, P as DevframeCliOptions, Pt as AgentToolInput, Q as DevframeServiceScopeOf, R as DevframeDuplicationStrategy, Rt as DevframeAgentHostEvents, St as DevframeDiagnosticsLogger, U as DevframeSseOptions, V as DevframeSnapshotRpcEntry, Vt as EventsMap, W as DevframeWsOptions, X as DevframeServiceMeta, Y as DevframeServiceInput, Z as DevframeServiceOf, _t as DevframeRpcServerFunctions, a as DevframeConnectionConfigsRegistry, at as DevframeScopedStreamingHost, bt as DevframeStorageScope, c as RpcBroadcastOptions, ct as DevframeSettingsStore, d as RpcSharedStateHost, dt as ScopedRpcFn, et as DevframeServicesRegistry, f as RpcStreamingChannel, ft as ScopedServerFunctions, gt as DevframeRpcClientFunctions, ht as DevframeViewHost, i as DevframeCapabilities, it as DevframeScopedNodeRpc, jt as AgentResourceContent, kt as AgentManifest, l as RpcFunctionsHost, lt as ScopedBroadcastOptions, m as RpcStreamingHost, mt as SettingsForNamespace, n as ConnectionMetaSse, nt as DevframeServicesState, o as DevframeNodeContext, ot as DevframeSettings, p as RpcStreamingChannelOptions, pt as ScopedSharedStates, q as DevframeServiceDescriptor, r as ConnectionMetaWebsocket, rt as DevframeScopedNodeContext, s as DevframeNodeRpcSession, st as DevframeSettingsRegistry, t as ConnectionMeta, tt as DevframeServicesScopeRegistry, u as RpcSharedStateGetOptions, ut as ScopedClientFunctions, vt as DevframeRpcSharedStates, xt as DevframeDiagnosticsHost, yt as DevframeHost, z as DevframeRpcOptions, zt as EventEmitter } from "./context-c0OlSc12.mjs";
5
+ import { a as RemoteAssetsStore, i as RemoteAssetsProviderCustom, n as RemoteAssetsErrorMessage, o as StaticAssetsSource, r as RemoteAssetsProvider, t as RemoteAssets } from "./remote-assets-B13_vRkJ.mjs";
6
6
  import { i as DevframeDefineDiagnosticsOptions } from "./nostics-SPGDgHEP.mjs";
7
7
  //#region src/define.d.ts
8
8
  declare const defineRpcFunction: <NAME extends string, TYPE extends RpcFunctionType, ARGS extends any[], RETURN = void, const AS extends RpcArgsSchema | undefined = undefined, const RS extends RpcReturnSchema | undefined = undefined>(definition: RpcFunctionDefinition<NAME, TYPE, ARGS, RETURN, AS, RS, DevframeNodeContext>) => RpcFunctionDefinition<NAME, TYPE, ARGS, RETURN, AS, RS, DevframeNodeContext>;
@@ -11,5 +11,13 @@ declare const defineRpcFunction: <NAME extends string, TYPE extends RpcFunctionT
11
11
  * entry point. Import it from the package root: `import { defineDevframe } from 'devframe'`.
12
12
  */
13
13
  declare function defineDevframe(d: DevframeDefinition): DevframeDefinition;
14
+ /**
15
+ * Resolve a definition's client assets source — the built SPA served as its
16
+ * UI. Prefers the top-level {@link DevframeDefinition.clientAssets} and falls
17
+ * back to the deprecated {@link DevframeCliOptions.distDir}, so both the new
18
+ * and legacy shapes resolve. Returns `undefined` when neither is set (bridge
19
+ * mode — the SPA is hosted elsewhere).
20
+ */
21
+ declare function resolveClientAssets(d: DevframeDefinition): StaticAssetsSource | undefined;
14
22
  //#endregion
15
- export { type AgentHandle, type AgentManifest, type AgentResource, type AgentResourceContent, type AgentResourceInput, type AgentTool, type AgentToolInput, type AgentToolProvider, type AgentToolProviderHandle, type ConnectionMeta, type ConnectionMetaSse, type ConnectionMetaWebsocket, type DevframeAgentHost, type DevframeAgentHostEvents, type DevframeCapabilities, type DevframeCliOptions, type DevframeConnectionConfigsRegistry, type DevframeDefineDiagnosticsOptions, type DevframeDefinition, type DevframeDeploymentKind, type DevframeDiagnosticsHost, type DevframeDiagnosticsLogger, type DevframeDockDefaults, type DevframeDuplicationStrategy, type DevframeHost, type DevframeNodeContext, type DevframeNodeRpcSession, type DevframeNodeRpcSessionMeta, type DevframeRpcClientFunctions, type DevframeRpcConnection, type DevframeRpcConnectionRequest, type DevframeRpcOptions, type DevframeRpcServerFunctions, type DevframeRpcSharedStates, type DevframeRpcTransportKind, type DevframeScopedNodeContext, type DevframeScopedNodeRpc, type DevframeScopedStreamingHost, type DevframeServiceDefinition, type DevframeServiceDescriptor, type DevframeServiceId, type DevframeServiceInput, type DevframeServiceMeta, type DevframeServiceOf, type DevframeServiceScopeOf, type DevframeServicesHost, type DevframeServicesRegistry, type DevframeServicesScopeRegistry, type DevframeServicesState, type DevframeSettings, type DevframeSettingsRegistry, type DevframeSettingsStore, type DevframeSetupInfo, type DevframeSnapshotRpcEntry, type DevframeSnapshotRpcInputs, type DevframeSseOptions, type DevframeStorageScope, type DevframeViewHost, type DevframeWsOptions, type EventEmitter, type EventUnsubscribe, type EventsMap, type McpRouteOptions, type RemoteAssets, type RemoteAssetsErrorMessage, type RemoteAssetsProvider, type RemoteAssetsProviderCustom, type RemoteAssetsStore, type RpcBroadcastOptions, type RpcFunctionAgentOptions, type RpcFunctionsHost, type RpcSharedStateGetOptions, type RpcSharedStateHost, type RpcStreamingChannel, type RpcStreamingChannelOptions, type RpcStreamingHost, type ScopedBroadcastOptions, type ScopedClientFunctions, type ScopedRpcFn, type ScopedServerFunctions, type ScopedSharedStates, type SettingsForNamespace, type StaticAssetsSource, defineDevframe, defineRpcFunction };
23
+ export { type AgentHandle, type AgentManifest, type AgentResource, type AgentResourceContent, type AgentResourceInput, type AgentTool, type AgentToolInput, type AgentToolProvider, type AgentToolProviderHandle, type ConnectionMeta, type ConnectionMetaSse, type ConnectionMetaWebsocket, type DevframeAgentHost, type DevframeAgentHostEvents, type DevframeCapabilities, type DevframeCliOptions, type DevframeConnectionConfigsRegistry, type DevframeDefineDiagnosticsOptions, type DevframeDefinition, type DevframeDeploymentKind, type DevframeDiagnosticsHost, type DevframeDiagnosticsLogger, type DevframeDockDefaults, type DevframeDuplicationStrategy, type DevframeHost, type DevframeNodeContext, type DevframeNodeRpcSession, type DevframeNodeRpcSessionMeta, type DevframeRpcClientFunctions, type DevframeRpcConnection, type DevframeRpcConnectionRequest, type DevframeRpcOptions, type DevframeRpcServerFunctions, type DevframeRpcSharedStates, type DevframeRpcTransportKind, type DevframeScopedNodeContext, type DevframeScopedNodeRpc, type DevframeScopedStreamingHost, type DevframeServiceDefinition, type DevframeServiceDescriptor, type DevframeServiceId, type DevframeServiceInput, type DevframeServiceMeta, type DevframeServiceOf, type DevframeServiceScopeOf, type DevframeServicesHost, type DevframeServicesRegistry, type DevframeServicesScopeRegistry, type DevframeServicesState, type DevframeSettings, type DevframeSettingsRegistry, type DevframeSettingsStore, type DevframeSetupInfo, type DevframeSnapshotRpcEntry, type DevframeSnapshotRpcInputs, type DevframeSseOptions, type DevframeStorageScope, type DevframeViewHost, type DevframeWsOptions, type EventEmitter, type EventUnsubscribe, type EventsMap, type McpRouteOptions, type RemoteAssets, type RemoteAssetsErrorMessage, type RemoteAssetsProvider, type RemoteAssetsProviderCustom, type RemoteAssetsStore, type RpcBroadcastOptions, type RpcFunctionAgentOptions, type RpcFunctionsHost, type RpcSharedStateGetOptions, type RpcSharedStateHost, type RpcStreamingChannel, type RpcStreamingChannelOptions, type RpcStreamingHost, type ScopedBroadcastOptions, type ScopedClientFunctions, type ScopedRpcFn, type ScopedServerFunctions, type ScopedSharedStates, type SettingsForNamespace, type StaticAssetsSource, defineDevframe, defineRpcFunction, resolveClientAssets };
package/dist/index.mjs CHANGED
@@ -8,5 +8,15 @@ const defineRpcFunction = createDefineWrapperWithContext();
8
8
  function defineDevframe(d) {
9
9
  return d;
10
10
  }
11
+ /**
12
+ * Resolve a definition's client assets source — the built SPA served as its
13
+ * UI. Prefers the top-level {@link DevframeDefinition.clientAssets} and falls
14
+ * back to the deprecated {@link DevframeCliOptions.distDir}, so both the new
15
+ * and legacy shapes resolve. Returns `undefined` when neither is set (bridge
16
+ * mode — the SPA is hosted elsewhere).
17
+ */
18
+ function resolveClientAssets(d) {
19
+ return d.clientAssets ?? d.cli?.distDir;
20
+ }
11
21
  //#endregion
12
- export { defineDevframe, defineRpcFunction };
22
+ export { defineDevframe, defineRpcFunction, resolveClientAssets };
@@ -1,6 +1,6 @@
1
1
  import { d as DevframeRpcConnection, n as WsOriginRegistry, u as DevframeNodeRpcSessionMeta } from "./ws-server-DLtEoLdR.mjs";
2
- import { Ct as DevframeAuthHandler, U as DevframeSseOptions, W as DevframeWsOptions, _t as DevframeRpcServerFunctions, gt as DevframeRpcClientFunctions, o as DevframeNodeContext, s as DevframeNodeRpcSession, t as ConnectionMeta } from "./context-_i51nYOs.mjs";
3
- import "./index-CEvd-YXD.mjs";
2
+ import { Ct as DevframeAuthHandler, U as DevframeSseOptions, W as DevframeWsOptions, _t as DevframeRpcServerFunctions, gt as DevframeRpcClientFunctions, o as DevframeNodeContext, s as DevframeNodeRpcSession, t as ConnectionMeta } from "./context-c0OlSc12.mjs";
3
+ import "./index-B_DPNIT4.mjs";
4
4
  import { BirpcGroup } from "birpc";
5
5
  import { NodeAdapter } from "crossws/adapters/node";
6
6
  import { Buffer } from "node:buffer";
@@ -1,6 +1,6 @@
1
1
  import "./constants.mjs";
2
2
  import { t as diagnostics } from "./diagnostics-BXWW3VK-.mjs";
3
- import { t as getInternalContext } from "./context-BUJGvlje.mjs";
3
+ import { t as getInternalContext } from "./context-Cx9V9Grq.mjs";
4
4
  import { createInteractiveAuth } from "./recipes/interactive-auth.mjs";
5
5
  import { createServer } from "node:http";
6
6
  import process from "node:process";
@@ -1,9 +1,9 @@
1
1
  import { v as RpcFunctionDefinitionAny } from "../types-BBLeGfpt.mjs";
2
- import { At as AgentResource, Ft as AgentToolProvider, It as AgentToolProviderHandle, Lt as DevframeAgentHost$1, Mt as AgentResourceInput, Nt as AgentTool, Ot as AgentHandle, Pt as AgentToolInput, Rt as DevframeAgentHostEvents, jt as AgentResourceContent, kt as AgentManifest, o as DevframeNodeContext, yt as DevframeHost, zt as EventEmitter } from "../context-_i51nYOs.mjs";
3
- import { a as RemoteAssetsStore } from "../remote-assets-Bg4gCUZ_.mjs";
4
- import { a as InstanceShellInit, c as StartedServer, d as samePath, f as DevframeInstanceRecord, h as registerDevframeInstance, i as InstanceShellApi, l as createInstanceShell, m as listLiveDevframeInstances, n as InstanceRegisterConfig, o as InstanceShellInternals, p as DevframeInstanceRegistration, r as InstanceShell, s as InstanceWsTier, t as CreateInstanceShellOptions, u as resolveInstanceRegister } from "../instance-shell-BHvBIGP4.mjs";
5
- import { n as normalizeBasePath, r as resolveBasePath } from "../_shared-BPovvJW8.mjs";
6
- import { n as CreateContextRpcServerOptions, r as createContextRpcServer, t as ContextRpcServer } from "../rpc-core-CDZoGYiD.mjs";
2
+ import { At as AgentResource, Ft as AgentToolProvider, It as AgentToolProviderHandle, Lt as DevframeAgentHost$1, Mt as AgentResourceInput, Nt as AgentTool, Ot as AgentHandle, Pt as AgentToolInput, Rt as DevframeAgentHostEvents, jt as AgentResourceContent, kt as AgentManifest, o as DevframeNodeContext, yt as DevframeHost, zt as EventEmitter } from "../context-c0OlSc12.mjs";
3
+ import { a as RemoteAssetsStore } from "../remote-assets-B13_vRkJ.mjs";
4
+ import { a as InstanceShellInit, c as StartedServer, d as samePath, f as DevframeInstanceRecord, h as registerDevframeInstance, i as InstanceShellApi, l as createInstanceShell, m as listLiveDevframeInstances, n as InstanceRegisterConfig, o as InstanceShellInternals, p as DevframeInstanceRegistration, r as InstanceShell, s as InstanceWsTier, t as CreateInstanceShellOptions, u as resolveInstanceRegister } from "../instance-shell-CPuYY8pw.mjs";
5
+ import { n as normalizeBasePath, r as resolveBasePath } from "../_shared-CsBsnhuO.mjs";
6
+ import { n as CreateContextRpcServerOptions, r as createContextRpcServer, t as ContextRpcServer } from "../rpc-core-Oyz-cJBC.mjs";
7
7
  //#region src/node/agent-args.d.ts
8
8
  /**
9
9
  * How {@link coerceAgentPositionalArgs} treats an args object that carries
@@ -1,9 +1,9 @@
1
1
  import { n as peekRpcWireFrame, t as createRpcWireCodec } from "../wire-codec-0K-o5MYW.mjs";
2
2
  import { t as diagnostics } from "../diagnostics-BXWW3VK-.mjs";
3
- import { n as coerceAgentPositionalArgs, t as DevframeAgentHost } from "../host-agent-B84av916.mjs";
3
+ import { n as coerceAgentPositionalArgs, t as DevframeAgentHost } from "../host-agent-DbPWo0Bl.mjs";
4
4
  import { n as resolveBasePath, t as normalizeBasePath } from "../_shared-BM3PdYli.mjs";
5
5
  import { t as createH3DevframeHost } from "../host-h3-fRbF9yor.mjs";
6
6
  import { i as registerDevframeInstance, n as listLiveDevframeInstances } from "../instance-registry-BjlMQbFB.mjs";
7
- import { i as normalizeHttpServerUrl, n as resolveInstanceRegister, r as samePath, t as createInstanceShell } from "../instance-shell-B-uevnK-.mjs";
7
+ import { i as normalizeHttpServerUrl, n as resolveInstanceRegister, r as samePath, t as createInstanceShell } from "../instance-shell-fB5PyVtR.mjs";
8
8
  import { t as createContextRpcServer } from "../rpc-core-DlHd276T.mjs";
9
9
  export { DevframeAgentHost, coerceAgentPositionalArgs, createContextRpcServer, createH3DevframeHost, createInstanceShell, createRpcWireCodec, diagnostics, listLiveDevframeInstances, normalizeBasePath, normalizeHttpServerUrl, peekRpcWireFrame, registerDevframeInstance, resolveBasePath, resolveInstanceRegister, samePath };
@@ -1,3 +1,3 @@
1
- import { Ct as DevframeAuthHandler } from "../context-_i51nYOs.mjs";
2
- import { a as verifyAuthToken, i as refreshTempAuthCode, n as exchangeTempAuthCode, o as revokeActiveConnectionsForToken, r as getTempAuthCode, s as revokeAuthToken, t as buildOtpAuthUrl } from "../index-CEvd-YXD.mjs";
1
+ import { Ct as DevframeAuthHandler } from "../context-c0OlSc12.mjs";
2
+ import { a as verifyAuthToken, i as refreshTempAuthCode, n as exchangeTempAuthCode, o as revokeActiveConnectionsForToken, r as getTempAuthCode, s as revokeAuthToken, t as buildOtpAuthUrl } from "../index-B_DPNIT4.mjs";
3
3
  export { DevframeAuthHandler, buildOtpAuthUrl, exchangeTempAuthCode, getTempAuthCode, refreshTempAuthCode, revokeActiveConnectionsForToken, revokeAuthToken, verifyAuthToken };
@@ -1,3 +1,3 @@
1
- import { n as revokeAuthToken, t as revokeActiveConnectionsForToken } from "../revoke-3Q6aDKWk.mjs";
1
+ import { n as revokeAuthToken, t as revokeActiveConnectionsForToken } from "../revoke-PihtvVil.mjs";
2
2
  import { a as verifyAuthToken, i as refreshTempAuthCode, n as exchangeTempAuthCode, r as getTempAuthCode, t as buildOtpAuthUrl } from "../state-CK9LjrnT.mjs";
3
3
  export { buildOtpAuthUrl, exchangeTempAuthCode, getTempAuthCode, refreshTempAuthCode, revokeActiveConnectionsForToken, revokeAuthToken, verifyAuthToken };
@@ -1,3 +1,3 @@
1
- import { a as internalContextMap, i as getInternalContext, n as InternalAnonymousAuthStorage, r as RemoteTokenRecord, t as DevframeInternalContext } from "../context-CO7eZHJy.mjs";
2
- import { n as normalizeBasePath, r as resolveBasePath } from "../_shared-BPovvJW8.mjs";
1
+ import { a as internalContextMap, i as getInternalContext, n as InternalAnonymousAuthStorage, r as RemoteTokenRecord, t as DevframeInternalContext } from "../context-DO0Qu1O8.mjs";
2
+ import { n as normalizeBasePath, r as resolveBasePath } from "../_shared-CsBsnhuO.mjs";
3
3
  export { type DevframeInternalContext, type InternalAnonymousAuthStorage, type RemoteTokenRecord, getInternalContext, internalContextMap, normalizeBasePath, resolveBasePath };
@@ -1,3 +1,3 @@
1
1
  import { n as resolveBasePath, t as normalizeBasePath } from "../_shared-BM3PdYli.mjs";
2
- import { n as internalContextMap, t as getInternalContext } from "../context-BUJGvlje.mjs";
2
+ import { n as internalContextMap, t as getInternalContext } from "../context-Cx9V9Grq.mjs";
3
3
  export { getInternalContext, internalContextMap, normalizeBasePath, resolveBasePath };
@@ -1,6 +1,6 @@
1
1
  import "../index-DOg4S5wk.mjs";
2
2
  import { v as RpcFunctionDefinitionAny } from "../types-BBLeGfpt.mjs";
3
- import { k as SharedState, l as RpcFunctionsHost, o as DevframeNodeContext, yt as DevframeHost } from "../context-_i51nYOs.mjs";
3
+ import { k as SharedState, l as RpcFunctionsHost, o as DevframeNodeContext, yt as DevframeHost } from "../context-c0OlSc12.mjs";
4
4
  import { BirpcGroup } from "birpc";
5
5
  //#region src/node/context.d.ts
6
6
  interface CreateHostContextOptions {
@@ -1,3 +1,3 @@
1
- import { t as createHostContext } from "../context-CQW0lSw8.mjs";
1
+ import { t as createHostContext } from "../context-Bc5S40Qt.mjs";
2
2
  import { t as createStorage } from "../storage-BXNVhKyR.mjs";
3
3
  export { createHostContext, createStorage };
@@ -1,6 +1,6 @@
1
1
  import "../index-DOg4S5wk.mjs";
2
2
  import { E as Thenable, S as RpcFunctionSetupResult, c as RpcDump, g as RpcFunctionAgentOptions } from "../types-BBLeGfpt.mjs";
3
- import "../context-_i51nYOs.mjs";
3
+ import "../context-c0OlSc12.mjs";
4
4
  import { SimpleSchema } from "../utils/simple-schema.mjs";
5
5
  //#region src/recipes/common-rpc-functions.d.ts
6
6
  /**
@@ -1,5 +1,5 @@
1
- import { Ct as DevframeAuthHandler, o as DevframeNodeContext } from "../context-_i51nYOs.mjs";
2
- import "../index-CEvd-YXD.mjs";
1
+ import { Ct as DevframeAuthHandler, o as DevframeNodeContext } from "../context-c0OlSc12.mjs";
2
+ import "../index-B_DPNIT4.mjs";
3
3
  //#region src/recipes/interactive-auth.d.ts
4
4
  interface CreateInteractiveAuthOptions {
5
5
  /**
@@ -2,7 +2,7 @@ import { s as colors } from "../nostics-CzECRXpE.mjs";
2
2
  import { n as defineRpcFunction } from "../define-BLWPsH6y.mjs";
3
3
  import { isAnonymousRpcMethod } from "../constants.mjs";
4
4
  import { a as verifyAuthToken, n as exchangeTempAuthCode, r as getTempAuthCode, t as buildOtpAuthUrl } from "../state-CK9LjrnT.mjs";
5
- import { t as getInternalContext } from "../context-BUJGvlje.mjs";
5
+ import { t as getInternalContext } from "../context-Cx9V9Grq.mjs";
6
6
  import { t as s } from "../simple-schema-DQPZrAaZ.mjs";
7
7
  //#region src/recipes/interactive-auth.ts
8
8
  function defaultBanner(info) {
@@ -14,7 +14,7 @@
14
14
  * 3. The CDN {@link provider} — each requested file streams through to
15
15
  * the browser while being written into the cache.
16
16
  *
17
- * Anywhere a static mount accepts a dist directory (`cli.distDir`,
17
+ * Anywhere a static mount accepts a dist directory (`clientAssets`,
18
18
  * `hostStatic`, `mountStatic`) it also accepts this object — see
19
19
  * {@link StaticAssetsSource}.
20
20
  */
@@ -1,4 +1,4 @@
1
- import { t as DEVFRAME_EVENTS } from "./events-DKfSmoTj.mjs";
1
+ import { t as DEVFRAME_EVENTS } from "./events-DzolaBEs.mjs";
2
2
  //#region src/node/auth/revoke.ts
3
3
  /**
4
4
  * Flip `isTrusted` to false on any live WS clients connected with `token`
@@ -1,5 +1,5 @@
1
1
  import { n as WsOriginRegistry } from "../../ws-server-DLtEoLdR.mjs";
2
- import { t as ContextRpcServer } from "../../rpc-core-CDZoGYiD.mjs";
2
+ import { t as ContextRpcServer } from "../../rpc-core-Oyz-cJBC.mjs";
3
3
  //#region src/rpc/transports/ws-bun.d.ts
4
4
  interface AttachBunWsTransportOptions {
5
5
  /** Same contract as `WsRpcTransportOptions.allowedOrigins`. */
@@ -1,5 +1,5 @@
1
1
  import { n as WsOriginRegistry } from "../../ws-server-DLtEoLdR.mjs";
2
- import { t as ContextRpcServer } from "../../rpc-core-CDZoGYiD.mjs";
2
+ import { t as ContextRpcServer } from "../../rpc-core-Oyz-cJBC.mjs";
3
3
  //#region src/rpc/transports/ws-deno.d.ts
4
4
  interface AttachDenoWsTransportOptions {
5
5
  /** Same contract as `WsRpcTransportOptions.allowedOrigins`. */
@@ -1,6 +1,6 @@
1
1
  import { d as DevframeRpcConnection, u as DevframeNodeRpcSessionMeta } from "./ws-server-DLtEoLdR.mjs";
2
- import { Ct as DevframeAuthHandler, _t as DevframeRpcServerFunctions, gt as DevframeRpcClientFunctions, o as DevframeNodeContext, s as DevframeNodeRpcSession } from "./context-_i51nYOs.mjs";
3
- import "./index-CEvd-YXD.mjs";
2
+ import { Ct as DevframeAuthHandler, _t as DevframeRpcServerFunctions, gt as DevframeRpcClientFunctions, o as DevframeNodeContext, s as DevframeNodeRpcSession } from "./context-c0OlSc12.mjs";
3
+ import "./index-B_DPNIT4.mjs";
4
4
  import { BirpcGroup, EventOptions } from "birpc";
5
5
  //#region src/node/rpc-core.d.ts
6
6
  interface CreateContextRpcServerOptions {
@@ -1,6 +1,6 @@
1
1
  import { g as RpcFunctionAgentOptions } from "../types-BBLeGfpt.mjs";
2
2
  import { d as DevframeRpcConnection, f as DevframeRpcConnectionRequest, p as DevframeRpcTransportKind, u as DevframeNodeRpcSessionMeta } from "../ws-server-DLtEoLdR.mjs";
3
- import { $ as DevframeServicesHost, At as AgentResource, B as DevframeSetupInfo, Bt as EventUnsubscribe, F as DevframeDefinition, Ft as AgentToolProvider, G as McpRouteOptions, H as DevframeSnapshotRpcInputs, I as DevframeDeploymentKind, It as AgentToolProviderHandle, J as DevframeServiceId, K as DevframeServiceDefinition, L as DevframeDockDefaults, Lt as DevframeAgentHost, Mt as AgentResourceInput, Nt as AgentTool, Ot as AgentHandle, P as DevframeCliOptions, Pt as AgentToolInput, Q as DevframeServiceScopeOf, R as DevframeDuplicationStrategy, Rt as DevframeAgentHostEvents, St as DevframeDiagnosticsLogger, U as DevframeSseOptions, V as DevframeSnapshotRpcEntry, Vt as EventsMap, W as DevframeWsOptions, X as DevframeServiceMeta, Y as DevframeServiceInput, Z as DevframeServiceOf, _t as DevframeRpcServerFunctions, a as DevframeConnectionConfigsRegistry, at as DevframeScopedStreamingHost, bt as DevframeStorageScope, c as RpcBroadcastOptions, ct as DevframeSettingsStore, d as RpcSharedStateHost, dt as ScopedRpcFn, et as DevframeServicesRegistry, f as RpcStreamingChannel, ft as ScopedServerFunctions, gt as DevframeRpcClientFunctions, ht as DevframeViewHost, i as DevframeCapabilities, it as DevframeScopedNodeRpc, jt as AgentResourceContent, kt as AgentManifest, l as RpcFunctionsHost, lt as ScopedBroadcastOptions, m as RpcStreamingHost, mt as SettingsForNamespace, n as ConnectionMetaSse, nt as DevframeServicesState, o as DevframeNodeContext, ot as DevframeSettings, p as RpcStreamingChannelOptions, pt as ScopedSharedStates, q as DevframeServiceDescriptor, r as ConnectionMetaWebsocket, rt as DevframeScopedNodeContext, s as DevframeNodeRpcSession, st as DevframeSettingsRegistry, t as ConnectionMeta, tt as DevframeServicesScopeRegistry, u as RpcSharedStateGetOptions, ut as ScopedClientFunctions, vt as DevframeRpcSharedStates, xt as DevframeDiagnosticsHost, yt as DevframeHost, z as DevframeRpcOptions, zt as EventEmitter } from "../context-_i51nYOs.mjs";
4
- import { a as RemoteAssetsStore, i as RemoteAssetsProviderCustom, n as RemoteAssetsErrorMessage, o as StaticAssetsSource, r as RemoteAssetsProvider, t as RemoteAssets } from "../remote-assets-Bg4gCUZ_.mjs";
3
+ import { $ as DevframeServicesHost, At as AgentResource, B as DevframeSetupInfo, Bt as EventUnsubscribe, F as DevframeDefinition, Ft as AgentToolProvider, G as McpRouteOptions, H as DevframeSnapshotRpcInputs, I as DevframeDeploymentKind, It as AgentToolProviderHandle, J as DevframeServiceId, K as DevframeServiceDefinition, L as DevframeDockDefaults, Lt as DevframeAgentHost, Mt as AgentResourceInput, Nt as AgentTool, Ot as AgentHandle, P as DevframeCliOptions, Pt as AgentToolInput, Q as DevframeServiceScopeOf, R as DevframeDuplicationStrategy, Rt as DevframeAgentHostEvents, St as DevframeDiagnosticsLogger, U as DevframeSseOptions, V as DevframeSnapshotRpcEntry, Vt as EventsMap, W as DevframeWsOptions, X as DevframeServiceMeta, Y as DevframeServiceInput, Z as DevframeServiceOf, _t as DevframeRpcServerFunctions, a as DevframeConnectionConfigsRegistry, at as DevframeScopedStreamingHost, bt as DevframeStorageScope, c as RpcBroadcastOptions, ct as DevframeSettingsStore, d as RpcSharedStateHost, dt as ScopedRpcFn, et as DevframeServicesRegistry, f as RpcStreamingChannel, ft as ScopedServerFunctions, gt as DevframeRpcClientFunctions, ht as DevframeViewHost, i as DevframeCapabilities, it as DevframeScopedNodeRpc, jt as AgentResourceContent, kt as AgentManifest, l as RpcFunctionsHost, lt as ScopedBroadcastOptions, m as RpcStreamingHost, mt as SettingsForNamespace, n as ConnectionMetaSse, nt as DevframeServicesState, o as DevframeNodeContext, ot as DevframeSettings, p as RpcStreamingChannelOptions, pt as ScopedSharedStates, q as DevframeServiceDescriptor, r as ConnectionMetaWebsocket, rt as DevframeScopedNodeContext, s as DevframeNodeRpcSession, st as DevframeSettingsRegistry, t as ConnectionMeta, tt as DevframeServicesScopeRegistry, u as RpcSharedStateGetOptions, ut as ScopedClientFunctions, vt as DevframeRpcSharedStates, xt as DevframeDiagnosticsHost, yt as DevframeHost, z as DevframeRpcOptions, zt as EventEmitter } from "../context-c0OlSc12.mjs";
4
+ import { a as RemoteAssetsStore, i as RemoteAssetsProviderCustom, n as RemoteAssetsErrorMessage, o as StaticAssetsSource, r as RemoteAssetsProvider, t as RemoteAssets } from "../remote-assets-B13_vRkJ.mjs";
5
5
  import { i as DevframeDefineDiagnosticsOptions } from "../nostics-SPGDgHEP.mjs";
6
6
  export { AgentHandle, AgentManifest, AgentResource, AgentResourceContent, AgentResourceInput, AgentTool, AgentToolInput, AgentToolProvider, AgentToolProviderHandle, ConnectionMeta, ConnectionMetaSse, ConnectionMetaWebsocket, DevframeAgentHost, DevframeAgentHostEvents, DevframeCapabilities, DevframeCliOptions, DevframeConnectionConfigsRegistry, type DevframeDefineDiagnosticsOptions, DevframeDefinition, DevframeDeploymentKind, DevframeDiagnosticsHost, DevframeDiagnosticsLogger, DevframeDockDefaults, DevframeDuplicationStrategy, DevframeHost, DevframeNodeContext, DevframeNodeRpcSession, type DevframeNodeRpcSessionMeta, DevframeRpcClientFunctions, type DevframeRpcConnection, type DevframeRpcConnectionRequest, DevframeRpcOptions, DevframeRpcServerFunctions, DevframeRpcSharedStates, type DevframeRpcTransportKind, DevframeScopedNodeContext, DevframeScopedNodeRpc, DevframeScopedStreamingHost, DevframeServiceDefinition, DevframeServiceDescriptor, DevframeServiceId, DevframeServiceInput, DevframeServiceMeta, DevframeServiceOf, DevframeServiceScopeOf, DevframeServicesHost, DevframeServicesRegistry, DevframeServicesScopeRegistry, DevframeServicesState, DevframeSettings, DevframeSettingsRegistry, DevframeSettingsStore, DevframeSetupInfo, DevframeSnapshotRpcEntry, DevframeSnapshotRpcInputs, DevframeSseOptions, DevframeStorageScope, DevframeViewHost, DevframeWsOptions, EventEmitter, EventUnsubscribe, EventsMap, McpRouteOptions, RemoteAssets, RemoteAssetsErrorMessage, RemoteAssetsProvider, RemoteAssetsProviderCustom, RemoteAssetsStore, RpcBroadcastOptions, type RpcFunctionAgentOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, RpcStreamingChannel, RpcStreamingChannelOptions, RpcStreamingHost, ScopedBroadcastOptions, ScopedClientFunctions, ScopedRpcFn, ScopedServerFunctions, ScopedSharedStates, SettingsForNamespace, StaticAssetsSource };
@@ -1,4 +1,4 @@
1
- import { Vt as EventsMap, zt as EventEmitter } from "../context-_i51nYOs.mjs";
1
+ import { Vt as EventsMap, zt as EventEmitter } from "../context-c0OlSc12.mjs";
2
2
  //#region src/utils/events.d.ts
3
3
  /**
4
4
  * Create event emitter.
@@ -1,4 +1,4 @@
1
- import { a as RemoteAssetsStore, o as StaticAssetsSource } from "../remote-assets-Bg4gCUZ_.mjs";
1
+ import { a as RemoteAssetsStore, o as StaticAssetsSource } from "../remote-assets-B13_vRkJ.mjs";
2
2
  //#region src/utils/remote-assets.d.ts
3
3
  /**
4
4
  * Normalize a {@link StaticAssetsSource} into something servable: a local
@@ -1,4 +1,4 @@
1
- import { a as RemoteAssetsStore } from "../remote-assets-Bg4gCUZ_.mjs";
1
+ import { a as RemoteAssetsStore } from "../remote-assets-B13_vRkJ.mjs";
2
2
  import { IncomingMessage, ServerResponse } from "node:http";
3
3
  import { EventHandler, H3 } from "h3";
4
4
  //#region src/utils/serve-static.d.ts
@@ -1,4 +1,4 @@
1
- import { t as DEVFRAME_EVENTS } from "../events-DKfSmoTj.mjs";
1
+ import { t as DEVFRAME_EVENTS } from "../events-DzolaBEs.mjs";
2
2
  import { extname, join, normalize, resolve, sep } from "pathe";
3
3
  import { createReadStream } from "node:fs";
4
4
  import { stat } from "node:fs/promises";
@@ -1,2 +1,2 @@
1
- import { A as SharedStateEvents, D as ImmutableObject, E as ImmutableMap, M as SharedStatePatch, N as createSharedState, O as ImmutableSet, T as ImmutableArray, j as SharedStateOptions, k as SharedState, w as Immutable } from "../context-_i51nYOs.mjs";
1
+ import { A as SharedStateEvents, D as ImmutableObject, E as ImmutableMap, M as SharedStatePatch, N as createSharedState, O as ImmutableSet, T as ImmutableArray, j as SharedStateOptions, k as SharedState, w as Immutable } from "../context-c0OlSc12.mjs";
2
2
  export { Immutable, ImmutableArray, ImmutableMap, ImmutableObject, ImmutableSet, SharedState, SharedStateEvents, SharedStateOptions, SharedStatePatch, createSharedState };
@@ -1,2 +1,2 @@
1
- import { C as createStreamSink, S as createStreamReader, _ as CreateStreamSinkOptions, b as StreamSink, g as CreateStreamReaderOptions, h as BufferedChunk, v as StreamErrorPayload, x as StreamSinkEvents, y as StreamReader } from "../context-_i51nYOs.mjs";
1
+ import { C as createStreamSink, S as createStreamReader, _ as CreateStreamSinkOptions, b as StreamSink, g as CreateStreamReaderOptions, h as BufferedChunk, v as StreamErrorPayload, x as StreamSinkEvents, y as StreamReader } from "../context-c0OlSc12.mjs";
2
2
  export { BufferedChunk, CreateStreamReaderOptions, CreateStreamSinkOptions, StreamErrorPayload, StreamReader, StreamSink, StreamSinkEvents, createStreamReader, createStreamSink };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "devframe",
3
3
  "type": "module",
4
- "version": "0.9.4",
4
+ "version": "0.9.5",
5
5
  "description": "Framework for building one portable devtool integration that runs in any viewer.",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -77,7 +77,7 @@ export default defineDevframe({
77
77
  homepage: pkg.homepage,
78
78
  description: pkg.description,
79
79
  icon: 'ph:magnifying-glass-duotone',
80
- cli: { distDir: './client/dist' },
80
+ clientAssets: './client/dist', // built SPA served as the UI
81
81
  setup(ctx) {
82
82
  const my = ctx.scope('my-inspector') // preferred — auto-namespaces ids
83
83
  my.rpc.register(defineRpcFunction({
@@ -540,7 +540,7 @@ Built-in context: `clientType` (`'embedded' | 'standalone'`), `dockOpen`, `palet
540
540
 
541
541
  | Subcommand | Action |
542
542
  |------------|--------|
543
- | *(default)* | Dev server (port 9999 or `--port`) — WebSocket RPC, `cli.distDir` served at the base |
543
+ | *(default)* | Dev server (port 9999 or `--port`) — WebSocket RPC, `clientAssets` served at the base |
544
544
  | `build` | Static snapshot → `./dist-static/` (`--out-dir`) |
545
545
  | `mcp` | stdio MCP server |
546
546
 
@@ -6,7 +6,7 @@
6
6
  // `hub.handler` is a Web-Standard `(request: Request) => Promise<Response>`;
7
7
  // mount it on a catch-all route (Hono, Nitro, Next, SvelteKit, ...) exactly
8
8
  // like an `initDevframe` instance. `hub.nodeMiddleware` is the Connect-style
9
- // form for Vite/Rsbuild. See docs/adapters/initiate.md for the mount snippets
9
+ // form for Vite/Rsbuild. See docs/content/2.adapters/1.initiate.md for the mount snippets
10
10
  // and the WebSocket-binding precedence (`ws.port` / `server` / `ws.sidecar` /
11
11
  // host-attached `hub.attach(server)`).
12
12
  import { createUi } from '@devframes/hub-ui'