devframe 0.2.0 → 0.2.2

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 (65) hide show
  1. package/README.md +20 -76
  2. package/dist/adapters/build.d.mts +1 -1
  3. package/dist/adapters/build.mjs +5 -6
  4. package/dist/adapters/cli.d.mts +1 -1
  5. package/dist/adapters/cli.mjs +2 -2
  6. package/dist/adapters/dev.d.mts +2 -2
  7. package/dist/adapters/dev.mjs +1 -1
  8. package/dist/adapters/embedded.d.mts +1 -1
  9. package/dist/adapters/mcp.d.mts +2 -2
  10. package/dist/adapters/mcp.mjs +73 -18
  11. package/dist/client/index.d.mts +4 -4
  12. package/dist/client/index.mjs +5 -9
  13. package/dist/{context-DRa0wGsC.d.mts → context-BDpuScNZ.d.mts} +1 -1
  14. package/dist/{dev-CewNNE2R.mjs → dev-CZ9ZQkuO.mjs} +4 -5
  15. package/dist/{devframe-R5Ex5K5L.d.mts → devframe-DAfZWnpI.d.mts} +2 -2
  16. package/dist/{diagnostics-Cg9ycFIM.mjs → diagnostics-DNxVjo6X.mjs} +1 -1
  17. package/dist/helpers/vite.d.mts +1 -1
  18. package/dist/helpers/vite.mjs +3 -3
  19. package/dist/{context-BBi2IQDm.mjs → host-h3-DEfOpa0j.mjs} +28 -5
  20. package/dist/{index-DB2Ie0Or.d.mts → index-BNAsgVNz.d.mts} +51 -3
  21. package/dist/index.d.mts +3 -3
  22. package/dist/{launch-editor-CX_n_0SS.mjs → launch-editor-BbNhtg7b.mjs} +25 -1
  23. package/dist/node/auth.d.mts +2 -2
  24. package/dist/node/auth.mjs +2 -2
  25. package/dist/node/index.d.mts +6 -37
  26. package/dist/node/index.mjs +4 -6
  27. package/dist/node/internal.d.mts +2 -2
  28. package/dist/node/internal.mjs +4 -4
  29. package/dist/recipes/open-helpers.d.mts +1 -1
  30. package/dist/recipes/open-helpers.mjs +2 -2
  31. package/dist/rpc/index.d.mts +3 -3
  32. package/dist/rpc/index.mjs +2 -2
  33. package/dist/rpc/transports/ws-client.d.mts +1 -1
  34. package/dist/rpc/transports/ws-client.mjs +1 -1
  35. package/dist/rpc/transports/ws-server.d.mts +1 -1
  36. package/dist/rpc/transports/ws-server.mjs +1 -1
  37. package/dist/{rpc-DAzoVCR0.mjs → rpc-BlVCyk9W.mjs} +135 -11
  38. package/dist/{server-DzKz023G.d.mts → server-BGSrxsQb.d.mts} +1 -1
  39. package/dist/{storage-CNvfBGQ5.mjs → storage-D-jLaxDA.mjs} +2 -2
  40. package/dist/{transports-BnCs4rj9.mjs → transports-DTFoMUbE.mjs} +1 -1
  41. package/dist/types/index.d.mts +3 -3
  42. package/dist/{types-4rdUEi2R.d.mts → types-DmcujDa5.d.mts} +21 -5
  43. package/dist/utils/colors.mjs +30 -1
  44. package/dist/utils/events.d.mts +1 -1
  45. package/dist/utils/human-id.d.mts +1 -1
  46. package/dist/utils/human-id.mjs +768 -1
  47. package/dist/utils/launch-editor.mjs +1 -1
  48. package/dist/utils/open.mjs +1 -1
  49. package/dist/utils/shared-state.d.mts +1 -1
  50. package/dist/utils/shared-state.mjs +1 -1
  51. package/dist/utils/streaming-channel.d.mts +1 -1
  52. package/dist/{ws-client-Bavoya6-.d.mts → ws-client-CrLsflnY.d.mts} +1 -1
  53. package/dist/{ws-server-DjvlwLuM.d.mts → ws-server-DKlqI8XP.d.mts} +1 -1
  54. package/package.json +1 -5
  55. package/skills/devframe/SKILL.md +1 -1
  56. package/dist/chunk-e9Ob2GDo.mjs +0 -26
  57. package/dist/colors-DS7k8ljB.mjs +0 -123
  58. package/dist/host-h3-Dz8YnFgu.mjs +0 -24
  59. package/dist/human-id-adtUWQLr.mjs +0 -852
  60. package/dist/static-dump-C67bCuse.mjs +0 -80
  61. /package/dist/{_shared-BrKv3CYt.mjs → _shared-CUFqO4kJ.mjs} +0 -0
  62. /package/dist/{open-B2ah1IKK.mjs → open-DiQn6zCH.mjs} +0 -0
  63. /package/dist/{revoke-DIMz1r7-.mjs → revoke-DDa7VSJa.mjs} +0 -0
  64. /package/dist/{server-DOk4grlJ.mjs → server-BO8IDVsJ.mjs} +0 -0
  65. /package/dist/{shared-state-q9-1EOSX.mjs → shared-state-BJXkPxtf.mjs} +0 -0
@@ -1,2 +1,2 @@
1
- import { t as launchEditor } from "../launch-editor-CX_n_0SS.mjs";
1
+ import { t as launchEditor } from "../launch-editor-BbNhtg7b.mjs";
2
2
  export { launchEditor };
@@ -1,2 +1,2 @@
1
- import { t as open } from "../open-B2ah1IKK.mjs";
1
+ import { t as open } from "../open-DiQn6zCH.mjs";
2
2
  export { open };
@@ -1,2 +1,2 @@
1
- import { A as ImmutableArray, F as SharedStateEvents, I as SharedStateOptions, L as SharedStatePatch, M as ImmutableObject, N as ImmutableSet, P as SharedState, R as createSharedState, j as ImmutableMap, k as Immutable } from "../devframe-R5Ex5K5L.mjs";
1
+ import { A as ImmutableArray, F as SharedStateEvents, I as SharedStateOptions, L as SharedStatePatch, M as ImmutableObject, N as ImmutableSet, P as SharedState, R as createSharedState, j as ImmutableMap, k as Immutable } from "../devframe-DAfZWnpI.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-q9-1EOSX.mjs";
1
+ import { t as createSharedState } from "../shared-state-BJXkPxtf.mjs";
2
2
  export { createSharedState };
@@ -1,2 +1,2 @@
1
- import { C as StreamErrorPayload, D as createStreamReader, E as StreamSinkEvents, O as createStreamSink, S as CreateStreamSinkOptions, T as StreamSink, b as BufferedChunk, w as StreamReader, x as CreateStreamReaderOptions } from "../devframe-R5Ex5K5L.mjs";
1
+ import { C as StreamErrorPayload, D as createStreamReader, E as StreamSinkEvents, O as createStreamSink, S as CreateStreamSinkOptions, T as StreamSink, b as BufferedChunk, w as StreamReader, x as CreateStreamReaderOptions } from "../devframe-DAfZWnpI.mjs";
2
2
  export { BufferedChunk, CreateStreamReaderOptions, CreateStreamSinkOptions, StreamErrorPayload, StreamReader, StreamSink, StreamSinkEvents, createStreamReader, createStreamSink };
@@ -1,4 +1,4 @@
1
- import { g as RpcFunctionDefinitionAny } from "./types-4rdUEi2R.mjs";
1
+ import { _ as RpcFunctionDefinitionAny } from "./types-DmcujDa5.mjs";
2
2
  import { ChannelOptions } from "birpc";
3
3
 
4
4
  //#region src/rpc/transports/ws-client.d.ts
@@ -1,4 +1,4 @@
1
- import { g as RpcFunctionDefinitionAny } from "./types-4rdUEi2R.mjs";
1
+ import { _ as RpcFunctionDefinitionAny } from "./types-DmcujDa5.mjs";
2
2
  import { BirpcGroup, ChannelOptions } from "birpc";
3
3
  import { ServerOptions } from "node:https";
4
4
  import { WebSocket, WebSocketServer } from "ws";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "devframe",
3
3
  "type": "module",
4
- "version": "0.2.0",
4
+ "version": "0.2.2",
5
5
  "description": "Framework for building generic DevTools",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -79,9 +79,7 @@
79
79
  },
80
80
  "devDependencies": {
81
81
  "@modelcontextprotocol/sdk": "^1.29.0",
82
- "ansis": "^4.3.0",
83
82
  "get-port-please": "^3.2.0",
84
- "human-id": "^4.1.3",
85
83
  "immer": "^11.1.8",
86
84
  "launch-editor": "^2.13.2",
87
85
  "mlly": "^1.8.2",
@@ -96,13 +94,11 @@
96
94
  "whenexpr": "^0.1.2"
97
95
  },
98
96
  "inlinedDependencies": {
99
- "ansis": "4.3.0",
100
97
  "bundle-name": "4.1.0",
101
98
  "default-browser": "5.5.0",
102
99
  "default-browser-id": "5.0.1",
103
100
  "define-lazy-prop": "3.0.0",
104
101
  "get-port-please": "3.2.0",
105
- "human-id": "4.1.3",
106
102
  "immer": "11.1.8",
107
103
  "is-docker": "3.0.0",
108
104
  "is-in-ssh": "1.0.0",
@@ -239,7 +239,7 @@ Readable.fromWeb(reader.readable).pipe(targetNodeWritable)
239
239
  | Per-call lifecycles with cancellation | Cross-cutting fire-and-forget signals | Diff-based sync between clients |
240
240
  | Replay on reconnect | | |
241
241
 
242
- For chat-style UIs that combine both: keep the **conversation log** in shared state (survives reconnects), and use a streaming channel for **active responses**. The action that starts a response appends a placeholder to shared state; on producer close, commit the joined content back to shared state. Working example: [`devframe/examples/devframe-streaming-chat`](https://github.com/vitejs/devtools/tree/main/devframe/examples/devframe-streaming-chat).
242
+ For chat-style UIs that combine both: keep the **conversation log** in shared state (survives reconnects), and use a streaming channel for **active responses**. The action that starts a response appends a placeholder to shared state; on producer close, commit the joined content back to shared state. Working example: [`examples/streaming-chat`](https://github.com/devframes/devframe/tree/main/examples/streaming-chat).
243
243
 
244
244
  ## Mounting into a host (Vite DevTools example)
245
245
 
@@ -1,26 +0,0 @@
1
- import { createRequire } from "node:module";
2
- //#region \0rolldown/runtime.js
3
- var __create = Object.create;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
12
- key = keys[i];
13
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
- get: ((k) => from[k]).bind(null, key),
15
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
- });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
21
- value: mod,
22
- enumerable: true
23
- }) : target, mod));
24
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
25
- //#endregion
26
- export { __require as n, __toESM as r, __commonJSMin as t };
@@ -1,123 +0,0 @@
1
- import { r as __toESM, t as __commonJSMin } from "./chunk-e9Ob2GDo.mjs";
2
- //#endregion
3
- //#region ../../node_modules/.pnpm/ansis@4.3.0/node_modules/ansis/index.mjs
4
- var import_ansis = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
5
- let e, r, { defineProperty: t, setPrototypeOf: n, create: l, keys: o } = Object, i = "", { round: s, max: f } = Math, u = (e) => {
6
- let r = /([a-f\d]{3,6})/i.exec(e)?.[1], t = r?.length, n = parseInt(6 ^ t ? 3 ^ t ? "0" : r[0] + r[0] + r[1] + r[1] + r[2] + r[2] : r, 16);
7
- return [
8
- n >> 16 & 255,
9
- n >> 8 & 255,
10
- 255 & n
11
- ];
12
- }, a = (e, r, t) => e ^ r || r ^ t ? 16 + 36 * s(e / 51) + 6 * s(r / 51) + s(t / 51) : 8 > e ? 16 : e > 248 ? 231 : s(24 * (e - 8) / 247) + 232, c = (e) => {
13
- let r, t, n, l, o;
14
- return 8 > e ? 30 + e : 16 > e ? 82 + e : (232 > e ? (o = (e -= 16) % 36, r = (e / 36 | 0) / 5, t = (o / 6 | 0) / 5, n = o % 6 / 5) : r = t = n = (10 * (e - 232) + 8) / 255, l = 2 * f(r, t, n), l ? 30 + (s(n) << 2 | s(t) << 1 | s(r)) + (2 ^ l ? 0 : 60) : 30);
15
- }, g = {
16
- open: i,
17
- close: i
18
- }, b = 39, d = 49, p = {}, $ = ({ p: e }, { open: t = "", close: l = "", f: o }) => {
19
- let s = (e, ...r) => {
20
- if (!e) {
21
- if (t && t === l) return t;
22
- if ((e ?? i) === i) return i;
23
- }
24
- let n, f = s.p, u = f.o, a = f.c, c = o ? o(e, ...r) : e.raw ? String.raw({ raw: e }, ...r) : i + e;
25
- if (c.includes("\x1B")) for (; f; f = f.p) {
26
- let { t: e, l: r } = f, t = r.length, l = i, o = 0;
27
- if (t) for (; ~(n = c.indexOf(r, o)); o = n + t) l += c.slice(o, n) + e;
28
- c = l + c.slice(o);
29
- }
30
- return u + (c.includes("\n") ? c.replace(/(\r?\n)/g, a + "$1" + u) : c) + a;
31
- }, f = t, u = l;
32
- return e && (f = e.o + t, u = l + e.c), n(s, r), s.p = {
33
- t,
34
- l,
35
- o: s.open = f,
36
- c: s.close = u,
37
- p: e
38
- }, s;
39
- };
40
- const h = new function s(f = globalThis) {
41
- let h, y, m = "number" == typeof f ? f : ((r) => {
42
- let t = r.process ?? {}, n = t.argv ?? [], l = t.env ?? {}, i = 0;
43
- try {
44
- i = ((r, t, n) => (e = t.TERM, {
45
- "24bit": 3,
46
- truecolor: 3,
47
- ansi256: 2,
48
- ansi: 1
49
- }[t.COLORTERM] || (t.CI ? /,GITHUB/.test(n) ? 3 : 1 : (t.PM2_HOME || /edge/.test(t.NEXT_RUNTIME) || r.stdout?.isTTY) && "dumb" !== e ? "win32" === r.platform ? 3 : /-256/.test(e) ? 2 : 1 : 0)))(t, l, "," + o(l).join(","));
50
- } catch (e) {
51
- l = {};
52
- }
53
- let s, f = i || 1, u = "FORCE_COLOR", a = {
54
- false: 0,
55
- 0: 0,
56
- 1: 1,
57
- 2: 2,
58
- 3: 3
59
- }[l[u]] ?? f, c = -1;
60
- for (s of n) /^--color=?(true|always)?$/.test(s) && (c = f), /^--(no-color|color=(false|never))$/.test(s) && (c = 0);
61
- return r.window?.chrome ? 3 : u in l ? a : ~c ? c : l.NO_COLOR ? 0 : i;
62
- })(f), w = {
63
- Ansis: s,
64
- level: m,
65
- isSupported: () => v,
66
- strip: (e) => e.replace(/[›][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, i),
67
- extend(e) {
68
- for (let r in e) {
69
- let t = e[r], n = (typeof t)[0];
70
- "s" === n && (O(B(r), I(...u(t))), t = H(...u(t))), O(r, t, "f" === n);
71
- }
72
- return n(w, r = l({}, p)), w;
73
- }
74
- }, O = (e, r, n) => {
75
- p[e] = { get() {
76
- let l = n ? (...e) => $(this, r(...e)) : $(this, r);
77
- return t(this, e, { value: l }), l;
78
- } };
79
- }, v = m > 0, _ = (e, r) => v ? {
80
- open: `[${e}m`,
81
- close: `[${r}m`
82
- } : g, k = (e) => (r) => e(...u(r)), x = (e, r) => (t, n, l) => _(`${e}8;2;${t};${n};${l}`, r), R = (e) => (r, t, n) => e(a(r, t, n)), A = (e, r) => (t, n, l) => _(c(a(t, n, l)) + e, r), B = (e) => "bg" + e[0].toUpperCase() + e.slice(1), C = "Bright", H = x(3, b), I = x(4, d), P = (e) => _("38;5;" + e, b), S = (e) => _("48;5;" + e, d);
83
- return 2 === m ? (H = R(P), I = R(S)) : 1 === m && (H = A(0, b), I = A(10, d), P = (e) => _(c(e), b), S = (e) => _(c(e) + 10, d)), y = {
84
- fg: P,
85
- bg: S,
86
- rgb: H,
87
- bgRgb: I,
88
- hex: k(H),
89
- bgHex: k(I),
90
- visible: g,
91
- reset: _(0, 0),
92
- bold: _(1, 22),
93
- dim: _(2, 22),
94
- italic: _(3, 23),
95
- underline: _(4, 24),
96
- inverse: _(7, 27),
97
- hidden: _(8, 28),
98
- strikethrough: _(9, 29),
99
- link: { f: (e, r = e) => v ? `]8;;${e}${r}]8;;` : r != e ? `${r} (​${e}​)` : e }
100
- }, "gray,black,red,green,yellow,blue,magenta,cyan,white".split(",").map(((e, r) => {
101
- h = B(e), r ? (y[e + C] = _(89 + r, b), y[h + C] = _(99 + r, d)) : r = 61, y[e] = _(29 + r, b), y[h] = _(39 + r, d);
102
- })), w.extend(y);
103
- }();
104
- module.exports = h.default = h;
105
- })))(), 1);
106
- var ansis_default = import_ansis.default;
107
- const { Ansis, fg, bg, rgb, bgRgb, hex, bgHex, reset, inverse, hidden, visible, link, bold, dim, italic, underline, strikethrough, black, red, green, yellow, blue, magenta, cyan, white, gray, redBright, greenBright, yellowBright, blueBright, magentaBright, cyanBright, whiteBright, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bgGray, bgRedBright, bgGreenBright, bgYellowBright, bgBlueBright, bgMagentaBright, bgCyanBright, bgWhiteBright } = import_ansis.default;
108
- //#endregion
109
- //#region src/utils/colors.ts
110
- const colors = {
111
- blue: ansis_default.blue,
112
- cyan: ansis_default.cyan,
113
- gray: ansis_default.gray,
114
- green: ansis_default.green,
115
- red: ansis_default.red,
116
- yellow: ansis_default.yellow,
117
- bold: ansis_default.bold,
118
- dim: ansis_default.dim,
119
- reset: ansis_default.reset,
120
- underline: ansis_default.underline
121
- };
122
- //#endregion
123
- export { colors as t };
@@ -1,24 +0,0 @@
1
- import { homedir } from "node:os";
2
- import process from "node:process";
3
- import { join } from "pathe";
4
- //#region src/node/host-h3.ts
5
- /**
6
- * h3-backed {@link DevToolsHost} — used by the standalone CLI adapter.
7
- */
8
- function createH3DevToolsHost(options) {
9
- const workspaceRoot = options.workspaceRoot ?? process.cwd();
10
- return {
11
- mountStatic(base, distDir) {
12
- return options.mount?.(base, distDir);
13
- },
14
- resolveOrigin() {
15
- return options.origin;
16
- },
17
- getStorageDir(scope) {
18
- const namespace = `.${options.appName}/devtools`;
19
- return scope === "workspace" ? join(workspaceRoot, "node_modules", namespace) : join(homedir(), namespace);
20
- }
21
- };
22
- }
23
- //#endregion
24
- export { createH3DevToolsHost as t };