ptbk 0.119.0-14 → 0.119.0-15

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 (155) hide show
  1. package/README.md +11 -7
  2. package/dist/browser/browser.d.ts +15 -2
  3. package/dist/browser/browser.js +74 -9
  4. package/dist/browser/browser.js.map +1 -1
  5. package/dist/browser/recording.d.ts +138 -0
  6. package/dist/browser/recording.js +361 -0
  7. package/dist/browser/recording.js.map +1 -0
  8. package/dist/cli/commands/add.js +14 -9
  9. package/dist/cli/commands/add.js.map +1 -1
  10. package/dist/cli/commands/find.js +6 -1
  11. package/dist/cli/commands/find.js.map +1 -1
  12. package/dist/cli/commands/fix.js +2 -0
  13. package/dist/cli/commands/fix.js.map +1 -1
  14. package/dist/cli/commands/init.d.ts +12 -2
  15. package/dist/cli/commands/init.js +817 -442
  16. package/dist/cli/commands/init.js.map +1 -1
  17. package/dist/cli/commands/list.js +57 -1
  18. package/dist/cli/commands/list.js.map +1 -1
  19. package/dist/cli/commands/migrate.js +11 -5
  20. package/dist/cli/commands/migrate.js.map +1 -1
  21. package/dist/cli/commands/plan.js +12 -2
  22. package/dist/cli/commands/plan.js.map +1 -1
  23. package/dist/cli/commands/recover.js +10 -4
  24. package/dist/cli/commands/recover.js.map +1 -1
  25. package/dist/cli/commands/stop.js +1 -1
  26. package/dist/cli/commands/stop.js.map +1 -1
  27. package/dist/cli/commands/verify.js +6 -3
  28. package/dist/cli/commands/verify.js.map +1 -1
  29. package/dist/cli/common.js +3 -0
  30. package/dist/cli/common.js.map +1 -1
  31. package/dist/cli/help.js +3 -3
  32. package/dist/cli/help.js.map +1 -1
  33. package/dist/cli/registry.js +32 -18
  34. package/dist/cli/registry.js.map +1 -1
  35. package/dist/cli/service-view.js +2 -2
  36. package/dist/cli/service-view.js.map +1 -1
  37. package/dist/cli/spec.js +1 -1
  38. package/dist/cli/spec.js.map +1 -1
  39. package/dist/common/process.d.ts +6 -0
  40. package/dist/common/process.js +46 -4
  41. package/dist/common/process.js.map +1 -1
  42. package/dist/engine/agenda.d.ts +33 -3
  43. package/dist/engine/agenda.js +202 -31
  44. package/dist/engine/agenda.js.map +1 -1
  45. package/dist/engine/executor.d.ts +15 -1
  46. package/dist/engine/executor.js +169 -32
  47. package/dist/engine/executor.js.map +1 -1
  48. package/dist/engine/generated.d.ts +9 -13
  49. package/dist/engine/generated.js +16 -24
  50. package/dist/engine/generated.js.map +1 -1
  51. package/dist/engine/prompt.js +5 -3
  52. package/dist/engine/prompt.js.map +1 -1
  53. package/dist/engine/requests.d.ts +11 -1
  54. package/dist/engine/requests.js +14 -1
  55. package/dist/engine/requests.js.map +1 -1
  56. package/dist/engine/snapshot.d.ts +17 -0
  57. package/dist/engine/state.d.ts +20 -1
  58. package/dist/engine/state.js +31 -1
  59. package/dist/engine/state.js.map +1 -1
  60. package/dist/engine/task-trace.d.ts +90 -0
  61. package/dist/engine/task-trace.js +206 -0
  62. package/dist/engine/task-trace.js.map +1 -0
  63. package/dist/engine/team.d.ts +5 -1
  64. package/dist/engine/team.js +15 -8
  65. package/dist/engine/team.js.map +1 -1
  66. package/dist/engine/traces.d.ts +2 -28
  67. package/dist/engine/traces.js +3 -84
  68. package/dist/engine/traces.js.map +1 -1
  69. package/dist/expert/_main.md +23 -14
  70. package/dist/expert/book-language/commitments/task-id.md +3 -1
  71. package/dist/expert/book-language/references.md +3 -3
  72. package/dist/expert/cli/acceptance.md +39 -28
  73. package/dist/expert/cli/autonomous-operation.md +39 -0
  74. package/dist/expert/cli/browser.md +8 -2
  75. package/dist/expert/cli/cli.md +12 -12
  76. package/dist/expert/cli/configuration.md +5 -3
  77. package/dist/expert/cli/execution.md +7 -5
  78. package/dist/expert/cli/first-task.md +19 -5
  79. package/dist/expert/cli/git-persistence.md +11 -7
  80. package/dist/expert/cli/harness-plugins.md +3 -1
  81. package/dist/expert/cli/initialization-ui.md +31 -0
  82. package/dist/expert/cli/initialization.md +25 -21
  83. package/dist/expert/cli/interactive-ui.md +6 -6
  84. package/dist/expert/cli/process-modes.md +5 -3
  85. package/dist/expert/cli/recovery.md +5 -5
  86. package/dist/expert/cli/retries.md +6 -4
  87. package/dist/expert/cli/rich-input.md +15 -0
  88. package/dist/expert/cli/start.md +11 -9
  89. package/dist/expert/cli/task-books.md +7 -4
  90. package/dist/expert/cli/task-identity.md +17 -0
  91. package/dist/expert/cli/task-markdown.md +4 -2
  92. package/dist/expert/cli/trace-configuration.md +23 -0
  93. package/dist/expert/cli/traces.md +38 -8
  94. package/dist/expert/cli/updates.md +3 -3
  95. package/dist/expert/cli/user-interactions.md +14 -10
  96. package/dist/expert/cli/workspace.md +8 -4
  97. package/dist/harness/plugins/openai-codex/index.js +4 -1
  98. package/dist/harness/plugins/openai-codex/index.js.map +1 -1
  99. package/dist/harness/run.d.ts +1 -1
  100. package/dist/harness/run.js +13 -0
  101. package/dist/harness/run.js.map +1 -1
  102. package/dist/harness/types.d.ts +4 -0
  103. package/dist/project/agents.js +14 -4
  104. package/dist/project/agents.js.map +1 -1
  105. package/dist/project/config.js +12 -2
  106. package/dist/project/config.js.map +1 -1
  107. package/dist/project/defaults.d.ts +24 -7
  108. package/dist/project/defaults.js +43 -15
  109. package/dist/project/defaults.js.map +1 -1
  110. package/dist/project/draft.d.ts +29 -0
  111. package/dist/project/draft.js +65 -0
  112. package/dist/project/draft.js.map +1 -0
  113. package/dist/project/git.d.ts +23 -1
  114. package/dist/project/git.js +37 -1
  115. package/dist/project/git.js.map +1 -1
  116. package/dist/project/setup.d.ts +37 -6
  117. package/dist/project/setup.js +76 -19
  118. package/dist/project/setup.js.map +1 -1
  119. package/dist/service/host.js +8 -2
  120. package/dist/service/host.js.map +1 -1
  121. package/dist/service/spa/app.js +4 -2
  122. package/dist/tasks/authoring.d.ts +2 -8
  123. package/dist/tasks/authoring.js +2 -10
  124. package/dist/tasks/authoring.js.map +1 -1
  125. package/dist/tasks/book-task.js +6 -7
  126. package/dist/tasks/book-task.js.map +1 -1
  127. package/dist/tasks/identity.d.ts +41 -0
  128. package/dist/tasks/identity.js +67 -0
  129. package/dist/tasks/identity.js.map +1 -0
  130. package/dist/tasks/markdown.d.ts +22 -3
  131. package/dist/tasks/markdown.js +63 -17
  132. package/dist/tasks/markdown.js.map +1 -1
  133. package/dist/tasks/prepare.d.ts +33 -0
  134. package/dist/tasks/prepare.js +90 -0
  135. package/dist/tasks/prepare.js.map +1 -0
  136. package/dist/tasks/sources.js +13 -7
  137. package/dist/tasks/sources.js.map +1 -1
  138. package/dist/ui/attachments.d.ts +55 -0
  139. package/dist/ui/attachments.js +134 -0
  140. package/dist/ui/attachments.js.map +1 -0
  141. package/dist/ui/celebration.d.ts +8 -0
  142. package/dist/ui/celebration.js +47 -0
  143. package/dist/ui/celebration.js.map +1 -0
  144. package/dist/ui/composer.d.ts +70 -4
  145. package/dist/ui/composer.js +156 -15
  146. package/dist/ui/composer.js.map +1 -1
  147. package/dist/ui/keys.d.ts +1 -1
  148. package/dist/ui/keys.js +4 -0
  149. package/dist/ui/keys.js.map +1 -1
  150. package/dist/ui/prompts.d.ts +67 -1
  151. package/dist/ui/prompts.js +224 -14
  152. package/dist/ui/prompts.js.map +1 -1
  153. package/dist/ui/status-view.js +11 -2
  154. package/dist/ui/status-view.js.map +1 -1
  155. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Promptbook (`ptbk`)
2
2
 
3
- Promptbook operates readable **agents** and **tasks** over a Git project. Agents are Books with lasting roles, goals and rules; tasks are bounded work. The agenda executes one task at a time, routes unassigned tasks through Manager, verifies every result with your project check and commits it together with its completion record (`PTBK: <task title>`). When the backlog is empty, agents with goals are asked whether new work is useful.
3
+ Promptbook operates readable **agents** and **tasks** over a Git project. Agents are Books with lasting roles, goals and rules; tasks are bounded work. Once started, the agenda runs unattended: it executes one task at a time, routes unassigned tasks through Manager, verifies every result with your project check and commits it together with its completion record (`PTBK: <task title>` plus a `Task-ID` trailer). When the backlog is empty, agents with goals are asked whether new work is useful. You are asked only when something genuinely needs a person.
4
4
 
5
5
  This repository publishes exactly one npm package, `ptbk`, which installs the `ptbk` command. It requires Node.js 22.13+ (Node 22 line) or 24+, npm 10+ and Git.
6
6
 
@@ -20,21 +20,25 @@ Global and local installations are independent; every project keeps using the in
20
20
  ## Use
21
21
 
22
22
  ```bash
23
- ptbk init # wizard: destination, harnesses, browser, project check, first task
24
- ptbk start # background agenda + local dashboard + protected remote access
23
+ ptbk init # describe your project, answer a few setup questions; the agenda then starts in the background
25
24
  ptbk dashboard # live terminal view and controls (Q leaves, the service keeps running)
26
25
  ptbk status # one snapshot: requests, current work, queue, connection
27
- ptbk add "Improve CSV export" # creates and commits a task; Manager assigns it
26
+ ptbk add "Improve CSV export" # creates and commits a task (with its Task-ID); Manager assigns it
27
+ ptbk list "#<task-id>" # one task: its trace, browser video and commits
28
28
  ptbk answer # answer questions agents asked you
29
- ptbk stop # stop (stays stopped after reboot until the next start)
29
+ ptbk stop # stop (stays stopped after reboot until the next start or init)
30
+ ptbk start # start an initialized, cloned or stopped project
30
31
  ptbk run --limit 1 # finite run with one agent/harness configuration
31
32
  ```
32
33
 
34
+ `ptbk init` first asks what you are working on — free text, long pasted material, images or other files (Ctrl+O attaches a file, Ctrl+V pastes a clipboard image, long pastes become compact `[Pasted text #1, 120 lines]` tokens). Your input is saved verbatim in `specs/_initial.md` (attachments in `specs/_initial/`), and one ordinary task assigned to the engine-supplied Expert transforms the project according to it. Init shows `Step X of Y`, never runs that task itself, starts the background agenda and returns; a blank intent gives a small skeleton whose first task is a readiness review.
35
+
33
36
  Run `ptbk help` for all commands and `ptbk help <command>` for one command's options, defaults and examples.
34
37
 
35
- - **Unattended setup:** `ptbk init --non-interactive --installation local --harness openai-codex --check "npm test"`.
38
+ - **Unattended setup:** `ptbk init --non-interactive --installation local --harness openai-codex --check "npm test" --intent-file brief.md --attach mockup.png` (`--no-start` only prepares the project).
36
39
  - **Harnesses:** OpenAI Codex and Claude Code are featured; GitHub Copilot, Cline, OpenCode, Gemini CLI and Qwen Code are also supported. They are installed globally and use their own login.
37
- - **Files:** agents in `agents/` (core Adam, Manager and Teacher in `agents/.core/`), tasks in `tasks/` (Books or Markdown), configuration in `ptbk.json`, runtime state in the Git-ignored `.ptbk/`.
40
+ - **Files:** agents in `agents/` (core Adam, Manager and Teacher in `agents/.core/`), tasks in `tasks/` (Books or Markdown), specifications in `specs/`, per-task audit evidence in `traces/<task-id>/`, configuration in `ptbk.json`, runtime state in the Git-ignored `.ptbk/`.
41
+ - **Task IDs and traces:** every task has a stable ID (`TASK ID` in Books, `<!-- ptbk-task-id: … -->` in Markdown sections) that also appears in its commits' `Task-ID` trailer and names `traces/<task-id>/`: the consolidated harness output (`harness.log`), events (`events.jsonl`) and, when the task used the project browser, its video (`video/`, sign-in steps excluded). `ptbk.json` `traces.commit` (default off: `traces/` is ignored), `traces.ignoreVideos` (default on) and `traces.recordVideo` (default on) are chosen on init's Traces screen. With `ffmpeg` on PATH videos are H.264 MP4, otherwise Motion-JPEG MOV.
38
42
  - **Remote access:** `ptbk start` serves a dashboard on `127.0.0.1` and publishes it through a Cloudflare quick tunnel; devices must pair with a single-use link shown in the local terminal (`ptbk access pair`). Use `--no-tunnel` for local-only access or `--no-server` for neither.
39
43
  - **Presentation:** pretty terminal UI by default; `--raw` (or redirected output) gives plain text without prompts. `--non-interactive` never asks questions.
40
44
  - **Commits:** every mutating workflow commits its own changes with a `PTBK: ` subject; `--no-commit` is the explicit exception.
@@ -2,6 +2,8 @@ import { type EffectiveSettings } from '../project/config.js';
2
2
  import type { Project } from '../project/workspace.js';
3
3
  import type { BridgeTool } from '../engine/bridge.js';
4
4
  import type { RequestStore, UserRequest } from '../engine/requests.js';
5
+ import type { TaskTrace } from '../engine/task-trace.js';
6
+ import { BrowserRecorder } from './recording.js';
5
7
  /**
6
8
  * Locates a Chrome-compatible browser (configuration, `CHROME_PATH`, standard locations, PATH).
7
9
  *
@@ -33,7 +35,15 @@ export declare class ProjectBrowser {
33
35
  private connection?;
34
36
  private sessionId?;
35
37
  private note?;
38
+ /** Task-linked recording of browser activity (`traces/<task-id>/video/`). */
39
+ readonly recorder: BrowserRecorder;
36
40
  constructor(project: Project, settings: () => EffectiveSettings, env: NodeJS.ProcessEnv);
41
+ /** Associates subsequent browser use with a task attempt for recording. */
42
+ useFor(trace: TaskTrace, attempt: string): Promise<void>;
43
+ /** Unsubscribes the page-transition listener of the current connection. */
44
+ private navigationListener?;
45
+ /** Ensures the browser runs and recording of the attached task has begun. */
46
+ private active;
37
47
  /** Launches (or reuses) the browser and attaches to one page. */
38
48
  private ensure;
39
49
  /** Evaluates JavaScript in the page and returns its value. */
@@ -44,11 +54,13 @@ export declare class ProjectBrowser {
44
54
  open(url: string): Promise<string>;
45
55
  /** Clicks an element by ref. */
46
56
  click(reference: number): Promise<string>;
47
- /** Types into an element by ref (optionally submitting its form). */
57
+ /** Types into an element by ref (optionally submitting its form); secret fields are never recorded. */
48
58
  type(reference: number, text: string, submit: boolean): Promise<string>;
59
+ /** Sets an element's value and dispatches input events. */
60
+ private typeInto;
49
61
  /** Saves a screenshot into ignored runtime storage and returns its path. */
50
62
  screenshot(): Promise<string>;
51
- /** Brings the window forward for a human action (only meaningful with a visible window). */
63
+ /** Brings the window forward for a human action (only meaningful with a visible window); the human part is not recorded. */
52
64
  bringToFront(): Promise<string | undefined>;
53
65
  /** Stops only the browser process this service launched (never the user's browsers or the profile). */
54
66
  close(): void;
@@ -60,6 +72,7 @@ export declare class ProjectBrowser {
60
72
  */
61
73
  export declare function browserTools(browser: ProjectBrowser, requests: RequestStore, task: {
62
74
  ref: string;
75
+ id?: string;
63
76
  title: string;
64
77
  agent?: string;
65
78
  }, onUserRequest: (request: UserRequest) => void): BridgeTool[];
@@ -6,6 +6,7 @@ import { ensureDirectory, pathExists } from '../common/fs.js';
6
6
  import { shortId } from '../common/ids.js';
7
7
  import { isProcessAlive, terminateProcessTree, which } from '../common/process.js';
8
8
  import { setting } from '../project/config.js';
9
+ import { BrowserRecorder, cleanStaleRecordings } from './recording.js';
9
10
  /**
10
11
  * Maximal page text returned to an agent.
11
12
  */
@@ -144,6 +145,11 @@ class CdpConnection {
144
145
  this.listeners.add(listener);
145
146
  });
146
147
  }
148
+ /** Subscribes to protocol events; returns the unsubscribe function. */
149
+ on(listener) {
150
+ this.listeners.add(listener);
151
+ return () => this.listeners.delete(listener);
152
+ }
147
153
  /** Closes the socket. */
148
154
  close() {
149
155
  this.socket.close();
@@ -162,10 +168,43 @@ export class ProjectBrowser {
162
168
  connection;
163
169
  sessionId;
164
170
  note;
171
+ /** Task-linked recording of browser activity (`traces/<task-id>/video/`). */
172
+ recorder;
165
173
  constructor(project, settings, env) {
166
174
  this.project = project;
167
175
  this.settings = settings;
168
176
  this.env = env;
177
+ this.recorder = new BrowserRecorder(project, () => setting(this.settings(), 'traces.recordVideo'), env);
178
+ void cleanStaleRecordings(project);
179
+ }
180
+ /** Associates subsequent browser use with a task attempt for recording. */
181
+ async useFor(trace, attempt) {
182
+ await this.recorder.attach(trace, attempt);
183
+ }
184
+ /** Unsubscribes the page-transition listener of the current connection. */
185
+ navigationListener;
186
+ /** Ensures the browser runs and recording of the attached task has begun. */
187
+ async active() {
188
+ const target = await this.ensure();
189
+ // Page transitions (including link clicks and redirects) are listed with the recording segment.
190
+ this.navigationListener ??= target.connection.on((message) => {
191
+ if (message.method !== 'Page.frameNavigated' || message.sessionId !== target.sessionId)
192
+ return;
193
+ const frame = message.params.frame;
194
+ if (frame && !frame.parentId && frame.url && frame.url !== 'about:blank')
195
+ this.recorder.visited(frame.url);
196
+ });
197
+ const port = {
198
+ send: (method, params) => target.connection.send(method, params ?? {}, target.sessionId),
199
+ onFrame: (listener) => target.connection.on((message) => {
200
+ if (message.method !== 'Page.screencastFrame' || message.sessionId !== target.sessionId)
201
+ return;
202
+ const params = message.params;
203
+ listener({ data: params.data, sessionId: params.sessionId, timestamp: params.metadata?.timestamp });
204
+ }),
205
+ };
206
+ await this.recorder.begin(port);
207
+ return target;
169
208
  }
170
209
  /** Launches (or reuses) the browser and attaches to one page. */
171
210
  async ensure() {
@@ -177,7 +216,12 @@ export class ProjectBrowser {
177
216
  throw new PtbkError('No Chrome-compatible browser is installed.', { kind: 'setup', next: ['Install Google Chrome or Chromium, or set ptbk.json browser.executable.'] });
178
217
  const profile = browserProfileDirectory(this.project, settings);
179
218
  await ensureDirectory(profile);
180
- const owner = await profileOwner(profile);
219
+ let owner = await profileOwner(profile);
220
+ // Ownership is often transient (a browser still shutting down): recheck briefly before involving a person.
221
+ for (let attempt = 0; owner && attempt < 10; attempt++) {
222
+ await new Promise((resolve) => setTimeout(resolve, 2000));
223
+ owner = await profileOwner(profile);
224
+ }
181
225
  if (owner) {
182
226
  throw new PtbkError(`The browser profile ${profile} is in use by another browser (PID ${owner}).`, {
183
227
  kind: 'conflict',
@@ -219,7 +263,7 @@ export class ProjectBrowser {
219
263
  }
220
264
  /** Evaluates JavaScript in the page and returns its value. */
221
265
  async evaluate(expression) {
222
- const { connection, sessionId } = await this.ensure();
266
+ const { connection, sessionId } = await this.active();
223
267
  const result = await connection.send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId);
224
268
  if (result.exceptionDetails)
225
269
  throw new Error(`Page script failed: ${JSON.stringify(result.exceptionDetails).slice(0, 300)}`);
@@ -243,11 +287,13 @@ export class ProjectBrowser {
243
287
  async open(url) {
244
288
  if (!/^https?:\/\//i.test(url))
245
289
  throw new PtbkError('Only http(s) URLs can be opened.', { kind: 'usage' });
246
- const { connection, sessionId } = await this.ensure();
290
+ const { connection, sessionId } = await this.active();
247
291
  const loaded = connection.waitFor('Page.loadEventFired', 30_000, sessionId);
248
292
  await connection.send('Page.navigate', { url }, sessionId);
249
293
  await loaded;
250
- return await this.read();
294
+ const page = await this.read();
295
+ this.recorder.visited(page.split('\n')[1] ?? url);
296
+ return page;
251
297
  }
252
298
  /** Clicks an element by ref. */
253
299
  async click(reference) {
@@ -257,8 +303,23 @@ export class ProjectBrowser {
257
303
  await new Promise((resolve) => setTimeout(resolve, 1000));
258
304
  return await this.read();
259
305
  }
260
- /** Types into an element by ref (optionally submitting its form). */
306
+ /** Types into an element by ref (optionally submitting its form); secret fields are never recorded. */
261
307
  async type(reference, text, submit) {
308
+ const secret = await this.evaluate(`(() => { const element = document.querySelector('[data-ptbk-ref="${Number(reference)}"]'); return Boolean(element && (element.type === 'password' || /otp|one-time|password|passcode/i.test(element.autocomplete || element.name || ''))); })()`);
309
+ if (secret)
310
+ await this.recorder.pause('secret entry into a password/one-time-code field (not recorded)');
311
+ try {
312
+ return await this.typeInto(reference, text, submit);
313
+ }
314
+ finally {
315
+ if (secret) {
316
+ await new Promise((resolve) => setTimeout(resolve, 1500));
317
+ await this.recorder.resume();
318
+ }
319
+ }
320
+ }
321
+ /** Sets an element's value and dispatches input events. */
322
+ async typeInto(reference, text, submit) {
262
323
  const ok = await this.evaluate(`(() => {
263
324
  const element = document.querySelector('[data-ptbk-ref="${Number(reference)}"]');
264
325
  if (!element) return false;
@@ -277,15 +338,16 @@ export class ProjectBrowser {
277
338
  }
278
339
  /** Saves a screenshot into ignored runtime storage and returns its path. */
279
340
  async screenshot() {
280
- const { connection, sessionId } = await this.ensure();
341
+ const { connection, sessionId } = await this.active();
281
342
  const result = await connection.send('Page.captureScreenshot', { format: 'png' }, sessionId);
282
343
  const directory = await ensureDirectory(join(this.project.runtime.temporary, 'screenshots'));
283
344
  const path = join(directory, `${shortId()}.png`);
284
345
  await writeFile(path, Buffer.from(String(result.data), 'base64'));
285
346
  return path;
286
347
  }
287
- /** Brings the window forward for a human action (only meaningful with a visible window). */
348
+ /** Brings the window forward for a human action (only meaningful with a visible window); the human part is not recorded. */
288
349
  async bringToFront() {
350
+ await this.recorder.pause('human action in the project browser (sign-in, two-factor authentication or consent; not recorded)');
289
351
  if (!this.connection || !this.sessionId)
290
352
  return this.note;
291
353
  await this.connection.send('Page.bringToFront', {}, this.sessionId).catch(() => undefined);
@@ -293,6 +355,8 @@ export class ProjectBrowser {
293
355
  }
294
356
  /** Stops only the browser process this service launched (never the user's browsers or the profile). */
295
357
  close() {
358
+ this.navigationListener?.();
359
+ this.navigationListener = undefined;
296
360
  this.connection?.close();
297
361
  this.connection = undefined;
298
362
  this.sessionId = undefined;
@@ -348,7 +412,7 @@ export function browserTools(browser, requests, task, onUserRequest) {
348
412
  },
349
413
  {
350
414
  name: 'browser_request_user_action',
351
- description: 'Ask the human to act in the shared browser (log in, two-factor authentication, consent). Then end your turn with status waiting-for-user.',
415
+ description: 'Only when a website genuinely requires a human-only step (sign-in, two-factor authentication, consent) that the existing session cannot satisfy: ask the human to act in the shared browser. Then end your turn with status waiting-for-user.',
352
416
  inputSchema: { type: 'object', properties: { reason: { type: 'string' } }, required: ['reason'] },
353
417
  handler: (input) => run(async () => {
354
418
  const note = await browser.bringToFront();
@@ -356,8 +420,9 @@ export function browserTools(browser, requests, task, onUserRequest) {
356
420
  kind: 'action',
357
421
  reason: String(input.reason ?? 'A website needs your action in the project browser.'),
358
422
  question: `Complete the action in the project browser${note ? ` (${note})` : ''}, then confirm.`,
423
+ attempted: 'The task used the existing session of the shared project browser; the website still requires this human-only step.',
359
424
  choices: ['Done', 'I cannot do it'],
360
- origin: { kind: 'browser', taskRef: task.ref, taskTitle: task.title, agent: task.agent },
425
+ origin: { kind: 'browser', taskRef: task.ref, taskId: task.id, taskTitle: task.title, agent: task.agent },
361
426
  blocking: true,
362
427
  });
363
428
  onUserRequest(request);
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ import type { Project } from '../project/workspace.js';
2
+ import { type TaskTrace } from '../engine/task-trace.js';
3
+ /**
4
+ * Status of one recorded segment as listed in `traces/<task-id>/video.json`.
5
+ *
6
+ * @private browser recording
7
+ */
8
+ export type RecordingSegment = {
9
+ /** Attempt/occurrence label the segment belongs to. */
10
+ readonly label: string;
11
+ /** Video path relative to the trace directory (absent when nothing playable was produced). */
12
+ readonly file?: string;
13
+ /** Container/codec. */
14
+ readonly format?: 'mp4 (H.264)' | 'mov (Motion JPEG)';
15
+ /** Start and end (ISO). */
16
+ readonly startedAt: string;
17
+ readonly endedAt: string;
18
+ /** Number of captured frames. */
19
+ readonly frames: number;
20
+ /** Pages visited in order. */
21
+ readonly pages: readonly string[];
22
+ /** Intentional or accidental gaps (secret entry, human sign-in, capture failure, size bound). */
23
+ readonly gaps: ReadonlyArray<{
24
+ readonly at: string;
25
+ readonly reason: string;
26
+ }>;
27
+ /** Outcome of this segment. */
28
+ readonly status: 'recorded' | 'empty' | 'failed';
29
+ /** Explanation for empty/failed segments. */
30
+ readonly note?: string;
31
+ };
32
+ /**
33
+ * Recording status file (`video.json`) of a task.
34
+ *
35
+ * @private browser recording
36
+ */
37
+ export type RecordingStatus = {
38
+ /** Overall state: recorded, disabled by configuration, not applicable (no browser use) or failed. */
39
+ readonly state: 'recorded' | 'disabled' | 'not-applicable' | 'failed' | 'incomplete';
40
+ readonly segments: readonly RecordingSegment[];
41
+ readonly note?: string;
42
+ };
43
+ /**
44
+ * Reads the pixel size of a baseline/progressive JPEG.
45
+ *
46
+ * @private browser recording
47
+ */
48
+ export declare function jpegSize(data: Buffer): {
49
+ width: number;
50
+ height: number;
51
+ } | undefined;
52
+ /**
53
+ * Writes JPEG frames with per-frame durations (ms) as a Motion-JPEG QuickTime movie, streaming frame data from disk.
54
+ *
55
+ * @private browser recording
56
+ */
57
+ export declare function writeMotionJpegMovie(path: string, frames: ReadonlyArray<{
58
+ readonly file: string;
59
+ readonly durationMs: number;
60
+ }>, size: {
61
+ width: number;
62
+ height: number;
63
+ }): Promise<void>;
64
+ /**
65
+ * Minimal surface of the browser connection the recorder needs.
66
+ *
67
+ * @private browser recording
68
+ */
69
+ export type ScreencastPort = {
70
+ readonly send: (method: string, params?: Record<string, unknown>) => Promise<Record<string, unknown>>;
71
+ readonly onFrame: (listener: (frame: {
72
+ data: string;
73
+ sessionId: number;
74
+ timestamp?: number;
75
+ }) => void) => () => void;
76
+ };
77
+ /**
78
+ * Records the project browser for the task that currently owns it, into `traces/<task-id>/video/`.
79
+ *
80
+ * Only the project browser's page is captured (never the desktop or other browsers); human sign-in and secret entry
81
+ * are excluded and listed as gaps. Failures degrade to an honest status and never stop the task.
82
+ *
83
+ * @private browser recording
84
+ */
85
+ export declare class BrowserRecorder {
86
+ private readonly project;
87
+ private readonly enabled;
88
+ private readonly env;
89
+ private trace?;
90
+ private label?;
91
+ private frames;
92
+ private pages;
93
+ private gaps;
94
+ private startedAt;
95
+ private bytes;
96
+ private paused;
97
+ private recording;
98
+ private unsubscribe?;
99
+ private port?;
100
+ private frameDirectory?;
101
+ private segments;
102
+ private used;
103
+ private reported;
104
+ private writeQueue;
105
+ constructor(project: Project, enabled: () => boolean, env: NodeJS.ProcessEnv);
106
+ /** Associates the next browser activity with a task attempt (finishing a segment of another attempt/task). */
107
+ attach(trace: TaskTrace, label: string): Promise<void>;
108
+ /** Whether the attached task is the given one. */
109
+ isAttachedTo(taskId: string): boolean;
110
+ /** Starts capturing on first browser use of the attached task (no-op when disabled or already recording). */
111
+ begin(port: ScreencastPort, url?: string): Promise<void>;
112
+ /** Records a visited page (page transitions are listed with the segment). */
113
+ visited(url: string): void;
114
+ /** Pauses capture around secret entry or human sign-in, recording an intentional gap. */
115
+ pause(reason: string): Promise<void>;
116
+ /** Resumes capture after a pause. */
117
+ resume(): Promise<void>;
118
+ /**
119
+ * Finishes the current segment and writes a playable video plus its status (before the result commit).
120
+ */
121
+ finish(): Promise<void>;
122
+ /** Ends recording for the task (any outcome), states when no video applies, and forgets the association. */
123
+ detach(): Promise<void>;
124
+ /** States once per run, before any result commit, that no video applies to the attached task. */
125
+ private reportUnused;
126
+ /** Stores one frame on disk (bounded). */
127
+ private store;
128
+ /** Appends or replaces a segment in `video.json`. */
129
+ private writeSegment;
130
+ /** Writes `video.json`. */
131
+ private writeStatus;
132
+ }
133
+ /**
134
+ * Removes leftover frame directories of interrupted recordings.
135
+ *
136
+ * @private browser recording
137
+ */
138
+ export declare function cleanStaleRecordings(project: Project): Promise<void>;