@jobshimo/browser-link 0.8.2 → 0.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-instructions/content.js +42 -27
- package/dist/agent-instructions/content.js.map +1 -1
- package/dist/agent-instructions/file-ops.js +7 -2
- package/dist/agent-instructions/file-ops.js.map +1 -1
- package/dist/commands/doctor.js +30 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/update-check.d.ts +25 -0
- package/dist/commands/update-check.js +108 -0
- package/dist/commands/update-check.js.map +1 -0
- package/dist/extension/manifest.json +1 -1
- package/dist/map/tools.d.ts +1 -5
- package/dist/map/tools.js +45 -0
- package/dist/map/tools.js.map +1 -1
- package/dist/tools/browser-definitions.d.ts +6 -0
- package/dist/tools/browser-definitions.js +134 -0
- package/dist/tools/browser-definitions.js.map +1 -1
- package/dist/tools/server-instructions.d.ts +16 -2
- package/dist/tools/server-instructions.js +87 -68
- package/dist/tools/server-instructions.js.map +1 -1
- package/dist/tools/types.d.ts +26 -1
- package/dist/ui/app.js +13 -3
- package/dist/ui/app.js.map +1 -1
- package/dist/ui/hooks/use-update-check.d.ts +16 -0
- package/dist/ui/hooks/use-update-check.js +48 -0
- package/dist/ui/hooks/use-update-check.js.map +1 -0
- package/dist/ui/screens/agent-instructions.d.ts +7 -1
- package/dist/ui/screens/agent-instructions.js +13 -3
- package/dist/ui/screens/agent-instructions.js.map +1 -1
- package/dist/ui/screens/menu.d.ts +10 -1
- package/dist/ui/screens/menu.js +37 -5
- package/dist/ui/screens/menu.js.map +1 -1
- package/package.json +1 -1
|
@@ -22,40 +22,55 @@ export function beginMarker(version = VERSION) {
|
|
|
22
22
|
* `version` as `string | undefined`). */
|
|
23
23
|
export const BEGIN_RE = /<!--\s*browser-link:instructions:begin(?:\s+v(?<version>\d+\.\d+\.\d+))?\s*-->/;
|
|
24
24
|
export const END_RE = /<!--\s*browser-link:instructions:end\s*-->/;
|
|
25
|
-
/** Block body.
|
|
26
|
-
*
|
|
25
|
+
/** Block body. Engram-style reflex protocol — imperative TRIGGER LIST that
|
|
26
|
+
* the agent treats as ALWAYS ACTIVE, not descriptive prose. Plain English
|
|
27
|
+
* by design (LLMs reason in English); the bilingual phrases inside the
|
|
28
|
+
* trigger list are DATA — what the user actually types — not instructions
|
|
29
|
+
* to the agent. */
|
|
27
30
|
function body() {
|
|
28
31
|
return [
|
|
29
|
-
'## browser-link —
|
|
32
|
+
'## browser-link — reflex protocol (ALWAYS ACTIVE)',
|
|
30
33
|
'',
|
|
31
|
-
'
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
'Chrome extension are invisible to you; never reason about state you',
|
|
35
|
-
'cannot see.',
|
|
34
|
+
'You have `browser.*` MCP tools (the bridge exposed by `@jobshimo/browser-link`).',
|
|
35
|
+
'These tools see only Chrome tabs the user explicitly connected via the',
|
|
36
|
+
'companion extension. Never reason about state you cannot see.',
|
|
36
37
|
'',
|
|
37
|
-
'###
|
|
38
|
+
'### TRIGGER LIST — call before responding when ANY apply',
|
|
38
39
|
'',
|
|
39
|
-
'
|
|
40
|
-
'
|
|
41
|
-
'
|
|
42
|
-
'-
|
|
43
|
-
'
|
|
44
|
-
'-
|
|
45
|
-
'
|
|
46
|
-
'
|
|
47
|
-
'- **Tool call fails with "Tab not connected"**: call `browser.events`',
|
|
48
|
-
' and look for `tab-renamed` entries before retrying.',
|
|
49
|
-
'- **After any non-trivial flow you discovered end-to-end** (opened a',
|
|
50
|
-
' dialog, completed a form, found a setting): persist it with',
|
|
51
|
-
' `browser.map.save`. UI structure only — never save domain data',
|
|
52
|
-
' (IDs, names, dates).',
|
|
40
|
+
'User mentions any of these (English or Spanish):',
|
|
41
|
+
'- "the button doesn\'t work" / "no anda el botón" / "no funciona X"',
|
|
42
|
+
'- "broken layout" / "está roto" / "se ve mal" / "looks wrong"',
|
|
43
|
+
'- "check if X works" / "fíjate si anda X" / "¿anda X?" / "does X work?"',
|
|
44
|
+
'- "the page" / "la página" / "la web" / "the site"',
|
|
45
|
+
'- "open this in the browser" / "abrí esto en el navegador" / "navegá a"',
|
|
46
|
+
'- a UI element, web app name, URL, browser tab, layout, dialog, form',
|
|
47
|
+
'→ call `browser.list_tabs` FIRST, then `browser.map.recall` with the tab origin.',
|
|
53
48
|
'',
|
|
54
|
-
'
|
|
49
|
+
'About to suggest a code change to UI / React / DOM:',
|
|
50
|
+
'→ `browser.snapshot` first, verify current state. Do not speculate.',
|
|
55
51
|
'',
|
|
56
|
-
'
|
|
57
|
-
'`browser.
|
|
58
|
-
'
|
|
52
|
+
'Tool call returned "Tab not connected":',
|
|
53
|
+
'→ `browser.events` to see tab-renamed entries before retrying.',
|
|
54
|
+
'',
|
|
55
|
+
'After a non-trivial flow worked end-to-end (opened dialog, filled form,',
|
|
56
|
+
'found a setting):',
|
|
57
|
+
'→ `browser.map.save` (UI structure only — never IDs, names, dates).',
|
|
58
|
+
'',
|
|
59
|
+
'Several MCP clients sharing one bridge (multi-agent mode):',
|
|
60
|
+
'→ `browser.claim_tab` before operating on a tab so other agents see it',
|
|
61
|
+
'in use. `browser.release_tab` when done.',
|
|
62
|
+
'',
|
|
63
|
+
'### SELF-CHECK after each user message',
|
|
64
|
+
'',
|
|
65
|
+
'"Is the user talking about a web page, UI, or anything visible in a browser?',
|
|
66
|
+
'If yes → did I run `browser.list_tabs` yet? If no → STOP and run it now."',
|
|
67
|
+
'',
|
|
68
|
+
'### NEVER',
|
|
69
|
+
'',
|
|
70
|
+
'- Speculate about DOM state without a snapshot.',
|
|
71
|
+
'- Suggest "try clicking X" without verifying X exists in the current page.',
|
|
72
|
+
'- Save selectors you have not just successfully executed.',
|
|
73
|
+
'- Store domain data (IDs, user names, dates, etc.) in the persistent map.',
|
|
59
74
|
].join('\n');
|
|
60
75
|
}
|
|
61
76
|
/** Full fenced block to write into the file, including a trailing newline.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/agent-instructions/content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,sCAAsC,CAAC;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,wCAAwC,CAAC;AAEnE,MAAM,UAAU,WAAW,CAAC,OAAO,GAAG,OAAO;IAC3C,OAAO,GAAG,YAAY,KAAK,OAAO,MAAM,CAAC;AAC3C,CAAC;AAED;;;;yCAIyC;AACzC,MAAM,CAAC,MAAM,QAAQ,GACnB,gFAAgF,CAAC;AACnF,MAAM,CAAC,MAAM,MAAM,GAAG,4CAA4C,CAAC;AAEnE;
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/agent-instructions/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -140,8 +140,13 @@ export function installAt(filePath, displayName, options = {}) {
|
|
|
140
140
|
const before = text.slice(0, span.startIndex);
|
|
141
141
|
const after = text.slice(span.endIndex);
|
|
142
142
|
atomicWrite(filePath, before + fresh + after);
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
// The previous version is rendered as `v{prev}` when the marker carried
|
|
144
|
+
// a semver, and as `legacy` when the file pre-dates the version stamp
|
|
145
|
+
// (older browser-link releases shipped a marker with no version). The
|
|
146
|
+
// user-facing copy emphasises that the new triggers are immediately in
|
|
147
|
+
// effect — the next MCP-client restart is the only step left.
|
|
148
|
+
const prev = span.installedVersion === null ? 'legacy' : `v${span.installedVersion}`;
|
|
149
|
+
return `Replaced the ${prev} block with the v${VERSION} reflex protocol. New triggers active immediately — restart your MCP client.`;
|
|
145
150
|
}
|
|
146
151
|
export function uninstallAt(filePath, displayName, options = {}) {
|
|
147
152
|
if (!options.allowOutsideHome)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-ops.js","sourceRoot":"","sources":["../../src/agent-instructions/file-ops.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"file-ops.js","sourceRoot":"","sources":["../../src/agent-instructions/file-ops.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -74,6 +74,20 @@ export async function runDoctor() {
|
|
|
74
74
|
function symbol(ok) {
|
|
75
75
|
return ok ? '✓' : '✗';
|
|
76
76
|
}
|
|
77
|
+
/** Wrap `text` in the ANSI red SGR sequence so terminals (and Ink, which
|
|
78
|
+
* passes ANSI codes through) render it red. We intentionally avoid pulling
|
|
79
|
+
* a colour library into the doctor formatter — one escape pair is cheaper
|
|
80
|
+
* than a dependency. The reset ([39m) only restores the default
|
|
81
|
+
* foreground colour so the rest of the line keeps its surrounding style.
|
|
82
|
+
*
|
|
83
|
+
* Escalating outdated agent-instructions blocks to red was the v0.8.3 ask:
|
|
84
|
+
* yellow was being ignored. Red + a follow-up subline makes the state
|
|
85
|
+
* impossible to miss. */
|
|
86
|
+
const RED = '[31m';
|
|
87
|
+
const RED_RESET = '[39m';
|
|
88
|
+
function red(text) {
|
|
89
|
+
return `${RED}${text}${RED_RESET}`;
|
|
90
|
+
}
|
|
77
91
|
const DOCTOR_I18N = {
|
|
78
92
|
en: {
|
|
79
93
|
title: 'browser-link doctor',
|
|
@@ -87,6 +101,9 @@ const DOCTOR_I18N = {
|
|
|
87
101
|
clientInstructions: 'instructions:',
|
|
88
102
|
instructionsInstalled: (v) => (v === null ? `✓ installed (legacy)` : `✓ installed (v${v})`),
|
|
89
103
|
instructionsOutdated: (v) => (v === null ? `⚠ outdated (legacy)` : `⚠ outdated (v${v})`),
|
|
104
|
+
instructionsOutdatedSubline: (v) => v === null
|
|
105
|
+
? 'outdated since legacy — refresh recommended.'
|
|
106
|
+
: `outdated since v${v} — refresh recommended.`,
|
|
90
107
|
instructionsNotInstalled: '· not installed',
|
|
91
108
|
instructionsNoFile: '· file not present',
|
|
92
109
|
instructionsCorrupt: '⚠ multiple blocks — resolve manually',
|
|
@@ -121,6 +138,9 @@ const DOCTOR_I18N = {
|
|
|
121
138
|
clientInstructions: 'instrucciones:',
|
|
122
139
|
instructionsInstalled: (v) => (v === null ? `✓ instaladas (legacy)` : `✓ instaladas (v${v})`),
|
|
123
140
|
instructionsOutdated: (v) => v === null ? `⚠ desactualizadas (legacy)` : `⚠ desactualizadas (v${v})`,
|
|
141
|
+
instructionsOutdatedSubline: (v) => v === null
|
|
142
|
+
? 'desactualizadas desde legacy — se recomienda refrescar.'
|
|
143
|
+
: `desactualizadas desde v${v} — se recomienda refrescar.`,
|
|
124
144
|
instructionsNotInstalled: '· no instaladas',
|
|
125
145
|
instructionsNoFile: '· sin archivo',
|
|
126
146
|
instructionsCorrupt: '⚠ múltiples bloques — resolvé a mano',
|
|
@@ -165,12 +185,17 @@ export function formatDoctor(r, language = 'en') {
|
|
|
165
185
|
lines.push(` ${' '.repeat(20)} ${t.clientConfig} ${c.configPath}`);
|
|
166
186
|
const instr = c.instructions.state;
|
|
167
187
|
let instrLabel;
|
|
188
|
+
let outdatedSubline = null;
|
|
168
189
|
switch (instr.kind) {
|
|
169
190
|
case 'installed':
|
|
170
191
|
instrLabel = t.instructionsInstalled(instr.version);
|
|
171
192
|
break;
|
|
172
193
|
case 'installed-outdated':
|
|
173
|
-
|
|
194
|
+
// v0.8.3: escalate outdated from yellow to red, and add an
|
|
195
|
+
// explanatory subline. Yellow blended in with the "not registered"
|
|
196
|
+
// warning and users were ignoring it.
|
|
197
|
+
instrLabel = red(t.instructionsOutdated(instr.version));
|
|
198
|
+
outdatedSubline = red(t.instructionsOutdatedSubline(instr.version));
|
|
174
199
|
break;
|
|
175
200
|
case 'not-installed':
|
|
176
201
|
instrLabel = t.instructionsNotInstalled;
|
|
@@ -183,6 +208,10 @@ export function formatDoctor(r, language = 'en') {
|
|
|
183
208
|
break;
|
|
184
209
|
}
|
|
185
210
|
lines.push(` ${' '.repeat(20)} ${t.clientInstructions} ${instrLabel} (${c.instructions.filePath})`);
|
|
211
|
+
if (outdatedSubline !== null) {
|
|
212
|
+
// Indent so the subline aligns under the instructions: label.
|
|
213
|
+
lines.push(` ${' '.repeat(20)} ${' '.repeat(t.clientInstructions.length)} ${outdatedSubline}`);
|
|
214
|
+
}
|
|
186
215
|
}
|
|
187
216
|
lines.push('');
|
|
188
217
|
lines.push(t.extensionHeader);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background update check — thin wrapper around `checkUpdates` for the
|
|
3
|
+
* passive update banner in the TUI. We persist the last successful check
|
|
4
|
+
* to disk under the existing data dir so opening the TUI repeatedly
|
|
5
|
+
* within a 6-hour window does not hammer the npm registry.
|
|
6
|
+
*
|
|
7
|
+
* Failure modes are silent by design: the banner is passive, so anything
|
|
8
|
+
* we cannot determine (offline, registry down, malformed cache) collapses
|
|
9
|
+
* to "no banner". The user never sees an error from this path.
|
|
10
|
+
*/
|
|
11
|
+
export interface UpdateCheckResult {
|
|
12
|
+
/** The version baked into this build. */
|
|
13
|
+
current: string;
|
|
14
|
+
/** The latest version on the registry, or null when the check failed
|
|
15
|
+
* AND no cached value is available. */
|
|
16
|
+
latest: string | null;
|
|
17
|
+
/** True only when we successfully determined latest > current. */
|
|
18
|
+
isNewer: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** Run a background update check. Honours the on-disk cache so opening
|
|
21
|
+
* the TUI repeatedly within 6 hours does not re-hit the npm registry.
|
|
22
|
+
* Pass `force: true` (or omit the cache) to bypass the freshness check. */
|
|
23
|
+
export declare function checkForUpdates(opts?: {
|
|
24
|
+
force?: boolean;
|
|
25
|
+
}): Promise<UpdateCheckResult>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { getDataDir } from '../map/paths.js';
|
|
4
|
+
import { checkUpdates } from './updates.js';
|
|
5
|
+
import { VERSION } from '../version.js';
|
|
6
|
+
const CACHE_FILE_NAME = 'update-check.json';
|
|
7
|
+
/** How long a cached registry response is considered fresh. Six hours
|
|
8
|
+
* matches the in-memory poll interval in `useBackgroundUpdateCheck`, so
|
|
9
|
+
* the disk cache is a peer (not a tighter limit). */
|
|
10
|
+
const CACHE_TTL_MS = 6 * 60 * 60 * 1000;
|
|
11
|
+
function cachePath() {
|
|
12
|
+
return join(getDataDir(), CACHE_FILE_NAME);
|
|
13
|
+
}
|
|
14
|
+
function readCache() {
|
|
15
|
+
const p = cachePath();
|
|
16
|
+
if (!existsSync(p))
|
|
17
|
+
return null;
|
|
18
|
+
try {
|
|
19
|
+
const raw = readFileSync(p, 'utf8');
|
|
20
|
+
const parsed = JSON.parse(raw);
|
|
21
|
+
if (!parsed || typeof parsed !== 'object')
|
|
22
|
+
return null;
|
|
23
|
+
const cf = parsed;
|
|
24
|
+
if (typeof cf.current !== 'string' || typeof cf.checkedAtMs !== 'number')
|
|
25
|
+
return null;
|
|
26
|
+
if (cf.latest !== null && typeof cf.latest !== 'string')
|
|
27
|
+
return null;
|
|
28
|
+
// Defense in depth: even though we only write semver-validated values
|
|
29
|
+
// ourselves, a cache file authored by an older release or hand-edited
|
|
30
|
+
// could contain something else. Drop anything that does not match.
|
|
31
|
+
const safeLatest = cf.latest && isValidSemver(cf.latest) ? cf.latest : null;
|
|
32
|
+
return { current: cf.current, latest: safeLatest, checkedAtMs: cf.checkedAtMs };
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function writeCache(cf) {
|
|
39
|
+
const p = cachePath();
|
|
40
|
+
try {
|
|
41
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
42
|
+
writeFileSync(p, JSON.stringify(cf, null, 2) + '\n', 'utf8');
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
/* swallow — the banner is passive, persistence failures are not user-facing */
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Strict semver-with-optional-prerelease regex used to validate every
|
|
49
|
+
* `latest` string before we trust it enough to persist to disk. The npm
|
|
50
|
+
* registry would only ever return a value of this shape, but CodeQL
|
|
51
|
+
* (correctly) treats anything that crossed the network boundary as
|
|
52
|
+
* untrusted, so we validate at the boundary. A bad value just collapses
|
|
53
|
+
* to "no cache update" — the banner is passive. */
|
|
54
|
+
const SEMVER_RE = /^\d+\.\d+\.\d+(?:-[A-Za-z0-9.-]+)?$/;
|
|
55
|
+
function isValidSemver(s) {
|
|
56
|
+
return SEMVER_RE.test(s);
|
|
57
|
+
}
|
|
58
|
+
/** Compare two plain semver triplets. Reuses the same loose comparison
|
|
59
|
+
* style as `commands/updates.ts` — pre-release suffixes are not handled. */
|
|
60
|
+
function isNewer(latest, current) {
|
|
61
|
+
const a = latest.split('.').map((n) => Number(n) || 0);
|
|
62
|
+
const b = current.split('.').map((n) => Number(n) || 0);
|
|
63
|
+
for (let i = 0; i < Math.max(a.length, b.length); i++) {
|
|
64
|
+
const av = a[i] ?? 0;
|
|
65
|
+
const bv = b[i] ?? 0;
|
|
66
|
+
if (av > bv)
|
|
67
|
+
return true;
|
|
68
|
+
if (av < bv)
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
/** Run a background update check. Honours the on-disk cache so opening
|
|
74
|
+
* the TUI repeatedly within 6 hours does not re-hit the npm registry.
|
|
75
|
+
* Pass `force: true` (or omit the cache) to bypass the freshness check. */
|
|
76
|
+
export async function checkForUpdates(opts = {}) {
|
|
77
|
+
const cached = readCache();
|
|
78
|
+
const now = Date.now();
|
|
79
|
+
if (!opts.force &&
|
|
80
|
+
cached !== null &&
|
|
81
|
+
cached.current === VERSION &&
|
|
82
|
+
now - cached.checkedAtMs < CACHE_TTL_MS) {
|
|
83
|
+
return {
|
|
84
|
+
current: VERSION,
|
|
85
|
+
latest: cached.latest,
|
|
86
|
+
isNewer: cached.latest !== null && isNewer(cached.latest, VERSION),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const info = await checkUpdates();
|
|
90
|
+
// Validate the registry-returned `latest` against a strict semver regex
|
|
91
|
+
// BEFORE we trust it for cache persistence or `isNewer` comparison.
|
|
92
|
+
// Anything that crossed the network boundary is treated as untrusted;
|
|
93
|
+
// a malformed value collapses to "no banner", which is the right
|
|
94
|
+
// failure mode for a passive check.
|
|
95
|
+
const safeLatest = info.latest !== null && isValidSemver(info.latest) ? info.latest : null;
|
|
96
|
+
// Persist only successful, well-formed checks — a failed lookup or a
|
|
97
|
+
// weird response must not poison the cache and silence a future
|
|
98
|
+
// legitimate detection.
|
|
99
|
+
if (safeLatest !== null) {
|
|
100
|
+
writeCache({ current: VERSION, latest: safeLatest, checkedAtMs: now });
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
current: VERSION,
|
|
104
|
+
latest: safeLatest,
|
|
105
|
+
isNewer: safeLatest !== null && isNewer(safeLatest, VERSION),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=update-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/commands/update-check.ts"],"names":[],"mappings":"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"}
|
package/dist/map/tools.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
name: string;
|
|
3
|
-
description: string;
|
|
4
|
-
inputSchema: Record<string, unknown>;
|
|
5
|
-
}
|
|
1
|
+
import type { ToolDefinition } from '../tools/types.js';
|
|
6
2
|
export declare const MAP_TOOL_DEFINITIONS: ToolDefinition[];
|
|
7
3
|
export declare function isMapTool(name: string): boolean;
|
|
8
4
|
export declare function handleMapTool(name: string, args: unknown): unknown;
|
package/dist/map/tools.js
CHANGED
|
@@ -19,6 +19,18 @@ export const MAP_TOOL_DEFINITIONS = [
|
|
|
19
19
|
required: ['origin'],
|
|
20
20
|
additionalProperties: false,
|
|
21
21
|
},
|
|
22
|
+
doc: {
|
|
23
|
+
purpose: 'Reload selectors, flows and gotchas you previously learned about an app, so you do not rediscover them every session.',
|
|
24
|
+
when_to_use: [
|
|
25
|
+
'On any non-trivial debugging session on a web app the user mentioned — call this with the tab origin BEFORE speculating.',
|
|
26
|
+
'When you arrive at a tab and need to know "what do I already know about this app".',
|
|
27
|
+
],
|
|
28
|
+
gotchas: [
|
|
29
|
+
'If recall returns entries with failed_at more recent than verified_at, treat them as suspect — re-verify with snapshot before reusing.',
|
|
30
|
+
'After every interaction that used a map entry, call browser.map.record_use with { entry_id, ok } so the map stays honest.',
|
|
31
|
+
],
|
|
32
|
+
example: 'browser.map.recall({ origin: "https://app.example.com" })',
|
|
33
|
+
},
|
|
22
34
|
},
|
|
23
35
|
{
|
|
24
36
|
name: 'browser.map.save',
|
|
@@ -52,6 +64,18 @@ export const MAP_TOOL_DEFINITIONS = [
|
|
|
52
64
|
required: ['origin', 'url_pattern', 'kind', 'purpose', 'payload'],
|
|
53
65
|
additionalProperties: false,
|
|
54
66
|
},
|
|
67
|
+
doc: {
|
|
68
|
+
purpose: 'Persist UI structure you just discovered — a selector, a multi-step flow, or a gotcha — keyed by app and url pattern.',
|
|
69
|
+
when_to_use: [
|
|
70
|
+
'After a non-trivial flow worked end-to-end (opened a dialog, completed a form, found a setting).',
|
|
71
|
+
],
|
|
72
|
+
gotchas: [
|
|
73
|
+
'NEVER save selectors or flows you have not just successfully executed.',
|
|
74
|
+
'NEVER store domain data (IDs, user names, dates, etc.). The map captures UI structure only.',
|
|
75
|
+
'Use url_pattern = exact pathname by default; only promote to a glob if you have evidence of a parametric route.',
|
|
76
|
+
'Give `purpose` a stable, reusable label ("open task detail dialog", not "open IB0311 detail").',
|
|
77
|
+
],
|
|
78
|
+
},
|
|
55
79
|
},
|
|
56
80
|
{
|
|
57
81
|
name: 'browser.map.record_use',
|
|
@@ -66,6 +90,13 @@ export const MAP_TOOL_DEFINITIONS = [
|
|
|
66
90
|
required: ['entry_id', 'ok'],
|
|
67
91
|
additionalProperties: false,
|
|
68
92
|
},
|
|
93
|
+
doc: {
|
|
94
|
+
purpose: 'Update verified_at / failed_at on a map entry after you reused it, so the next agent knows whether it still works.',
|
|
95
|
+
when_to_use: ['Right after using any selector or flow you got from browser.map.recall.'],
|
|
96
|
+
gotchas: [
|
|
97
|
+
'ok:true updates verified_at and clears failed_at. ok:false updates failed_at — keep the map honest about what works today.',
|
|
98
|
+
],
|
|
99
|
+
},
|
|
69
100
|
},
|
|
70
101
|
{
|
|
71
102
|
name: 'browser.map.forget',
|
|
@@ -79,6 +110,10 @@ export const MAP_TOOL_DEFINITIONS = [
|
|
|
79
110
|
},
|
|
80
111
|
additionalProperties: false,
|
|
81
112
|
},
|
|
113
|
+
doc: {
|
|
114
|
+
purpose: 'Delete a stale map entry, or wipe a whole app, after a refactor invalidated it.',
|
|
115
|
+
when_to_use: ['A whole app got refactored and the saved knowledge is now actively wrong.'],
|
|
116
|
+
},
|
|
82
117
|
},
|
|
83
118
|
{
|
|
84
119
|
name: 'browser.map.rename_app',
|
|
@@ -92,11 +127,21 @@ export const MAP_TOOL_DEFINITIONS = [
|
|
|
92
127
|
required: ['app_id', 'new_app_key'],
|
|
93
128
|
additionalProperties: false,
|
|
94
129
|
},
|
|
130
|
+
doc: {
|
|
131
|
+
purpose: 'Rename the app_key for an app row when the title-derived slug is wrong.',
|
|
132
|
+
when_to_use: [
|
|
133
|
+
'The initial slug derived from document.title is misleading (typo, generic name).',
|
|
134
|
+
],
|
|
135
|
+
},
|
|
95
136
|
},
|
|
96
137
|
{
|
|
97
138
|
name: 'browser.map.apps',
|
|
98
139
|
description: 'List apps currently tracked in the map, most recently used first. Use to discover known origins and their app_keys.',
|
|
99
140
|
inputSchema: { type: 'object', properties: {}, additionalProperties: false },
|
|
141
|
+
doc: {
|
|
142
|
+
purpose: 'List every app currently tracked in the map, most recently used first.',
|
|
143
|
+
when_to_use: ['To discover which origins/app_keys the map already knows about.'],
|
|
144
|
+
},
|
|
100
145
|
},
|
|
101
146
|
];
|
|
102
147
|
export function isMapTool(name) {
|
package/dist/map/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/map/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,EACT,SAAS,GAEV,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/map/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
* MCP tool definitions for the browser-bridge family. Kept separate from
|
|
3
3
|
* the runtime dispatcher so the JSON schemas stay reviewable in one place
|
|
4
4
|
* and the dispatch logic stays small.
|
|
5
|
+
*
|
|
6
|
+
* Each entry carries a `doc` block (`ToolDoc`) with structured human-facing
|
|
7
|
+
* documentation. `buildServerInstructions()` reads those blocks to produce
|
|
8
|
+
* the SERVER_INSTRUCTIONS string the MCP host receives on `initialize`. The
|
|
9
|
+
* structured shape keeps the "when to use" copy beside the tool that owns
|
|
10
|
+
* it instead of drifting in a single monolithic string.
|
|
5
11
|
*/
|
|
6
12
|
import type { ToolDefinition } from './types.js';
|
|
7
13
|
export declare const BROWSER_TOOL_DEFINITIONS: ToolDefinition[];
|