ptbk 0.119.0-16 → 0.119.0-21
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 +27 -9
- package/dist/book/commitments.d.ts +38 -10
- package/dist/book/commitments.js +61 -17
- package/dist/book/commitments.js.map +1 -1
- package/dist/book/convert.d.ts +36 -0
- package/dist/book/convert.js +156 -0
- package/dist/book/convert.js.map +1 -0
- package/dist/book/parse.d.ts +50 -13
- package/dist/book/parse.js +132 -45
- package/dist/book/parse.js.map +1 -1
- package/dist/book/references.d.ts +12 -4
- package/dist/book/references.js +34 -9
- package/dist/book/references.js.map +1 -1
- package/dist/book/write.d.ts +42 -0
- package/dist/book/write.js +74 -0
- package/dist/book/write.js.map +1 -0
- package/dist/browser/browser.d.ts +122 -12
- package/dist/browser/browser.js +372 -21
- package/dist/browser/browser.js.map +1 -1
- package/dist/browser/recording.d.ts +3 -3
- package/dist/browser/recording.js +5 -5
- package/dist/browser/recording.js.map +1 -1
- package/dist/chats/chat-book.d.ts +105 -0
- package/dist/chats/chat-book.js +180 -0
- package/dist/chats/chat-book.js.map +1 -0
- package/dist/chats/conversation.d.ts +54 -0
- package/dist/chats/conversation.js +188 -0
- package/dist/chats/conversation.js.map +1 -0
- package/dist/chats/local.d.ts +46 -0
- package/dist/chats/local.js +184 -0
- package/dist/chats/local.js.map +1 -0
- package/dist/chats/migration.d.ts +12 -0
- package/dist/chats/migration.js +62 -0
- package/dist/chats/migration.js.map +1 -0
- package/dist/chats/service.d.ts +81 -0
- package/dist/chats/service.js +122 -0
- package/dist/chats/service.js.map +1 -0
- package/dist/chats/store.d.ts +132 -0
- package/dist/chats/store.js +181 -0
- package/dist/chats/store.js.map +1 -0
- package/dist/chats/task-chats.d.ts +52 -0
- package/dist/chats/task-chats.js +96 -0
- package/dist/chats/task-chats.js.map +1 -0
- package/dist/cli/chats.d.ts +45 -0
- package/dist/cli/chats.js +108 -0
- package/dist/cli/chats.js.map +1 -0
- package/dist/cli/commands/add.js +32 -22
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/answer.d.ts +2 -1
- package/dist/cli/commands/answer.js +35 -41
- package/dist/cli/commands/answer.js.map +1 -1
- package/dist/cli/commands/ask.d.ts +7 -0
- package/dist/cli/commands/ask.js +37 -0
- package/dist/cli/commands/ask.js.map +1 -0
- package/dist/cli/commands/boilerplates.js +14 -3
- package/dist/cli/commands/boilerplates.js.map +1 -1
- package/dist/cli/commands/chat.d.ts +9 -0
- package/dist/cli/commands/chat.js +89 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +3 -1
- package/dist/cli/commands/dashboard.js +41 -3
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/find.js +6 -8
- package/dist/cli/commands/find.js.map +1 -1
- package/dist/cli/commands/fix.js +4 -6
- package/dist/cli/commands/fix.js.map +1 -1
- package/dist/cli/commands/init.d.ts +0 -1
- package/dist/cli/commands/init.js +38 -38
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/lint.js +16 -2
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/list.js +21 -13
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts +2 -1
- package/dist/cli/commands/migrate.js +70 -24
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/pause.d.ts +8 -0
- package/dist/cli/commands/pause.js +40 -0
- package/dist/cli/commands/pause.js.map +1 -0
- package/dist/cli/commands/plan.js +6 -9
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/recover.js +7 -3
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/restart.d.ts +3 -1
- package/dist/cli/commands/restart.js +74 -18
- package/dist/cli/commands/restart.js.map +1 -1
- package/dist/cli/commands/resume.d.ts +8 -0
- package/dist/cli/commands/resume.js +15 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/run.js +6 -9
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/start.js +40 -36
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts +2 -1
- package/dist/cli/commands/status.js +5 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/stop.d.ts +3 -1
- package/dist/cli/commands/stop.js +18 -8
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/commands/verify.js +7 -7
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/common.d.ts +13 -0
- package/dist/cli/common.js +22 -0
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/engine-delegation.d.ts +14 -0
- package/dist/cli/engine-delegation.js +46 -0
- package/dist/cli/engine-delegation.js.map +1 -0
- package/dist/cli/lifecycle.d.ts +40 -0
- package/dist/cli/lifecycle.js +71 -0
- package/dist/cli/lifecycle.js.map +1 -0
- package/dist/cli/registry.js +113 -31
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli/service-view.d.ts +14 -2
- package/dist/cli/service-view.js +46 -5
- package/dist/cli/service-view.js.map +1 -1
- package/dist/cli/sources.js +5 -8
- package/dist/cli/sources.js.map +1 -1
- package/dist/cli/spec.js +1 -1
- package/dist/cli/spec.js.map +1 -1
- package/dist/common/app-data.d.ts +9 -0
- package/dist/common/app-data.js +20 -0
- package/dist/common/app-data.js.map +1 -0
- package/dist/common/errors.d.ts +2 -0
- package/dist/common/errors.js.map +1 -1
- package/dist/common/time.d.ts +6 -0
- package/dist/common/time.js +9 -0
- package/dist/common/time.js.map +1 -1
- package/dist/engine/agenda.d.ts +213 -43
- package/dist/engine/agenda.js +846 -260
- package/dist/engine/agenda.js.map +1 -1
- package/dist/engine/executor.d.ts +23 -7
- package/dist/engine/executor.js +131 -84
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/generated.d.ts +21 -1
- package/dist/engine/generated.js +36 -21
- package/dist/engine/generated.js.map +1 -1
- package/dist/engine/preview.js +10 -10
- package/dist/engine/preview.js.map +1 -1
- package/dist/engine/prompt.d.ts +16 -4
- package/dist/engine/prompt.js +22 -4
- package/dist/engine/prompt.js.map +1 -1
- package/dist/engine/routing.js +28 -4
- package/dist/engine/routing.js.map +1 -1
- package/dist/engine/snapshot.d.ts +178 -29
- package/dist/engine/state.d.ts +40 -13
- package/dist/engine/state.js +20 -5
- package/dist/engine/state.js.map +1 -1
- package/dist/engine/task-trace.d.ts +35 -7
- package/dist/engine/task-trace.js +74 -15
- package/dist/engine/task-trace.js.map +1 -1
- package/dist/engine/team.d.ts +20 -7
- package/dist/engine/team.js +30 -24
- package/dist/engine/team.js.map +1 -1
- package/dist/engine/traces.d.ts +1 -1
- package/dist/engine/traces.js +1 -1
- package/dist/expert/_main.md +67 -52
- package/dist/expert/agents/_index.md +11 -13
- package/dist/expert/agents/chatter.md +31 -0
- package/dist/expert/agents/consistency.md +6 -11
- package/dist/expert/agents/core-agents.md +9 -7
- package/dist/expert/agents/expert.md +2 -2
- package/dist/expert/agents/fixer.md +24 -0
- package/dist/expert/agents/learning.md +1 -1
- package/dist/expert/agents/non-agents.md +6 -4
- package/dist/expert/agents/teacher.md +1 -1
- package/dist/expert/agents/visual-identity.md +4 -4
- package/dist/expert/book-language/_index.md +9 -8
- package/dist/expert/book-language/commitments/_index.md +23 -3
- package/dist/expert/book-language/commitments/agent.md +11 -0
- package/dist/expert/book-language/commitments/chat-member.md +7 -0
- package/dist/expert/book-language/commitments/chat-message.md +11 -0
- package/dist/expert/book-language/commitments/chat-status.md +7 -0
- package/dist/expert/book-language/commitments/chat.md +11 -0
- package/dist/expert/book-language/commitments/entity.md +9 -0
- package/dist/expert/book-language/commitments/from.md +1 -1
- package/dist/expert/book-language/commitments/goal.md +6 -2
- package/dist/expert/book-language/commitments/link.md +9 -0
- package/dist/expert/book-language/commitments/task-depends-on.md +1 -1
- package/dist/expert/book-language/commitments/task-parent.md +1 -1
- package/dist/expert/book-language/commitments/task.md +7 -3
- package/dist/expert/book-language/commitments/team.md +1 -1
- package/dist/expert/book-language/inheritance.md +2 -2
- package/dist/expert/book-language/references.md +20 -24
- package/dist/expert/book-language/syntax.md +54 -11
- package/dist/expert/cli/acceptance.md +59 -24
- package/dist/expert/cli/api.md +23 -9
- package/dist/expert/cli/authoring.md +6 -4
- package/dist/expert/cli/autonomous-operation.md +3 -3
- package/dist/expert/cli/browser.md +29 -18
- package/dist/expert/cli/channels.md +5 -7
- package/dist/expert/cli/chat-ui.md +32 -0
- package/dist/expert/cli/chats.md +59 -0
- package/dist/expert/cli/cli.md +44 -26
- package/dist/expert/cli/configuration.md +3 -3
- package/dist/expert/cli/controls.md +13 -7
- package/dist/expert/cli/dashboard-details.md +23 -0
- package/dist/expert/cli/dashboard-layout.md +19 -12
- package/dist/expert/cli/dashboard.md +12 -8
- package/dist/expert/cli/execution.md +8 -6
- package/dist/expert/cli/first-task.md +4 -4
- package/dist/expert/cli/generated-names.md +44 -0
- package/dist/expert/cli/git-persistence.md +19 -17
- package/dist/expert/cli/global-dashboard.md +33 -0
- package/dist/expert/cli/goal-discovery.md +1 -1
- package/dist/expert/cli/help.md +1 -1
- package/dist/expert/cli/initialization-ui.md +2 -0
- package/dist/expert/cli/initialization.md +9 -7
- package/dist/expert/cli/interactive-ui.md +9 -5
- package/dist/expert/cli/locking.md +21 -0
- package/dist/expert/cli/migration.md +22 -6
- package/dist/expert/cli/process-modes.md +21 -13
- package/dist/expert/cli/recovery.md +8 -6
- package/dist/expert/cli/recurrence.md +1 -1
- package/dist/expert/cli/rich-input.md +2 -2
- package/dist/expert/cli/service-lifecycle.md +57 -0
- package/dist/expert/cli/start.md +2 -2
- package/dist/expert/cli/status-view.md +16 -12
- package/dist/expert/cli/task-books.md +11 -15
- package/dist/expert/cli/task-identity.md +8 -10
- package/dist/expert/cli/task-markdown.md +6 -10
- package/dist/expert/cli/task-origins.md +3 -1
- package/dist/expert/cli/task-relationships.md +5 -9
- package/dist/expert/cli/team.md +17 -7
- package/dist/expert/cli/terminal.md +20 -12
- package/dist/expert/cli/trace-configuration.md +1 -1
- package/dist/expert/cli/traces.md +19 -23
- package/dist/expert/cli/user-interactions.md +14 -26
- package/dist/expert/cli/workspace.md +15 -9
- package/dist/expert/concepts/engine-and-project.md +11 -0
- package/dist/expert/concepts/project-model.md +39 -0
- package/dist/expert/dictionary.md +21 -15
- package/dist/harness/plugins/claude-code/index.js +1 -0
- package/dist/harness/plugins/claude-code/index.js.map +1 -1
- package/dist/harness/plugins/cline/index.js +1 -0
- package/dist/harness/plugins/cline/index.js.map +1 -1
- package/dist/harness/plugins/openai-codex/index.js +1 -0
- package/dist/harness/plugins/openai-codex/index.js.map +1 -1
- package/dist/harness/plugins/opencode/index.js +1 -0
- package/dist/harness/plugins/opencode/index.js.map +1 -1
- package/dist/harness/types.d.ts +3 -1
- package/dist/project/agents.d.ts +29 -81
- package/dist/project/agents.js +48 -267
- package/dist/project/agents.js.map +1 -1
- package/dist/project/books.d.ts +150 -0
- package/dist/project/books.js +253 -0
- package/dist/project/books.js.map +1 -0
- package/dist/project/config.js +2 -2
- package/dist/project/config.js.map +1 -1
- package/dist/project/defaults.d.ts +35 -6
- package/dist/project/defaults.js +73 -40
- package/dist/project/defaults.js.map +1 -1
- package/dist/project/expert.js +18 -10
- package/dist/project/expert.js.map +1 -1
- package/dist/project/git.d.ts +4 -3
- package/dist/project/git.js +16 -5
- package/dist/project/git.js.map +1 -1
- package/dist/project/setup.d.ts +4 -1
- package/dist/project/setup.js +26 -6
- package/dist/project/setup.js.map +1 -1
- package/dist/service/actions.d.ts +34 -10
- package/dist/service/actions.js +51 -19
- package/dist/service/actions.js.map +1 -1
- package/dist/service/control.d.ts +53 -1
- package/dist/service/control.js +64 -4
- package/dist/service/control.js.map +1 -1
- package/dist/service/discovery.d.ts +133 -0
- package/dist/service/discovery.js +138 -0
- package/dist/service/discovery.js.map +1 -0
- package/dist/service/host.d.ts +8 -1
- package/dist/service/host.js +65 -18
- package/dist/service/host.js.map +1 -1
- package/dist/service/http.d.ts +3 -0
- package/dist/service/http.js +26 -6
- package/dist/service/http.js.map +1 -1
- package/dist/service/launcher.d.ts +66 -13
- package/dist/service/launcher.js +78 -18
- package/dist/service/launcher.js.map +1 -1
- package/dist/service/records.d.ts +12 -2
- package/dist/service/records.js +19 -5
- package/dist/service/records.js.map +1 -1
- package/dist/service/spa/app.css +83 -2
- package/dist/service/spa/app.js +393 -72
- package/dist/service/supervisor.js +7 -1
- package/dist/service/supervisor.js.map +1 -1
- package/dist/service/worker.js +14 -5
- package/dist/service/worker.js.map +1 -1
- package/dist/tasks/authoring.d.ts +3 -5
- package/dist/tasks/authoring.js +6 -7
- package/dist/tasks/authoring.js.map +1 -1
- package/dist/tasks/book-task.d.ts +18 -10
- package/dist/tasks/book-task.js +27 -23
- package/dist/tasks/book-task.js.map +1 -1
- package/dist/tasks/eligibility.d.ts +15 -7
- package/dist/tasks/eligibility.js +41 -14
- package/dist/tasks/eligibility.js.map +1 -1
- package/dist/tasks/identity.d.ts +41 -15
- package/dist/tasks/identity.js +100 -31
- package/dist/tasks/identity.js.map +1 -1
- package/dist/tasks/markdown.d.ts +7 -14
- package/dist/tasks/markdown.js +15 -29
- package/dist/tasks/markdown.js.map +1 -1
- package/dist/tasks/model.d.ts +20 -4
- package/dist/tasks/model.js +17 -0
- package/dist/tasks/model.js.map +1 -1
- package/dist/tasks/sources.d.ts +7 -2
- package/dist/tasks/sources.js +46 -35
- package/dist/tasks/sources.js.map +1 -1
- package/dist/ui/chat-client.d.ts +70 -0
- package/dist/ui/chat-client.js +209 -0
- package/dist/ui/chat-client.js.map +1 -0
- package/dist/ui/dashboard.d.ts +8 -5
- package/dist/ui/dashboard.js +227 -86
- package/dist/ui/dashboard.js.map +1 -1
- package/dist/ui/details.d.ts +64 -0
- package/dist/ui/details.js +175 -0
- package/dist/ui/details.js.map +1 -0
- package/dist/ui/global-dashboard.d.ts +59 -0
- package/dist/ui/global-dashboard.js +307 -0
- package/dist/ui/global-dashboard.js.map +1 -0
- package/dist/ui/status-view.d.ts +7 -0
- package/dist/ui/status-view.js +94 -36
- package/dist/ui/status-view.js.map +1 -1
- package/package.json +1 -1
- package/dist/engine/requests.d.ts +0 -111
- package/dist/engine/requests.js +0 -173
- package/dist/engine/requests.js.map +0 -1
- package/dist/expert/book-language/commitments/task-id.md +0 -9
- package/dist/tasks/prepare.d.ts +0 -33
- package/dist/tasks/prepare.js +0 -90
- package/dist/tasks/prepare.js.map +0 -1
package/dist/browser/browser.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
import { readFile, readlink, writeFile } from 'node:fs/promises';
|
|
3
|
-
import {
|
|
2
|
+
import { readFile, readlink, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join, resolve } from 'node:path';
|
|
4
5
|
import { PtbkError, errorMessage } from '../common/errors.js';
|
|
5
6
|
import { ensureDirectory, pathExists } from '../common/fs.js';
|
|
6
|
-
import { shortId } from '../common/ids.js';
|
|
7
|
+
import { shortHash, shortId } from '../common/ids.js';
|
|
7
8
|
import { isProcessAlive, terminateProcessTree, which } from '../common/process.js';
|
|
8
9
|
import { setting } from '../project/config.js';
|
|
10
|
+
import { createRedactor } from '../common/redact.js';
|
|
11
|
+
import { promptbookAppData } from '../common/app-data.js';
|
|
9
12
|
import { BrowserRecorder, cleanStaleRecordings } from './recording.js';
|
|
10
13
|
/**
|
|
11
14
|
* Maximal page text returned to an agent.
|
|
@@ -15,6 +18,14 @@ const MAX_PAGE_TEXT = 20_000;
|
|
|
15
18
|
* How long Chrome may take to expose its DevTools endpoint.
|
|
16
19
|
*/
|
|
17
20
|
const STARTUP_TIMEOUT_MS = 30_000;
|
|
21
|
+
/**
|
|
22
|
+
* Bounded automatic launch attempts before a failure becomes a visible blocker.
|
|
23
|
+
*/
|
|
24
|
+
const LAUNCH_ATTEMPTS = 3;
|
|
25
|
+
/**
|
|
26
|
+
* Delay before an automatic relaunch attempt (doubles per attempt).
|
|
27
|
+
*/
|
|
28
|
+
const LAUNCH_RETRY_MS = 3000;
|
|
18
29
|
/**
|
|
19
30
|
* Candidate Chrome-compatible executables per platform.
|
|
20
31
|
*/
|
|
@@ -48,13 +59,96 @@ export async function findBrowserExecutable(settings, env = process.env) {
|
|
|
48
59
|
return undefined;
|
|
49
60
|
}
|
|
50
61
|
/**
|
|
51
|
-
*
|
|
62
|
+
* Classifies a `browser.profile` value: `global`, `isolated`, `user`, or a custom profile path.
|
|
63
|
+
*
|
|
64
|
+
* @private project browser
|
|
65
|
+
*/
|
|
66
|
+
export function browserProfileSource(value) {
|
|
67
|
+
return value === 'global' || value === 'isolated' || value === 'user' ? value : 'custom';
|
|
68
|
+
}
|
|
69
|
+
export { promptbookAppData };
|
|
70
|
+
/**
|
|
71
|
+
* The dedicated Promptbook-managed browser profile shared by this user's projects (not the user's own Chrome profile).
|
|
72
|
+
*
|
|
73
|
+
* @private project browser
|
|
74
|
+
*/
|
|
75
|
+
export function globalBrowserProfile(env = process.env) {
|
|
76
|
+
return join(promptbookAppData(env), 'browser-profile');
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The user's ordinary Chrome user-data directory on this platform.
|
|
52
80
|
*
|
|
53
81
|
* @private project browser
|
|
54
82
|
*/
|
|
55
|
-
export function
|
|
83
|
+
export function userChromeProfile(env = process.env) {
|
|
84
|
+
if (process.platform === 'darwin')
|
|
85
|
+
return join(homedir(), 'Library', 'Application Support', 'Google', 'Chrome');
|
|
86
|
+
if (process.platform === 'win32')
|
|
87
|
+
return join(env.LOCALAPPDATA ?? join(homedir(), 'AppData', 'Local'), 'Google', 'Chrome', 'User Data');
|
|
88
|
+
return join(homedir(), '.config', 'google-chrome');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolves the profile directory of the selected source: the managed global profile, the isolated project profile in
|
|
92
|
+
* `.ptbk/`, the user's Chrome profile, or a custom path (relative paths resolve against the project).
|
|
93
|
+
*
|
|
94
|
+
* @private project browser
|
|
95
|
+
*/
|
|
96
|
+
export function browserProfileDirectory(project, settings, env = process.env) {
|
|
56
97
|
const profile = setting(settings, 'browser.profile');
|
|
57
|
-
|
|
98
|
+
switch (browserProfileSource(profile)) {
|
|
99
|
+
case 'global':
|
|
100
|
+
return globalBrowserProfile(env);
|
|
101
|
+
case 'isolated':
|
|
102
|
+
return project.runtime.browserProfile;
|
|
103
|
+
case 'user':
|
|
104
|
+
return userChromeProfile(env);
|
|
105
|
+
case 'custom':
|
|
106
|
+
return resolve(project.root, profile);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Human description of a `browser.profile` value.
|
|
111
|
+
*
|
|
112
|
+
* @private project browser
|
|
113
|
+
*/
|
|
114
|
+
export function describeBrowserProfile(value) {
|
|
115
|
+
switch (browserProfileSource(value)) {
|
|
116
|
+
case 'global':
|
|
117
|
+
return 'dedicated Promptbook profile shared by your projects';
|
|
118
|
+
case 'isolated':
|
|
119
|
+
return 'isolated project profile';
|
|
120
|
+
case 'user':
|
|
121
|
+
return 'your Chrome profile';
|
|
122
|
+
case 'custom':
|
|
123
|
+
return `custom profile ${value}`;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Cross-project ownership of a shared profile: one project's automation at a time (`<app data>/locks/`).
|
|
128
|
+
*
|
|
129
|
+
* Returns a release function, or the PID of the live owner when another process holds it.
|
|
130
|
+
*/
|
|
131
|
+
async function claimProfile(profileDirectory, project, env) {
|
|
132
|
+
const directory = await ensureDirectory(join(promptbookAppData(env), 'locks'));
|
|
133
|
+
const path = join(directory, `browser-${shortHash(profileDirectory, 16)}.json`);
|
|
134
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
135
|
+
try {
|
|
136
|
+
await writeFile(path, JSON.stringify({ pid: process.pid, project: project.root, profile: profileDirectory, at: new Date().toISOString() }), { flag: 'wx' });
|
|
137
|
+
return { release: async () => await rm(path, { force: true }) };
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
const holder = await readFile(path, 'utf8')
|
|
141
|
+
.then((text) => JSON.parse(text))
|
|
142
|
+
.catch(() => undefined);
|
|
143
|
+
if (holder?.pid === process.pid)
|
|
144
|
+
return { release: async () => await rm(path, { force: true }) };
|
|
145
|
+
if (holder?.pid && isProcessAlive(holder.pid))
|
|
146
|
+
return { owner: holder.pid, project: holder.project };
|
|
147
|
+
// A stale claim of a process that no longer runs is removed, never a live one.
|
|
148
|
+
await rm(path, { force: true });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return { owner: -1 };
|
|
58
152
|
}
|
|
59
153
|
/**
|
|
60
154
|
* Checks whether another browser process currently owns a profile (Chrome's singleton lock).
|
|
@@ -87,6 +181,7 @@ class CdpConnection {
|
|
|
87
181
|
nextId = 1;
|
|
88
182
|
pending = new Map();
|
|
89
183
|
listeners = new Set();
|
|
184
|
+
closeListeners = new Set();
|
|
90
185
|
constructor(socket) {
|
|
91
186
|
this.socket = socket;
|
|
92
187
|
socket.addEventListener('message', (event) => {
|
|
@@ -109,6 +204,8 @@ class CdpConnection {
|
|
|
109
204
|
for (const entry of this.pending.values())
|
|
110
205
|
entry.reject(new Error('The browser connection closed.'));
|
|
111
206
|
this.pending.clear();
|
|
207
|
+
for (const listener of [...this.closeListeners])
|
|
208
|
+
listener();
|
|
112
209
|
});
|
|
113
210
|
}
|
|
114
211
|
/** Opens a connection. */
|
|
@@ -150,8 +247,13 @@ class CdpConnection {
|
|
|
150
247
|
this.listeners.add(listener);
|
|
151
248
|
return () => this.listeners.delete(listener);
|
|
152
249
|
}
|
|
153
|
-
/**
|
|
250
|
+
/** Notifies when the connection closes (browser exit or crash). */
|
|
251
|
+
onClose(listener) {
|
|
252
|
+
this.closeListeners.add(listener);
|
|
253
|
+
}
|
|
254
|
+
/** Closes the socket (an intentional close does not notify close listeners). */
|
|
154
255
|
close() {
|
|
256
|
+
this.closeListeners.clear();
|
|
155
257
|
this.socket.close();
|
|
156
258
|
}
|
|
157
259
|
}
|
|
@@ -164,19 +266,175 @@ export class ProjectBrowser {
|
|
|
164
266
|
project;
|
|
165
267
|
settings;
|
|
166
268
|
env;
|
|
269
|
+
onChange;
|
|
167
270
|
child;
|
|
271
|
+
/** Release of the cross-project claim of a shared profile. */
|
|
272
|
+
releaseClaim;
|
|
168
273
|
connection;
|
|
169
274
|
sessionId;
|
|
170
275
|
note;
|
|
171
|
-
/**
|
|
276
|
+
/** A launch in progress (concurrent automatic/manual starts share it: never two owners). */
|
|
277
|
+
launching;
|
|
278
|
+
/** The current task used the browser (a restart waits for the task boundary). */
|
|
279
|
+
usedByTask = false;
|
|
280
|
+
/** A manual restart waits for the current task to release the browser. */
|
|
281
|
+
pendingRestart = false;
|
|
282
|
+
/** Observed health, diagnostics and recovery. */
|
|
283
|
+
health = { state: 'not-started', ownership: { state: 'unknown' }, recovery: { attempts: 0, state: 'idle' } };
|
|
284
|
+
/** Task-linked recording of browser activity (`traces/<task-file-basename>/video/`). */
|
|
172
285
|
recorder;
|
|
173
|
-
constructor(project, settings, env
|
|
286
|
+
constructor(project, settings, env,
|
|
287
|
+
/** Publishes health changes to every view. */
|
|
288
|
+
onChange = () => undefined) {
|
|
174
289
|
this.project = project;
|
|
175
290
|
this.settings = settings;
|
|
176
291
|
this.env = env;
|
|
292
|
+
this.onChange = onChange;
|
|
177
293
|
this.recorder = new BrowserRecorder(project, () => setting(this.settings(), 'traces.recordVideo'), env);
|
|
178
294
|
void cleanStaleRecordings(project);
|
|
179
295
|
}
|
|
296
|
+
/** Updates the observed health and notifies the views. */
|
|
297
|
+
setHealth(changes) {
|
|
298
|
+
this.health = { ...this.health, ...changes, checkedAt: new Date().toISOString() };
|
|
299
|
+
this.onChange();
|
|
300
|
+
}
|
|
301
|
+
/** Records a real launch/connection failure with redacted evidence. */
|
|
302
|
+
recordFailure(error) {
|
|
303
|
+
const redact = createRedactor();
|
|
304
|
+
const details = error instanceof PtbkError ? error.details : undefined;
|
|
305
|
+
this.setHealth({ lastFailure: { at: new Date().toISOString(), summary: redact(errorMessage(error)), evidence: details?.reason ? redact(details.reason) : undefined } });
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* The browser as the engine sees it: effective profile source and resolved path, requested/actual mode, health,
|
|
309
|
+
* ownership, last failure and recovery. A profile path is diagnostic data, never permission to read its contents.
|
|
310
|
+
*/
|
|
311
|
+
inspect() {
|
|
312
|
+
const settings = this.settings();
|
|
313
|
+
const profile = setting(settings, 'browser.profile');
|
|
314
|
+
const profilePath = browserProfileDirectory(this.project, settings, this.env);
|
|
315
|
+
const source = browserProfileSource(profile);
|
|
316
|
+
const overridden = ['cli', 'runtime'].includes(settings.sources['browser.profile'] ?? 'default');
|
|
317
|
+
const active = this.health.profilePath && this.child && this.health.profilePath !== profilePath ? this.health.profilePath : undefined;
|
|
318
|
+
return {
|
|
319
|
+
source,
|
|
320
|
+
sourceLabel: describeBrowserProfile(profile),
|
|
321
|
+
profilePath: active ?? profilePath,
|
|
322
|
+
savedProfile: overridden ? `overridden for this process (${settings.sources['browser.profile']}); the saved default stays in ptbk.json` : undefined,
|
|
323
|
+
pending: active ? `The selected profile changes to ${profilePath} at the next task boundary (after the browser restarts).` : this.pendingRestart ? 'A browser restart waits for the current task to release the browser.' : undefined,
|
|
324
|
+
mode: { requested: setting(settings, 'browser.mode') === 'headful' ? 'headful' : 'headless', actual: this.child ? this.health.actualMode : undefined, note: this.note },
|
|
325
|
+
executable: this.health.executable,
|
|
326
|
+
state: this.health.state,
|
|
327
|
+
pid: this.child?.pid,
|
|
328
|
+
ownership: this.health.ownership,
|
|
329
|
+
lastFailure: this.health.lastFailure,
|
|
330
|
+
recovery: this.health.recovery,
|
|
331
|
+
lastAction: this.health.lastAction,
|
|
332
|
+
checkedAt: this.health.checkedAt,
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
/** Records the outcome of a manual browser action. */
|
|
336
|
+
acted(action, state, outcome) {
|
|
337
|
+
this.setHealth({ lastAction: { action, at: new Date().toISOString(), outcome, state } });
|
|
338
|
+
return { action: `browser-${action}`, outcome, applied: state !== 'failed', completed: state === 'succeeded' };
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Diagnostic recheck (no launch, no change): browser executable, profile existence and ownership, and the live
|
|
342
|
+
* connection when the browser runs.
|
|
343
|
+
*/
|
|
344
|
+
async recheck() {
|
|
345
|
+
const settings = this.settings();
|
|
346
|
+
const findings = [];
|
|
347
|
+
const executable = await findBrowserExecutable(settings, this.env);
|
|
348
|
+
findings.push(executable ? `browser ${executable}` : 'no Chrome-compatible browser installed');
|
|
349
|
+
const profile = browserProfileDirectory(this.project, settings, this.env);
|
|
350
|
+
const source = browserProfileSource(setting(settings, 'browser.profile'));
|
|
351
|
+
const exists = await pathExists(profile);
|
|
352
|
+
findings.push(exists ? `profile ${profile}` : source === 'user' || source === 'custom' ? `profile ${profile} does not exist` : `profile ${profile} is created on first use`);
|
|
353
|
+
const holder = this.child ? undefined : await profileOwner(profile);
|
|
354
|
+
const ownership = this.child ? { state: 'owned' } : holder ? { state: 'busy', holder: `browser PID ${holder}` } : { state: 'free' };
|
|
355
|
+
if (holder)
|
|
356
|
+
findings.push(`profile in use by browser PID ${holder}`);
|
|
357
|
+
let state = this.health.state;
|
|
358
|
+
if (this.connection) {
|
|
359
|
+
try {
|
|
360
|
+
await Promise.race([this.connection.send('Browser.getVersion'), new Promise((_, reject) => setTimeout(() => reject(new Error('no answer within 5 s')), 5000))]);
|
|
361
|
+
state = 'running';
|
|
362
|
+
findings.push('connection healthy');
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
this.connectionLost(`The browser stopped answering: ${errorMessage(error)}`);
|
|
366
|
+
state = 'failed';
|
|
367
|
+
findings.push('connection lost (the next use relaunches it)');
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
else if (state === 'running')
|
|
371
|
+
state = 'stopped';
|
|
372
|
+
this.setHealth({ state, executable: executable ?? undefined, ownership });
|
|
373
|
+
const healthy = Boolean(executable) && (exists || source === 'global' || source === 'isolated') && !holder && state !== 'failed';
|
|
374
|
+
return this.acted('recheck', healthy ? 'succeeded' : 'failed', `${healthy ? 'Browser diagnostics OK' : 'Browser problem found'}: ${findings.join('; ')}.`);
|
|
375
|
+
}
|
|
376
|
+
/** Retries browser startup now (sharing any launch already in progress); a shared profile is released again when idle. */
|
|
377
|
+
async retry() {
|
|
378
|
+
if (this.connection && this.sessionId)
|
|
379
|
+
return this.acted('retry', 'succeeded', 'The project browser is already running.');
|
|
380
|
+
this.setHealth({ recovery: { ...this.health.recovery, attempts: 0, state: 'retrying' } });
|
|
381
|
+
try {
|
|
382
|
+
await this.ensure();
|
|
383
|
+
}
|
|
384
|
+
catch (error) {
|
|
385
|
+
return this.acted('retry', 'failed', `Startup failed: ${errorMessage(error)}`);
|
|
386
|
+
}
|
|
387
|
+
if (!this.usedByTask)
|
|
388
|
+
this.releaseShared();
|
|
389
|
+
return this.acted('retry', 'succeeded', this.child ? 'The project browser started.' : 'The project browser started successfully and was released again (shared profile, no task needs it now).');
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Restarts only this project's own browser process, preserving the selected profile and its sessions. While a task
|
|
393
|
+
* uses the browser the restart waits for that task's boundary instead of breaking its work.
|
|
394
|
+
*/
|
|
395
|
+
async restart() {
|
|
396
|
+
if (this.usedByTask) {
|
|
397
|
+
this.pendingRestart = true;
|
|
398
|
+
return this.acted('restart', 'deferred', 'The current task is using the browser; the restart happens when it finishes.');
|
|
399
|
+
}
|
|
400
|
+
return await this.restartNow();
|
|
401
|
+
}
|
|
402
|
+
/** Performs a restart at a safe boundary. */
|
|
403
|
+
async restartNow() {
|
|
404
|
+
this.pendingRestart = false;
|
|
405
|
+
const wasRunning = Boolean(this.child);
|
|
406
|
+
this.close();
|
|
407
|
+
const shared = browserProfileSource(setting(this.settings(), 'browser.profile')) !== 'isolated';
|
|
408
|
+
if (shared)
|
|
409
|
+
return this.acted('restart', 'succeeded', wasRunning ? 'Closed this project’s browser; the next use starts it again with the same profile.' : 'The browser was not running; the next use starts it with the same profile.');
|
|
410
|
+
try {
|
|
411
|
+
await this.ensure();
|
|
412
|
+
return this.acted('restart', 'succeeded', 'Restarted the project browser with the same profile.');
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
return this.acted('restart', 'failed', `The browser did not start again: ${errorMessage(error)}`);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
/** After a task: performs a deferred restart and releases a shared profile. */
|
|
419
|
+
async taskFinished() {
|
|
420
|
+
this.usedByTask = false;
|
|
421
|
+
if (this.pendingRestart)
|
|
422
|
+
await this.restartNow().catch(() => undefined);
|
|
423
|
+
this.releaseShared();
|
|
424
|
+
}
|
|
425
|
+
/** Handles a lost connection: stops only this project's browser process; the next use relaunches it. */
|
|
426
|
+
connectionLost(reason) {
|
|
427
|
+
this.navigationListener?.();
|
|
428
|
+
this.navigationListener = undefined;
|
|
429
|
+
this.connection = undefined;
|
|
430
|
+
this.sessionId = undefined;
|
|
431
|
+
if (this.child)
|
|
432
|
+
terminateProcessTree(this.child);
|
|
433
|
+
this.child = undefined;
|
|
434
|
+
void this.releaseProfile();
|
|
435
|
+
this.recordFailure(new PtbkError('The connection to the project browser was lost.', { kind: 'technical', reason }));
|
|
436
|
+
this.setHealth({ state: 'failed', recovery: { ...this.health.recovery, state: 'retrying' } });
|
|
437
|
+
}
|
|
180
438
|
/** Associates subsequent browser use with a task attempt for recording. */
|
|
181
439
|
async useFor(trace, attempt) {
|
|
182
440
|
await this.recorder.attach(trace, attempt);
|
|
@@ -186,6 +444,7 @@ export class ProjectBrowser {
|
|
|
186
444
|
/** Ensures the browser runs and recording of the attached task has begun. */
|
|
187
445
|
async active() {
|
|
188
446
|
const target = await this.ensure();
|
|
447
|
+
this.usedByTask = true;
|
|
189
448
|
// Page transitions (including link clicks and redirects) are listed with the recording segment.
|
|
190
449
|
this.navigationListener ??= target.connection.on((message) => {
|
|
191
450
|
if (message.method !== 'Page.frameNavigated' || message.sessionId !== target.sessionId)
|
|
@@ -206,16 +465,72 @@ export class ProjectBrowser {
|
|
|
206
465
|
await this.recorder.begin(port);
|
|
207
466
|
return target;
|
|
208
467
|
}
|
|
209
|
-
/**
|
|
468
|
+
/**
|
|
469
|
+
* Launches (or reuses) the browser and attaches to one page. A technical launch failure is retried automatically
|
|
470
|
+
* within a bound; concurrent callers share one launch, so automatic and manual recovery never start two owners.
|
|
471
|
+
*/
|
|
210
472
|
async ensure() {
|
|
211
473
|
if (this.connection && this.sessionId)
|
|
212
474
|
return { connection: this.connection, sessionId: this.sessionId };
|
|
475
|
+
this.launching ??= this.launchWithRecovery().finally(() => {
|
|
476
|
+
this.launching = undefined;
|
|
477
|
+
});
|
|
478
|
+
return await this.launching;
|
|
479
|
+
}
|
|
480
|
+
/** Bounded automatic launch recovery with recorded attempts, causes and next retry. */
|
|
481
|
+
async launchWithRecovery() {
|
|
482
|
+
for (let attempt = 1;; attempt++) {
|
|
483
|
+
this.setHealth({ state: this.health.lastFailure ? 'recovering' : 'starting', recovery: { ...this.health.recovery, attempts: attempt - 1 } });
|
|
484
|
+
try {
|
|
485
|
+
const target = await this.launchOnce();
|
|
486
|
+
this.setHealth({ state: 'running', ownership: { state: 'owned' }, recovery: { attempts: 0, state: 'idle' } });
|
|
487
|
+
return target;
|
|
488
|
+
}
|
|
489
|
+
catch (error) {
|
|
490
|
+
this.recordFailure(error);
|
|
491
|
+
const kind = error instanceof PtbkError ? error.details.kind : 'technical';
|
|
492
|
+
if (kind !== 'technical' || attempt >= LAUNCH_ATTEMPTS) {
|
|
493
|
+
this.setHealth({ state: 'failed', recovery: { attempts: attempt, state: 'blocked', blocker: kind === 'conflict' ? 'The profile is in use by another owner; ptbk retries when a task needs the browser.' : kind === 'technical' ? `Startup failed ${attempt} times; the next task use retries.` : 'Needs setup: see the last failure.' } });
|
|
494
|
+
throw error;
|
|
495
|
+
}
|
|
496
|
+
const delay = LAUNCH_RETRY_MS * 2 ** (attempt - 1);
|
|
497
|
+
this.setHealth({ state: 'recovering', recovery: { attempts: attempt, state: 'retrying', nextRetryAt: new Date(Date.now() + delay).toISOString() } });
|
|
498
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
/** One launch attempt of the configured browser and profile. */
|
|
503
|
+
async launchOnce() {
|
|
213
504
|
const settings = this.settings();
|
|
214
505
|
const executable = await findBrowserExecutable(settings, this.env);
|
|
215
506
|
if (!executable)
|
|
216
507
|
throw new PtbkError('No Chrome-compatible browser is installed.', { kind: 'setup', next: ['Install Google Chrome or Chromium, or set ptbk.json browser.executable.'] });
|
|
217
|
-
const
|
|
218
|
-
|
|
508
|
+
const source = browserProfileSource(setting(settings, 'browser.profile'));
|
|
509
|
+
const profile = browserProfileDirectory(this.project, settings, this.env);
|
|
510
|
+
this.health = { ...this.health, executable, profilePath: profile };
|
|
511
|
+
if (source === 'user' || source === 'custom') {
|
|
512
|
+
// An existing profile is reused as it is; it is never created, copied or migrated implicitly.
|
|
513
|
+
if (!(await pathExists(profile)))
|
|
514
|
+
throw new PtbkError(`The selected browser profile ${profile} does not exist.`, { kind: 'configuration', next: ['Choose another profile in ptbk.json `browser.profile` (global, isolated, user or a path), or pass --browser-profile.'] });
|
|
515
|
+
}
|
|
516
|
+
else
|
|
517
|
+
await ensureDirectory(profile);
|
|
518
|
+
if (source !== 'isolated') {
|
|
519
|
+
let claim = await claimProfile(profile, this.project, this.env);
|
|
520
|
+
for (let attempt = 0; 'owner' in claim && attempt < 10; attempt++) {
|
|
521
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
522
|
+
claim = await claimProfile(profile, this.project, this.env);
|
|
523
|
+
}
|
|
524
|
+
if ('owner' in claim) {
|
|
525
|
+
this.setHealth({ ownership: { state: 'busy', holder: `${claim.project ? `project ${claim.project}, ` : ''}PID ${claim.owner}` } });
|
|
526
|
+
throw new PtbkError(`The shared browser profile is in use by another Promptbook project${claim.project ? ` (${claim.project})` : ''}.`, {
|
|
527
|
+
kind: 'conflict',
|
|
528
|
+
reason: `One project automates a shared profile at a time; PID ${claim.owner} holds ${profile}.`,
|
|
529
|
+
next: ['The other project releases it after its current task; ptbk retries later. Choose an isolated profile to avoid waiting.'],
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
this.releaseClaim = claim.release;
|
|
533
|
+
}
|
|
219
534
|
let owner = await profileOwner(profile);
|
|
220
535
|
// Ownership is often transient (a browser still shutting down): recheck briefly before involving a person.
|
|
221
536
|
for (let attempt = 0; owner && attempt < 10; attempt++) {
|
|
@@ -223,6 +538,8 @@ export class ProjectBrowser {
|
|
|
223
538
|
owner = await profileOwner(profile);
|
|
224
539
|
}
|
|
225
540
|
if (owner) {
|
|
541
|
+
await this.releaseProfile();
|
|
542
|
+
this.setHealth({ ownership: { state: 'busy', holder: `browser PID ${owner}` } });
|
|
226
543
|
throw new PtbkError(`The browser profile ${profile} is in use by another browser (PID ${owner}).`, {
|
|
227
544
|
kind: 'conflict',
|
|
228
545
|
next: ['Close that browser to hand the profile over, or choose another profile (ptbk.json browser.profile).'],
|
|
@@ -236,6 +553,18 @@ export class ProjectBrowser {
|
|
|
236
553
|
const activePortFile = join(profile, 'DevToolsActivePort');
|
|
237
554
|
await writeFile(activePortFile, '').catch(() => undefined);
|
|
238
555
|
const args = [`--user-data-dir=${profile}`, '--remote-debugging-port=0', '--no-first-run', '--no-default-browser-check', '--disable-background-networking', ...(headless ? ['--headless=new'] : []), 'about:blank'];
|
|
556
|
+
this.health = { ...this.health, actualMode: headless ? 'headless' : 'headful' };
|
|
557
|
+
try {
|
|
558
|
+
return await this.launch(executable, args, activePortFile, headless);
|
|
559
|
+
}
|
|
560
|
+
catch (error) {
|
|
561
|
+
// A browser that did not come up is stopped and a shared profile is released again.
|
|
562
|
+
this.close();
|
|
563
|
+
throw error;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
/** Starts the browser process and attaches to one page. */
|
|
567
|
+
async launch(executable, args, activePortFile, headless) {
|
|
239
568
|
this.child = spawn(executable, args, { stdio: 'ignore', windowsHide: headless, detached: process.platform !== 'win32' });
|
|
240
569
|
this.child.unref();
|
|
241
570
|
const deadline = Date.now() + STARTUP_TIMEOUT_MS;
|
|
@@ -252,6 +581,7 @@ export class ProjectBrowser {
|
|
|
252
581
|
throw new PtbkError('The browser did not start in time.', { kind: 'technical', reason: `No DevTools port appeared in ${activePortFile} within ${STARTUP_TIMEOUT_MS / 1000}s.` });
|
|
253
582
|
const version = (await (await fetch(`http://127.0.0.1:${port}/json/version`)).json());
|
|
254
583
|
const connection = await CdpConnection.open(version.webSocketDebuggerUrl);
|
|
584
|
+
connection.onClose(() => this.connectionLost('The browser process exited or closed its DevTools connection.'));
|
|
255
585
|
const targets = (await connection.send('Target.getTargets')).targetInfos;
|
|
256
586
|
const page = targets.find((target) => target.type === 'page') ?? { targetId: String((await connection.send('Target.createTarget', { url: 'about:blank' })).targetId), type: 'page' };
|
|
257
587
|
const sessionId = String((await connection.send('Target.attachToTarget', { targetId: page.targetId, flatten: true })).sessionId);
|
|
@@ -360,9 +690,30 @@ export class ProjectBrowser {
|
|
|
360
690
|
this.connection?.close();
|
|
361
691
|
this.connection = undefined;
|
|
362
692
|
this.sessionId = undefined;
|
|
693
|
+
const wasRunning = Boolean(this.child);
|
|
363
694
|
if (this.child)
|
|
364
695
|
terminateProcessTree(this.child);
|
|
365
696
|
this.child = undefined;
|
|
697
|
+
void this.releaseProfile();
|
|
698
|
+
if (wasRunning)
|
|
699
|
+
this.setHealth({ state: 'stopped', ownership: { state: 'free' } });
|
|
700
|
+
}
|
|
701
|
+
/** Releases this project's claim of a shared profile. */
|
|
702
|
+
async releaseProfile() {
|
|
703
|
+
const release = this.releaseClaim;
|
|
704
|
+
this.releaseClaim = undefined;
|
|
705
|
+
await release?.().catch(() => undefined);
|
|
706
|
+
}
|
|
707
|
+
/**
|
|
708
|
+
* After a task: a browser on a shared profile (global, user or custom) is closed so other projects can use the
|
|
709
|
+
* profile; the isolated project profile stays open for the next task.
|
|
710
|
+
*/
|
|
711
|
+
releaseShared() {
|
|
712
|
+
if (!this.child && !this.releaseClaim)
|
|
713
|
+
return;
|
|
714
|
+
if (browserProfileSource(setting(this.settings(), 'browser.profile')) === 'isolated')
|
|
715
|
+
return;
|
|
716
|
+
this.close();
|
|
366
717
|
}
|
|
367
718
|
}
|
|
368
719
|
/**
|
|
@@ -370,7 +721,7 @@ export class ProjectBrowser {
|
|
|
370
721
|
*
|
|
371
722
|
* @private project browser
|
|
372
723
|
*/
|
|
373
|
-
export function browserTools(browser,
|
|
724
|
+
export function browserTools(browser, chats, agent, onUserChat) {
|
|
374
725
|
const run = async (action) => {
|
|
375
726
|
try {
|
|
376
727
|
return { text: await action() };
|
|
@@ -415,18 +766,18 @@ export function browserTools(browser, requests, task, onUserRequest) {
|
|
|
415
766
|
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.',
|
|
416
767
|
inputSchema: { type: 'object', properties: { reason: { type: 'string' } }, required: ['reason'] },
|
|
417
768
|
handler: (input) => run(async () => {
|
|
769
|
+
if (!chats)
|
|
770
|
+
throw new PtbkError('The user is not available in this run; report blocked with the reason instead.', { kind: 'unsupported' });
|
|
418
771
|
const note = await browser.bringToFront();
|
|
419
|
-
const
|
|
420
|
-
|
|
772
|
+
const chat = await chats.askUser({
|
|
773
|
+
agent,
|
|
421
774
|
reason: String(input.reason ?? 'A website needs your action in the project browser.'),
|
|
422
|
-
|
|
423
|
-
|
|
775
|
+
attempted: 'I used the existing session of the shared project browser; the website still requires this human-only step.',
|
|
776
|
+
question: `Please complete the action in the project browser${note ? ` (${note})` : ''}, then confirm here.`,
|
|
424
777
|
choices: ['Done', 'I cannot do it'],
|
|
425
|
-
origin: { kind: 'browser', taskRef: task.ref, taskId: task.id, taskTitle: task.title, agent: task.agent },
|
|
426
|
-
blocking: true,
|
|
427
778
|
});
|
|
428
|
-
|
|
429
|
-
return `
|
|
779
|
+
onUserChat(chat);
|
|
780
|
+
return `The request is in the chat {{${chat.chat}}}, waiting for the user. End your turn now with status waiting-for-user.`;
|
|
430
781
|
}),
|
|
431
782
|
},
|
|
432
783
|
];
|
|
@@ -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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"}
|