pi-browser-use 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/doctor.d.ts +5 -2
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +9 -3
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -8
- package/dist/index.js.map +1 -1
- package/dist/persistent-backend.d.ts +17 -4
- package/dist/persistent-backend.d.ts.map +1 -1
- package/dist/persistent-backend.js +75 -12
- package/dist/persistent-backend.js.map +1 -1
- package/dist/shared-backend.d.ts +70 -0
- package/dist/shared-backend.d.ts.map +1 -0
- package/dist/shared-backend.js +152 -0
- package/dist/shared-backend.js.map +1 -0
- package/package.json +1 -1
- package/skills/browser-policy/SKILL.md +10 -0
package/dist/doctor.d.ts
CHANGED
|
@@ -3,8 +3,10 @@ export interface DoctorReport {
|
|
|
3
3
|
mode: string;
|
|
4
4
|
headless: boolean;
|
|
5
5
|
launchesChrome: boolean;
|
|
6
|
-
/** Who owns the Chrome process: Pi self-launch, MCP launch, or user attach. */
|
|
7
|
-
backend?: 'pi-owned' | 'mcp-launched' | 'attached-external';
|
|
6
|
+
/** Who owns the Chrome process: Pi self-launch, shared peer, MCP launch, or user attach. */
|
|
7
|
+
backend?: 'pi-owned' | 'shared' | 'mcp-launched' | 'attached-external';
|
|
8
|
+
/** Agent sessions currently holding claimed pages (including self). */
|
|
9
|
+
peers?: number;
|
|
8
10
|
/** Tab-bridge base URL when the Existing broker bridge is running. */
|
|
9
11
|
bridgeUrl?: string | null;
|
|
10
12
|
profile: {
|
|
@@ -24,6 +26,7 @@ export interface DoctorReport {
|
|
|
24
26
|
export declare function diagnose(config: BrowserUseConfig, listToolNames: () => Promise<string[]>, extra?: {
|
|
25
27
|
backend?: DoctorReport['backend'];
|
|
26
28
|
bridgeUrl?: string | null;
|
|
29
|
+
peers?: number;
|
|
27
30
|
}): Promise<DoctorReport>;
|
|
28
31
|
export declare function formatDoctorReport(report: DoctorReport, home?: string): string;
|
|
29
32
|
//# sourceMappingURL=doctor.d.ts.map
|
package/dist/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAExE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAExE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,mBAAmB,CAAA;IACtE,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAA;IACnE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;CACb;AAcD;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,EACtC,KAAK,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACvF,OAAO,CAAC,YAAY,CAAC,CAuBvB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,MAAkB,GAAG,MAAM,CA4BzF"}
|
package/dist/doctor.js
CHANGED
|
@@ -34,6 +34,7 @@ export async function diagnose(config, listToolNames, extra) {
|
|
|
34
34
|
? 'mcp-launched'
|
|
35
35
|
: 'attached-external'),
|
|
36
36
|
bridgeUrl: extra?.bridgeUrl ?? null,
|
|
37
|
+
peers: extra?.peers ?? 0,
|
|
37
38
|
profile: { dir, ...profileStatus(dir) },
|
|
38
39
|
endpoint: config.browserUrl ?? config.wsEndpoint ?? (config.autoConnect ? 'auto-discovered' : null),
|
|
39
40
|
upstreamTools: (await listToolNames()).length,
|
|
@@ -43,13 +44,18 @@ export async function diagnose(config, listToolNames, extra) {
|
|
|
43
44
|
export function formatDoctorReport(report, home = homedir()) {
|
|
44
45
|
const backendLine = report.backend === 'pi-owned'
|
|
45
46
|
? 'Chrome: Pi-owned process for this session (self-launched profile, MCP attached).'
|
|
46
|
-
: report.
|
|
47
|
-
? 'Chrome:
|
|
48
|
-
:
|
|
47
|
+
: report.backend === 'shared'
|
|
48
|
+
? 'Chrome: shared peer backend (owned by another live session; this session borrows pages only).'
|
|
49
|
+
: report.launchesChrome
|
|
50
|
+
? 'Chrome: launched by chrome-devtools-mcp for this session.'
|
|
51
|
+
: `Chrome: attached externally (${report.endpoint ?? 'unknown endpoint'}). Launch flags do not apply.`;
|
|
49
52
|
const lines = [`Mode: ${report.mode} (headless: ${report.headless ? 'yes' : 'no'})`, backendLine];
|
|
50
53
|
if (report.bridgeUrl) {
|
|
51
54
|
lines.push(`Tab bridge: ${report.bridgeUrl} (Existing-mode broker).`);
|
|
52
55
|
}
|
|
56
|
+
if ((report.peers ?? 0) > 1) {
|
|
57
|
+
lines.push(`Sessions sharing this browser: ${report.peers} (page claims keep tabs separated).`);
|
|
58
|
+
}
|
|
53
59
|
if (report.profile.dir) {
|
|
54
60
|
const display = report.profile.dir.replace(home, '~');
|
|
55
61
|
lines.push(`Profile: ${display} (exists: ${report.profile.exists ? 'yes' : 'no'}, writable: ${report.profile.writable ? 'yes' : 'NO — check ownership'}).`);
|
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAyB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmEA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAkCzD,UAAU,aAAa;IACrB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;IAChD,mBAAmB,CACjB,KAAK,EAAE,OAAO,GACb,OAAO,CACR;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAC/F,CAAA;CACF;AAED,UAAU,aAAa;IACrB,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED,UAAU,EAAE;IACV,YAAY,CAAC,GAAG,EAAE;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,OAAO,CAAA;QACnB,OAAO,EAAE,CACP,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,OAAO,EAClB,GAAG,CAAC,EAAE,aAAa,KAChB,OAAO,CAAC;YACX,OAAO,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;YACjF,OAAO,CAAC,EAAE,OAAO,CAAA;YACjB,OAAO,CAAC,EAAE,SAAS,CAAA;SACpB,CAAC,CAAA;KACH,GAAG,IAAI,CAAA;IACR,EAAE,CACA,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GACzF,IAAI,CAAA;CACR;AA8BD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,EAAE,EAAE,QAw7BjD"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { pickImageData, resolveArtifactTarget } from './artifacts.js';
|
|
|
10
10
|
import { CLEANUP_ANNOTATIONS, formatAnnotatedMap, INJECT_ANNOTATIONS, parseAnnotatedElements, } from './annotate.js';
|
|
11
11
|
import { diagnose, formatDoctorReport } from './doctor.js';
|
|
12
12
|
import { checkExistingCloseAllowed, normalizeTabUrl, openExistingPage, parseMcpPageList, } from './existing-flow.js';
|
|
13
|
+
import { checkSharedCloseAllowed, claimPage, livePeerSessions, newSessionId, pruneDeadOwners, releasePages, } from './shared-backend.js';
|
|
13
14
|
import { applyNewPageDefaults, applySelectPageDefaults } from './focus-policy.js';
|
|
14
15
|
import { frontProcessByPid } from './chrome-launcher.js';
|
|
15
16
|
import { PersistentBackend, shouldSelfLaunch } from './persistent-backend.js';
|
|
@@ -85,6 +86,14 @@ export default function browserUseExtension(pi) {
|
|
|
85
86
|
// URLs Pi opened or navigated to in Existing mode (raw + normalized): the
|
|
86
87
|
// only close_page targets allowed there without explicit force:true.
|
|
87
88
|
const piOwnedUrls = new Set();
|
|
89
|
+
// This extension load's agent-session identity for the shared registry.
|
|
90
|
+
const sessionId = newSessionId();
|
|
91
|
+
const myOwner = { sessionId, pid: process.pid };
|
|
92
|
+
const shortSession = sessionId.slice(0, 8);
|
|
93
|
+
/** Registry home: the persistent profile, or the default home for existing. */
|
|
94
|
+
function registryDir() {
|
|
95
|
+
return currentMode === 'persistent' ? persistentProfileDir(config ?? {}) : DEFAULT_PROFILE_DIR;
|
|
96
|
+
}
|
|
88
97
|
function trackPiUrl(url) {
|
|
89
98
|
piOwnedUrls.add(url);
|
|
90
99
|
piOwnedUrls.add(normalizeTabUrl(url));
|
|
@@ -157,7 +166,7 @@ export default function browserUseExtension(pi) {
|
|
|
157
166
|
backendNote = ` (${normalizeOrigin(lastOrigin)} prefers the visible fallback)`;
|
|
158
167
|
}
|
|
159
168
|
}
|
|
160
|
-
ownBackend = new PersistentBackend({ config: next, headed: effectiveHeaded });
|
|
169
|
+
ownBackend = new PersistentBackend({ config: next, headed: effectiveHeaded, sessionId });
|
|
161
170
|
const attach = await ownBackend.start(signal);
|
|
162
171
|
client = new DevToolsClient(attach);
|
|
163
172
|
markAutomationResult(profileDir, effectiveHeaded ? 'headed' : 'headless');
|
|
@@ -347,13 +356,28 @@ export default function browserUseExtension(pi) {
|
|
|
347
356
|
// as Pi-touched for the close guard below.
|
|
348
357
|
if (currentMode === 'existing')
|
|
349
358
|
trackPiUrl(effectiveParams.url);
|
|
359
|
+
// Claim navigated pages for this session so peer agents in a
|
|
360
|
+
// shared browser can tell ours apart (best effort, never fatal).
|
|
361
|
+
if (originalName === 'navigate_page' &&
|
|
362
|
+
(currentMode === 'persistent' || currentMode === 'existing') &&
|
|
363
|
+
typeof effectiveParams.pageId === 'number') {
|
|
364
|
+
try {
|
|
365
|
+
claimPage(registryDir(), { pageId: effectiveParams.pageId, url: effectiveParams.url }, myOwner);
|
|
366
|
+
}
|
|
367
|
+
catch {
|
|
368
|
+
// Ownership is coordination metadata, not the task itself.
|
|
369
|
+
}
|
|
370
|
+
}
|
|
350
371
|
}
|
|
351
|
-
//
|
|
352
|
-
//
|
|
372
|
+
// Never close another session's tabs: Existing mode checks Pi URL
|
|
373
|
+
// ownership (spec 19); a shared persistent backend checks the page
|
|
374
|
+
// registry instead. Both yield to explicit force:true.
|
|
353
375
|
if (originalName === 'close_page') {
|
|
354
376
|
const { force: _force, ...closeArgs } = effectiveParams;
|
|
355
377
|
void _force;
|
|
356
|
-
|
|
378
|
+
const wantsForce = effectiveParams.force === true;
|
|
379
|
+
const sharedPersistent = currentMode === 'persistent' && !!ownBackend && !ownBackend.owned;
|
|
380
|
+
if ((currentMode === 'existing' || sharedPersistent) && !wantsForce) {
|
|
357
381
|
if (typeof effectiveParams.pageId !== 'number') {
|
|
358
382
|
return {
|
|
359
383
|
content: [{ type: 'text', text: 'close_page needs a numeric pageId.' }],
|
|
@@ -362,7 +386,9 @@ export default function browserUseExtension(pi) {
|
|
|
362
386
|
};
|
|
363
387
|
}
|
|
364
388
|
const entries = parseMcpPageList(await callUpstream(browser, 'list_pages', {}, signal));
|
|
365
|
-
const verdict =
|
|
389
|
+
const verdict = currentMode === 'existing'
|
|
390
|
+
? checkExistingCloseAllowed(entries, effectiveParams.pageId, piOwnedUrls)
|
|
391
|
+
: checkSharedCloseAllowed(entries, effectiveParams.pageId, registryDir(), myOwner, piOwnedUrls);
|
|
366
392
|
if (!verdict.ok) {
|
|
367
393
|
return {
|
|
368
394
|
content: [{ type: 'text', text: verdict.reason }],
|
|
@@ -372,6 +398,14 @@ export default function browserUseExtension(pi) {
|
|
|
372
398
|
}
|
|
373
399
|
}
|
|
374
400
|
const result = await callUpstream(browser, originalName, closeArgs, signal);
|
|
401
|
+
if (!result.isError && typeof effectiveParams.pageId === 'number') {
|
|
402
|
+
try {
|
|
403
|
+
releasePages(registryDir(), { pageId: effectiveParams.pageId });
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
// Registry hygiene never fails the close itself.
|
|
407
|
+
}
|
|
408
|
+
}
|
|
375
409
|
return { ...toToolContent(result, originalName), details: undefined };
|
|
376
410
|
}
|
|
377
411
|
let result = await callUpstream(browser, originalName, effectiveParams, signal);
|
|
@@ -596,7 +630,7 @@ export default function browserUseExtension(pi) {
|
|
|
596
630
|
const profileDir = persistentProfileDir(config ?? {});
|
|
597
631
|
const meta = loadPersistentMetadata(profileDir);
|
|
598
632
|
const sitePins = loadSitePreferences(profileDir).length;
|
|
599
|
-
const lines = ['Pi Browser', '──────────'];
|
|
633
|
+
const lines = ['Pi Browser', '──────────', `Session: ${shortSession}`];
|
|
600
634
|
if (mode === 'fresh') {
|
|
601
635
|
lines.push('Profile: Ephemeral (nothing persists)');
|
|
602
636
|
lines.push('Execution: Headless');
|
|
@@ -655,6 +689,17 @@ export default function browserUseExtension(pi) {
|
|
|
655
689
|
? params.url
|
|
656
690
|
: (lastOrigin ?? 'this page');
|
|
657
691
|
const variant = params.variant === 'plain' ? 'plain' : 'instrumented';
|
|
692
|
+
if (ownBackend && !ownBackend.owned) {
|
|
693
|
+
return {
|
|
694
|
+
content: [
|
|
695
|
+
{
|
|
696
|
+
type: 'text',
|
|
697
|
+
text: 'Another live agent session owns the persistent browser (shared mode). Reauth must happen there — ask that session to run browser_reauth, or wait for it to exit and retry.',
|
|
698
|
+
},
|
|
699
|
+
],
|
|
700
|
+
details: undefined,
|
|
701
|
+
};
|
|
702
|
+
}
|
|
658
703
|
if (!ownBackend) {
|
|
659
704
|
// Legacy MCP-launched persistent: headed switch is the reauth path.
|
|
660
705
|
await switchBackend('persistent', true, signal);
|
|
@@ -673,6 +718,7 @@ export default function browserUseExtension(pi) {
|
|
|
673
718
|
const backend = new PersistentBackend({
|
|
674
719
|
config: config ?? {},
|
|
675
720
|
headed: variant === 'instrumented',
|
|
721
|
+
sessionId,
|
|
676
722
|
});
|
|
677
723
|
ownBackend = backend;
|
|
678
724
|
const message = await runReauth({
|
|
@@ -746,6 +792,14 @@ export default function browserUseExtension(pi) {
|
|
|
746
792
|
},
|
|
747
793
|
}, { timeoutMs, signal });
|
|
748
794
|
trackPiUrl(params.url);
|
|
795
|
+
if (result.pageId !== undefined) {
|
|
796
|
+
try {
|
|
797
|
+
claimPage(registryDir(), { pageId: result.pageId, url: params.url }, myOwner);
|
|
798
|
+
}
|
|
799
|
+
catch {
|
|
800
|
+
// Ownership is coordination metadata, not the task itself.
|
|
801
|
+
}
|
|
802
|
+
}
|
|
749
803
|
const selectHint = result.pageId !== undefined
|
|
750
804
|
? ` Select it with browser_select_page (it stays in the background).`
|
|
751
805
|
: ' Call browser_list_pages to find it (it stays in the background).';
|
|
@@ -769,9 +823,17 @@ export default function browserUseExtension(pi) {
|
|
|
769
823
|
parameters: Type.Object({}),
|
|
770
824
|
async execute() {
|
|
771
825
|
await ensureConnected();
|
|
826
|
+
let peers = 0;
|
|
827
|
+
try {
|
|
828
|
+
peers = livePeerSessions(registryDir()).length;
|
|
829
|
+
}
|
|
830
|
+
catch {
|
|
831
|
+
peers = 0;
|
|
832
|
+
}
|
|
772
833
|
const report = await diagnose(config ?? {}, async () => (await client.listAllTools()).map((tool) => tool.name), {
|
|
773
|
-
backend: ownBackend ? 'pi-owned' : undefined,
|
|
834
|
+
backend: ownBackend ? (ownBackend.owned ? 'pi-owned' : 'shared') : undefined,
|
|
774
835
|
bridgeUrl: bridge?.baseUrl() ?? null,
|
|
836
|
+
peers,
|
|
775
837
|
});
|
|
776
838
|
return { content: [{ type: 'text', text: formatDoctorReport(report) }], details: undefined };
|
|
777
839
|
},
|
|
@@ -811,7 +873,7 @@ export default function browserUseExtension(pi) {
|
|
|
811
873
|
currentMode = describeMode();
|
|
812
874
|
if (currentMode === 'persistent' && shouldSelfLaunch(config)) {
|
|
813
875
|
// Phase 2: Pi owns the persistent Chrome process; MCP attaches.
|
|
814
|
-
ownBackend = new PersistentBackend({ config, headed: config.headless === false });
|
|
876
|
+
ownBackend = new PersistentBackend({ config, headed: config.headless === false, sessionId });
|
|
815
877
|
client = new DevToolsClient(await ownBackend.start());
|
|
816
878
|
}
|
|
817
879
|
else {
|
|
@@ -832,6 +894,15 @@ export default function browserUseExtension(pi) {
|
|
|
832
894
|
});
|
|
833
895
|
pi.on('session_shutdown', async () => {
|
|
834
896
|
await teardownBackend();
|
|
897
|
+
// Release this session's page claims in every scope it may have used.
|
|
898
|
+
for (const scope of new Set([persistentProfileDir(config ?? {}), DEFAULT_PROFILE_DIR])) {
|
|
899
|
+
try {
|
|
900
|
+
releasePages(scope, { sessionId });
|
|
901
|
+
}
|
|
902
|
+
catch {
|
|
903
|
+
// Best effort.
|
|
904
|
+
}
|
|
905
|
+
}
|
|
835
906
|
if (bridge) {
|
|
836
907
|
try {
|
|
837
908
|
await bridge.stop();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,8 @@ export interface PersistentBackendOptions {
|
|
|
33
33
|
config: BrowserUseConfig;
|
|
34
34
|
/** Headed (false = headless automation, true = visible fallback/auth). */
|
|
35
35
|
headed?: boolean;
|
|
36
|
+
/** Agent-session identity for the shared registry. Generated when omitted. */
|
|
37
|
+
sessionId?: string;
|
|
36
38
|
launch?: (options: ChromeLaunchOptions) => Promise<ChromeProcess>;
|
|
37
39
|
lock?: (profileDir: string) => ProfileLockHandle;
|
|
38
40
|
/** Build the MCP client already pointed at `browserUrl`. */
|
|
@@ -43,14 +45,17 @@ export declare class PersistentBackend {
|
|
|
43
45
|
private chrome;
|
|
44
46
|
private lock;
|
|
45
47
|
private client;
|
|
48
|
+
private sharedAdvert;
|
|
46
49
|
private readonly launch;
|
|
47
50
|
private readonly acquireLock;
|
|
48
51
|
private readonly attachClient;
|
|
52
|
+
readonly sessionId: string;
|
|
49
53
|
constructor(options: PersistentBackendOptions);
|
|
54
|
+
/** True when this session owns the Chrome process (may restart it). */
|
|
55
|
+
get owned(): boolean;
|
|
50
56
|
profileDir(): string;
|
|
51
57
|
browserUrl(): string | undefined;
|
|
52
58
|
attached(): AttachedClient | undefined;
|
|
53
|
-
running(): boolean;
|
|
54
59
|
/** OS pid of the owned Chrome process, for explicit user-facing fronting. */
|
|
55
60
|
pid(): number | undefined;
|
|
56
61
|
/**
|
|
@@ -59,12 +64,20 @@ export declare class PersistentBackend {
|
|
|
59
64
|
* otherwise the caller builds its DevToolsClient from `attachConfig()`.
|
|
60
65
|
*/
|
|
61
66
|
start(signal?: AbortSignal): Promise<BrowserUseConfig>;
|
|
67
|
+
/** Effective browser URL: owned Chrome or the shared peer's. */
|
|
68
|
+
effectiveBrowserUrl(): string;
|
|
62
69
|
/**
|
|
63
|
-
* MCP attach config: same session options, but pointed at Pi-owned Chrome
|
|
64
|
-
* `userDataDir`/`isolated` are stripped — MCP
|
|
70
|
+
* MCP attach config: same session options, but pointed at Pi-owned Chrome
|
|
71
|
+
* (or the shared peer's). `userDataDir`/`isolated` are stripped — MCP
|
|
72
|
+
* must attach, not launch.
|
|
65
73
|
*/
|
|
66
74
|
attachConfig(): BrowserUseConfig;
|
|
67
|
-
|
|
75
|
+
running(): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Clean shutdown. Owned: close client, quit Chrome, release lock,
|
|
78
|
+
* withdraw advert. Shared: close only our own MCP client — never touch
|
|
79
|
+
* the peer's browser.
|
|
80
|
+
*/
|
|
68
81
|
stop(): Promise<void>;
|
|
69
82
|
/** Restart into the other visibility (headless <-> headed fallback). */
|
|
70
83
|
restart(headed: boolean): Promise<BrowserUseConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-backend.d.ts","sourceRoot":"","sources":["../src/persistent-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAgB,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEjG,OAAO,
|
|
1
|
+
{"version":3,"file":"persistent-backend.d.ts","sourceRoot":"","sources":["../src/persistent-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAgB,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEjG,OAAO,EAA0C,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AASlG,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAExE,MAAM,WAAW,cAAc;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,qDAAqD;IACrD,MAAM,EAAE,gBAAgB,CAAA;IACxB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IACjE,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,iBAAiB,CAAA;IAChD,4DAA4D;IAC5D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,cAAc,CAAA;CAC5D;AAED,qBAAa,iBAAiB;IAUhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IATpC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0D;IACjF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;IACvE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4D;IACzF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;gBAEG,OAAO,EAAE,wBAAwB;IAO9D,uEAAuE;IACvE,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM,GAAG,SAAS;IAQhC,QAAQ,IAAI,cAAc,GAAG,SAAS;IAItC,6EAA6E;IAC7E,GAAG,IAAI,MAAM,GAAG,SAAS;IAIzB;;;;OAIG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuD5D,gEAAgE;IAChE,mBAAmB,IAAI,MAAM;IAM7B;;;;OAIG;IACH,YAAY,IAAI,gBAAgB;IAQhC,OAAO,IAAI,OAAO;IAKlB;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C3B,wEAAwE;IAClE,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAW1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAIlE"}
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
*/
|
|
25
25
|
import { launchChrome } from './chrome-launcher.js';
|
|
26
26
|
import { ensureNamedProfile, PI_PROFILE_NAME } from './named-profile.js';
|
|
27
|
-
import { acquireProfileLock } from './profile-lock.js';
|
|
27
|
+
import { acquireProfileLock, ProfileLockedError } from './profile-lock.js';
|
|
28
|
+
import { advertiseBackend, newSessionId, readLiveAdvert, withdrawAdvert, } from './shared-backend.js';
|
|
28
29
|
import { prepareBrowserProfile } from './profile.js';
|
|
29
30
|
import { DEFAULT_PROFILE_DIR } from './config.js';
|
|
30
31
|
export class PersistentBackend {
|
|
@@ -32,27 +33,36 @@ export class PersistentBackend {
|
|
|
32
33
|
chrome;
|
|
33
34
|
lock;
|
|
34
35
|
client;
|
|
36
|
+
sharedAdvert;
|
|
35
37
|
launch;
|
|
36
38
|
acquireLock;
|
|
37
39
|
attachClient;
|
|
40
|
+
sessionId;
|
|
38
41
|
constructor(options) {
|
|
39
42
|
this.options = options;
|
|
40
43
|
this.launch = options.launch ?? launchChrome;
|
|
41
44
|
this.acquireLock = options.lock ?? ((dir) => acquireProfileLock(dir));
|
|
42
45
|
this.attachClient = options.attachClient;
|
|
46
|
+
this.sessionId = options.sessionId ?? newSessionId();
|
|
47
|
+
}
|
|
48
|
+
/** True when this session owns the Chrome process (may restart it). */
|
|
49
|
+
get owned() {
|
|
50
|
+
return this.sharedAdvert === undefined;
|
|
43
51
|
}
|
|
44
52
|
profileDir() {
|
|
45
53
|
return this.options.config.userDataDir ?? DEFAULT_PROFILE_DIR;
|
|
46
54
|
}
|
|
47
55
|
browserUrl() {
|
|
48
|
-
|
|
56
|
+
try {
|
|
57
|
+
return this.effectiveBrowserUrl();
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
49
62
|
}
|
|
50
63
|
attached() {
|
|
51
64
|
return this.client;
|
|
52
65
|
}
|
|
53
|
-
running() {
|
|
54
|
-
return this.chrome !== undefined && !this.chrome.exited;
|
|
55
|
-
}
|
|
56
66
|
/** OS pid of the owned Chrome process, for explicit user-facing fronting. */
|
|
57
67
|
pid() {
|
|
58
68
|
return this.chrome?.pid;
|
|
@@ -69,7 +79,24 @@ export class PersistentBackend {
|
|
|
69
79
|
throw new Error('Persistent backend start aborted.');
|
|
70
80
|
const profileDir = this.profileDir();
|
|
71
81
|
prepareBrowserProfile({ ...this.options.config, userDataDir: profileDir });
|
|
72
|
-
|
|
82
|
+
try {
|
|
83
|
+
this.lock = this.acquireLock(profileDir);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
// A live peer owns Chrome: share it instead of failing. No lock, no
|
|
87
|
+
// kill rights — this session only borrows pages.
|
|
88
|
+
if (error instanceof ProfileLockedError) {
|
|
89
|
+
const advert = readLiveAdvert(profileDir);
|
|
90
|
+
if (advert) {
|
|
91
|
+
this.sharedAdvert = advert;
|
|
92
|
+
const attach = this.attachConfig();
|
|
93
|
+
if (this.attachClient)
|
|
94
|
+
this.client = this.attachClient(attach);
|
|
95
|
+
return attach;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
73
100
|
try {
|
|
74
101
|
// Pin the named Pi profile; migrate legacy layouts once, under lock.
|
|
75
102
|
ensureNamedProfile(profileDir);
|
|
@@ -93,24 +120,48 @@ export class PersistentBackend {
|
|
|
93
120
|
await this.stop();
|
|
94
121
|
throw new Error('Persistent backend start aborted.');
|
|
95
122
|
}
|
|
123
|
+
advertiseBackend(profileDir, {
|
|
124
|
+
pid: process.pid,
|
|
125
|
+
browserUrl: this.chrome.browserUrl,
|
|
126
|
+
port: this.chrome.port,
|
|
127
|
+
sessionId: this.sessionId,
|
|
128
|
+
startedAt: new Date().toISOString(),
|
|
129
|
+
});
|
|
96
130
|
const attach = this.attachConfig();
|
|
97
131
|
if (this.attachClient)
|
|
98
132
|
this.client = this.attachClient(attach);
|
|
99
133
|
return attach;
|
|
100
134
|
}
|
|
135
|
+
/** Effective browser URL: owned Chrome or the shared peer's. */
|
|
136
|
+
effectiveBrowserUrl() {
|
|
137
|
+
if (this.chrome)
|
|
138
|
+
return this.chrome.browserUrl;
|
|
139
|
+
if (this.sharedAdvert)
|
|
140
|
+
return this.sharedAdvert.browserUrl;
|
|
141
|
+
throw new Error('Persistent backend is not running.');
|
|
142
|
+
}
|
|
101
143
|
/**
|
|
102
|
-
* MCP attach config: same session options, but pointed at Pi-owned Chrome
|
|
103
|
-
* `userDataDir`/`isolated` are stripped — MCP
|
|
144
|
+
* MCP attach config: same session options, but pointed at Pi-owned Chrome
|
|
145
|
+
* (or the shared peer's). `userDataDir`/`isolated` are stripped — MCP
|
|
146
|
+
* must attach, not launch.
|
|
104
147
|
*/
|
|
105
148
|
attachConfig() {
|
|
106
|
-
|
|
107
|
-
throw new Error('Persistent backend is not running.');
|
|
149
|
+
const browserUrl = this.effectiveBrowserUrl();
|
|
108
150
|
const { userDataDir: _userDataDir, isolated: _isolated, ...rest } = this.options.config;
|
|
109
151
|
void _userDataDir;
|
|
110
152
|
void _isolated;
|
|
111
|
-
return { ...rest, browserUrl
|
|
153
|
+
return { ...rest, browserUrl, isolated: false };
|
|
154
|
+
}
|
|
155
|
+
running() {
|
|
156
|
+
if (this.sharedAdvert)
|
|
157
|
+
return true;
|
|
158
|
+
return this.chrome !== undefined && !this.chrome.exited;
|
|
112
159
|
}
|
|
113
|
-
/**
|
|
160
|
+
/**
|
|
161
|
+
* Clean shutdown. Owned: close client, quit Chrome, release lock,
|
|
162
|
+
* withdraw advert. Shared: close only our own MCP client — never touch
|
|
163
|
+
* the peer's browser.
|
|
164
|
+
*/
|
|
114
165
|
async stop() {
|
|
115
166
|
const errors = [];
|
|
116
167
|
if (this.client) {
|
|
@@ -122,6 +173,13 @@ export class PersistentBackend {
|
|
|
122
173
|
}
|
|
123
174
|
this.client = undefined;
|
|
124
175
|
}
|
|
176
|
+
if (this.sharedAdvert) {
|
|
177
|
+
this.sharedAdvert = undefined;
|
|
178
|
+
if (errors.length > 0) {
|
|
179
|
+
throw new Error(`Shared backend stop reported errors: ${errors.map(String).join('; ')}`);
|
|
180
|
+
}
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
125
183
|
if (this.chrome) {
|
|
126
184
|
try {
|
|
127
185
|
await this.chrome.shutdown();
|
|
@@ -139,6 +197,7 @@ export class PersistentBackend {
|
|
|
139
197
|
errors.push(error);
|
|
140
198
|
}
|
|
141
199
|
this.lock = undefined;
|
|
200
|
+
withdrawAdvert(this.profileDir(), this.sessionId);
|
|
142
201
|
}
|
|
143
202
|
if (errors.length > 0) {
|
|
144
203
|
throw new Error(`Persistent backend stop reported ${errors.length} error(s): ${errors
|
|
@@ -148,6 +207,10 @@ export class PersistentBackend {
|
|
|
148
207
|
}
|
|
149
208
|
/** Restart into the other visibility (headless <-> headed fallback). */
|
|
150
209
|
async restart(headed) {
|
|
210
|
+
if (this.sharedAdvert) {
|
|
211
|
+
throw new Error('Cannot restart a shared peer backend (owned by another live session). ' +
|
|
212
|
+
'Ask that session to switch visibility, or wait for it to exit.');
|
|
213
|
+
}
|
|
151
214
|
await this.stop();
|
|
152
215
|
this.options.headed = headed;
|
|
153
216
|
return this.start();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-backend.js","sourceRoot":"","sources":["../src/persistent-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,YAAY,EAAgD,MAAM,sBAAsB,CAAA;AACjG,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAA0B,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"persistent-backend.js","sourceRoot":"","sources":["../src/persistent-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared-backend registry + per-agent page ownership (multi-agent support).
|
|
3
|
+
*
|
|
4
|
+
* Many Pi agents share one Pi-owned Chrome: the first backend writes
|
|
5
|
+
* `<profile>.backend.json` ({ pid, browserUrl, sessionId, startedAt });
|
|
6
|
+
* latecomers attach to that browserUrl instead of launching a second Chrome
|
|
7
|
+
* (the profile lock still forbids two processes — sharing is by attach).
|
|
8
|
+
*
|
|
9
|
+
* Tab separation is by ownership, not visuals: every page a Pi session opens
|
|
10
|
+
* (or Pi-navigates, in shared modes) is recorded in `<profile>.pages.json`
|
|
11
|
+
* with its owner session. Entries whose owner pid is dead are pruned
|
|
12
|
+
* lazily. The close guard refuses pages owned by another *live* session.
|
|
13
|
+
*
|
|
14
|
+
* Page-id routing (upstream `experimentalPageIdRouting`) plus explicit
|
|
15
|
+
* pageIds on every call keeps agents from driving each other's tabs; this
|
|
16
|
+
* registry adds the missing pieces: discovery, ownership, and cleanup scope.
|
|
17
|
+
*/
|
|
18
|
+
import type { McpPageEntry } from './existing-flow.js';
|
|
19
|
+
export interface BackendAdvert {
|
|
20
|
+
pid: number;
|
|
21
|
+
browserUrl: string;
|
|
22
|
+
port: number;
|
|
23
|
+
sessionId: string;
|
|
24
|
+
startedAt: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function backendAdvertPathFor(profileDir: string): string;
|
|
27
|
+
/** This process's agent-session identity (one per extension load). */
|
|
28
|
+
export declare function newSessionId(): string;
|
|
29
|
+
/** Publish this backend for peer agents. Overwrites stale entries. */
|
|
30
|
+
export declare function advertiseBackend(profileDir: string, advert: BackendAdvert): void;
|
|
31
|
+
/** Read a live peer advert, or undefined (absent/corrupt/dead owner). */
|
|
32
|
+
export declare function readLiveAdvert(profileDir: string): BackendAdvert | undefined;
|
|
33
|
+
/** Withdraw our advert (backend shutdown). Best effort. */
|
|
34
|
+
export declare function withdrawAdvert(profileDir: string, sessionId: string): void;
|
|
35
|
+
export interface PageOwner {
|
|
36
|
+
sessionId: string;
|
|
37
|
+
pid: number;
|
|
38
|
+
}
|
|
39
|
+
export interface OwnedPage {
|
|
40
|
+
pageId: number;
|
|
41
|
+
url?: string;
|
|
42
|
+
title?: string;
|
|
43
|
+
owner: PageOwner;
|
|
44
|
+
openedAt: string;
|
|
45
|
+
}
|
|
46
|
+
export declare function pageRegistryPathFor(profileDir: string): string;
|
|
47
|
+
/** Drop entries whose owner process is gone. */
|
|
48
|
+
export declare function pruneDeadOwners(profileDir: string): OwnedPage[];
|
|
49
|
+
/** Claim a page for a session (open or Pi-navigate). */
|
|
50
|
+
export declare function claimPage(profileDir: string, page: McpPageEntry, owner: PageOwner, at?: string): void;
|
|
51
|
+
/** Release one page (closed) or all of a session's pages (shutdown). */
|
|
52
|
+
export declare function releasePages(profileDir: string, filter: {
|
|
53
|
+
pageId?: number;
|
|
54
|
+
sessionId?: string;
|
|
55
|
+
}): void;
|
|
56
|
+
/** Live sessions currently holding pages (peers to avoid disturbing). */
|
|
57
|
+
export declare function livePeerSessions(profileDir: string): PageOwner[];
|
|
58
|
+
export type CloseVerdict = {
|
|
59
|
+
ok: true;
|
|
60
|
+
} | {
|
|
61
|
+
ok: false;
|
|
62
|
+
reason: string;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Shared-mode close verdict: our own or unclaimed pages may close; pages
|
|
66
|
+
* owned by another live session need explicit force. Stale ids fail safe
|
|
67
|
+
* with a re-list hint (ids shift when tabs close).
|
|
68
|
+
*/
|
|
69
|
+
export declare function checkSharedCloseAllowed(entries: McpPageEntry[], pageId: number, profileDir: string, self: PageOwner, ownedUrls: ReadonlySet<string>): CloseVerdict;
|
|
70
|
+
//# sourceMappingURL=shared-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-backend.d.ts","sourceRoot":"","sources":["../src/shared-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAWD,sEAAsE;AACtE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAGhF;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAgB5E;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAO1E;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAwBD,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,CAI/D;AAED,wDAAwD;AACxD,wBAAgB,SAAS,CACvB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,SAAS,EAChB,EAAE,SAA2B,GAC5B,IAAI,CAIN;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,IAAI,CAON;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,CAMhE;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvE;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAC7B,YAAY,CAyBd"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared-backend registry + per-agent page ownership (multi-agent support).
|
|
3
|
+
*
|
|
4
|
+
* Many Pi agents share one Pi-owned Chrome: the first backend writes
|
|
5
|
+
* `<profile>.backend.json` ({ pid, browserUrl, sessionId, startedAt });
|
|
6
|
+
* latecomers attach to that browserUrl instead of launching a second Chrome
|
|
7
|
+
* (the profile lock still forbids two processes — sharing is by attach).
|
|
8
|
+
*
|
|
9
|
+
* Tab separation is by ownership, not visuals: every page a Pi session opens
|
|
10
|
+
* (or Pi-navigates, in shared modes) is recorded in `<profile>.pages.json`
|
|
11
|
+
* with its owner session. Entries whose owner pid is dead are pruned
|
|
12
|
+
* lazily. The close guard refuses pages owned by another *live* session.
|
|
13
|
+
*
|
|
14
|
+
* Page-id routing (upstream `experimentalPageIdRouting`) plus explicit
|
|
15
|
+
* pageIds on every call keeps agents from driving each other's tabs; this
|
|
16
|
+
* registry adds the missing pieces: discovery, ownership, and cleanup scope.
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync, readFileSync, rmSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
19
|
+
import { dirname } from 'node:path';
|
|
20
|
+
import { randomUUID } from 'node:crypto';
|
|
21
|
+
export function backendAdvertPathFor(profileDir) {
|
|
22
|
+
return `${profileDir}.backend.json`;
|
|
23
|
+
}
|
|
24
|
+
function isPidAlive(pid) {
|
|
25
|
+
try {
|
|
26
|
+
process.kill(pid, 0);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** This process's agent-session identity (one per extension load). */
|
|
34
|
+
export function newSessionId() {
|
|
35
|
+
return randomUUID();
|
|
36
|
+
}
|
|
37
|
+
/** Publish this backend for peer agents. Overwrites stale entries. */
|
|
38
|
+
export function advertiseBackend(profileDir, advert) {
|
|
39
|
+
mkdirSync(dirname(backendAdvertPathFor(profileDir)), { recursive: true });
|
|
40
|
+
writeFileSync(backendAdvertPathFor(profileDir), `${JSON.stringify(advert, null, 2)}\n`, 'utf8');
|
|
41
|
+
}
|
|
42
|
+
/** Read a live peer advert, or undefined (absent/corrupt/dead owner). */
|
|
43
|
+
export function readLiveAdvert(profileDir) {
|
|
44
|
+
try {
|
|
45
|
+
const advert = JSON.parse(readFileSync(backendAdvertPathFor(profileDir), 'utf8'));
|
|
46
|
+
if (typeof advert?.browserUrl !== 'string' ||
|
|
47
|
+
typeof advert?.pid !== 'number' ||
|
|
48
|
+
!isPidAlive(advert.pid)) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return advert;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** Withdraw our advert (backend shutdown). Best effort. */
|
|
58
|
+
export function withdrawAdvert(profileDir, sessionId) {
|
|
59
|
+
try {
|
|
60
|
+
const raw = JSON.parse(readFileSync(backendAdvertPathFor(profileDir), 'utf8'));
|
|
61
|
+
if (raw?.sessionId === sessionId)
|
|
62
|
+
rmSync(backendAdvertPathFor(profileDir), { force: true });
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Another backend already replaced it; leave it alone.
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function pageRegistryPathFor(profileDir) {
|
|
69
|
+
return `${profileDir}.pages.json`;
|
|
70
|
+
}
|
|
71
|
+
function readRegistry(profileDir) {
|
|
72
|
+
try {
|
|
73
|
+
const raw = JSON.parse(readFileSync(pageRegistryPathFor(profileDir), 'utf8'));
|
|
74
|
+
if (!Array.isArray(raw))
|
|
75
|
+
return [];
|
|
76
|
+
return raw.filter((entry) => typeof entry === 'object' &&
|
|
77
|
+
entry !== null &&
|
|
78
|
+
typeof entry.pageId === 'number' &&
|
|
79
|
+
typeof entry.owner?.sessionId === 'string' &&
|
|
80
|
+
typeof entry.owner?.pid === 'number');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function writeRegistry(profileDir, pages) {
|
|
87
|
+
mkdirSync(dirname(pageRegistryPathFor(profileDir)), { recursive: true });
|
|
88
|
+
writeFileSync(pageRegistryPathFor(profileDir), `${JSON.stringify(pages, null, 2)}\n`, 'utf8');
|
|
89
|
+
}
|
|
90
|
+
/** Drop entries whose owner process is gone. */
|
|
91
|
+
export function pruneDeadOwners(profileDir) {
|
|
92
|
+
const live = readRegistry(profileDir).filter((entry) => isPidAlive(entry.owner.pid));
|
|
93
|
+
writeRegistry(profileDir, live);
|
|
94
|
+
return live;
|
|
95
|
+
}
|
|
96
|
+
/** Claim a page for a session (open or Pi-navigate). */
|
|
97
|
+
export function claimPage(profileDir, page, owner, at = new Date().toISOString()) {
|
|
98
|
+
const pages = pruneDeadOwners(profileDir).filter((entry) => entry.pageId !== page.pageId);
|
|
99
|
+
pages.push({ pageId: page.pageId, url: page.url, title: page.title, owner, openedAt: at });
|
|
100
|
+
writeRegistry(profileDir, pages);
|
|
101
|
+
}
|
|
102
|
+
/** Release one page (closed) or all of a session's pages (shutdown). */
|
|
103
|
+
export function releasePages(profileDir, filter) {
|
|
104
|
+
const pages = pruneDeadOwners(profileDir).filter((entry) => {
|
|
105
|
+
if (filter.pageId !== undefined && entry.pageId === filter.pageId)
|
|
106
|
+
return false;
|
|
107
|
+
if (filter.sessionId !== undefined && entry.owner.sessionId === filter.sessionId)
|
|
108
|
+
return false;
|
|
109
|
+
return true;
|
|
110
|
+
});
|
|
111
|
+
writeRegistry(profileDir, pages);
|
|
112
|
+
}
|
|
113
|
+
/** Live sessions currently holding pages (peers to avoid disturbing). */
|
|
114
|
+
export function livePeerSessions(profileDir) {
|
|
115
|
+
const seen = new Map();
|
|
116
|
+
for (const entry of pruneDeadOwners(profileDir)) {
|
|
117
|
+
if (!seen.has(entry.owner.sessionId))
|
|
118
|
+
seen.set(entry.owner.sessionId, entry.owner);
|
|
119
|
+
}
|
|
120
|
+
return [...seen.values()];
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Shared-mode close verdict: our own or unclaimed pages may close; pages
|
|
124
|
+
* owned by another live session need explicit force. Stale ids fail safe
|
|
125
|
+
* with a re-list hint (ids shift when tabs close).
|
|
126
|
+
*/
|
|
127
|
+
export function checkSharedCloseAllowed(entries, pageId, profileDir, self, ownedUrls) {
|
|
128
|
+
const target = entries.find((entry) => entry.pageId === pageId);
|
|
129
|
+
if (!target) {
|
|
130
|
+
return {
|
|
131
|
+
ok: false,
|
|
132
|
+
reason: `No page ${pageId} is currently open. Re-list pages; page IDs shift when tabs close.`,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
const claim = pruneDeadOwners(profileDir).find((entry) => entry.pageId === pageId);
|
|
136
|
+
if (claim && claim.owner.sessionId !== self.sessionId) {
|
|
137
|
+
return {
|
|
138
|
+
ok: false,
|
|
139
|
+
reason: `Refusing to close page ${pageId} (${claim.owner.sessionId.slice(0, 8)}'s tab${target.title ? ` "${target.title}"` : ''}): ` +
|
|
140
|
+
`another live agent session owns it. Pass force:true only if the user explicitly asked for this exact tab.`,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const url = target.url ?? '';
|
|
144
|
+
if (claim || url === '' || ownedUrls.has(url))
|
|
145
|
+
return { ok: true };
|
|
146
|
+
return {
|
|
147
|
+
ok: false,
|
|
148
|
+
reason: `Refusing to close page ${pageId} (${target.title ?? url ?? 'unknown tab'}): ` +
|
|
149
|
+
`this session did not open it. Pass force:true only if the user explicitly asked for this exact tab.`,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=shared-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-backend.js","sourceRoot":"","sources":["../src/shared-backend.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-browser-use",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Opinionated browser-use for the Pi coding agent, powered by chrome-devtools-mcp (not Playwright). Fresh headless by default, authenticated persistent profile opt-in, CLI-first policy bundled.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -43,6 +43,16 @@ Turnstile, device checks, SSO/2FA cannot be automated away. On hitting one: stop
|
|
|
43
43
|
- Prefer `allowedUrlPattern` to cage the session to the task domains.
|
|
44
44
|
- `redactNetworkHeaders` stays on; never paste secrets into pages.
|
|
45
45
|
|
|
46
|
+
## Parallel agents (shared browser)
|
|
47
|
+
|
|
48
|
+
Many agents share one Pi-owned Chrome. Separation is by tabs, not windows:
|
|
49
|
+
|
|
50
|
+
- Always pass an explicit `pageId` (from your own `browser_list_pages`) to every page-scoped call. Never assume the selected page is yours.
|
|
51
|
+
- Open your own tabs (`browser_new_page` background, or `browser_open_background_tab` in existing mode). They are claimed to your session automatically.
|
|
52
|
+
- Never close another session's tabs: `browser_close_page` refuses anything you didn't open unless `force: true` — and force needs the user's explicit word for that exact tab.
|
|
53
|
+
- Your session id shows in `browser_status`; `browser_doctor` shows how many sessions share the browser.
|
|
54
|
+
- Never restart, reauth, or switch visibility of a shared backend owned by someone else — coordinate with that session instead.
|
|
55
|
+
|
|
46
56
|
## Browser mode rules
|
|
47
57
|
|
|
48
58
|
1. Prefer Persistent (the default) for everything: Pi's browser, invisible, no popups.
|