@anweat/dsh-browser 0.1.5 → 0.1.7

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.
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Bounded, auditable Playwright recipes for model-generated browser flows.
3
+ * Recipes deliberately expose named operations instead of arbitrary JavaScript.
4
+ * @module dsh-browser/automation
5
+ */
6
+ const READ_ONLY_ACTIONS = new Set(['wait', 'extract', 'assert', 'screenshot']);
7
+ function finite(value, fallback, min, max, label) {
8
+ const resolved = value ?? fallback;
9
+ if (!Number.isFinite(resolved) || resolved < min || resolved > max)
10
+ throw new Error(label + ' must be between ' + min + ' and ' + max);
11
+ return resolved;
12
+ }
13
+ function selector(value) {
14
+ if (!value || value.length > 500)
15
+ throw new Error('selector must contain 1 to 500 characters');
16
+ return value;
17
+ }
18
+ function shortText(value, label, max = 20_000) {
19
+ if (value === undefined || value.length === 0 || value.length > max)
20
+ throw new Error(label + ' must contain 1 to ' + max + ' characters');
21
+ return value;
22
+ }
23
+ export function validateRecipe(steps) {
24
+ if (steps.length < 1 || steps.length > 25)
25
+ throw new Error('recipe must contain between 1 and 25 steps');
26
+ for (const step of steps) {
27
+ switch (step.type) {
28
+ case 'wait': {
29
+ finite(step.timeoutMs, 15_000, 0, 30_000, 'wait timeoutMs');
30
+ if (step.condition === 'selector')
31
+ selector(step.value);
32
+ else if (step.condition === 'text')
33
+ shortText(step.value, 'wait text', 2_000);
34
+ else if (step.condition === 'time')
35
+ finite(step.waitMs ?? Number(step.value ?? 0), 0, 0, 10_000, 'wait waitMs');
36
+ break;
37
+ }
38
+ case 'click':
39
+ selector(step.selector);
40
+ finite(step.timeoutMs, 15_000, 1, 30_000, 'click timeoutMs');
41
+ break;
42
+ case 'fill':
43
+ case 'type':
44
+ selector(step.selector);
45
+ shortText(step.value, step.type + ' value');
46
+ finite(step.timeoutMs, 15_000, 1, 30_000, step.type + ' timeoutMs');
47
+ break;
48
+ case 'press':
49
+ shortText(step.key, 'key', 100);
50
+ if (step.selector !== undefined)
51
+ selector(step.selector);
52
+ break;
53
+ case 'select':
54
+ selector(step.selector);
55
+ shortText(step.value, 'select value', 2_000);
56
+ break;
57
+ case 'check':
58
+ case 'hover':
59
+ selector(step.selector);
60
+ break;
61
+ case 'scroll':
62
+ finite(step.deltaY, 2_000, -20_000, 20_000, 'scroll deltaY');
63
+ finite(step.waitMs, 400, 0, 5_000, 'scroll waitMs');
64
+ break;
65
+ case 'extract':
66
+ if (step.selector !== undefined)
67
+ selector(step.selector);
68
+ finite(step.limit, 100, 1, 500, 'extract limit');
69
+ if (step.mode === 'attribute')
70
+ shortText(step.attribute, 'attribute', 100);
71
+ break;
72
+ case 'assert':
73
+ if (step.selector === undefined && step.text === undefined)
74
+ throw new Error('assert requires selector or text');
75
+ if (step.selector !== undefined)
76
+ selector(step.selector);
77
+ if (step.text !== undefined)
78
+ shortText(step.text, 'assert text', 2_000);
79
+ finite(step.timeoutMs, 15_000, 1, 30_000, 'assert timeoutMs');
80
+ break;
81
+ case 'screenshot':
82
+ break;
83
+ default:
84
+ throw new Error('unsupported recipe step');
85
+ }
86
+ }
87
+ }
88
+ export function recipeNeedsApproval(steps) {
89
+ return steps.some(step => !READ_ONLY_ACTIONS.has(step.type));
90
+ }
91
+ function cap(value, max = 50_000) {
92
+ return value.length <= max ? value : value.slice(0, max) + '\n…(truncated)';
93
+ }
94
+ export async function runRecipe(page, steps, captureScreenshot, signal) {
95
+ validateRecipe(steps);
96
+ const results = [];
97
+ for (let index = 0; index < steps.length; index += 1) {
98
+ signal?.throwIfAborted();
99
+ const step = steps[index];
100
+ let value;
101
+ switch (step.type) {
102
+ case 'wait': {
103
+ const timeout = finite(step.timeoutMs, 15_000, 0, 30_000, 'wait timeoutMs');
104
+ if (step.condition === 'selector')
105
+ await page.locator(selector(step.value)).first().waitFor({ state: 'visible', timeout });
106
+ else if (step.condition === 'text')
107
+ await page.getByText(shortText(step.value, 'wait text', 2_000), { exact: false }).first().waitFor({ state: 'visible', timeout });
108
+ else if (step.condition === 'load')
109
+ await page.waitForLoadState('networkidle', { timeout });
110
+ else
111
+ await page.waitForTimeout(finite(step.waitMs ?? Number(step.value ?? 0), 0, 0, 10_000, 'wait waitMs'));
112
+ break;
113
+ }
114
+ case 'click':
115
+ await page.locator(selector(step.selector)).first().click({ timeout: step.timeoutMs ?? 15_000 });
116
+ break;
117
+ case 'fill':
118
+ await page.locator(selector(step.selector)).first().fill(step.value, { timeout: step.timeoutMs ?? 15_000 });
119
+ break;
120
+ case 'type':
121
+ await page.locator(selector(step.selector)).first().pressSequentially(step.value, { timeout: step.timeoutMs ?? 15_000 });
122
+ break;
123
+ case 'press':
124
+ if (step.selector)
125
+ await page.locator(selector(step.selector)).first().press(step.key);
126
+ else
127
+ await page.keyboard.press(step.key);
128
+ break;
129
+ case 'select':
130
+ await page.locator(selector(step.selector)).first().selectOption(step.value);
131
+ break;
132
+ case 'check': {
133
+ const target = page.locator(selector(step.selector)).first();
134
+ if (step.checked === false)
135
+ await target.uncheck();
136
+ else
137
+ await target.check();
138
+ break;
139
+ }
140
+ case 'hover':
141
+ await page.locator(selector(step.selector)).first().hover();
142
+ break;
143
+ case 'scroll':
144
+ await page.mouse.wheel(0, step.deltaY ?? 2_000);
145
+ await page.waitForTimeout(step.waitMs ?? 400);
146
+ break;
147
+ case 'extract': {
148
+ const target = page.locator(step.selector ?? 'body').first();
149
+ const mode = step.mode ?? 'text';
150
+ if (mode === 'text')
151
+ value = cap(await target.innerText());
152
+ else if (mode === 'html')
153
+ value = cap(await target.innerHTML());
154
+ else if (mode === 'attribute')
155
+ value = String(await target.getAttribute(shortText(step.attribute, 'attribute', 100)) ?? '');
156
+ else {
157
+ const rows = await target.locator('a[href]').evaluateAll((anchors, limit) => anchors.slice(0, limit).map(anchor => ({
158
+ text: String(anchor.textContent ?? '').trim(),
159
+ url: String(anchor.href ?? ''),
160
+ })), step.limit ?? 100);
161
+ value = cap(JSON.stringify(rows));
162
+ }
163
+ break;
164
+ }
165
+ case 'assert': {
166
+ const timeout = step.timeoutMs ?? 15_000;
167
+ if (step.selector)
168
+ await page.locator(selector(step.selector)).first().waitFor({ state: 'visible', timeout });
169
+ if (step.text)
170
+ await page.getByText(step.text, { exact: false }).first().waitFor({ state: 'visible', timeout });
171
+ break;
172
+ }
173
+ case 'screenshot':
174
+ value = await captureScreenshot();
175
+ break;
176
+ }
177
+ results.push({ step: index + 1, action: step.type, ok: true, ...value !== undefined ? { value } : {} });
178
+ }
179
+ return results;
180
+ }
181
+ //# sourceMappingURL=automation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automation.js","sourceRoot":"","sources":["../src/automation.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,9 @@
20
20
  */
21
21
  import { type CliResult } from './deps.ts';
22
22
  import type { ResolvedConfig } from './config.ts';
23
+ import { type BrowserRecipeStep, type RecipeStepResult } from './automation.ts';
24
+ import { type UserscriptValidation } from './scripts.ts';
25
+ import { type AutomationMode } from './freedom.ts';
23
26
  export interface RenderRule {
24
27
  hostname: string;
25
28
  contentSelectors: string[];
@@ -56,6 +59,17 @@ export interface InteractiveState {
56
59
  text: string;
57
60
  screenshotPath?: string;
58
61
  }
62
+ export interface RecipeRunResult extends InteractiveState {
63
+ steps: RecipeStepResult[];
64
+ }
65
+ export interface ScriptRunResult {
66
+ url: string;
67
+ name: string;
68
+ sha256: string;
69
+ capabilities: string[];
70
+ resultJson: string;
71
+ truncated: boolean;
72
+ }
59
73
  export declare class BrowserService {
60
74
  private readonly config;
61
75
  private browser;
@@ -104,6 +118,27 @@ export declare class BrowserService {
104
118
  timeoutMs?: number;
105
119
  signal?: AbortSignal;
106
120
  }): Promise<CliResult>;
121
+ opencliDoctor(signal?: AbortSignal): Promise<CliResult>;
122
+ scriptCatalog(): {
123
+ id: string;
124
+ name: string;
125
+ description: string;
126
+ sha256: string;
127
+ }[];
128
+ validateUserscript(source: string, targetUrl?: string): UserscriptValidation;
129
+ private runScript;
130
+ runBuiltinScript(url: string, id: string, opts?: {
131
+ signal?: AbortSignal;
132
+ timeoutMs?: number;
133
+ authProfile?: string;
134
+ rulePack?: string;
135
+ }): Promise<ScriptRunResult>;
136
+ runUserscript(url: string, source: string, opts?: {
137
+ signal?: AbortSignal;
138
+ timeoutMs?: number;
139
+ authProfile?: string;
140
+ rulePack?: string;
141
+ }): Promise<ScriptRunResult>;
107
142
  private ensureActivePage;
108
143
  private captureScreenshot;
109
144
  private readState;
@@ -126,12 +161,25 @@ export declare class BrowserService {
126
161
  screenshot(): Promise<{
127
162
  path: string;
128
163
  }>;
164
+ recipe(steps: readonly BrowserRecipeStep[], opts?: {
165
+ url?: string;
166
+ waitMs?: number;
167
+ authProfile?: string;
168
+ rulePack?: string;
169
+ signal?: AbortSignal;
170
+ }): Promise<RecipeRunResult>;
129
171
  closePage(): Promise<void>;
130
172
  status(): Promise<{
131
173
  enabled: boolean;
132
174
  channel: string;
133
175
  headless: boolean;
134
176
  opencliEnabled: boolean;
177
+ automationMode: AutomationMode;
178
+ exposedTools: string[];
179
+ directInteractionPolicy: 'deny' | 'ask' | 'allow';
180
+ mutatingRecipePolicy: 'deny' | 'ask' | 'allow';
181
+ externalUserscriptPolicy: 'deny' | 'ask' | 'allow';
182
+ opencliRunPolicy: 'deny' | 'ask' | 'allow';
135
183
  chromiumInstalled: boolean;
136
184
  authProfiles: {
137
185
  id: string;
@@ -139,6 +187,9 @@ export declare class BrowserService {
139
187
  persistState: boolean;
140
188
  }[];
141
189
  rulePacks: string[];
190
+ builtinScripts: string[];
191
+ externalUserscriptsRequireApproval: boolean;
192
+ mutatingRecipesRequireApproval: boolean;
142
193
  activeUrl?: string;
143
194
  activeAuthProfile?: string;
144
195
  }>;
@@ -24,54 +24,57 @@ import crypto from 'node:crypto';
24
24
  import { loadPlaywright, runOpencli, runNode, playwrightCliPath } from "./deps.js";
25
25
  import { AuthProfileStore } from "./auth-profiles.js";
26
26
  import { applyRuleSteps, resolveRulePack } from "./rule-packs.js";
27
+ import { runRecipe } from "./automation.js";
28
+ import { BUILTIN_SCRIPTS, builtinScript, executeUserscript, validateUserscript } from "./scripts.js";
29
+ import { browserToolsForMode } from "./freedom.js";
27
30
  /** Rules-aware content extractor (runs in the page). */
28
- const EXTRACTOR_FN = `(ruleList) => {
29
- const doc = document
30
- const title = doc.title ? doc.title.trim() : ''
31
- let host = ''
32
- try { host = location.hostname } catch (e) {}
33
- const norm = (h) => { const x = h.toLowerCase(); return x.startsWith('www.') ? x.slice(4) : x }
34
- let rule = null
35
- for (const r of ruleList) {
36
- const rh = norm(r.hostname)
37
- if (host === rh || host.endsWith('.' + rh)) rule = r
38
- }
39
- const pick = (selectors) => {
40
- for (const sel of selectors) {
41
- try {
42
- const el = doc.querySelector(sel)
43
- if (el && (el.textContent || '').trim().length > 40) return el
44
- } catch (e) {}
45
- }
46
- return null
47
- }
48
- const content = rule ? pick(rule.contentSelectors) : (pick(['article', 'main', '[role="main"]']) || doc.body)
49
- if (content && rule && rule.removeSelectors) {
50
- for (const sel of rule.removeSelectors) {
51
- try { content.querySelectorAll(sel).forEach((el) => el.remove()) } catch (e) {}
52
- }
53
- }
54
- const text = content ? (content.innerText || content.textContent || '') : ''
55
- return { title, text, html: doc.documentElement.outerHTML.slice(0, 2000000), usedRule: rule ? rule.hostname : null }
31
+ const EXTRACTOR_FN = `(ruleList) => {
32
+ const doc = document
33
+ const title = doc.title ? doc.title.trim() : ''
34
+ let host = ''
35
+ try { host = location.hostname } catch (e) {}
36
+ const norm = (h) => { const x = h.toLowerCase(); return x.startsWith('www.') ? x.slice(4) : x }
37
+ let rule = null
38
+ for (const r of ruleList) {
39
+ const rh = norm(r.hostname)
40
+ if (host === rh || host.endsWith('.' + rh)) rule = r
41
+ }
42
+ const pick = (selectors) => {
43
+ for (const sel of selectors) {
44
+ try {
45
+ const el = doc.querySelector(sel)
46
+ if (el && (el.textContent || '').trim().length > 40) return el
47
+ } catch (e) {}
48
+ }
49
+ return null
50
+ }
51
+ const content = rule ? pick(rule.contentSelectors) : (pick(['article', 'main', '[role="main"]']) || doc.body)
52
+ if (content && rule && rule.removeSelectors) {
53
+ for (const sel of rule.removeSelectors) {
54
+ try { content.querySelectorAll(sel).forEach((el) => el.remove()) } catch (e) {}
55
+ }
56
+ }
57
+ const text = content ? (content.innerText || content.textContent || '') : ''
58
+ return { title, text, html: doc.documentElement.outerHTML.slice(0, 2000000), usedRule: rule ? rule.hostname : null }
56
59
  }`;
57
60
  /** Platform search-page list extractor (runs in the page). */
58
- const LIST_EXTRACTOR = `(spec) => {
59
- const items = []
60
- const nodes = document.querySelectorAll(spec.item)
61
- for (let i = 0; i < nodes.length && items.length < 20; i++) {
62
- const el = nodes[i]
63
- const titleEl = spec.title ? el.querySelector(spec.title) : null
64
- const linkEl = spec.link ? el.querySelector(spec.link) : null
65
- const textEl = spec.text ? el.querySelector(spec.text) : null
66
- const title = (titleEl ? titleEl.textContent : el.textContent || '').trim().replace(/\\s+/g, ' ')
67
- let url = linkEl ? (linkEl.href || linkEl.getAttribute('href') || '') : ''
68
- if (url && url.startsWith('/')) url = location.origin + url
69
- if (!url && linkEl === null && titleEl) { const a = titleEl.closest ? titleEl.closest('a') : null; if (a) url = a.href }
70
- const snippet = textEl ? (textEl.textContent || '').trim().replace(/\\s+/g, ' ').slice(0, 300) : ''
71
- if (!url || !title || title.length < 2) continue
72
- items.push({ url, title, snippet })
73
- }
74
- return items
61
+ const LIST_EXTRACTOR = `(spec) => {
62
+ const items = []
63
+ const nodes = document.querySelectorAll(spec.item)
64
+ for (let i = 0; i < nodes.length && items.length < 20; i++) {
65
+ const el = nodes[i]
66
+ const titleEl = spec.title ? el.querySelector(spec.title) : null
67
+ const linkEl = spec.link ? el.querySelector(spec.link) : null
68
+ const textEl = spec.text ? el.querySelector(spec.text) : null
69
+ const title = (titleEl ? titleEl.textContent : el.textContent || '').trim().replace(/\\s+/g, ' ')
70
+ let url = linkEl ? (linkEl.href || linkEl.getAttribute('href') || '') : ''
71
+ if (url && url.startsWith('/')) url = location.origin + url
72
+ if (!url && linkEl === null && titleEl) { const a = titleEl.closest ? titleEl.closest('a') : null; if (a) url = a.href }
73
+ const snippet = textEl ? (textEl.textContent || '').trim().replace(/\\s+/g, ' ').slice(0, 300) : ''
74
+ if (!url || !title || title.length < 2) continue
75
+ items.push({ url, title, snippet })
76
+ }
77
+ return items
75
78
  }`;
76
79
  function uid() {
77
80
  return crypto.randomUUID();
@@ -291,8 +294,75 @@ export class BrowserService {
291
294
  return this.config.opencliEnabled;
292
295
  }
293
296
  opencli(args, opts = {}) {
297
+ if (!this.config.opencliEnabled)
298
+ return Promise.resolve({ code: -1, stdout: '', stderr: 'dsh-browser: OpenCLI is disabled', timedOut: false });
299
+ if (args.length < 1 || args.length > 40 || args.some(arg => typeof arg !== 'string' || arg.length > 2_000)) {
300
+ return Promise.resolve({ code: -1, stdout: '', stderr: 'dsh-browser: OpenCLI requires 1 to 40 arguments, each at most 2000 characters', timedOut: false });
301
+ }
294
302
  return runOpencli(args, { ...opts, signal: opts.signal });
295
303
  }
304
+ opencliDoctor(signal) {
305
+ return this.opencli(['doctor'], { timeoutMs: 30_000, signal });
306
+ }
307
+ scriptCatalog() {
308
+ return BUILTIN_SCRIPTS.map(script => ({
309
+ id: script.id,
310
+ name: script.name,
311
+ description: script.description,
312
+ sha256: validateUserscript(script.source).sha256,
313
+ }));
314
+ }
315
+ validateUserscript(source, targetUrl) {
316
+ return validateUserscript(source, targetUrl);
317
+ }
318
+ async runScript(url, source, opts = {}) {
319
+ const validation = validateUserscript(source, url);
320
+ if (!validation.valid)
321
+ throw new Error('userscript validation failed: ' + validation.errors.join('; '));
322
+ const session = await this.transientContext(url, opts);
323
+ const page = await session.context.newPage();
324
+ const signal = opts.signal;
325
+ const onAbort = () => void page.close().catch(() => { });
326
+ if (signal?.aborted)
327
+ onAbort();
328
+ else
329
+ signal?.addEventListener('abort', onAbort);
330
+ let timer;
331
+ try {
332
+ page.setDefaultTimeout(30_000);
333
+ await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30_000 });
334
+ await page.waitForLoadState('networkidle', { timeout: 8_000 }).catch(() => { });
335
+ await applyRuleSteps(page, session.rulePack);
336
+ const timeoutMs = Math.min(Math.max(opts.timeoutMs ?? 15_000, 1_000), 30_000);
337
+ const timeout = new Promise((_resolve, reject) => {
338
+ timer = setTimeout(() => {
339
+ void page.close().catch(() => { });
340
+ reject(new Error('userscript timed out after ' + timeoutMs + 'ms'));
341
+ }, timeoutMs);
342
+ });
343
+ const executed = await Promise.race([executeUserscript(page, source), timeout]);
344
+ return {
345
+ url: page.url(),
346
+ name: validation.metadata.name,
347
+ sha256: validation.sha256,
348
+ capabilities: validation.capabilities,
349
+ resultJson: executed.resultJson,
350
+ truncated: executed.truncated,
351
+ };
352
+ }
353
+ finally {
354
+ if (timer)
355
+ clearTimeout(timer);
356
+ signal?.removeEventListener('abort', onAbort);
357
+ await this.persistAndClose(session);
358
+ }
359
+ }
360
+ runBuiltinScript(url, id, opts = {}) {
361
+ return this.runScript(url, builtinScript(id).source, opts);
362
+ }
363
+ runUserscript(url, source, opts = {}) {
364
+ return this.runScript(url, source, opts);
365
+ }
296
366
  // ── interactive surface (one persistent context + page) ──────────────────
297
367
  async ensureActivePage(targetUrl, opts = {}) {
298
368
  if (this.activePage && !this.activePage.isClosed()) {
@@ -377,6 +447,31 @@ export class BrowserService {
377
447
  const page = await this.ensureActivePage();
378
448
  return { path: await this.captureScreenshot(page) };
379
449
  }
450
+ async recipe(steps, opts = {}) {
451
+ if (!opts.url && (!this.activePage || this.activePage.isClosed()))
452
+ throw new Error('browser recipe requires url or an active browser_open page');
453
+ const page = await this.ensureActivePage(opts.url, opts);
454
+ if (opts.url) {
455
+ page.setDefaultTimeout(30_000);
456
+ await page.goto(opts.url, { waitUntil: 'domcontentloaded', timeout: 30_000 });
457
+ await page.waitForLoadState('networkidle', { timeout: 8_000 }).catch(() => { });
458
+ await applyRuleSteps(page, this.activeRulePack);
459
+ if (opts.waitMs)
460
+ await page.waitForTimeout(opts.waitMs);
461
+ }
462
+ const onAbort = () => void this.closePage();
463
+ if (opts.signal?.aborted)
464
+ onAbort();
465
+ else
466
+ opts.signal?.addEventListener('abort', onAbort);
467
+ try {
468
+ const results = await runRecipe(page, steps, () => this.captureScreenshot(page), opts.signal);
469
+ return { ...await this.readState(page, false), steps: results };
470
+ }
471
+ finally {
472
+ opts.signal?.removeEventListener('abort', onAbort);
473
+ }
474
+ }
380
475
  async closePage() {
381
476
  if (this.activePage) {
382
477
  await this.activePage.close().catch(() => { });
@@ -402,9 +497,18 @@ export class BrowserService {
402
497
  channel: this.config.channel,
403
498
  headless: this.config.headless,
404
499
  opencliEnabled: this.config.opencliEnabled,
500
+ automationMode: this.config.automationMode,
501
+ exposedTools: browserToolsForMode(this.config.automationMode),
502
+ directInteractionPolicy: this.config.automationMode === 'read-only' ? 'deny' : this.config.automationMode === 'standard' ? 'ask' : 'allow',
503
+ mutatingRecipePolicy: this.config.automationMode === 'read-only' ? 'deny' : this.config.automationMode === 'standard' ? 'ask' : 'allow',
504
+ externalUserscriptPolicy: this.config.automationMode === 'read-only' ? 'deny' : this.config.automationMode === 'unrestricted' ? 'allow' : 'ask',
505
+ opencliRunPolicy: this.config.automationMode === 'read-only' ? 'deny' : this.config.automationMode === 'unrestricted' ? 'allow' : 'ask',
405
506
  chromiumInstalled,
406
507
  authProfiles: this.authProfiles.list(),
407
508
  rulePacks: Object.keys(this.config.rulePacks).sort(),
509
+ builtinScripts: BUILTIN_SCRIPTS.map(script => script.id),
510
+ externalUserscriptsRequireApproval: ['standard', 'autonomous'].includes(this.config.automationMode),
511
+ mutatingRecipesRequireApproval: this.config.automationMode === 'standard',
408
512
  ...(this.activePage && !this.activePage.isClosed() ? { activeUrl: this.activePage.url() } : {}),
409
513
  ...this.activeProfile ? { activeAuthProfile: this.activeProfile.id } : {},
410
514
  };
@@ -1 +1 @@
1
- {"version":3,"file":"browser-service.js","sourceRoot":"","sources":["../src/browser-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-service.js","sourceRoot":"","sources":["../src/browser-service.ts"],"names":[],"mappings":"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"}
package/lib/config.d.ts CHANGED
@@ -5,6 +5,7 @@
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';
8
9
  export interface Config {
9
10
  /** Whether the browser service is active. */
10
11
  enabled: boolean;
@@ -23,6 +24,8 @@ export interface Config {
23
24
  executablePath?: string;
24
25
  /** Whether the bundled OpenCLI is enabled. */
25
26
  opencliEnabled: boolean;
27
+ /** Model-facing tool exposure and approval level. */
28
+ automationMode: AutomationMode;
26
29
  /** Lazily run `playwright install chromium` when the browser is missing. */
27
30
  autoInstall: boolean;
28
31
  /** Directory for browser screenshots; defaults to $DSH_HOME/data/browser/snapshots. */
@@ -40,6 +43,7 @@ export interface ResolvedConfig {
40
43
  rulePacks: Record<string, RulePackConfig>;
41
44
  executablePath?: string;
42
45
  opencliEnabled: boolean;
46
+ automationMode: AutomationMode;
43
47
  autoInstall: boolean;
44
48
  snapshotDir: string;
45
49
  verbose: boolean;