devframe 0.9.9 → 0.9.11
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.
- package/dist/{_shared-CK3czkH4.d.mts → _shared-DEAMiPfH.d.mts} +26 -7
- package/dist/{_shared-C08SdQRl.mjs → _shared-U8D-xzrp.mjs} +41 -5
- package/dist/adapters/build.d.mts +1 -1
- package/dist/adapters/build.mjs +13 -26
- package/dist/adapters/cac.d.mts +6 -10
- package/dist/adapters/cac.mjs +3 -4
- package/dist/adapters/dev.d.mts +7 -7
- package/dist/adapters/dev.mjs +2 -2
- package/dist/adapters/embedded.d.mts +1 -1
- package/dist/adapters/initiate.d.mts +5 -4
- package/dist/adapters/initiate.mjs +1 -1
- package/dist/adapters/mcp.d.mts +1 -1
- package/dist/adapters/mcp.mjs +3 -3
- package/dist/cli/main.mjs +2 -2
- package/dist/client/index.d.mts +1 -1
- package/dist/client/index.mjs +7 -1
- package/dist/{context-4AIVRLYF.d.mts → context-BBWPLDHh.d.mts} +57 -18
- package/dist/{context-CwPUinjn.mjs → context-Bq27SDK-.mjs} +49 -13
- package/dist/{context-rgBSPFHS.d.mts → context-_temOGDB.d.mts} +1 -1
- package/dist/{context-DIUvJW4D.mjs → context-jXO5vzjH.mjs} +1 -1
- package/dist/{dev-Eqq5PX0k.mjs → dev-B32EVw5w.mjs} +49 -35
- package/dist/{diagnostics-BMfN8mb1.mjs → diagnostics-DZA6KQ_Z.mjs} +3 -3
- package/dist/{services-install-P_DV7VYL.mjs → host-agent-CKqSTEX9.mjs} +8 -155
- package/dist/in-page-channel/index.d.mts +1 -1
- package/dist/{index-pKl67H6w.d.mts → index-1ezCLThh.d.mts} +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/{instance-registry-C7-41RSp.mjs → instance-registry-DCq762YJ.mjs} +2 -2
- package/dist/{instance-shell-7Z52PE4_.d.mts → instance-shell-BWh0JQuo.d.mts} +2 -2
- package/dist/{instance-shell-cdVETpfz.mjs → instance-shell-DvYCwrDy.mjs} +5 -18
- package/dist/internal/index.d.mts +11 -9
- package/dist/internal/index.mjs +9 -9
- package/dist/node/auth.d.mts +2 -2
- package/dist/node/auth.mjs +1 -1
- package/dist/node/hub-internals.d.mts +2 -2
- package/dist/node/hub-internals.mjs +2 -2
- package/dist/node/index.d.mts +1 -1
- package/dist/node/index.mjs +2 -2
- package/dist/recipes/common-rpc-functions.d.mts +1 -1
- package/dist/recipes/interactive-auth.d.mts +2 -2
- package/dist/recipes/interactive-auth.mjs +2 -2
- package/dist/{remote-assets-BIFWOlBW.mjs → remote-assets-DMFzLSoH.mjs} +3 -3
- package/dist/rpc/dump.d.mts +17 -1
- package/dist/rpc/dump.mjs +2 -2
- package/dist/rpc/index.mjs +2 -3
- package/dist/rpc/transports/sse-client.mjs +1 -1
- package/dist/rpc/transports/sse-server.mjs +1 -1
- package/dist/rpc/transports/ws-bun.d.mts +1 -1
- package/dist/rpc/transports/ws-client.mjs +1 -1
- package/dist/rpc/transports/ws-deno.d.mts +1 -1
- package/dist/rpc/transports/ws-server.mjs +1 -1
- package/dist/{rpc-core-DVQ7xi89.mjs → rpc-core-CvkU23bQ.mjs} +1 -1
- package/dist/{rpc-core-Ceu6AUz8.d.mts → rpc-core-DiCr5etS.d.mts} +2 -2
- package/dist/{serialization-DTZnPQ1-.mjs → serialization-DFg5sUt6.mjs} +39 -2
- package/dist/services-install-Ben4yh52.mjs +154 -0
- package/dist/{state-CeQQWzM-.mjs → state-Mwt6--el.mjs} +13 -5
- package/dist/{storage-Dccf_IyD.mjs → storage-B70AXK64.mjs} +2 -2
- package/dist/types/index.d.mts +2 -2
- package/dist/utils/events.d.mts +1 -1
- package/dist/utils/remote-assets.mjs +1 -1
- package/dist/utils/serve-static.mjs +1 -1
- package/dist/utils/shared-state.d.mts +1 -1
- package/dist/utils/streaming-channel.d.mts +1 -1
- package/dist/{validation-BOy8IoFZ.mjs → validation-CfV1s0SF.mjs} +1 -1
- package/dist/{wire-codec-dcCeXcSo.mjs → wire-codec-BHGt0sSs.mjs} +1 -1
- package/dist/{static-DZ8P2Kn7.mjs → write-BuLCrn9h.mjs} +25 -4
- package/package.json +2 -6
- package/skills/devframe/SKILL.md +5 -3
- package/dist/diagnostics-D0EVm5M6.mjs +0 -39
- package/dist/{host-h3-BJ4siyz7.mjs → host-h3-BROI6SQ4.mjs} +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as DevframeDefinition, G as McpAuthorization, I as DevframeDeploymentKind,
|
|
1
|
+
import { F as DevframeDefinition, G as McpAuthorization, I as DevframeDeploymentKind, q as McpSetting, t as ConnectionMeta, zt as DevframeAgentHost } from "./context-BBWPLDHh.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
|
|
@@ -38,20 +38,39 @@ interface ResolvedMcpConfig {
|
|
|
38
38
|
authorization: McpAuthorization;
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
|
-
* Normalize
|
|
42
|
-
*
|
|
41
|
+
* Normalize an *explicit* `mcp` setting into a fully-resolved config, or
|
|
42
|
+
* `undefined` when the MCP route is disabled. `'auto'` also resolves to
|
|
43
|
+
* `undefined` here: whether it mounts depends on the live agent surface,
|
|
44
|
+
* which only the mounting adapter can consult (through
|
|
45
|
+
* {@link loadAutoMcpAdapter}) - static resolvers like
|
|
46
|
+
* `resolveMcpConnectionMeta` treat it as unadvertisable.
|
|
43
47
|
*
|
|
44
48
|
* An enabled route trusts same-machine callers by default: the authorization
|
|
45
49
|
* resolves to origin-only (`false`) unless the object config opts into a
|
|
46
50
|
* bearer/callback identity check. An empty-string bearer is treated as no
|
|
47
51
|
* bearer (origin-only) rather than a usable credential.
|
|
48
52
|
*/
|
|
49
|
-
declare function resolveMcpConfig(mcp:
|
|
53
|
+
declare function resolveMcpConfig(mcp: McpSetting | undefined): ResolvedMcpConfig | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Resolve the `mcp: 'auto'` default at mount time: import the MCP adapter
|
|
56
|
+
* when the devframe's agent surface is non-empty, or return `undefined`
|
|
57
|
+
* (mount nothing) when the surface is empty - the zero-cost path, loading
|
|
58
|
+
* no MCP code at all. The adapter (and the MCP SDK behind it) loads through
|
|
59
|
+
* `importRuntimeModule`, so it never enters a consumer's bundle graph.
|
|
60
|
+
*
|
|
61
|
+
* Generic like `importRuntimeModule`: the caller names the module type
|
|
62
|
+
* (`typeof import('devframe/adapters/mcp')`) so this shared helper carries
|
|
63
|
+
* no type-level dependency on the MCP adapter.
|
|
64
|
+
*/
|
|
65
|
+
declare function loadAutoMcpAdapter<T>(agent: Pick<DevframeAgentHost, 'hasSurface'>): Promise<T | undefined>;
|
|
50
66
|
/**
|
|
51
67
|
* Resolve the `mcp` entry a `__connection.json` should advertise for a dev
|
|
52
68
|
* server started with the given `mcp` option (falling back to `def.cli?.mcp`,
|
|
53
69
|
* exactly like `createDevServer`), or `undefined` when the route is
|
|
54
|
-
* disabled.
|
|
70
|
+
* disabled. `'auto'` (the omitted default) resolves at mount time against
|
|
71
|
+
* the live agent surface, so hand-rolled meta advertises it only for an
|
|
72
|
+
* explicit setting; the adapters advertise the actually-mounted route
|
|
73
|
+
* themselves.
|
|
55
74
|
*
|
|
56
75
|
* Hosted bridges that hand-roll their connection meta pass the side-car
|
|
57
76
|
* `port`: the advertised path becomes absolute (the side-car mounts at `/`)
|
|
@@ -59,6 +78,6 @@ declare function resolveMcpConfig(mcp: boolean | McpRouteOptions | undefined): R
|
|
|
59
78
|
* stays relative, resolved against `__connection.json`'s own location (the
|
|
60
79
|
* same-server default).
|
|
61
80
|
*/
|
|
62
|
-
declare function resolveMcpConnectionMeta(def: DevframeDefinition, mcp:
|
|
81
|
+
declare function resolveMcpConnectionMeta(def: DevframeDefinition, mcp: McpSetting | undefined, port?: number): ConnectionMeta['mcp'];
|
|
63
82
|
//#endregion
|
|
64
|
-
export {
|
|
83
|
+
export { resolveBasePath as a, resolveMcpConnectionMeta as c, normalizeBasePath as i, ResolvedMcpConfig as n, resolveDevServerPort as o, loadAutoMcpAdapter as r, resolveMcpConfig as s, ResolveDevServerPortOptions as t };
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import "./constants.mjs";
|
|
2
|
+
import { r as importServicePackage } from "./services-install-Ben4yh52.mjs";
|
|
2
3
|
import { n as getPort } from "./dist-CZXfGEkd.mjs";
|
|
3
4
|
import { cleanDoubleSlashes, withLeadingSlash, withTrailingSlash, withoutLeadingSlash } from "ufo";
|
|
5
|
+
//#region src/node/import-runtime-module.ts
|
|
6
|
+
/**
|
|
7
|
+
* Resolve and import a package at runtime without adding it to a consumer's
|
|
8
|
+
* bundle graph. First-party adapters use this for modules whose code is
|
|
9
|
+
* needed only when the matching feature is enabled (optional peers, and the
|
|
10
|
+
* MCP adapter with the SDK behind it).
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
async function importRuntimeModule(specifier) {
|
|
15
|
+
return await importServicePackage(specifier, [import.meta.url]);
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
4
18
|
//#region src/adapters/_shared.ts
|
|
5
19
|
const DEFAULT_PORT = 9999;
|
|
6
20
|
/**
|
|
@@ -36,8 +50,12 @@ async function resolveDevServerPort(def, options = {}) {
|
|
|
36
50
|
return getPort(portOptions);
|
|
37
51
|
}
|
|
38
52
|
/**
|
|
39
|
-
* Normalize
|
|
40
|
-
*
|
|
53
|
+
* Normalize an *explicit* `mcp` setting into a fully-resolved config, or
|
|
54
|
+
* `undefined` when the MCP route is disabled. `'auto'` also resolves to
|
|
55
|
+
* `undefined` here: whether it mounts depends on the live agent surface,
|
|
56
|
+
* which only the mounting adapter can consult (through
|
|
57
|
+
* {@link loadAutoMcpAdapter}) - static resolvers like
|
|
58
|
+
* `resolveMcpConnectionMeta` treat it as unadvertisable.
|
|
41
59
|
*
|
|
42
60
|
* An enabled route trusts same-machine callers by default: the authorization
|
|
43
61
|
* resolves to origin-only (`false`) unless the object config opts into a
|
|
@@ -45,7 +63,7 @@ async function resolveDevServerPort(def, options = {}) {
|
|
|
45
63
|
* bearer (origin-only) rather than a usable credential.
|
|
46
64
|
*/
|
|
47
65
|
function resolveMcpConfig(mcp) {
|
|
48
|
-
if (!mcp) return void 0;
|
|
66
|
+
if (!mcp || mcp === "auto") return void 0;
|
|
49
67
|
if (mcp === true) return { authorization: false };
|
|
50
68
|
const authorization = typeof mcp.authorization === "string" && mcp.authorization.length === 0 ? false : mcp.authorization ?? false;
|
|
51
69
|
return {
|
|
@@ -55,10 +73,28 @@ function resolveMcpConfig(mcp) {
|
|
|
55
73
|
};
|
|
56
74
|
}
|
|
57
75
|
/**
|
|
76
|
+
* Resolve the `mcp: 'auto'` default at mount time: import the MCP adapter
|
|
77
|
+
* when the devframe's agent surface is non-empty, or return `undefined`
|
|
78
|
+
* (mount nothing) when the surface is empty - the zero-cost path, loading
|
|
79
|
+
* no MCP code at all. The adapter (and the MCP SDK behind it) loads through
|
|
80
|
+
* `importRuntimeModule`, so it never enters a consumer's bundle graph.
|
|
81
|
+
*
|
|
82
|
+
* Generic like `importRuntimeModule`: the caller names the module type
|
|
83
|
+
* (`typeof import('devframe/adapters/mcp')`) so this shared helper carries
|
|
84
|
+
* no type-level dependency on the MCP adapter.
|
|
85
|
+
*/
|
|
86
|
+
async function loadAutoMcpAdapter(agent) {
|
|
87
|
+
if (!agent.hasSurface()) return void 0;
|
|
88
|
+
return await importRuntimeModule("devframe/adapters/mcp");
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
58
91
|
* Resolve the `mcp` entry a `__connection.json` should advertise for a dev
|
|
59
92
|
* server started with the given `mcp` option (falling back to `def.cli?.mcp`,
|
|
60
93
|
* exactly like `createDevServer`), or `undefined` when the route is
|
|
61
|
-
* disabled.
|
|
94
|
+
* disabled. `'auto'` (the omitted default) resolves at mount time against
|
|
95
|
+
* the live agent surface, so hand-rolled meta advertises it only for an
|
|
96
|
+
* explicit setting; the adapters advertise the actually-mounted route
|
|
97
|
+
* themselves.
|
|
62
98
|
*
|
|
63
99
|
* Hosted bridges that hand-roll their connection meta pass the side-car
|
|
64
100
|
* `port`: the advertised path becomes absolute (the side-car mounts at `/`)
|
|
@@ -76,4 +112,4 @@ function resolveMcpConnectionMeta(def, mcp, port) {
|
|
|
76
112
|
} : { path: route };
|
|
77
113
|
}
|
|
78
114
|
//#endregion
|
|
79
|
-
export {
|
|
115
|
+
export { resolveMcpConfig as a, resolveDevServerPort as i, normalizeBasePath as n, resolveMcpConnectionMeta as o, resolveBasePath as r, importRuntimeModule as s, loadAutoMcpAdapter as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as DevframeDefinition, V as DevframeSnapshotRpcEntry, o as DevframeNodeContext } from "../context-
|
|
1
|
+
import { F as DevframeDefinition, V as DevframeSnapshotRpcEntry, o as DevframeNodeContext } from "../context-BBWPLDHh.mjs";
|
|
2
2
|
import { o as StaticAssetsSource } from "../remote-assets-eBvSKZMS.mjs";
|
|
3
3
|
//#region src/adapters/build.d.ts
|
|
4
4
|
interface CreateBuildOptions {
|
package/dist/adapters/build.mjs
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { s as colors } from "../nostics-D0PvLZsn.mjs";
|
|
2
|
-
import { n as strictJsonStringify } from "../serialization-DTZnPQ1-.mjs";
|
|
3
2
|
import { t as resolveClientAssets } from "../client-assets-DNdhagGm.mjs";
|
|
4
|
-
import { DEVFRAME_CONNECTION_META_FILENAME,
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { t as
|
|
8
|
-
import { t as
|
|
9
|
-
import { t as
|
|
10
|
-
import
|
|
3
|
+
import { DEVFRAME_CONNECTION_META_FILENAME, DEVFRAME_RPC_DUMP_MANIFEST_FILENAME } from "../constants.mjs";
|
|
4
|
+
import { n as collectStaticRpcDump, t as writeStaticRpcDump } from "../write-BuLCrn9h.mjs";
|
|
5
|
+
import { t as diagnostics } from "../diagnostics-DZA6KQ_Z.mjs";
|
|
6
|
+
import { t as createHostContext } from "../context-Bq27SDK-.mjs";
|
|
7
|
+
import { t as resolveStaticAssetsSource } from "../remote-assets-DMFzLSoH.mjs";
|
|
8
|
+
import { t as createH3DevframeHost } from "../host-h3-BROI6SQ4.mjs";
|
|
9
|
+
import fs from "node:fs/promises";
|
|
10
|
+
import { resolve } from "pathe";
|
|
11
11
|
import process from "node:process";
|
|
12
|
-
import { dirname, resolve } from "pathe";
|
|
13
12
|
import { existsSync } from "node:fs";
|
|
14
|
-
import fs$1 from "node:fs/promises";
|
|
15
13
|
//#region src/adapters/build.ts
|
|
16
14
|
/**
|
|
17
15
|
* Produce a self-contained static deploy of a devframe:
|
|
@@ -29,8 +27,8 @@ async function createBuild(d, options = {}) {
|
|
|
29
27
|
const outDir = resolve(options.outDir ?? "dist-static");
|
|
30
28
|
const distSource = options.distDir ?? resolveClientAssets(d);
|
|
31
29
|
if (!distSource) throw new Error(`[devframe] createBuild: no client assets for "${d.id}". Set \`clientAssets\` on the definition or pass it as an option.`);
|
|
32
|
-
if (existsSync(outDir)) await fs
|
|
33
|
-
await fs
|
|
30
|
+
if (existsSync(outDir)) await fs.rm(outDir, { recursive: true });
|
|
31
|
+
await fs.mkdir(outDir, { recursive: true });
|
|
34
32
|
const host = createH3DevframeHost({
|
|
35
33
|
origin: "http://localhost",
|
|
36
34
|
appName: d.id
|
|
@@ -46,19 +44,17 @@ async function createBuild(d, options = {}) {
|
|
|
46
44
|
await ctx.services.ready();
|
|
47
45
|
await d.setup(ctx);
|
|
48
46
|
applySnapshotRpc(ctx, d.rpc?.snapshot);
|
|
49
|
-
await fs$1.mkdir(resolve(outDir, DEVFRAME_RPC_DUMP_DIRNAME), { recursive: true });
|
|
50
47
|
await writeConnectionMeta(ctx, outDir);
|
|
51
48
|
console.log(colors.cyan`[devframe] writing RPC dump to ${resolve(outDir, DEVFRAME_RPC_DUMP_MANIFEST_FILENAME)}`);
|
|
52
49
|
const dump = await collectStaticRpcDump(ctx.rpc.definitions.values(), ctx);
|
|
53
|
-
await
|
|
54
|
-
await fs$1.writeFile(resolve(outDir, DEVFRAME_RPC_DUMP_MANIFEST_FILENAME), JSON.stringify(dump.manifest, null, 2), "utf-8");
|
|
50
|
+
await writeStaticRpcDump(dump, outDir, { pretty: options.pretty });
|
|
55
51
|
console.log(colors.green`[devframe] built "${d.id}" -> ${outDir}`);
|
|
56
52
|
}
|
|
57
53
|
/** Copy a local SPA dist, or materialize a remote assets source, into `outDir`. */
|
|
58
54
|
async function materializeSpa(resolved, outDir) {
|
|
59
55
|
if (typeof resolved === "string") {
|
|
60
56
|
console.log(colors.cyan`[devframe] copying SPA from ${resolved} -> ${outDir}`);
|
|
61
|
-
await fs
|
|
57
|
+
await fs.cp(resolved, outDir, { recursive: true });
|
|
62
58
|
return;
|
|
63
59
|
}
|
|
64
60
|
console.log(colors.cyan`[devframe] materializing SPA from ${resolved.assets.package}@${resolved.assets.version} -> ${outDir}`);
|
|
@@ -68,20 +64,11 @@ async function materializeSpa(resolved, outDir) {
|
|
|
68
64
|
async function writeConnectionMeta(ctx, outDir) {
|
|
69
65
|
const jsonSerializableMethods = [];
|
|
70
66
|
for (const def of ctx.rpc.definitions.values()) if (def.jsonSerializable === true) jsonSerializableMethods.push(def.name);
|
|
71
|
-
await fs
|
|
67
|
+
await fs.writeFile(resolve(outDir, DEVFRAME_CONNECTION_META_FILENAME), JSON.stringify({
|
|
72
68
|
backend: "static",
|
|
73
69
|
jsonSerializableMethods
|
|
74
70
|
}, null, 2), "utf-8");
|
|
75
71
|
}
|
|
76
|
-
/** Encode and write each sharded RPC dump file under `outDir`. */
|
|
77
|
-
async function writeDumpFiles(dump, outDir, indent) {
|
|
78
|
-
for (const [filepath, file] of Object.entries(dump.files)) {
|
|
79
|
-
const fullpath = resolve(outDir, filepath);
|
|
80
|
-
await fs$1.mkdir(dirname(fullpath), { recursive: true });
|
|
81
|
-
const text = file.serialization === "structured-clone" ? structuredCloneStringify(file.data) : strictJsonStringify(file.data, file.fnName);
|
|
82
|
-
await fs$1.writeFile(fullpath, file.serialization === "json" && indent != null ? JSON.stringify(JSON.parse(text), null, indent) : text, "utf-8");
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
72
|
/**
|
|
86
73
|
* Attach a `dump` to each {@link DevframeRpcOptions.snapshot} target so the
|
|
87
74
|
* static collector bakes it, even though the (service-owned) definition
|
package/dist/adapters/cac.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Dt as
|
|
1
|
+
import { Dt as InferCliFlags, Et as CliFlagsSchema, F as DevframeDefinition, Ot as defineCliFlags, kt as parseCliFlags, q as McpSetting } from "../context-BBWPLDHh.mjs";
|
|
2
2
|
import { CAC } from "cac";
|
|
3
3
|
import { H3 } from "h3";
|
|
4
4
|
//#region src/adapters/cac.d.ts
|
|
@@ -9,17 +9,13 @@ interface CreateCacOptions {
|
|
|
9
9
|
* Expose a route-based MCP server alongside the dev server, speaking the
|
|
10
10
|
* MCP Streamable-HTTP transport at `<base>__mcp`. Whether to expose MCP is
|
|
11
11
|
* a hosting decision made at the CLI assembly stage, so it lives here rather
|
|
12
|
-
* than on the definition.
|
|
12
|
+
* than on the definition. When unset, falls back to the definition's
|
|
13
|
+
* deprecated `cli.mcp`, then to the `'auto'` default (mount once the agent
|
|
14
|
+
* surface is non-empty). See {@link McpSetting}.
|
|
13
15
|
*
|
|
14
|
-
*
|
|
15
|
-
* - `true`: mount at the default `__mcp` route with the loopback origin gate.
|
|
16
|
-
* - {@link McpRouteOptions}: customise the route path, origin allow-list, and
|
|
17
|
-
* opt into an identity check.
|
|
18
|
-
*
|
|
19
|
-
* The `--mcp` / `--no-mcp` flags override this per run. Falls back to the
|
|
20
|
-
* definition's deprecated `cli.mcp` when unset.
|
|
16
|
+
* The `--mcp` / `--no-mcp` flags override this per run.
|
|
21
17
|
*/
|
|
22
|
-
mcp?:
|
|
18
|
+
mcp?: McpSetting;
|
|
23
19
|
/**
|
|
24
20
|
* Final CAC hook invoked after devframe's built-in subcommands and
|
|
25
21
|
* after the definition's `cli.configure`. Use this to add app-level
|
package/dist/adapters/cac.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { s as colors } from "../nostics-D0PvLZsn.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { a as importRuntimeModule } from "../instance-shell-cdVETpfz.mjs";
|
|
2
|
+
import { i as resolveDevServerPort, s as importRuntimeModule } from "../_shared-U8D-xzrp.mjs";
|
|
4
3
|
import { createBuild } from "./build.mjs";
|
|
5
|
-
import { t as createDevServer } from "../dev-
|
|
4
|
+
import { t as createDevServer } from "../dev-B32EVw5w.mjs";
|
|
6
5
|
import process from "node:process";
|
|
7
6
|
import cac$1 from "cac";
|
|
8
7
|
//#region src/adapters/flags.ts
|
|
@@ -96,7 +95,7 @@ function createCac(d, options = {}) {
|
|
|
96
95
|
const defaultHost = d.cli?.host ?? "localhost";
|
|
97
96
|
const command = d.cli?.command ?? d.id;
|
|
98
97
|
const cli = cac$1(command);
|
|
99
|
-
const devCommand = cli.command("[...args]", "Start a local dev server").option("--port <port>", "Port to listen on").option("--host <host>", "Host to bind to", { default: defaultHost }).option("--open", "Open the browser on start").option("--no-open", "Do not open the browser").option("--no-auth", "Disable the interactive authentication gate").option("--mcp", "
|
|
98
|
+
const devCommand = cli.command("[...args]", "Start a local dev server").option("--port <port>", "Port to listen on").option("--host <host>", "Host to bind to", { default: defaultHost }).option("--open", "Open the browser on start").option("--no-open", "Do not open the browser").option("--no-auth", "Disable the interactive authentication gate").option("--mcp", "Force the MCP route on (use --no-mcp to disable; default mounts it once agent tools exist)");
|
|
100
99
|
if (d.cli?.flags) for (const [key, schema] of Object.entries(d.cli.flags)) {
|
|
101
100
|
const optionName = flagKeyToOption(key);
|
|
102
101
|
const description = schema.description ?? "";
|
package/dist/adapters/dev.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { c as DevframeNodeRpcSessionMeta, l as DevframeRpcConnection, n as WsOriginRegistry } from "../ws-server-D2nv68Hg.mjs";
|
|
2
|
-
import { F as DevframeDefinition,
|
|
2
|
+
import { F as DevframeDefinition, Tt as DevframeAuthHandler, U as DevframeSseOptions, W as DevframeWsOptions, q as McpSetting, s as DevframeNodeRpcSession } from "../context-BBWPLDHh.mjs";
|
|
3
3
|
import { o as StaticAssetsSource } from "../remote-assets-eBvSKZMS.mjs";
|
|
4
|
-
import { c as StartedServer } from "../instance-shell-
|
|
5
|
-
import {
|
|
4
|
+
import { c as StartedServer } from "../instance-shell-BWh0JQuo.mjs";
|
|
5
|
+
import { c as resolveMcpConnectionMeta, o as resolveDevServerPort, t as ResolveDevServerPortOptions } from "../_shared-DEAMiPfH.mjs";
|
|
6
6
|
import { H3 } from "h3";
|
|
7
7
|
//#region src/adapters/dev.d.ts
|
|
8
8
|
interface CreateDevServerOptions {
|
|
@@ -81,11 +81,11 @@ interface CreateDevServerOptions {
|
|
|
81
81
|
auth?: boolean | DevframeAuthHandler;
|
|
82
82
|
/**
|
|
83
83
|
* Expose a route-based MCP server on the dev server (Streamable-HTTP).
|
|
84
|
-
* Overrides `def.cli?.mcp`; `undefined` falls through to it
|
|
85
|
-
*
|
|
86
|
-
* {@link
|
|
84
|
+
* Overrides `def.cli?.mcp`; `undefined` falls through to it, then to the
|
|
85
|
+
* `'auto'` default (mount once the agent surface is non-empty). `false`
|
|
86
|
+
* disables the route regardless. See {@link McpSetting}.
|
|
87
87
|
*/
|
|
88
|
-
mcp?:
|
|
88
|
+
mcp?: McpSetting;
|
|
89
89
|
/**
|
|
90
90
|
* Called once per new RPC connection, right after its session is created.
|
|
91
91
|
* Forwarded verbatim to the underlying transport binding.
|
package/dist/adapters/dev.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as createDevServer } from "../dev-
|
|
1
|
+
import { i as resolveDevServerPort, o as resolveMcpConnectionMeta } from "../_shared-U8D-xzrp.mjs";
|
|
2
|
+
import { t as createDevServer } from "../dev-B32EVw5w.mjs";
|
|
3
3
|
export { createDevServer, resolveDevServerPort, resolveMcpConnectionMeta };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as DevframeDefinition, o as DevframeNodeContext } from "../context-
|
|
1
|
+
import { F as DevframeDefinition, o as DevframeNodeContext } from "../context-BBWPLDHh.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 { c as DevframeNodeRpcSessionMeta, l as DevframeRpcConnection, n as WsOriginRegistry } from "../ws-server-D2nv68Hg.mjs";
|
|
2
|
-
import { F as DevframeDefinition,
|
|
2
|
+
import { F as DevframeDefinition, St as DevframeStorageScope, Tt as DevframeAuthHandler, U as DevframeSseOptions, W as DevframeWsOptions, o as DevframeNodeContext, q as McpSetting, s as DevframeNodeRpcSession, t as ConnectionMeta } from "../context-BBWPLDHh.mjs";
|
|
3
3
|
import { o as StaticAssetsSource } from "../remote-assets-eBvSKZMS.mjs";
|
|
4
|
-
import { c as StartedServer, f as DevframeInstanceRecord } from "../instance-shell-
|
|
4
|
+
import { c as StartedServer, f as DevframeInstanceRecord } from "../instance-shell-BWh0JQuo.mjs";
|
|
5
5
|
import { Buffer } from "node:buffer";
|
|
6
6
|
import { IncomingMessage, Server, ServerResponse } from "node:http";
|
|
7
7
|
import { Duplex } from "node:stream";
|
|
@@ -73,9 +73,10 @@ interface InitDevframeOptions {
|
|
|
73
73
|
/**
|
|
74
74
|
* Expose a route-based MCP server (Streamable-HTTP) at `<base>__mcp` and
|
|
75
75
|
* advertise it in `__connection.json`. Overrides `def.cli?.mcp`;
|
|
76
|
-
* `undefined` falls through to it
|
|
76
|
+
* `undefined` falls through to it, then to the `'auto'` default (mount
|
|
77
|
+
* once the agent surface is non-empty). See {@link McpSetting}.
|
|
77
78
|
*/
|
|
78
|
-
mcp?:
|
|
79
|
+
mcp?: McpSetting;
|
|
79
80
|
/**
|
|
80
81
|
* Public origin the host app is reachable at (e.g. `http://localhost:3000`),
|
|
81
82
|
* or a getter for hosts that resolve it late. Backs the auth banner's magic
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as getInstanceInternals, r as initDevframe } from "../dev-
|
|
1
|
+
import { n as getInstanceInternals, r as initDevframe } from "../dev-B32EVw5w.mjs";
|
|
2
2
|
export { getInstanceInternals, initDevframe };
|
package/dist/adapters/mcp.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as DevframeDefinition, G as McpAuthorization, o as DevframeNodeContext } from "../context-
|
|
1
|
+
import { F as DevframeDefinition, G as McpAuthorization, o as DevframeNodeContext } from "../context-BBWPLDHh.mjs";
|
|
2
2
|
import { H3 } from "h3";
|
|
3
3
|
import "@modelcontextprotocol/server";
|
|
4
4
|
//#region src/adapters/mcp/build-server.d.ts
|
package/dist/adapters/mcp.mjs
CHANGED
|
@@ -2,11 +2,11 @@ import { t as Diagnostic } from "../nostics-D0PvLZsn.mjs";
|
|
|
2
2
|
import { t as DEVFRAME_EVENTS } from "../events-BV4Dj59a.mjs";
|
|
3
3
|
import { t as isAllowedOrigin } from "../origin-DZit9g29.mjs";
|
|
4
4
|
import { r as timingSafeEqual } from "../crypto-token-TVbGGFuj.mjs";
|
|
5
|
-
import { t as diagnostics } from "../diagnostics-
|
|
6
|
-
import { t as createHostContext } from "../context-
|
|
5
|
+
import { t as diagnostics } from "../diagnostics-DZA6KQ_Z.mjs";
|
|
6
|
+
import { t as createHostContext } from "../context-Bq27SDK-.mjs";
|
|
7
7
|
import { t as toAgentToolName } from "../agent-tool-name-DGzeuWcO.mjs";
|
|
8
|
-
import process from "node:process";
|
|
9
8
|
import { join } from "pathe";
|
|
9
|
+
import process from "node:process";
|
|
10
10
|
import { homedir } from "node:os";
|
|
11
11
|
import { defineHandler } from "h3";
|
|
12
12
|
import { Server, createMcpHandler } from "@modelcontextprotocol/server";
|
package/dist/cli/main.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as Diagnostic } from "../nostics-D0PvLZsn.mjs";
|
|
2
|
-
import { t as diagnostics } from "../diagnostics-
|
|
3
|
-
import { n as listLiveDevframeInstances, r as probeDevframeOrigin } from "../instance-registry-
|
|
2
|
+
import { t as diagnostics } from "../diagnostics-DZA6KQ_Z.mjs";
|
|
3
|
+
import { n as listLiveDevframeInstances, r as probeDevframeOrigin } from "../instance-registry-DCq762YJ.mjs";
|
|
4
4
|
import { t as toAgentToolName } from "../agent-tool-name-DGzeuWcO.mjs";
|
|
5
5
|
import process from "node:process";
|
|
6
6
|
import { joinURL } from "ufo";
|
package/dist/client/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { f as RpcCacheManager, p as RpcCacheOptions } from "../index-pIVt92jP.mjs";
|
|
2
2
|
import { _ as RpcFunctionDefinition, w as RpcFunctionsCollector } from "../types-Dq4i156u.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { Q as DevframeServiceMeta, Vt as EventEmitter, b as StreamSink, ct as DevframeSettings, d as RpcSharedStateHost, et as DevframeServiceScopeOf, gt as SettingsForNamespace, ht as ScopedSharedStates, it as DevframeServicesState, k as SharedState, mt as ScopedServerFunctions, pt as ScopedRpcFn, t as ConnectionMeta, u as RpcSharedStateGetOptions, vt as DevframeRpcClientFunctions, y as StreamReader, yt as DevframeRpcServerFunctions } from "../context-BBWPLDHh.mjs";
|
|
4
4
|
import { t as SseRpcChannelOptions } from "../sse-client-BQ4jS3eO.mjs";
|
|
5
5
|
import { t as WsRpcChannelOptions } from "../ws-client-Xpxt0oPA.mjs";
|
|
6
6
|
import { BirpcOptions, BirpcReturn } from "birpc";
|
package/dist/client/index.mjs
CHANGED
|
@@ -533,9 +533,15 @@ async function setupDevframeConnection(options = {}) {
|
|
|
533
533
|
const response = await fetch(metaPath);
|
|
534
534
|
if (!response.ok) throw new Error(`Failed to fetch connection meta from ${metaUrl}: ${response.status}`);
|
|
535
535
|
const connectionMeta = await response.json();
|
|
536
|
+
const loadedFrom = response.url || metaUrl;
|
|
536
537
|
const connection = {
|
|
537
538
|
connectionMeta,
|
|
538
|
-
|
|
539
|
+
/**
|
|
540
|
+
* A served `baseUrl` re-points relative resolution (RPC dump shards,
|
|
541
|
+
* transport paths) at the meta that owns them: a static hub build's
|
|
542
|
+
* per-frame meta directs each frame SPA at the hub's own dump.
|
|
543
|
+
*/
|
|
544
|
+
metaBaseUrl: connectionMeta.baseUrl ? new URL(connectionMeta.baseUrl, loadedFrom).href : loadedFrom,
|
|
539
545
|
authToken: readStoredAuthToken(options.authToken ?? connectionMeta.authToken)
|
|
540
546
|
};
|
|
541
547
|
storeConnection(connection);
|
|
@@ -261,6 +261,13 @@ interface DevframeAgentHost {
|
|
|
261
261
|
* tools/resources registered on the host.
|
|
262
262
|
*/
|
|
263
263
|
list: () => AgentManifest;
|
|
264
|
+
/**
|
|
265
|
+
* Whether the devframe exposes anything to agents: an `agent`-flagged RPC
|
|
266
|
+
* function, a registered tool or resource, or a provider currently
|
|
267
|
+
* yielding at least one tool. The `mcp: 'auto'` default consults this to
|
|
268
|
+
* decide whether a route is worth mounting.
|
|
269
|
+
*/
|
|
270
|
+
hasSurface: () => boolean;
|
|
264
271
|
/**
|
|
265
272
|
* Invoke any tool by id. Routes to the underlying RPC handler for
|
|
266
273
|
* `kind === 'rpc'`, or to the registered handler for `kind === 'tool'`.
|
|
@@ -677,11 +684,17 @@ interface DevframeRpcSharedStates {
|
|
|
677
684
|
//#region src/types/views.d.ts
|
|
678
685
|
interface DevframeViewHost {
|
|
679
686
|
/**
|
|
687
|
+
* Static mounts registered through {@link DevframeViewHost.hostStatic}, each
|
|
688
|
+
* carrying the `resolveFrom` base it was mounted with so a build step that
|
|
689
|
+
* copies these itself (rather than serving them live) re-resolves a remote
|
|
690
|
+
* source to the same locally-installed copy it would serve live.
|
|
691
|
+
*
|
|
680
692
|
* @internal
|
|
681
693
|
*/
|
|
682
694
|
buildStaticDirs: {
|
|
683
695
|
baseUrl: string;
|
|
684
696
|
source: StaticAssetsSource;
|
|
697
|
+
resolveFrom?: string | null;
|
|
685
698
|
}[];
|
|
686
699
|
/**
|
|
687
700
|
* Helper to host static files
|
|
@@ -1169,9 +1182,27 @@ interface DevframeSseOptions {
|
|
|
1169
1182
|
* - `false`, the default: **origin-only**, trusting same-machine callers.
|
|
1170
1183
|
*/
|
|
1171
1184
|
type McpAuthorization = string | ((request: Request) => boolean | Promise<boolean>) | false;
|
|
1185
|
+
/**
|
|
1186
|
+
* The route-based MCP setting accepted everywhere a host mounts a devframe
|
|
1187
|
+
* (`cli.mcp`, `initDevframe` / `initHub` / `createDevServer` options, the
|
|
1188
|
+
* framework kits):
|
|
1189
|
+
*
|
|
1190
|
+
* - `'auto'`, the default: mount the route when the devframe exposes an
|
|
1191
|
+
* agent surface (an `agent`-flagged RPC function, or a tool / resource /
|
|
1192
|
+
* provider registered on `ctx.agent`). An empty agent surface mounts
|
|
1193
|
+
* nothing and loads no MCP code.
|
|
1194
|
+
* - `true`: always mount at the default `__mcp` route.
|
|
1195
|
+
* - `false`: never mount.
|
|
1196
|
+
* - {@link McpRouteOptions}: always mount, with a custom route path, origin
|
|
1197
|
+
* allow-list, or {@link McpAuthorization} identity check.
|
|
1198
|
+
*
|
|
1199
|
+
* A mounted route trusts same-machine callers by default (the loopback
|
|
1200
|
+
* origin gate), exactly like `mcp: true`.
|
|
1201
|
+
*/
|
|
1202
|
+
type McpSetting = boolean | 'auto' | McpRouteOptions;
|
|
1172
1203
|
/**
|
|
1173
1204
|
* Configuration for the route-based MCP server mounted alongside the dev
|
|
1174
|
-
* server (
|
|
1205
|
+
* server (via {@link DevframeCliOptions.mcp}). The endpoint speaks
|
|
1175
1206
|
* the MCP Streamable-HTTP transport over the same origin as the SPA,
|
|
1176
1207
|
* exposing the definition's `ctx.agent` tools + shared-state resources to
|
|
1177
1208
|
* external MCP clients connected to the *running* server.
|
|
@@ -1253,11 +1284,11 @@ interface DevframeCliOptions {
|
|
|
1253
1284
|
* base path). It surfaces the same `ctx.agent` tools + shared-state
|
|
1254
1285
|
* resources as the stdio `mcp` command, but against the live server.
|
|
1255
1286
|
*
|
|
1256
|
-
*
|
|
1257
|
-
*
|
|
1258
|
-
*
|
|
1259
|
-
*
|
|
1260
|
-
*
|
|
1287
|
+
* Defaults to `'auto'`: the route mounts once the devframe exposes an
|
|
1288
|
+
* agent surface (an `agent`-flagged RPC, a registered tool / resource).
|
|
1289
|
+
* See {@link McpSetting} for the full contract, and
|
|
1290
|
+
* {@link McpRouteOptions} for the route path, origin allow-list, and
|
|
1291
|
+
* {@link McpAuthorization} identity check.
|
|
1261
1292
|
*
|
|
1262
1293
|
* The `--mcp` / `--no-mcp` CLI flags override this per run. Whether to expose
|
|
1263
1294
|
* MCP is a hosting decision, so programmatic hosts pass it to
|
|
@@ -1268,7 +1299,7 @@ interface DevframeCliOptions {
|
|
|
1268
1299
|
* This field is still read as a fallback, and will be removed in a future
|
|
1269
1300
|
* release.
|
|
1270
1301
|
*/
|
|
1271
|
-
mcp?:
|
|
1302
|
+
mcp?: McpSetting;
|
|
1272
1303
|
/**
|
|
1273
1304
|
* Author's SPA dist, served as the devframe's UI.
|
|
1274
1305
|
*
|
|
@@ -1461,10 +1492,11 @@ interface DevframeDefinition {
|
|
|
1461
1492
|
* act on a `false` before doing any work:
|
|
1462
1493
|
*
|
|
1463
1494
|
* - `build: false`: `createCac` skips registering the `build` subcommand,
|
|
1464
|
-
*
|
|
1465
|
-
*
|
|
1466
|
-
*
|
|
1467
|
-
*
|
|
1495
|
+
* `createBuild` refuses (throws `DF0042`) unless `{ force: true }`, and
|
|
1496
|
+
* a hub static build (`buildHub`) silently skips the devframe - no dock,
|
|
1497
|
+
* no SPA copy, no RPCs in the dump. Useful for a devframe whose value is
|
|
1498
|
+
* inherently live (e.g. it manages real files on disk), so a static
|
|
1499
|
+
* export would only ever produce a broken, write-less shell of the tool.
|
|
1468
1500
|
* - `dev: false`: `createDevServer` refuses (throws `DF0058`) unless
|
|
1469
1501
|
* `{ force: true }`. Useful for a devframe that only makes sense as a
|
|
1470
1502
|
* static export (e.g. a report generator with nothing to serve live).
|
|
@@ -2060,12 +2092,19 @@ interface ConnectionMeta {
|
|
|
2060
2092
|
*/
|
|
2061
2093
|
jsonSerializableMethods?: string[];
|
|
2062
2094
|
/**
|
|
2063
|
-
*
|
|
2064
|
-
*
|
|
2065
|
-
*
|
|
2066
|
-
*
|
|
2067
|
-
*
|
|
2068
|
-
*
|
|
2095
|
+
* URL of the `__connection.json` that owns this meta's relative paths.
|
|
2096
|
+
* Two producers write it:
|
|
2097
|
+
*
|
|
2098
|
+
* - The client annotates it (absolute) when it publishes the meta on a
|
|
2099
|
+
* shared window for same-origin inheritance: a relative
|
|
2100
|
+
* `websocket.path` resolves against this, so a child SPA mounted at
|
|
2101
|
+
* another base (e.g. a hub mounting several devframes at `/__foo/`,
|
|
2102
|
+
* `/__bar/`, …) inherits a dialable endpoint rather than resolving the
|
|
2103
|
+
* path against its own mount.
|
|
2104
|
+
* - A static hub build serves it (base-absolute, e.g.
|
|
2105
|
+
* `/__devframes/__connection.json`) in each **per-frame** meta, so a
|
|
2106
|
+
* frame SPA that fetched its own copy still resolves the shared RPC
|
|
2107
|
+
* dump from the hub base. Resolved against the fetched URL.
|
|
2069
2108
|
*/
|
|
2070
2109
|
baseUrl?: string;
|
|
2071
2110
|
/**
|
|
@@ -2125,4 +2164,4 @@ interface ConnectionMeta {
|
|
|
2125
2164
|
*/
|
|
2126
2165
|
interface DevframeConnectionConfigsRegistry {}
|
|
2127
2166
|
//#endregion
|
|
2128
|
-
export {
|
|
2167
|
+
export { DevframeServiceOf as $, SharedStateEvents as A, AgentHandle as At, DevframeSetupInfo as B, DevframeAgentHostEvents as Bt, createStreamSink as C, DevframeDiagnosticsHost as Ct, ImmutableObject as D, InferCliFlags as Dt, ImmutableMap as E, CliFlagsSchema as Et, DevframeDefinition as F, AgentTool as Ft, McpAuthorization as G, DevframeSnapshotRpcInputs as H, EventUnsubscribe as Ht, DevframeDeploymentKind as I, AgentToolInput as It, DevframeServiceDefinition as J, McpRouteOptions as K, DevframeDockDefaults as L, AgentToolProvider as Lt, SharedStatePatch as M, AgentResource as Mt, createSharedState as N, AgentResourceContent as Nt, ImmutableSet as O, defineCliFlags as Ot, DevframeCliOptions as P, AgentResourceInput as Pt, DevframeServiceMeta as Q, DevframeDuplicationStrategy as R, AgentToolProviderHandle as Rt, createStreamReader as S, DevframeStorageScope as St, ImmutableArray as T, DevframeAuthHandler as Tt, DevframeSseOptions as U, EventsMap as Ut, DevframeSnapshotRpcEntry as V, EventEmitter as Vt, DevframeWsOptions as W, DevframeServiceId as X, DevframeServiceDescriptor as Y, DevframeServiceInput as Z, CreateStreamSinkOptions as _, DevframeViewHost as _t, DevframeConnectionConfigsRegistry as a, DevframeScopedNodeContext as at, StreamSink as b, DevframeRpcSharedStates as bt, RpcBroadcastOptions as c, DevframeSettings as ct, RpcSharedStateHost as d, ScopedBroadcastOptions as dt, DevframeServiceScopeOf as et, RpcStreamingChannel as f, ScopedClientFunctions as ft, CreateStreamReaderOptions as g, SettingsForNamespace as gt, BufferedChunk as h, ScopedSharedStates as ht, DevframeCapabilities as i, DevframeServicesState as it, SharedStateOptions as j, AgentManifest as jt, SharedState as k, parseCliFlags as kt, RpcFunctionsHost as l, DevframeSettingsRegistry as lt, RpcStreamingHost as m, ScopedServerFunctions as mt, ConnectionMetaSse as n, DevframeServicesRegistry as nt, DevframeNodeContext as o, DevframeScopedNodeRpc as ot, RpcStreamingChannelOptions as p, ScopedRpcFn as pt, McpSetting as q, ConnectionMetaWebsocket as r, DevframeServicesScopeRegistry as rt, DevframeNodeRpcSession as s, DevframeScopedStreamingHost as st, ConnectionMeta as t, DevframeServicesHost as tt, RpcSharedStateGetOptions as u, DevframeSettingsStore as ut, StreamErrorPayload as v, DevframeRpcClientFunctions as vt, Immutable as w, DevframeDiagnosticsLogger as wt, StreamSinkEvents as x, DevframeHost as xt, StreamReader as y, DevframeRpcServerFunctions as yt, DevframeRpcOptions as z, DevframeAgentHost as zt };
|