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 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
@@ -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,+EAA+E;IAC/E,OAAO,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,mBAAmB,CAAA;IAC3D,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,CAAA;CAAE,GACvE,OAAO,CAAC,YAAY,CAAC,CAsBvB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,MAAkB,GAAG,MAAM,CAuBzF"}
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.launchesChrome
47
- ? 'Chrome: launched by chrome-devtools-mcp for this session.'
48
- : `Chrome: attached externally (${report.endpoint ?? 'unknown endpoint'}). Launch flags do not apply.`;
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'}).`);
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2DA,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,QA42BjD"}
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
- // Existing mode never closes user tabs: close_page carries a
352
- // force gate and a Pi-ownership check (spec 19).
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
- if (currentMode === 'existing' && effectiveParams.force !== true) {
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 = checkExistingCloseAllowed(entries, effectiveParams.pageId, piOwnedUrls);
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 must attach, not launch.
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
- /** Clean shutdown: close MCP client, quit Chrome, release the lock. */
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,EAAsB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,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,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;IAQhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0D;IACjF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;IACvE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4D;gBAE5D,OAAO,EAAE,wBAAwB;IAM9D,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC,QAAQ,IAAI,cAAc,GAAG,SAAS;IAItC,OAAO,IAAI,OAAO;IAIlB,6EAA6E;IAC7E,GAAG,IAAI,MAAM,GAAG,SAAS;IAIzB;;;;OAIG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiC5D;;;OAGG;IACH,YAAY,IAAI,gBAAgB;IAQhC,uEAAuE;IACjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC3B,wEAAwE;IAClE,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAK1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAIlE"}
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
- return this.chrome?.browserUrl;
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
- this.lock = this.acquireLock(profileDir);
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 must attach, not launch.
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
- if (!this.chrome)
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: this.chrome.browserUrl, isolated: false };
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
- /** Clean shutdown: close MCP client, quit Chrome, release the lock. */
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":"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"}
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.7.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.