devframe 0.6.0-beta.2 → 0.6.0-beta.3
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/adapters/build.d.mts +1 -1
- package/dist/adapters/build.mjs +2 -2
- package/dist/adapters/cli.d.mts +1 -1
- package/dist/adapters/cli.mjs +1 -1
- package/dist/adapters/dev.d.mts +2 -2
- package/dist/adapters/dev.mjs +1 -1
- package/dist/adapters/embedded.d.mts +1 -1
- package/dist/adapters/mcp.d.mts +1 -1
- package/dist/adapters/mcp.mjs +3 -3
- package/dist/client/index.d.mts +2 -2
- package/dist/client/index.mjs +56 -22
- package/dist/constants.d.mts +24 -1
- package/dist/constants.mjs +26 -1
- package/dist/{context-BEVByy_Z.d.mts → context-B_I9fMBc.d.mts} +1 -1
- package/dist/{context-3x_bgBgZ.mjs → context-CKJheEtf.mjs} +2 -2
- package/dist/{dev-BaX8fLH2.mjs → dev-DSxKFn-v.mjs} +4 -4
- package/dist/{devframe-D-gr9sBx.d.mts → devframe-DgvncQy2.d.mts} +19 -3
- package/dist/{dump-DoXkj4ku.mjs → dump-D09PZb7T.mjs} +14 -4
- package/dist/{hash-DFc5WwhO.mjs → hash-PAfnyu2k.mjs} +1 -1
- package/dist/helpers/vite.d.mts +1 -1
- package/dist/helpers/vite.mjs +2 -2
- package/dist/{host-h3-C5SZlk03.mjs → host-h3-Dsf-Tgwx.mjs} +37 -11
- package/dist/index-B4lNDq5v.d.mts +107 -0
- package/dist/{index-CxaPKDXX.d.mts → index-Dy6GFDRf.d.mts} +1 -0
- package/dist/index.d.mts +2 -2
- package/dist/{launch-editor-DPfltGA4.mjs → launch-editor-DIzaS5EG.mjs} +58 -43
- package/dist/node/auth.d.mts +2 -64
- package/dist/node/auth.mjs +2 -100
- package/dist/node/hub-internals.d.mts +2 -2
- package/dist/node/hub-internals.mjs +1 -1
- package/dist/node/index.d.mts +3 -3
- package/dist/node/index.mjs +3 -3
- package/dist/recipes/interactive-auth.d.mts +53 -0
- package/dist/recipes/interactive-auth.mjs +132 -0
- package/dist/recipes/open-helpers.mjs +2 -2
- package/dist/{revoke-ENfxWkFK.mjs → revoke-BtQDKTp7.mjs} +1 -1
- package/dist/rpc/dump.mjs +1 -1
- package/dist/rpc/index.d.mts +2 -2
- package/dist/rpc/index.mjs +4 -1
- package/dist/rpc/transports/ws-client.mjs +21 -8
- package/dist/{server-Dl6TU5LE.mjs → server-BdN41ckC.mjs} +36 -4
- package/dist/{server-rX781kz-.d.mts → server-DXPq8q0K.d.mts} +40 -9
- package/dist/{shared-state-D4PPieA0.mjs → shared-state-QtMas0NG.mjs} +34 -4
- package/dist/state-WX3HT5a3.mjs +101 -0
- package/dist/{storage-l2ezeend.mjs → storage-yrUZaiib.mjs} +55 -6
- package/dist/types/index.d.mts +2 -2
- package/dist/utils/crypto-token.mjs +1 -1
- package/dist/utils/events.d.mts +1 -1
- package/dist/utils/hash.mjs +1 -1
- package/dist/utils/launch-editor.mjs +1 -1
- package/dist/utils/open.mjs +1 -1
- package/dist/utils/serve-static.mjs +2 -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/dist/utils/when.d.mts +1 -1
- package/package.json +10 -9
- package/dist/{open-Dusa2Zzd.mjs → open-Deb5xmIT.mjs} +1 -1
|
@@ -2,6 +2,7 @@ import { t as devframeReporter } from "./diagnostics-reporter-CsIG85Q5.mjs";
|
|
|
2
2
|
import { defineDiagnostics } from "nostics";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import { dirname } from "pathe";
|
|
5
|
+
import process$1 from "node:process";
|
|
5
6
|
import { destr } from "destr";
|
|
6
7
|
//#region src/node/diagnostics.ts
|
|
7
8
|
const diagnostics = defineDiagnostics({
|
|
@@ -46,6 +47,14 @@ const diagnostics = defineDiagnostics({
|
|
|
46
47
|
DF0034: {
|
|
47
48
|
why: (p) => `Scoped RPC registration for namespace "${p.namespace}" received an already-namespaced function name "${p.name}".`,
|
|
48
49
|
fix: "A scoped context auto-namespaces ids. Pass a bare name without a \":\" separator (e.g. `register({ name: \"get-cwd\" })`), or use the unscoped `ctx.base.rpc.register` for a fully-qualified name."
|
|
50
|
+
},
|
|
51
|
+
DF0035: {
|
|
52
|
+
why: (p) => `Failed to persist storage file: ${p.filepath}`,
|
|
53
|
+
fix: "Check that the storage directory is writable and has free space."
|
|
54
|
+
},
|
|
55
|
+
DF0036: {
|
|
56
|
+
why: (p) => `RPC call to "${p.name}" was rejected: the caller is not authorized.`,
|
|
57
|
+
fix: "Complete the auth handshake (or connect with a static/pre-shared token) before calling a trusted method. Untrusted callers may only call `anonymous:`-prefixed methods — see `isAnonymousRpcMethod`."
|
|
49
58
|
}
|
|
50
59
|
}
|
|
51
60
|
});
|
|
@@ -89,7 +98,7 @@ function createEventEmitter() {
|
|
|
89
98
|
};
|
|
90
99
|
}
|
|
91
100
|
//#endregion
|
|
92
|
-
//#region ../../node_modules/.pnpm/immer@11.1.
|
|
101
|
+
//#region ../../node_modules/.pnpm/immer@11.1.11/node_modules/immer/dist/immer.mjs
|
|
93
102
|
var NOTHING = Symbol.for("immer-nothing");
|
|
94
103
|
var DRAFTABLE = Symbol.for("immer-draftable");
|
|
95
104
|
var DRAFT_STATE = Symbol.for("immer-state");
|
|
@@ -439,6 +448,21 @@ function createProxyProxy(base, parent) {
|
|
|
439
448
|
var objectTraps = {
|
|
440
449
|
get(state, prop) {
|
|
441
450
|
if (prop === DRAFT_STATE) return state;
|
|
451
|
+
if (prop === "constructor" || prop === "__proto__") {
|
|
452
|
+
const value2 = latest(state)[prop];
|
|
453
|
+
return new Proxy(value2 || {}, {
|
|
454
|
+
get: (target, key) => {
|
|
455
|
+
if (key === "__proto__" || key === "prototype") return Object.freeze(/* @__PURE__ */ Object.create(null));
|
|
456
|
+
return Reflect.get(target, key);
|
|
457
|
+
},
|
|
458
|
+
set: () => {
|
|
459
|
+
return true;
|
|
460
|
+
},
|
|
461
|
+
apply: (target, thisArg, args) => {
|
|
462
|
+
return Reflect.apply(target, thisArg, args);
|
|
463
|
+
}
|
|
464
|
+
});
|
|
465
|
+
}
|
|
442
466
|
let arrayPlugin = state.scope_.arrayMethodsPlugin_;
|
|
443
467
|
const isArrayWithStringProp = state.type_ === 1 && typeof prop === "string";
|
|
444
468
|
if (isArrayWithStringProp) {
|
|
@@ -458,12 +482,14 @@ var objectTraps = {
|
|
|
458
482
|
return value;
|
|
459
483
|
},
|
|
460
484
|
has(state, prop) {
|
|
485
|
+
if (prop === "constructor" || prop === "__proto__" || prop === "prototype") return false;
|
|
461
486
|
return prop in latest(state);
|
|
462
487
|
},
|
|
463
488
|
ownKeys(state) {
|
|
464
489
|
return Reflect.ownKeys(latest(state));
|
|
465
490
|
},
|
|
466
491
|
set(state, prop, value) {
|
|
492
|
+
if (prop === "constructor" || prop === "__proto__" || prop === "prototype") return true;
|
|
467
493
|
const desc = getDescriptorFromProto(latest(state), prop);
|
|
468
494
|
if (desc?.set) {
|
|
469
495
|
desc.set.call(state.draft_, value);
|
|
@@ -481,7 +507,7 @@ var objectTraps = {
|
|
|
481
507
|
prepareCopy(state);
|
|
482
508
|
markChanged(state);
|
|
483
509
|
}
|
|
484
|
-
if (state.copy_[prop] === value && (value !== void 0 || prop
|
|
510
|
+
if (state.copy_[prop] === value && (value !== void 0 || has(state.copy_, prop, state.type_)) || Number.isNaN(value) && Number.isNaN(state.copy_[prop])) return true;
|
|
485
511
|
state.copy_[prop] = value;
|
|
486
512
|
state.assigned_.set(prop, true);
|
|
487
513
|
handleCrossReference(state, prop, value);
|
|
@@ -992,6 +1018,19 @@ function nanoid(size = 21) {
|
|
|
992
1018
|
}
|
|
993
1019
|
//#endregion
|
|
994
1020
|
//#region src/utils/shared-state.ts
|
|
1021
|
+
/**
|
|
1022
|
+
* Upper bound on retained syncIds. Loop echoes arrive near-immediately, so a
|
|
1023
|
+
* generous window preserves de-dup while capping memory on long-lived,
|
|
1024
|
+
* frequently-mutated states (e.g. a 1s terminal poll).
|
|
1025
|
+
*/
|
|
1026
|
+
const MAX_SYNC_IDS = 1e3;
|
|
1027
|
+
function rememberSyncId(syncIds, syncId) {
|
|
1028
|
+
syncIds.add(syncId);
|
|
1029
|
+
if (syncIds.size > MAX_SYNC_IDS) {
|
|
1030
|
+
const oldest = syncIds.values().next().value;
|
|
1031
|
+
if (oldest !== void 0) syncIds.delete(oldest);
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
995
1034
|
function createSharedState(options) {
|
|
996
1035
|
const { enablePatches: enablePatches$1 = false } = options;
|
|
997
1036
|
const events = createEventEmitter();
|
|
@@ -1004,12 +1043,12 @@ function createSharedState(options) {
|
|
|
1004
1043
|
if (syncIds.has(syncId)) return;
|
|
1005
1044
|
enablePatches();
|
|
1006
1045
|
state = applyPatches(state, patches);
|
|
1007
|
-
syncIds
|
|
1046
|
+
rememberSyncId(syncIds, syncId);
|
|
1008
1047
|
events.emit("updated", state, void 0, syncId);
|
|
1009
1048
|
},
|
|
1010
1049
|
mutate: (fn, syncId = nanoid()) => {
|
|
1011
1050
|
if (syncIds.has(syncId)) return;
|
|
1012
|
-
syncIds
|
|
1051
|
+
rememberSyncId(syncIds, syncId);
|
|
1013
1052
|
if (enablePatches$1) {
|
|
1014
1053
|
const [newState, patches] = produceWithPatches(state, fn);
|
|
1015
1054
|
state = newState;
|
|
@@ -1132,8 +1171,18 @@ function createStorage(options) {
|
|
|
1132
1171
|
enablePatches: false
|
|
1133
1172
|
});
|
|
1134
1173
|
state.on("updated", debounce((newState) => {
|
|
1135
|
-
|
|
1136
|
-
|
|
1174
|
+
try {
|
|
1175
|
+
const dir = dirname(options.filepath);
|
|
1176
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
1177
|
+
const tmp = `${options.filepath}.${process$1.pid}.tmp`;
|
|
1178
|
+
fs.writeFileSync(tmp, `${JSON.stringify(newState, null, 2)}\n`);
|
|
1179
|
+
fs.renameSync(tmp, options.filepath);
|
|
1180
|
+
} catch (error) {
|
|
1181
|
+
diagnostics.DF0035({
|
|
1182
|
+
filepath: options.filepath,
|
|
1183
|
+
cause: error
|
|
1184
|
+
}, { method: "error" });
|
|
1185
|
+
}
|
|
1137
1186
|
}, debounceTime));
|
|
1138
1187
|
return state;
|
|
1139
1188
|
}
|
package/dist/types/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as ScopedServerFunctions, G as DevframeScopedNodeContext, H as EntriesToObject, J as DevframeSettings, K as DevframeScopedNodeRpc, Q as ScopedClientFunctions, S as RpcStreamingHost, St as EventsMap, U as PartialWithoutId, W as Thenable, X as DevframeSettingsStore, Y as DevframeSettingsRegistry, Z as ScopedBroadcastOptions, _ as RpcFunctionsHost, _t as AgentToolInput, a as DevframeDuplicationStrategy, at as DevframeRpcSharedStates, b as RpcStreamingChannel, bt as EventEmitter, c as DevframeSpaOptions, ct as DevframeDiagnosticsDefinition, d as ConnectionMeta, dt as AgentHandle, et as ScopedSharedStates, f as ConnectionMetaWebsocket, ft as AgentManifest, g as RpcBroadcastOptions, gt as AgentTool, h as DevframeNodeRpcSession, ht as AgentResourceInput, i as DevframeDeploymentKind, it as DevframeRpcServerFunctions, l as DevframeWsOptions, lt as DevframeDiagnosticsHost, m as DevframeNodeContext, mt as AgentResourceContent, n as DevframeCliOptions, nt as DevframeViewHost, o as DevframeRuntime, ot as DevframeHost, p as DevframeCapabilities, pt as AgentResource, q as DevframeScopedStreamingHost, r as DevframeDefinition, rt as DevframeRpcClientFunctions, s as DevframeSetupInfo, st as DevframeDefineDiagnosticsOptions, t as DevframeBrowserContext, tt as SettingsForNamespace, u as defineDevframe, ut as DevframeDiagnosticsLogger, v as RpcSharedStateGetOptions, vt as DevframeAgentHost, x as RpcStreamingChannelOptions, xt as EventUnsubscribe, y as RpcSharedStateHost, yt as DevframeAgentHostEvents } from "../devframe-
|
|
1
|
+
import { $ as ScopedServerFunctions, G as DevframeScopedNodeContext, H as EntriesToObject, J as DevframeSettings, K as DevframeScopedNodeRpc, Q as ScopedClientFunctions, S as RpcStreamingHost, St as EventsMap, U as PartialWithoutId, W as Thenable, X as DevframeSettingsStore, Y as DevframeSettingsRegistry, Z as ScopedBroadcastOptions, _ as RpcFunctionsHost, _t as AgentToolInput, a as DevframeDuplicationStrategy, at as DevframeRpcSharedStates, b as RpcStreamingChannel, bt as EventEmitter, c as DevframeSpaOptions, ct as DevframeDiagnosticsDefinition, d as ConnectionMeta, dt as AgentHandle, et as ScopedSharedStates, f as ConnectionMetaWebsocket, ft as AgentManifest, g as RpcBroadcastOptions, gt as AgentTool, h as DevframeNodeRpcSession, ht as AgentResourceInput, i as DevframeDeploymentKind, it as DevframeRpcServerFunctions, l as DevframeWsOptions, lt as DevframeDiagnosticsHost, m as DevframeNodeContext, mt as AgentResourceContent, n as DevframeCliOptions, nt as DevframeViewHost, o as DevframeRuntime, ot as DevframeHost, p as DevframeCapabilities, pt as AgentResource, q as DevframeScopedStreamingHost, r as DevframeDefinition, rt as DevframeRpcClientFunctions, s as DevframeSetupInfo, st as DevframeDefineDiagnosticsOptions, t as DevframeBrowserContext, tt as SettingsForNamespace, u as defineDevframe, ut as DevframeDiagnosticsLogger, v as RpcSharedStateGetOptions, vt as DevframeAgentHost, x as RpcStreamingChannelOptions, xt as EventUnsubscribe, y as RpcSharedStateHost, yt as DevframeAgentHostEvents } from "../devframe-DgvncQy2.mjs";
|
|
2
2
|
import { g as RpcFunctionAgentOptions } from "../types-DZEx4ffs.mjs";
|
|
3
3
|
import { t as DevframeNodeRpcSessionMeta } from "../ws-server-Bc2wBHl-.mjs";
|
|
4
|
-
export { AgentHandle, AgentManifest, AgentResource, AgentResourceContent, AgentResourceInput, AgentTool, AgentToolInput, ConnectionMeta, ConnectionMetaWebsocket, DevframeAgentHost, DevframeAgentHostEvents, DevframeBrowserContext, DevframeCapabilities, DevframeCliOptions, DevframeDefineDiagnosticsOptions, DevframeDefinition, DevframeDeploymentKind, DevframeDiagnosticsDefinition, DevframeDiagnosticsHost, DevframeDiagnosticsLogger, DevframeDuplicationStrategy, DevframeHost, DevframeNodeContext, DevframeNodeRpcSession, DevframeNodeRpcSessionMeta, DevframeRpcClientFunctions, DevframeRpcServerFunctions, DevframeRpcSharedStates, DevframeRuntime, DevframeScopedNodeContext, DevframeScopedNodeRpc, DevframeScopedStreamingHost, DevframeSettings, DevframeSettingsRegistry, DevframeSettingsStore, DevframeSetupInfo, DevframeSpaOptions, DevframeViewHost, DevframeWsOptions, EntriesToObject, EventEmitter, EventUnsubscribe, EventsMap, PartialWithoutId, RpcBroadcastOptions, RpcFunctionAgentOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, RpcStreamingChannel, RpcStreamingChannelOptions, RpcStreamingHost, ScopedBroadcastOptions, ScopedClientFunctions, ScopedServerFunctions, ScopedSharedStates, SettingsForNamespace, Thenable, defineDevframe };
|
|
4
|
+
export { AgentHandle, AgentManifest, AgentResource, AgentResourceContent, AgentResourceInput, AgentTool, AgentToolInput, ConnectionMeta, ConnectionMetaWebsocket, DevframeAgentHost, DevframeAgentHostEvents, DevframeBrowserContext, DevframeCapabilities, DevframeCliOptions, DevframeDefineDiagnosticsOptions, DevframeDefinition, DevframeDeploymentKind, DevframeDiagnosticsDefinition, DevframeDiagnosticsHost, DevframeDiagnosticsLogger, DevframeDuplicationStrategy, DevframeHost, DevframeNodeContext, DevframeNodeRpcSession, type DevframeNodeRpcSessionMeta, DevframeRpcClientFunctions, DevframeRpcServerFunctions, DevframeRpcSharedStates, DevframeRuntime, DevframeScopedNodeContext, DevframeScopedNodeRpc, DevframeScopedStreamingHost, DevframeSettings, DevframeSettingsRegistry, DevframeSettingsStore, DevframeSetupInfo, DevframeSpaOptions, DevframeViewHost, DevframeWsOptions, EntriesToObject, EventEmitter, EventUnsubscribe, EventsMap, PartialWithoutId, RpcBroadcastOptions, type RpcFunctionAgentOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, RpcStreamingChannel, RpcStreamingChannelOptions, RpcStreamingHost, ScopedBroadcastOptions, ScopedClientFunctions, ScopedServerFunctions, ScopedSharedStates, SettingsForNamespace, Thenable, defineDevframe };
|
|
@@ -19,7 +19,7 @@ function randomToken(byteLength = 16) {
|
|
|
19
19
|
*/
|
|
20
20
|
function randomDigits(length) {
|
|
21
21
|
const limit = 250;
|
|
22
|
-
const buf = new Uint8Array(1);
|
|
22
|
+
const buf = /* @__PURE__ */ new Uint8Array(1);
|
|
23
23
|
let out = "";
|
|
24
24
|
while (out.length < length) {
|
|
25
25
|
globalThis.crypto.getRandomValues(buf);
|
package/dist/utils/events.d.mts
CHANGED
package/dist/utils/hash.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as hash } from "../hash-
|
|
1
|
+
import { t as hash } from "../hash-PAfnyu2k.mjs";
|
|
2
2
|
export { hash };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as launchEditor } from "../launch-editor-
|
|
1
|
+
import { t as launchEditor } from "../launch-editor-DIzaS5EG.mjs";
|
|
2
2
|
export { launchEditor };
|
package/dist/utils/open.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as open } from "../open-
|
|
1
|
+
import { t as open } from "../open-Deb5xmIT.mjs";
|
|
2
2
|
export { open };
|
|
@@ -143,7 +143,8 @@ function serveStaticNodeMiddleware(dir, options) {
|
|
|
143
143
|
res.end();
|
|
144
144
|
return;
|
|
145
145
|
}
|
|
146
|
-
const
|
|
146
|
+
const url = req.url ?? "/";
|
|
147
|
+
const file = await resolveTarget(absDir, url, opts.indexNames, opts.single);
|
|
147
148
|
if (!file) {
|
|
148
149
|
if (next) {
|
|
149
150
|
next();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { B as SharedStatePatch, F as ImmutableObject, I as ImmutableSet, L as SharedState, M as Immutable, N as ImmutableArray, P as ImmutableMap, R as SharedStateEvents, V as createSharedState, z as SharedStateOptions } from "../devframe-
|
|
1
|
+
import { B as SharedStatePatch, F as ImmutableObject, I as ImmutableSet, L as SharedState, M as Immutable, N as ImmutableArray, P as ImmutableMap, R as SharedStateEvents, V as createSharedState, z as SharedStateOptions } from "../devframe-DgvncQy2.mjs";
|
|
2
2
|
export { Immutable, ImmutableArray, ImmutableMap, ImmutableObject, ImmutableSet, SharedState, SharedStateEvents, SharedStateOptions, SharedStatePatch, createSharedState };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as createSharedState } from "../shared-state-
|
|
1
|
+
import { t as createSharedState } from "../shared-state-QtMas0NG.mjs";
|
|
2
2
|
export { createSharedState };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as createStreamReader, C as BufferedChunk, D as StreamReader, E as StreamErrorPayload, O as StreamSink, T as CreateStreamSinkOptions, j as createStreamSink, k as StreamSinkEvents, w as CreateStreamReaderOptions } from "../devframe-
|
|
1
|
+
import { A as createStreamReader, C as BufferedChunk, D as StreamReader, E as StreamErrorPayload, O as StreamSink, T as CreateStreamSinkOptions, j as createStreamSink, k as StreamSinkEvents, w as CreateStreamReaderOptions } from "../devframe-DgvncQy2.mjs";
|
|
2
2
|
export { BufferedChunk, CreateStreamReaderOptions, CreateStreamSinkOptions, StreamErrorPayload, StreamReader, StreamSink, StreamSinkEvents, createStreamReader, createStreamSink };
|
package/dist/utils/when.d.mts
CHANGED
|
@@ -381,4 +381,4 @@ declare function evaluateWhen<T extends object, const E extends string>(expressi
|
|
|
381
381
|
*/
|
|
382
382
|
declare function resolveContextValue<T extends Record<string, unknown>>(key: string, context: T): unknown;
|
|
383
383
|
//#endregion
|
|
384
|
-
export { EvaluateWhenOptions, WhenContext,
|
|
384
|
+
export { EvaluateWhenOptions, WhenContext, WhenExpression, evaluateWhen, resolveContextValue };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devframe",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.6.0-beta.
|
|
4
|
+
"version": "0.6.0-beta.3",
|
|
5
5
|
"description": "Framework for building generic devframes",
|
|
6
6
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"./node": "./dist/node/index.mjs",
|
|
32
32
|
"./node/auth": "./dist/node/auth.mjs",
|
|
33
33
|
"./node/hub-internals": "./dist/node/hub-internals.mjs",
|
|
34
|
+
"./recipes/interactive-auth": "./dist/recipes/interactive-auth.mjs",
|
|
34
35
|
"./recipes/open-helpers": "./dist/recipes/open-helpers.mjs",
|
|
35
36
|
"./rpc": "./dist/rpc/index.mjs",
|
|
36
37
|
"./rpc/client": "./dist/rpc/client.mjs",
|
|
@@ -69,32 +70,32 @@
|
|
|
69
70
|
}
|
|
70
71
|
},
|
|
71
72
|
"dependencies": {
|
|
72
|
-
"@valibot/to-json-schema": "^1.7.
|
|
73
|
+
"@valibot/to-json-schema": "^1.7.1",
|
|
73
74
|
"birpc": "^4.0.0",
|
|
74
75
|
"cac": "^7.0.0",
|
|
75
|
-
"crossws": "^0.4.
|
|
76
|
+
"crossws": "^0.4.9",
|
|
76
77
|
"destr": "^2.0.5",
|
|
77
78
|
"h3": "2.0.1-rc.22",
|
|
78
79
|
"mrmime": "^2.0.1",
|
|
79
80
|
"nostics": "^1.1.4",
|
|
80
81
|
"pathe": "^2.0.3",
|
|
81
82
|
"ufo": "^1.6.4",
|
|
82
|
-
"valibot": "^1.4.
|
|
83
|
+
"valibot": "^1.4.2"
|
|
83
84
|
},
|
|
84
85
|
"devDependencies": {
|
|
85
86
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
86
87
|
"get-port-please": "^3.2.0",
|
|
87
|
-
"immer": "^11.1.
|
|
88
|
-
"launch-editor": "^2.
|
|
88
|
+
"immer": "^11.1.11",
|
|
89
|
+
"launch-editor": "^2.14.1",
|
|
89
90
|
"mlly": "^1.8.2",
|
|
90
|
-
"obug": "^2.1.
|
|
91
|
+
"obug": "^2.1.3",
|
|
91
92
|
"ohash": "^2.0.11",
|
|
92
93
|
"open": "^11.0.0",
|
|
93
94
|
"p-limit": "^7.3.0",
|
|
94
95
|
"perfect-debounce": "^2.1.0",
|
|
95
96
|
"structured-clone-es": "^2.0.0",
|
|
96
|
-
"tinyglobby": "^0.2.
|
|
97
|
-
"tsdown": "^0.22.
|
|
97
|
+
"tinyglobby": "^0.2.17",
|
|
98
|
+
"tsdown": "^0.22.3",
|
|
98
99
|
"ua-parser-modern": "^0.1.1",
|
|
99
100
|
"whenexpr": "^0.1.2",
|
|
100
101
|
"ws": "^8.21.0"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { promisify } from "node:util";
|
|
2
2
|
import fs from "node:fs";
|
|
3
|
-
import os from "node:os";
|
|
4
3
|
import process from "node:process";
|
|
4
|
+
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import childProcess, { execFile } from "node:child_process";
|