@jobshimo/browser-link 0.15.0 → 0.17.0

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.
@@ -40,7 +40,9 @@ const BROWSER_TOOL_NAMES = [
40
40
  'browser.network_body',
41
41
  'browser.click',
42
42
  'browser.type',
43
+ 'browser.press',
43
44
  'browser.drag',
45
+ 'browser.flow',
44
46
  'browser.evaluate',
45
47
  'browser.events',
46
48
  'browser.reset',
@@ -54,6 +56,249 @@ export function isBrowserTool(name) {
54
56
  return BROWSER_TOOL_NAME_SET.has(name);
55
57
  }
56
58
  const NAVIGATE_TIMEOUT_MS = 30_000;
59
+ /** Same floor click/type/drag/wait_for already use. Action tools default
60
+ * here when they have no other reason to run longer. */
61
+ const ACTION_TIMEOUT_FLOOR_MS = 15_000;
62
+ /** Hard ceiling on `settle_timeout_ms` — mirrors MAX_SETTLE_TIMEOUT_MS in
63
+ * the extension's background.ts; kept in sync manually since the two
64
+ * packages don't share a module for this one constant. */
65
+ const MAX_SETTLE_TIMEOUT_MS = 10_000;
66
+ /** Matches the extension's DEFAULT_SETTLE_TIMEOUT_MS. */
67
+ const DEFAULT_SETTLE_TIMEOUT_MS = 2_000;
68
+ const PRESS_MODIFIERS = new Set(['Alt', 'Control', 'Meta', 'Shift']);
69
+ /** Roles `browser.find` accepts — shared by the standalone find dispatcher
70
+ * and `browser.flow`'s find-step validation so the two cannot drift. */
71
+ const FIND_ALLOWED_ROLES = new Set(['button', 'link', 'textbox', 'checkbox', 'tab', 'menuitem']);
72
+ /** Type-predicate narrowing for `browser.press`'s `modifiers` param.
73
+ * `Array.isArray` alone narrows `unknown` to `any[]`, not `unknown[]` —
74
+ * without a named predicate here, `.every(...)` after it does not narrow
75
+ * the element type and the eventual assignment to `string[]` trips
76
+ * `no-unsafe-assignment`. */
77
+ function isModifierArray(value) {
78
+ return (Array.isArray(value) && value.every((m) => typeof m === 'string' && PRESS_MODIFIERS.has(m)));
79
+ }
80
+ /**
81
+ * Timeout budget for click / type / press: the bridge has to wait out the
82
+ * action itself PLUS however long the optional settle wait can run for.
83
+ * Mirrors how `browser.drag` computes its budget from `duration_ms` and
84
+ * `browser.wait_for` computes its budget from `timeout_ms` — same
85
+ * `Math.max(floor, requested + overhead)` shape, this time keyed off
86
+ * `settle_timeout_ms`. Unset/invalid input falls back to the default settle
87
+ * timeout, so the returned value is always >= ACTION_TIMEOUT_FLOOR_MS
88
+ * regardless of what the caller passed.
89
+ *
90
+ * INVARIANT WORTH STATING PLAINLY: with today's constants this function
91
+ * always returns exactly ACTION_TIMEOUT_FLOOR_MS (15s), because the worst
92
+ * legal case is MAX_SETTLE_TIMEOUT_MS + 5s overhead = 10s + 5s = the floor.
93
+ * It does not currently "widen" anything — it EXISTS so the budget stays
94
+ * correct by construction if either constant moves. If you change
95
+ * MAX_SETTLE_TIMEOUT_MS or the floor, either keep
96
+ * `ACTION_TIMEOUT_FLOOR_MS >= MAX_SETTLE_TIMEOUT_MS + 5_000` or accept
97
+ * that this function starts returning larger budgets — both are fine,
98
+ * a settle wait silently outliving the bridge timeout is not.
99
+ */
100
+ function actionTimeoutWithSettle(settleTimeoutMs) {
101
+ const requested = typeof settleTimeoutMs === 'number' && Number.isFinite(settleTimeoutMs) && settleTimeoutMs >= 0
102
+ ? settleTimeoutMs
103
+ : DEFAULT_SETTLE_TIMEOUT_MS;
104
+ const clamped = Math.min(requested, MAX_SETTLE_TIMEOUT_MS);
105
+ return Math.max(ACTION_TIMEOUT_FLOOR_MS, clamped + 5_000);
106
+ }
107
+ // === browser.flow ========================================================
108
+ /** Hard cap on steps per flow — mirrors `maxItems: 20` on the MCP schema
109
+ * (`browser-definitions.ts`) and the extension's own defense-in-depth
110
+ * check in `flow.ts`'s `runFlow`. Enforced here too so an oversized flow
111
+ * is rejected before it ever reaches the extension. */
112
+ const MAX_FLOW_STEPS = 20;
113
+ /** Same ceiling `browser.wait_for_tab` uses for its own timeout budget —
114
+ * the bridge does not park any single tool call longer than this. A flow
115
+ * whose TRUTHFUL worst-case budget exceeds this ceiling is REJECTED up
116
+ * front (see `validateFlowSteps`), never silently capped: the bridge has
117
+ * no cancel path to the extension, so a bridge timeout below the real
118
+ * worst case would drop the response of a flow that is still executing —
119
+ * and an agent retry could then duplicate the actions. */
120
+ const MAX_FLOW_TIMEOUT_MS = 60_000;
121
+ /** Once-per-flow overhead: the WS round trip to the extension plus the
122
+ * recovery snapshot evaluated on the failure path. */
123
+ const FLOW_BASE_OVERHEAD_MS = 2_000;
124
+ /** Per-step overhead: the step's own in-page evaluate round trip(s) and
125
+ * CDP input dispatches. Those are local calls that typically take tens of
126
+ * milliseconds — 500ms per step is generous without inflating the budget
127
+ * so much that legitimate 20-step flows stop fitting under the ceiling. */
128
+ const FLOW_STEP_SLACK_MS = 500;
129
+ /** Worst-case settle wait for one settle-enabled click/type/press step
130
+ * inside a flow. Flow steps only expose `settle_ms` (the quiet-PERIOD
131
+ * length), never `settle_timeout_ms` (the overall CAP) — so every
132
+ * settle-enabled action step's true upper bound is the extension's
133
+ * `DEFAULT_SETTLE_TIMEOUT_MS`. A step that explicitly disables settle
134
+ * (`settle_ms: 0`) skips the wait entirely and costs only the slack.
135
+ *
136
+ * Sanity check the constants keep the documented promise: a full 20-step
137
+ * flow of action steps with DEFAULT settle budgets at
138
+ * 2_000 + 20 * (2_000 + 500) = 52_000ms — comfortably under the 60s
139
+ * ceiling. Only genuinely long wait_for-heavy flows hit the rejection. */
140
+ const FLOW_ACTION_SETTLE_WORST_MS = DEFAULT_SETTLE_TIMEOUT_MS;
141
+ /** Mirror the standalone wait_for contract: default 5s, extension clamps
142
+ * at 30s. The budget uses the same numbers so it never under-models a
143
+ * step the extension would happily run longer. */
144
+ const FLOW_WAIT_FOR_DEFAULT_TIMEOUT_MS = 5_000;
145
+ const FLOW_WAIT_FOR_MAX_TIMEOUT_MS = 30_000;
146
+ const FLOW_STEP_KINDS = ['find', 'click', 'type', 'press', 'wait_for'];
147
+ const FLOW_WAIT_CONDITIONS = new Set(['visible', 'hidden', 'attached', 'detached']);
148
+ /** Identify the step kind. A step must have EXACTLY ONE key and that key
149
+ * must be a recognized kind — extra keys (`{find: {...}, mystery: 1}`)
150
+ * reject, matching the schema's `additionalProperties: false`. */
151
+ function flowStepKind(step) {
152
+ const keys = Object.keys(step);
153
+ if (keys.length !== 1)
154
+ return null;
155
+ const key = keys[0];
156
+ return FLOW_STEP_KINDS.includes(key) ? key : null;
157
+ }
158
+ /**
159
+ * Server-side validation for `browser.flow`'s `steps` array — defense in
160
+ * depth beyond the MCP JSON schema, since the IPC/proxy path in
161
+ * multi-agent mode can reach `handleBrowserTool` without ever going
162
+ * through schema validation. Mirrors how `browser.find`/`browser.press`
163
+ * re-validate their own required fields here rather than trusting the
164
+ * schema alone.
165
+ *
166
+ * Also computes the flow's TRUTHFUL worst-case time budget (`budgetMs`)
167
+ * in the same pass: base overhead + per-step slack + each wait_for's
168
+ * clamped `timeout_ms` + each settle-enabled action step's settle
169
+ * ceiling. A flow whose budget exceeds `MAX_FLOW_TIMEOUT_MS` is rejected
170
+ * with an actionable error instead of silently capping the enforced
171
+ * bridge timeout below the modeled need — see the ceiling constant's doc
172
+ * for why a mid-flow bridge timeout is worse than an up-front rejection.
173
+ *
174
+ * Deliberately loose on the "implicit target" check: it only confirms a
175
+ * `find` step exists SOMEWHERE earlier in the array before a selector-less
176
+ * `click` — it does not simulate the single-step-lookahead consumption
177
+ * rule `runFlow` enforces at runtime. A flow that passes this check can
178
+ * still fail at runtime with a clear per-step error; this check only
179
+ * catches the flows that could never possibly work.
180
+ */
181
+ function validateFlowSteps(input) {
182
+ if (!Array.isArray(input) || input.length === 0) {
183
+ return { ok: false, error: 'steps must be a non-empty array' };
184
+ }
185
+ if (input.length > MAX_FLOW_STEPS) {
186
+ return { ok: false, error: `at most ${MAX_FLOW_STEPS} steps allowed, got ${input.length}` };
187
+ }
188
+ const steps = [];
189
+ let hasTarget = false;
190
+ let budgetMs = FLOW_BASE_OVERHEAD_MS;
191
+ for (let i = 0; i < input.length; i++) {
192
+ const raw = input[i];
193
+ if (typeof raw !== 'object' || raw === null) {
194
+ return { ok: false, error: `step ${i}: must be an object` };
195
+ }
196
+ const step = raw;
197
+ const kind = flowStepKind(step);
198
+ if (!kind) {
199
+ return {
200
+ ok: false,
201
+ error: `step ${i}: must have exactly one of find | click | type | press | wait_for`,
202
+ };
203
+ }
204
+ const body = step[kind];
205
+ if (typeof body !== 'object' || body === null) {
206
+ return { ok: false, error: `step ${i}: "${kind}" must be an object` };
207
+ }
208
+ const bodyRecord = body;
209
+ if (kind === 'find') {
210
+ if (typeof bodyRecord.text !== 'string' || bodyRecord.text.length === 0) {
211
+ return { ok: false, error: `step ${i}: find.text is required` };
212
+ }
213
+ if (bodyRecord.role !== undefined &&
214
+ (typeof bodyRecord.role !== 'string' || !FIND_ALLOWED_ROLES.has(bodyRecord.role))) {
215
+ return {
216
+ ok: false,
217
+ error: `step ${i}: find.role must be one of button | link | textbox | checkbox | tab | menuitem`,
218
+ };
219
+ }
220
+ hasTarget = true;
221
+ budgetMs += FLOW_STEP_SLACK_MS;
222
+ }
223
+ else if (kind === 'type') {
224
+ if (typeof bodyRecord.text !== 'string') {
225
+ return { ok: false, error: `step ${i}: type.text is required` };
226
+ }
227
+ budgetMs += flowActionBudgetMs(bodyRecord);
228
+ }
229
+ else if (kind === 'press') {
230
+ if (typeof bodyRecord.key !== 'string' || bodyRecord.key.length === 0) {
231
+ return { ok: false, error: `step ${i}: press.key is required` };
232
+ }
233
+ budgetMs += flowActionBudgetMs(bodyRecord);
234
+ }
235
+ else if (kind === 'click') {
236
+ if (bodyRecord.selector === undefined && !hasTarget) {
237
+ return {
238
+ ok: false,
239
+ error: `step ${i}: click has no selector and no preceding find to supply an implicit target`,
240
+ };
241
+ }
242
+ budgetMs += flowActionBudgetMs(bodyRecord);
243
+ }
244
+ else {
245
+ // wait_for — mirror the standalone dispatcher's contract checks so a
246
+ // bad step fails HERE with a clear message instead of in-page with a
247
+ // misleading "condition not met within timeout (0ms, 0 checks)".
248
+ const modes = [bodyRecord.selector, bodyRecord.expression, bodyRecord.network_url].filter((v) => v !== undefined);
249
+ if (modes.length !== 1) {
250
+ return {
251
+ ok: false,
252
+ error: `step ${i}: wait_for requires exactly one of selector | expression | network_url`,
253
+ };
254
+ }
255
+ for (const key of ['selector', 'expression', 'network_url']) {
256
+ if (bodyRecord[key] !== undefined && typeof bodyRecord[key] !== 'string') {
257
+ return { ok: false, error: `step ${i}: wait_for.${key} must be a string` };
258
+ }
259
+ }
260
+ if (bodyRecord.condition !== undefined &&
261
+ (typeof bodyRecord.condition !== 'string' ||
262
+ !FLOW_WAIT_CONDITIONS.has(bodyRecord.condition))) {
263
+ return {
264
+ ok: false,
265
+ error: `step ${i}: wait_for.condition must be one of visible | hidden | attached | detached`,
266
+ };
267
+ }
268
+ for (const key of ['timeout_ms', 'poll_interval_ms']) {
269
+ if (bodyRecord[key] !== undefined &&
270
+ (typeof bodyRecord[key] !== 'number' || !Number.isFinite(bodyRecord[key]))) {
271
+ return { ok: false, error: `step ${i}: wait_for.${key} must be a finite number` };
272
+ }
273
+ }
274
+ budgetMs += flowWaitForBudgetMs(bodyRecord);
275
+ }
276
+ steps.push(step);
277
+ }
278
+ if (budgetMs > MAX_FLOW_TIMEOUT_MS) {
279
+ return {
280
+ ok: false,
281
+ error: `flow worst-case budget ${Math.ceil(budgetMs / 1000)}s exceeds the ` +
282
+ `${MAX_FLOW_TIMEOUT_MS / 1000}s ceiling — reduce wait_for timeout_ms values or split the flow`,
283
+ };
284
+ }
285
+ return { ok: true, steps, budgetMs };
286
+ }
287
+ /** Worst case for one click/type/press step: its settle ceiling (unless
288
+ * the step explicitly disables settle with `settle_ms: 0`) plus the
289
+ * per-step slack. */
290
+ function flowActionBudgetMs(body) {
291
+ const settleDisabled = body.settle_ms === 0;
292
+ return (settleDisabled ? 0 : FLOW_ACTION_SETTLE_WORST_MS) + FLOW_STEP_SLACK_MS;
293
+ }
294
+ /** Worst case for one wait_for step: its clamped `timeout_ms` (the
295
+ * extension enforces the same 30s cap) plus the per-step slack. */
296
+ function flowWaitForBudgetMs(body) {
297
+ const requested = typeof body.timeout_ms === 'number' && Number.isFinite(body.timeout_ms) && body.timeout_ms >= 0
298
+ ? body.timeout_ms
299
+ : FLOW_WAIT_FOR_DEFAULT_TIMEOUT_MS;
300
+ return Math.min(requested, FLOW_WAIT_FOR_MAX_TIMEOUT_MS) + FLOW_STEP_SLACK_MS;
301
+ }
57
302
  /** Convert an internal TabClaim into the wire-safe `PublicClaim`. */
58
303
  function toPublicClaim(claim) {
59
304
  const publicClaim = {
@@ -184,8 +429,7 @@ export async function handleBrowserTool(name, args, deps, caller) {
184
429
  if (typeof text !== 'string' || text.length === 0) {
185
430
  throw new Error('browser.find: text required');
186
431
  }
187
- const ALLOWED_ROLES = new Set(['button', 'link', 'textbox', 'checkbox', 'tab', 'menuitem']);
188
- if (role !== undefined && (typeof role !== 'string' || !ALLOWED_ROLES.has(role))) {
432
+ if (role !== undefined && (typeof role !== 'string' || !FIND_ALLOWED_ROLES.has(role))) {
189
433
  throw new Error('browser.find: role must be one of button | link | textbox | checkbox | tab | menuitem');
190
434
  }
191
435
  // find is a read tool: no claim enforcement, no userGesture concerns.
@@ -245,12 +489,29 @@ export async function handleBrowserTool(name, args, deps, caller) {
245
489
  return deps.callBrowserTool(requireTabId(args), 'network_body', { request_id });
246
490
  }
247
491
  case 'browser.click': {
248
- const { selector, force = false } = args;
249
- return runAction('click', requireTabId(args), { selector, force }, deps, caller);
492
+ const { selector, force = false, settle_ms, settle_timeout_ms, } = args;
493
+ return runAction('click', requireTabId(args), { selector, force, settle_ms, settle_timeout_ms }, deps, caller, actionTimeoutWithSettle(settle_timeout_ms));
250
494
  }
251
495
  case 'browser.type': {
252
- const { selector, text, clear = false, } = args;
253
- return runAction('type', requireTabId(args), { selector, text, clear }, deps, caller);
496
+ const { selector, text, clear = false, settle_ms, settle_timeout_ms, } = args;
497
+ return runAction('type', requireTabId(args), { selector, text, clear, settle_ms, settle_timeout_ms }, deps, caller, actionTimeoutWithSettle(settle_timeout_ms));
498
+ }
499
+ case 'browser.press': {
500
+ const { key, modifiers, selector, settle_ms, settle_timeout_ms } = (args ?? {});
501
+ if (typeof key !== 'string' || key.length === 0) {
502
+ throw new Error('browser.press: key required');
503
+ }
504
+ let normalizedModifiers = [];
505
+ if (modifiers !== undefined) {
506
+ if (!isModifierArray(modifiers)) {
507
+ throw new Error('browser.press: modifiers must be an array of Alt | Control | Meta | Shift');
508
+ }
509
+ normalizedModifiers = modifiers;
510
+ }
511
+ if (selector !== undefined && typeof selector !== 'string') {
512
+ throw new Error('browser.press: selector must be a string when provided');
513
+ }
514
+ return runAction('press', requireTabId(args), { key, modifiers: normalizedModifiers, selector, settle_ms, settle_timeout_ms }, deps, caller, actionTimeoutWithSettle(settle_timeout_ms));
254
515
  }
255
516
  case 'browser.drag': {
256
517
  const { from_selector, from_x, from_y, to_selector, to_x, to_y, duration_ms, hold_before_move_ms, hold_before_release_ms, } = (args ?? {});
@@ -276,6 +537,17 @@ export async function handleBrowserTool(name, args, deps, caller) {
276
537
  hold_before_release_ms,
277
538
  }, deps, caller, timeoutMs);
278
539
  }
540
+ case 'browser.flow': {
541
+ const { steps } = (args ?? {});
542
+ const validated = validateFlowSteps(steps);
543
+ if (!validated.ok)
544
+ throw new Error(`browser.flow: ${validated.error}`);
545
+ // budgetMs is the flow's truthful worst case and validateFlowSteps
546
+ // already rejected anything above MAX_FLOW_TIMEOUT_MS, so the
547
+ // enforced timeout is never below the modeled need — only the shared
548
+ // action floor can raise it.
549
+ return runAction('flow', requireTabId(args), { steps: validated.steps }, deps, caller, Math.max(ACTION_TIMEOUT_FLOOR_MS, validated.budgetMs));
550
+ }
279
551
  case 'browser.evaluate': {
280
552
  const { expression } = args;
281
553
  return runAction('evaluate', requireTabId(args), { expression }, deps, caller);
@@ -1 +1 @@
1
- {"version":3,"file":"browser-dispatch.js","sourceRoot":"","sources":["../../src/tools/browser-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-dispatch.js","sourceRoot":"","sources":["../../src/tools/browser-dispatch.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,19 @@ a cache of navigation, not a substitute.
72
72
  when no dedicated tool fits — every dedicated tool below is cheaper in
73
73
  tokens AND more reliable than a hand-rolled expression.
74
74
 
75
+ - **Any multi-step interaction** (find a target, act on it, wait, act
76
+ again) → \`browser.flow({ steps: [...] })\` is now the DEFAULT, not a
77
+ fallback. A sequence like find → click → wait_for → type → press used
78
+ to cost 5-10+ separate MCP round trips — each one a full LLM inference
79
+ — and now costs ONE \`browser.flow\` call (two if a step fails and you
80
+ need a corrective follow-up). A \`find\` step's resolved selector
81
+ becomes the implicit target for the very next click/type/press step
82
+ that omits \`selector\`, so you never have to copy a selector from one
83
+ call into the next by hand. Flow is strictly sequential and fails fast
84
+ on the first bad step, returning a focused \`recovery_snapshot\` so you
85
+ do not need a follow-up \`browser.snapshot\` to see where it stopped.
86
+ Reach for individual click/type/press/find/wait_for calls only when you
87
+ need to branch on an intermediate result.
75
88
  - **Finding an element by visible text** → call \`browser.find\` (not
76
89
  \`browser.evaluate\` with a textContent grep). \`find\` covers
77
90
  \`<div onclick>\` and other "no testid" markup that a naive
@@ -91,13 +104,29 @@ tokens AND more reliable than a hand-rolled expression.
91
104
  Never call \`browser.evaluate\` N times in a row to read N values.
92
105
  - **Scrolling** → \`browser.evaluate\` with \`pane.scrollTop = N\` or
93
106
  \`el.scrollIntoView({block:'center'})\`. No dedicated tool needed.
94
- - **Special keys (Enter / Tab / Escape / arrow keys)** →
95
- \`browser.evaluate\` with
96
- \`el.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }))\`.
97
- Vanilla handlers AND React's delegated root handlers (React 17+)
98
- pick up bubbled dispatched events. For TYPING text into an input,
99
- use \`browser.type\` — it goes through the native setter so controlled
100
- components update their state. \`dispatchEvent\` on \`value\` does NOT.
107
+ - **Special keys (Enter / Tab / Escape / arrow keys / shortcuts)** →
108
+ \`browser.press\`, NOT \`browser.evaluate\` with a synthetic
109
+ \`KeyboardEvent\`. \`el.dispatchEvent(new KeyboardEvent(...))\` produces
110
+ \`isTrusted:false\` events that rich text editors, autocompletes, and
111
+ non-DOM runtimes (Qt-WASM, WebGL) silently ignore. \`browser.press\`
112
+ dispatches a real CDP \`Input.dispatchKeyEvent\` sequence
113
+ (\`isTrusted:true\`) pass \`key\` ("Enter", "ArrowUp", a single
114
+ character, …) and optional \`modifiers\` for shortcuts (Ctrl+A, Cmd+S).
115
+ For TYPING text into an input, use \`browser.type\` — it goes through
116
+ the native setter so controlled components update their state.
117
+ \`dispatchEvent\` on \`value\` does NOT.
118
+ - **Waiting for the result of an action** → pass \`settle_ms\` to
119
+ \`browser.click\` / \`.type\` / \`.press\` (default 150, max 2000)
120
+ instead of a follow-up \`browser.wait_for\` + \`browser.snapshot\`. The
121
+ action waits for the page to go quiet — no DOM mutations for
122
+ \`settle_ms\` — and returns a \`settle\` object
123
+ (\`{ settled, duration_ms, mutation_count, url_changed?, focus_moved? }\`).
124
+ Settle proves QUIET, not EFFECT: mutations completing before the
125
+ observer installs (right after dispatch) and async reactions starting
126
+ after the quiet window are both invisible — \`mutation_count: 0\` does
127
+ NOT mean the action did nothing. Reach for \`wait_for\` when you need a
128
+ SPECIFIC condition (a particular selector, network request, or
129
+ expression), not just "did anything change".
101
130
  - **Paging through \`browser.events\`** → keep \`lastId = result.latest_id\`
102
131
  in your working notes and pass it as \`since_id\` on the next call.
103
132
  That is one variable. The server does not maintain per-agent cursors.
@@ -1 +1 @@
1
- {"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../../src/tools/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;sDAEsD;AACtD,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA4GN,CAAC;AAEZ;;mEAEmE;AACnE,SAAS,UAAU,CAAC,GAAmB;IACrC,IAAI,CAAC,GAAG,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC3D,MAAM,KAAK,GAAa,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACjF,KAAK,MAAM,CAAC,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;iEAEiE;AACjE,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAqB,CAAC,GAAG,wBAAwB,EAAE,GAAG,oBAAoB,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;8DAC8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../../src/tools/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;sDAEsD;AACtD,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAyIN,CAAC;AAEZ;;mEAEmE;AACnE,SAAS,UAAU,CAAC,GAAmB;IACrC,IAAI,CAAC,GAAG,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC3D,MAAM,KAAK,GAAa,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACjF,KAAK,MAAM,CAAC,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;iEAEiE;AACjE,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAqB,CAAC,GAAG,wBAAwB,EAAE,GAAG,oBAAoB,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;8DAC8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobshimo/browser-link",
3
- "version": "0.15.0",
3
+ "version": "0.17.0",
4
4
  "description": "MCP server that bridges Claude Code, OpenCode, GitHub Copilot CLI and other MCP clients to a Chrome tab. Per-tool permissions, multi-agent mode (multiple MCP clients sharing one bridge), persistent UI map across sessions.",
5
5
  "keywords": [
6
6
  "mcp",