@te-river/opencode-team-mode 1.5.14 → 1.6.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.
Files changed (101) hide show
  1. package/README.md +788 -674
  2. package/README.zh-CN.md +712 -618
  3. package/dist/agents.d.ts +5 -3
  4. package/dist/agents.d.ts.map +1 -1
  5. package/dist/agents.js +19 -8
  6. package/dist/agents.js.map +1 -1
  7. package/dist/capabilities.d.ts +1 -1
  8. package/dist/capabilities.js +2 -2
  9. package/dist/capabilities.js.map +1 -1
  10. package/dist/host-hooks.d.ts +13 -2
  11. package/dist/host-hooks.d.ts.map +1 -1
  12. package/dist/host-hooks.js +19 -5
  13. package/dist/host-hooks.js.map +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +54 -14
  16. package/dist/index.js.map +1 -1
  17. package/dist/prompts/lead.d.ts +1 -1
  18. package/dist/prompts/lead.d.ts.map +1 -1
  19. package/dist/prompts/lead.js +135 -17
  20. package/dist/prompts/lead.js.map +1 -1
  21. package/dist/prompts/shared.d.ts +2 -2
  22. package/dist/prompts/shared.d.ts.map +1 -1
  23. package/dist/prompts/shared.js +94 -16
  24. package/dist/prompts/shared.js.map +1 -1
  25. package/dist/prompts/specialists.d.ts +2 -2
  26. package/dist/prompts/specialists.d.ts.map +1 -1
  27. package/dist/prompts/specialists.js +43 -10
  28. package/dist/prompts/specialists.js.map +1 -1
  29. package/dist/task-offload.d.ts +67 -0
  30. package/dist/task-offload.d.ts.map +1 -0
  31. package/dist/task-offload.js +123 -0
  32. package/dist/task-offload.js.map +1 -0
  33. package/dist/tm/args-schema.d.ts +4 -0
  34. package/dist/tm/args-schema.d.ts.map +1 -1
  35. package/dist/tm/args-schema.js +44 -3
  36. package/dist/tm/args-schema.js.map +1 -1
  37. package/dist/tm/board.d.ts +113 -0
  38. package/dist/tm/board.d.ts.map +1 -0
  39. package/dist/tm/board.js +275 -0
  40. package/dist/tm/board.js.map +1 -0
  41. package/dist/tm/browser.d.ts +325 -6
  42. package/dist/tm/browser.d.ts.map +1 -1
  43. package/dist/tm/browser.js +1329 -135
  44. package/dist/tm/browser.js.map +1 -1
  45. package/dist/tm/config.d.ts +36 -1
  46. package/dist/tm/config.d.ts.map +1 -1
  47. package/dist/tm/config.js +29 -1
  48. package/dist/tm/config.js.map +1 -1
  49. package/dist/tm/dispatch.d.ts +118 -31
  50. package/dist/tm/dispatch.d.ts.map +1 -1
  51. package/dist/tm/dispatch.js +385 -131
  52. package/dist/tm/dispatch.js.map +1 -1
  53. package/dist/tm/dupe-guard.js +1 -1
  54. package/dist/tm/dupe-guard.js.map +1 -1
  55. package/dist/tm/egress.d.ts +44 -0
  56. package/dist/tm/egress.d.ts.map +1 -0
  57. package/dist/tm/egress.js +191 -0
  58. package/dist/tm/egress.js.map +1 -0
  59. package/dist/tm/guard.js +1 -1
  60. package/dist/tm/guard.js.map +1 -1
  61. package/dist/tm/index.d.ts +28 -2
  62. package/dist/tm/index.d.ts.map +1 -1
  63. package/dist/tm/index.js +198 -10
  64. package/dist/tm/index.js.map +1 -1
  65. package/dist/tm/perm-ask.d.ts +47 -5
  66. package/dist/tm/perm-ask.d.ts.map +1 -1
  67. package/dist/tm/perm-ask.js +98 -7
  68. package/dist/tm/perm-ask.js.map +1 -1
  69. package/dist/tm/pipelines.d.ts.map +1 -1
  70. package/dist/tm/pipelines.js +24 -2
  71. package/dist/tm/pipelines.js.map +1 -1
  72. package/dist/tm/ptc/tool.d.ts.map +1 -1
  73. package/dist/tm/ptc/tool.js +2 -4
  74. package/dist/tm/ptc/tool.js.map +1 -1
  75. package/dist/tm/pty.d.ts.map +1 -1
  76. package/dist/tm/pty.js +6 -3
  77. package/dist/tm/pty.js.map +1 -1
  78. package/dist/tm/search.d.ts +5 -0
  79. package/dist/tm/search.d.ts.map +1 -1
  80. package/dist/tm/search.js +19 -17
  81. package/dist/tm/search.js.map +1 -1
  82. package/dist/tm/stats.d.ts +46 -0
  83. package/dist/tm/stats.d.ts.map +1 -1
  84. package/dist/tm/stats.js +124 -7
  85. package/dist/tm/stats.js.map +1 -1
  86. package/dist/tm/store.d.ts +3 -0
  87. package/dist/tm/store.d.ts.map +1 -1
  88. package/dist/tm/store.js +6 -1
  89. package/dist/tm/store.js.map +1 -1
  90. package/dist/tm/webfetch.d.ts +52 -0
  91. package/dist/tm/webfetch.d.ts.map +1 -1
  92. package/dist/tm/webfetch.js +128 -22
  93. package/dist/tm/webfetch.js.map +1 -1
  94. package/dist/tool-coerce.d.ts +24 -0
  95. package/dist/tool-coerce.d.ts.map +1 -0
  96. package/dist/tool-coerce.js +63 -0
  97. package/dist/tool-coerce.js.map +1 -0
  98. package/dist/types.d.ts +7 -1
  99. package/dist/types.d.ts.map +1 -1
  100. package/docs/installation.md +69 -2
  101. package/package.json +61 -59
@@ -12,10 +12,10 @@
12
12
  * verbatim as the fallback. On cdp-legacy only the core subset works
13
13
  * (open/navigate/read/screenshot/close + navigate_page/take_screenshot/
14
14
  * list_pages/evaluate_script aliases); the snapshot-first actions
15
- * (take_snapshot + uid addressing, 16-verb chrome-devtools-mcp surface)
15
+ * (take_snapshot + uid addressing, 18-verb chrome-devtools-mcp surface)
16
16
  * require the playwright engine.
17
17
  *
18
- * Action surface aligns with chrome-devtools-mcp's 16 verbs (R2 mapping):
18
+ * Action surface aligns with chrome-devtools-mcp's 18 verbs (R2 mapping):
19
19
  * navigate_page · take_snapshot · click · fill · hover · drag ·
20
20
  * press_key · select_page · upload_file · wait_for · evaluate_script ·
21
21
  * list_console_messages · list_network_requests · list_pages ·
@@ -61,7 +61,7 @@
61
61
  * Role access mirrors tm_webfetch: network roles (team + researcher) only,
62
62
  * tester browser-only (UI verification).
63
63
  */
64
- import type { ToolResult } from "../types.js";
64
+ import type { ToolAttachment, ToolResult } from "../types.js";
65
65
  import type { TmConfig } from "./config.js";
66
66
  import type { TmPipelines } from "./pipelines.js";
67
67
  /** Subprocess runner for the shell/registry probes; injectable for tests. */
@@ -102,6 +102,24 @@ export declare function findBrowserExecutable(env?: Record<string, string | unde
102
102
  * auto (default) → headless ONLY when there is no
103
103
  * display possible (Linux without DISPLAY/WAYLAND_DISPLAY).
104
104
  */
105
+ /** Decide what profile directory TM_BROWSER_USER_DATA_DIR asks for.
106
+ *
107
+ * The tool description has claimed for a long time that "the real profile is
108
+ * never touched" while nothing enforced it: the string went straight into
109
+ * `launchPersistentContext`. Pointing it at the user's own browser data dir is
110
+ * not a neutral choice — with the browser open, the new process hands its URL
111
+ * to the running instance and exits (the confusing "本机已有同品牌浏览器在跑"
112
+ * failure), and with it closed the agent browses AS THE USER, with every cookie
113
+ * and saved session, while our orphan reaper force-kills (`taskkill /T /F`) any
114
+ * browser whose owner died — a real route to corrupting a profile.
115
+ *
116
+ * So: a real browser data dir is refused with the fix named, anything else is
117
+ * honored, and an unset value keeps the isolated temp profile (the default).
118
+ * Pure, so both engines and the tests share one answer. */
119
+ export declare function classifyProfileDir(env?: Record<string, string | undefined>): {
120
+ dir: string | null;
121
+ refusal: string | null;
122
+ };
105
123
  export declare function resolveHeadless(env?: Record<string, string | undefined>): boolean;
106
124
  /** Approximate registrable site (eTLD+1) of a hostname. */
107
125
  export declare function siteOf(host: string): string;
@@ -133,6 +151,63 @@ export declare function subresourcePass(opts: {
133
151
  * footprint to its own site. Called for EVERY top-level/document request
134
152
  * that passed the allowlist side. */
135
153
  export declare function rememberSite(allowedSites: Set<string>, url: string): void;
154
+ /**
155
+ * Human-verification walls. This exists because "0 个可寻址节点" and "this
156
+ * site wants a human to prove it is one" look identical to the agent, and the
157
+ * two have opposite next moves: an empty page is worth retrying, a wall never
158
+ * is — retrying just spends rounds on a captcha. Measured on baike.baidu.com
159
+ * item pages, where every arm (raw playwright included, all resources allowed)
160
+ * returns 0–6 nodes titled 百度安全验证, and the agent reported "该网站没有内容".
161
+ *
162
+ * Deliberately narrow: signatures we observed live, plus the unambiguous
163
+ * English ones. Callers consult it ONLY when the page came back thin, so an
164
+ * article that merely mentions 验证码 is never mislabelled as a wall.
165
+ */
166
+ export declare const CHALLENGE_WALL_SIGNS: ReadonlyArray<{
167
+ readonly re: RegExp;
168
+ readonly label: string;
169
+ }>;
170
+ /** Which wall this thin page actually is, or null when it is just empty. */
171
+ export declare function challengeWallOf(...texts: ReadonlyArray<string | null | undefined>): string | null;
172
+ /** One hostname for `allow_host`, or "" when the argument is not a single bare
173
+ * domain. Strict on purpose: this value becomes the pattern in an official
174
+ * consent dialog, and a user approving "bkssl.bdimg.com" must not be getting a
175
+ * wildcard, a URL with a path, or a port. */
176
+ export declare function normalizeApprovalHost(raw: unknown): string;
177
+ /**
178
+ * The launch pid, asked more than once.
179
+ *
180
+ * Why this exists: `childProcRows` folds EVERY OS-query failure (PowerShell
181
+ * exiting non-zero, the 6 s timeout killing it mid-flight, a JSON parse miss)
182
+ * into an empty list, and the launcher used to ask exactly once. Under load —
183
+ * this plugin's own parallel test runner reproduces it, four suites hammering
184
+ * CIM at once — one such query fails now and then, and a single failed query
185
+ * used to cost the session two things permanently: the orphan-ledger entry (so
186
+ * the next boot could not reclaim that browser) and `close`'s process
187
+ * verification. Worse, an exception escaping the lookup failed `open` itself,
188
+ * reporting a browser that had launched fine as an error.
189
+ *
190
+ * So: a failed or empty answer is retried a bounded number of times, and any
191
+ * throw is swallowed into the retry counter — the pid is diagnostic and
192
+ * reclamation metadata, never a reason to lose the session. When it still
193
+ * cannot be resolved, `via: "none"` says so and close keeps refusing the
194
+ * 已确认关闭 sentence (pinned by §25).
195
+ */
196
+ export declare const LAUNCH_PID_ATTEMPTS = 3;
197
+ export declare const LAUNCH_PID_RETRY_MS = 250;
198
+ export declare function resolveLaunchPid(opts: {
199
+ /** playwright's own accessor — it does not exist on 1.63, so this is usually 0 */
200
+ playwrightPid?: () => number;
201
+ executablePath: string;
202
+ /** may throw, may answer empty, may answer undefined (let the scanner query) */
203
+ rows: () => ChildProcRow[] | undefined;
204
+ sleep?: (ms: number) => Promise<void>;
205
+ attempts?: number;
206
+ }): Promise<{
207
+ pid: number;
208
+ via: "playwright" | "child-scan" | "none";
209
+ failures: number;
210
+ }>;
136
211
  /** `evaluate_script` is the one browser verb the network gate cannot cover:
137
212
  * the allowlist limits where we NAVIGATE, not what an already-loaded page
138
213
  * hands back. In a `TM_BROWSER_USER_DATA_DIR` profile that page may be a
@@ -152,12 +227,142 @@ export declare function redactEvalResult(text: string): {
152
227
  text: string;
153
228
  masked: string[];
154
229
  };
230
+ export interface BrowserLedgerEntry {
231
+ pid: number;
232
+ ownerPid: number;
233
+ engine: string;
234
+ at: number;
235
+ /** The executable we launched, recorded so a pid that has been recycled to
236
+ * an unrelated program is never force-killed. */
237
+ exe?: string;
238
+ }
239
+ export declare function browserLedgerFile(storeRoot: string): string;
240
+ /** Best-effort append: a ledger that cannot be written must never cost the
241
+ * user their browser session. */
242
+ export declare function appendBrowserLedger(file: string, rec: BrowserLedgerEntry): void;
243
+ /** Read the ledger, terminate the orphans, and rewrite what is still live.
244
+ * Returns the counts so the caller can log them; never throws. */
245
+ export declare function reapOrphanBrowsers(file: string, opts?: {
246
+ now?: number;
247
+ alive?: (pid: number) => boolean;
248
+ kill?: (pid: number) => void;
249
+ /** seam for tests — what a pid currently IS (name + command line) */
250
+ identity?: (pid: number) => {
251
+ name: string;
252
+ cmdline: string;
253
+ } | null;
254
+ }): {
255
+ reaped: number[];
256
+ kept: number;
257
+ dropped: number;
258
+ };
259
+ /** Is this OS pid still alive? `process.kill(pid, 0)` is the portable probe:
260
+ * ESRCH means gone, EPERM means alive but owned by someone else — both are
261
+ * answers, and "no answer" is never one of them. */
262
+ export declare function pidAlive(pid: number): boolean;
263
+ /** Wait up to `ms` for a pid to disappear, then terminate it once and give it
264
+ * a short grace. Returns whether the process is GONE — the only honest basis
265
+ * for a "已确认关闭" claim. */
266
+ export declare function waitForPidExit(pid: number, ms?: number, kill?: (p: number) => void): Promise<boolean>;
267
+ /** One row of the OS process table, as far as the pid lookup below needs it. */
268
+ export interface ChildProcRow {
269
+ pid: number;
270
+ name: string;
271
+ cmdline: string;
272
+ }
273
+ /** Does this identity look like the executable we launched? Compared on the
274
+ * file NAME: the command line's quoting and path form can differ from ours
275
+ * (8.3-short vs long path, escaped quotes), while a pid recycled by an
276
+ * unrelated program almost never carries the same image name. A missing
277
+ * identity counts as NO — the safe answer before a force-kill. */
278
+ export declare function identityMatchesExecutable(exePath: string, ident: {
279
+ name: string;
280
+ cmdline: string;
281
+ } | null): boolean;
282
+ /** The same question asked of a live pid (see identityMatchesExecutable). */
283
+ export declare function pidMatchesExecutable(pid: number, exePath: string): boolean;
284
+ export interface KillTreeOpts {
285
+ platform?: NodeJS.Platform;
286
+ /** seam for tests — how the platform tool gets invoked */
287
+ run?: (cmd: string, args: string[]) => void;
288
+ /** seam for tests — the POSIX child enumeration */
289
+ children?: (pid: number) => ChildProcRow[];
290
+ /** seam for tests — how a single process gets signalled */
291
+ signal?: (pid: number) => void;
292
+ }
293
+ /** Terminate a browser process AND everything it spawned.
294
+ *
295
+ * `process.kill(pid)` signals the ROOT only. Measured on the desktop host the
296
+ * day this was written: the orphan reaper's default kill took the msedge root
297
+ * down and left all NINE of its child processes running — which is exactly the
298
+ * leftover the reaper exists to remove. The graceful path does not have this
299
+ * problem (playwright's `browser.close()` shuts its children down first, and
300
+ * the real-host leg verifies it), so this is the fallback's job.
301
+ *
302
+ * win32: `taskkill /T /F` walks the tree for us.
303
+ * POSIX: no tree flag, so descendants are enumerated and killed deepest-first.
304
+ * Best-effort throughout: a process that vanishes mid-walk is not an error.
305
+ */
306
+ export declare function killBrowserTree(pid: number, opts?: KillTreeOpts): void;
307
+ /** The OS pid behind a playwright-launched browser.
308
+ *
309
+ * playwright-core has NO `Browser.process()` — that accessor belongs to
310
+ * ElectronApplication and BrowserServer. Measured on the desktop host with a
311
+ * real 1.63 session: `typeof browser.process === "undefined"`, so the pid
312
+ * stayed 0, the orphan ledger recorded nothing, and close printed 已确认关闭
313
+ * over a browser process it had never checked.
314
+ *
315
+ * The only exact anchor available is that the browser is a DIRECT CHILD of
316
+ * this process, started from the executable WE resolved. That matters: this
317
+ * machine carries a dozen unrelated msedge trees (the user's own windows,
318
+ * msedgewebview2 under SearchHost.exe and under a vendor utility), so matching
319
+ * by process name would be a loaded gun pointed at them.
320
+ *
321
+ * 0 = not found, and every caller treats 0 as "no verification" — never as
322
+ * "verified gone".
323
+ */
324
+ export declare function launchedBrowserPid(executablePath: string, opts?: {
325
+ ppid?: number;
326
+ rows?: ChildProcRow[];
327
+ }): number;
155
328
  /** Consent is per BROWSER SESSION, not per call: one dialog when the lead
156
329
  * decides to script the page, then the round stops paying for it. */
157
330
  export declare function needsEvalConsent(policy: "on" | "off", alreadyApproved: boolean | undefined): boolean;
331
+ /** A function-shaped source has to be INVOKED. Every browser MCP documents
332
+ * `function: "() => …"`, but evaluate() treats a STRING as an expression: a
333
+ * function source evaluates to a function object, which is not serializable,
334
+ * so the call resolves to undefined and the agent reads "null" and goes
335
+ * looking for a bug that is in our call rather than in the page (measured
336
+ * live 2026-09-21 — six rounds lost this way). An expression the model
337
+ * already wrapped, or a bare `document.title`, passes through untouched. */
338
+ export declare function evalExpression(src: string): string;
339
+ /** `null` is not a diagnosis. The render names the type, so "the page has no
340
+ * such links" and "your function returned nothing" and "it was not called"
341
+ * stop looking like the same answer. */
342
+ export declare function renderEvalResult(value: unknown): string;
158
343
  /** Host only — the consent line in the dialog and in the trajectory never
159
344
  * carries a query string (a search URL can hold the very token we guard). */
160
345
  export declare function hostOnly(url: string): string;
346
+ /** What a click can be observed to change, read in ONE round-trip. */
347
+ export interface ClickProbe {
348
+ attrs: Record<string, string>;
349
+ url: string;
350
+ ready: string;
351
+ nodes: number;
352
+ }
353
+ /** What differs between two probes, in the order a reader cares about. */
354
+ export declare function describeClickChange(before: ClickProbe, after: ClickProbe): string[];
355
+ /** The reply. Pure, so the wording is pinnable without a browser: a click that
356
+ * observably did something says what changed; one that did not says so and
357
+ * names the next move instead of reporting success. */
358
+ export declare function clickVerdict(target: string, before: ClickProbe | null, changed: string[], opts: {
359
+ retried: boolean;
360
+ dialog: boolean;
361
+ blocked?: {
362
+ count: number;
363
+ hosts: string[];
364
+ };
365
+ }): string;
161
366
  export type BrowserEngineKind = "playwright" | "cdp-legacy";
162
367
  /** playwright-core 1.63 targets node >= 20; on anything older we refuse the
163
368
  * engine up-front and stay on the zero-dependency CDP pipe (the node>=18
@@ -218,6 +423,10 @@ export interface PwPage {
218
423
  url(): string;
219
424
  title?(): Promise<string>;
220
425
  bringToFront?(): Promise<void>;
426
+ /** Bounded settle before retrying an action that changed nothing. */
427
+ waitForLoadState?(state: string, opts?: Record<string, unknown>): Promise<unknown>;
428
+ /** close_page — the tab only; the browser session survives it. */
429
+ close?(): Promise<unknown>;
221
430
  }
222
431
  export interface PwLocator {
223
432
  ariaSnapshot(): Promise<string>;
@@ -228,7 +437,14 @@ export interface PwLocator {
228
437
  setInputFiles(files: string | string[]): Promise<unknown>;
229
438
  waitFor(opts?: Record<string, unknown>): Promise<unknown>;
230
439
  nth(index: number): PwLocator;
440
+ /** Optional on the seam: a mock without them takes the single-match path. */
441
+ first?(): PwLocator;
442
+ count?(): Promise<number>;
231
443
  dragTo(target: PwLocator): Promise<unknown>;
444
+ /** Read the element's own state in ONE round-trip, so verifying an action
445
+ * costs less than the action. Optional: a locator without it cannot be
446
+ * verified, and then the reply must claim no more than it knows. */
447
+ evaluate?(fn: unknown): Promise<unknown>;
232
448
  }
233
449
  export interface PwRoute {
234
450
  continue(): Promise<unknown>;
@@ -284,13 +500,100 @@ export declare class SnapshotIndex {
284
500
  }
285
501
  /** ariaSnapshot escapes whitespace/quotes inside names (\s \n \t \" \\). */
286
502
  export declare function unescapeAriaName(raw: string): string;
287
- /** The 16 canonical verbs, named byte-identical to chrome-devtools-mcp. */
288
- export declare const BROWSER_PLAYWRIGHT_ACTIONS: readonly ["navigate_page", "take_snapshot", "click", "fill", "hover", "drag", "press_key", "select_page", "upload_file", "wait_for", "evaluate_script", "list_console_messages", "list_network_requests", "list_pages", "take_screenshot", "handle_dialog"];
289
- /** Legacy compat verbs that ride on top of the 16 (both engines). */
503
+ /** The 18 canonical verbs, named byte-identical to chrome-devtools-mcp. */
504
+ export declare const BROWSER_PLAYWRIGHT_ACTIONS: readonly ["navigate_page", "take_snapshot", "click", "fill", "hover", "drag", "press_key", "select_page", "new_page", "close_page", "upload_file", "wait_for", "evaluate_script", "list_console_messages", "list_network_requests", "list_pages", "take_screenshot", "handle_dialog"];
505
+ /** Legacy compat verbs that ride on top of the 18 (both engines). */
290
506
  export declare const BROWSER_COMPAT_ACTIONS: readonly ["open", "navigate", "read", "screenshot", "close"];
507
+ /** Verbs of our own that act on the GATE rather than the DOM: no page is
508
+ * involved, so both engines serve them and neither can drift. */
509
+ export declare const BROWSER_GATE_ACTIONS: readonly ["allow_host"];
510
+ /** Every verb the execute layer accepts — the ONE table the refusal menu and
511
+ * the args schema are both built from. The hand-written copies drifted the
512
+ * day `new_page` landed (§6o/unknown-action menu), and a schema that omits a
513
+ * verb is a capability no agent knows it has. */
514
+ export declare const ALL_BROWSER_ACTIONS: readonly string[];
515
+ export declare const BROWSER_ACTION_MENU: string;
291
516
  /** What the cdp-legacy fallback can still do (R2: degradation must keep the
292
517
  * §6o behavior; everything snapshot-shaped is playwright-only). */
293
518
  export declare const BROWSER_LEGACY_ACTIONS: readonly ["open", "navigate", "navigate_page", "read", "screenshot", "take_screenshot", "list_pages", "evaluate_script", "close"];
519
+ export declare const BROWSER_DENY_PERMISSIONS_ARG = "--deny-permission-prompts";
520
+ interface ActiveSession {
521
+ kind: BrowserEngineKind;
522
+ currentUrl: string;
523
+ /** The mode the session was ACTUALLY launched in. Reported back to the
524
+ * agent from here — never from the caller's request — so a reused
525
+ * (sticky) session cannot be described as something it is not. */
526
+ headless: boolean;
527
+ /** The profile this session was ACTUALLY launched with, or null for the
528
+ * isolated temp one. Reported from here for the same reason `headless` is:
529
+ * reading TM_BROWSER_USER_DATA_DIR again at reply time lets a cdp-legacy
530
+ * session (which used a temp dir) be described as 持久登录配置. */
531
+ persistentProfile: string | null;
532
+ /** Engine/profile identity for the open + close lines the agent quotes. */
533
+ label: string;
534
+ /** Screenshot pixels the model asked for, drained by execute() into the
535
+ * ToolResult's `attachments`. act() pushes; nothing else reads it. */
536
+ attachments: ToolAttachment[];
537
+ /** Subresource verdicts since the last observation, for the "page looks
538
+ * empty" note (count + distinct blocked hosts). */
539
+ blocked: {
540
+ count: number;
541
+ hosts: Set<string>;
542
+ };
543
+ /** Registrable sites this session navigated to (same-site subresources). */
544
+ allowedSites: Set<string>;
545
+ /** evaluate_script consent was granted for THIS browser session (see
546
+ * needsEvalConsent) — one dialog per session, not per call. */
547
+ evalApproved?: boolean;
548
+ /** Engine action dispatch; throws Error with an agent-actionable message
549
+ * (the execute() catch renders it as phase=execute). */
550
+ act(action: string, args: Record<string, unknown>, stepId: string): Promise<string>;
551
+ /** Is the BROWSER still there? "Target page, context or browser has been
552
+ * closed" is one string covering two very different facts — a tab the user
553
+ * closed and a browser that died. Only the second one may cost the caller
554
+ * their lease, or a window the plugin walked away from stays on the user's
555
+ * screen with nothing holding it. */
556
+ alive?(): boolean;
557
+ /** Closes the session and reports VERBATIM what it managed to close — a
558
+ * close that failed must not read like a success (issue #3 of 2026-09-18:
559
+ * an agent told the user the window was gone while it was still up). */
560
+ close(): Promise<{
561
+ text: string;
562
+ closed: boolean;
563
+ }>;
564
+ }
565
+ /** Who is calling. The host gives a tool ctx `{agent, sessionID, directory,
566
+ * ask}`; sessionID is the identity a browser lease belongs to. */
567
+ export interface BrowserCaller {
568
+ owner: string;
569
+ agent: string;
570
+ }
571
+ /** ONE BROWSER PER CALLER.
572
+ *
573
+ * This tool used to hold a single session for the whole plugin process, and
574
+ * three agents carry it (lead + researcher for the web, tester for UI
575
+ * verification) — with host `task` children running in the SAME process. So
576
+ * they shared one window, one "current tab" and ONE uid registry: a
577
+ * `take_snapshot` from A renumbered every uid B was holding (`SnapshotIndex
578
+ * .annotate` clears and restarts at e1), and B's next `click {uid}` landed on
579
+ * a different element while still reporting success. Nothing in the reply
580
+ * could show it, because the browser was the same browser.
581
+ *
582
+ * A lease per owner removes the sharing: separate window, separate uid
583
+ * namespace, separate dialog-approved hosts. The `id` is what the model
584
+ * carries, and it is checked against the owner — an id is not a capability
585
+ * token, it is a name, so guessing `b1` must not let a second agent drive the
586
+ * first one's window.
587
+ */
588
+ export interface BrowserLease {
589
+ id: string;
590
+ owner: string;
591
+ agent: string;
592
+ session: ActiveSession;
593
+ at: number;
594
+ lastActivity: number;
595
+ }
596
+ export declare function callerOf(ctx: unknown): BrowserCaller;
294
597
  export declare function buildTmBrowserTool(deps: {
295
598
  pipelines: TmPipelines;
296
599
  cfg: TmConfig;
@@ -307,6 +610,11 @@ export declare function buildTmBrowserTool(deps: {
307
610
  * the override is read from env so the channel-substitution rule stays
308
611
  * honest in tests too). */
309
612
  findExecutable?: (env: Record<string, string | undefined>) => string | null;
613
+ /** seam for tests — the OS child listing the launch-pid scan reads. Without
614
+ * it a mocked playwright (which has no `process()` accessor, exactly like
615
+ * the real 1.63) would make every unit test scan the developer's real
616
+ * process table and possibly adopt a live browser's pid. */
617
+ listChildren?: (ppid: number) => ChildProcRow[];
310
618
  }): {
311
619
  description: string;
312
620
  args: Record<string, unknown>;
@@ -319,5 +627,16 @@ export declare function buildTmBrowserTool(deps: {
319
627
  kind: BrowserEngineKind | null;
320
628
  reason: string | null;
321
629
  };
630
+ /** Which browsers are alive right now and who owns each. tm_join reads this
631
+ * to tell the lead that a child settled while still holding a window — the
632
+ * close duty is otherwise a prompt rule, and a prompt rule the agent forgets
633
+ * leaves a window on the user's screen with nothing said about it. */
634
+ leases: () => {
635
+ id: string;
636
+ owner: string;
637
+ agent: string;
638
+ idleMs: number;
639
+ }[];
322
640
  };
641
+ export {};
323
642
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/tm/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/tm/browser.ts"],"names":[],"mappings":"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"}