@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.
Files changed (53) hide show
  1. package/README.md +306 -245
  2. package/cordis.patch.yml +26 -16
  3. package/lib/approval-policy.js +15 -0
  4. package/lib/approval-policy.js.map +1 -1
  5. package/lib/browser-service.d.ts +68 -25
  6. package/lib/browser-service.js +222 -62
  7. package/lib/browser-service.js.map +1 -1
  8. package/lib/client/SettingsCard.d.ts +2 -0
  9. package/lib/client/SettingsCard.js +21 -0
  10. package/lib/client/SettingsCard.js.map +1 -0
  11. package/lib/client/context-types.d.ts +8 -0
  12. package/lib/client/context-types.js +2 -0
  13. package/lib/client/context-types.js.map +1 -0
  14. package/lib/client/form.d.ts +62 -0
  15. package/lib/client/form.js +198 -0
  16. package/lib/client/form.js.map +1 -0
  17. package/lib/client/index.d.ts +16 -0
  18. package/lib/client/index.js +18 -0
  19. package/lib/client/index.js.map +1 -0
  20. package/lib/client/locales.d.ts +58 -0
  21. package/lib/client/locales.js +55 -0
  22. package/lib/client/locales.js.map +1 -0
  23. package/lib/client/settings-namespace.d.ts +2 -0
  24. package/lib/client/settings-namespace.js +3 -0
  25. package/lib/client/settings-namespace.js.map +1 -0
  26. package/lib/client/styles.d.ts +37 -0
  27. package/lib/client/styles.js +25 -0
  28. package/lib/client/styles.js.map +1 -0
  29. package/lib/client.js +753 -0
  30. package/lib/client.js.map +1 -0
  31. package/lib/config.d.ts +10 -0
  32. package/lib/config.js +22 -0
  33. package/lib/config.js.map +1 -1
  34. package/lib/deps.d.ts +7 -1
  35. package/lib/deps.js +22 -6
  36. package/lib/deps.js.map +1 -1
  37. package/lib/freedom.d.ts +1 -1
  38. package/lib/freedom.js +4 -0
  39. package/lib/freedom.js.map +1 -1
  40. package/lib/index.js +13 -1
  41. package/lib/index.js.map +1 -1
  42. package/lib/opencli-catalog.d.ts +21 -0
  43. package/lib/opencli-catalog.js +49 -0
  44. package/lib/opencli-catalog.js.map +1 -0
  45. package/lib/scripts.js +27 -27
  46. package/lib/tools.js +75 -1
  47. package/lib/tools.js.map +1 -1
  48. package/lib/usage-policy.d.ts +49 -0
  49. package/lib/usage-policy.js +171 -0
  50. package/lib/usage-policy.js.map +1 -0
  51. package/package.json +133 -78
  52. package/scripts/check-client-bundle.mjs +15 -0
  53. 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":"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"}
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;AACzE,OAAO,EAAE,kBAAkB,EAA2C,MAAM,mBAAmB,CAAA;AAE/F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,YAAY,CAAU,CAAA;AAGrE,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,OAAO,GAAG,KAAK,IAAI,YAAY,CAAA;IACrC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAyB,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,OAAyB,CAAA;AAClC,CAAC;AAiCD,MAAM,CAAC,MAAM,MAAM,GAAc,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC5B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KACzC,CAAC,CAAC;IACH,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;YACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;KAChB,CAAC,CAAC;IACH,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACjC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KACtC,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACpC,CAAc,CAAA;AAoBf,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAA;IACpE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAA;IAC9D,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,UAAU;QACrC,cAAc,EAAE,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC;QAC5D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;QAC7C,cAAc,EAAE,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC;QAC5D,WAAW,EAAE,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC;QACnD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;QACxC,WAAW;QACX,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;QAChC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;QACvC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;QACjC,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE;QACrF,GAAG,MAAM,CAAC,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE;QAC/H,GAAG,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE;KACxH,CAAA;AACH,CAAC"}
package/lib/deps.d.ts CHANGED
@@ -21,10 +21,16 @@ export interface CliResult {
21
21
  stderr: string;
22
22
  timedOut: boolean;
23
23
  }
24
- /** Resolve the playwright module (plugin-local, then global reuse). */
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
- let cachedPlaywright;
98
- /** Resolve the playwright module (plugin-local, then global reuse). */
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
- if (cachedPlaywright)
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';
@@ -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;CACb,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;CACzB,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"}
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 resolved = resolveConfig(config);
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":"AAAA,qEAAqE;AAsBrE,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAAC,CAAC;IAC1G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IACpF,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAwB,EAAE;QACpD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAA;QAClD,MAAM,GAAG,GAAG,KAAgC,CAAA;QAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAA;QACvB,OAAO,CAAC;gBACN,OAAO;gBACP,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3B,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3B,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;gBACzC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC/B,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACnC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC1D,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBACxE,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;aACtE,CAAC,CAAA;IACJ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAsC,EAAE,SAA+B,EAAE;IAC5G,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC5D,OAAO,OAAO;SACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;SACzD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;SAC/D,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;SACrE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;SACnI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SAClD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACpB,CAAC"}
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
- 'channel: ' + v.channel + (v.headless ? ' (headless)' : ' (headed)'),
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.',