devframe 0.7.14 → 0.7.15

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 (45) hide show
  1. package/dist/adapters/build.d.mts +1 -1
  2. package/dist/adapters/build.mjs +1 -1
  3. package/dist/adapters/cac.d.mts +1 -1
  4. package/dist/adapters/cac.mjs +1 -1
  5. package/dist/adapters/cli.d.mts +1 -1
  6. package/dist/adapters/cli.mjs +1 -1
  7. package/dist/adapters/dev.d.mts +18 -3
  8. package/dist/adapters/dev.mjs +2 -2
  9. package/dist/adapters/embedded.d.mts +1 -1
  10. package/dist/adapters/mcp.d.mts +5 -3
  11. package/dist/adapters/mcp.mjs +1 -1
  12. package/dist/{build-server-CBAxmnC8.mjs → build-server-cANnMwg0.mjs} +14 -3
  13. package/dist/{cac-Drj5sjnU.mjs → cac-CjF0haJ6.mjs} +1 -1
  14. package/dist/client/index.d.mts +1 -1
  15. package/dist/client/index.mjs +4 -2
  16. package/dist/{context-FonV8enL.d.mts → context-C_bqRR0i.d.mts} +1 -1
  17. package/dist/{dev-BdegDQKt.mjs → dev-OJFr4rx8.mjs} +25 -2
  18. package/dist/{devframe-DfzYvlKI.d.mts → devframe-BADsX91-.d.mts} +6 -1
  19. package/dist/helpers/vite.d.mts +14 -1
  20. package/dist/helpers/vite.mjs +6 -3
  21. package/dist/{http-BaCZYhIR.mjs → http-B2P55ZXg.mjs} +1 -1
  22. package/dist/{index-CxpC1ItQ.d.mts → index-Brcd2V4t.d.mts} +2 -2
  23. package/dist/index.d.mts +1 -1
  24. package/dist/node/auth.d.mts +2 -2
  25. package/dist/node/hub-internals.d.mts +2 -2
  26. package/dist/node/index.d.mts +2 -2
  27. package/dist/recipes/common-rpc-functions.d.mts +118 -0
  28. package/dist/recipes/common-rpc-functions.mjs +105 -0
  29. package/dist/recipes/interactive-auth.d.mts +2 -2
  30. package/dist/recipes/open-helpers.d.mts +3 -101
  31. package/dist/recipes/open-helpers.mjs +3 -63
  32. package/dist/rpc/transports/ws-client.mjs +1 -1
  33. package/dist/rpc/transports/ws-server.mjs +1 -1
  34. package/dist/{server-Bf27EWpv.d.mts → server-Bu5iB3aV.d.mts} +2 -2
  35. package/dist/{structured-clone-XpHLZ8nr.mjs → structured-clone-CbAV5rFI.mjs} +32 -3
  36. package/dist/{structured-clone-CeZOHvkd.mjs → structured-clone-CgtQ61SA.mjs} +32 -3
  37. package/dist/types/index.d.mts +1 -1
  38. package/dist/utils/events.d.mts +1 -1
  39. package/dist/utils/launch-editor.mjs +745 -1
  40. package/dist/utils/shared-state.d.mts +1 -1
  41. package/dist/utils/streaming-channel.d.mts +1 -1
  42. package/dist/utils/structured-clone.mjs +1 -1
  43. package/package.json +5 -4
  44. package/skills/devframe/SKILL.md +1 -1
  45. package/dist/launch-editor-C_xuzLnF.mjs +0 -746
@@ -1,104 +1,6 @@
1
- import "../devframe-DfzYvlKI.mjs";
2
- import { E as Thenable, S as RpcFunctionSetupResult, c as RpcDump, g as RpcFunctionAgentOptions } from "../types-CrzNxXKq.mjs";
3
- import "../index-DgsLFhZg.mjs";
4
- import * as v from "valibot";
1
+ import { commonRpcFunctions, openInEditor, openInFinder } from "./common-rpc-functions.mjs";
5
2
  //#region src/recipes/open-helpers.d.ts
6
- /**
7
- * Prebuilt RPC action that opens a file in the user's configured editor.
8
- *
9
- * Registered name: `devframe:open-in-editor`.
10
- *
11
- * ```ts
12
- * import { openInEditor } from 'devframe/recipes/open-helpers'
13
- *
14
- * defineDevframe({
15
- * id: 'my-tool',
16
- * name: 'My Tool',
17
- * setup(ctx) {
18
- * ctx.rpc.register(openInEditor)
19
- * },
20
- * })
21
- * ```
22
- */
23
- declare const openInEditor: {
24
- name: "devframe:open-in-editor";
25
- type?: "action" | undefined;
26
- cacheable?: boolean;
27
- args: readonly [v.StringSchema<undefined>];
28
- returns: v.VoidSchema<undefined>;
29
- jsonSerializable?: boolean;
30
- agent?: RpcFunctionAgentOptions;
31
- setup?: ((context: undefined) => Thenable<RpcFunctionSetupResult<[string], void>>) | undefined;
32
- handler?: ((args_0: string) => void) | undefined;
33
- dump?: RpcDump<[string], void, undefined> | undefined;
34
- snapshot?: boolean;
35
- __cache?: WeakMap<object, Thenable<RpcFunctionSetupResult<[string], void>>> | undefined;
36
- __promise?: Thenable<RpcFunctionSetupResult<[string], void>> | undefined;
37
- };
38
- /**
39
- * Prebuilt RPC action that reveals a path in the OS file explorer.
40
- *
41
- * Registered name: `devframe:open-in-finder`.
42
- *
43
- * ```ts
44
- * import { openInFinder } from 'devframe/recipes/open-helpers'
45
- *
46
- * ctx.rpc.register(openInFinder)
47
- * ```
48
- */
49
- declare const openInFinder: {
50
- name: "devframe:open-in-finder";
51
- type?: "action" | undefined;
52
- cacheable?: boolean;
53
- args: readonly [v.StringSchema<undefined>];
54
- returns: v.VoidSchema<undefined>;
55
- jsonSerializable?: boolean;
56
- agent?: RpcFunctionAgentOptions;
57
- setup?: ((context: undefined) => Thenable<RpcFunctionSetupResult<[string], void>>) | undefined;
58
- handler?: ((args_0: string) => void) | undefined;
59
- dump?: RpcDump<[string], void, undefined> | undefined;
60
- snapshot?: boolean;
61
- __cache?: WeakMap<object, Thenable<RpcFunctionSetupResult<[string], void>>> | undefined;
62
- __promise?: Thenable<RpcFunctionSetupResult<[string], void>> | undefined;
63
- };
64
- /**
65
- * Convenience array bundling both helpers so callers can register them
66
- * in a single `forEach`.
67
- *
68
- * ```ts
69
- * import { openHelpers } from 'devframe/recipes/open-helpers'
70
- *
71
- * openHelpers.forEach(fn => ctx.rpc.register(fn))
72
- * ```
73
- */
74
- declare const openHelpers: readonly [{
75
- name: "devframe:open-in-editor";
76
- type?: "action" | undefined;
77
- cacheable?: boolean;
78
- args: readonly [v.StringSchema<undefined>];
79
- returns: v.VoidSchema<undefined>;
80
- jsonSerializable?: boolean;
81
- agent?: RpcFunctionAgentOptions;
82
- setup?: ((context: undefined) => Thenable<RpcFunctionSetupResult<[string], void>>) | undefined;
83
- handler?: ((args_0: string) => void) | undefined;
84
- dump?: RpcDump<[string], void, undefined> | undefined;
85
- snapshot?: boolean;
86
- __cache?: WeakMap<object, Thenable<RpcFunctionSetupResult<[string], void>>> | undefined;
87
- __promise?: Thenable<RpcFunctionSetupResult<[string], void>> | undefined;
88
- }, {
89
- name: "devframe:open-in-finder";
90
- type?: "action" | undefined;
91
- cacheable?: boolean;
92
- args: readonly [v.StringSchema<undefined>];
93
- returns: v.VoidSchema<undefined>;
94
- jsonSerializable?: boolean;
95
- agent?: RpcFunctionAgentOptions;
96
- setup?: ((context: undefined) => Thenable<RpcFunctionSetupResult<[string], void>>) | undefined;
97
- handler?: ((args_0: string) => void) | undefined;
98
- dump?: RpcDump<[string], void, undefined> | undefined;
99
- snapshot?: boolean;
100
- __cache?: WeakMap<object, Thenable<RpcFunctionSetupResult<[string], void>>> | undefined;
101
- __promise?: Thenable<RpcFunctionSetupResult<[string], void>> | undefined;
102
- }];
3
+ /** @deprecated Use `commonRpcFunctions` from `devframe/recipes/common-rpc-functions` instead. */
4
+ declare const openHelpers: typeof commonRpcFunctions;
103
5
  //#endregion
104
6
  export { openHelpers, openInEditor, openInFinder };
@@ -1,66 +1,6 @@
1
- import { t as launchEditor } from "../launch-editor-C_xuzLnF.mjs";
2
- import { n as defineRpcFunction } from "../define-BLWPsH6y.mjs";
3
- import { t as open } from "../open-Deb5xmIT.mjs";
4
- import * as v from "valibot";
1
+ import { commonRpcFunctions, openInEditor, openInFinder } from "./common-rpc-functions.mjs";
5
2
  //#region src/recipes/open-helpers.ts
6
- /**
7
- * Prebuilt RPC action that opens a file in the user's configured editor.
8
- *
9
- * Registered name: `devframe:open-in-editor`.
10
- *
11
- * ```ts
12
- * import { openInEditor } from 'devframe/recipes/open-helpers'
13
- *
14
- * defineDevframe({
15
- * id: 'my-tool',
16
- * name: 'My Tool',
17
- * setup(ctx) {
18
- * ctx.rpc.register(openInEditor)
19
- * },
20
- * })
21
- * ```
22
- */
23
- const openInEditor = defineRpcFunction({
24
- name: "devframe:open-in-editor",
25
- type: "action",
26
- jsonSerializable: true,
27
- args: [v.string()],
28
- returns: v.void(),
29
- async handler(filename) {
30
- launchEditor(filename);
31
- }
32
- });
33
- /**
34
- * Prebuilt RPC action that reveals a path in the OS file explorer.
35
- *
36
- * Registered name: `devframe:open-in-finder`.
37
- *
38
- * ```ts
39
- * import { openInFinder } from 'devframe/recipes/open-helpers'
40
- *
41
- * ctx.rpc.register(openInFinder)
42
- * ```
43
- */
44
- const openInFinder = defineRpcFunction({
45
- name: "devframe:open-in-finder",
46
- type: "action",
47
- jsonSerializable: true,
48
- args: [v.string()],
49
- returns: v.void(),
50
- async handler(path) {
51
- await open(path);
52
- }
53
- });
54
- /**
55
- * Convenience array bundling both helpers so callers can register them
56
- * in a single `forEach`.
57
- *
58
- * ```ts
59
- * import { openHelpers } from 'devframe/recipes/open-helpers'
60
- *
61
- * openHelpers.forEach(fn => ctx.rpc.register(fn))
62
- * ```
63
- */
64
- const openHelpers = [openInEditor, openInFinder];
3
+ /** @deprecated Use `commonRpcFunctions` from `devframe/recipes/common-rpc-functions` instead. */
4
+ const openHelpers = commonRpcFunctions;
65
5
  //#endregion
66
6
  export { openHelpers, openInEditor, openInFinder };
@@ -1,6 +1,6 @@
1
1
  import { DEVFRAME_AUTH_TOKEN_QUERY_PARAM } from "../../constants.mjs";
2
2
  import { n as strictJsonStringify } from "../../serialization-DpLXCy13.mjs";
3
- import { n as structuredCloneStringify, t as structuredCloneParse } from "../../structured-clone-XpHLZ8nr.mjs";
3
+ import { n as structuredCloneStringify, t as structuredCloneParse } from "../../structured-clone-CbAV5rFI.mjs";
4
4
  //#region src/rpc/transports/ws-client.ts
5
5
  function NOOP() {}
6
6
  const EMPTY_DEFS = /* @__PURE__ */ new Map();
@@ -1,5 +1,5 @@
1
1
  import { n as strictJsonStringify } from "../../serialization-DpLXCy13.mjs";
2
- import { n as structuredCloneStringify, t as structuredCloneParse } from "../../structured-clone-XpHLZ8nr.mjs";
2
+ import { n as structuredCloneStringify, t as structuredCloneParse } from "../../structured-clone-CbAV5rFI.mjs";
3
3
  import { createServer } from "node:http";
4
4
  import { createServer as createServer$1 } from "node:https";
5
5
  import crossws from "crossws/adapters/node";
@@ -1,5 +1,5 @@
1
- import { $ as DevframeRpcServerFunctions, Q as DevframeRpcClientFunctions, W as DevframeNodeRpcSession, _ as ConnectionMeta, b as DevframeNodeContext, p as DevframeAuthHandler } from "./devframe-DfzYvlKI.mjs";
2
- import "./index-CxpC1ItQ.mjs";
1
+ import { $ as DevframeRpcServerFunctions, Q as DevframeRpcClientFunctions, W as DevframeNodeRpcSession, _ as ConnectionMeta, b as DevframeNodeContext, p as DevframeAuthHandler } from "./devframe-BADsX91-.mjs";
2
+ import "./index-Brcd2V4t.mjs";
3
3
  import { Peer } from "crossws";
4
4
  import { BirpcGroup, EventOptions } from "birpc";
5
5
  import { NodeAdapter } from "crossws/adapters/node";
@@ -1,5 +1,32 @@
1
- //#region ../../node_modules/.pnpm/structured-clone-es@2.0.0/node_modules/structured-clone-es/dist/index.mjs
1
+ //#region ../../node_modules/.pnpm/structured-clone-es@2.0.1/node_modules/structured-clone-es/dist/index.mjs
2
2
  const env = typeof self === "object" ? self : globalThis;
3
+ const SAFE_ERROR_NAMES = /* @__PURE__ */ new Set([
4
+ "Error",
5
+ "EvalError",
6
+ "RangeError",
7
+ "ReferenceError",
8
+ "SyntaxError",
9
+ "TypeError",
10
+ "URIError",
11
+ "AggregateError"
12
+ ]);
13
+ const SAFE_CONSTRUCTOR_NAMES = /* @__PURE__ */ new Set([
14
+ "Boolean",
15
+ "Number",
16
+ "String",
17
+ "Int8Array",
18
+ "Uint8Array",
19
+ "Uint8ClampedArray",
20
+ "Int16Array",
21
+ "Uint16Array",
22
+ "Int32Array",
23
+ "Uint32Array",
24
+ "Float16Array",
25
+ "Float32Array",
26
+ "Float64Array",
27
+ "BigInt64Array",
28
+ "BigUint64Array"
29
+ ]);
3
30
  function deserializer($, _) {
4
31
  const as = (out, index) => {
5
32
  $.set(index, out);
@@ -38,7 +65,8 @@ function deserializer($, _) {
38
65
  }
39
66
  case 7: {
40
67
  const { name, message } = value;
41
- return as(new env[name](message), index);
68
+ const Ctor = SAFE_ERROR_NAMES.has(name) ? env[name] : void 0;
69
+ return as(new (Ctor ?? env.Error)(message), index);
42
70
  }
43
71
  case 8: return as(BigInt(value), index);
44
72
  case "BigInt": return as(Object(BigInt(value)), index);
@@ -48,7 +76,8 @@ function deserializer($, _) {
48
76
  return as(new DataView(buffer), value);
49
77
  }
50
78
  }
51
- return as(new env[type](value), index);
79
+ if (typeof type === "string" && SAFE_CONSTRUCTOR_NAMES.has(type)) return as(new env[type](value), index);
80
+ throw new TypeError(`unable to deserialize unsafe or unknown type: ${String(type)}`);
52
81
  };
53
82
  return unpair;
54
83
  }
@@ -1,5 +1,32 @@
1
- //#region ../../node_modules/.pnpm/structured-clone-es@2.0.0/node_modules/structured-clone-es/dist/index.mjs
1
+ //#region ../../node_modules/.pnpm/structured-clone-es@2.0.1/node_modules/structured-clone-es/dist/index.mjs
2
2
  const env = typeof self === "object" ? self : globalThis;
3
+ const SAFE_ERROR_NAMES = /* @__PURE__ */ new Set([
4
+ "Error",
5
+ "EvalError",
6
+ "RangeError",
7
+ "ReferenceError",
8
+ "SyntaxError",
9
+ "TypeError",
10
+ "URIError",
11
+ "AggregateError"
12
+ ]);
13
+ const SAFE_CONSTRUCTOR_NAMES = /* @__PURE__ */ new Set([
14
+ "Boolean",
15
+ "Number",
16
+ "String",
17
+ "Int8Array",
18
+ "Uint8Array",
19
+ "Uint8ClampedArray",
20
+ "Int16Array",
21
+ "Uint16Array",
22
+ "Int32Array",
23
+ "Uint32Array",
24
+ "Float16Array",
25
+ "Float32Array",
26
+ "Float64Array",
27
+ "BigInt64Array",
28
+ "BigUint64Array"
29
+ ]);
3
30
  function deserializer($, _) {
4
31
  const as = (out, index) => {
5
32
  $.set(index, out);
@@ -38,7 +65,8 @@ function deserializer($, _) {
38
65
  }
39
66
  case 7: {
40
67
  const { name, message } = value;
41
- return as(new env[name](message), index);
68
+ const Ctor = SAFE_ERROR_NAMES.has(name) ? env[name] : void 0;
69
+ return as(new (Ctor ?? env.Error)(message), index);
42
70
  }
43
71
  case 8: return as(BigInt(value), index);
44
72
  case "BigInt": return as(Object(BigInt(value)), index);
@@ -48,7 +76,8 @@ function deserializer($, _) {
48
76
  return as(new DataView(buffer), value);
49
77
  }
50
78
  }
51
- return as(new env[type](value), index);
79
+ if (typeof type === "string" && SAFE_CONSTRUCTOR_NAMES.has(type)) return as(new env[type](value), index);
80
+ throw new TypeError(`unable to deserialize unsafe or unknown type: ${String(type)}`);
52
81
  };
53
82
  return unpair;
54
83
  }
@@ -1,4 +1,4 @@
1
- import { $ as DevframeRpcServerFunctions, A as DevframeSettingsStore, At as EventUnsubscribe, B as DevframeDefineDiagnosticsOptions, C as DevframeServicesHost, Ct as AgentResourceContent, D as DevframeScopedStreamingHost, Dt as DevframeAgentHost, E as DevframeScopedNodeRpc, Et as AgentToolInput, F as ScopedSharedStates, G as RpcBroadcastOptions, H as DevframeDiagnosticsHost, I as SettingsForNamespace, J as RpcSharedStateHost, K as RpcFunctionsHost, L as DevframeViewHost, M as ScopedClientFunctions, N as ScopedRpcFn, O as DevframeSettings, Ot as DevframeAgentHostEvents, P as ScopedServerFunctions, Q as DevframeRpcClientFunctions, R as DevframeHost, S as DevframeServiceOf, St as AgentResource, T as DevframeScopedNodeContext, Tt as AgentTool, U as DevframeDiagnosticsLogger, V as DevframeDiagnosticsDefinition, W as DevframeNodeRpcSession, X as RpcStreamingChannelOptions, Y as RpcStreamingChannel, Z as RpcStreamingHost, _ as ConnectionMeta, a as DevframeDockDefaults, b as DevframeNodeContext, bt as AgentHandle, c as DevframeSetupInfo, d as McpRouteOptions, et as DevframeRpcSharedStates, f as defineDevframe, g as Thenable, h as PartialWithoutId, i as DevframeDeploymentKind, j as ScopedBroadcastOptions, jt as EventsMap, k as DevframeSettingsRegistry, kt as EventEmitter, l as DevframeSpaOptions, m as EntriesToObject, n as DevframeCliOptions, o as DevframeDuplicationStrategy, q as RpcSharedStateGetOptions, r as DevframeDefinition, s as DevframeRuntime, t as DevframeBrowserContext, u as DevframeWsOptions, v as ConnectionMetaWebsocket, w as DevframeServicesRegistry, wt as AgentResourceInput, x as DevframeServiceId, xt as AgentManifest, y as DevframeCapabilities, z as DevframeStorageScope } from "../devframe-DfzYvlKI.mjs";
1
+ import { $ as DevframeRpcServerFunctions, A as DevframeSettingsStore, At as EventUnsubscribe, B as DevframeDefineDiagnosticsOptions, C as DevframeServicesHost, Ct as AgentResourceContent, D as DevframeScopedStreamingHost, Dt as DevframeAgentHost, E as DevframeScopedNodeRpc, Et as AgentToolInput, F as ScopedSharedStates, G as RpcBroadcastOptions, H as DevframeDiagnosticsHost, I as SettingsForNamespace, J as RpcSharedStateHost, K as RpcFunctionsHost, L as DevframeViewHost, M as ScopedClientFunctions, N as ScopedRpcFn, O as DevframeSettings, Ot as DevframeAgentHostEvents, P as ScopedServerFunctions, Q as DevframeRpcClientFunctions, R as DevframeHost, S as DevframeServiceOf, St as AgentResource, T as DevframeScopedNodeContext, Tt as AgentTool, U as DevframeDiagnosticsLogger, V as DevframeDiagnosticsDefinition, W as DevframeNodeRpcSession, X as RpcStreamingChannelOptions, Y as RpcStreamingChannel, Z as RpcStreamingHost, _ as ConnectionMeta, a as DevframeDockDefaults, b as DevframeNodeContext, bt as AgentHandle, c as DevframeSetupInfo, d as McpRouteOptions, et as DevframeRpcSharedStates, f as defineDevframe, g as Thenable, h as PartialWithoutId, i as DevframeDeploymentKind, j as ScopedBroadcastOptions, jt as EventsMap, k as DevframeSettingsRegistry, kt as EventEmitter, l as DevframeSpaOptions, m as EntriesToObject, n as DevframeCliOptions, o as DevframeDuplicationStrategy, q as RpcSharedStateGetOptions, r as DevframeDefinition, s as DevframeRuntime, t as DevframeBrowserContext, u as DevframeWsOptions, v as ConnectionMetaWebsocket, w as DevframeServicesRegistry, wt as AgentResourceInput, x as DevframeServiceId, xt as AgentManifest, y as DevframeCapabilities, z as DevframeStorageScope } from "../devframe-BADsX91-.mjs";
2
2
  import { g as RpcFunctionAgentOptions } from "../types-CrzNxXKq.mjs";
3
3
  import { t as DevframeNodeRpcSessionMeta } from "../ws-server-9-wn7MNQ.mjs";
4
4
  export { AgentHandle, AgentManifest, AgentResource, AgentResourceContent, AgentResourceInput, AgentTool, AgentToolInput, ConnectionMeta, ConnectionMetaWebsocket, DevframeAgentHost, DevframeAgentHostEvents, DevframeBrowserContext, DevframeCapabilities, DevframeCliOptions, DevframeDefineDiagnosticsOptions, DevframeDefinition, DevframeDeploymentKind, DevframeDiagnosticsDefinition, DevframeDiagnosticsHost, DevframeDiagnosticsLogger, DevframeDockDefaults, DevframeDuplicationStrategy, DevframeHost, DevframeNodeContext, DevframeNodeRpcSession, type DevframeNodeRpcSessionMeta, DevframeRpcClientFunctions, DevframeRpcServerFunctions, DevframeRpcSharedStates, DevframeRuntime, DevframeScopedNodeContext, DevframeScopedNodeRpc, DevframeScopedStreamingHost, DevframeServiceId, DevframeServiceOf, DevframeServicesHost, DevframeServicesRegistry, DevframeSettings, DevframeSettingsRegistry, DevframeSettingsStore, DevframeSetupInfo, DevframeSpaOptions, DevframeStorageScope, DevframeViewHost, DevframeWsOptions, EntriesToObject, EventEmitter, EventUnsubscribe, EventsMap, McpRouteOptions, PartialWithoutId, RpcBroadcastOptions, type RpcFunctionAgentOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, RpcStreamingChannel, RpcStreamingChannelOptions, RpcStreamingHost, ScopedBroadcastOptions, ScopedClientFunctions, ScopedRpcFn, ScopedServerFunctions, ScopedSharedStates, SettingsForNamespace, Thenable, defineDevframe };
@@ -1,4 +1,4 @@
1
- import { jt as EventsMap, kt as EventEmitter } from "../devframe-DfzYvlKI.mjs";
1
+ import { jt as EventsMap, kt as EventEmitter } from "../devframe-BADsX91-.mjs";
2
2
  //#region src/utils/events.d.ts
3
3
  /**
4
4
  * Create event emitter.