devframe 1.2.6 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{_shared-B6K2DKhb.mjs → _shared-C06DH07o.mjs} +3 -1
- package/dist/{_shared-BvDsc83f.d.mts → _shared-DbO-OtUC.d.mts} +6 -2
- package/dist/adapters/build.d.mts +1 -1
- package/dist/adapters/build.mjs +3 -3
- package/dist/adapters/cac.d.mts +1 -1
- package/dist/adapters/cac.mjs +4 -7
- package/dist/adapters/dev.d.mts +10 -4
- package/dist/adapters/dev.mjs +2 -2
- package/dist/adapters/embedded.d.mts +1 -1
- package/dist/adapters/initiate.d.mts +2 -2
- package/dist/adapters/initiate.mjs +1 -1
- package/dist/adapters/mcp.d.mts +3 -3
- package/dist/{agentic-JXlb0uiD.d.mts → agentic-D6HePbWg.d.mts} +1 -1
- package/dist/{browser-agent-rpc-BXhoSh1z.mjs → browser-agent-rpc-KH4HHvHf.mjs} +24 -2
- package/dist/cli/main.mjs +1 -1
- package/dist/client/index.d.mts +1 -1
- package/dist/client/index.mjs +2 -2
- package/dist/{host-agent-DB1yECaG.mjs → client-agent-DuLhUF6d.mjs} +148 -2
- package/dist/{context-B-2gsJ6Z.mjs → context-BY72d2gV.mjs} +1 -1
- package/dist/{context-CeD8-IZA.mjs → context-CmSDJAEI.mjs} +6 -46
- package/dist/{context-dOWXVHc6.d.mts → context-Dko5QFWF.d.mts} +209 -117
- package/dist/{context-O8NJzl93.d.mts → context-eIUOSrKu.d.mts} +1 -1
- package/dist/{dev-pIWWAGYd.mjs → dev-C-wQTIrV.mjs} +42 -23
- package/dist/{diagnostics-Dngy7cNp.mjs → diagnostics-BJjvKfVK.mjs} +8 -0
- package/dist/in-page-channel/index.d.mts +1 -1
- package/dist/in-page-channel/index.mjs +1 -1
- package/dist/{index-DVGcpYm7.d.mts → index-BMj-o_sP.d.mts} +2 -2
- package/dist/index.d.mts +3 -3
- package/dist/{instance-registry-B--XFmLS.mjs → instance-registry-vlz81P9X.mjs} +1 -1
- package/dist/{instance-shell-DyVmJA6B.mjs → instance-shell-CBgy8YzK.mjs} +56 -15
- package/dist/{instance-shell-DrvOWxqh.d.mts → instance-shell-yfm1AYk8.d.mts} +2 -2
- package/dist/{interactive-auth-CCZdQDy_.mjs → interactive-auth-BsqLFXw8.mjs} +1 -1
- package/dist/internal/index.d.mts +33 -7
- package/dist/internal/index.mjs +7 -7
- package/dist/{mcp-content-9_Pdtziq.d.mts → mcp-content-wcQxvrrW.d.mts} +1 -1
- package/dist/node/auth.d.mts +2 -2
- 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/interactive-auth.d.mts +2 -2
- package/dist/recipes/interactive-auth.mjs +1 -1
- package/dist/{remote-assets-DoZ1AMpq.mjs → remote-assets-DOva7l3s.mjs} +1 -1
- package/dist/rpc/transports/ws-bun.d.mts +1 -1
- package/dist/rpc/transports/ws-deno.d.mts +1 -1
- package/dist/{rpc-core-D6NWQW-B.d.mts → rpc-core-BQ1mesqZ.d.mts} +2 -2
- package/dist/{rpc-core-Dl50hXG3.mjs → rpc-core-oXIq2hjO.mjs} +1 -1
- package/dist/{shared-state-Cow3u-_m.mjs → shared-state-Cc-Jrhma.mjs} +5 -2
- package/dist/{storage-BQy9865B.mjs → storage-BzAr-S6I.mjs} +1 -1
- 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/shared-state.d.mts +1 -1
- package/dist/utils/shared-state.mjs +1 -1
- package/dist/utils/streaming-channel.d.mts +1 -1
- package/package.json +8 -8
|
@@ -373,6 +373,187 @@ interface DevframeAuthHandler {
|
|
|
373
373
|
buildOpenUrl?: (url: string) => string;
|
|
374
374
|
}
|
|
375
375
|
//#endregion
|
|
376
|
+
//#region src/types/mcp.d.ts
|
|
377
|
+
/**
|
|
378
|
+
* The MCP adapter surface, typed here so `devframe` (which probes for and
|
|
379
|
+
* lazily loads `@devframes/agentic`) and `@devframes/agentic/mcp` (which
|
|
380
|
+
* implements it) share one contract without a type-level dependency cycle.
|
|
381
|
+
* None of these shapes reference the MCP SDK: the SDK is an implementation
|
|
382
|
+
* detail of `@devframes/agentic`, freely swappable behind this surface.
|
|
383
|
+
* The h3-bound `mountMcpHttp` shapes live in `node/agentic.ts` (exported via
|
|
384
|
+
* `devframe/internal`) instead: `devframe/types` must stay lib-neutral, and
|
|
385
|
+
* h3's declarations are not.
|
|
386
|
+
*/
|
|
387
|
+
interface CreateMcpServerOptions {
|
|
388
|
+
/**
|
|
389
|
+
* Transport to use. `createMcpServer` itself runs `'stdio'` (a standalone
|
|
390
|
+
* process with its own host context); the Streamable-HTTP transport is
|
|
391
|
+
* served route-based by the dev server instead; see `mountMcpHttp` and
|
|
392
|
+
* the `mcp` option on `createDevServer` / `createCac`'s `--mcp` flag.
|
|
393
|
+
*/
|
|
394
|
+
transport?: 'stdio';
|
|
395
|
+
/**
|
|
396
|
+
* Expose shared-state keys as MCP resources.
|
|
397
|
+
* - `true` (default): every key the host publishes
|
|
398
|
+
* - `false`: none
|
|
399
|
+
* - `(key) => boolean`: filter
|
|
400
|
+
*/
|
|
401
|
+
exposeSharedState?: boolean | ((key: string) => boolean);
|
|
402
|
+
/**
|
|
403
|
+
* Usage guidance sent as `instructions` in the MCP `initialize` (and
|
|
404
|
+
* `server/discover`) result. Omitted or empty sends no instructions.
|
|
405
|
+
*/
|
|
406
|
+
instructions?: string;
|
|
407
|
+
/**
|
|
408
|
+
* Resource templates served through `resources/templates/list`, and read
|
|
409
|
+
* through `resources/read`. Omitted or empty keeps the resources unchanged.
|
|
410
|
+
*/
|
|
411
|
+
resourceTemplates?: McpResourceTemplate[];
|
|
412
|
+
/**
|
|
413
|
+
* Host subscription for resource-list changes; each `notify()` sends
|
|
414
|
+
* `notifications/resources/list_changed`. See {@link McpResourcesChangedHook}.
|
|
415
|
+
*/
|
|
416
|
+
onResourcesChanged?: McpResourcesChangedHook;
|
|
417
|
+
/** Override the name reported in the MCP handshake. */
|
|
418
|
+
serverName?: string;
|
|
419
|
+
/** Override the version reported in the MCP handshake. Defaults to `definition.version ?? '0.0.0'`. */
|
|
420
|
+
serverVersion?: string;
|
|
421
|
+
/** Called once the transport is connected. */
|
|
422
|
+
onReady?: (info: {
|
|
423
|
+
transport: 'stdio';
|
|
424
|
+
}) => void;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* One MCP content block in a tool result. Attach blocks to a tool's return
|
|
428
|
+
* value with `withMcpContent` (from `devframe`) to send them in place of the
|
|
429
|
+
* default JSON text block. `data` is base64.
|
|
430
|
+
*/
|
|
431
|
+
type McpContentBlock = {
|
|
432
|
+
type: 'text';
|
|
433
|
+
text: string;
|
|
434
|
+
} | {
|
|
435
|
+
type: 'image';
|
|
436
|
+
data: string;
|
|
437
|
+
mimeType: string;
|
|
438
|
+
} | {
|
|
439
|
+
type: 'audio';
|
|
440
|
+
data: string;
|
|
441
|
+
mimeType: string;
|
|
442
|
+
};
|
|
443
|
+
interface McpServerHandle {
|
|
444
|
+
stop: () => Promise<void>;
|
|
445
|
+
}
|
|
446
|
+
interface CreateMcpFetchHandlerOptions {
|
|
447
|
+
/** Name reported in the MCP handshake. */
|
|
448
|
+
serverName: string;
|
|
449
|
+
/** Version reported in the MCP handshake. */
|
|
450
|
+
serverVersion: string;
|
|
451
|
+
/** Expose shared-state keys as MCP resources; see {@link CreateMcpServerOptions.exposeSharedState}. */
|
|
452
|
+
exposeSharedState: boolean | ((key: string) => boolean);
|
|
453
|
+
/** Usage guidance for the handshake; see {@link CreateMcpServerOptions.instructions}. */
|
|
454
|
+
instructions?: string;
|
|
455
|
+
/** Resource templates; see {@link CreateMcpServerOptions.resourceTemplates}. */
|
|
456
|
+
resourceTemplates?: McpResourceTemplate[];
|
|
457
|
+
/** Host subscription for resource-list changes; see {@link CreateMcpServerOptions.onResourcesChanged}. */
|
|
458
|
+
onResourcesChanged?: McpResourcesChangedHook;
|
|
459
|
+
/**
|
|
460
|
+
* Optional identity check, layered on top of the origin gate and checked
|
|
461
|
+
* **after** it: a bearer token string (matched in constant time against
|
|
462
|
+
* `Authorization: Bearer <token>`), a `(request) => boolean` callback, or
|
|
463
|
+
* `false` (the default) for origin-only, trusting same-machine callers. A
|
|
464
|
+
* callback governs identity only and cannot relax the origin gate. See
|
|
465
|
+
* {@link McpAuthorization}.
|
|
466
|
+
*/
|
|
467
|
+
authorization?: McpAuthorization;
|
|
468
|
+
/**
|
|
469
|
+
* Origin allow-list beyond the loopback default. `false` disables the
|
|
470
|
+
* origin gate entirely. Default: loopback-only.
|
|
471
|
+
*
|
|
472
|
+
* Unlike the WS transport, the MCP route does **not** allow `Origin`-less
|
|
473
|
+
* requests: a route-based endpoint is reachable by any local process, so a
|
|
474
|
+
* request must carry an `Origin` that passes the gate. Native clients
|
|
475
|
+
* (e.g. `devframe connect`) send their loopback origin explicitly.
|
|
476
|
+
*/
|
|
477
|
+
allowedOrigins?: readonly string[] | false;
|
|
478
|
+
}
|
|
479
|
+
/** Connection facts a host knows about a request beyond the `Request` itself. */
|
|
480
|
+
interface McpConnectionInfo {
|
|
481
|
+
/**
|
|
482
|
+
* The connecting peer's remote address (a node socket's `remoteAddress`),
|
|
483
|
+
* used to prove a same-machine caller when the endpoint relies on the
|
|
484
|
+
* loopback origin default with no identity check. A host that can resolve a
|
|
485
|
+
* trustworthy peer address (the h3/node mount) supplies it; when it's
|
|
486
|
+
* omitted the origin gate stays the only locality signal.
|
|
487
|
+
*/
|
|
488
|
+
remoteAddress?: string;
|
|
489
|
+
}
|
|
490
|
+
interface McpFetchHandler {
|
|
491
|
+
/**
|
|
492
|
+
* WHATWG-`fetch` handler for the MCP endpoint. Hand every method
|
|
493
|
+
* (POST/GET/DELETE) on the endpoint's path to it; routing by path is the
|
|
494
|
+
* host's job. Pass {@link McpConnectionInfo} when the host can resolve the
|
|
495
|
+
* peer address so the default trust boundary can enforce same-machine
|
|
496
|
+
* locality.
|
|
497
|
+
*/
|
|
498
|
+
fetch: (request: Request, connection?: McpConnectionInfo) => Promise<Response>;
|
|
499
|
+
/** Tear down the handler (aborts in-flight exchanges, drops the change bridge). */
|
|
500
|
+
dispose: () => Promise<void>;
|
|
501
|
+
}
|
|
502
|
+
/** One concrete resource that an {@link McpResourceTemplate} lists in `resources/list`. */
|
|
503
|
+
interface McpResourceTemplateEntry {
|
|
504
|
+
/** The resource URI. It SHOULD match the `uriTemplate` of its template, so `resources/read` finds it. */
|
|
505
|
+
uri: string;
|
|
506
|
+
name: string;
|
|
507
|
+
/** Human-readable name for display. */
|
|
508
|
+
title?: string;
|
|
509
|
+
description?: string;
|
|
510
|
+
/** Defaults to the `mimeType` of the template. */
|
|
511
|
+
mimeType?: string;
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* What an {@link McpResourceTemplate} returns from `read`, sent as the
|
|
515
|
+
* `resources/read` result: `text` as is, or else `json` as JSON text.
|
|
516
|
+
*/
|
|
517
|
+
interface McpResourceTemplateContent {
|
|
518
|
+
text?: string;
|
|
519
|
+
json?: unknown;
|
|
520
|
+
/** Defaults to the `mimeType` of the template, then `application/json`. */
|
|
521
|
+
mimeType?: string;
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* A resource template the MCP server lists in `resources/templates/list` and
|
|
525
|
+
* reads in `resources/read`. The `uriTemplate` uses RFC 6570 level 1 only:
|
|
526
|
+
* plain `{name}` expressions, with text between any two of them. Each
|
|
527
|
+
* expression matches a non-empty value with no `/`, and its value is
|
|
528
|
+
* percent-decoded.
|
|
529
|
+
*
|
|
530
|
+
* `list` and `read` get the node context of the devframe (or of the hub), so
|
|
531
|
+
* they can read live state such as `ctx.rpc.sharedState` or `ctx.agent`. The
|
|
532
|
+
* route options are resolved before `setup()` runs, so a template cannot
|
|
533
|
+
* capture that context in a closure.
|
|
534
|
+
*/
|
|
535
|
+
interface McpResourceTemplate {
|
|
536
|
+
/** RFC 6570 level 1 URI template, e.g. `my-tool://file/{path}`. Anything else throws `DF0084`. */
|
|
537
|
+
uriTemplate: string;
|
|
538
|
+
name: string;
|
|
539
|
+
/** Human-readable name for display. */
|
|
540
|
+
title?: string;
|
|
541
|
+
description?: string;
|
|
542
|
+
/** MIME type of every resource the template stands for. */
|
|
543
|
+
mimeType?: string;
|
|
544
|
+
/** The concrete resources the template stands for right now. They are added to `resources/list`. */
|
|
545
|
+
list?: (ctx: DevframeNodeContext) => McpResourceTemplateEntry[] | Promise<McpResourceTemplateEntry[]>;
|
|
546
|
+
/** Read one resource: `params` holds the decoded value of each `{name}`, `uri` the requested URI. */
|
|
547
|
+
read: (params: Record<string, string>, uri: string, ctx: DevframeNodeContext) => McpResourceTemplateContent | Promise<McpResourceTemplateContent>;
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* A host subscription for resource-list changes. Call `notify()` each time
|
|
551
|
+
* the resources change; the MCP server then sends
|
|
552
|
+
* `notifications/resources/list_changed`. Return a function that removes the
|
|
553
|
+
* subscription; the MCP server calls it on teardown.
|
|
554
|
+
*/
|
|
555
|
+
type McpResourcesChangedHook = (notify: () => void, ctx: DevframeNodeContext) => () => void;
|
|
556
|
+
//#endregion
|
|
376
557
|
//#region src/types/diagnostics.d.ts
|
|
377
558
|
/**
|
|
378
559
|
* The shared diagnostics lookup exposed by the host. A `Proxy` that resolves
|
|
@@ -509,6 +690,13 @@ interface BrowserAgentToolManifest {
|
|
|
509
690
|
tags?: readonly string[];
|
|
510
691
|
inputSchema?: unknown;
|
|
511
692
|
}
|
|
693
|
+
/** What a connected document reports about itself alongside its tool manifest. */
|
|
694
|
+
interface BrowserAgentClientInfo {
|
|
695
|
+
url: string;
|
|
696
|
+
title: string;
|
|
697
|
+
visible: boolean;
|
|
698
|
+
focused: boolean;
|
|
699
|
+
}
|
|
512
700
|
//#endregion
|
|
513
701
|
//#region src/types/rpc-augments.d.ts
|
|
514
702
|
/**
|
|
@@ -573,7 +761,7 @@ interface DevframeRpcServerFunctions {
|
|
|
573
761
|
/** Methods eligible for automatic client caching. @internal */
|
|
574
762
|
'devframe:rpc:cacheable-functions': () => Promise<string[]>;
|
|
575
763
|
/** Replace this connection's browser-agent tool manifest, tagged with the calling tab's stable client id. @internal */
|
|
576
|
-
'devframe:agent:sync-client-tools': (clientId: string, tools: BrowserAgentToolManifest[]) => Promise<void>;
|
|
764
|
+
'devframe:agent:sync-client-tools': (clientId: string, tools: BrowserAgentToolManifest[], info: BrowserAgentClientInfo) => Promise<void>;
|
|
577
765
|
/**
|
|
578
766
|
* Authenticate a connection with a previously-issued bearer token; resolves
|
|
579
767
|
* whether the connection is now trusted. The interactive handler is provided
|
|
@@ -809,8 +997,8 @@ interface DevframeSettingsStore<T extends Record<string, any> = Record<string, a
|
|
|
809
997
|
/**
|
|
810
998
|
* The two settings scopes available on a scoped context.
|
|
811
999
|
*
|
|
812
|
-
* - `project`: per-
|
|
813
|
-
* `
|
|
1000
|
+
* - `project`: per-checkout state, persisted under the
|
|
1001
|
+
* `project` storage dir. Project-local settings.
|
|
814
1002
|
* - `global`: per-user state, persisted under the host's `global`
|
|
815
1003
|
* storage dir. Machine-wide preferences.
|
|
816
1004
|
*/
|
|
@@ -1296,6 +1484,23 @@ interface McpRouteOptions {
|
|
|
1296
1484
|
* Omitted or empty sends no instructions.
|
|
1297
1485
|
*/
|
|
1298
1486
|
instructions?: string;
|
|
1487
|
+
/**
|
|
1488
|
+
* Resource templates the route serves through MCP
|
|
1489
|
+
* `resources/templates/list`. `resources/read` tries them after the
|
|
1490
|
+
* registered resources and the shared-state resources (a
|
|
1491
|
+
* `devframe://resource/` or `devframe://state/` URI never reaches them);
|
|
1492
|
+
* the first template whose `uriTemplate` matches the URI reads it. `resources/list` adds the
|
|
1493
|
+
* entries each template's `list` returns. Omitted or empty keeps the
|
|
1494
|
+
* resources unchanged.
|
|
1495
|
+
*/
|
|
1496
|
+
resourceTemplates?: McpResourceTemplate[];
|
|
1497
|
+
/**
|
|
1498
|
+
* Host subscription for resource-list changes. Call `notify()` each time
|
|
1499
|
+
* the resources change (for example, the entries of a resource template);
|
|
1500
|
+
* the route then sends `notifications/resources/list_changed`. Return a
|
|
1501
|
+
* function that removes the subscription; the route calls it on teardown.
|
|
1502
|
+
*/
|
|
1503
|
+
onResourcesChanged?: McpResourcesChangedHook;
|
|
1299
1504
|
}
|
|
1300
1505
|
interface DevframeCliOptions {
|
|
1301
1506
|
/** Binary name; default: the devframe's `id`. */
|
|
@@ -1597,119 +1802,6 @@ type DevframeSnapshotRpcEntry = string | {
|
|
|
1597
1802
|
inputs: DevframeSnapshotRpcInputs;
|
|
1598
1803
|
};
|
|
1599
1804
|
//#endregion
|
|
1600
|
-
//#region src/types/mcp.d.ts
|
|
1601
|
-
/**
|
|
1602
|
-
* The MCP adapter surface, typed here so `devframe` (which probes for and
|
|
1603
|
-
* lazily loads `@devframes/agentic`) and `@devframes/agentic/mcp` (which
|
|
1604
|
-
* implements it) share one contract without a type-level dependency cycle.
|
|
1605
|
-
* None of these shapes reference the MCP SDK: the SDK is an implementation
|
|
1606
|
-
* detail of `@devframes/agentic`, freely swappable behind this surface.
|
|
1607
|
-
* The h3-bound `mountMcpHttp` shapes live in `node/agentic.ts` (exported via
|
|
1608
|
-
* `devframe/internal`) instead: `devframe/types` must stay lib-neutral, and
|
|
1609
|
-
* h3's declarations are not.
|
|
1610
|
-
*/
|
|
1611
|
-
interface CreateMcpServerOptions {
|
|
1612
|
-
/**
|
|
1613
|
-
* Transport to use. `createMcpServer` itself runs `'stdio'` (a standalone
|
|
1614
|
-
* process with its own host context); the Streamable-HTTP transport is
|
|
1615
|
-
* served route-based by the dev server instead; see `mountMcpHttp` and
|
|
1616
|
-
* the `mcp` option on `createDevServer` / `createCac`'s `--mcp` flag.
|
|
1617
|
-
*/
|
|
1618
|
-
transport?: 'stdio';
|
|
1619
|
-
/**
|
|
1620
|
-
* Expose shared-state keys as MCP resources.
|
|
1621
|
-
* - `true` (default): every key the host publishes
|
|
1622
|
-
* - `false`: none
|
|
1623
|
-
* - `(key) => boolean`: filter
|
|
1624
|
-
*/
|
|
1625
|
-
exposeSharedState?: boolean | ((key: string) => boolean);
|
|
1626
|
-
/**
|
|
1627
|
-
* Usage guidance sent as `instructions` in the MCP `initialize` (and
|
|
1628
|
-
* `server/discover`) result. Omitted or empty sends no instructions.
|
|
1629
|
-
*/
|
|
1630
|
-
instructions?: string;
|
|
1631
|
-
/** Override the name reported in the MCP handshake. */
|
|
1632
|
-
serverName?: string;
|
|
1633
|
-
/** Override the version reported in the MCP handshake. Defaults to `definition.version ?? '0.0.0'`. */
|
|
1634
|
-
serverVersion?: string;
|
|
1635
|
-
/** Called once the transport is connected. */
|
|
1636
|
-
onReady?: (info: {
|
|
1637
|
-
transport: 'stdio';
|
|
1638
|
-
}) => void;
|
|
1639
|
-
}
|
|
1640
|
-
/**
|
|
1641
|
-
* One MCP content block in a tool result. Attach blocks to a tool's return
|
|
1642
|
-
* value with `withMcpContent` (from `devframe`) to send them in place of the
|
|
1643
|
-
* default JSON text block. `data` is base64.
|
|
1644
|
-
*/
|
|
1645
|
-
type McpContentBlock = {
|
|
1646
|
-
type: 'text';
|
|
1647
|
-
text: string;
|
|
1648
|
-
} | {
|
|
1649
|
-
type: 'image';
|
|
1650
|
-
data: string;
|
|
1651
|
-
mimeType: string;
|
|
1652
|
-
} | {
|
|
1653
|
-
type: 'audio';
|
|
1654
|
-
data: string;
|
|
1655
|
-
mimeType: string;
|
|
1656
|
-
};
|
|
1657
|
-
interface McpServerHandle {
|
|
1658
|
-
stop: () => Promise<void>;
|
|
1659
|
-
}
|
|
1660
|
-
interface CreateMcpFetchHandlerOptions {
|
|
1661
|
-
/** Name reported in the MCP handshake. */
|
|
1662
|
-
serverName: string;
|
|
1663
|
-
/** Version reported in the MCP handshake. */
|
|
1664
|
-
serverVersion: string;
|
|
1665
|
-
/** Expose shared-state keys as MCP resources; see {@link CreateMcpServerOptions.exposeSharedState}. */
|
|
1666
|
-
exposeSharedState: boolean | ((key: string) => boolean);
|
|
1667
|
-
/** Usage guidance for the handshake; see {@link CreateMcpServerOptions.instructions}. */
|
|
1668
|
-
instructions?: string;
|
|
1669
|
-
/**
|
|
1670
|
-
* Optional identity check, layered on top of the origin gate and checked
|
|
1671
|
-
* **after** it: a bearer token string (matched in constant time against
|
|
1672
|
-
* `Authorization: Bearer <token>`), a `(request) => boolean` callback, or
|
|
1673
|
-
* `false` (the default) for origin-only, trusting same-machine callers. A
|
|
1674
|
-
* callback governs identity only and cannot relax the origin gate. See
|
|
1675
|
-
* {@link McpAuthorization}.
|
|
1676
|
-
*/
|
|
1677
|
-
authorization?: McpAuthorization;
|
|
1678
|
-
/**
|
|
1679
|
-
* Origin allow-list beyond the loopback default. `false` disables the
|
|
1680
|
-
* origin gate entirely. Default: loopback-only.
|
|
1681
|
-
*
|
|
1682
|
-
* Unlike the WS transport, the MCP route does **not** allow `Origin`-less
|
|
1683
|
-
* requests: a route-based endpoint is reachable by any local process, so a
|
|
1684
|
-
* request must carry an `Origin` that passes the gate. Native clients
|
|
1685
|
-
* (e.g. `devframe connect`) send their loopback origin explicitly.
|
|
1686
|
-
*/
|
|
1687
|
-
allowedOrigins?: readonly string[] | false;
|
|
1688
|
-
}
|
|
1689
|
-
/** Connection facts a host knows about a request beyond the `Request` itself. */
|
|
1690
|
-
interface McpConnectionInfo {
|
|
1691
|
-
/**
|
|
1692
|
-
* The connecting peer's remote address (a node socket's `remoteAddress`),
|
|
1693
|
-
* used to prove a same-machine caller when the endpoint relies on the
|
|
1694
|
-
* loopback origin default with no identity check. A host that can resolve a
|
|
1695
|
-
* trustworthy peer address (the h3/node mount) supplies it; when it's
|
|
1696
|
-
* omitted the origin gate stays the only locality signal.
|
|
1697
|
-
*/
|
|
1698
|
-
remoteAddress?: string;
|
|
1699
|
-
}
|
|
1700
|
-
interface McpFetchHandler {
|
|
1701
|
-
/**
|
|
1702
|
-
* WHATWG-`fetch` handler for the MCP endpoint. Hand every method
|
|
1703
|
-
* (POST/GET/DELETE) on the endpoint's path to it; routing by path is the
|
|
1704
|
-
* host's job. Pass {@link McpConnectionInfo} when the host can resolve the
|
|
1705
|
-
* peer address so the default trust boundary can enforce same-machine
|
|
1706
|
-
* locality.
|
|
1707
|
-
*/
|
|
1708
|
-
fetch: (request: Request, connection?: McpConnectionInfo) => Promise<Response>;
|
|
1709
|
-
/** Tear down the handler (aborts in-flight exchanges, drops the change bridge). */
|
|
1710
|
-
dispose: () => Promise<void>;
|
|
1711
|
-
}
|
|
1712
|
-
//#endregion
|
|
1713
1805
|
//#region src/utils/shared-state.d.ts
|
|
1714
1806
|
type ImmutablePrimitive = undefined | null | boolean | string | number | Function;
|
|
1715
1807
|
type Immutable<T> = T extends ImmutablePrimitive ? T : T extends Array<infer U> ? ImmutableArray<U> : T extends Map<infer K, infer V> ? ImmutableMap<K, V> : T extends Set<infer M> ? ImmutableSet<M> : ImmutableObject<T>;
|
|
@@ -2311,4 +2403,4 @@ interface ConnectionMeta {
|
|
|
2311
2403
|
*/
|
|
2312
2404
|
interface DevframeConnectionConfigsRegistry {}
|
|
2313
2405
|
//#endregion
|
|
2314
|
-
export {
|
|
2406
|
+
export { DevframeServiceOf as $, EventUnsubscribe as $t, SharedStateEvents as A, McpFetchHandler as At, DevframeSetupInfo as B, parseCliFlags as Bt, createStreamSink as C, DevframeStorageScope as Ct, ImmutableObject as D, CreateMcpServerOptions as Dt, ImmutableMap as E, CreateMcpFetchHandlerOptions as Et, DevframeDefinition as F, McpServerHandle as Ft, McpAuthorization as G, AgentResourceInput as Gt, DevframeSnapshotRpcInputs as H, AgentManifest as Ht, DevframeDeploymentKind as I, DevframeAuthHandler as It, DevframeServiceDefinition as J, AgentToolProvider as Jt, McpRouteOptions as K, AgentTool as Kt, DevframeDockDefaults as L, CliFlagsSchema as Lt, SharedStatePatch as M, McpResourceTemplateContent as Mt, createSharedState as N, McpResourceTemplateEntry as Nt, ImmutableSet as O, McpConnectionInfo as Ot, DevframeCliOptions as P, McpResourcesChangedHook as Pt, DevframeServiceMeta as Q, EventEmitter as Qt, DevframeDuplicationStrategy as R, InferCliFlags as Rt, createStreamReader as S, DevframeHost as St, ImmutableArray as T, DevframeDiagnosticsLogger as Tt, DevframeSseOptions as U, AgentResource as Ut, DevframeSnapshotRpcEntry as V, AgentHandle as Vt, DevframeWsOptions as W, AgentResourceContent as Wt, DevframeServiceId as X, DevframeAgentHost as Xt, DevframeServiceDescriptor as Y, AgentToolProviderHandle as Yt, DevframeServiceInput as Z, DevframeAgentHostEvents as Zt, 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, EventsMap as en, 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, McpResourceTemplate as jt, SharedState as k, McpContentBlock 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, AgentToolInput as qt, 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, DevframeDiagnosticsHost as wt, StreamSinkEvents as x, BrowserAgentClientInfo as xt, StreamReader as y, DevframeRpcServerFunctions as yt, DevframeRpcOptions as z, defineCliFlags as zt };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { k as SharedState, o as DevframeNodeContext } from "./context-
|
|
1
|
+
import { k as SharedState, o as DevframeNodeContext } from "./context-Dko5QFWF.mjs";
|
|
2
2
|
//#region src/node/hub-internals/context.d.ts
|
|
3
3
|
interface InternalAnonymousAuthStorage {
|
|
4
4
|
trusted: Record<string, {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DEVFRAME_CONNECTION_META_FILENAME } from "./constants.mjs";
|
|
2
|
-
import { t as diagnostics } from "./diagnostics-
|
|
3
|
-
import { t as createHostContext } from "./context-
|
|
4
|
-
import { t as resolveStaticAssetsSource } from "./remote-assets-
|
|
5
|
-
import { a as resolveMcpConfig, c as joinURL, d as withoutLeadingSlash, i as resolveDevServerPort, l as withBase, n as normalizeBasePath, r as resolveBasePath, s as importAgenticMcp, t as loadAutoMcpAdapter } from "./_shared-
|
|
2
|
+
import { t as diagnostics } from "./diagnostics-BJjvKfVK.mjs";
|
|
3
|
+
import { t as createHostContext } from "./context-CmSDJAEI.mjs";
|
|
4
|
+
import { t as resolveStaticAssetsSource } from "./remote-assets-DOva7l3s.mjs";
|
|
5
|
+
import { a as resolveMcpConfig, c as joinURL, d as withoutLeadingSlash, i as resolveDevServerPort, l as withBase, n as normalizeBasePath, r as resolveBasePath, s as importAgenticMcp, t as loadAutoMcpAdapter } from "./_shared-C06DH07o.mjs";
|
|
6
6
|
import { t as createH3DevframeHost } from "./host-h3-BROI6SQ4.mjs";
|
|
7
|
-
import { i as normalizeHttpServerUrl, n as resolveInstanceRegister, t as createInstanceShell } from "./instance-shell-
|
|
7
|
+
import { a as isAddressInUse, i as normalizeHttpServerUrl, n as resolveInstanceRegister, o as listenWithLoopbackTwin, t as createInstanceShell } from "./instance-shell-CBgy8YzK.mjs";
|
|
8
8
|
import { open } from "./utils/open.mjs";
|
|
9
9
|
import { mountStaticHandler } from "./utils/serve-static.mjs";
|
|
10
10
|
import { resolve } from "pathe";
|
|
@@ -141,6 +141,8 @@ async function mountMcpRoute(app, context, def, base, setting) {
|
|
|
141
141
|
serverVersion: def.version ?? "0.0.0",
|
|
142
142
|
exposeSharedState: config.exposeSharedState ?? true,
|
|
143
143
|
instructions: config.instructions,
|
|
144
|
+
resourceTemplates: config.resourceTemplates,
|
|
145
|
+
onResourcesChanged: config.onResourcesChanged,
|
|
144
146
|
authorization: config.authorization,
|
|
145
147
|
allowedOrigins: config.allowedOrigins
|
|
146
148
|
});
|
|
@@ -172,28 +174,11 @@ async function mountMcpRoute(app, context, def, base, setting) {
|
|
|
172
174
|
async function createDevServer(def, options = {}) {
|
|
173
175
|
if (def.capabilities?.dev === false && !options.force) throw diagnostics.DF0058({ id: def.id });
|
|
174
176
|
const host = options.host ?? def.cli?.host ?? "localhost";
|
|
175
|
-
const requestedPort = options.port ?? await resolveDevServerPort(def, { host });
|
|
176
177
|
const flags = options.flags ?? {};
|
|
177
178
|
const basePath = options.basePath ? normalizeBasePath(options.basePath) : resolveBasePath(def, "standalone");
|
|
178
179
|
const app = options.app ?? new H3();
|
|
179
180
|
const server = createServer(toNodeHandler(app));
|
|
180
|
-
|
|
181
|
-
await new Promise((resolveListen, rejectListen) => {
|
|
182
|
-
const onError = (error) => rejectListen(error);
|
|
183
|
-
server.once("error", onError);
|
|
184
|
-
server.listen(requestedPort, host, () => {
|
|
185
|
-
server.removeListener("error", onError);
|
|
186
|
-
resolveListen();
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
} catch (error) {
|
|
190
|
-
throw diagnostics.DF0052({
|
|
191
|
-
host,
|
|
192
|
-
port: requestedPort,
|
|
193
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
194
|
-
cause: error
|
|
195
|
-
});
|
|
196
|
-
}
|
|
181
|
+
const { requestedPort, closeLoopbackTwin } = await listenDevServer(server, def, host, options);
|
|
197
182
|
const address = server.address();
|
|
198
183
|
const port = typeof address === "object" && address ? address.port : requestedPort;
|
|
199
184
|
const origin = normalizeHttpServerUrl(host, port);
|
|
@@ -231,6 +216,7 @@ async function createDevServer(def, options = {}) {
|
|
|
231
216
|
try {
|
|
232
217
|
await devframe.ready;
|
|
233
218
|
} catch (error) {
|
|
219
|
+
await closeLoopbackTwin();
|
|
234
220
|
await new Promise((resolveClose) => server.close(() => resolveClose()));
|
|
235
221
|
throw error;
|
|
236
222
|
}
|
|
@@ -251,10 +237,43 @@ async function createDevServer(def, options = {}) {
|
|
|
251
237
|
connectionMeta: transport.connectionMeta,
|
|
252
238
|
async close() {
|
|
253
239
|
await devframe.close();
|
|
240
|
+
await closeLoopbackTwin();
|
|
254
241
|
await new Promise((resolveClose) => server.close(() => resolveClose()));
|
|
255
242
|
}
|
|
256
243
|
};
|
|
257
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* Bind the dev server. `getPort` probes only `host`, so it can call a port
|
|
247
|
+
* free while another process holds it on the other loopback address of
|
|
248
|
+
* `localhost`. The twin bind catches that, and a port that was not pinned
|
|
249
|
+
* moves to the next free one.
|
|
250
|
+
*/
|
|
251
|
+
async function listenDevServer(server, def, host, options) {
|
|
252
|
+
let requestedPort = options.port ?? await resolveDevServerPort(def, {
|
|
253
|
+
host,
|
|
254
|
+
defaultPort: options.defaultPort
|
|
255
|
+
});
|
|
256
|
+
for (let attempt = 1;; attempt++) try {
|
|
257
|
+
return {
|
|
258
|
+
requestedPort,
|
|
259
|
+
closeLoopbackTwin: await listenWithLoopbackTwin(server, requestedPort, host)
|
|
260
|
+
};
|
|
261
|
+
} catch (error) {
|
|
262
|
+
if (options.port == null && attempt < 3 && isAddressInUse(error)) {
|
|
263
|
+
requestedPort = await resolveDevServerPort(def, {
|
|
264
|
+
host,
|
|
265
|
+
defaultPort: requestedPort + 1
|
|
266
|
+
});
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
throw diagnostics.DF0052({
|
|
270
|
+
host,
|
|
271
|
+
port: requestedPort,
|
|
272
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
273
|
+
cause: error
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
258
277
|
async function maybeOpenBrowser(def, flags, origin, override, authHandler) {
|
|
259
278
|
const flagsOpen = flags.open;
|
|
260
279
|
const cliOpen = def.cli?.open;
|
|
@@ -186,6 +186,14 @@ const diagnostics = defineDiagnostics({
|
|
|
186
186
|
DF0081: {
|
|
187
187
|
why: (p) => `Tool "${p.name}" returned invalid MCP content blocks: ${p.reason}`,
|
|
188
188
|
fix: "Pass `withMcpContent` a non-empty array of `{ type: 'text', text }`, `{ type: 'image', data, mimeType }` or `{ type: 'audio', data, mimeType }` blocks, with string fields and base64 `data`."
|
|
189
|
+
},
|
|
190
|
+
DF0082: {
|
|
191
|
+
why: (p) => `Tool "${p.tool}" was addressed to client "${p.clientId}", but no connected browser tab has that id and the tool.${p.live.length ? ` Connected clients: ${p.live.join(", ")}.` : " No browser tab is connected."}`,
|
|
192
|
+
fix: "Re-list the connected clients (`devframe:agent:list-clients`) and retry with a live `client_id`, or omit `client_id` to target the most recently focused tab."
|
|
193
|
+
},
|
|
194
|
+
DF0084: {
|
|
195
|
+
why: (p) => `MCP resource template "${p.name}" has an invalid \`uriTemplate\` "${p.uriTemplate}": ${p.reason}`,
|
|
196
|
+
fix: "Use RFC 6570 level 1 only: plain `{name}` expressions made of letters, digits, `_` and `.`, with no operator (`+`, `#`, `/`, `?`, …), modifier (`:n`, `*`) or list of names, and no `{` or `}` outside an expression."
|
|
189
197
|
}
|
|
190
198
|
}
|
|
191
199
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { D as InferArgsType, E as Thenable, O as InferReturnType, T as RpcReturnSchema, m as RpcFunctionAgentOptions, n as RpcArgsSchema } from "../types-BmDbfHCx.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { Qt as EventEmitter, k as SharedState } from "../context-Dko5QFWF.mjs";
|
|
3
3
|
//#region src/in-page-channel/types.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* The shared contract of one in-page channel, declared once (usually in a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as defineDiagnostics, i as createBirpc, n as argsToJsonSchema, o as DEVFRAME_EVENTS, r as resolveAgentSafety, t as toolInputToRpcArgs } from "../tool-input-CES3Pc4y.mjs";
|
|
2
2
|
import { createEventEmitter } from "../utils/events.mjs";
|
|
3
|
-
import { t as createSharedState } from "../shared-state-
|
|
3
|
+
import { t as createSharedState } from "../shared-state-Cc-Jrhma.mjs";
|
|
4
4
|
import { nanoid } from "../utils/nanoid.mjs";
|
|
5
5
|
import { r as registerBrowserAgentTool } from "../browser-agent-Pu-FLk6I.mjs";
|
|
6
6
|
//#region src/in-page-channel/diagnostics.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { k as SharedState, o as DevframeNodeContext, s as DevframeNodeRpcSession } from "./context-
|
|
2
|
-
import { n as InternalAnonymousAuthStorage } from "./context-
|
|
1
|
+
import { k as SharedState, o as DevframeNodeContext, s as DevframeNodeRpcSession } from "./context-Dko5QFWF.mjs";
|
|
2
|
+
import { n as InternalAnonymousAuthStorage } from "./context-eIUOSrKu.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,9 +1,9 @@
|
|
|
1
1
|
import { C as RpcFunctionType, T as RpcReturnSchema, h as RpcFunctionDefinition, m as RpcFunctionAgentOptions, n as RpcArgsSchema } from "./types-BmDbfHCx.mjs";
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as DevframeServiceOf, $t as EventUnsubscribe, At as McpFetchHandler, B as DevframeSetupInfo, Ct as DevframeStorageScope, Dt as CreateMcpServerOptions, Et as CreateMcpFetchHandlerOptions, F as DevframeDefinition, Ft as McpServerHandle, G as McpAuthorization, Gt as AgentResourceInput, H as DevframeSnapshotRpcInputs, Ht as AgentManifest, I as DevframeDeploymentKind, J as DevframeServiceDefinition, Jt as AgentToolProvider, K as McpRouteOptions, Kt as AgentTool, L as DevframeDockDefaults, Mt as McpResourceTemplateContent, Nt as McpResourceTemplateEntry, Ot as McpConnectionInfo, P as DevframeCliOptions, Pt as McpResourcesChangedHook, Q as DevframeServiceMeta, Qt as EventEmitter, R as DevframeDuplicationStrategy, St as DevframeHost, Tt as DevframeDiagnosticsLogger, U as DevframeSseOptions, Ut as AgentResource, V as DevframeSnapshotRpcEntry, Vt as AgentHandle, W as DevframeWsOptions, Wt as AgentResourceContent, X as DevframeServiceId, Xt as DevframeAgentHost, Y as DevframeServiceDescriptor, Yt as AgentToolProviderHandle, Z as DevframeServiceInput, Zt as DevframeAgentHostEvents, _t as DevframeViewHost, a as DevframeConnectionConfigsRegistry, at as DevframeScopedNodeContext, bt as DevframeRpcSharedStates, c as RpcBroadcastOptions, ct as DevframeSettings, d as RpcSharedStateHost, dt as ScopedBroadcastOptions, en as EventsMap, et as DevframeServiceScopeOf, f as RpcStreamingChannel, ft as ScopedClientFunctions, gt as SettingsForNamespace, ht as ScopedSharedStates, i as DevframeCapabilities, it as DevframeServicesState, jt as McpResourceTemplate, kt as McpContentBlock, l as RpcFunctionsHost, lt as DevframeSettingsRegistry, m as RpcStreamingHost, mt as ScopedServerFunctions, n as ConnectionMetaSse, nt as DevframeServicesRegistry, o as DevframeNodeContext, ot as DevframeScopedNodeRpc, p as RpcStreamingChannelOptions, pt as ScopedRpcFn, q as McpSetting, qt as AgentToolInput, r as ConnectionMetaWebsocket, rt as DevframeServicesScopeRegistry, s as DevframeNodeRpcSession, st as DevframeScopedStreamingHost, t as ConnectionMeta, tt as DevframeServicesHost, u as RpcSharedStateGetOptions, ut as DevframeSettingsStore, vt as DevframeRpcClientFunctions, wt as DevframeDiagnosticsHost, yt as DevframeRpcServerFunctions, z as DevframeRpcOptions } from "./context-Dko5QFWF.mjs";
|
|
3
3
|
import { a as DevframeWsPeer, i as DevframeRpcTransportKind, n as DevframeRpcConnection, r as DevframeRpcConnectionRequest, t as DevframeNodeRpcSessionMeta } from "./session-r6PDixP6.mjs";
|
|
4
4
|
import { a as RemoteAssetsStore, i as RemoteAssetsProviderCustom, n as RemoteAssetsErrorMessage, o as StaticAssetsSource, r as RemoteAssetsProvider, t as RemoteAssets } from "./remote-assets-eBvSKZMS.mjs";
|
|
5
5
|
import { i as DevframeDefineDiagnosticsOptions } from "./nostics-DWvukRwa.mjs";
|
|
6
|
-
import { n as withMcpContent } from "./mcp-content-
|
|
6
|
+
import { n as withMcpContent } from "./mcp-content-wcQxvrrW.mjs";
|
|
7
7
|
//#region src/define.d.ts
|
|
8
8
|
export 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>;
|
|
9
9
|
/**
|
|
@@ -12,4 +12,4 @@ export declare const defineRpcFunction: <NAME extends string, TYPE extends RpcFu
|
|
|
12
12
|
*/
|
|
13
13
|
export declare function defineDevframe(d: DevframeDefinition): DevframeDefinition;
|
|
14
14
|
//#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 CreateMcpFetchHandlerOptions, type CreateMcpServerOptions, 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 DevframeWsPeer, type EventEmitter, type EventUnsubscribe, type EventsMap, type McpAuthorization, type McpConnectionInfo, type McpContentBlock, type McpFetchHandler, type McpRouteOptions, type McpServerHandle, type McpSetting, 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, withMcpContent };
|
|
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 CreateMcpFetchHandlerOptions, type CreateMcpServerOptions, 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 DevframeWsPeer, type EventEmitter, type EventUnsubscribe, type EventsMap, type McpAuthorization, type McpConnectionInfo, type McpContentBlock, type McpFetchHandler, type McpResourceTemplate, type McpResourceTemplateContent, type McpResourceTemplateEntry, type McpResourcesChangedHook, type McpRouteOptions, type McpServerHandle, type McpSetting, 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, withMcpContent };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __exportAll } from "./rolldown-runtime-B4iAMlE-.mjs";
|
|
2
|
-
import { t as diagnostics } from "./diagnostics-
|
|
2
|
+
import { t as diagnostics } from "./diagnostics-BJjvKfVK.mjs";
|
|
3
3
|
import { join } from "pathe";
|
|
4
4
|
import { mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
5
5
|
import process from "node:process";
|