@te-river/opencode-team-mode 1.5.10 → 1.5.12

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 (89) hide show
  1. package/README.md +143 -56
  2. package/README.zh-CN.md +116 -47
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/agents.js +17 -11
  5. package/dist/agents.js.map +1 -1
  6. package/dist/approval-gate.d.ts +54 -16
  7. package/dist/approval-gate.d.ts.map +1 -1
  8. package/dist/approval-gate.js +163 -42
  9. package/dist/approval-gate.js.map +1 -1
  10. package/dist/prompts/lead.d.ts +1 -1
  11. package/dist/prompts/lead.d.ts.map +1 -1
  12. package/dist/prompts/lead.js +22 -3
  13. package/dist/prompts/lead.js.map +1 -1
  14. package/dist/prompts/shared.d.ts +1 -1
  15. package/dist/prompts/shared.d.ts.map +1 -1
  16. package/dist/prompts/shared.js +154 -119
  17. package/dist/prompts/shared.js.map +1 -1
  18. package/dist/prompts/specialists.d.ts +2 -2
  19. package/dist/prompts/specialists.d.ts.map +1 -1
  20. package/dist/prompts/specialists.js +40 -11
  21. package/dist/prompts/specialists.js.map +1 -1
  22. package/dist/tm/args-schema.d.ts +25 -1
  23. package/dist/tm/args-schema.d.ts.map +1 -1
  24. package/dist/tm/args-schema.js +149 -39
  25. package/dist/tm/args-schema.js.map +1 -1
  26. package/dist/tm/browser.d.ts +203 -18
  27. package/dist/tm/browser.d.ts.map +1 -1
  28. package/dist/tm/browser.js +853 -111
  29. package/dist/tm/browser.js.map +1 -1
  30. package/dist/tm/config.d.ts +61 -0
  31. package/dist/tm/config.d.ts.map +1 -1
  32. package/dist/tm/config.js +55 -1
  33. package/dist/tm/config.js.map +1 -1
  34. package/dist/tm/index.d.ts +7 -5
  35. package/dist/tm/index.d.ts.map +1 -1
  36. package/dist/tm/index.js +38 -4
  37. package/dist/tm/index.js.map +1 -1
  38. package/dist/tm/memory.d.ts +88 -10
  39. package/dist/tm/memory.d.ts.map +1 -1
  40. package/dist/tm/memory.js +881 -99
  41. package/dist/tm/memory.js.map +1 -1
  42. package/dist/tm/pipelines.d.ts +26 -3
  43. package/dist/tm/pipelines.d.ts.map +1 -1
  44. package/dist/tm/pipelines.js +167 -11
  45. package/dist/tm/pipelines.js.map +1 -1
  46. package/dist/tm/ptc/budgets.d.ts +22 -1
  47. package/dist/tm/ptc/budgets.d.ts.map +1 -1
  48. package/dist/tm/ptc/budgets.js +87 -8
  49. package/dist/tm/ptc/budgets.js.map +1 -1
  50. package/dist/tm/ptc/contract.d.ts +49 -9
  51. package/dist/tm/ptc/contract.d.ts.map +1 -1
  52. package/dist/tm/ptc/contract.js +41 -3
  53. package/dist/tm/ptc/contract.js.map +1 -1
  54. package/dist/tm/ptc/driver.d.ts +5 -2
  55. package/dist/tm/ptc/driver.d.ts.map +1 -1
  56. package/dist/tm/ptc/driver.js +47 -15
  57. package/dist/tm/ptc/driver.js.map +1 -1
  58. package/dist/tm/ptc/engines.d.ts +15 -4
  59. package/dist/tm/ptc/engines.d.ts.map +1 -1
  60. package/dist/tm/ptc/engines.js +281 -28
  61. package/dist/tm/ptc/engines.js.map +1 -1
  62. package/dist/tm/ptc/index.d.ts +4 -4
  63. package/dist/tm/ptc/index.d.ts.map +1 -1
  64. package/dist/tm/ptc/index.js +2 -2
  65. package/dist/tm/ptc/index.js.map +1 -1
  66. package/dist/tm/ptc/pscan.d.ts +20 -1
  67. package/dist/tm/ptc/pscan.d.ts.map +1 -1
  68. package/dist/tm/ptc/pscan.js +328 -14
  69. package/dist/tm/ptc/pscan.js.map +1 -1
  70. package/dist/tm/ptc/summary.d.ts.map +1 -1
  71. package/dist/tm/ptc/summary.js +23 -1
  72. package/dist/tm/ptc/summary.js.map +1 -1
  73. package/dist/tm/ptc/tool.d.ts +34 -3
  74. package/dist/tm/ptc/tool.d.ts.map +1 -1
  75. package/dist/tm/ptc/tool.js +117 -20
  76. package/dist/tm/ptc/tool.js.map +1 -1
  77. package/dist/tm/search.d.ts +83 -14
  78. package/dist/tm/search.d.ts.map +1 -1
  79. package/dist/tm/search.js +440 -45
  80. package/dist/tm/search.js.map +1 -1
  81. package/dist/tm/shell-bridge.d.ts +14 -1
  82. package/dist/tm/shell-bridge.d.ts.map +1 -1
  83. package/dist/tm/shell-bridge.js +57 -10
  84. package/dist/tm/shell-bridge.js.map +1 -1
  85. package/dist/tm/webfetch.d.ts +33 -8
  86. package/dist/tm/webfetch.d.ts.map +1 -1
  87. package/dist/tm/webfetch.js +131 -20
  88. package/dist/tm/webfetch.js.map +1 -1
  89. package/package.json +5 -2
@@ -1,34 +1,82 @@
1
1
  /**
2
2
  * tm_browser — governed interactive browser (Plan C: the user's own
3
- * Chromium-family browser driven headful over the CDP pipe protocol).
3
+ * Chromium-family browser, headful by default on desktops).
4
4
  *
5
- * Feasibility proven by smoke (Edge + --remote-debugging-pipe + JSON/NUL
6
- * framing over fds 3/4 — zero deps, no WebSocket implementation). Qoder's
7
- * hardening ideas are ported where the plugin can reach them:
8
- * - isolated temp user-data-dir (never the user's real profile);
9
- * - per-navigation allowlist enforced at the NETWORK layer via CDP
10
- * Fetch.requestPaused (non-allowlisted hosts get BlockedByClient —
11
- * the per-hop re-check analog);
12
- * - hardened webPreferences are the spawn's own flags (no-first-run,
13
- * no-extensions, mute);
14
- * - hard per-command timeout + explicit close; dispose kills the child.
5
+ * T5 engine split (design board ② "TM_BROWSER_ENGINE" + R2 verdict):
6
+ * - PRIMARY engine: playwright-core — dynamic import ONLY (the package is
7
+ * declared in dependencies but NOT installed at build time; a static
8
+ * import would break tsc). A failed import or node < 20 degrades the
9
+ * session to the cdp-legacy engine automatically, per plugin instance.
10
+ * - cdp-legacy engine: the original hand-rolled CDP pipe transport
11
+ * (JSON + NUL framing over fds 3/4, zero deps — smoke-proven) kept
12
+ * verbatim as the fallback. On cdp-legacy only the core subset works
13
+ * (open/navigate/read/screenshot/close + navigate_page/take_screenshot/
14
+ * list_pages/evaluate_script aliases); the snapshot-first actions
15
+ * (take_snapshot + uid addressing, 16-verb chrome-devtools-mcp surface)
16
+ * require the playwright engine.
17
+ *
18
+ * Action surface aligns with chrome-devtools-mcp's 16 verbs (R2 mapping):
19
+ * navigate_page · take_snapshot · click · fill · hover · drag ·
20
+ * press_key · select_page · upload_file · wait_for · evaluate_script ·
21
+ * list_console_messages · list_network_requests · list_pages ·
22
+ * take_screenshot · handle_dialog
23
+ * plus the legacy compatibility verbs open / navigate / read /
24
+ * screenshot / close. Snapshot-first discipline: take_snapshot returns
25
+ * the ariaSnapshot YAML with an INJECTED [uid=eN] per node (playwright has
26
+ * no uid concept — SnapshotIndex below is our own snapshot→locator
27
+ * registry); follow-up actions address nodes by that uid (or an explicit
28
+ * selector escape hatch) instead of guessed locators.
29
+ *
30
+ * Hardening (unchanged from the CDP era, ported to both engines):
31
+ * - isolated temp profile (never the user's real browser profile);
32
+ * persistent login is ONLY via an explicit TM_BROWSER_USER_DATA_DIR;
33
+ * - domain allowlist enforced at the NETWORK layer: playwright
34
+ * context.route() abort / CDP Fetch.requestPaused fail — every request
35
+ * and every redirect hop re-checked (per-hop analog);
36
+ * - out-of-allowlist open/navigate routes through the OFFICIAL dialog
37
+ * BEFORE any spawn; approved hosts also pass the network layer;
38
+ * - hardened context: real-Chrome UA + zh-CN Accept-Language,
39
+ * no-first-run / no-extensions / mute launch flags, 3 s default action
40
+ * timeout (the prompt's "3000 ms budget" is the tool's default, not an
41
+ * aspiration), no networkidle waits anywhere;
42
+ * - dispose kills the child / closes the browser.
15
43
  *
16
44
  * Environment adaptivity (different OpenCode hosts):
17
45
  * - headful by default (Plan C); display-less Linux (no DISPLAY/
18
46
  * WAYLAND_DISPLAY) automatically falls back to headless; TM_BROWSER_
19
47
  * HEADLESS=1|0 forces either way;
20
- * - browser discovery: TM_BROWSER_PATH override, then per-OS candidate
21
- * paths (Edge first on Windows — it is always there; Chrome/Chromium
22
- * elsewhere). No browser → structured error, the agent falls back to
23
- * tm_webfetch / user MCP tools per the priority ladder.
48
+ * - browser discovery (SHARED by both engines): TM_BROWSER_PATH
49
+ * override, then the USER'S DEFAULT browser (Windows registry / Linux
50
+ * xdg-settings) when it is Chromium-family — CDP is Chromium-proprietary
51
+ * and playwright channels only speak Chromium too, so a Firefox default
52
+ * falls through — then per-OS candidate paths (Edge first on Windows;
53
+ * Chrome/Chromium elsewhere). No browser → structured error, the agent
54
+ * falls back to tm_webfetch / user MCP tools.
24
55
  *
25
- * Role access mirrors tm_webfetch: network roles (team + researcher) only.
56
+ * Role access mirrors tm_webfetch: network roles (team + researcher) only,
57
+ * tester browser-only (UI verification).
26
58
  */
27
59
  import type { ToolResult } from "../types.js";
28
60
  import type { TmConfig } from "./config.js";
29
61
  import type { TmPipelines } from "./pipelines.js";
30
- /** Resolve the browser executable: TM_BROWSER_PATH override, then per-OS
31
- * candidates. %LOCALAPPDATA% style vars are expanded on win32. */
62
+ /** Subprocess runner for the shell/registry probes; injectable for tests. */
63
+ export type CommandRunner = (cmd: string, args: string[]) => string;
64
+ export declare function isChromiumFamily(exePath: string): boolean;
65
+ /** Parse `reg query "...UrlAssociations\http\UserChoice" /v ProgId` output. */
66
+ export declare function parseProgId(stdout: string): string | null;
67
+ /** Parse `reg query "...\shell\open\command" /ve` output → exe path.
68
+ * The quoted capture stops at the closing quote, so the `" -- %1"` style
69
+ * URL-template tail never leaks into the returned path. */
70
+ export declare function parseRegCommand(stdout: string): string | null;
71
+ /** Parse the Exec= line of an xdg .desktop file. */
72
+ export declare function parseDesktopExec(text: string): string | null;
73
+ /** The user's DEFAULT browser, when it is Chromium-family and present.
74
+ * null → the caller falls back to the per-OS probe list (detection is
75
+ * best-effort and must never throw into tool discovery). */
76
+ export declare function defaultBrowserExecutable(env?: Record<string, string | undefined>, run?: CommandRunner): string | null;
77
+ /** Resolve the browser executable: TM_BROWSER_PATH override → the user's
78
+ * DEFAULT browser (Chromium-family only) → per-OS candidate paths.
79
+ * %LOCALAPPDATA% style vars are expanded on win32. */
32
80
  export declare function findBrowserExecutable(env?: Record<string, string | undefined>): string | null;
33
81
  /**
34
82
  * Headless resolution (Plan C = headful by default):
@@ -38,15 +86,152 @@ export declare function findBrowserExecutable(env?: Record<string, string | unde
38
86
  * display possible (Linux without DISPLAY/WAYLAND_DISPLAY).
39
87
  */
40
88
  export declare function resolveHeadless(env?: Record<string, string | undefined>): boolean;
89
+ export type BrowserEngineKind = "playwright" | "cdp-legacy";
90
+ /** playwright-core 1.63 targets node >= 20; on anything older we refuse the
91
+ * engine up-front and stay on the zero-dependency CDP pipe (the node>=18
92
+ * package floor keeps the plugin itself loadable — only the playwright
93
+ * PRIMARY is gated here, cdp-legacy carries node 18/19 hosts). */
94
+ export declare const PLAYWRIGHT_MIN_NODE_MAJOR = 20;
95
+ /** "v22.3.1" / "20" -> major number; unparseable -> 0 (fail toward the
96
+ * always-available cdp-legacy engine). */
97
+ export declare function nodeMajorOf(version: string): number;
98
+ export interface EngineSelection {
99
+ kind: BrowserEngineKind;
100
+ /** The imported playwright-core namespace (present iff kind=playwright). */
101
+ pw?: PwModule;
102
+ /** Why this kind was chosen (preference / node gate / import failure). */
103
+ reason?: string;
104
+ }
105
+ /** The REAL loader — a VARIABLE specifier so tsc never tries to resolve
106
+ * "playwright-core" at build time (types ship inside the package, which may
107
+ * be absent from node_modules). Under ESM, import(variable) yields the
108
+ * module namespace typed as any. */
109
+ export declare function defaultImportPlaywright(): Promise<unknown>;
110
+ /** Pure engine-selection seam (exported for test-browser.mjs):
111
+ * cdp-legacy preference → legacy WITHOUT ever importing; node < 20 →
112
+ * legacy without importing; playwright preference → import, verify the
113
+ * chromium.launch shape, degrade to legacy on ANY failure. */
114
+ export declare function selectBrowserEngine(opts: {
115
+ preference: string | undefined;
116
+ nodeMajor: number;
117
+ importPlaywright: () => Promise<unknown>;
118
+ }): Promise<EngineSelection>;
119
+ export interface PwModule {
120
+ chromium: {
121
+ launch(opts: Record<string, unknown>): Promise<PwBrowser>;
122
+ launchPersistentContext(userDataDir: string, opts: Record<string, unknown>): Promise<PwBrowserContext>;
123
+ };
124
+ }
125
+ export interface PwBrowser {
126
+ newContext(opts?: Record<string, unknown>): Promise<PwBrowserContext>;
127
+ close(): Promise<void>;
128
+ }
129
+ export interface PwBrowserContext {
130
+ route(pattern: string, handler: (route: PwRoute, request: PwRequestInfo) => Promise<void> | void): Promise<void> | void;
131
+ pages(): PwPage[];
132
+ newPage(): Promise<PwPage>;
133
+ close(): Promise<void>;
134
+ }
135
+ export interface PwPage {
136
+ goto(url: string, opts?: Record<string, unknown>): Promise<unknown>;
137
+ locator(selector: string): PwLocator;
138
+ getByRole(role: string, opts?: Record<string, unknown>): PwLocator;
139
+ getByText(text: string): PwLocator;
140
+ keyboard: {
141
+ press(key: string): Promise<unknown>;
142
+ };
143
+ evaluate(pageFunction: string): Promise<unknown>;
144
+ screenshot(opts?: Record<string, unknown>): Promise<Uint8Array>;
145
+ on(event: string, handler: (...args: any[]) => void): void;
146
+ url(): string;
147
+ title?(): Promise<string>;
148
+ bringToFront?(): Promise<void>;
149
+ }
150
+ export interface PwLocator {
151
+ ariaSnapshot(): Promise<string>;
152
+ click(): Promise<unknown>;
153
+ fill(value: string): Promise<unknown>;
154
+ hover(): Promise<unknown>;
155
+ pressKey(key: string): Promise<unknown>;
156
+ setInputFiles(files: string | string[]): Promise<unknown>;
157
+ waitFor(opts?: Record<string, unknown>): Promise<unknown>;
158
+ nth(index: number): PwLocator;
159
+ dragTo(target: PwLocator): Promise<unknown>;
160
+ }
161
+ export interface PwRoute {
162
+ continue(): Promise<unknown>;
163
+ abort(): Promise<unknown>;
164
+ }
165
+ export interface PwRequestInfo {
166
+ url(): string;
167
+ method?(): string;
168
+ }
169
+ export interface PwConsoleMessage {
170
+ type(): string;
171
+ text(): string;
172
+ }
173
+ export interface PwResponseInfo {
174
+ url(): string;
175
+ status(): number;
176
+ request(): PwRequestInfo;
177
+ }
178
+ export interface PwDialog {
179
+ type(): string;
180
+ message(): string;
181
+ accept(promptText?: string): Promise<unknown>;
182
+ dismiss(): Promise<unknown>;
183
+ }
184
+ export interface SnapshotEntry {
185
+ role: string;
186
+ name?: string;
187
+ nth: number;
188
+ }
189
+ /** ariaSnapshot yields plain YAML with NO addressable id, while the
190
+ * chrome-devtools-mcp muscle memory this tool aligns to is uid-addressed.
191
+ * The missing layer is built here: each take_snapshot re-indexes every YAML
192
+ * node (`- <role> "<name>" …`), injects `[uid=eN]` inline, and remembers
193
+ * (role, name, nth-of-kind); later actions resolve uid →
194
+ * `page.getByRole(role, { name, exact: true }).nth(nth)`. Uids are
195
+ * renumbered on every snapshot (one action, one observation); an
196
+ * unknown/stale uid errors back to take_snapshot instead of falling back
197
+ * to guessed locators. */
198
+ export declare class SnapshotIndex {
199
+ private entries;
200
+ private next;
201
+ get size(): number;
202
+ /** Reset + parse + annotate the ariaSnapshot YAML in one pass. */
203
+ annotate(yaml: string): string;
204
+ get(uid: string): SnapshotEntry | undefined;
205
+ /** uid → playwright locator; null = unknown uid / role the engine cannot
206
+ * address (the caller renders the take_snapshot-first guidance). */
207
+ locatorFor(page: PwPage, uid: string): PwLocator | null;
208
+ }
209
+ /** ariaSnapshot escapes whitespace/quotes inside names (\s \n \t \" \\). */
210
+ export declare function unescapeAriaName(raw: string): string;
211
+ /** The 16 canonical verbs, named byte-identical to chrome-devtools-mcp. */
212
+ 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"];
213
+ /** Legacy compat verbs that ride on top of the 16 (both engines). */
214
+ export declare const BROWSER_COMPAT_ACTIONS: readonly ["open", "navigate", "read", "screenshot", "close"];
215
+ /** What the cdp-legacy fallback can still do (R2: degradation must keep the
216
+ * §6o behavior; everything snapshot-shaped is playwright-only). */
217
+ export declare const BROWSER_LEGACY_ACTIONS: readonly ["open", "navigate", "navigate_page", "read", "screenshot", "take_screenshot", "list_pages", "evaluate_script", "close"];
41
218
  export declare function buildTmBrowserTool(deps: {
42
219
  pipelines: TmPipelines;
43
220
  cfg: TmConfig;
44
221
  env?: Record<string, string | undefined>;
45
222
  args?: Record<string, unknown>;
223
+ /** Test seam: replace the dynamic playwright-core import. */
224
+ importPlaywright?: () => Promise<unknown>;
225
+ /** Test seam: pretend node major version for the engine gate. */
226
+ nodeMajor?: number;
46
227
  }): {
47
228
  description: string;
48
229
  args: Record<string, unknown>;
49
230
  execute: (rawArgs: Record<string, unknown>, ctx: unknown) => Promise<ToolResult>;
50
231
  dispose: () => void;
232
+ engineInfo: () => {
233
+ kind: BrowserEngineKind | null;
234
+ reason: string | null;
235
+ };
51
236
  };
52
237
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/tm/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AA0BjD;oEACoE;AACpE,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,MAAM,GAAG,IAAI,CAgB1G;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,OAAO,CAM9F;AA0FD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,SAAS,EAAE,WAAW,CAAA;IACtB,GAAG,EAAE,QAAQ,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,GAAG;IACF,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAChF,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAiPA"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/tm/browser.ts"],"names":[],"mappings":"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"}