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.
- package/README.md +11 -7
- package/dist/browser/browser.d.ts +15 -2
- package/dist/browser/browser.js +74 -9
- package/dist/browser/browser.js.map +1 -1
- package/dist/browser/recording.d.ts +138 -0
- package/dist/browser/recording.js +361 -0
- package/dist/browser/recording.js.map +1 -0
- package/dist/cli/commands/add.js +14 -9
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/find.js +6 -1
- package/dist/cli/commands/find.js.map +1 -1
- package/dist/cli/commands/fix.js +2 -0
- package/dist/cli/commands/fix.js.map +1 -1
- package/dist/cli/commands/init.d.ts +12 -2
- package/dist/cli/commands/init.js +817 -442
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.js +57 -1
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/migrate.js +11 -5
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/plan.js +12 -2
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/recover.js +10 -4
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/stop.js +1 -1
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/commands/verify.js +6 -3
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/common.js +3 -0
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/help.js +3 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/registry.js +32 -18
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli/service-view.js +2 -2
- package/dist/cli/service-view.js.map +1 -1
- package/dist/cli/spec.js +1 -1
- package/dist/cli/spec.js.map +1 -1
- package/dist/common/process.d.ts +6 -0
- package/dist/common/process.js +46 -4
- package/dist/common/process.js.map +1 -1
- package/dist/engine/agenda.d.ts +33 -3
- package/dist/engine/agenda.js +202 -31
- package/dist/engine/agenda.js.map +1 -1
- package/dist/engine/executor.d.ts +15 -1
- package/dist/engine/executor.js +169 -32
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/generated.d.ts +9 -13
- package/dist/engine/generated.js +16 -24
- package/dist/engine/generated.js.map +1 -1
- package/dist/engine/prompt.js +5 -3
- package/dist/engine/prompt.js.map +1 -1
- package/dist/engine/requests.d.ts +11 -1
- package/dist/engine/requests.js +14 -1
- package/dist/engine/requests.js.map +1 -1
- package/dist/engine/snapshot.d.ts +17 -0
- package/dist/engine/state.d.ts +20 -1
- package/dist/engine/state.js +31 -1
- package/dist/engine/state.js.map +1 -1
- package/dist/engine/task-trace.d.ts +90 -0
- package/dist/engine/task-trace.js +206 -0
- package/dist/engine/task-trace.js.map +1 -0
- package/dist/engine/team.d.ts +5 -1
- package/dist/engine/team.js +15 -8
- package/dist/engine/team.js.map +1 -1
- package/dist/engine/traces.d.ts +2 -28
- package/dist/engine/traces.js +3 -84
- package/dist/engine/traces.js.map +1 -1
- package/dist/expert/_main.md +23 -14
- package/dist/expert/book-language/commitments/task-id.md +3 -1
- package/dist/expert/book-language/references.md +3 -3
- package/dist/expert/cli/acceptance.md +39 -28
- package/dist/expert/cli/autonomous-operation.md +39 -0
- package/dist/expert/cli/browser.md +8 -2
- package/dist/expert/cli/cli.md +12 -12
- package/dist/expert/cli/configuration.md +5 -3
- package/dist/expert/cli/execution.md +7 -5
- package/dist/expert/cli/first-task.md +19 -5
- package/dist/expert/cli/git-persistence.md +11 -7
- package/dist/expert/cli/harness-plugins.md +3 -1
- package/dist/expert/cli/initialization-ui.md +31 -0
- package/dist/expert/cli/initialization.md +25 -21
- package/dist/expert/cli/interactive-ui.md +6 -6
- package/dist/expert/cli/process-modes.md +5 -3
- package/dist/expert/cli/recovery.md +5 -5
- package/dist/expert/cli/retries.md +6 -4
- package/dist/expert/cli/rich-input.md +15 -0
- package/dist/expert/cli/start.md +11 -9
- package/dist/expert/cli/task-books.md +7 -4
- package/dist/expert/cli/task-identity.md +17 -0
- package/dist/expert/cli/task-markdown.md +4 -2
- package/dist/expert/cli/trace-configuration.md +23 -0
- package/dist/expert/cli/traces.md +38 -8
- package/dist/expert/cli/updates.md +3 -3
- package/dist/expert/cli/user-interactions.md +14 -10
- package/dist/expert/cli/workspace.md +8 -4
- package/dist/harness/plugins/openai-codex/index.js +4 -1
- package/dist/harness/plugins/openai-codex/index.js.map +1 -1
- package/dist/harness/run.d.ts +1 -1
- package/dist/harness/run.js +13 -0
- package/dist/harness/run.js.map +1 -1
- package/dist/harness/types.d.ts +4 -0
- package/dist/project/agents.js +14 -4
- package/dist/project/agents.js.map +1 -1
- package/dist/project/config.js +12 -2
- package/dist/project/config.js.map +1 -1
- package/dist/project/defaults.d.ts +24 -7
- package/dist/project/defaults.js +43 -15
- package/dist/project/defaults.js.map +1 -1
- package/dist/project/draft.d.ts +29 -0
- package/dist/project/draft.js +65 -0
- package/dist/project/draft.js.map +1 -0
- package/dist/project/git.d.ts +23 -1
- package/dist/project/git.js +37 -1
- package/dist/project/git.js.map +1 -1
- package/dist/project/setup.d.ts +37 -6
- package/dist/project/setup.js +76 -19
- package/dist/project/setup.js.map +1 -1
- package/dist/service/host.js +8 -2
- package/dist/service/host.js.map +1 -1
- package/dist/service/spa/app.js +4 -2
- package/dist/tasks/authoring.d.ts +2 -8
- package/dist/tasks/authoring.js +2 -10
- package/dist/tasks/authoring.js.map +1 -1
- package/dist/tasks/book-task.js +6 -7
- package/dist/tasks/book-task.js.map +1 -1
- package/dist/tasks/identity.d.ts +41 -0
- package/dist/tasks/identity.js +67 -0
- package/dist/tasks/identity.js.map +1 -0
- package/dist/tasks/markdown.d.ts +22 -3
- package/dist/tasks/markdown.js +63 -17
- package/dist/tasks/markdown.js.map +1 -1
- package/dist/tasks/prepare.d.ts +33 -0
- package/dist/tasks/prepare.js +90 -0
- package/dist/tasks/prepare.js.map +1 -0
- package/dist/tasks/sources.js +13 -7
- package/dist/tasks/sources.js.map +1 -1
- package/dist/ui/attachments.d.ts +55 -0
- package/dist/ui/attachments.js +134 -0
- package/dist/ui/attachments.js.map +1 -0
- package/dist/ui/celebration.d.ts +8 -0
- package/dist/ui/celebration.js +47 -0
- package/dist/ui/celebration.js.map +1 -0
- package/dist/ui/composer.d.ts +70 -4
- package/dist/ui/composer.js +156 -15
- package/dist/ui/composer.js.map +1 -1
- package/dist/ui/keys.d.ts +1 -1
- package/dist/ui/keys.js +4 -0
- package/dist/ui/keys.js.map +1 -1
- package/dist/ui/prompts.d.ts +67 -1
- package/dist/ui/prompts.js +224 -14
- package/dist/ui/prompts.js.map +1 -1
- package/dist/ui/status-view.js +11 -2
- package/dist/ui/status-view.js.map +1 -1
- 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.
|
|
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 #
|
|
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[];
|
package/dist/browser/browser.js
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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: '
|
|
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>;
|