@framers/agentos-ext-browser-automation 0.2.1 → 0.3.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.
Files changed (43) hide show
  1. package/README.md +13 -2
  2. package/dist/attach/AttachController.d.ts +54 -0
  3. package/dist/attach/AttachController.d.ts.map +1 -1
  4. package/dist/attach/AttachController.js +85 -0
  5. package/dist/attach/AttachController.js.map +1 -1
  6. package/dist/attach/backends/jxa.d.ts.map +1 -1
  7. package/dist/attach/backends/jxa.js +6 -0
  8. package/dist/attach/backends/jxa.js.map +1 -1
  9. package/dist/attach/backends/raw-cdp.d.ts +14 -0
  10. package/dist/attach/backends/raw-cdp.d.ts.map +1 -1
  11. package/dist/attach/backends/raw-cdp.js +34 -0
  12. package/dist/attach/backends/raw-cdp.js.map +1 -1
  13. package/dist/attach/daemon/client.d.ts +10 -0
  14. package/dist/attach/daemon/client.d.ts.map +1 -1
  15. package/dist/attach/daemon/client.js +11 -0
  16. package/dist/attach/daemon/client.js.map +1 -1
  17. package/dist/attach/daemon/daemon-main.d.ts.map +1 -1
  18. package/dist/attach/daemon/daemon-main.js +2 -0
  19. package/dist/attach/daemon/daemon-main.js.map +1 -1
  20. package/dist/attach/daemon/daemon.d.ts.map +1 -1
  21. package/dist/attach/daemon/daemon.js +8 -0
  22. package/dist/attach/daemon/daemon.js.map +1 -1
  23. package/dist/attach/daemon/protocol.d.ts +1 -1
  24. package/dist/attach/daemon/protocol.d.ts.map +1 -1
  25. package/dist/attach/daemon/protocol.js.map +1 -1
  26. package/dist/attach/daemon/surface.d.ts +5 -0
  27. package/dist/attach/daemon/surface.d.ts.map +1 -1
  28. package/dist/attach/daemon/surface.js +4 -0
  29. package/dist/attach/daemon/surface.js.map +1 -1
  30. package/dist/attach/evidence.d.ts +64 -0
  31. package/dist/attach/evidence.d.ts.map +1 -0
  32. package/dist/attach/evidence.js +269 -0
  33. package/dist/attach/evidence.js.map +1 -0
  34. package/dist/attach/tools.d.ts +42 -2
  35. package/dist/attach/tools.d.ts.map +1 -1
  36. package/dist/attach/tools.js +41 -1
  37. package/dist/attach/tools.js.map +1 -1
  38. package/dist/index.d.ts +8 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/manifest.json +1 -1
  43. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/attach/daemon/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/attach/daemon/daemon.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** Daemon-routable operations. */
2
- export type AttachOp = 'ping' | 'status' | 'claim' | 'goto' | 'read' | 'extract' | 'eval' | 'release' | 'control' | 'quit';
2
+ export type AttachOp = 'ping' | 'status' | 'claim' | 'goto' | 'read' | 'extract' | 'eval' | 'screenshot' | 'release' | 'control' | 'quit';
3
3
  /** A command file body. */
4
4
  export interface AttachCmd {
5
5
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/attach/daemon/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/attach/daemon/protocol.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/attach/daemon/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/attach/daemon/protocol.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ export declare class DaemonAttachSurface implements AttachSurface {
21
21
  goto(url: string): Promise<string>;
22
22
  /** Read visible text from the agent tab. */
23
23
  read(selector?: string, maxChars?: number): Promise<string>;
24
+ /** Capture a PNG of the agent tab to `path` (CDP transport behind the daemon). */
25
+ screenshot(path: string, fullPage?: boolean): Promise<{
26
+ path: string;
27
+ bytes: number;
28
+ }>;
24
29
  /** Give up driving rights; the daemon keeps its held session. */
25
30
  detach(): Promise<void>;
26
31
  pause(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../../../src/attach/daemon/surface.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,+CAA+C;AAC/C,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAID,wBAAwB;AACxB,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,IAAI,GAAE,0BAA+B;IAKjD,wEAAwE;IACxE,MAAM,IAAI,OAAO;IAKjB,4EAA4E;IACtE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ/B,4DAA4D;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxC,4CAA4C;IACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,iEAAiE;IAC3D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,IAAI;IAMd,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;YAMd,eAAe;CAmB9B"}
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../../../src/attach/daemon/surface.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAI5D,+CAA+C;AAC/C,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAID,wBAAwB;AACxB,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,IAAI,GAAE,0BAA+B;IAKjD,wEAAwE;IACxE,MAAM,IAAI,OAAO;IAKjB,4EAA4E;IACtE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ/B,4DAA4D;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIxC,4CAA4C;IACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,kFAAkF;IAC5E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAI5F,iEAAiE;IAC3D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,IAAI;IAMd,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;YAMd,eAAe;CAmB9B"}
@@ -44,6 +44,10 @@ export class DaemonAttachSurface {
44
44
  async read(selector, maxChars) {
45
45
  return (await this.client.read({ selector, maxChars })).text;
46
46
  }
47
+ /** Capture a PNG of the agent tab to `path` (CDP transport behind the daemon). */
48
+ async screenshot(path, fullPage) {
49
+ return this.client.screenshot(path, fullPage);
50
+ }
47
51
  /** Give up driving rights; the daemon keeps its held session. */
48
52
  async detach() {
49
53
  await this.client.release();
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../../../src/attach/daemon/surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../../../src/attach/daemon/surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /** The evidence directory when none is configured. */
2
+ export declare const DEFAULT_EVIDENCE_DIR: string;
3
+ /** A directory as it was checked: its path and its identity on the file system. */
4
+ interface CheckedDirectory {
5
+ path: string;
6
+ dev: bigint;
7
+ ino: bigint;
8
+ }
9
+ /** A screenshot's file, prepared by {@link prepareEvidenceFile}. */
10
+ export interface PreparedEvidence {
11
+ /** The file to create, inside the evidence directory's real path. */
12
+ target: string;
13
+ /** The evidence directory, then each directory in it on the way to the file, as checked. */
14
+ directories: readonly CheckedDirectory[];
15
+ }
16
+ /**
17
+ * The path a screenshot at `filePath` would be written to, for a dry run:
18
+ * the same reading of the path as {@link prepareEvidenceFile}, with nothing
19
+ * made on the disk. The evidence directory is named by its real path when it
20
+ * exists, as a written screenshot's path is.
21
+ *
22
+ * @param evidenceDir - The configured evidence directory, or `undefined` for the default.
23
+ * @param filePath - The path asked for, relative to the directory or absolute inside it.
24
+ * @throws POLICY_BLOCKED when the path names no file or leaves the directory.
25
+ */
26
+ export declare function plannedEvidencePath(evidenceDir: string | undefined, filePath: string): Promise<string>;
27
+ /**
28
+ * Prepares the file a screenshot is written to, before the page is captured.
29
+ * The evidence directory is made when missing (mode 0700) and read by its
30
+ * real path, so a link swapped in for it later moves nothing. Each directory
31
+ * from it to the file is made (mode 0700) or checked: a directory, not a
32
+ * link, private to this user, with no directory above the evidence directory
33
+ * that another user can change. A file already at the path is refused.
34
+ *
35
+ * @param evidenceDir - The configured evidence directory, or `undefined` for the default.
36
+ * @param filePath - The path asked for, relative to the directory or absolute inside it.
37
+ * @throws POLICY_BLOCKED for a path that names no file, leaves the directory,
38
+ * passes through a link or a file, or names something that exists, and for
39
+ * a directory that is not private to this user.
40
+ * @throws UNKNOWN when the directory cannot take a new file (its mode, or a
41
+ * file system mounted read-only).
42
+ */
43
+ export declare function prepareEvidenceFile(evidenceDir: string | undefined, filePath: string): Promise<PreparedEvidence>;
44
+ /**
45
+ * Creates the prepared file and writes `bytes` to it.
46
+ *
47
+ * The directories are checked to be the ones prepared, the file is created
48
+ * with flag `wx` (it never replaces a file, and a link at its name is not
49
+ * followed), and with the file open the directories are checked again and the
50
+ * file is checked to be the one at its path, with no other name. Only then
51
+ * are the bytes written, through the handle. Node has no `openat`, so this is
52
+ * the order that keeps an image out of a directory swapped in while the page
53
+ * was captured: a file created in the wrong place stays empty.
54
+ *
55
+ * A write that fails leaves no partial image: the file is emptied through
56
+ * its handle, and removed when it is still the file at its path. A close
57
+ * that reports the write failed is an error of the call too, and the file is
58
+ * removed by the same rule.
59
+ *
60
+ * @throws POLICY_BLOCKED when a file is already there or a directory changed.
61
+ */
62
+ export declare function writeEvidenceFile(prepared: PreparedEvidence, bytes: Buffer): Promise<void>;
63
+ export {};
64
+ //# sourceMappingURL=evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/attach/evidence.ts"],"names":[],"mappings":"AAiCA,sDAAsD;AACtD,eAAO,MAAM,oBAAoB,QAAoD,CAAC;AAEtF,mFAAmF;AACnF,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC1C;AA2GD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5G;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6BtH;AA6BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhG"}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * @fileoverview Where an attach session's screenshots are written: one
3
+ * evidence directory, and the checks that keep a write inside it.
4
+ *
5
+ * A screenshot's path comes from a tool argument, so it must not reach the
6
+ * rest of the disk or replace a file. It is read against the evidence
7
+ * directory, refused when it leaves it or passes through a link, and written
8
+ * to a new file only.
9
+ *
10
+ * The directory is private to this user, by the rules the media packs keep
11
+ * for the files they save (`imageFiles.ts`, `audioFiles.ts`). The evidence
12
+ * directory and each directory in it on the way to the file belong to this
13
+ * user and are writable by no one else. Each directory above the evidence
14
+ * directory belongs to this user or root and is writable by no one else
15
+ * unless it is sticky, as /tmp is. A user who could rename an entry on that
16
+ * path could swap a directory for a link between the checks and the write,
17
+ * and Node has no `openat` to create a file in a checked directory. On
18
+ * Windows, where Node reads no ACLs, only the directories' kind is checked.
19
+ *
20
+ * A page takes seconds to capture, so the directories are checked twice:
21
+ * before the capture, so that nothing is asked of the browser for a path
22
+ * that will be refused, and again around the creation of the file, before
23
+ * the image is written through its handle.
24
+ *
25
+ * @module browser-automation/attach/evidence
26
+ */
27
+ import { constants as fsConstants } from 'node:fs';
28
+ import { access, lstat, mkdir, open, realpath, unlink } from 'node:fs/promises';
29
+ import { homedir } from 'node:os';
30
+ import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
31
+ import { AttachError } from './errors.js';
32
+ /** The evidence directory when none is configured. */
33
+ export const DEFAULT_EVIDENCE_DIR = join(homedir(), '.wunderland', 'attach-evidence');
34
+ const blocked = (message) => new AttachError('POLICY_BLOCKED', message);
35
+ /** A mode's permission bits as four octal digits. */
36
+ const octal = (mode) => (mode & 4095n).toString(8).padStart(4, '0');
37
+ /**
38
+ * The path inside `root` that `filePath` names when read against it, or
39
+ * `undefined` when it names `root` itself or a place outside it.
40
+ */
41
+ function insideOf(root, filePath) {
42
+ const inside = relative(root, resolve(root, filePath));
43
+ return inside === '' || inside === '..' || inside.startsWith(`..${sep}`) || isAbsolute(inside) ? undefined : inside;
44
+ }
45
+ /**
46
+ * Refuses, by the text of the path alone, a path that names no file, and a
47
+ * relative path that leaves the evidence directory. A relative path reads the
48
+ * same against the directory however the directory is named, so it is settled
49
+ * here, before the disk is touched. An absolute path is settled by
50
+ * {@link nameInside}, once the directory's real path is known.
51
+ *
52
+ * @throws POLICY_BLOCKED
53
+ */
54
+ function checkName(filePath, configured) {
55
+ if (typeof filePath !== 'string' ||
56
+ !filePath.trim() ||
57
+ filePath.includes('\0') ||
58
+ filePath.endsWith('/') ||
59
+ filePath.endsWith(sep)) {
60
+ throw blocked('screenshot path must name a file inside the evidence directory');
61
+ }
62
+ if (!isAbsolute(filePath) && insideOf(configured, filePath) === undefined) {
63
+ throw blocked(`screenshot path must stay inside the evidence directory (${configured})`);
64
+ }
65
+ }
66
+ /**
67
+ * The path inside the evidence directory that `filePath` names. An absolute
68
+ * path may name the directory by its real path (`root`), as a result of
69
+ * {@link prepareEvidenceFile} does, or as it is configured.
70
+ *
71
+ * @throws POLICY_BLOCKED when the path is outside the directory.
72
+ */
73
+ function nameInside(filePath, configured, root) {
74
+ const inside = insideOf(root, filePath) ?? insideOf(configured, filePath);
75
+ if (inside === undefined) {
76
+ throw blocked(`screenshot path must stay inside the evidence directory (${root})`);
77
+ }
78
+ return inside;
79
+ }
80
+ /**
81
+ * `dir` as a directory private to this user: a directory, not a link, that
82
+ * this user owns and that neither its group nor others can write. Where the
83
+ * platform has no user ids (Windows) only the kind is checked.
84
+ *
85
+ * @throws POLICY_BLOCKED when it is anything else.
86
+ */
87
+ async function privateDirectory(dir) {
88
+ const stat = await lstat(dir, { bigint: true });
89
+ if (!stat.isDirectory()) {
90
+ throw blocked(`screenshot path passes through ${dir}, which is not a directory (a link is refused)`);
91
+ }
92
+ if (typeof process.getuid === 'function' && (stat.uid !== BigInt(process.getuid()) || (stat.mode & 18n) !== 0n)) {
93
+ throw blocked(`${dir} must belong to this user and be writable by no one else (owner uid ${stat.uid}, mode ${octal(stat.mode)}): chmod 700 it, or set another evidence directory`);
94
+ }
95
+ return { path: dir, dev: stat.dev, ino: stat.ino };
96
+ }
97
+ /**
98
+ * Why another user could change a directory above `dir`, a real path, or
99
+ * `undefined` when none can: each directory above it must belong to this
100
+ * user or root and be writable by no one else, unless it is sticky, where
101
+ * only an entry's owner can rename it. Where the platform has no user ids
102
+ * (Windows) nothing is checked.
103
+ */
104
+ async function changeableParent(dir) {
105
+ if (typeof process.getuid !== 'function')
106
+ return undefined;
107
+ const uid = BigInt(process.getuid());
108
+ for (let parent = dirname(dir);; parent = dirname(parent)) {
109
+ const stat = await lstat(parent, { bigint: true });
110
+ if (!stat.isDirectory())
111
+ return `${parent}, above it, is not a directory`;
112
+ if (stat.uid !== uid && stat.uid !== 0n) {
113
+ return `${parent}, above it, belongs to uid ${stat.uid} (mode ${octal(stat.mode)})`;
114
+ }
115
+ if ((stat.mode & 18n) !== 0n && (stat.mode & 512n) === 0n) {
116
+ return `${parent}, above it, can be written by others and is not sticky (owner uid ${stat.uid}, mode ${octal(stat.mode)})`;
117
+ }
118
+ if (dirname(parent) === parent)
119
+ return undefined;
120
+ }
121
+ }
122
+ /** Whether each checked directory is still that directory: the same device and inode, and not a link. */
123
+ async function unchanged(directories) {
124
+ for (const checked of directories) {
125
+ const now = await lstat(checked.path, { bigint: true }).catch(() => undefined);
126
+ if (!now?.isDirectory() || now.dev !== checked.dev || now.ino !== checked.ino)
127
+ return false;
128
+ }
129
+ return true;
130
+ }
131
+ /**
132
+ * The path a screenshot at `filePath` would be written to, for a dry run:
133
+ * the same reading of the path as {@link prepareEvidenceFile}, with nothing
134
+ * made on the disk. The evidence directory is named by its real path when it
135
+ * exists, as a written screenshot's path is.
136
+ *
137
+ * @param evidenceDir - The configured evidence directory, or `undefined` for the default.
138
+ * @param filePath - The path asked for, relative to the directory or absolute inside it.
139
+ * @throws POLICY_BLOCKED when the path names no file or leaves the directory.
140
+ */
141
+ export async function plannedEvidencePath(evidenceDir, filePath) {
142
+ const configured = resolve(evidenceDir ?? DEFAULT_EVIDENCE_DIR);
143
+ checkName(filePath, configured);
144
+ const root = await realpath(configured).catch(() => configured);
145
+ return join(root, nameInside(filePath, configured, root));
146
+ }
147
+ /**
148
+ * Prepares the file a screenshot is written to, before the page is captured.
149
+ * The evidence directory is made when missing (mode 0700) and read by its
150
+ * real path, so a link swapped in for it later moves nothing. Each directory
151
+ * from it to the file is made (mode 0700) or checked: a directory, not a
152
+ * link, private to this user, with no directory above the evidence directory
153
+ * that another user can change. A file already at the path is refused.
154
+ *
155
+ * @param evidenceDir - The configured evidence directory, or `undefined` for the default.
156
+ * @param filePath - The path asked for, relative to the directory or absolute inside it.
157
+ * @throws POLICY_BLOCKED for a path that names no file, leaves the directory,
158
+ * passes through a link or a file, or names something that exists, and for
159
+ * a directory that is not private to this user.
160
+ * @throws UNKNOWN when the directory cannot take a new file (its mode, or a
161
+ * file system mounted read-only).
162
+ */
163
+ export async function prepareEvidenceFile(evidenceDir, filePath) {
164
+ const configured = resolve(evidenceDir ?? DEFAULT_EVIDENCE_DIR);
165
+ checkName(filePath, configured);
166
+ await mkdir(configured, { recursive: true, mode: 0o700 });
167
+ const root = await realpath(configured);
168
+ const target = join(root, nameInside(filePath, configured, root));
169
+ const directories = [await privateDirectory(root)];
170
+ const changeable = await changeableParent(root);
171
+ if (changeable) {
172
+ throw blocked(`the evidence directory ${root} cannot be used: ${changeable}. Set one under directories that no other user can change`);
173
+ }
174
+ let dir = root;
175
+ for (const part of relative(root, dirname(target)).split(sep).filter(Boolean)) {
176
+ dir = join(dir, part);
177
+ await mkdir(dir, { mode: 0o700 }).catch((err) => {
178
+ // Something is there already: the check below says whether it will do.
179
+ if (err.code !== 'EEXIST')
180
+ throw err;
181
+ });
182
+ directories.push(await privateDirectory(dir));
183
+ }
184
+ if (await lstat(target).catch(() => undefined)) {
185
+ throw blocked(`a file is already at ${target}: a screenshot never replaces one`);
186
+ }
187
+ // A directory this user owns can still refuse a new file: asked now, not
188
+ // after the page is captured.
189
+ await access(dir, fsConstants.W_OK | fsConstants.X_OK).catch((err) => {
190
+ throw new AttachError('UNKNOWN', `${dir} cannot take a new file (${err.code ?? err.message})`);
191
+ });
192
+ return { target, directories };
193
+ }
194
+ /**
195
+ * Whether the opened file, by its `stat`, is the one at the prepared path,
196
+ * with no other name, in the directories as they were checked.
197
+ */
198
+ async function inPlace(prepared, file) {
199
+ const named = await lstat(prepared.target, { bigint: true }).catch(() => undefined);
200
+ return (file.isFile() &&
201
+ named !== undefined &&
202
+ named.nlink === 1n &&
203
+ named.dev === file.dev &&
204
+ named.ino === file.ino &&
205
+ (await unchanged(prepared.directories)));
206
+ }
207
+ /**
208
+ * Removes what a failed write left. The bytes go through the handle, when it
209
+ * is still open (after a failed close it is not). The file itself goes only
210
+ * when its path can still be shown to reach it: nothing is removed by path
211
+ * alone, since by now the path may name another file.
212
+ */
213
+ async function discard(prepared, handle, file) {
214
+ await handle.truncate(0).catch(() => { });
215
+ if (await inPlace(prepared, file))
216
+ await unlink(prepared.target).catch(() => { });
217
+ }
218
+ /**
219
+ * Creates the prepared file and writes `bytes` to it.
220
+ *
221
+ * The directories are checked to be the ones prepared, the file is created
222
+ * with flag `wx` (it never replaces a file, and a link at its name is not
223
+ * followed), and with the file open the directories are checked again and the
224
+ * file is checked to be the one at its path, with no other name. Only then
225
+ * are the bytes written, through the handle. Node has no `openat`, so this is
226
+ * the order that keeps an image out of a directory swapped in while the page
227
+ * was captured: a file created in the wrong place stays empty.
228
+ *
229
+ * A write that fails leaves no partial image: the file is emptied through
230
+ * its handle, and removed when it is still the file at its path. A close
231
+ * that reports the write failed is an error of the call too, and the file is
232
+ * removed by the same rule.
233
+ *
234
+ * @throws POLICY_BLOCKED when a file is already there or a directory changed.
235
+ */
236
+ export async function writeEvidenceFile(prepared, bytes) {
237
+ const changed = () => blocked('the evidence directory changed while the page was captured; no image was written');
238
+ if (!(await unchanged(prepared.directories)))
239
+ throw changed();
240
+ let handle;
241
+ try {
242
+ handle = await open(prepared.target, 'wx', 0o600);
243
+ }
244
+ catch (err) {
245
+ throw err.code === 'EEXIST'
246
+ ? blocked(`a file is already at ${prepared.target}: a screenshot never replaces one`)
247
+ : err;
248
+ }
249
+ try {
250
+ const file = await handle.stat({ bigint: true });
251
+ if (!(await inPlace(prepared, file)))
252
+ throw changed();
253
+ try {
254
+ await handle.writeFile(bytes);
255
+ // Closed here, and its error kept: a file system may report a failed
256
+ // write only when the file is closed (NFS, a quota).
257
+ await handle.close();
258
+ }
259
+ catch (err) {
260
+ await discard(prepared, handle, file);
261
+ throw err;
262
+ }
263
+ }
264
+ finally {
265
+ // After a close above this does nothing.
266
+ await handle.close().catch(() => { });
267
+ }
268
+ }
269
+ //# sourceMappingURL=evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/attach/evidence.ts"],"names":[],"mappings":"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"}
@@ -138,6 +138,46 @@ export declare class AttachReadTool {
138
138
  data?: undefined;
139
139
  }>;
140
140
  }
141
+ /** `browser_attach_screenshot` — PNG evidence capture of the agent tab (CDP only). */
142
+ export declare class AttachScreenshotTool {
143
+ private controller;
144
+ readonly id = "browser_attach_screenshot";
145
+ readonly name = "browser_attach_screenshot";
146
+ readonly displayName = "Attach: screenshot";
147
+ readonly description = "Capture a PNG screenshot of the agent tab to a new file in the evidence directory \u2014 visual evidence for a research report. The result gives the path written. Requires the CDP transport (the AppleScript/JXA transport has no pixel access and refuses with UNSUPPORTED_OP). Never navigates or mutates the page; it writes one file, and never replaces one.";
148
+ readonly category = "browser";
149
+ readonly version = "0.1.0";
150
+ readonly hasSideEffects = true;
151
+ readonly inputSchema: {
152
+ type: "object";
153
+ properties: {
154
+ path: {
155
+ type: string;
156
+ description: string;
157
+ };
158
+ fullPage: {
159
+ type: string;
160
+ description: string;
161
+ };
162
+ };
163
+ required: string[];
164
+ };
165
+ constructor(controller: AttachSurface);
166
+ execute(args: {
167
+ path: string;
168
+ fullPage?: boolean;
169
+ }): Promise<{
170
+ success: boolean;
171
+ data: any;
172
+ error?: undefined;
173
+ code?: undefined;
174
+ } | {
175
+ success: boolean;
176
+ error: string;
177
+ code: import("./errors.js").AttachErrorCode;
178
+ data?: undefined;
179
+ }>;
180
+ }
141
181
  /** `browser_attach_release` — park + release the lease (no browser teardown). */
142
182
  export declare class AttachReleaseTool {
143
183
  private controller;
@@ -202,7 +242,7 @@ export declare class AttachControlTool {
202
242
  }>;
203
243
  }
204
244
  /** Instantiate the full attach tool set sharing one controller. */
205
- export declare function createAttachTools(controller: AttachSurface): (AttachStatusTool | AttachClaimTool | AttachGotoTool | AttachReadTool | AttachReleaseTool | AttachControlTool)[];
245
+ export declare function createAttachTools(controller: AttachSurface): (AttachStatusTool | AttachClaimTool | AttachGotoTool | AttachReadTool | AttachScreenshotTool | AttachReleaseTool | AttachControlTool)[];
206
246
  /** All attach tool ids (for registry/policy classification). */
207
- export declare const ATTACH_TOOL_IDS: readonly ["browser_attach_status", "browser_attach_claim", "browser_attach_goto", "browser_attach_read", "browser_attach_release", "browser_attach_control"];
247
+ export declare const ATTACH_TOOL_IDS: readonly ["browser_attach_status", "browser_attach_claim", "browser_attach_goto", "browser_attach_read", "browser_attach_screenshot", "browser_attach_release", "browser_attach_control"];
208
248
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/attach/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/attach/tools.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAa3D,qEAAqE;AACrE,qBAAa,gBAAgB;IASf,OAAO,CAAC,UAAU;IAR9B,QAAQ,CAAC,EAAE,2BAA2B;IACtC,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,WAAW,oBAAoB;IACxC,QAAQ,CAAC,WAAW,uFAAuF;IAC3G,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAChC,QAAQ,CAAC,WAAW;;;MAA+C;gBAC/C,UAAU,EAAE,aAAa;IACvC,OAAO;;;;CAGd;AAED,gFAAgF;AAChF,qBAAa,eAAe;IAUd,OAAO,CAAC,UAAU;IAT9B,QAAQ,CAAC,EAAE,0BAA0B;IACrC,QAAQ,CAAC,IAAI,0BAA0B;IACvC,QAAQ,CAAC,WAAW,2BAA2B;IAC/C,QAAQ,CAAC,WAAW,uKACkJ;IACtK,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAC/B,QAAQ,CAAC,WAAW;;;MAA+C;gBAC/C,UAAU,EAAE,aAAa;IACvC,OAAO;;;;;;;;;;;CAGd;AAED,0EAA0E;AAC1E,qBAAa,cAAc;IAcb,OAAO,CAAC,UAAU;IAb9B,QAAQ,CAAC,EAAE,yBAAyB;IACpC,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,WAAW,sBAAsB;IAC1C,QAAQ,CAAC,WAAW,4NACkM;IACtN,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAC/B,QAAQ,CAAC,WAAW;;;;;;;;;MAIlB;gBACkB,UAAU,EAAE,aAAa;IACvC,OAAO,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;CAGpC;AAED,8EAA8E;AAC9E,qBAAa,cAAc;IAgBb,OAAO,CAAC,UAAU;IAf9B,QAAQ,CAAC,EAAE,yBAAyB;IACpC,QAAQ,CAAC,IAAI,yBAAyB;IACtC,QAAQ,CAAC,WAAW,uBAAuB;IAC3C,QAAQ,CAAC,WAAW,kKAC6I;IACjK,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAChC,QAAQ,CAAC,WAAW;;;;;;;;;;;;MAMlB;gBACkB,UAAU,EAAE,aAAa;IACvC,OAAO,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;CAM7D;AAED,sFAAsF;AACtF,qBAAa,oBAAoB;IAyBnB,OAAO,CAAC,UAAU;IAxB9B,QAAQ,CAAC,EAAE,+BAA+B;IAC1C,QAAQ,CAAC,IAAI,+BAA+B;IAC5C,QAAQ,CAAC,WAAW,wBAAwB;IAC5C,QAAQ,CAAC,WAAW,yWAC+U;IACnW,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAE3B,QAAQ,CAAC,cAAc,QAAQ;IAC/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;MAclB;gBACkB,UAAU,EAAE,aAAa;IACvC,OAAO,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;;;;;;CASzD;AAED,iFAAiF;AACjF,qBAAa,iBAAiB;IAUhB,OAAO,CAAC,UAAU;IAT9B,QAAQ,CAAC,EAAE,4BAA4B;IACvC,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,WAAW,6BAA6B;IACjD,QAAQ,CAAC,WAAW,uHACkG;IACtH,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAC/B,QAAQ,CAAC,WAAW;;;MAA+C;gBAC/C,UAAU,EAAE,aAAa;IACvC,OAAO;;;;;;;;;;;CAYd;AAED,kFAAkF;AAClF,qBAAa,iBAAiB;IAoBhB,OAAO,CAAC,UAAU;IAnB9B,QAAQ,CAAC,EAAE,4BAA4B;IACvC,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,WAAW,6BAA6B;IACjD,QAAQ,CAAC,WAAW,wLACmK;IACvL,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAC/B,QAAQ,CAAC,WAAW;;;;;;;;;;MAUlB;gBACkB,UAAU,EAAE,aAAa;IACvC,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAA;KAAE;;;;;;;;;;;CAqB7F;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,aAAa,2IAU1D;AAED,gEAAgE;AAChE,eAAO,MAAM,eAAe,2LAQlB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { toStructuredError } from './errors.js';
1
+ import { AttachError, toStructuredError } from './errors.js';
2
2
  /** Wrap an operation into the standard tool result envelope. */
3
3
  async function envelope(fn) {
4
4
  try {
@@ -94,6 +94,44 @@ export class AttachReadTool {
94
94
  }));
95
95
  }
96
96
  }
97
+ /** `browser_attach_screenshot` — PNG evidence capture of the agent tab (CDP only). */
98
+ export class AttachScreenshotTool {
99
+ controller;
100
+ id = 'browser_attach_screenshot';
101
+ name = 'browser_attach_screenshot';
102
+ displayName = 'Attach: screenshot';
103
+ description = 'Capture a PNG screenshot of the agent tab to a new file in the evidence directory — visual evidence for a research report. The result gives the path written. Requires the CDP transport (the AppleScript/JXA transport has no pixel access and refuses with UNSUPPORTED_OP). Never navigates or mutates the page; it writes one file, and never replaces one.';
104
+ category = 'browser';
105
+ version = '0.1.0';
106
+ // Writes a file, so a deny-side-effects policy gates it (see the header).
107
+ hasSideEffects = true;
108
+ inputSchema = {
109
+ type: 'object',
110
+ properties: {
111
+ path: {
112
+ type: 'string',
113
+ description: 'Where to write the PNG inside the evidence directory: a relative path such as shots/results.png, or an absolute path within that directory. A path that leaves it, passes through a link, or names an existing file is refused.',
114
+ },
115
+ fullPage: {
116
+ type: 'boolean',
117
+ description: 'Capture the scrollable page instead of just the viewport, up to 16,384 px a side',
118
+ },
119
+ },
120
+ required: ['path'],
121
+ };
122
+ constructor(controller) {
123
+ this.controller = controller;
124
+ }
125
+ async execute(args) {
126
+ return envelope(async () => {
127
+ const fn = this.controller.screenshot?.bind(this.controller);
128
+ if (!fn) {
129
+ throw new AttachError('UNSUPPORTED_OP', 'this attach transport has no screenshot capability (CDP required)');
130
+ }
131
+ return fn(args.path, args.fullPage);
132
+ });
133
+ }
134
+ }
97
135
  /** `browser_attach_release` — park + release the lease (no browser teardown). */
98
136
  export class AttachReleaseTool {
99
137
  controller;
@@ -175,6 +213,7 @@ export function createAttachTools(controller) {
175
213
  new AttachClaimTool(controller),
176
214
  new AttachGotoTool(controller),
177
215
  new AttachReadTool(controller),
216
+ new AttachScreenshotTool(controller),
178
217
  new AttachReleaseTool(controller),
179
218
  new AttachControlTool(controller),
180
219
  ];
@@ -185,6 +224,7 @@ export const ATTACH_TOOL_IDS = [
185
224
  'browser_attach_claim',
186
225
  'browser_attach_goto',
187
226
  'browser_attach_read',
227
+ 'browser_attach_screenshot',
188
228
  'browser_attach_release',
189
229
  'browser_attach_control',
190
230
  ];