@textjs/app 0.0.0-stage → 1.0.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/README.md +34 -2
- package/bin/text.js +29 -0
- package/bin/text.ts +13 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/cli/build.d.ts +39 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +157 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/config.d.ts +22 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +73 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/dev.d.ts +12 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +49 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/cli/index.d.ts +26 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +192 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/run.d.ts +31 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +111 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/start.d.ts +14 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/cli/start.js +183 -0
- package/dist/cli/start.js.map +1 -0
- package/dist/cli/ui.d.ts +35 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +73 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/client.d.ts +34 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +93 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +143 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +28 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +44 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +26 -0
- package/dist/context.js.map +1 -0
- package/dist/dev-errors.d.ts +68 -0
- package/dist/dev-errors.d.ts.map +1 -0
- package/dist/dev-errors.js +121 -0
- package/dist/dev-errors.js.map +1 -0
- package/dist/devtools.d.ts +64 -0
- package/dist/devtools.d.ts.map +1 -0
- package/dist/devtools.js +186 -0
- package/dist/devtools.js.map +1 -0
- package/dist/frame-mirror.d.ts +19 -0
- package/dist/frame-mirror.d.ts.map +1 -0
- package/dist/frame-mirror.js +141 -0
- package/dist/frame-mirror.js.map +1 -0
- package/dist/frame-protocol.d.ts +175 -0
- package/dist/frame-protocol.d.ts.map +1 -0
- package/dist/frame-protocol.js +369 -0
- package/dist/frame-protocol.js.map +1 -0
- package/dist/history.d.ts +54 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +152 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/link.d.ts +32 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +54 -0
- package/dist/link.js.map +1 -0
- package/dist/live-player.d.ts +83 -0
- package/dist/live-player.d.ts.map +1 -0
- package/dist/live-player.js +413 -0
- package/dist/live-player.js.map +1 -0
- package/dist/live-protocol.d.ts +132 -0
- package/dist/live-protocol.d.ts.map +1 -0
- package/dist/live-protocol.js +278 -0
- package/dist/live-protocol.js.map +1 -0
- package/dist/live-stub.d.ts +10 -0
- package/dist/live-stub.d.ts.map +1 -0
- package/dist/live-stub.js +32 -0
- package/dist/live-stub.js.map +1 -0
- package/dist/mcp/cli.d.ts +22 -0
- package/dist/mcp/cli.d.ts.map +1 -0
- package/dist/mcp/cli.js +177 -0
- package/dist/mcp/cli.js.map +1 -0
- package/dist/mcp/frame.d.ts +58 -0
- package/dist/mcp/frame.d.ts.map +1 -0
- package/dist/mcp/frame.js +169 -0
- package/dist/mcp/frame.js.map +1 -0
- package/dist/mcp/index.d.ts +15 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +15 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/inspect.d.ts +95 -0
- package/dist/mcp/inspect.d.ts.map +1 -0
- package/dist/mcp/inspect.js +386 -0
- package/dist/mcp/inspect.js.map +1 -0
- package/dist/mcp/keys.d.ts +20 -0
- package/dist/mcp/keys.d.ts.map +1 -0
- package/dist/mcp/keys.js +87 -0
- package/dist/mcp/keys.js.map +1 -0
- package/dist/mcp/logs.d.ts +63 -0
- package/dist/mcp/logs.d.ts.map +1 -0
- package/dist/mcp/logs.js +217 -0
- package/dist/mcp/logs.js.map +1 -0
- package/dist/mcp/server.d.ts +64 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +485 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session.d.ts +230 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +742 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/navigation-errors.d.ts +28 -0
- package/dist/navigation-errors.d.ts.map +1 -0
- package/dist/navigation-errors.js +43 -0
- package/dist/navigation-errors.js.map +1 -0
- package/dist/navigation.d.ts +21 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +33 -0
- package/dist/navigation.js.map +1 -0
- package/dist/router.d.ts +76 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +296 -0
- package/dist/router.js.map +1 -0
- package/dist/routing.d.ts +101 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +286 -0
- package/dist/routing.js.map +1 -0
- package/dist/server/adapters/build-step.d.ts +34 -0
- package/dist/server/adapters/build-step.d.ts.map +1 -0
- package/dist/server/adapters/build-step.js +112 -0
- package/dist/server/adapters/build-step.js.map +1 -0
- package/dist/server/adapters/bun.d.ts +8 -0
- package/dist/server/adapters/bun.d.ts.map +1 -0
- package/dist/server/adapters/bun.js +89 -0
- package/dist/server/adapters/bun.js.map +1 -0
- package/dist/server/adapters/bundle.d.ts +21 -0
- package/dist/server/adapters/bundle.d.ts.map +1 -0
- package/dist/server/adapters/bundle.js +86 -0
- package/dist/server/adapters/bundle.js.map +1 -0
- package/dist/server/adapters/cloudflare.d.ts +29 -0
- package/dist/server/adapters/cloudflare.d.ts.map +1 -0
- package/dist/server/adapters/cloudflare.js +105 -0
- package/dist/server/adapters/cloudflare.js.map +1 -0
- package/dist/server/adapters/index.d.ts +10 -0
- package/dist/server/adapters/index.d.ts.map +1 -0
- package/dist/server/adapters/index.js +24 -0
- package/dist/server/adapters/index.js.map +1 -0
- package/dist/server/adapters/runtime-node.d.ts +16 -0
- package/dist/server/adapters/runtime-node.d.ts.map +1 -0
- package/dist/server/adapters/runtime-node.js +29 -0
- package/dist/server/adapters/runtime-node.js.map +1 -0
- package/dist/server/adapters/runtime.d.ts +42 -0
- package/dist/server/adapters/runtime.d.ts.map +1 -0
- package/dist/server/adapters/runtime.js +115 -0
- package/dist/server/adapters/runtime.js.map +1 -0
- package/dist/server/adapters/shared.d.ts +66 -0
- package/dist/server/adapters/shared.d.ts.map +1 -0
- package/dist/server/adapters/shared.js +124 -0
- package/dist/server/adapters/shared.js.map +1 -0
- package/dist/server/adapters/static.d.ts +9 -0
- package/dist/server/adapters/static.d.ts.map +1 -0
- package/dist/server/adapters/static.js +70 -0
- package/dist/server/adapters/static.js.map +1 -0
- package/dist/server/adapters/vercel.d.ts +43 -0
- package/dist/server/adapters/vercel.d.ts.map +1 -0
- package/dist/server/adapters/vercel.js +119 -0
- package/dist/server/adapters/vercel.js.map +1 -0
- package/dist/server/bun-jsx.d.ts +18 -0
- package/dist/server/bun-jsx.d.ts.map +1 -0
- package/dist/server/bun-jsx.js +56 -0
- package/dist/server/bun-jsx.js.map +1 -0
- package/dist/server/cache-route.d.ts +38 -0
- package/dist/server/cache-route.d.ts.map +1 -0
- package/dist/server/cache-route.js +109 -0
- package/dist/server/cache-route.js.map +1 -0
- package/dist/server/cache.d.ts +131 -0
- package/dist/server/cache.d.ts.map +1 -0
- package/dist/server/cache.js +409 -0
- package/dist/server/cache.js.map +1 -0
- package/dist/server/frames.d.ts +45 -0
- package/dist/server/frames.d.ts.map +1 -0
- package/dist/server/frames.js +294 -0
- package/dist/server/frames.js.map +1 -0
- package/dist/server/http.d.ts +80 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +453 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/jsx-dev-runtime.d.ts +5 -0
- package/dist/server/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/server/jsx-dev-runtime.js +6 -0
- package/dist/server/jsx-dev-runtime.js.map +1 -0
- package/dist/server/jsx-runtime.d.ts +10 -0
- package/dist/server/jsx-runtime.d.ts.map +1 -0
- package/dist/server/jsx-runtime.js +11 -0
- package/dist/server/jsx-runtime.js.map +1 -0
- package/dist/server/live-app.d.ts +87 -0
- package/dist/server/live-app.d.ts.map +1 -0
- package/dist/server/live-app.js +307 -0
- package/dist/server/live-app.js.map +1 -0
- package/dist/server/live-build.d.ts +70 -0
- package/dist/server/live-build.d.ts.map +1 -0
- package/dist/server/live-build.js +222 -0
- package/dist/server/live-build.js.map +1 -0
- package/dist/server/live-dev.d.ts +62 -0
- package/dist/server/live-dev.d.ts.map +1 -0
- package/dist/server/live-dev.js +313 -0
- package/dist/server/live-dev.js.map +1 -0
- package/dist/server/live-manifest.d.ts +23 -0
- package/dist/server/live-manifest.d.ts.map +1 -0
- package/dist/server/live-manifest.js +7 -0
- package/dist/server/live-manifest.js.map +1 -0
- package/dist/server/live-prod.d.ts +30 -0
- package/dist/server/live-prod.d.ts.map +1 -0
- package/dist/server/live-prod.js +97 -0
- package/dist/server/live-prod.js.map +1 -0
- package/dist/server/live-routes.d.ts +72 -0
- package/dist/server/live-routes.d.ts.map +1 -0
- package/dist/server/live-routes.js +274 -0
- package/dist/server/live-routes.js.map +1 -0
- package/dist/server/live-web.d.ts +16 -0
- package/dist/server/live-web.d.ts.map +1 -0
- package/dist/server/live-web.js +159 -0
- package/dist/server/live-web.js.map +1 -0
- package/dist/server/live.d.ts +138 -0
- package/dist/server/live.d.ts.map +1 -0
- package/dist/server/live.js +542 -0
- package/dist/server/live.js.map +1 -0
- package/dist/server/middleware-node.d.ts +48 -0
- package/dist/server/middleware-node.d.ts.map +1 -0
- package/dist/server/middleware-node.js +167 -0
- package/dist/server/middleware-node.js.map +1 -0
- package/dist/server/middleware-runtime.d.ts +97 -0
- package/dist/server/middleware-runtime.d.ts.map +1 -0
- package/dist/server/middleware-runtime.js +447 -0
- package/dist/server/middleware-runtime.js.map +1 -0
- package/dist/server/middleware.d.ts +145 -0
- package/dist/server/middleware.d.ts.map +1 -0
- package/dist/server/middleware.js +365 -0
- package/dist/server/middleware.js.map +1 -0
- package/dist/server/ppr.d.ts +22 -0
- package/dist/server/ppr.d.ts.map +1 -0
- package/dist/server/ppr.js +58 -0
- package/dist/server/ppr.js.map +1 -0
- package/dist/server/scan.d.ts +48 -0
- package/dist/server/scan.d.ts.map +1 -0
- package/dist/server/scan.js +161 -0
- package/dist/server/scan.js.map +1 -0
- package/dist/server/server-components.d.ts +65 -0
- package/dist/server/server-components.d.ts.map +1 -0
- package/dist/server/server-components.js +215 -0
- package/dist/server/server-components.js.map +1 -0
- package/dist/terminal.d.ts +5 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +5 -0
- package/dist/terminal.js.map +1 -0
- package/dist/testing.d.ts +5 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +5 -0
- package/dist/testing.js.map +1 -0
- package/dist/vite-plugin.d.ts +51 -0
- package/dist/vite-plugin.d.ts.map +1 -0
- package/dist/vite-plugin.js +403 -0
- package/dist/vite-plugin.js.map +1 -0
- package/package.json +130 -4
- package/src/cli/build.ts +182 -0
- package/src/cli/config.ts +72 -0
- package/src/cli/dev.ts +54 -0
- package/src/cli/index.ts +185 -0
- package/src/cli/run.ts +124 -0
- package/src/cli/start.ts +194 -0
- package/src/cli/ui.ts +93 -0
- package/src/client.tsx +122 -0
- package/src/config.ts +155 -0
- package/src/context.ts +69 -0
- package/src/dev-errors.ts +167 -0
- package/src/devtools.tsx +419 -0
- package/src/frame-mirror.ts +145 -0
- package/src/frame-protocol.ts +435 -0
- package/src/history.ts +201 -0
- package/src/index.ts +9 -0
- package/src/link.tsx +108 -0
- package/src/live-player.ts +449 -0
- package/src/live-protocol.ts +317 -0
- package/src/live-stub.tsx +32 -0
- package/src/mcp/cli.ts +188 -0
- package/src/mcp/frame.ts +224 -0
- package/src/mcp/index.ts +15 -0
- package/src/mcp/inspect.ts +445 -0
- package/src/mcp/keys.ts +86 -0
- package/src/mcp/logs.ts +225 -0
- package/src/mcp/server.ts +595 -0
- package/src/mcp/session.ts +821 -0
- package/src/navigation-errors.ts +60 -0
- package/src/navigation.ts +44 -0
- package/src/router.tsx +497 -0
- package/src/routing.ts +344 -0
- package/src/server/adapters/build-step.ts +135 -0
- package/src/server/adapters/bun.ts +92 -0
- package/src/server/adapters/bundle.ts +97 -0
- package/src/server/adapters/cloudflare.ts +111 -0
- package/src/server/adapters/index.ts +29 -0
- package/src/server/adapters/runtime-node.ts +34 -0
- package/src/server/adapters/runtime.ts +145 -0
- package/src/server/adapters/shared.ts +159 -0
- package/src/server/adapters/static.ts +68 -0
- package/src/server/adapters/vercel.ts +149 -0
- package/src/server/bun-jsx.ts +65 -0
- package/src/server/cache-route.ts +139 -0
- package/src/server/cache.ts +498 -0
- package/src/server/frames.ts +326 -0
- package/src/server/http.ts +467 -0
- package/src/server/jsx-dev-runtime.ts +9 -0
- package/src/server/jsx-runtime.ts +13 -0
- package/src/server/live-app.tsx +374 -0
- package/src/server/live-build.ts +258 -0
- package/src/server/live-dev.ts +357 -0
- package/src/server/live-manifest.ts +25 -0
- package/src/server/live-prod.ts +120 -0
- package/src/server/live-routes.ts +298 -0
- package/src/server/live-web.ts +170 -0
- package/src/server/live.ts +551 -0
- package/src/server/middleware-node.ts +168 -0
- package/src/server/middleware-runtime.ts +478 -0
- package/src/server/middleware.ts +451 -0
- package/src/server/ppr.ts +62 -0
- package/src/server/scan.ts +190 -0
- package/src/server/server-components.ts +224 -0
- package/src/terminal.ts +5 -0
- package/src/testing.ts +5 -0
- package/src/vite-plugin.ts +413 -0
package/dist/mcp/logs.js
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console capture for `text mcp`. On the stdio transport stdout carries
|
|
3
|
+
* JSON-RPC, so app output must never reach it: every `console.*` call is
|
|
4
|
+
* recorded into a bounded ring buffer that agents read with the `logs` tool.
|
|
5
|
+
*/
|
|
6
|
+
import { formatWithOptions } from "node:util";
|
|
7
|
+
const MAX_MESSAGE = 8_000;
|
|
8
|
+
/** `TX###` code of an error-like value (duck-typed so this works with any Text.js version). */
|
|
9
|
+
export function txCodeOf(value) {
|
|
10
|
+
if (value === null || typeof value !== "object")
|
|
11
|
+
return undefined;
|
|
12
|
+
const code = value.code;
|
|
13
|
+
if (typeof code === "string" && /^TX\d{3}$/.test(code))
|
|
14
|
+
return code;
|
|
15
|
+
const message = value.message;
|
|
16
|
+
if (typeof message === "string")
|
|
17
|
+
return /\b(TX\d{3})\b/.exec(message)?.[1];
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Format console arguments like Node's `util.format`, dropping `%c` styling
|
|
22
|
+
* (the browser console's styled-span syntax) together with the style argument
|
|
23
|
+
* it consumes. Directives are scanned left to right, so `%%c` stays a literal
|
|
24
|
+
* `%c` and `%s` / `%c` mixes consume arguments in order.
|
|
25
|
+
*/
|
|
26
|
+
export function formatLogArgs(args) {
|
|
27
|
+
let list = args;
|
|
28
|
+
const fmt = list[0];
|
|
29
|
+
if (typeof fmt === "string" && fmt.includes("%c")) {
|
|
30
|
+
const rest = list.slice(1);
|
|
31
|
+
const kept = [];
|
|
32
|
+
let next = 0;
|
|
33
|
+
const out = fmt.replace(/%[csdifjoO%]/g, (token) => {
|
|
34
|
+
if (token === "%%")
|
|
35
|
+
return token;
|
|
36
|
+
if (next >= rest.length)
|
|
37
|
+
return token;
|
|
38
|
+
const arg = rest[next++];
|
|
39
|
+
if (token === "%c")
|
|
40
|
+
return "";
|
|
41
|
+
kept.push(arg);
|
|
42
|
+
return token;
|
|
43
|
+
});
|
|
44
|
+
list = [out, ...kept, ...rest.slice(next)];
|
|
45
|
+
}
|
|
46
|
+
const text = formatWithOptions({ colors: false, depth: 4, breakLength: 120 }, ...list);
|
|
47
|
+
return text.length > MAX_MESSAGE ? `${text.slice(0, MAX_MESSAGE)}… (${text.length - MAX_MESSAGE} more chars)` : text;
|
|
48
|
+
}
|
|
49
|
+
export class LogBuffer {
|
|
50
|
+
capacity;
|
|
51
|
+
entries = [];
|
|
52
|
+
seq = 0;
|
|
53
|
+
started = Date.now();
|
|
54
|
+
listeners = new Set();
|
|
55
|
+
constructor(capacity = 1_000) {
|
|
56
|
+
this.capacity = capacity;
|
|
57
|
+
}
|
|
58
|
+
/** Record an entry; `indent` is the `console.group` depth (two spaces per level). */
|
|
59
|
+
push(level, source, args, indent = 0) {
|
|
60
|
+
const code = args.map(txCodeOf).find((c) => c !== undefined);
|
|
61
|
+
const text = formatLogArgs(args);
|
|
62
|
+
const message = indent > 0 ? text.replace(/^/gm, " ".repeat(indent)) : text;
|
|
63
|
+
const entry = { seq: ++this.seq, t: Date.now() - this.started, level, source, message, ...(code ? { code } : {}) };
|
|
64
|
+
this.entries.push(entry);
|
|
65
|
+
if (this.entries.length > this.capacity)
|
|
66
|
+
this.entries.splice(0, this.entries.length - this.capacity);
|
|
67
|
+
for (const l of this.listeners)
|
|
68
|
+
l(entry);
|
|
69
|
+
return entry;
|
|
70
|
+
}
|
|
71
|
+
/** Entries with `seq > since`, optionally filtered by level, newest last. */
|
|
72
|
+
read(options = {}) {
|
|
73
|
+
const { since = 0, levels, limit = 200 } = options;
|
|
74
|
+
const out = this.entries.filter((e) => e.seq > since && (!levels || levels.includes(e.level)));
|
|
75
|
+
return limit > 0 && out.length > limit ? out.slice(out.length - limit) : out;
|
|
76
|
+
}
|
|
77
|
+
/** Highest sequence number issued so far. */
|
|
78
|
+
get cursor() {
|
|
79
|
+
return this.seq;
|
|
80
|
+
}
|
|
81
|
+
/** Errors logged after `since`. */
|
|
82
|
+
errorsSince(since) {
|
|
83
|
+
let n = 0;
|
|
84
|
+
for (const e of this.entries)
|
|
85
|
+
if (e.seq > since && e.level === "error")
|
|
86
|
+
n++;
|
|
87
|
+
return n;
|
|
88
|
+
}
|
|
89
|
+
clear() {
|
|
90
|
+
this.entries.length = 0;
|
|
91
|
+
}
|
|
92
|
+
onEntry(listener) {
|
|
93
|
+
this.listeners.add(listener);
|
|
94
|
+
return () => this.listeners.delete(listener);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Route every `console` method into `buffer`. `mirror` additionally receives
|
|
99
|
+
* each entry (e.g. stderr when `--verbose`); stdout is never written.
|
|
100
|
+
*
|
|
101
|
+
* All methods are replaced, not just `log`/`info`/`warn`/`error`/`debug`: Bun's
|
|
102
|
+
* native `console.count`, `group`, `table`, `dir`, `write` (and Node's) print
|
|
103
|
+
* straight to file descriptor 1, which would corrupt a stdio JSON-RPC stream,
|
|
104
|
+
* and `assert` / `timeLog` / `timeEnd` would bypass the buffer.
|
|
105
|
+
*/
|
|
106
|
+
export function captureConsole(buffer, mirror) {
|
|
107
|
+
const target = console;
|
|
108
|
+
let depth = 0;
|
|
109
|
+
const counts = new Map();
|
|
110
|
+
const timers = new Map();
|
|
111
|
+
const push = (level, args) => {
|
|
112
|
+
const entry = buffer.push(level, "console", args, depth);
|
|
113
|
+
mirror?.(entry);
|
|
114
|
+
};
|
|
115
|
+
const label = (v) => (v === undefined ? "default" : String(v));
|
|
116
|
+
const elapsed = (name) => {
|
|
117
|
+
const start = timers.get(name);
|
|
118
|
+
if (start === undefined)
|
|
119
|
+
return null;
|
|
120
|
+
return `${name}: ${(performance.now() - start).toFixed(3)}ms`;
|
|
121
|
+
};
|
|
122
|
+
const handlers = {
|
|
123
|
+
log: (...a) => push("log", a),
|
|
124
|
+
info: (...a) => push("info", a),
|
|
125
|
+
warn: (...a) => push("warn", a),
|
|
126
|
+
error: (...a) => push("error", a),
|
|
127
|
+
debug: (...a) => push("debug", a),
|
|
128
|
+
dir: (obj) => push("log", [obj]),
|
|
129
|
+
dirxml: (...a) => push("log", a),
|
|
130
|
+
table: (data, columns) => push("log", columns === undefined ? [data] : [data, columns]),
|
|
131
|
+
trace: (...a) => {
|
|
132
|
+
const stack = new Error().stack?.split("\n").slice(2).join("\n") ?? "";
|
|
133
|
+
push("debug", [`Trace${a.length > 0 ? `: ${formatLogArgs(a)}` : ""}${stack ? `\n${stack}` : ""}`]);
|
|
134
|
+
},
|
|
135
|
+
assert: (condition, ...a) => {
|
|
136
|
+
if (condition)
|
|
137
|
+
return;
|
|
138
|
+
push("error", a.length > 0 ? ["Assertion failed:", ...a] : ["Assertion failed"]);
|
|
139
|
+
},
|
|
140
|
+
count: (name) => {
|
|
141
|
+
const key = label(name);
|
|
142
|
+
const n = (counts.get(key) ?? 0) + 1;
|
|
143
|
+
counts.set(key, n);
|
|
144
|
+
push("log", [`${key}: ${n}`]);
|
|
145
|
+
},
|
|
146
|
+
countReset: (name) => void counts.set(label(name), 0),
|
|
147
|
+
group: (...a) => {
|
|
148
|
+
if (a.length > 0)
|
|
149
|
+
push("log", a);
|
|
150
|
+
depth++;
|
|
151
|
+
},
|
|
152
|
+
groupCollapsed: (...a) => {
|
|
153
|
+
if (a.length > 0)
|
|
154
|
+
push("log", a);
|
|
155
|
+
depth++;
|
|
156
|
+
},
|
|
157
|
+
groupEnd: () => {
|
|
158
|
+
depth = Math.max(0, depth - 1);
|
|
159
|
+
},
|
|
160
|
+
time: (name) => void timers.set(label(name), performance.now()),
|
|
161
|
+
timeLog: (name, ...a) => {
|
|
162
|
+
const line = elapsed(label(name));
|
|
163
|
+
if (line === null)
|
|
164
|
+
push("warn", [`Timer "${label(name)}" does not exist`]);
|
|
165
|
+
else
|
|
166
|
+
push("log", [line, ...a]);
|
|
167
|
+
},
|
|
168
|
+
timeEnd: (name) => {
|
|
169
|
+
const line = elapsed(label(name));
|
|
170
|
+
if (line === null)
|
|
171
|
+
push("warn", [`Timer "${label(name)}" does not exist`]);
|
|
172
|
+
else
|
|
173
|
+
push("log", [line]);
|
|
174
|
+
timers.delete(label(name));
|
|
175
|
+
},
|
|
176
|
+
clear: () => undefined,
|
|
177
|
+
// Bun: `console.write(...chunks)` writes raw bytes to stdout and returns the byte count.
|
|
178
|
+
write: (...chunks) => {
|
|
179
|
+
const text = chunks.map((c) => (typeof c === "string" ? c : c instanceof Uint8Array ? new TextDecoder().decode(c) : String(c))).join("");
|
|
180
|
+
push("log", [text.replace(/\n$/, "")]);
|
|
181
|
+
return new TextEncoder().encode(text).length;
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
const originals = new Map();
|
|
185
|
+
const names = new Set([...Object.keys(handlers), ...Object.getOwnPropertyNames(console)]);
|
|
186
|
+
for (const name of names) {
|
|
187
|
+
if (name === "Console" || name.startsWith("_"))
|
|
188
|
+
continue;
|
|
189
|
+
const current = target[name];
|
|
190
|
+
if (!(name in handlers) && typeof current !== "function")
|
|
191
|
+
continue;
|
|
192
|
+
originals.set(name, Object.getOwnPropertyDescriptor(console, name));
|
|
193
|
+
// Anything else (`profile`, `timeStamp`, Bun's `record` / `screenshot`, …) becomes a no-op.
|
|
194
|
+
const fn = handlers[name] ?? (() => undefined);
|
|
195
|
+
try {
|
|
196
|
+
Object.defineProperty(console, name, { value: fn, writable: true, configurable: true, enumerable: true });
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
target[name] = fn;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
let restored = false;
|
|
203
|
+
return {
|
|
204
|
+
restore() {
|
|
205
|
+
if (restored)
|
|
206
|
+
return;
|
|
207
|
+
restored = true;
|
|
208
|
+
for (const [name, desc] of originals) {
|
|
209
|
+
if (desc)
|
|
210
|
+
Object.defineProperty(console, name, desc);
|
|
211
|
+
else
|
|
212
|
+
delete target[name];
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/mcp/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `text mcp` tool surface: an MCP server whose tools drive a headless
|
|
3
|
+
* Text.js app session (see `session.ts`).
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
import { type StyledRow } from "./frame.js";
|
|
7
|
+
import { LogBuffer } from "./logs.js";
|
|
8
|
+
import { HeadlessSession, type FrameSnapshot, type SessionOptions } from "./session.js";
|
|
9
|
+
export interface TextMcpServerOptions extends SessionOptions {
|
|
10
|
+
/** Server name reported to clients (default `"textjs"`). */
|
|
11
|
+
name?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Route `console.*` into the `logs` tool while the server runs (default
|
|
14
|
+
* `true`). Off when the caller already captures (the `text mcp` CLI does,
|
|
15
|
+
* before anything else loads).
|
|
16
|
+
*/
|
|
17
|
+
captureConsole?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Mutex: tool calls run one at a time so input order is deterministic. */
|
|
20
|
+
export declare class Lock {
|
|
21
|
+
private tail;
|
|
22
|
+
/** Wait for every earlier holder to release, then hold the lock until `release()` is called. */
|
|
23
|
+
acquire(): Promise<() => void>;
|
|
24
|
+
}
|
|
25
|
+
export declare class TimeoutError extends Error {
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Race `work` against `ms`. On timeout the caller gets a {@link TimeoutError}
|
|
29
|
+
* at once and `controller` is aborted so cancellable work stops.
|
|
30
|
+
*/
|
|
31
|
+
export declare function withTimeout<T>(work: Promise<T>, ms: number, label: string, controller?: AbortController): Promise<T>;
|
|
32
|
+
/** Owns the session lifecycle: the app loads in the background so the MCP handshake never waits on it. */
|
|
33
|
+
export declare class SessionController {
|
|
34
|
+
private readonly options;
|
|
35
|
+
private readonly shouldCapture;
|
|
36
|
+
private session;
|
|
37
|
+
private starting;
|
|
38
|
+
private capture;
|
|
39
|
+
readonly logs: LogBuffer;
|
|
40
|
+
constructor(options: SessionOptions, shouldCapture?: boolean);
|
|
41
|
+
/** Start loading the app (idempotent). */
|
|
42
|
+
start(): Promise<HeadlessSession>;
|
|
43
|
+
get(): Promise<HeadlessSession>;
|
|
44
|
+
/** Reload the running session, or retry a failed start. */
|
|
45
|
+
reload(): Promise<{
|
|
46
|
+
session: HeadlessSession;
|
|
47
|
+
purged: number;
|
|
48
|
+
}>;
|
|
49
|
+
dispose(): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
/** Header lines + the frame text, the default content of every frame-returning tool. */
|
|
52
|
+
export declare function formatFrame(f: FrameSnapshot): string;
|
|
53
|
+
/**
|
|
54
|
+
* Styled runs as compact lines for the text content (the JSON lives once, in
|
|
55
|
+
* `structuredContent.styles`): `y x+width fg bg attrs "text"`, skipping
|
|
56
|
+
* blank default-styled runs.
|
|
57
|
+
*/
|
|
58
|
+
export declare function formatStyles(rows: readonly StyledRow[]): string;
|
|
59
|
+
/** Create the MCP server. Call `controller.start()` (or any tool) to load the app. */
|
|
60
|
+
export declare function createTextMcpServer(options: TextMcpServerOptions): {
|
|
61
|
+
server: McpServer;
|
|
62
|
+
controller: SessionController;
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EAAkB,SAAS,EAAgD,MAAM,QAAQ,CAAC;AACjG,OAAO,EAAE,eAAe,EAAgB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEnG,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAMD,2EAA2E;AAC3E,qBAAa,IAAI;IACf,OAAO,CAAC,IAAI,CAAoC;IAEhD,gGAAgG;IAC1F,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;CAUrC;AAED,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAUpH;AAED,0GAA0G;AAC1G,qBAAa,iBAAiB;IAO1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAPhC,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,OAAO,CAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBAGN,OAAO,EAAE,cAAc,EACvB,aAAa,UAAO;IAKvC,0CAA0C;IAC1C,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAmBjC,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC;IAI/B,2DAA2D;IACrD,MAAM,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAM/D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B;AA8BD,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAapD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAS/D;AAyBD,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,iBAAiB,CAAA;CAAE,CAsYvH"}
|