@anweat/dsh-browser 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +306 -245
- package/cordis.patch.yml +26 -16
- package/lib/approval-policy.js +15 -0
- package/lib/approval-policy.js.map +1 -1
- package/lib/browser-service.d.ts +68 -25
- package/lib/browser-service.js +222 -62
- package/lib/browser-service.js.map +1 -1
- package/lib/client/SettingsCard.d.ts +2 -0
- package/lib/client/SettingsCard.js +21 -0
- package/lib/client/SettingsCard.js.map +1 -0
- package/lib/client/context-types.d.ts +8 -0
- package/lib/client/context-types.js +2 -0
- package/lib/client/context-types.js.map +1 -0
- package/lib/client/form.d.ts +62 -0
- package/lib/client/form.js +198 -0
- package/lib/client/form.js.map +1 -0
- package/lib/client/index.d.ts +16 -0
- package/lib/client/index.js +18 -0
- package/lib/client/index.js.map +1 -0
- package/lib/client/locales.d.ts +58 -0
- package/lib/client/locales.js +55 -0
- package/lib/client/locales.js.map +1 -0
- package/lib/client/settings-namespace.d.ts +2 -0
- package/lib/client/settings-namespace.js +3 -0
- package/lib/client/settings-namespace.js.map +1 -0
- package/lib/client/styles.d.ts +37 -0
- package/lib/client/styles.js +25 -0
- package/lib/client/styles.js.map +1 -0
- package/lib/client.js +753 -0
- package/lib/client.js.map +1 -0
- package/lib/config.d.ts +10 -0
- package/lib/config.js +22 -0
- package/lib/config.js.map +1 -1
- package/lib/deps.d.ts +7 -1
- package/lib/deps.js +22 -6
- package/lib/deps.js.map +1 -1
- package/lib/freedom.d.ts +1 -1
- package/lib/freedom.js +4 -0
- package/lib/freedom.js.map +1 -1
- package/lib/index.js +13 -1
- package/lib/index.js.map +1 -1
- package/lib/opencli-catalog.d.ts +21 -0
- package/lib/opencli-catalog.js +49 -0
- package/lib/opencli-catalog.js.map +1 -0
- package/lib/scripts.js +27 -27
- package/lib/tools.js +75 -1
- package/lib/tools.js.map +1 -1
- package/lib/usage-policy.d.ts +49 -0
- package/lib/usage-policy.js +171 -0
- package/lib/usage-policy.js.map +1 -0
- package/package.json +133 -78
- package/scripts/check-client-bundle.mjs +15 -0
- package/scripts/clean-lib.mjs +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","names":["css","useState"],"sources":["../src/client/form.ts","../src/client/styles.ts","../src/client/SettingsCard.tsx","../src/client/locales.ts","../src/client/settings-namespace.ts","../src/client/index.ts"],"mappings":"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"}
|
package/lib/config.d.ts
CHANGED
|
@@ -6,11 +6,17 @@ import z from '@deepseek-ai/schemastery';
|
|
|
6
6
|
import type { AuthProfileConfig } from './auth-profiles.ts';
|
|
7
7
|
import type { RulePackConfig } from './rule-packs.ts';
|
|
8
8
|
import { type AutomationMode } from './freedom.ts';
|
|
9
|
+
import { type UsagePolicy, type UsagePolicyInput } from './usage-policy.ts';
|
|
10
|
+
export declare const BROWSER_RUNTIMES: readonly ["playwright", "patchright"];
|
|
11
|
+
export type BrowserRuntime = typeof BROWSER_RUNTIMES[number];
|
|
12
|
+
export declare function resolveBrowserRuntime(value: unknown): BrowserRuntime;
|
|
9
13
|
export interface Config {
|
|
10
14
|
/** Whether the browser service is active. */
|
|
11
15
|
enabled: boolean;
|
|
12
16
|
/** Browser channel: 'chromium' (bundled, self-contained) or 'msedge'. */
|
|
13
17
|
channel: string;
|
|
18
|
+
/** Browser driver/runtime implementation. Patchright is Chromium-only. */
|
|
19
|
+
browserRuntime?: BrowserRuntime;
|
|
14
20
|
headless: boolean;
|
|
15
21
|
/** Path to a Playwright storageState JSON (persisted login state). */
|
|
16
22
|
storageStatePath?: string;
|
|
@@ -26,6 +32,8 @@ export interface Config {
|
|
|
26
32
|
opencliEnabled: boolean;
|
|
27
33
|
/** Model-facing tool exposure and approval level. */
|
|
28
34
|
automationMode: AutomationMode;
|
|
35
|
+
/** Approval-independent traffic buffering and bounded crawl budgets. */
|
|
36
|
+
usagePolicy?: UsagePolicyInput;
|
|
29
37
|
/** Lazily run `playwright install chromium` when the browser is missing. */
|
|
30
38
|
autoInstall: boolean;
|
|
31
39
|
/** Directory for browser screenshots; defaults to $DSH_HOME/data/browser/snapshots. */
|
|
@@ -36,6 +44,7 @@ export declare const Config: z<Config>;
|
|
|
36
44
|
export interface ResolvedConfig {
|
|
37
45
|
enabled: boolean;
|
|
38
46
|
channel: string;
|
|
47
|
+
browserRuntime: BrowserRuntime;
|
|
39
48
|
headless: boolean;
|
|
40
49
|
storageStatePath?: string;
|
|
41
50
|
authProfiles: Record<string, AuthProfileConfig>;
|
|
@@ -44,6 +53,7 @@ export interface ResolvedConfig {
|
|
|
44
53
|
executablePath?: string;
|
|
45
54
|
opencliEnabled: boolean;
|
|
46
55
|
automationMode: AutomationMode;
|
|
56
|
+
usagePolicy: UsagePolicy;
|
|
47
57
|
autoInstall: boolean;
|
|
48
58
|
snapshotDir: string;
|
|
49
59
|
verbose: boolean;
|
package/lib/config.js
CHANGED
|
@@ -6,9 +6,19 @@ import path from 'node:path';
|
|
|
6
6
|
import os from 'node:os';
|
|
7
7
|
import z from '@deepseek-ai/schemastery';
|
|
8
8
|
import { resolveAutomationMode } from "./freedom.js";
|
|
9
|
+
import { resolveUsagePolicy } from "./usage-policy.js";
|
|
10
|
+
export const BROWSER_RUNTIMES = ['playwright', 'patchright'];
|
|
11
|
+
export function resolveBrowserRuntime(value) {
|
|
12
|
+
const runtime = value ?? 'playwright';
|
|
13
|
+
if (typeof runtime !== 'string' || !BROWSER_RUNTIMES.includes(runtime)) {
|
|
14
|
+
throw new Error('browserRuntime must be one of: ' + BROWSER_RUNTIMES.join(', '));
|
|
15
|
+
}
|
|
16
|
+
return runtime;
|
|
17
|
+
}
|
|
9
18
|
export const Config = z.object({
|
|
10
19
|
enabled: z.boolean().default(true),
|
|
11
20
|
channel: z.string().default('chromium'),
|
|
21
|
+
browserRuntime: z.string().default('playwright'),
|
|
12
22
|
headless: z.boolean().default(true),
|
|
13
23
|
storageStatePath: z.string(),
|
|
14
24
|
authProfiles: z.dict(z.object({
|
|
@@ -34,6 +44,16 @@ export const Config = z.object({
|
|
|
34
44
|
executablePath: z.string(),
|
|
35
45
|
opencliEnabled: z.boolean().default(true),
|
|
36
46
|
automationMode: z.string().default('standard'),
|
|
47
|
+
usagePolicy: z.object({
|
|
48
|
+
minDelayMs: z.number().default(750),
|
|
49
|
+
maxConcurrency: z.number().default(2),
|
|
50
|
+
burst: z.number().default(3),
|
|
51
|
+
maxPagesPerRun: z.number().default(20),
|
|
52
|
+
maxDepth: z.number().default(2),
|
|
53
|
+
retryLimit: z.number().default(2),
|
|
54
|
+
backoffBaseMs: z.number().default(1000),
|
|
55
|
+
cooldownMs: z.number().default(30000),
|
|
56
|
+
}),
|
|
37
57
|
autoInstall: z.boolean().default(false),
|
|
38
58
|
snapshotDir: z.string(),
|
|
39
59
|
verbose: z.boolean().default(false),
|
|
@@ -47,9 +67,11 @@ export function resolveConfig(config) {
|
|
|
47
67
|
return {
|
|
48
68
|
enabled: config.enabled ?? true,
|
|
49
69
|
channel: config.channel ?? 'chromium',
|
|
70
|
+
browserRuntime: resolveBrowserRuntime(config.browserRuntime),
|
|
50
71
|
headless: config.headless ?? true,
|
|
51
72
|
opencliEnabled: config.opencliEnabled ?? true,
|
|
52
73
|
automationMode: resolveAutomationMode(config.automationMode),
|
|
74
|
+
usagePolicy: resolveUsagePolicy(config.usagePolicy),
|
|
53
75
|
autoInstall: config.autoInstall ?? false,
|
|
54
76
|
snapshotDir,
|
|
55
77
|
verbose: config.verbose ?? false,
|
package/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAGxC,OAAO,EAAE,qBAAqB,EAAuB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/lib/deps.d.ts
CHANGED
|
@@ -21,10 +21,16 @@ export interface CliResult {
|
|
|
21
21
|
stderr: string;
|
|
22
22
|
timedOut: boolean;
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
export type BrowserRuntimeName = 'playwright' | 'patchright';
|
|
25
|
+
export declare function browserRuntimePackage(runtime: BrowserRuntimeName): 'playwright' | 'patchright';
|
|
26
|
+
/** Resolve a supported Playwright-compatible runtime (plugin-local, then global reuse). */
|
|
27
|
+
export declare function loadBrowserRuntime(runtime: BrowserRuntimeName): any;
|
|
28
|
+
/** Backwards-compatible Playwright loader for consumers and status checks. */
|
|
25
29
|
export declare function loadPlaywright(): any;
|
|
26
30
|
/** playwright CLI entry (for `playwright install chromium`). */
|
|
27
31
|
export declare function playwrightCliPath(): string;
|
|
32
|
+
/** CLI entry for the selected Playwright-compatible runtime. */
|
|
33
|
+
export declare function browserRuntimeCliPath(runtime: BrowserRuntimeName): string;
|
|
28
34
|
/** Entry JS for the bundled/reused @jackwener/opencli (its bin/main). */
|
|
29
35
|
export declare function opencliEntryPath(): string;
|
|
30
36
|
/**
|
package/lib/deps.js
CHANGED
|
@@ -94,18 +94,34 @@ function resolvePkgJson(name) {
|
|
|
94
94
|
function pkgDir(name) {
|
|
95
95
|
return path.dirname(resolvePkgJson(name));
|
|
96
96
|
}
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
const cachedBrowserRuntimes = new Map();
|
|
98
|
+
export function browserRuntimePackage(runtime) {
|
|
99
|
+
if (runtime === 'playwright' || runtime === 'patchright')
|
|
100
|
+
return runtime;
|
|
101
|
+
throw new Error('browserRuntime must be one of: playwright, patchright');
|
|
102
|
+
}
|
|
103
|
+
/** Resolve a supported Playwright-compatible runtime (plugin-local, then global reuse). */
|
|
104
|
+
export function loadBrowserRuntime(runtime) {
|
|
105
|
+
const packageName = browserRuntimePackage(runtime);
|
|
106
|
+
const cached = cachedBrowserRuntimes.get(packageName);
|
|
107
|
+
if (cached)
|
|
108
|
+
return cached;
|
|
109
|
+
const loaded = createRequire(resolvePkgJson(packageName))(packageName);
|
|
110
|
+
cachedBrowserRuntimes.set(packageName, loaded);
|
|
111
|
+
return loaded;
|
|
112
|
+
}
|
|
113
|
+
/** Backwards-compatible Playwright loader for consumers and status checks. */
|
|
99
114
|
export function loadPlaywright() {
|
|
100
|
-
|
|
101
|
-
return cachedPlaywright;
|
|
102
|
-
cachedPlaywright = createRequire(resolvePkgJson('playwright'))('playwright');
|
|
103
|
-
return cachedPlaywright;
|
|
115
|
+
return loadBrowserRuntime('playwright');
|
|
104
116
|
}
|
|
105
117
|
/** playwright CLI entry (for `playwright install chromium`). */
|
|
106
118
|
export function playwrightCliPath() {
|
|
107
119
|
return path.join(pkgDir('playwright'), 'cli.js');
|
|
108
120
|
}
|
|
121
|
+
/** CLI entry for the selected Playwright-compatible runtime. */
|
|
122
|
+
export function browserRuntimeCliPath(runtime) {
|
|
123
|
+
return path.join(pkgDir(browserRuntimePackage(runtime)), 'cli.js');
|
|
124
|
+
}
|
|
109
125
|
/** Entry JS for the bundled/reused @jackwener/opencli (its bin/main). */
|
|
110
126
|
export function opencliEntryPath() {
|
|
111
127
|
const dir = pkgDir('@jackwener/opencli');
|
package/lib/deps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"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"}
|
package/lib/freedom.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Public automation-freedom contract and tool exposure matrix. */
|
|
2
2
|
export declare const AUTOMATION_MODES: readonly ["read-only", "standard", "autonomous", "unrestricted"];
|
|
3
3
|
export type AutomationMode = typeof AUTOMATION_MODES[number];
|
|
4
|
-
export declare const ALL_BROWSER_TOOL_NAMES: readonly ["browser_open", "browser_click", "browser_type", "browser_scroll", "browser_read", "browser_screenshot", "browser_close", "browser_status", "browser_install", "browser_script_catalog", "browser_script_validate", "browser_script_run_builtin", "browser_userscript_run", "browser_recipe_run", "browser_opencli_status", "browser_opencli_run"];
|
|
4
|
+
export declare const ALL_BROWSER_TOOL_NAMES: readonly ["browser_open", "browser_click", "browser_type", "browser_scroll", "browser_read", "browser_screenshot", "browser_close", "browser_status", "browser_install", "browser_script_catalog", "browser_script_validate", "browser_script_run_builtin", "browser_userscript_run", "browser_recipe_run", "browser_opencli_status", "browser_opencli_catalog", "browser_opencli_run", "browser_crawl"];
|
|
5
5
|
export type BrowserToolName = typeof ALL_BROWSER_TOOL_NAMES[number];
|
|
6
6
|
export declare function resolveAutomationMode(value: unknown): AutomationMode;
|
|
7
7
|
export declare function isBrowserToolExposed(name: string, mode: AutomationMode): name is BrowserToolName;
|
package/lib/freedom.js
CHANGED
|
@@ -16,7 +16,9 @@ export const ALL_BROWSER_TOOL_NAMES = [
|
|
|
16
16
|
'browser_userscript_run',
|
|
17
17
|
'browser_recipe_run',
|
|
18
18
|
'browser_opencli_status',
|
|
19
|
+
'browser_opencli_catalog',
|
|
19
20
|
'browser_opencli_run',
|
|
21
|
+
'browser_crawl',
|
|
20
22
|
];
|
|
21
23
|
const READ_ONLY_TOOL_NAMES = new Set([
|
|
22
24
|
'browser_open',
|
|
@@ -29,6 +31,8 @@ const READ_ONLY_TOOL_NAMES = new Set([
|
|
|
29
31
|
'browser_script_run_builtin',
|
|
30
32
|
'browser_recipe_run',
|
|
31
33
|
'browser_opencli_status',
|
|
34
|
+
'browser_opencli_catalog',
|
|
35
|
+
'browser_crawl',
|
|
32
36
|
]);
|
|
33
37
|
export function resolveAutomationMode(value) {
|
|
34
38
|
const mode = value ?? 'standard';
|
package/lib/freedom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freedom.js","sourceRoot":"","sources":["../src/freedom.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,CAAU,CAAA;AAGhG,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,cAAc;IACd,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,oBAAoB;IACpB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,wBAAwB;IACxB,yBAAyB;IACzB,4BAA4B;IAC5B,wBAAwB;IACxB,oBAAoB;IACpB,wBAAwB;IACxB,qBAAqB;
|
|
1
|
+
{"version":3,"file":"freedom.js","sourceRoot":"","sources":["../src/freedom.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,CAAU,CAAA;AAGhG,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,cAAc;IACd,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,oBAAoB;IACpB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,wBAAwB;IACxB,yBAAyB;IACzB,4BAA4B;IAC5B,wBAAwB;IACxB,oBAAoB;IACpB,wBAAwB;IACxB,yBAAyB;IACzB,qBAAqB;IACrB,eAAe;CACP,CAAA;AAIV,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAkB;IACpD,cAAc;IACd,cAAc;IACd,oBAAoB;IACpB,eAAe;IACf,gBAAgB;IAChB,wBAAwB;IACxB,yBAAyB;IACzB,4BAA4B;IAC5B,oBAAoB;IACpB,wBAAwB;IACxB,yBAAyB;IACzB,eAAe;CAChB,CAAC,CAAA;AAEF,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,IAAI,GAAG,KAAK,IAAI,UAAU,CAAA;IAChC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAsB,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,IAAsB,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,IAAoB;IACrE,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAuB,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3E,OAAO,IAAI,KAAK,WAAW,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAuB,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,OAAO,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAChF,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import fs from 'node:fs';
|
|
10
10
|
import path from 'node:path';
|
|
11
|
+
import { settingsNamespace } from '@deepseek-ai/dsh-settings';
|
|
11
12
|
import { Config, resolveConfig } from "./config.js";
|
|
12
13
|
import { BrowserService } from "./browser-service.js";
|
|
13
14
|
import { registerTools } from "./tools.js";
|
|
@@ -18,7 +19,18 @@ export { Config };
|
|
|
18
19
|
export { BUILTIN_SCRIPTS, validateUserscript } from "./scripts.js";
|
|
19
20
|
export { AUTOMATION_MODES, ALL_BROWSER_TOOL_NAMES, browserToolsForMode } from "./freedom.js";
|
|
20
21
|
export function apply(ctx, config) {
|
|
21
|
-
const
|
|
22
|
+
const deployed = resolveConfig(config);
|
|
23
|
+
let resolveSource = () => deployed;
|
|
24
|
+
ctx.inject(['settings'], (settingsCtx) => {
|
|
25
|
+
const scope = settingsCtx.settings.register(settingsNamespace('browser'), Config, {
|
|
26
|
+
base: deployed,
|
|
27
|
+
// Browser processes, tool exposure, and approval hooks are deliberately
|
|
28
|
+
// startup-scoped. The next full profile start reads the persisted layer.
|
|
29
|
+
applies: 'restart',
|
|
30
|
+
});
|
|
31
|
+
resolveSource = () => scope.get();
|
|
32
|
+
});
|
|
33
|
+
const resolved = resolveConfig(resolveSource());
|
|
22
34
|
fs.mkdirSync(resolved.snapshotDir, { recursive: true });
|
|
23
35
|
const service = new BrowserService(resolved);
|
|
24
36
|
// Apply the configured exposure/approval mode before every browser tool.
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAA;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAA;AAE/B,OAAO,EAAE,MAAM,EAAE,CAAA;AAOjB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAElE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAE5F,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,MAAc;IAChD,MAAM,QAAQ,GAAmB,aAAa,CAAC,MAAM,CAAC,CAAA;IACtD,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAA;IAE5C,yEAAyE;IACzE,yEAAyE;IACzE,GAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,EAAE,CAAA;QAC/B,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,UAAU,CAAA;QAClD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;IAClF,CAAC,CAAC,CAAA;IAEF,6EAA6E;IAC7E,4EAA4E;IAC5E,2CAA2C;IAC3C,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IAE5C,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAErC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;YAC/D,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC3C,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,WAAW,EAAE,QAAQ,CAAC,WAAW;aAClC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;QACpB,CAAC;QAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,8BAA8B,GAAG,QAAQ,CAAC,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC,cAAc,GAAG,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;AAClM,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Structured, bounded view over OpenCLI's large adapter catalog. */
|
|
2
|
+
export interface OpencliCatalogItem {
|
|
3
|
+
command: string;
|
|
4
|
+
site: string;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
access: string;
|
|
8
|
+
strategy: string;
|
|
9
|
+
args: unknown[];
|
|
10
|
+
example?: string;
|
|
11
|
+
domain?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface OpencliCatalogFilter {
|
|
14
|
+
query?: string;
|
|
15
|
+
site?: string;
|
|
16
|
+
access?: string;
|
|
17
|
+
strategy?: string;
|
|
18
|
+
limit?: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function parseOpencliCatalog(stdout: string): OpencliCatalogItem[];
|
|
21
|
+
export declare function filterOpencliCatalog(catalog: readonly OpencliCatalogItem[], filter?: OpencliCatalogFilter): OpencliCatalogItem[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Structured, bounded view over OpenCLI's large adapter catalog. */
|
|
2
|
+
function stringField(value) {
|
|
3
|
+
return typeof value === 'string' ? value.slice(0, 2_000) : '';
|
|
4
|
+
}
|
|
5
|
+
export function parseOpencliCatalog(stdout) {
|
|
6
|
+
let parsed;
|
|
7
|
+
try {
|
|
8
|
+
parsed = JSON.parse(stdout);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
throw new Error('OpenCLI catalog did not return valid JSON');
|
|
12
|
+
}
|
|
13
|
+
if (!Array.isArray(parsed))
|
|
14
|
+
throw new Error('OpenCLI catalog JSON must be an array');
|
|
15
|
+
return parsed.flatMap((value) => {
|
|
16
|
+
if (!value || typeof value !== 'object')
|
|
17
|
+
return [];
|
|
18
|
+
const row = value;
|
|
19
|
+
const command = stringField(row.command);
|
|
20
|
+
if (!command)
|
|
21
|
+
return [];
|
|
22
|
+
return [{
|
|
23
|
+
command,
|
|
24
|
+
site: stringField(row.site),
|
|
25
|
+
name: stringField(row.name),
|
|
26
|
+
description: stringField(row.description),
|
|
27
|
+
access: stringField(row.access),
|
|
28
|
+
strategy: stringField(row.strategy),
|
|
29
|
+
args: Array.isArray(row.args) ? row.args.slice(0, 30) : [],
|
|
30
|
+
...stringField(row.example) ? { example: stringField(row.example) } : {},
|
|
31
|
+
...stringField(row.domain) ? { domain: stringField(row.domain) } : {},
|
|
32
|
+
}];
|
|
33
|
+
}).slice(0, 10_000);
|
|
34
|
+
}
|
|
35
|
+
export function filterOpencliCatalog(catalog, filter = {}) {
|
|
36
|
+
const query = filter.query?.trim().toLowerCase();
|
|
37
|
+
const site = filter.site?.trim().toLowerCase();
|
|
38
|
+
const access = filter.access?.trim().toLowerCase();
|
|
39
|
+
const strategy = filter.strategy?.trim().toLowerCase();
|
|
40
|
+
const limit = Math.min(Math.max(filter.limit ?? 25, 1), 100);
|
|
41
|
+
return catalog
|
|
42
|
+
.filter(item => !site || item.site.toLowerCase() === site)
|
|
43
|
+
.filter(item => !access || item.access.toLowerCase() === access)
|
|
44
|
+
.filter(item => !strategy || item.strategy.toLowerCase() === strategy)
|
|
45
|
+
.filter(item => !query || [item.command, item.site, item.name, item.description].some(value => value.toLowerCase().includes(query)))
|
|
46
|
+
.sort((a, b) => a.command.localeCompare(b.command))
|
|
47
|
+
.slice(0, limit);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=opencli-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencli-catalog.js","sourceRoot":"","sources":["../src/opencli-catalog.ts"],"names":[],"mappings":"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"}
|
package/lib/scripts.js
CHANGED
|
@@ -4,57 +4,57 @@
|
|
|
4
4
|
* @module dsh-browser/scripts
|
|
5
5
|
*/
|
|
6
6
|
import crypto from 'node:crypto';
|
|
7
|
-
const header = (name, description) => `// ==UserScript==
|
|
8
|
-
// @name ${name}
|
|
9
|
-
// @description ${description}
|
|
10
|
-
// @match *://*/*
|
|
11
|
-
// @grant none
|
|
7
|
+
const header = (name, description) => `// ==UserScript==
|
|
8
|
+
// @name ${name}
|
|
9
|
+
// @description ${description}
|
|
10
|
+
// @match *://*/*
|
|
11
|
+
// @grant none
|
|
12
12
|
// ==/UserScript==`;
|
|
13
13
|
export const BUILTIN_SCRIPTS = [
|
|
14
14
|
{
|
|
15
15
|
id: 'article-clean',
|
|
16
16
|
name: 'Article Clean Reader',
|
|
17
17
|
description: 'Extract title, canonical URL, headings, and readable article text.',
|
|
18
|
-
source: `${header('Article Clean Reader', 'Extract readable article content without mutating the page.')}
|
|
19
|
-
const root = document.querySelector('article, main, [role="main"]') || document.body
|
|
20
|
-
return {
|
|
21
|
-
title: document.title,
|
|
22
|
-
canonicalUrl: document.querySelector('link[rel="canonical"]')?.href || location.href,
|
|
23
|
-
headings: [...root.querySelectorAll('h1,h2,h3')].slice(0, 100).map(el => (el.textContent || '').trim()).filter(Boolean),
|
|
24
|
-
text: (root.innerText || root.textContent || '').trim().slice(0, 50000),
|
|
18
|
+
source: `${header('Article Clean Reader', 'Extract readable article content without mutating the page.')}
|
|
19
|
+
const root = document.querySelector('article, main, [role="main"]') || document.body
|
|
20
|
+
return {
|
|
21
|
+
title: document.title,
|
|
22
|
+
canonicalUrl: document.querySelector('link[rel="canonical"]')?.href || location.href,
|
|
23
|
+
headings: [...root.querySelectorAll('h1,h2,h3')].slice(0, 100).map(el => (el.textContent || '').trim()).filter(Boolean),
|
|
24
|
+
text: (root.innerText || root.textContent || '').trim().slice(0, 50000),
|
|
25
25
|
}`,
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
id: 'links',
|
|
29
29
|
name: 'Link Inventory',
|
|
30
30
|
description: 'Extract up to 200 visible links with absolute URLs.',
|
|
31
|
-
source: `${header('Link Inventory', 'Extract visible links without clicking them.')}
|
|
32
|
-
return [...document.querySelectorAll('a[href]')].slice(0, 200).map(a => ({
|
|
33
|
-
text: (a.textContent || '').trim().slice(0, 500),
|
|
34
|
-
url: a.href,
|
|
31
|
+
source: `${header('Link Inventory', 'Extract visible links without clicking them.')}
|
|
32
|
+
return [...document.querySelectorAll('a[href]')].slice(0, 200).map(a => ({
|
|
33
|
+
text: (a.textContent || '').trim().slice(0, 500),
|
|
34
|
+
url: a.href,
|
|
35
35
|
})).filter(item => item.url)`,
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
id: 'jsonld',
|
|
39
39
|
name: 'JSON-LD Extractor',
|
|
40
40
|
description: 'Read structured JSON-LD blocks from the page.',
|
|
41
|
-
source: `${header('JSON-LD Extractor', 'Extract JSON-LD structured data.')}
|
|
42
|
-
return [...document.querySelectorAll('script[type="application/ld+json"]')].slice(0, 20).map(node => {
|
|
43
|
-
try { return JSON.parse(node.textContent || 'null') } catch { return { invalid: true, text: (node.textContent || '').slice(0, 2000) } }
|
|
41
|
+
source: `${header('JSON-LD Extractor', 'Extract JSON-LD structured data.')}
|
|
42
|
+
return [...document.querySelectorAll('script[type="application/ld+json"]')].slice(0, 20).map(node => {
|
|
43
|
+
try { return JSON.parse(node.textContent || 'null') } catch { return { invalid: true, text: (node.textContent || '').slice(0, 2000) } }
|
|
44
44
|
})`,
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
id: 'forms',
|
|
48
48
|
name: 'Form Structure',
|
|
49
49
|
description: 'Describe forms and controls without returning current values.',
|
|
50
|
-
source: `${header('Form Structure', 'Describe form controls without exposing entered values.')}
|
|
51
|
-
return [...document.forms].slice(0, 30).map((form, formIndex) => ({
|
|
52
|
-
form: formIndex,
|
|
53
|
-
action: form.action,
|
|
54
|
-
method: form.method,
|
|
55
|
-
controls: [...form.elements].slice(0, 100).map(el => ({
|
|
56
|
-
tag: el.tagName.toLowerCase(), type: el.type || '', name: el.name || '', id: el.id || '', required: !!el.required,
|
|
57
|
-
})),
|
|
50
|
+
source: `${header('Form Structure', 'Describe form controls without exposing entered values.')}
|
|
51
|
+
return [...document.forms].slice(0, 30).map((form, formIndex) => ({
|
|
52
|
+
form: formIndex,
|
|
53
|
+
action: form.action,
|
|
54
|
+
method: form.method,
|
|
55
|
+
controls: [...form.elements].slice(0, 100).map(el => ({
|
|
56
|
+
tag: el.tagName.toLowerCase(), type: el.type || '', name: el.name || '', id: el.id || '', required: !!el.required,
|
|
57
|
+
})),
|
|
58
58
|
}))`,
|
|
59
59
|
},
|
|
60
60
|
];
|
package/lib/tools.js
CHANGED
|
@@ -234,6 +234,8 @@ export function registerTools(ctx, config, service) {
|
|
|
234
234
|
properties: {
|
|
235
235
|
enabled: { type: 'boolean', required: true },
|
|
236
236
|
channel: { type: 'string', required: true },
|
|
237
|
+
browserRuntime: { type: 'string', required: true, enum: ['playwright', 'patchright'] },
|
|
238
|
+
runtimeWarnings: { type: 'array', required: true, items: { type: 'string' } },
|
|
237
239
|
headless: { type: 'boolean', required: true },
|
|
238
240
|
opencliEnabled: { type: 'boolean', required: true },
|
|
239
241
|
automationMode: { type: 'string', required: true, enum: ['read-only', 'standard', 'autonomous', 'unrestricted'] },
|
|
@@ -243,6 +245,8 @@ export function registerTools(ctx, config, service) {
|
|
|
243
245
|
externalUserscriptPolicy: { type: 'string', required: true, enum: ['deny', 'ask', 'allow'] },
|
|
244
246
|
opencliRunPolicy: { type: 'string', required: true, enum: ['deny', 'ask', 'allow'] },
|
|
245
247
|
chromiumInstalled: { type: 'boolean', required: true },
|
|
248
|
+
usagePolicy: { type: 'object', required: true, additionalProperties: true, properties: {} },
|
|
249
|
+
usageGovernor: { type: 'object', required: true, additionalProperties: true, properties: {} },
|
|
246
250
|
activeUrl: { type: 'string' },
|
|
247
251
|
activeAuthProfile: { type: 'string' },
|
|
248
252
|
authProfiles: { type: 'array', required: true, items: { type: 'object', additionalProperties: false, properties: { id: { type: 'string', required: true }, allowedDomains: { type: 'array', required: true, items: { type: 'string' } }, persistState: { type: 'boolean', required: true } } } },
|
|
@@ -256,17 +260,20 @@ export function registerTools(ctx, config, service) {
|
|
|
256
260
|
const v = value;
|
|
257
261
|
return [{ type: 'text', text: [
|
|
258
262
|
'browser: ' + (v.enabled ? 'enabled' : 'disabled'),
|
|
259
|
-
'
|
|
263
|
+
'runtime: ' + v.browserRuntime + ' / ' + v.channel + (v.headless ? ' (headless)' : ' (headed)'),
|
|
260
264
|
'automation mode: ' + v.automationMode + ' (' + v.exposedTools.length + ' tools exposed)',
|
|
261
265
|
'direct interactions: ' + v.directInteractionPolicy,
|
|
262
266
|
'mutating recipes: ' + v.mutatingRecipePolicy,
|
|
263
267
|
'external userscripts: ' + v.externalUserscriptPolicy,
|
|
264
268
|
'general opencli: ' + v.opencliRunPolicy,
|
|
265
269
|
'chromium installed: ' + v.chromiumInstalled,
|
|
270
|
+
`usage buffer: concurrency=${v.usagePolicy.maxConcurrency}, burst=${v.usagePolicy.burst}/${v.usagePolicy.minDelayMs}ms, crawl=${v.usagePolicy.maxPagesPerRun} pages depth ${v.usagePolicy.maxDepth}`,
|
|
271
|
+
`usage activity: runs=${v.usageGovernor.totalRuns}, queued=${v.usageGovernor.queued}, waited=${v.usageGovernor.totalWaitMs}ms, backoffs=${v.usageGovernor.backoffEvents}`,
|
|
266
272
|
'opencli (bundled): ' + (v.opencliEnabled ? 'enabled' : 'disabled'),
|
|
267
273
|
'auth profiles: ' + (v.authProfiles.map(p => p.id + '[' + p.allowedDomains.join(',') + ']' + (p.persistState ? '(writeback)' : '')).join('; ') || '-'),
|
|
268
274
|
'rule packs: ' + (v.rulePacks.join(', ') || '-'),
|
|
269
275
|
'built-in scripts: ' + v.builtinScripts.join(', '),
|
|
276
|
+
...v.runtimeWarnings.map(warning => 'warning: ' + warning),
|
|
270
277
|
...(v.activeAuthProfile ? ['active auth profile: ' + v.activeAuthProfile] : []),
|
|
271
278
|
...(v.activeUrl ? ['active page: ' + v.activeUrl] : []),
|
|
272
279
|
].join('\n') }];
|
|
@@ -471,6 +478,50 @@ export function registerTools(ctx, config, service) {
|
|
|
471
478
|
});
|
|
472
479
|
},
|
|
473
480
|
}));
|
|
481
|
+
register(defineTool({
|
|
482
|
+
name: 'browser_crawl',
|
|
483
|
+
description: 'Crawl a bounded set of HTTP(S) pages with the configured concurrency, burst, page/depth, retry, and cooldown budgets. This is read-only and remains buffered even in unrestricted/no-approval mode. Respect site terms and robots directives.',
|
|
484
|
+
parameters: {
|
|
485
|
+
startUrls: { type: 'array', required: true, items: { type: 'string' }, description: 'One to five starting URLs.' },
|
|
486
|
+
maxPages: { type: 'number', description: 'Page budget, capped by usagePolicy.maxPagesPerRun.' },
|
|
487
|
+
maxDepth: { type: 'number', description: 'Link depth, capped by usagePolicy.maxDepth.' },
|
|
488
|
+
sameOrigin: { type: 'boolean', description: 'Only follow links on starting origins. Default true.' },
|
|
489
|
+
maxCharsPerPage: { type: 'number', description: 'Readable text cap per page, 1000-50000.' },
|
|
490
|
+
},
|
|
491
|
+
output: {
|
|
492
|
+
schema: {
|
|
493
|
+
type: 'object', additionalProperties: false, properties: {
|
|
494
|
+
pages: { type: 'array', required: true, items: { type: 'object', additionalProperties: false, properties: {
|
|
495
|
+
url: { type: 'string', required: true }, title: { type: 'string', required: true }, text: { type: 'string', required: true }, depth: { type: 'number', required: true }, status: { type: 'number', required: true },
|
|
496
|
+
} } },
|
|
497
|
+
errors: { type: 'array', required: true, items: { type: 'object', additionalProperties: false, properties: {
|
|
498
|
+
url: { type: 'string', required: true }, depth: { type: 'number', required: true }, error: { type: 'string', required: true }, status: { type: 'number' },
|
|
499
|
+
} } },
|
|
500
|
+
stats: { type: 'object', required: true, additionalProperties: false, properties: {
|
|
501
|
+
pagesVisited: { type: 'number', required: true }, queued: { type: 'number', required: true }, elapsedMs: { type: 'number', required: true }, waitMs: { type: 'number', required: true }, backoffEvents: { type: 'number', required: true },
|
|
502
|
+
} },
|
|
503
|
+
warnings: { type: 'array', required: true, items: { type: 'string' } },
|
|
504
|
+
},
|
|
505
|
+
},
|
|
506
|
+
render: (_args, value) => [{ type: 'text', text: [
|
|
507
|
+
`crawl: ${value.stats.pagesVisited} visited, ${value.pages.length} pages, ${value.errors.length} errors, ${value.stats.waitMs}ms buffered`,
|
|
508
|
+
...value.warnings.map(warning => 'warning: ' + warning),
|
|
509
|
+
...value.pages.map(page => `\n[depth ${page.depth}, HTTP ${page.status}] ${page.title}\n${page.url}\n${page.text}`),
|
|
510
|
+
...value.errors.map(error => `\nERROR depth ${error.depth} ${error.url}: ${error.error}`),
|
|
511
|
+
].join('\n') }],
|
|
512
|
+
},
|
|
513
|
+
timeoutMs: 300_000,
|
|
514
|
+
isConcurrencySafe: () => false,
|
|
515
|
+
async execute(args, exec) {
|
|
516
|
+
return service.crawl(args.startUrls, {
|
|
517
|
+
signal: exec.signal,
|
|
518
|
+
...args.maxPages !== undefined ? { maxPages: args.maxPages } : {},
|
|
519
|
+
...args.maxDepth !== undefined ? { maxDepth: args.maxDepth } : {},
|
|
520
|
+
...args.sameOrigin !== undefined ? { sameOrigin: args.sameOrigin } : {},
|
|
521
|
+
...args.maxCharsPerPage !== undefined ? { maxCharsPerPage: args.maxCharsPerPage } : {},
|
|
522
|
+
});
|
|
523
|
+
},
|
|
524
|
+
}));
|
|
474
525
|
register(defineTool({
|
|
475
526
|
name: 'browser_opencli_status',
|
|
476
527
|
description: 'Run bundled OpenCLI doctor and return the real daemon, extension, profile, and Browser Bridge connectivity status.',
|
|
@@ -489,6 +540,29 @@ export function registerTools(ctx, config, service) {
|
|
|
489
540
|
return service.opencliDoctor(exec.signal);
|
|
490
541
|
},
|
|
491
542
|
}));
|
|
543
|
+
register(defineTool({
|
|
544
|
+
name: 'browser_opencli_catalog',
|
|
545
|
+
description: 'Discover bundled OpenCLI adapters through a filtered, capped catalog. Use before browser_opencli_run to find exact command names, access class, strategy, and arguments without exposing the full catalog.',
|
|
546
|
+
parameters: {
|
|
547
|
+
query: { type: 'string' },
|
|
548
|
+
site: { type: 'string' },
|
|
549
|
+
access: { type: 'string', enum: ['read', 'write'] },
|
|
550
|
+
strategy: { type: 'string' },
|
|
551
|
+
limit: { type: 'number' },
|
|
552
|
+
},
|
|
553
|
+
output: {
|
|
554
|
+
schema: { type: 'array', items: { type: 'object', additionalProperties: false, properties: {
|
|
555
|
+
command: { type: 'string', required: true }, site: { type: 'string', required: true }, name: { type: 'string', required: true }, description: { type: 'string', required: true }, access: { type: 'string', required: true }, strategy: { type: 'string', required: true }, argsJson: { type: 'string', required: true }, example: { type: 'string' }, domain: { type: 'string' },
|
|
556
|
+
} } },
|
|
557
|
+
render: (_args, value) => [{ type: 'text', text: value.map(item => `${item.command} [${item.access}/${item.strategy}]\n${item.description}\nargs=${item.argsJson}${item.example ? '\nexample: ' + item.example : ''}`).join('\n\n') }],
|
|
558
|
+
},
|
|
559
|
+
timeoutMs: 75_000,
|
|
560
|
+
isConcurrencySafe: () => true,
|
|
561
|
+
async execute(args, exec) {
|
|
562
|
+
const items = await service.opencliCatalog(args, exec.signal);
|
|
563
|
+
return items.map(({ args: itemArgs, ...item }) => ({ ...item, argsJson: JSON.stringify(itemArgs) }));
|
|
564
|
+
},
|
|
565
|
+
}));
|
|
492
566
|
register(defineTool({
|
|
493
567
|
name: 'browser_opencli_run',
|
|
494
568
|
description: 'Run any bundled OpenCLI adapter or browser-session command with verbatim argv. Approval is skipped only in unrestricted because commands may reuse logged-in Chrome state or perform writes. Prefer existing read-only search tools when available.',
|