devframe 0.9.20 → 0.10.1
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-B2PZsp-J.mjs +191 -0
- package/dist/{_shared-BIUet_Jh.d.mts → _shared-D1ebaX_J.d.mts} +13 -14
- package/dist/adapters/build.d.mts +3 -4
- package/dist/adapters/build.mjs +4 -5
- package/dist/adapters/cac.d.mts +3 -4
- package/dist/adapters/cac.mjs +3 -3
- package/dist/adapters/dev.d.mts +8 -8
- package/dist/adapters/dev.mjs +2 -2
- package/dist/adapters/embedded.d.mts +1 -1
- package/dist/adapters/initiate.d.mts +8 -8
- package/dist/adapters/initiate.mjs +1 -1
- package/dist/adapters/mcp.d.mts +4 -142
- package/dist/adapters/mcp.mjs +1 -597
- package/dist/agentic-DLqHMOyN.d.mts +30 -0
- package/dist/browser-agent-Pu-FLk6I.mjs +26 -0
- package/dist/browser-agent-rpc-BXhoSh1z.mjs +70 -0
- package/dist/cli/main.mjs +12 -260
- package/dist/client/index.d.mts +6 -6
- package/dist/client/index.mjs +12 -87
- package/dist/constants.d.mts +2 -1
- package/dist/constants.mjs +2 -1
- package/dist/{context-BLHBDQcZ.d.mts → context--tVkJw3W.d.mts} +127 -47
- package/dist/{context-BLXXjoBW.mjs → context-BqpgC5tq.mjs} +55 -5
- package/dist/{context-jXO5vzjH.mjs → context-CHpyLX8W.mjs} +1 -1
- package/dist/{context-BA5FPz7K.d.mts → context-D3qBv0IX.d.mts} +1 -1
- package/dist/{dev-BdKKOH8S.mjs → dev-BTbLJekh.mjs} +16 -24
- package/dist/{diagnostics-DZA6KQ_Z.mjs → diagnostics-Cx4_VjlG.mjs} +11 -3
- package/dist/dist-CO98PBnQ.mjs +265 -0
- package/dist/{host-agent-C3MBpNCd.mjs → host-agent-mIbQ6Qi5.mjs} +14 -13
- package/dist/import-runtime-module-BzlEQ9PI.mjs +24 -0
- package/dist/in-page-channel/index.d.mts +16 -12
- package/dist/in-page-channel/index.mjs +42 -14
- package/dist/index-Bia1vKjL.d.mts +218 -0
- package/dist/index-CeEtxDmK.d.mts +78 -0
- package/dist/{index-r6NstVmM.d.mts → index-D-2IdY1I.d.mts} +2 -2
- package/dist/{index-CiA6C705.d.mts → index-DuEm0sDH.d.mts} +1 -1
- package/dist/index.d.mts +4 -11
- package/dist/index.mjs +1 -10
- package/dist/{instance-registry-DCq762YJ.mjs → instance-registry-DtvYxc0Y.mjs} +1 -1
- package/dist/{instance-shell-C6Vg97lg.d.mts → instance-shell-CXnpSuK7.d.mts} +31 -5
- package/dist/{instance-shell-yfrM3_vK.mjs → instance-shell-wC2sfEU_.mjs} +7 -7
- package/dist/interactive-auth-BCa_iamv.mjs +384 -0
- package/dist/internal/index.d.mts +66 -22
- package/dist/internal/index.mjs +143 -8
- package/dist/mrmime-40h5OOIp.mjs +448 -0
- 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 +2 -4
- package/dist/node/index.mjs +2 -2
- package/dist/{nostics-0sKe5HIj.d.mts → nostics-DWvukRwa.d.mts} +11 -2
- package/dist/{origin-D_eBKEzr.mjs → origin-DZit9g29.mjs} +1 -21
- package/dist/recipes/interactive-auth.d.mts +2 -2
- package/dist/recipes/interactive-auth.mjs +1 -231
- package/dist/{remote-assets-D0StJVLp.mjs → remote-assets-B9MeWmW6.mjs} +2 -2
- package/dist/rpc/client.d.mts +1 -1
- package/dist/rpc/client.mjs +1 -1
- package/dist/rpc/dump.d.mts +2 -1
- package/dist/rpc/index.d.mts +3 -2
- package/dist/rpc/server.d.mts +1 -1
- package/dist/rpc/server.mjs +1 -1
- package/dist/rpc/transports/sse-client.d.mts +1 -1
- package/dist/rpc/transports/sse-server.d.mts +3 -3
- package/dist/rpc/transports/sse-server.mjs +1 -1
- package/dist/rpc/transports/ws-bun.d.mts +2 -2
- package/dist/rpc/transports/ws-bun.mjs +1 -1
- package/dist/rpc/transports/ws-client.d.mts +1 -1
- package/dist/rpc/transports/ws-deno.d.mts +2 -2
- package/dist/rpc/transports/ws-deno.mjs +1 -1
- package/dist/rpc/transports/ws-server.d.mts +1 -1
- package/dist/rpc/transports/ws-server.mjs +1 -1
- package/dist/{rpc-core-BlL-Ip8n.d.mts → rpc-core-B6n9MQsc.d.mts} +4 -4
- package/dist/{rpc-core-CvkU23bQ.mjs → rpc-core-BXyMjbKG.mjs} +1 -1
- package/dist/{services-install-Ben4yh52.mjs → services-install-D5YUwFXW.mjs} +17 -1
- package/dist/{sse-client-BcbYwXdD.d.mts → sse-client-DNdscfu_.d.mts} +2 -2
- package/dist/{storage-B70AXK64.mjs → storage-CHD1IkqU.mjs} +1 -1
- package/dist/tool-input-BAQXvvqL.mjs +393 -0
- package/dist/types/index.d.mts +4 -4
- package/dist/{types-D2vGd7-2.d.mts → types-BmDbfHCx.d.mts} +2 -3
- package/dist/utils/debounce.d.mts +50 -0
- package/dist/utils/debounce.mjs +88 -0
- package/dist/utils/events.d.mts +1 -1
- package/dist/utils/launch-editor.d.mts +8 -0
- package/dist/utils/launch-editor.mjs +36 -1
- package/dist/utils/nostics.d.mts +2 -2
- 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/simple-schema.d.mts +3 -2
- package/dist/utils/streaming-channel.d.mts +1 -1
- package/dist/utils/url.d.mts +31 -0
- package/dist/utils/url.mjs +58 -0
- package/dist/{ws-client-CNpP6Ium.d.mts → ws-client-6Mrz6eC4.d.mts} +2 -2
- package/dist/{ws-server-BB8jhxeT.d.mts → ws-server-y2R76aSW.d.mts} +2 -2
- package/package.json +10 -11
- package/dist/_shared-U8D-xzrp.mjs +0 -115
- package/dist/agent-tool-name-DGzeuWcO.mjs +0 -31
- package/dist/client-assets-DNdhagGm.mjs +0 -16
- package/dist/nostics-DD6gsDZA.mjs +0 -108
- package/dist/recipes/common-rpc-functions.d.mts +0 -70
- package/dist/recipes/common-rpc-functions.mjs +0 -115
- package/dist/simple-schema-Bi40l-P6.mjs +0 -154
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
import { colors } from "./utils/colors.mjs";
|
|
2
|
+
import { defineDiagnostics } from "nostics";
|
|
3
|
+
import { ansiFormatter } from "nostics/formatters/ansi";
|
|
4
|
+
//#region src/events.ts
|
|
5
|
+
/**
|
|
6
|
+
* Centralized registry of the core devframe event names: the node-side host
|
|
7
|
+
* bus events, the client RPC connection events, and the server→client
|
|
8
|
+
* broadcast notifications, so these names live in one place instead of
|
|
9
|
+
* scattered string literals.
|
|
10
|
+
*
|
|
11
|
+
* **Keep this in sync with [`docs/content/8.references/3.events.md`](../../../docs/content/8.references/3.events.md)**
|
|
12
|
+
* (the "Core devframe events" section): every name here appears in that page's
|
|
13
|
+
* tables, and every name there resolves to an entry here. Add, rename, or
|
|
14
|
+
* remove a name in both places in the same change, and reference
|
|
15
|
+
* `DEVFRAME_EVENTS.*` from call sites instead of re-typing a literal.
|
|
16
|
+
*
|
|
17
|
+
* This map covers **notifications** (events, broadcasts). The request/response
|
|
18
|
+
* RPC endpoints of the shared-state, streaming, and auth-handshake protocols
|
|
19
|
+
* (`devframe:rpc:server-state:*`, `devframe:streaming:subscribe`,
|
|
20
|
+
* `anonymous:devframe:auth`, …) are defined at their handlers and typed in
|
|
21
|
+
* `types/rpc-augments.ts`; they aren't events and stay out of this map.
|
|
22
|
+
*
|
|
23
|
+
* The `EventEmitter` maps (`RpcClientEvents`, `DevframeAgentHostEvents`) and the
|
|
24
|
+
* `DevframeRpcClientFunctions` augmentation declare these names as type-level
|
|
25
|
+
* keys (a literal is unavoidable in a type position); those declarations mirror
|
|
26
|
+
* this map and move with it.
|
|
27
|
+
*/
|
|
28
|
+
const DEVFRAME_EVENTS = {
|
|
29
|
+
/**
|
|
30
|
+
* Node-side host `EventEmitter` events. The agent host (`ctx.agent.events`)
|
|
31
|
+
* emits these as its tool/resource surface changes; protocol adapters (e.g.
|
|
32
|
+
* MCP) subscribe to re-publish their manifest.
|
|
33
|
+
*/
|
|
34
|
+
bus: {
|
|
35
|
+
agentManifestChanged: "agent:manifest:changed",
|
|
36
|
+
agentToolRegistered: "agent:tool:registered",
|
|
37
|
+
agentToolUnregistered: "agent:tool:unregistered",
|
|
38
|
+
agentResourceRegistered: "agent:resource:registered",
|
|
39
|
+
agentResourceUnregistered: "agent:resource:unregistered"
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* Client-side RPC connection `EventEmitter` events (`rpc.events`) a UI
|
|
43
|
+
* subscribes to for connection lifecycle and error surfacing.
|
|
44
|
+
*/
|
|
45
|
+
client: {
|
|
46
|
+
isTrustedUpdated: "rpc:is-trusted:updated",
|
|
47
|
+
error: "rpc:error",
|
|
48
|
+
connectionStatus: "connection:status",
|
|
49
|
+
connectionError: "connection:error"
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Broadcast notifications the server pushes to clients (server → client),
|
|
53
|
+
* `devframe:` prefix. The paired request methods (subscribe/get/set/…) are
|
|
54
|
+
* RPC endpoints, not events, and are omitted deliberately.
|
|
55
|
+
*/
|
|
56
|
+
broadcast: {
|
|
57
|
+
authRevoked: "devframe:auth:revoked",
|
|
58
|
+
clientStateUpdated: "devframe:rpc:client-state:updated",
|
|
59
|
+
clientStatePatch: "devframe:rpc:client-state:patch",
|
|
60
|
+
streamingChunk: "devframe:streaming:chunk",
|
|
61
|
+
streamingEnd: "devframe:streaming:end",
|
|
62
|
+
streamingUploadCancel: "devframe:streaming:upload-cancel"
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* In-page channel notifications the page script pushes to its panels
|
|
66
|
+
* (page script → panel), `devframe:` prefix. The paired request methods
|
|
67
|
+
* (`devframe:in-page:page-state:subscribe`/`set`/`patch`) are call
|
|
68
|
+
* endpoints, not events, and are defined at their handlers
|
|
69
|
+
* (`in-page-channel/state.ts`).
|
|
70
|
+
*/
|
|
71
|
+
inPageChannel: {
|
|
72
|
+
panelStateUpdated: "devframe:in-page:panel-state:updated",
|
|
73
|
+
panelStatePatch: "devframe:in-page:panel-state:patch"
|
|
74
|
+
},
|
|
75
|
+
/** `postMessage` channels the runtime posts across window boundaries. */
|
|
76
|
+
postMessage: {
|
|
77
|
+
remoteAssetsError: "devframe:remote-assets-error",
|
|
78
|
+
inPageChannel: "devframe:in-page-channel"
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region src/utils/nostics.ts
|
|
83
|
+
const formatAnsi = ansiFormatter(colors);
|
|
84
|
+
/**
|
|
85
|
+
* The reporter every {@link defineDiagnostics} call below wires in ahead of
|
|
86
|
+
* any caller-supplied ones: prints the diagnostic through devframe's own
|
|
87
|
+
* ANSI colors via `console[method]` (default `'warn'`).
|
|
88
|
+
*/
|
|
89
|
+
function devframeReporter(d, { method = "warn" } = {}) {
|
|
90
|
+
console[method](formatAnsi(d));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Drop-in replacement for `nostics`'s `defineDiagnostics()` with devframe's
|
|
94
|
+
* ANSI console reporter pre-wired ahead of any `reporters` passed in. Every
|
|
95
|
+
* `diagnostics.ts` in devframe core, `@devframes/hub`, `@devframes/json-render`,
|
|
96
|
+
* and the built-in plugins defines its codes through this instead of
|
|
97
|
+
* `nostics`'s own `defineDiagnostics`; the reporter registration lives
|
|
98
|
+
* here, once, so none of them need to build their own reporter (`colors`,
|
|
99
|
+
* `ansiFormatter`) or take a direct dependency on `nostics` themselves.
|
|
100
|
+
*/
|
|
101
|
+
function defineDiagnostics$1(options) {
|
|
102
|
+
return defineDiagnostics({
|
|
103
|
+
...options,
|
|
104
|
+
reporters: [devframeReporter, ...options.reporters ?? []]
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region ../../node_modules/.pnpm/birpc@4.2.0/node_modules/birpc/dist/index.mjs
|
|
109
|
+
function createPromiseWithResolvers() {
|
|
110
|
+
let resolve;
|
|
111
|
+
let reject;
|
|
112
|
+
return {
|
|
113
|
+
promise: new Promise((res, rej) => {
|
|
114
|
+
resolve = res;
|
|
115
|
+
reject = rej;
|
|
116
|
+
}),
|
|
117
|
+
resolve,
|
|
118
|
+
reject
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const random = Math.random.bind(Math);
|
|
122
|
+
const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
|
|
123
|
+
function nanoid(size = 21) {
|
|
124
|
+
let id = "";
|
|
125
|
+
let i = size;
|
|
126
|
+
while (i--) id += urlAlphabet[random() * 64 | 0];
|
|
127
|
+
return id;
|
|
128
|
+
}
|
|
129
|
+
const DEFAULT_TIMEOUT = 6e4;
|
|
130
|
+
const defaultSerialize = (i) => i;
|
|
131
|
+
const defaultDeserialize = defaultSerialize;
|
|
132
|
+
const { clearTimeout, setTimeout } = globalThis;
|
|
133
|
+
function createBirpc($functions, options) {
|
|
134
|
+
const { post, on, off = () => {}, eventNames = [], serialize = defaultSerialize, deserialize = defaultDeserialize, resolver, bind = "rpc", timeout = DEFAULT_TIMEOUT, proxify = true } = options;
|
|
135
|
+
let $closed = false;
|
|
136
|
+
const _rpcPromiseMap = /* @__PURE__ */ new Map();
|
|
137
|
+
let _promiseInit;
|
|
138
|
+
let rpc;
|
|
139
|
+
async function _call(method, args, event, optional) {
|
|
140
|
+
if ($closed) throw new Error(`[birpc] rpc is closed, cannot call "${method}"`);
|
|
141
|
+
const req = {
|
|
142
|
+
m: method,
|
|
143
|
+
a: args,
|
|
144
|
+
t: "q"
|
|
145
|
+
};
|
|
146
|
+
if (optional) req.o = true;
|
|
147
|
+
const send = async (_req) => post(serialize(_req));
|
|
148
|
+
if (event) {
|
|
149
|
+
await send(req);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (_promiseInit) try {
|
|
153
|
+
await _promiseInit;
|
|
154
|
+
} finally {
|
|
155
|
+
_promiseInit = void 0;
|
|
156
|
+
}
|
|
157
|
+
let { promise, resolve, reject } = createPromiseWithResolvers();
|
|
158
|
+
const id = nanoid();
|
|
159
|
+
req.i = id;
|
|
160
|
+
let timeoutId;
|
|
161
|
+
async function handler(newReq = req) {
|
|
162
|
+
if (timeout >= 0) {
|
|
163
|
+
timeoutId = setTimeout(() => {
|
|
164
|
+
try {
|
|
165
|
+
if (options.onTimeoutError?.call(rpc, method, args) !== true) throw new Error(`[birpc] timeout on calling "${method}"`);
|
|
166
|
+
} catch (e) {
|
|
167
|
+
reject(e);
|
|
168
|
+
}
|
|
169
|
+
_rpcPromiseMap.delete(id);
|
|
170
|
+
}, timeout);
|
|
171
|
+
if (typeof timeoutId === "object") timeoutId = timeoutId.unref?.();
|
|
172
|
+
}
|
|
173
|
+
_rpcPromiseMap.set(id, {
|
|
174
|
+
resolve,
|
|
175
|
+
reject,
|
|
176
|
+
timeoutId,
|
|
177
|
+
method
|
|
178
|
+
});
|
|
179
|
+
await send(newReq);
|
|
180
|
+
return promise;
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
if (options.onRequest) await options.onRequest.call(rpc, req, handler, resolve);
|
|
184
|
+
else await handler();
|
|
185
|
+
} catch (e) {
|
|
186
|
+
if (options.onGeneralError?.call(rpc, e) !== true) throw e;
|
|
187
|
+
return;
|
|
188
|
+
} finally {
|
|
189
|
+
clearTimeout(timeoutId);
|
|
190
|
+
_rpcPromiseMap.delete(id);
|
|
191
|
+
}
|
|
192
|
+
return promise;
|
|
193
|
+
}
|
|
194
|
+
const builtinMethods = {
|
|
195
|
+
$call: (method, ...args) => _call(method, args, false),
|
|
196
|
+
$callOptional: (method, ...args) => _call(method, args, false, true),
|
|
197
|
+
$callEvent: (method, ...args) => _call(method, args, true),
|
|
198
|
+
$callRaw: (options) => _call(options.method, options.args, options.event, options.optional),
|
|
199
|
+
$rejectPendingCalls,
|
|
200
|
+
get $closed() {
|
|
201
|
+
return $closed;
|
|
202
|
+
},
|
|
203
|
+
get $meta() {
|
|
204
|
+
return options.meta;
|
|
205
|
+
},
|
|
206
|
+
$close,
|
|
207
|
+
$functions
|
|
208
|
+
};
|
|
209
|
+
if (proxify) rpc = new Proxy({}, { get(_, method) {
|
|
210
|
+
if (Object.hasOwn(builtinMethods, method)) return builtinMethods[method];
|
|
211
|
+
if (method === "then" && !eventNames.includes("then") && !("then" in $functions)) return void 0;
|
|
212
|
+
const sendEvent = (...args) => _call(method, args, true);
|
|
213
|
+
if (eventNames.includes(method)) {
|
|
214
|
+
sendEvent.asEvent = sendEvent;
|
|
215
|
+
return sendEvent;
|
|
216
|
+
}
|
|
217
|
+
const sendCall = (...args) => _call(method, args, false);
|
|
218
|
+
sendCall.asEvent = sendEvent;
|
|
219
|
+
return sendCall;
|
|
220
|
+
} });
|
|
221
|
+
else rpc = builtinMethods;
|
|
222
|
+
function $close(customError) {
|
|
223
|
+
$closed = true;
|
|
224
|
+
_rpcPromiseMap.forEach(({ reject, method }) => {
|
|
225
|
+
const error = /* @__PURE__ */ new Error(`[birpc] rpc is closed, cannot call "${method}"`);
|
|
226
|
+
if (customError) {
|
|
227
|
+
customError.cause ??= error;
|
|
228
|
+
return reject(customError);
|
|
229
|
+
}
|
|
230
|
+
reject(error);
|
|
231
|
+
});
|
|
232
|
+
_rpcPromiseMap.clear();
|
|
233
|
+
off(onMessage);
|
|
234
|
+
}
|
|
235
|
+
function $rejectPendingCalls(handler) {
|
|
236
|
+
const handlerResults = Array.from(_rpcPromiseMap.values()).map(({ method, reject }) => {
|
|
237
|
+
if (!handler) return reject(/* @__PURE__ */ new Error(`[birpc]: rejected pending call "${method}".`));
|
|
238
|
+
return handler({
|
|
239
|
+
method,
|
|
240
|
+
reject
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
_rpcPromiseMap.clear();
|
|
244
|
+
return handlerResults;
|
|
245
|
+
}
|
|
246
|
+
async function onMessage(data, ...extra) {
|
|
247
|
+
let msg;
|
|
248
|
+
try {
|
|
249
|
+
msg = deserialize(data);
|
|
250
|
+
} catch (e) {
|
|
251
|
+
if (options.onGeneralError?.call(rpc, e) !== true) throw e;
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
if (msg.t === "q") {
|
|
255
|
+
const { m: method, a: args, o: optional } = msg;
|
|
256
|
+
let result, error;
|
|
257
|
+
let fn = await (resolver ? resolver.call(rpc, method, $functions[method]) : $functions[method]);
|
|
258
|
+
if (optional) fn ||= () => void 0;
|
|
259
|
+
if (!fn) error = /* @__PURE__ */ new Error(`[birpc] function "${method}" not found`);
|
|
260
|
+
else try {
|
|
261
|
+
result = await fn.apply(bind === "rpc" ? rpc : $functions, args);
|
|
262
|
+
} catch (e) {
|
|
263
|
+
error = e;
|
|
264
|
+
}
|
|
265
|
+
if (msg.i) {
|
|
266
|
+
if (error && options.onFunctionError) {
|
|
267
|
+
if (options.onFunctionError.call(rpc, error, method, args) === true) return;
|
|
268
|
+
}
|
|
269
|
+
if (!error) try {
|
|
270
|
+
await post(serialize({
|
|
271
|
+
t: "s",
|
|
272
|
+
i: msg.i,
|
|
273
|
+
r: result
|
|
274
|
+
}), ...extra);
|
|
275
|
+
return;
|
|
276
|
+
} catch (e) {
|
|
277
|
+
error = e;
|
|
278
|
+
if (options.onGeneralError?.call(rpc, e, method, args) !== true) throw e;
|
|
279
|
+
}
|
|
280
|
+
try {
|
|
281
|
+
await post(serialize({
|
|
282
|
+
t: "s",
|
|
283
|
+
i: msg.i,
|
|
284
|
+
e: error
|
|
285
|
+
}), ...extra);
|
|
286
|
+
} catch (e) {
|
|
287
|
+
if (options.onGeneralError?.call(rpc, e, method, args) !== true) throw e;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
} else {
|
|
291
|
+
const { i: ack, r: result, e: error } = msg;
|
|
292
|
+
const promise = _rpcPromiseMap.get(ack);
|
|
293
|
+
if (promise) {
|
|
294
|
+
clearTimeout(promise.timeoutId);
|
|
295
|
+
if (error) promise.reject(error);
|
|
296
|
+
else promise.resolve(result);
|
|
297
|
+
}
|
|
298
|
+
_rpcPromiseMap.delete(ack);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
_promiseInit = on(onMessage);
|
|
302
|
+
return rpc;
|
|
303
|
+
}
|
|
304
|
+
//#endregion
|
|
305
|
+
//#region src/agent/safety.ts
|
|
306
|
+
/**
|
|
307
|
+
* An agent tool's safety classification: the explicit `agent.safety`, else
|
|
308
|
+
* inferred from the function `type` (`static`/`query` are read-only, the rest
|
|
309
|
+
* mutate). Shared by every agent surface (MCP host, WebMCP, in-page bridge).
|
|
310
|
+
*/
|
|
311
|
+
function resolveAgentSafety(type, agent) {
|
|
312
|
+
if (agent.safety) return agent.safety;
|
|
313
|
+
return type === "static" || type === "query" || type == null ? "read" : "action";
|
|
314
|
+
}
|
|
315
|
+
//#endregion
|
|
316
|
+
//#region src/agent/to-json-schema.ts
|
|
317
|
+
const FALLBACK_OBJECT_SCHEMA = Object.freeze({
|
|
318
|
+
type: "object",
|
|
319
|
+
additionalProperties: true
|
|
320
|
+
});
|
|
321
|
+
/**
|
|
322
|
+
* Convert a Standard Schema to JSON Schema for the agent/MCP surface.
|
|
323
|
+
*
|
|
324
|
+
* Devframe stays validator-neutral, so conversion uses the schema's own
|
|
325
|
+
* [Standard JSON Schema](https://standardschema.dev/) converter
|
|
326
|
+
* (`~standard.jsonSchema`) when the validator provides one; zod 4 does,
|
|
327
|
+
* for example. Validators without a native converter (e.g. valibot) degrade
|
|
328
|
+
* to a permissive object schema rather than pulling in a converter library.
|
|
329
|
+
*/
|
|
330
|
+
function safeToJsonSchema(schema) {
|
|
331
|
+
const standard = schema["~standard"];
|
|
332
|
+
if (standard.jsonSchema) try {
|
|
333
|
+
return standard.jsonSchema.input({ target: "draft-2020-12" });
|
|
334
|
+
} catch {
|
|
335
|
+
return FALLBACK_OBJECT_SCHEMA;
|
|
336
|
+
}
|
|
337
|
+
return FALLBACK_OBJECT_SCHEMA;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* JSON Schema for an RPC function's positional args on the agent/MCP
|
|
341
|
+
* surface. Each positional arg is advertised under `arg0` / `arg1` / …,
|
|
342
|
+
* matching how the agent bridge coerces the incoming object payload back
|
|
343
|
+
* into positional arguments.
|
|
344
|
+
*
|
|
345
|
+
* Returns `{ type: 'object', properties: {} }` when there are no args.
|
|
346
|
+
* @internal
|
|
347
|
+
*/
|
|
348
|
+
function argsToJsonSchema(args) {
|
|
349
|
+
if (!args || args.length === 0) return {
|
|
350
|
+
type: "object",
|
|
351
|
+
properties: {}
|
|
352
|
+
};
|
|
353
|
+
const properties = {};
|
|
354
|
+
const required = [];
|
|
355
|
+
for (let i = 0; i < args.length; i++) {
|
|
356
|
+
const key = `arg${i}`;
|
|
357
|
+
properties[key] = safeToJsonSchema(args[i]);
|
|
358
|
+
required.push(key);
|
|
359
|
+
}
|
|
360
|
+
return {
|
|
361
|
+
type: "object",
|
|
362
|
+
properties,
|
|
363
|
+
required,
|
|
364
|
+
additionalProperties: false
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
//#endregion
|
|
368
|
+
//#region src/tool-input.ts
|
|
369
|
+
/**
|
|
370
|
+
* Convert an object-shaped tool input into positional arguments.
|
|
371
|
+
*
|
|
372
|
+
* Tool schemas expose positional parameters as `arg0`, `arg1`, and so on.
|
|
373
|
+
* Arrays pass through for callers that already provide positional arguments.
|
|
374
|
+
*/
|
|
375
|
+
function collectPositionalArgs(input, argumentCount) {
|
|
376
|
+
if (Array.isArray(input)) return input;
|
|
377
|
+
if (input === void 0 || input === null) return [];
|
|
378
|
+
if (typeof input !== "object") return void 0;
|
|
379
|
+
const record = input;
|
|
380
|
+
if (argumentCount != null) return Array.from({ length: argumentCount }, (_, index) => record[`arg${index}`]);
|
|
381
|
+
if ("arg0" in record) {
|
|
382
|
+
const positional = [];
|
|
383
|
+
while (`arg${positional.length}` in record) positional.push(record[`arg${positional.length}`]);
|
|
384
|
+
return positional;
|
|
385
|
+
}
|
|
386
|
+
return Object.keys(record).length === 0 ? [] : void 0;
|
|
387
|
+
}
|
|
388
|
+
/** Convert tool input for an RPC, preserving an untyped payload as arg 0. */
|
|
389
|
+
function toolInputToRpcArgs(input, argumentCount) {
|
|
390
|
+
return collectPositionalArgs(input, argumentCount) ?? [input];
|
|
391
|
+
}
|
|
392
|
+
//#endregion
|
|
393
|
+
export { defineDiagnostics$1 as a, createBirpc as i, argsToJsonSchema as n, DEVFRAME_EVENTS as o, resolveAgentSafety as r, toolInputToRpcArgs as t };
|
package/dist/types/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { $ as
|
|
1
|
+
import { m as RpcFunctionAgentOptions } from "../types-BmDbfHCx.mjs";
|
|
2
|
+
import { $ as DevframeServiceDefinition, B as DevframeDefinition, Bt as AgentTool, Ct as DevframeRpcClientFunctions, Dt as DevframeStorageScope, Et as DevframeHost, F as CreateMcpServerOptions, Ft as AgentHandle, G as DevframeSetupInfo, Gt as DevframeAgentHostEvents, H as DevframeDockDefaults, Ht as AgentToolProvider, I as McpConnectionInfo, It as AgentManifest, J as DevframeSseOptions, Jt as EventsMap, K as DevframeSnapshotRpcEntry, Kt as EventEmitter, L as McpFetchHandler, Lt as AgentResource, Ot as DevframeDiagnosticsHost, P as CreateMcpFetchHandlerOptions, Q as McpSetting, R as McpServerHandle, Rt as AgentResourceContent, St as DevframeViewHost, Tt as DevframeRpcSharedStates, U as DevframeDuplicationStrategy, Ut as AgentToolProviderHandle, V as DevframeDeploymentKind, Vt as AgentToolInput, W as DevframeRpcOptions, Wt as DevframeAgentHost, X as McpAuthorization, Y as DevframeWsOptions, Z as McpRouteOptions, _t as ScopedClientFunctions, a as DevframeConnectionConfigsRegistry, at as DevframeServiceScopeOf, bt as ScopedSharedStates, c as RpcBroadcastOptions, ct as DevframeServicesScopeRegistry, d as RpcSharedStateHost, dt as DevframeScopedNodeRpc, et as DevframeServiceDescriptor, f as RpcStreamingChannel, ft as DevframeScopedStreamingHost, gt as ScopedBroadcastOptions, ht as DevframeSettingsStore, i as DevframeCapabilities, it as DevframeServiceOf, kt as DevframeDiagnosticsLogger, l as RpcFunctionsHost, lt as DevframeServicesState, m as RpcStreamingHost, mt as DevframeSettingsRegistry, n as ConnectionMetaSse, nt as DevframeServiceInput, o as DevframeNodeContext, ot as DevframeServicesHost, p as RpcStreamingChannelOptions, pt as DevframeSettings, q as DevframeSnapshotRpcInputs, qt as EventUnsubscribe, r as ConnectionMetaWebsocket, rt as DevframeServiceMeta, s as DevframeNodeRpcSession, st as DevframeServicesRegistry, t as ConnectionMeta, tt as DevframeServiceId, u as RpcSharedStateGetOptions, ut as DevframeScopedNodeContext, vt as ScopedRpcFn, wt as DevframeRpcServerFunctions, xt as SettingsForNamespace, yt as ScopedServerFunctions, z as DevframeCliOptions, zt as AgentResourceInput } from "../context--tVkJw3W.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
|
-
import { i as DevframeDefineDiagnosticsOptions } from "../nostics-
|
|
6
|
-
export { AgentHandle, AgentManifest, AgentResource, AgentResourceContent, AgentResourceInput, AgentTool, AgentToolInput, AgentToolProvider, AgentToolProviderHandle, ConnectionMeta, ConnectionMetaSse, ConnectionMetaWebsocket, DevframeAgentHost, DevframeAgentHostEvents, DevframeCapabilities, DevframeCliOptions, DevframeConnectionConfigsRegistry, type DevframeDefineDiagnosticsOptions, DevframeDefinition, DevframeDeploymentKind, DevframeDiagnosticsHost, DevframeDiagnosticsLogger, DevframeDockDefaults, DevframeDuplicationStrategy, DevframeHost, DevframeNodeContext, DevframeNodeRpcSession, type DevframeNodeRpcSessionMeta, DevframeRpcClientFunctions, type DevframeRpcConnection, type DevframeRpcConnectionRequest, DevframeRpcOptions, DevframeRpcServerFunctions, DevframeRpcSharedStates, type DevframeRpcTransportKind, DevframeScopedNodeContext, DevframeScopedNodeRpc, DevframeScopedStreamingHost, DevframeServiceDefinition, DevframeServiceDescriptor, DevframeServiceId, DevframeServiceInput, DevframeServiceMeta, DevframeServiceOf, DevframeServiceScopeOf, DevframeServicesHost, DevframeServicesRegistry, DevframeServicesScopeRegistry, DevframeServicesState, DevframeSettings, DevframeSettingsRegistry, DevframeSettingsStore, DevframeSetupInfo, DevframeSnapshotRpcEntry, DevframeSnapshotRpcInputs, DevframeSseOptions, DevframeStorageScope, DevframeViewHost, DevframeWsOptions, type DevframeWsPeer, EventEmitter, EventUnsubscribe, EventsMap, McpAuthorization, McpRouteOptions, McpSetting, RemoteAssets, RemoteAssetsErrorMessage, RemoteAssetsProvider, RemoteAssetsProviderCustom, RemoteAssetsStore, RpcBroadcastOptions, type RpcFunctionAgentOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, RpcStreamingChannel, RpcStreamingChannelOptions, RpcStreamingHost, ScopedBroadcastOptions, ScopedClientFunctions, ScopedRpcFn, ScopedServerFunctions, ScopedSharedStates, SettingsForNamespace, StaticAssetsSource };
|
|
5
|
+
import { i as DevframeDefineDiagnosticsOptions } from "../nostics-DWvukRwa.mjs";
|
|
6
|
+
export { AgentHandle, AgentManifest, AgentResource, AgentResourceContent, AgentResourceInput, AgentTool, AgentToolInput, AgentToolProvider, AgentToolProviderHandle, ConnectionMeta, ConnectionMetaSse, ConnectionMetaWebsocket, CreateMcpFetchHandlerOptions, CreateMcpServerOptions, DevframeAgentHost, DevframeAgentHostEvents, DevframeCapabilities, DevframeCliOptions, DevframeConnectionConfigsRegistry, type DevframeDefineDiagnosticsOptions, DevframeDefinition, DevframeDeploymentKind, DevframeDiagnosticsHost, DevframeDiagnosticsLogger, DevframeDockDefaults, DevframeDuplicationStrategy, DevframeHost, DevframeNodeContext, DevframeNodeRpcSession, type DevframeNodeRpcSessionMeta, DevframeRpcClientFunctions, type DevframeRpcConnection, type DevframeRpcConnectionRequest, DevframeRpcOptions, DevframeRpcServerFunctions, DevframeRpcSharedStates, type DevframeRpcTransportKind, DevframeScopedNodeContext, DevframeScopedNodeRpc, DevframeScopedStreamingHost, DevframeServiceDefinition, DevframeServiceDescriptor, DevframeServiceId, DevframeServiceInput, DevframeServiceMeta, DevframeServiceOf, DevframeServiceScopeOf, DevframeServicesHost, DevframeServicesRegistry, DevframeServicesScopeRegistry, DevframeServicesState, DevframeSettings, DevframeSettingsRegistry, DevframeSettingsStore, DevframeSetupInfo, DevframeSnapshotRpcEntry, DevframeSnapshotRpcInputs, DevframeSseOptions, DevframeStorageScope, DevframeViewHost, DevframeWsOptions, type DevframeWsPeer, EventEmitter, EventUnsubscribe, EventsMap, McpAuthorization, McpConnectionInfo, McpFetchHandler, McpRouteOptions, McpServerHandle, McpSetting, RemoteAssets, RemoteAssetsErrorMessage, RemoteAssetsProvider, RemoteAssetsProviderCustom, RemoteAssetsStore, RpcBroadcastOptions, type RpcFunctionAgentOptions, RpcFunctionsHost, RpcSharedStateGetOptions, RpcSharedStateHost, RpcStreamingChannel, RpcStreamingChannelOptions, RpcStreamingHost, ScopedBroadcastOptions, ScopedClientFunctions, ScopedRpcFn, ScopedServerFunctions, ScopedSharedStates, SettingsForNamespace, StaticAssetsSource };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
1
|
+
import { t as StandardSchemaV1 } from "./index-CeEtxDmK.mjs";
|
|
3
2
|
//#region src/rpc/utils.d.ts
|
|
4
3
|
/** Infers a TypeScript argument tuple from a Standard Schema array */
|
|
5
4
|
type InferArgsType<S extends RpcArgsSchema | undefined> = S extends readonly [] ? [] : S extends readonly [infer H, ...infer T] ? H extends StandardSchemaV1 ? T extends readonly StandardSchemaV1[] ? [StandardSchemaV1.InferInput<H>, ...InferArgsType<T>] : never : never : never;
|
|
@@ -259,4 +258,4 @@ type RpcDefinitionsFilter<T extends readonly RpcFunctionDefinitionAny[], Type ex
|
|
|
259
258
|
type: Type;
|
|
260
259
|
} ? T[K] : never; };
|
|
261
260
|
//#endregion
|
|
262
|
-
export {
|
|
261
|
+
export { RpcFunctionType as C, InferArgsType as D, Thenable as E, InferReturnType as O, RpcFunctionSetupResult as S, RpcReturnSchema as T, RpcFunctionDefinitionAnyWithContext as _, RpcDefinitionsToFunctionsWithNamespace as a, RpcFunctionDefinitionWithSchemas as b, RpcDumpCollectionOptions as c, RpcDumpRecord as d, RpcDumpRecordError as f, RpcFunctionDefinitionAny as g, RpcFunctionDefinition as h, RpcDefinitionsToFunctions as i, RpcDumpDefinition as l, RpcFunctionAgentOptions as m, RpcArgsSchema as n, RpcDump as o, RpcDumpStore as p, RpcDefinitionsFilter as r, RpcDumpClientOptions as s, EntriesToObject as t, RpcDumpGetter as u, RpcFunctionDefinitionBase as v, RpcFunctionsCollector as w, RpcFunctionDefinitionWithoutSchemas as x, RpcFunctionDefinitionToFunction as y };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/perfect-debounce@2.1.0/node_modules/perfect-debounce/dist/index.d.mts
|
|
2
|
+
//#region src/index.d.ts
|
|
3
|
+
interface DebounceOptions {
|
|
4
|
+
/**
|
|
5
|
+
Call the `fn` on the [leading edge of the timeout](https://css-tricks.com/debouncing-throttling-explained-examples/#article-header-id-1).
|
|
6
|
+
Meaning immediately, instead of waiting for `wait` milliseconds.
|
|
7
|
+
@default false
|
|
8
|
+
*/
|
|
9
|
+
readonly leading?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
Call the `fn` on trailing edge with last used arguments. Result of call is from previous call.
|
|
12
|
+
@default true
|
|
13
|
+
*/
|
|
14
|
+
readonly trailing?: boolean;
|
|
15
|
+
}
|
|
16
|
+
type DebouncedReturn<ArgumentsT extends unknown[], ReturnT> = ((...args: ArgumentsT) => Promise<ReturnT>) & {
|
|
17
|
+
/**
|
|
18
|
+
* Cancel pending function call
|
|
19
|
+
*/
|
|
20
|
+
cancel: () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Immediately invoke pending function call
|
|
23
|
+
*/
|
|
24
|
+
flush: () => Promise<ReturnT> | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Get pending function call
|
|
27
|
+
*/
|
|
28
|
+
isPending: () => boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
Debounce functions
|
|
32
|
+
@param fn - Promise-returning/async function to debounce.
|
|
33
|
+
@param wait - Milliseconds to wait before calling `fn`. Default value is 25ms
|
|
34
|
+
@returns A function that delays calling `fn` until after `wait` milliseconds have elapsed since the last time it was called.
|
|
35
|
+
@example
|
|
36
|
+
```
|
|
37
|
+
import { debounce } from 'perfect-debounce';
|
|
38
|
+
const expensiveCall = async input => input;
|
|
39
|
+
const debouncedFn = debounce(expensiveCall, 200);
|
|
40
|
+
for (const number of [1, 2, 3]) {
|
|
41
|
+
console.log(await debouncedFn(number));
|
|
42
|
+
}
|
|
43
|
+
//=> 1
|
|
44
|
+
//=> 2
|
|
45
|
+
//=> 3
|
|
46
|
+
```
|
|
47
|
+
*/
|
|
48
|
+
declare function debounce<ArgumentsT extends unknown[], ReturnT>(fn: (...args: ArgumentsT) => PromiseLike<ReturnT> | ReturnT, wait?: number, options?: DebounceOptions): DebouncedReturn<ArgumentsT, ReturnT>;
|
|
49
|
+
//#endregion
|
|
50
|
+
export { type DebounceOptions, type DebouncedReturn, debounce };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/perfect-debounce@2.1.0/node_modules/perfect-debounce/dist/index.mjs
|
|
2
|
+
const DEBOUNCE_DEFAULTS = { trailing: true };
|
|
3
|
+
/**
|
|
4
|
+
Debounce functions
|
|
5
|
+
@param fn - Promise-returning/async function to debounce.
|
|
6
|
+
@param wait - Milliseconds to wait before calling `fn`. Default value is 25ms
|
|
7
|
+
@returns A function that delays calling `fn` until after `wait` milliseconds have elapsed since the last time it was called.
|
|
8
|
+
@example
|
|
9
|
+
```
|
|
10
|
+
import { debounce } from 'perfect-debounce';
|
|
11
|
+
const expensiveCall = async input => input;
|
|
12
|
+
const debouncedFn = debounce(expensiveCall, 200);
|
|
13
|
+
for (const number of [1, 2, 3]) {
|
|
14
|
+
console.log(await debouncedFn(number));
|
|
15
|
+
}
|
|
16
|
+
//=> 1
|
|
17
|
+
//=> 2
|
|
18
|
+
//=> 3
|
|
19
|
+
```
|
|
20
|
+
*/
|
|
21
|
+
function debounce(fn, wait = 25, options = {}) {
|
|
22
|
+
options = {
|
|
23
|
+
...DEBOUNCE_DEFAULTS,
|
|
24
|
+
...options
|
|
25
|
+
};
|
|
26
|
+
if (!Number.isFinite(wait)) throw new TypeError("Expected `wait` to be a finite number");
|
|
27
|
+
let leadingValue;
|
|
28
|
+
let timeout;
|
|
29
|
+
let resolveList = [];
|
|
30
|
+
let currentPromise;
|
|
31
|
+
let trailingArgs;
|
|
32
|
+
const applyFn = (_this, args) => {
|
|
33
|
+
currentPromise = _applyPromised(fn, _this, args);
|
|
34
|
+
currentPromise.finally(() => {
|
|
35
|
+
currentPromise = null;
|
|
36
|
+
if (options.trailing && trailingArgs && !timeout) {
|
|
37
|
+
const promise = applyFn(_this, trailingArgs);
|
|
38
|
+
trailingArgs = null;
|
|
39
|
+
return promise;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return currentPromise;
|
|
43
|
+
};
|
|
44
|
+
const debounced = function(...args) {
|
|
45
|
+
if (options.trailing) trailingArgs = args;
|
|
46
|
+
if (currentPromise) return currentPromise;
|
|
47
|
+
return new Promise((resolve) => {
|
|
48
|
+
const shouldCallNow = !timeout && options.leading;
|
|
49
|
+
clearTimeout(timeout);
|
|
50
|
+
timeout = setTimeout(() => {
|
|
51
|
+
timeout = null;
|
|
52
|
+
const promise = options.leading ? leadingValue : applyFn(this, args);
|
|
53
|
+
trailingArgs = null;
|
|
54
|
+
for (const _resolve of resolveList) _resolve(promise);
|
|
55
|
+
resolveList = [];
|
|
56
|
+
}, wait);
|
|
57
|
+
if (shouldCallNow) {
|
|
58
|
+
leadingValue = applyFn(this, args);
|
|
59
|
+
resolve(leadingValue);
|
|
60
|
+
} else resolveList.push(resolve);
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
const _clearTimeout = (timer) => {
|
|
64
|
+
if (timer) {
|
|
65
|
+
clearTimeout(timer);
|
|
66
|
+
timeout = null;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
debounced.isPending = () => !!timeout;
|
|
70
|
+
debounced.cancel = () => {
|
|
71
|
+
_clearTimeout(timeout);
|
|
72
|
+
resolveList = [];
|
|
73
|
+
trailingArgs = null;
|
|
74
|
+
};
|
|
75
|
+
debounced.flush = () => {
|
|
76
|
+
_clearTimeout(timeout);
|
|
77
|
+
if (!trailingArgs || currentPromise) return;
|
|
78
|
+
const args = trailingArgs;
|
|
79
|
+
trailingArgs = null;
|
|
80
|
+
return applyFn(this, args);
|
|
81
|
+
};
|
|
82
|
+
return debounced;
|
|
83
|
+
}
|
|
84
|
+
async function _applyPromised(fn, _this, args) {
|
|
85
|
+
return await fn.apply(_this, args);
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { debounce };
|
package/dist/utils/events.d.mts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
//#region src/utils/launch-editor.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Editor commands `launch-editor` recognizes with a tailored
|
|
4
|
+
* `file:line:column` invocation. Callers that gate an RPC surface's editor
|
|
5
|
+
* argument to this union keep it from spawning an arbitrary command.
|
|
6
|
+
*/
|
|
7
|
+
export type KnownEditor = 'atom' | 'subl' | 'sublime' | 'sublime_text' | 'wstorm' | 'charm' | 'zed' | 'notepad++' | 'vim' | 'mvim' | 'joe' | 'gvim' | 'emacs' | 'emacsclient' | 'rmate' | 'mate' | 'code' | 'code-insiders' | 'codium' | 'vscodium' | 'trae' | 'antigravity' | 'cursor' | 'appcode' | 'clion' | 'idea' | 'phpstorm' | 'pycharm' | 'rubymine' | 'webstorm' | 'goland' | 'rider';
|
|
8
|
+
/** Runtime list of every {@link KnownEditor}. */
|
|
9
|
+
export declare const KNOWN_EDITORS: KnownEditor[];
|
|
2
10
|
/**
|
|
3
11
|
* Open a file in the user's editor.
|
|
4
12
|
*
|
|
@@ -707,6 +707,41 @@ var import_launch_editor = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMi
|
|
|
707
707
|
}
|
|
708
708
|
module.exports = launchEditor;
|
|
709
709
|
})))(), 1);
|
|
710
|
+
/** Runtime list of every {@link KnownEditor}. */
|
|
711
|
+
const KNOWN_EDITORS = [
|
|
712
|
+
"atom",
|
|
713
|
+
"subl",
|
|
714
|
+
"sublime",
|
|
715
|
+
"sublime_text",
|
|
716
|
+
"wstorm",
|
|
717
|
+
"charm",
|
|
718
|
+
"zed",
|
|
719
|
+
"notepad++",
|
|
720
|
+
"vim",
|
|
721
|
+
"mvim",
|
|
722
|
+
"joe",
|
|
723
|
+
"gvim",
|
|
724
|
+
"emacs",
|
|
725
|
+
"emacsclient",
|
|
726
|
+
"rmate",
|
|
727
|
+
"mate",
|
|
728
|
+
"code",
|
|
729
|
+
"code-insiders",
|
|
730
|
+
"codium",
|
|
731
|
+
"vscodium",
|
|
732
|
+
"trae",
|
|
733
|
+
"antigravity",
|
|
734
|
+
"cursor",
|
|
735
|
+
"appcode",
|
|
736
|
+
"clion",
|
|
737
|
+
"idea",
|
|
738
|
+
"phpstorm",
|
|
739
|
+
"pycharm",
|
|
740
|
+
"rubymine",
|
|
741
|
+
"webstorm",
|
|
742
|
+
"goland",
|
|
743
|
+
"rider"
|
|
744
|
+
];
|
|
710
745
|
/**
|
|
711
746
|
* Open a file in the user's editor.
|
|
712
747
|
*
|
|
@@ -720,4 +755,4 @@ function launchEditor(target, editor) {
|
|
|
720
755
|
(0, import_launch_editor.default)(target, editor);
|
|
721
756
|
}
|
|
722
757
|
//#endregion
|
|
723
|
-
export { launchEditor };
|
|
758
|
+
export { KNOWN_EDITORS, launchEditor };
|
package/dist/utils/nostics.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
export { type AnyDiagnosticReporter, type ConsoleMethod, type ConsoleReporterOptions, DevframeDefineDiagnosticsOptions, type Diagnostic, type DiagnosticCallParams, type DiagnosticDefinition, type DiagnosticHandle, type DiagnosticInit, type DiagnosticReporter, type Diagnostics, ansiFormatter, createConsoleReporter, defineDiagnostics, defineProdDiagnostics, formatDiagnostic };
|
|
1
|
+
import { _ as formatDiagnostic, a as DevframeDiagnostics, c as DiagnosticDefinition, d as DiagnosticReporter, f as Diagnostics, g as defineProdDiagnostics, h as defineDiagnostics, i as DevframeDefineDiagnosticsOptions, l as DiagnosticHandle, m as createConsoleReporter, n as ConsoleMethod, o as Diagnostic, p as ansiFormatter, r as ConsoleReporterOptions, s as DiagnosticCallParams, t as AnyDiagnosticReporter, u as DiagnosticInit } from "../nostics-DWvukRwa.mjs";
|
|
2
|
+
export { type AnyDiagnosticReporter, type ConsoleMethod, type ConsoleReporterOptions, DevframeDefineDiagnosticsOptions, DevframeDiagnostics, type Diagnostic, type DiagnosticCallParams, type DiagnosticDefinition, type DiagnosticHandle, type DiagnosticInit, type DiagnosticReporter, type Diagnostics, ansiFormatter, createConsoleReporter, defineDiagnostics, defineProdDiagnostics, formatDiagnostic };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as resolveStaticAssetsSource } from "../remote-assets-
|
|
1
|
+
import { t as resolveStaticAssetsSource } from "../remote-assets-B9MeWmW6.mjs";
|
|
2
2
|
export { resolveStaticAssetsSource };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as DEVFRAME_EVENTS } from "../events-BV4Dj59a.mjs";
|
|
2
|
+
import { t as lookup } from "../mrmime-40h5OOIp.mjs";
|
|
2
3
|
import { realpath, stat } from "node:fs/promises";
|
|
3
4
|
import { extname, join, normalize, resolve, sep } from "pathe";
|
|
4
5
|
import { createReadStream } from "node:fs";
|
|
5
6
|
import { Readable } from "node:stream";
|
|
6
|
-
import { lookup } from "mrmime";
|
|
7
7
|
import { H3, defineHandler } from "h3";
|
|
8
8
|
//#region src/utils/serve-static.ts
|
|
9
9
|
const HTML_EXTENSIONS = [".html", ".htm"];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as SharedStateEvents, D as ImmutableObject, E as ImmutableMap, M as SharedStatePatch, N as createSharedState, O as ImmutableSet, T as ImmutableArray, j as SharedStateOptions, k as SharedState, w as Immutable } from "../context
|
|
1
|
+
import { A as SharedStateEvents, D as ImmutableObject, E as ImmutableMap, M as SharedStatePatch, N as createSharedState, O as ImmutableSet, T as ImmutableArray, j as SharedStateOptions, k as SharedState, w as Immutable } from "../context--tVkJw3W.mjs";
|
|
2
2
|
export { Immutable, ImmutableArray, ImmutableMap, ImmutableObject, ImmutableSet, SharedState, SharedStateEvents, SharedStateOptions, SharedStatePatch, createSharedState };
|