@anweat/dsh-browser 0.1.6 → 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 (55) hide show
  1. package/README.md +306 -229
  2. package/cordis.patch.yml +26 -15
  3. package/lib/approval-policy.d.ts +2 -1
  4. package/lib/approval-policy.js +46 -1
  5. package/lib/approval-policy.js.map +1 -1
  6. package/lib/browser-service.d.ts +69 -19
  7. package/lib/browser-service.js +231 -64
  8. package/lib/browser-service.js.map +1 -1
  9. package/lib/client/SettingsCard.d.ts +2 -0
  10. package/lib/client/SettingsCard.js +21 -0
  11. package/lib/client/SettingsCard.js.map +1 -0
  12. package/lib/client/context-types.d.ts +8 -0
  13. package/lib/client/context-types.js +2 -0
  14. package/lib/client/context-types.js.map +1 -0
  15. package/lib/client/form.d.ts +62 -0
  16. package/lib/client/form.js +198 -0
  17. package/lib/client/form.js.map +1 -0
  18. package/lib/client/index.d.ts +16 -0
  19. package/lib/client/index.js +18 -0
  20. package/lib/client/index.js.map +1 -0
  21. package/lib/client/locales.d.ts +58 -0
  22. package/lib/client/locales.js +55 -0
  23. package/lib/client/locales.js.map +1 -0
  24. package/lib/client/settings-namespace.d.ts +2 -0
  25. package/lib/client/settings-namespace.js +3 -0
  26. package/lib/client/settings-namespace.js.map +1 -0
  27. package/lib/client/styles.d.ts +37 -0
  28. package/lib/client/styles.js +25 -0
  29. package/lib/client/styles.js.map +1 -0
  30. package/lib/client.js +753 -0
  31. package/lib/client.js.map +1 -0
  32. package/lib/config.d.ts +14 -0
  33. package/lib/config.js +25 -0
  34. package/lib/config.js.map +1 -1
  35. package/lib/deps.d.ts +7 -1
  36. package/lib/deps.js +22 -6
  37. package/lib/deps.js.map +1 -1
  38. package/lib/freedom.d.ts +8 -0
  39. package/lib/freedom.js +52 -0
  40. package/lib/freedom.js.map +1 -0
  41. package/lib/index.d.ts +2 -0
  42. package/lib/index.js +19 -6
  43. package/lib/index.js.map +1 -1
  44. package/lib/opencli-catalog.d.ts +21 -0
  45. package/lib/opencli-catalog.js +49 -0
  46. package/lib/opencli-catalog.js.map +1 -0
  47. package/lib/scripts.js +27 -27
  48. package/lib/tools.js +111 -22
  49. package/lib/tools.js.map +1 -1
  50. package/lib/usage-policy.d.ts +49 -0
  51. package/lib/usage-policy.js +171 -0
  52. package/lib/usage-policy.js.map +1 -0
  53. package/package.json +133 -78
  54. package/scripts/check-client-bundle.mjs +15 -0
  55. 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
@@ -5,11 +5,18 @@
5
5
  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
+ 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;
8
13
  export interface Config {
9
14
  /** Whether the browser service is active. */
10
15
  enabled: boolean;
11
16
  /** Browser channel: 'chromium' (bundled, self-contained) or 'msedge'. */
12
17
  channel: string;
18
+ /** Browser driver/runtime implementation. Patchright is Chromium-only. */
19
+ browserRuntime?: BrowserRuntime;
13
20
  headless: boolean;
14
21
  /** Path to a Playwright storageState JSON (persisted login state). */
15
22
  storageStatePath?: string;
@@ -23,6 +30,10 @@ export interface Config {
23
30
  executablePath?: string;
24
31
  /** Whether the bundled OpenCLI is enabled. */
25
32
  opencliEnabled: boolean;
33
+ /** Model-facing tool exposure and approval level. */
34
+ automationMode: AutomationMode;
35
+ /** Approval-independent traffic buffering and bounded crawl budgets. */
36
+ usagePolicy?: UsagePolicyInput;
26
37
  /** Lazily run `playwright install chromium` when the browser is missing. */
27
38
  autoInstall: boolean;
28
39
  /** Directory for browser screenshots; defaults to $DSH_HOME/data/browser/snapshots. */
@@ -33,6 +44,7 @@ export declare const Config: z<Config>;
33
44
  export interface ResolvedConfig {
34
45
  enabled: boolean;
35
46
  channel: string;
47
+ browserRuntime: BrowserRuntime;
36
48
  headless: boolean;
37
49
  storageStatePath?: string;
38
50
  authProfiles: Record<string, AuthProfileConfig>;
@@ -40,6 +52,8 @@ export interface ResolvedConfig {
40
52
  rulePacks: Record<string, RulePackConfig>;
41
53
  executablePath?: string;
42
54
  opencliEnabled: boolean;
55
+ automationMode: AutomationMode;
56
+ usagePolicy: UsagePolicy;
43
57
  autoInstall: boolean;
44
58
  snapshotDir: string;
45
59
  verbose: boolean;
package/lib/config.js CHANGED
@@ -5,9 +5,20 @@
5
5
  import path from 'node:path';
6
6
  import os from 'node:os';
7
7
  import z from '@deepseek-ai/schemastery';
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
+ }
8
18
  export const Config = z.object({
9
19
  enabled: z.boolean().default(true),
10
20
  channel: z.string().default('chromium'),
21
+ browserRuntime: z.string().default('playwright'),
11
22
  headless: z.boolean().default(true),
12
23
  storageStatePath: z.string(),
13
24
  authProfiles: z.dict(z.object({
@@ -32,6 +43,17 @@ export const Config = z.object({
32
43
  })),
33
44
  executablePath: z.string(),
34
45
  opencliEnabled: z.boolean().default(true),
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
+ }),
35
57
  autoInstall: z.boolean().default(false),
36
58
  snapshotDir: z.string(),
37
59
  verbose: z.boolean().default(false),
@@ -45,8 +67,11 @@ export function resolveConfig(config) {
45
67
  return {
46
68
  enabled: config.enabled ?? true,
47
69
  channel: config.channel ?? 'chromium',
70
+ browserRuntime: resolveBrowserRuntime(config.browserRuntime),
48
71
  headless: config.headless ?? true,
49
72
  opencliEnabled: config.opencliEnabled ?? true,
73
+ automationMode: resolveAutomationMode(config.automationMode),
74
+ usagePolicy: resolveUsagePolicy(config.usagePolicy),
50
75
  autoInstall: config.autoInstall ?? false,
51
76
  snapshotDir,
52
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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"}
@@ -0,0 +1,8 @@
1
+ /** Public automation-freedom contract and tool exposure matrix. */
2
+ export declare const AUTOMATION_MODES: readonly ["read-only", "standard", "autonomous", "unrestricted"];
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_catalog", "browser_opencli_run", "browser_crawl"];
5
+ export type BrowserToolName = typeof ALL_BROWSER_TOOL_NAMES[number];
6
+ export declare function resolveAutomationMode(value: unknown): AutomationMode;
7
+ export declare function isBrowserToolExposed(name: string, mode: AutomationMode): name is BrowserToolName;
8
+ export declare function browserToolsForMode(mode: AutomationMode): BrowserToolName[];
package/lib/freedom.js ADDED
@@ -0,0 +1,52 @@
1
+ /** Public automation-freedom contract and tool exposure matrix. */
2
+ export const AUTOMATION_MODES = ['read-only', 'standard', 'autonomous', 'unrestricted'];
3
+ export const ALL_BROWSER_TOOL_NAMES = [
4
+ 'browser_open',
5
+ 'browser_click',
6
+ 'browser_type',
7
+ 'browser_scroll',
8
+ 'browser_read',
9
+ 'browser_screenshot',
10
+ 'browser_close',
11
+ 'browser_status',
12
+ 'browser_install',
13
+ 'browser_script_catalog',
14
+ 'browser_script_validate',
15
+ 'browser_script_run_builtin',
16
+ 'browser_userscript_run',
17
+ 'browser_recipe_run',
18
+ 'browser_opencli_status',
19
+ 'browser_opencli_catalog',
20
+ 'browser_opencli_run',
21
+ 'browser_crawl',
22
+ ];
23
+ const READ_ONLY_TOOL_NAMES = new Set([
24
+ 'browser_open',
25
+ 'browser_read',
26
+ 'browser_screenshot',
27
+ 'browser_close',
28
+ 'browser_status',
29
+ 'browser_script_catalog',
30
+ 'browser_script_validate',
31
+ 'browser_script_run_builtin',
32
+ 'browser_recipe_run',
33
+ 'browser_opencli_status',
34
+ 'browser_opencli_catalog',
35
+ 'browser_crawl',
36
+ ]);
37
+ export function resolveAutomationMode(value) {
38
+ const mode = value ?? 'standard';
39
+ if (typeof mode !== 'string' || !AUTOMATION_MODES.includes(mode)) {
40
+ throw new Error('automationMode must be one of: ' + AUTOMATION_MODES.join(', '));
41
+ }
42
+ return mode;
43
+ }
44
+ export function isBrowserToolExposed(name, mode) {
45
+ if (!ALL_BROWSER_TOOL_NAMES.includes(name))
46
+ return false;
47
+ return mode !== 'read-only' || READ_ONLY_TOOL_NAMES.has(name);
48
+ }
49
+ export function browserToolsForMode(mode) {
50
+ return ALL_BROWSER_TOOL_NAMES.filter(name => isBrowserToolExposed(name, mode));
51
+ }
52
+ //# sourceMappingURL=freedom.js.map
@@ -0,0 +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,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.d.ts CHANGED
@@ -18,4 +18,6 @@ export type { RulePackConfig, RuleStep, ResolvedRulePack } from './rule-packs.ts
18
18
  export type { BrowserRecipeStep, RecipeStepResult } from './automation.ts';
19
19
  export type { UserscriptMetadata, UserscriptValidation, BuiltinScript } from './scripts.ts';
20
20
  export { BUILTIN_SCRIPTS, validateUserscript } from './scripts.ts';
21
+ export type { AutomationMode, BrowserToolName } from './freedom.ts';
22
+ export { AUTOMATION_MODES, ALL_BROWSER_TOOL_NAMES, browserToolsForMode } from './freedom.ts';
21
23
  export declare function apply(ctx: Context, config: Config): void;
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";
@@ -16,18 +17,29 @@ export const name = 'dsh-browser';
16
17
  export const inject = ['tools'];
17
18
  export { Config };
18
19
  export { BUILTIN_SCRIPTS, validateUserscript } from "./scripts.js";
20
+ export { AUTOMATION_MODES, ALL_BROWSER_TOOL_NAMES, browserToolsForMode } from "./freedom.js";
19
21
  export function apply(ctx, config) {
20
- 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());
21
34
  fs.mkdirSync(resolved.snapshotDir, { recursive: true });
22
35
  const service = new BrowserService(resolved);
23
- // Arbitrary userscripts, general OpenCLI commands, and mutating multi-step
24
- // recipes must pass through the harness' native one-shot approval flow. The
25
- // policy fails closed when no approval service or calling agent is present.
36
+ // Apply the configured exposure/approval mode before every browser tool.
37
+ // Validation remains active even when unrestricted mode skips approvals.
26
38
  ctx.on('tools/pre-execute', async (exec, next) => {
27
39
  const downstream = await next();
28
40
  if (downstream.kind !== 'allow')
29
41
  return downstream;
30
- return browserPolicyDecision(exec.name, exec.arguments);
42
+ return browserPolicyDecision(exec.name, exec.arguments, resolved.automationMode);
31
43
  });
32
44
  // Provide the `browser` service so consumers (web-search-pro) can inject it.
33
45
  // ctx.provide is scoped to this plugin's fiber; the browser instance itself
@@ -44,11 +56,12 @@ export function apply(ctx, config) {
44
56
  channel: resolved.channel,
45
57
  headless: resolved.headless,
46
58
  opencliEnabled: resolved.opencliEnabled,
59
+ automationMode: resolved.automationMode,
47
60
  snapshotDir: resolved.snapshotDir,
48
61
  }) + '\n', 'utf8');
49
62
  }
50
63
  catch { /* marker is best-effort */ }
51
64
  }
52
- ctx.logger?.(name).info('dsh-browser loaded: channel=' + resolved.channel + ' headless=' + resolved.headless + ' opencli=' + resolved.opencliEnabled);
65
+ ctx.logger?.(name).info('dsh-browser loaded: channel=' + resolved.channel + ' headless=' + resolved.headless + ' opencli=' + resolved.opencliEnabled + ' automation=' + resolved.automationMode);
53
66
  }
54
67
  //# sourceMappingURL=index.js.map
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,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,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,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,CAAC,CAAA;IACzD,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,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,CAAC,CAAA;AACvJ,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
  ];