@typescript-agent-harness/cli 0.33.0 → 0.36.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -65,7 +65,7 @@ export async function bootRuntime(flags, opts = {}) {
65
65
  ? createBrowser({
66
66
  cwd: flags.cwd,
67
67
  homeDir: opts.homeDir ?? os.homedir(),
68
- headless: flags.command === "run",
68
+ headless: flags.command !== "chat",
69
69
  ...(opts.browserServer ? { server: opts.browserServer } : {}),
70
70
  })
71
71
  : undefined;
@@ -193,7 +193,7 @@ export async function bootRuntime(flags, opts = {}) {
193
193
  runtime.use(approvalPlugin({
194
194
  tools: APPROVAL_TOOLS,
195
195
  ask: (call, signal) => {
196
- if (call.name === "browser_open" && browser?.isOpen())
196
+ if (call.name === "browser_open" && browser?.agentAttached())
197
197
  return Promise.resolve("yes");
198
198
  md.flush();
199
199
  return ask(call, signal);
@@ -255,6 +255,7 @@ export async function bootRuntime(flags, opts = {}) {
255
255
  warnings: discovered.warnings,
256
256
  vision,
257
257
  ocr,
258
+ browser,
258
259
  };
259
260
  }
260
261
  export async function openChatSession(runtime, flags) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { FileKind } from "./protocol.js";
3
+ /** Outside the open folder, missing, a directory or unreadable: callers answer all of them as 404. */
4
+ export declare class NotInFolderError extends Error {
5
+ constructor();
6
+ }
7
+ /** `file` (relative to `folder`, or absolute) as a real file inside the real `folder`; symlinks may not lead out. */
8
+ export declare function resolveInFolder(folder: string, file: string): Promise<{
9
+ abs: string;
10
+ rel: string;
11
+ bytes: number;
12
+ mtime: number;
13
+ }>;
14
+ /** By extension; anything else is text unless its first 8KB has a NUL byte. */
15
+ export declare function fileKind(abs: string): Promise<FileKind>;
16
+ export declare function contentType(abs: string, kind: FileKind): string;
17
+ /** One `bytes=` range of a `size`-byte file: undefined = no header, null = malformed or out of bounds. */
18
+ export declare function parseRange(header: string | undefined, size: number): {
19
+ start: number;
20
+ end: number;
21
+ } | null | undefined;
22
+ /** Streams `abs` with `headers` plus nosniff / no-cache; honours one `Range`. */
23
+ export declare function sendFile(req: IncomingMessage, res: ServerResponse, abs: string, size: number, headers: Record<string, string>): void;
24
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/serve/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,sGAAsG;AACtG,qBAAa,gBAAiB,SAAQ,KAAK;;CAI1C;AAED,qHAAqH;AACrH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAYrE;AAuBD,+EAA+E;AAC/E,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAe7D;AA4BD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAE/D;AAED,0GAA0G;AAC1G,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAgBtH;AAED,iFAAiF;AACjF,wBAAgB,QAAQ,CACtB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,IAAI,CA0BN"}
@@ -0,0 +1,146 @@
1
+ import { constants, createReadStream } from "node:fs";
2
+ import { access, open, realpath, stat } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { pipeline } from "node:stream";
5
+ /** Outside the open folder, missing, a directory or unreadable: callers answer all of them as 404. */
6
+ export class NotInFolderError extends Error {
7
+ constructor() {
8
+ super("not found in this folder");
9
+ }
10
+ }
11
+ /** `file` (relative to `folder`, or absolute) as a real file inside the real `folder`; symlinks may not lead out. */
12
+ export async function resolveInFolder(folder, file) {
13
+ try {
14
+ const root = await realpath(folder);
15
+ const abs = await realpath(path.resolve(root, file));
16
+ if (!abs.startsWith(root + path.sep))
17
+ throw new NotInFolderError();
18
+ const info = await stat(abs);
19
+ if (!info.isFile())
20
+ throw new NotInFolderError();
21
+ await access(abs, constants.R_OK);
22
+ return { abs, rel: path.relative(root, abs).split(path.sep).join("/"), bytes: info.size, mtime: Math.floor(info.mtimeMs) };
23
+ }
24
+ catch {
25
+ throw new NotInFolderError();
26
+ }
27
+ }
28
+ const KINDS = {
29
+ png: "image",
30
+ jpg: "image",
31
+ jpeg: "image",
32
+ gif: "image",
33
+ webp: "image",
34
+ svg: "image",
35
+ ico: "image",
36
+ bmp: "image",
37
+ pdf: "pdf",
38
+ mp4: "video",
39
+ webm: "video",
40
+ mov: "video",
41
+ html: "html",
42
+ htm: "html",
43
+ md: "markdown",
44
+ markdown: "markdown",
45
+ };
46
+ const ext = (file) => path.extname(file).slice(1).toLowerCase();
47
+ /** By extension; anything else is text unless its first 8KB has a NUL byte. */
48
+ export async function fileKind(abs) {
49
+ const known = KINDS[ext(abs)];
50
+ if (known)
51
+ return known;
52
+ try {
53
+ const handle = await open(abs, "r");
54
+ try {
55
+ const buf = Buffer.alloc(8192);
56
+ const { bytesRead } = await handle.read(buf, 0, buf.length, 0);
57
+ return buf.subarray(0, bytesRead).includes(0) ? "binary" : "text";
58
+ }
59
+ finally {
60
+ await handle.close();
61
+ }
62
+ }
63
+ catch {
64
+ throw new NotInFolderError();
65
+ }
66
+ }
67
+ const TYPES = {
68
+ png: "image/png",
69
+ jpg: "image/jpeg",
70
+ jpeg: "image/jpeg",
71
+ gif: "image/gif",
72
+ webp: "image/webp",
73
+ svg: "image/svg+xml",
74
+ ico: "image/x-icon",
75
+ bmp: "image/bmp",
76
+ pdf: "application/pdf",
77
+ mp4: "video/mp4",
78
+ webm: "video/webm",
79
+ mov: "video/quicktime",
80
+ html: "text/html; charset=utf-8",
81
+ htm: "text/html; charset=utf-8",
82
+ md: "text/markdown; charset=utf-8",
83
+ markdown: "text/markdown; charset=utf-8",
84
+ css: "text/css; charset=utf-8",
85
+ js: "text/javascript; charset=utf-8",
86
+ mjs: "text/javascript; charset=utf-8",
87
+ json: "application/json; charset=utf-8",
88
+ woff2: "font/woff2",
89
+ woff: "font/woff",
90
+ ttf: "font/ttf",
91
+ };
92
+ export function contentType(abs, kind) {
93
+ return TYPES[ext(abs)] ?? (kind === "text" ? "text/plain; charset=utf-8" : "application/octet-stream");
94
+ }
95
+ /** One `bytes=` range of a `size`-byte file: undefined = no header, null = malformed or out of bounds. */
96
+ export function parseRange(header, size) {
97
+ if (header === undefined)
98
+ return undefined;
99
+ const m = /^bytes=(\d*)-(\d*)$/.exec(header.trim());
100
+ if (!m || (!m[1] && !m[2]))
101
+ return null;
102
+ let start;
103
+ let end;
104
+ if (!m[1]) {
105
+ const suffix = Number(m[2]);
106
+ if (suffix === 0)
107
+ return null;
108
+ start = Math.max(0, size - suffix);
109
+ end = size - 1;
110
+ }
111
+ else {
112
+ start = Number(m[1]);
113
+ end = m[2] ? Math.min(Number(m[2]), size - 1) : size - 1;
114
+ }
115
+ return start > end || start >= size ? null : { start, end };
116
+ }
117
+ /** Streams `abs` with `headers` plus nosniff / no-cache; honours one `Range`. */
118
+ export function sendFile(req, res, abs, size, headers) {
119
+ const range = parseRange(req.headers.range, size);
120
+ if (range === null) {
121
+ res.writeHead(416, { "content-range": `bytes */${size}` }).end();
122
+ return;
123
+ }
124
+ const common = {
125
+ ...headers,
126
+ "accept-ranges": "bytes",
127
+ "x-content-type-options": "nosniff",
128
+ "cache-control": "no-cache",
129
+ };
130
+ if (range) {
131
+ res.writeHead(206, {
132
+ ...common,
133
+ "content-length": String(range.end - range.start + 1),
134
+ "content-range": `bytes ${range.start}-${range.end}/${size}`,
135
+ });
136
+ }
137
+ else {
138
+ res.writeHead(200, { ...common, "content-length": String(size) });
139
+ }
140
+ if (req.method === "HEAD" || size === 0) {
141
+ res.end();
142
+ return;
143
+ }
144
+ pipeline(createReadStream(abs, range ?? { start: 0, end: size - 1 }), res, () => { });
145
+ }
146
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/serve/files.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { RequestListener } from "node:http";
2
2
  import { type Hub } from "./hub.js";
3
3
  import type { ServeInfo } from "./protocol.js";
4
+ import { type Cdp } from "./screen.js";
4
5
  import { type Workspaces } from "./workspaces.js";
5
6
  export type ServeOptions = {
6
7
  workspaces: Workspaces;
@@ -14,6 +15,8 @@ export type ServeOptions = {
14
15
  home: string;
15
16
  /** System folder dialog; defaults to the real one (tests inject a fake). */
16
17
  chooseFolder?: (start?: string) => Promise<string | null>;
18
+ /** Chrome DevTools connection for the browser panel; defaults to the real one (tests inject a fake). */
19
+ connectCdp?: (port: number) => Promise<Cdp>;
17
20
  };
18
21
  /** Request handler plus `closeAll()` to end the event streams on shutdown. */
19
22
  export declare function createServeHandler(opts: ServeOptions): {
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/serve/http.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,eAAe,EAAkB,MAAM,WAAW,CAAC;AAOlF,OAAO,EAAa,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAe/C,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,eAAe,CAAC;AACzE,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAoBjE,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC3D,CAAC;AAiFF,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,IAAI,IAAI,CAAA;CAAE,CAgVpG"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/serve/http.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,eAAe,EAAkB,MAAM,WAAW,CAAC;AAQlF,OAAO,EAAa,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAe/C,OAAO,KAAK,EAAY,SAAS,EAA4B,MAAM,eAAe,CAAC;AACnF,OAAO,EAAwC,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAsBjE,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1D,wGAAwG;IACxG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC7C,CAAC;AAiFF,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,IAAI,IAAI,CAAA;CAAE,CAidpG"}
@@ -1,15 +1,17 @@
1
- import { timingSafeEqual } from "node:crypto";
1
+ import { randomBytes, timingSafeEqual } from "node:crypto";
2
2
  import { existsSync } from "node:fs";
3
3
  import { readFile, stat } from "node:fs/promises";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
- import { AttachmentError, MAX_FILE_BYTES } from "../attachments/store.js";
6
+ import { AttachmentError, createAttachmentStore, MAX_FILE_BYTES } from "../attachments/store.js";
7
7
  import { chooseFolder, UnsupportedError } from "./choose.js";
8
+ import { contentType, fileKind, NotInFolderError, resolveInFolder, sendFile } from "./files.js";
8
9
  import { listDirs, makeDir } from "./fs.js";
9
10
  import { BusyError } from "./hub.js";
10
11
  import { activeModel, addModel, defaultBaseURL, keyHint, loadSettings, removeModel, searchKey, setActiveModel, setModelVision, setSearchKey, } from "../settings.js";
11
12
  import { discoverSkills } from "../skills/discover.js";
12
13
  import { importSkills, removeSkill } from "../skills/install.js";
14
+ import { browserURL, createScreen, parseInput } from "./screen.js";
13
15
  import { ConflictError } from "./workspaces.js";
14
16
  const COOKIE = "tah_token";
15
17
  const MAX_BODY = 1_000_000;
@@ -28,6 +30,8 @@ const TYPES = {
28
30
  };
29
31
  /** The page can approve commands, so nothing it renders may load scripts or send data elsewhere. */
30
32
  const CSP = "default-src 'self'; img-src 'self' data: blob:; style-src 'self' 'unsafe-inline'";
33
+ /** Agent-made pages run as an opaque origin: no sign-in cookie, no `/api`. */
34
+ const PREVIEW_CSP = "sandbox allow-scripts allow-forms allow-popups allow-modals";
31
35
  class HttpError extends Error {
32
36
  status;
33
37
  constructor(status, message) {
@@ -110,6 +114,31 @@ export function createServeHandler(opts) {
110
114
  const streams = new Set();
111
115
  const webDir = path.resolve(opts.webDir);
112
116
  let choosing = false;
117
+ const previewToken = randomBytes(32).toString("base64url");
118
+ const screen = createScreen({
119
+ browser: () => host().browser,
120
+ ...(opts.connectCdp ? { connect: opts.connectCdp } : {}),
121
+ });
122
+ // The agent's browser tools and folder switches change the browser behind the panel.
123
+ const unsubscribeScreen = hub.subscribe((event) => {
124
+ if (event.type === "session" || (event.type === "tool.end" && event.tool.startsWith("browser_")))
125
+ void screen.sync();
126
+ });
127
+ /** The file a `/api/files/*` query names (`path=` or `attachment=<id>`), inside the open folder. */
128
+ const fileOf = async (req) => {
129
+ const query = new URL(req.url ?? "/", "http://127.0.0.1").searchParams;
130
+ const id = query.get("attachment");
131
+ if (id !== null) {
132
+ const ref = /^[\w-]+$/.test(id) ? createAttachmentStore(workspaces.cwd).get(id) : undefined;
133
+ if (!ref)
134
+ throw new NotInFolderError();
135
+ return resolveInFolder(workspaces.cwd, ref.path);
136
+ }
137
+ const file = query.get("path");
138
+ if (!file)
139
+ throw new HttpError(400, '"path" or "attachment" is required');
140
+ return resolveInFolder(workspaces.cwd, file);
141
+ };
113
142
  const settingsView = () => {
114
143
  const s = loadSettings(opts.home);
115
144
  return {
@@ -174,6 +203,48 @@ export function createServeHandler(opts) {
174
203
  streams.delete(res);
175
204
  });
176
205
  };
206
+ /** Frames a slow tab cannot take are replaced by the newest one; `state` events always go out. */
207
+ const browserStream = (req, res) => {
208
+ res.writeHead(200, {
209
+ "content-type": "text/event-stream; charset=utf-8",
210
+ "cache-control": "no-cache",
211
+ connection: "keep-alive",
212
+ });
213
+ res.write("retry: 1000\n\n");
214
+ streams.add(res);
215
+ let blocked = false;
216
+ let waiting;
217
+ // Runs inside the browser connection's message handler, so it must not throw on an ended response.
218
+ const send = (chunk) => {
219
+ if (res.writableEnded)
220
+ return;
221
+ blocked = !res.write(chunk);
222
+ };
223
+ res.on("drain", () => {
224
+ blocked = false;
225
+ const chunk = waiting;
226
+ waiting = undefined;
227
+ if (chunk)
228
+ send(chunk);
229
+ });
230
+ const unsubscribe = screen.subscribe((event) => {
231
+ const chunk = `data: ${JSON.stringify(event)}\n\n`;
232
+ if (event.type === "frame" && blocked)
233
+ waiting = chunk;
234
+ else {
235
+ // A parked frame may be from the tab shown before this state.
236
+ if (event.type === "state")
237
+ waiting = undefined;
238
+ send(chunk);
239
+ }
240
+ });
241
+ const heartbeat = setInterval(() => res.write(": ping\n\n"), HEARTBEAT_MS);
242
+ req.on("close", () => {
243
+ clearInterval(heartbeat);
244
+ unsubscribe();
245
+ streams.delete(res);
246
+ });
247
+ };
177
248
  const api = async (req, res, route) => {
178
249
  const isUpload = req.method === "POST" && route === "/api/attachments";
179
250
  if (req.method === "POST") {
@@ -323,6 +394,60 @@ export function createServeHandler(opts) {
323
394
  case "POST /api/workspaces/remove":
324
395
  workspaces.remove(str(await readBody(req), "path"));
325
396
  return json(res, 204);
397
+ case "GET /api/files/stat": {
398
+ const file = await fileOf(req);
399
+ const kind = await fileKind(file.abs);
400
+ const view = { path: file.rel, kind, bytes: file.bytes, mtime: file.mtime };
401
+ if (kind === "html")
402
+ view.previewURL = `/preview/${previewToken}/${file.rel.split("/").map(encodeURIComponent).join("/")}`;
403
+ return json(res, 200, view);
404
+ }
405
+ case "GET /api/files/raw": {
406
+ const file = await fileOf(req);
407
+ const kind = await fileKind(file.abs);
408
+ return sendFile(req, res, file.abs, file.bytes, {
409
+ "content-type": contentType(file.abs, kind),
410
+ ...(kind === "pdf" ? {} : { "content-security-policy": "sandbox" }),
411
+ });
412
+ }
413
+ case "GET /api/browser":
414
+ return json(res, 200, screen.state());
415
+ case "GET /api/browser/stream":
416
+ return browserStream(req, res);
417
+ case "POST /api/browser/open": {
418
+ const input = optStr(await readBody(req), "url");
419
+ const url = input === undefined ? undefined : browserURL(input, req.socket.localPort ?? 0);
420
+ if (input !== undefined && url === undefined) {
421
+ throw new HttpError(400, "only http(s) pages (not tah itself), about:blank or a file preview can be opened");
422
+ }
423
+ await screen.open(url);
424
+ return json(res, 200, screen.state());
425
+ }
426
+ case "POST /api/browser/nav": {
427
+ const action = (await readBody(req)).action;
428
+ if (action !== "back" && action !== "reload")
429
+ throw new HttpError(400, '"action" must be "back" or "reload"');
430
+ await screen.nav(action);
431
+ return json(res, 204);
432
+ }
433
+ case "POST /api/browser/tab":
434
+ await screen.tab(str(await readBody(req), "id"));
435
+ return json(res, 204);
436
+ case "POST /api/browser/input":
437
+ await screen.input(parseInput(await readBody(req)));
438
+ return json(res, 204);
439
+ case "POST /api/browser/dialog": {
440
+ const body = await readBody(req);
441
+ if (typeof body.accept !== "boolean")
442
+ throw new HttpError(400, '"accept" must be a boolean');
443
+ if (body.text !== undefined && typeof body.text !== "string")
444
+ throw new HttpError(400, '"text" must be a string');
445
+ await screen.dialog(body.accept, body.text);
446
+ return json(res, 204);
447
+ }
448
+ case "POST /api/browser/close":
449
+ await screen.close();
450
+ return json(res, 204);
326
451
  case "GET /api/fs": {
327
452
  const dir = new URL(req.url ?? "/", "http://127.0.0.1").searchParams.get("path") ?? undefined;
328
453
  return json(res, 200, listDirs(dir, opts.home));
@@ -403,6 +528,19 @@ export function createServeHandler(opts) {
403
528
  }
404
529
  throw new HttpError(404, `no such endpoint: ${key}`);
405
530
  };
531
+ const preview = async (req, res, pathname) => {
532
+ if (req.method !== "GET" && req.method !== "HEAD")
533
+ throw new HttpError(405, "method not allowed");
534
+ const [, , token = "", ...rest] = pathname.split("/");
535
+ if (!sameToken(token, previewToken))
536
+ throw new NotInFolderError();
537
+ const file = await resolveInFolder(workspaces.cwd, rest.join("/"));
538
+ const kind = await fileKind(file.abs);
539
+ sendFile(req, res, file.abs, file.bytes, {
540
+ "content-type": contentType(file.abs, kind),
541
+ "content-security-policy": PREVIEW_CSP,
542
+ });
543
+ };
406
544
  const page = async (req, res, pathname) => {
407
545
  if (req.method !== "GET" && req.method !== "HEAD")
408
546
  throw new HttpError(405, "method not allowed");
@@ -437,12 +575,16 @@ export function createServeHandler(opts) {
437
575
  ? Promise.reject(new HttpError(403, "unexpected Host header"))
438
576
  : pathname.startsWith("/api/")
439
577
  ? api(req, res, pathname)
440
- : page(req, res, pathname);
578
+ : pathname.startsWith("/preview/")
579
+ ? preview(req, res, pathname)
580
+ : page(req, res, pathname);
441
581
  work.catch((err) => {
442
582
  if (res.headersSent)
443
583
  return void res.end();
444
584
  if (err instanceof HttpError)
445
585
  return json(res, err.status, { error: err.message });
586
+ if (err instanceof NotInFolderError)
587
+ return json(res, 404, { error: err.message });
446
588
  if (err instanceof BusyError)
447
589
  return json(res, 409, { error: err.message });
448
590
  if (err instanceof AttachmentError)
@@ -457,6 +599,8 @@ export function createServeHandler(opts) {
457
599
  return {
458
600
  handle,
459
601
  closeAll() {
602
+ unsubscribeScreen();
603
+ screen.dispose();
460
604
  for (const res of streams)
461
605
  res.end();
462
606
  streams.clear();