@jobshimo/browser-link 0.32.0 → 0.34.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.
- package/dist/agent-instructions/content.js +14 -7
- package/dist/agent-instructions/content.js.map +1 -1
- package/dist/bridge/dispatch.js +12 -2
- package/dist/bridge/dispatch.js.map +1 -1
- package/dist/bridge/ws-bridge.d.ts +14 -0
- package/dist/bridge/ws-bridge.js +14 -2
- package/dist/bridge/ws-bridge.js.map +1 -1
- package/dist/commands/map.js +159 -12
- package/dist/commands/map.js.map +1 -1
- package/dist/extension/background.js +49 -19
- package/dist/extension/background.js.map +1 -1
- package/dist/extension/manifest.json +3 -2
- package/dist/extension/reconnect-policy.d.ts +88 -21
- package/dist/extension/reconnect-policy.js +115 -30
- package/dist/extension/reconnect-policy.js.map +1 -1
- package/dist/map/db.js +24 -0
- package/dist/map/db.js.map +1 -1
- package/dist/map/queries.d.ts +73 -0
- package/dist/map/queries.js +101 -9
- package/dist/map/queries.js.map +1 -1
- package/dist/map/tools.d.ts +13 -0
- package/dist/map/tools.js +201 -25
- package/dist/map/tools.js.map +1 -1
- package/dist/tools/browser-definitions.js +3 -2
- package/dist/tools/browser-definitions.js.map +1 -1
- package/dist/tools/empty-tabs-hint.d.ts +15 -0
- package/dist/tools/empty-tabs-hint.js +115 -0
- package/dist/tools/empty-tabs-hint.js.map +1 -0
- package/dist/tools/responses.d.ts +7 -0
- package/dist/tools/responses.js +10 -0
- package/dist/tools/responses.js.map +1 -1
- package/dist/tools/server-instructions.js +22 -4
- package/dist/tools/server-instructions.js.map +1 -1
- package/package.json +1 -1
|
@@ -47,8 +47,10 @@ function body() {
|
|
|
47
47
|
'→ call `browser.list_tabs` FIRST, then `browser.map.recall` with the tab origin.',
|
|
48
48
|
'',
|
|
49
49
|
'`browser.list_tabs` entry carries a `map` field',
|
|
50
|
-
'(`{ app_key, entries, flows }`):',
|
|
51
|
-
"→ that tab's origin already has data in the persistent map
|
|
50
|
+
'(`{ app_key, entries, flows, mechanisms, pitfalls, inline? }`):',
|
|
51
|
+
"→ that tab's origin already has data in the persistent map. If `inline`",
|
|
52
|
+
'is present the (small) map is already in the hint — read its pitfalls',
|
|
53
|
+
'first and skip the round trip; otherwise call',
|
|
52
54
|
'`browser.map.recall` BEFORE `browser.snapshot`. No `map` field means',
|
|
53
55
|
'the map has nothing for that origin yet; skip straight to snapshot.',
|
|
54
56
|
'',
|
|
@@ -57,16 +59,21 @@ function body() {
|
|
|
57
59
|
'',
|
|
58
60
|
'Tool call returned "Tab not connected":',
|
|
59
61
|
'→ `browser.events` to see tab-renamed entries before retrying. After a',
|
|
60
|
-
'primary restart the extension auto-
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'asking the human to re-press Connect.',
|
|
62
|
+
'primary restart the extension keeps auto-reconnecting dropped tabs for',
|
|
63
|
+
'up to 10 minutes (1s/2s/4s/8s/15s, then every 30s; same tab_id when',
|
|
64
|
+
'possible) — wait and retry before asking the human to re-press Connect.',
|
|
64
65
|
'',
|
|
65
66
|
'After a non-trivial flow worked end-to-end (opened dialog, filled form,',
|
|
66
67
|
'found a setting):',
|
|
67
68
|
'→ `browser.map.save` (UI structure only — never IDs, names, dates).',
|
|
68
69
|
'Optionally attach `flows` (named, replayable step recipes) to the same',
|
|
69
|
-
'call — see the recall → adapt → flow pattern below.',
|
|
70
|
+
'call — see the recall → adapt → flow pattern below. ALSO save what you',
|
|
71
|
+
'learned about how the app behaves underneath (`mechanisms: [{ key,',
|
|
72
|
+
'description }]`, e.g. "a GET of an item URL marks it complete") and',
|
|
73
|
+
'what does NOT work (`pitfalls: [{ key, description, symptom? }]`, e.g.',
|
|
74
|
+
'"click on the next link returns ok but does not navigate"). A pitfall',
|
|
75
|
+
'costs far more to rediscover than a selector. Behaviour, never content:',
|
|
76
|
+
'no IDs, names, dates or real values.',
|
|
70
77
|
'',
|
|
71
78
|
'`browser.map.recall` returned saved `flows` for this app:',
|
|
72
79
|
'→ ADAPT the steps first — substitute any placeholder text (e.g.',
|
|
@@ -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;;;;mBAImB;AACnB,SAAS,IAAI;IACX,OAAO;QACL,mDAAmD;QACnD,EAAE;QACF,kFAAkF;QAClF,wEAAwE;QACxE,+DAA+D;QAC/D,EAAE;QACF,0DAA0D;QAC1D,EAAE;QACF,kDAAkD;QAClD,qEAAqE;QACrE,+DAA+D;QAC/D,yEAAyE;QACzE,oDAAoD;QACpD,yEAAyE;QACzE,sEAAsE;QACtE,kFAAkF;QAClF,EAAE;QACF,iDAAiD;QACjD,
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/agent-instructions/content.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge/dispatch.js
CHANGED
|
@@ -11,7 +11,8 @@ import { isToolEnabled } from '../permissions.js';
|
|
|
11
11
|
import { MAP_TOOL_DEFINITIONS, handleMapTool, isMapTool } from '../map/tools.js';
|
|
12
12
|
import { BROWSER_TOOL_DEFINITIONS } from '../tools/browser-definitions.js';
|
|
13
13
|
import { handleBrowserTool, isBrowserTool, } from '../tools/browser-dispatch.js';
|
|
14
|
-
import { imageToolResponse, toolError, toolResponse } from '../tools/responses.js';
|
|
14
|
+
import { hintToolResponse, imageToolResponse, toolError, toolResponse, } from '../tools/responses.js';
|
|
15
|
+
import { buildEmptyTabsHint } from '../tools/empty-tabs-hint.js';
|
|
15
16
|
export function handleToolsList(deps) {
|
|
16
17
|
const disabled = deps.disabledTools();
|
|
17
18
|
return {
|
|
@@ -31,7 +32,16 @@ export async function handleToolCall(req, deps) {
|
|
|
31
32
|
return toolResponse(handleMapTool(name, args));
|
|
32
33
|
if (isBrowserTool(name)) {
|
|
33
34
|
const result = await handleBrowserTool(name, args, deps.browserTools, caller);
|
|
34
|
-
|
|
35
|
+
if (name === 'browser.screenshot')
|
|
36
|
+
return imageToolResponse(result);
|
|
37
|
+
// An empty list_tabs explains itself in a second block; the first
|
|
38
|
+
// stays the bare `[]` every client already parses.
|
|
39
|
+
if (name === 'browser.list_tabs' && Array.isArray(result) && result.length === 0) {
|
|
40
|
+
const events = deps.browserTools.recentEvents?.({ limit: 200 });
|
|
41
|
+
if (events)
|
|
42
|
+
return hintToolResponse(result, buildEmptyTabsHint(events, Date.now()));
|
|
43
|
+
}
|
|
44
|
+
return toolResponse(result);
|
|
35
45
|
}
|
|
36
46
|
return toolError(`Unknown tool: ${name}`);
|
|
37
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/bridge/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,aAAa,GAEd,MAAM,8BAA8B,CAAC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/bridge/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,aAAa,GAEd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAwBjE,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACtC,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,wBAAwB,EAAE,GAAG,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzE,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAChC;KACF,CAAC;AACJ,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAoB,EAAE,IAAkB;IAC3E,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;QAC/C,uEAAuE;QACvE,qEAAqE;QACrE,OAAO,SAAS,CACd,SAAS,IAAI,6CAA6C;YACxD,8EAA8E,IAAI,KAAK,CAC1F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC9E,IAAI,IAAI,KAAK,oBAAoB;gBAAE,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACpE,kEAAkE;YAClE,mDAAmD;YACnD,IAAI,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChE,IAAI,MAAM;oBAAE,OAAO,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACtF,CAAC;YACD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,SAAS,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -120,6 +120,20 @@ export declare function handleActivityQueryMessage(msg: ActivityQueryMessage): S
|
|
|
120
120
|
* the panel's size readout updates from the same round trip that changed it.
|
|
121
121
|
*/
|
|
122
122
|
export declare function handleActivityPurgeMessage(msg: ActivityPurgeMessage): ServerToExtension;
|
|
123
|
+
/**
|
|
124
|
+
* Payload of the `tab-disconnected` event. `clean` is false only for close
|
|
125
|
+
* code 1006 (abnormal closure: the peer's process or socket died without a
|
|
126
|
+
* close frame) — the one drop the extension retries. Every other code is a
|
|
127
|
+
* deliberate close (manual Disconnect, tab closed, idle sweep, navigation),
|
|
128
|
+
* which the extension never retries; `browser.list_tabs`' empty-list hint
|
|
129
|
+
* reads this to avoid telling an agent to wait for a reconnect that will not
|
|
130
|
+
* happen.
|
|
131
|
+
*/
|
|
132
|
+
export declare function buildTabDisconnectedData(tabId: string, code: number): {
|
|
133
|
+
tabId: string;
|
|
134
|
+
code: number;
|
|
135
|
+
clean: boolean;
|
|
136
|
+
};
|
|
123
137
|
export declare function sendToolCancel(tabs: Map<string, TabSession>, tabId: string, flowId: string, reason?: 'expired'): boolean;
|
|
124
138
|
/** Build the callback that sends a tool.request frame to a specific tab and
|
|
125
139
|
* resolves with the matching tool.response (or rejects on timeout). Kept here
|
package/dist/bridge/ws-bridge.js
CHANGED
|
@@ -244,10 +244,10 @@ export function startWsBridge(tabs, pendingRequests, events) {
|
|
|
244
244
|
return;
|
|
245
245
|
}
|
|
246
246
|
});
|
|
247
|
-
ws.on('close', () => {
|
|
247
|
+
ws.on('close', (code) => {
|
|
248
248
|
if (assignedTabId) {
|
|
249
249
|
tabs.delete(assignedTabId);
|
|
250
|
-
events.add('tab-disconnected',
|
|
250
|
+
events.add('tab-disconnected', buildTabDisconnectedData(assignedTabId, code));
|
|
251
251
|
log(`Tab disconnected: ${assignedTabId}`);
|
|
252
252
|
}
|
|
253
253
|
});
|
|
@@ -504,6 +504,18 @@ export function handleActivityPurgeMessage(msg) {
|
|
|
504
504
|
};
|
|
505
505
|
}
|
|
506
506
|
}
|
|
507
|
+
/**
|
|
508
|
+
* Payload of the `tab-disconnected` event. `clean` is false only for close
|
|
509
|
+
* code 1006 (abnormal closure: the peer's process or socket died without a
|
|
510
|
+
* close frame) — the one drop the extension retries. Every other code is a
|
|
511
|
+
* deliberate close (manual Disconnect, tab closed, idle sweep, navigation),
|
|
512
|
+
* which the extension never retries; `browser.list_tabs`' empty-list hint
|
|
513
|
+
* reads this to avoid telling an agent to wait for a reconnect that will not
|
|
514
|
+
* happen.
|
|
515
|
+
*/
|
|
516
|
+
export function buildTabDisconnectedData(tabId, code) {
|
|
517
|
+
return { tabId, code, clean: code !== 1006 };
|
|
518
|
+
}
|
|
507
519
|
export function sendToolCancel(tabs, tabId, flowId, reason) {
|
|
508
520
|
const session = tabs.get(tabId);
|
|
509
521
|
if (!session || session.ws.readyState !== WebSocket.OPEN)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-bridge.js","sourceRoot":"","sources":["../../src/bridge/ws-bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ws-bridge.js","sourceRoot":"","sources":["../../src/bridge/ws-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/map.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { getDb } from '../map/db.js';
|
|
3
|
-
import { deleteFlow, findApp, findAppByOriginAndKey, findAppCandidates, forget, listApps, listAppsWithCounts, listEntries, listFlows, restoreEntry, restoreFlow, upsertApp, } from '../map/queries.js';
|
|
3
|
+
import { deleteFlow, findApp, findAppByOriginAndKey, findAppCandidates, forget, listApps, listAppsWithCounts, listEntries, listFlows, listInsights, restoreEntry, restoreFlow, saveInsight, upsertApp, } from '../map/queries.js';
|
|
4
|
+
import { parseInsight } from '../map/tools.js';
|
|
4
5
|
import { validateFlowSteps } from '../tools/browser-dispatch.js';
|
|
5
6
|
/** The flags that are pure switches and NEVER take a value. Without this
|
|
6
7
|
* set, `map forget --yes my-app` would swallow "my-app" as the value of
|
|
@@ -109,6 +110,8 @@ const MAP_I18N = {
|
|
|
109
110
|
lastSeenLabel: 'last seen:',
|
|
110
111
|
entriesHeader: (n) => `Entries (${n}):`,
|
|
111
112
|
flowsHeader: (n) => `Flows (${n}):`,
|
|
113
|
+
pitfallsHeader: (n) => `Pitfalls (${n}):`,
|
|
114
|
+
mechanismsHeader: (n) => `Mechanisms (${n}):`,
|
|
112
115
|
none: '(none)',
|
|
113
116
|
statusVerified: 'verified',
|
|
114
117
|
statusFailed: 'FAILED',
|
|
@@ -116,7 +119,7 @@ const MAP_I18N = {
|
|
|
116
119
|
appNotFound: (identifier, known) => known.length === 0
|
|
117
120
|
? `No app matches "${identifier}" — the map is empty.`
|
|
118
121
|
: `No app matches "${identifier}" by app_key or origin. Known app_keys: ${known.join(', ')}`,
|
|
119
|
-
forgetUsage: 'Usage: browser-link map forget <app> [--flow <name>] [--yes]',
|
|
122
|
+
forgetUsage: 'Usage: browser-link map forget <app> [--flow <name> | --pitfall <key> | --mechanism <key>] [--yes]',
|
|
120
123
|
flowFlagRequiresValue: '--flow requires a flow name: browser-link map forget <app> --flow <name>',
|
|
121
124
|
flowNotFound: (flowName, appKey, origin) => `No flow named "${flowName}" on app "${appKey}" (${origin}).`,
|
|
122
125
|
flowForgotten: (flowName, appKey, origin) => `Deleted flow "${flowName}" from "${appKey}" (${origin}).`,
|
|
@@ -125,10 +128,27 @@ const MAP_I18N = {
|
|
|
125
128
|
`Nothing was deleted. If that is the right app, re-run with --yes to confirm:\n` +
|
|
126
129
|
` browser-link map forget ${identifier} --flow "${flowName}" --yes\n` +
|
|
127
130
|
`Otherwise, pass the app's origin instead of its app_key to disambiguate.`,
|
|
128
|
-
forgetDryRun: (appKey, origin, entries, flows) => `This would delete app "${appKey}" (${origin}) — ${entries} entr${entries === 1 ? 'y' : 'ies'} and ${flows} flow${flows === 1 ? '' : 's'}
|
|
131
|
+
forgetDryRun: (appKey, origin, entries, flows, insights) => `This would delete app "${appKey}" (${origin}) — ${entries} entr${entries === 1 ? 'y' : 'ies'} and ${flows} flow${flows === 1 ? '' : 's'}` +
|
|
132
|
+
(insights > 0
|
|
133
|
+
? `, plus ${insights} ${insights === 1 ? 'pitfall/mechanism' : 'pitfalls/mechanisms'}`
|
|
134
|
+
: '') +
|
|
135
|
+
`.\n` +
|
|
129
136
|
`Nothing was deleted. Re-run with --yes to confirm:\n` +
|
|
130
137
|
` browser-link map forget ${appKey} --yes`,
|
|
131
|
-
appForgotten: (appKey, deletedEntries) => `Deleted app "${appKey}" and its ${deletedEntries} entr${deletedEntries === 1 ? 'y' : 'ies'} (flows deleted along with it)
|
|
138
|
+
appForgotten: (appKey, deletedEntries, deletedInsights) => `Deleted app "${appKey}" and its ${deletedEntries} entr${deletedEntries === 1 ? 'y' : 'ies'} (flows deleted along with it)` +
|
|
139
|
+
(deletedInsights > 0
|
|
140
|
+
? `, plus ${deletedInsights} ${deletedInsights === 1 ? 'pitfall/mechanism' : 'pitfalls/mechanisms'}`
|
|
141
|
+
: '') +
|
|
142
|
+
`.`,
|
|
143
|
+
colInsights: 'INSIGHTS',
|
|
144
|
+
insightFlagRequiresValue: (flag) => `${flag} requires a key: browser-link map forget <app> ${flag} <key>`,
|
|
145
|
+
insightNotFound: (kind, key, appKey, origin) => `No ${kind} named "${key}" on app "${appKey}" (${origin}).`,
|
|
146
|
+
insightForgotten: (kind, key, appKey, origin) => `Deleted ${kind} "${key}" from "${appKey}" (${origin}).`,
|
|
147
|
+
insightForgetAmbiguous: (kind, key, appKey, origin, identifier, candidateCount) => `"${identifier}" matches ${candidateCount} apps (same app_key on different origins).\n` +
|
|
148
|
+
`This would delete ${kind} "${key}" from "${appKey}" (${origin}) — the most recently seen match.\n` +
|
|
149
|
+
`Nothing was deleted. If that is the right app, re-run with --yes to confirm:\n` +
|
|
150
|
+
` browser-link map forget ${identifier} --${kind} "${key}" --yes\n` +
|
|
151
|
+
`Otherwise, pass the app's origin instead of its app_key to disambiguate.`,
|
|
132
152
|
exportWritten: (path, appCount) => `Wrote ${appCount} app${appCount === 1 ? '' : 's'} to ${path}.`,
|
|
133
153
|
exportWriteFailed: (path, detail) => `Could not write "${path}": ${detail}`,
|
|
134
154
|
exportPrivacyNote: 'This file may contain UI structure and flow steps you saved — review it before sharing. The map only ever stores placeholders instead of real data, but it is only as clean as what was saved.',
|
|
@@ -140,6 +160,7 @@ const MAP_I18N = {
|
|
|
140
160
|
importMalformedApp: 'Malformed app entry in the export file (missing origin or app_key).',
|
|
141
161
|
importFlowError: (appKey, flowName, error) => `${appKey} / flow "${flowName}": ${error}`,
|
|
142
162
|
importEntryError: (appKey, index, error) => `${appKey} / entry #${index}: ${error}`,
|
|
163
|
+
importInsightError: (appKey, kind, index, error) => `${appKey} / ${kind} #${index}: ${error}`,
|
|
143
164
|
importCapExceeded: (what, found, max) => `too many ${what} in one file: ${found} (max ${max})`,
|
|
144
165
|
importAborted: (errors) => `Import aborted — ${errors.length} invalid item${errors.length === 1 ? '' : 's'}, nothing was written:\n` +
|
|
145
166
|
errors.map((e) => ` - ${e}`).join('\n'),
|
|
@@ -147,7 +168,14 @@ const MAP_I18N = {
|
|
|
147
168
|
(s.appsReplaced > 0 ? ` (${s.appsReplaced} replaced)` : '') +
|
|
148
169
|
`, ${s.entriesImported} entr${s.entriesImported === 1 ? 'y' : 'ies'}` +
|
|
149
170
|
(s.entriesSkipped > 0 ? ` (${s.entriesSkipped} duplicate skipped)` : '') +
|
|
150
|
-
`, ${s.flowsImported} flow${s.flowsImported === 1 ? '' : 's'}
|
|
171
|
+
`, ${s.flowsImported} flow${s.flowsImported === 1 ? '' : 's'}` +
|
|
172
|
+
(s.pitfallsImported > 0
|
|
173
|
+
? `, ${s.pitfallsImported} pitfall${s.pitfallsImported === 1 ? '' : 's'}`
|
|
174
|
+
: '') +
|
|
175
|
+
(s.mechanismsImported > 0
|
|
176
|
+
? `, ${s.mechanismsImported} mechanism${s.mechanismsImported === 1 ? '' : 's'}`
|
|
177
|
+
: '') +
|
|
178
|
+
`.`,
|
|
151
179
|
unknownAction: (action) => `Unknown map action: ${action}. Use (no arg for list) | show | forget | export | import.`,
|
|
152
180
|
},
|
|
153
181
|
es: {
|
|
@@ -164,6 +192,8 @@ const MAP_I18N = {
|
|
|
164
192
|
lastSeenLabel: 'última vez:',
|
|
165
193
|
entriesHeader: (n) => `Entradas (${n}):`,
|
|
166
194
|
flowsHeader: (n) => `Flows (${n}):`,
|
|
195
|
+
pitfallsHeader: (n) => `Trampas (${n}):`,
|
|
196
|
+
mechanismsHeader: (n) => `Mecanismos (${n}):`,
|
|
167
197
|
none: '(ninguno)',
|
|
168
198
|
statusVerified: 'verificado',
|
|
169
199
|
statusFailed: 'FALLÓ',
|
|
@@ -171,7 +201,7 @@ const MAP_I18N = {
|
|
|
171
201
|
appNotFound: (identifier, known) => known.length === 0
|
|
172
202
|
? `Ninguna app coincide con "${identifier}" — el mapa está vacío.`
|
|
173
203
|
: `Ninguna app coincide con "${identifier}" por app_key u origen. App_keys conocidas: ${known.join(', ')}`,
|
|
174
|
-
forgetUsage: 'Uso: browser-link map forget <app> [--flow <nombre>] [--yes]',
|
|
204
|
+
forgetUsage: 'Uso: browser-link map forget <app> [--flow <nombre> | --pitfall <clave> | --mechanism <clave>] [--yes]',
|
|
175
205
|
flowFlagRequiresValue: '--flow requiere un nombre de flow: browser-link map forget <app> --flow <nombre>',
|
|
176
206
|
flowNotFound: (flowName, appKey, origin) => `No hay un flow llamado "${flowName}" en la app "${appKey}" (${origin}).`,
|
|
177
207
|
flowForgotten: (flowName, appKey, origin) => `Se eliminó el flow "${flowName}" de "${appKey}" (${origin}).`,
|
|
@@ -180,10 +210,27 @@ const MAP_I18N = {
|
|
|
180
210
|
`No se eliminó nada. Si esa es la app correcta, volvé a correr con --yes para confirmar:\n` +
|
|
181
211
|
` browser-link map forget ${identifier} --flow "${flowName}" --yes\n` +
|
|
182
212
|
`Si no, pasá el origin de la app en lugar de su app_key para desambiguar.`,
|
|
183
|
-
forgetDryRun: (appKey, origin, entries, flows) => `Esto eliminaría la app "${appKey}" (${origin}) — ${entries} entrada${entries === 1 ? '' : 's'} y ${flows} flow${flows === 1 ? '' : 's'}
|
|
213
|
+
forgetDryRun: (appKey, origin, entries, flows, insights) => `Esto eliminaría la app "${appKey}" (${origin}) — ${entries} entrada${entries === 1 ? '' : 's'} y ${flows} flow${flows === 1 ? '' : 's'}` +
|
|
214
|
+
(insights > 0
|
|
215
|
+
? `, más ${insights} ${insights === 1 ? 'trampa/mecanismo' : 'trampas/mecanismos'}`
|
|
216
|
+
: '') +
|
|
217
|
+
`.\n` +
|
|
184
218
|
`No se eliminó nada. Volvé a correr con --yes para confirmar:\n` +
|
|
185
219
|
` browser-link map forget ${appKey} --yes`,
|
|
186
|
-
appForgotten: (appKey, deletedEntries) => `Se eliminó la app "${appKey}" y sus ${deletedEntries} entrada${deletedEntries === 1 ? '' : 's'} (los flows se eliminaron junto con ella)
|
|
220
|
+
appForgotten: (appKey, deletedEntries, deletedInsights) => `Se eliminó la app "${appKey}" y sus ${deletedEntries} entrada${deletedEntries === 1 ? '' : 's'} (los flows se eliminaron junto con ella)` +
|
|
221
|
+
(deletedInsights > 0
|
|
222
|
+
? `, más ${deletedInsights} ${deletedInsights === 1 ? 'trampa/mecanismo' : 'trampas/mecanismos'}`
|
|
223
|
+
: '') +
|
|
224
|
+
`.`,
|
|
225
|
+
colInsights: 'TRAMPAS/MEC.',
|
|
226
|
+
insightFlagRequiresValue: (flag) => `${flag} requiere una clave: browser-link map forget <app> ${flag} <clave>`,
|
|
227
|
+
insightNotFound: (kind, key, appKey, origin) => `No hay un ${kind} llamado "${key}" en la app "${appKey}" (${origin}).`,
|
|
228
|
+
insightForgotten: (kind, key, appKey, origin) => `Se eliminó el ${kind} "${key}" de "${appKey}" (${origin}).`,
|
|
229
|
+
insightForgetAmbiguous: (kind, key, appKey, origin, identifier, candidateCount) => `"${identifier}" coincide con ${candidateCount} apps (mismo app_key en distintos orígenes).\n` +
|
|
230
|
+
`Esto eliminaría el ${kind} "${key}" de "${appKey}" (${origin}) — la coincidencia vista más recientemente.\n` +
|
|
231
|
+
`No se eliminó nada. Si esa es la app correcta, volvé a correr con --yes para confirmar:\n` +
|
|
232
|
+
` browser-link map forget ${identifier} --${kind} "${key}" --yes\n` +
|
|
233
|
+
`Si no, pasá el origin de la app en lugar de su app_key para desambiguar.`,
|
|
187
234
|
exportWritten: (path, appCount) => `Se escribieron ${appCount} app${appCount === 1 ? '' : 's'} en ${path}.`,
|
|
188
235
|
exportWriteFailed: (path, detail) => `No se pudo escribir "${path}": ${detail}`,
|
|
189
236
|
exportPrivacyNote: 'Este archivo puede contener estructura de UI y pasos de flows que se guardaron — revisalo antes de compartirlo. El mapa solo guarda placeholders en vez de datos reales, pero queda tan limpio como lo que se haya guardado.',
|
|
@@ -195,6 +242,7 @@ const MAP_I18N = {
|
|
|
195
242
|
importMalformedApp: 'Entrada de app inválida en el archivo de exportación (falta origin o app_key).',
|
|
196
243
|
importFlowError: (appKey, flowName, error) => `${appKey} / flow "${flowName}": ${error}`,
|
|
197
244
|
importEntryError: (appKey, index, error) => `${appKey} / entrada #${index}: ${error}`,
|
|
245
|
+
importInsightError: (appKey, kind, index, error) => `${appKey} / ${kind} #${index}: ${error}`,
|
|
198
246
|
importCapExceeded: (what, found, max) => `demasiados ${what} en un solo archivo: ${found} (máximo ${max})`,
|
|
199
247
|
importAborted: (errors) => `Importación abortada — ${errors.length} elemento${errors.length === 1 ? '' : 's'} inválido${errors.length === 1 ? '' : 's'}, no se escribió nada:\n` +
|
|
200
248
|
errors.map((e) => ` - ${e}`).join('\n'),
|
|
@@ -206,7 +254,14 @@ const MAP_I18N = {
|
|
|
206
254
|
(s.entriesSkipped > 0
|
|
207
255
|
? ` (${s.entriesSkipped} duplicada${s.entriesSkipped === 1 ? '' : 's'} omitida${s.entriesSkipped === 1 ? '' : 's'})`
|
|
208
256
|
: '') +
|
|
209
|
-
`, ${s.flowsImported} flow${s.flowsImported === 1 ? '' : 's'}
|
|
257
|
+
`, ${s.flowsImported} flow${s.flowsImported === 1 ? '' : 's'}` +
|
|
258
|
+
(s.pitfallsImported > 0
|
|
259
|
+
? `, ${s.pitfallsImported} trampa${s.pitfallsImported === 1 ? '' : 's'}`
|
|
260
|
+
: '') +
|
|
261
|
+
(s.mechanismsImported > 0
|
|
262
|
+
? `, ${s.mechanismsImported} mecanismo${s.mechanismsImported === 1 ? '' : 's'}`
|
|
263
|
+
: '') +
|
|
264
|
+
`.`,
|
|
210
265
|
unknownAction: (action) => `Acción de map desconocida: ${action}. Usá (sin argumento para listar) | show | forget | export | import.`,
|
|
211
266
|
},
|
|
212
267
|
};
|
|
@@ -222,12 +277,13 @@ function runLs(language) {
|
|
|
222
277
|
const apps = listAppsWithCounts();
|
|
223
278
|
if (apps.length === 0)
|
|
224
279
|
return t.lsEmpty;
|
|
225
|
-
const header = [t.colAppKey, t.colOrigin, t.colEntries, t.colFlows, t.colLastSeen];
|
|
280
|
+
const header = [t.colAppKey, t.colOrigin, t.colEntries, t.colFlows, t.colInsights, t.colLastSeen];
|
|
226
281
|
const rows = apps.map((a) => [
|
|
227
282
|
a.app_key,
|
|
228
283
|
a.origin,
|
|
229
284
|
String(a.entries),
|
|
230
285
|
String(a.flows),
|
|
286
|
+
String(a.insights),
|
|
231
287
|
formatRelative(a.last_seen_at, language),
|
|
232
288
|
]);
|
|
233
289
|
return renderTable(header, rows);
|
|
@@ -249,6 +305,22 @@ function runShow(argv, language) {
|
|
|
249
305
|
lines.push(` ${t.notesLabel} ${app.notes}`);
|
|
250
306
|
lines.push(` ${t.lastSeenLabel} ${formatRelative(app.last_seen_at, language)}`);
|
|
251
307
|
lines.push('');
|
|
308
|
+
// Pitfalls first, then mechanisms — same order browser.map.recall uses.
|
|
309
|
+
for (const [kind, header] of [
|
|
310
|
+
['pitfall', t.pitfallsHeader],
|
|
311
|
+
['mechanism', t.mechanismsHeader],
|
|
312
|
+
]) {
|
|
313
|
+
const rows = listInsights(app.id, kind);
|
|
314
|
+
if (rows.length === 0)
|
|
315
|
+
continue;
|
|
316
|
+
lines.push(header(rows.length));
|
|
317
|
+
for (const r of rows) {
|
|
318
|
+
lines.push(` ${r.key} — ${r.description}`);
|
|
319
|
+
if (r.symptom)
|
|
320
|
+
lines.push(` ${r.symptom}`);
|
|
321
|
+
}
|
|
322
|
+
lines.push('');
|
|
323
|
+
}
|
|
252
324
|
lines.push(t.entriesHeader(entries.length));
|
|
253
325
|
if (entries.length === 0) {
|
|
254
326
|
lines.push(` ${t.none}`);
|
|
@@ -296,6 +368,16 @@ function runForget(argv, language) {
|
|
|
296
368
|
if (flags.flow === true)
|
|
297
369
|
throw new Error(t.flowFlagRequiresValue);
|
|
298
370
|
const flowName = typeof flags.flow === 'string' ? flags.flow : undefined;
|
|
371
|
+
// Same valueless-flag rule for --pitfall / --mechanism.
|
|
372
|
+
if (flags.pitfall === true)
|
|
373
|
+
throw new Error(t.insightFlagRequiresValue('--pitfall'));
|
|
374
|
+
if (flags.mechanism === true)
|
|
375
|
+
throw new Error(t.insightFlagRequiresValue('--mechanism'));
|
|
376
|
+
const insightTarget = typeof flags.pitfall === 'string'
|
|
377
|
+
? { kind: 'pitfall', key: flags.pitfall }
|
|
378
|
+
: typeof flags.mechanism === 'string'
|
|
379
|
+
? { kind: 'mechanism', key: flags.mechanism }
|
|
380
|
+
: undefined;
|
|
299
381
|
// Destructive command — resolve through findAppCandidates, not findApp,
|
|
300
382
|
// so an ambiguous identifier (same app_key saved on two origins) is
|
|
301
383
|
// DETECTED instead of silently resolving to the most-recently-seen app
|
|
@@ -317,12 +399,23 @@ function runForget(argv, language) {
|
|
|
317
399
|
deleteFlow(app.id, flowName);
|
|
318
400
|
return t.flowForgotten(flowName, app.app_key, app.origin);
|
|
319
401
|
}
|
|
402
|
+
if (insightTarget !== undefined) {
|
|
403
|
+
const { kind, key } = insightTarget;
|
|
404
|
+
if (!listInsights(app.id, kind).some((r) => r.key === key)) {
|
|
405
|
+
throw new Error(t.insightNotFound(kind, key, app.app_key, app.origin));
|
|
406
|
+
}
|
|
407
|
+
if (candidates.length > 1 && flags.yes !== true) {
|
|
408
|
+
return t.insightForgetAmbiguous(kind, key, app.app_key, app.origin, identifier, candidates.length);
|
|
409
|
+
}
|
|
410
|
+
forget({ insight: { app_id: app.id, kind, key } });
|
|
411
|
+
return t.insightForgotten(kind, key, app.app_key, app.origin);
|
|
412
|
+
}
|
|
320
413
|
if (flags.yes !== true) {
|
|
321
414
|
const summary = listAppsWithCounts().find((a) => a.id === app.id);
|
|
322
|
-
return t.forgetDryRun(app.app_key, app.origin, summary?.entries ?? 0, summary?.flows ?? 0);
|
|
415
|
+
return t.forgetDryRun(app.app_key, app.origin, summary?.entries ?? 0, summary?.flows ?? 0, summary?.insights ?? 0);
|
|
323
416
|
}
|
|
324
417
|
const result = forget({ app_id: app.id });
|
|
325
|
-
return t.appForgotten(app.app_key, result.deleted_entries);
|
|
418
|
+
return t.appForgotten(app.app_key, result.deleted_entries, result.deleted_insights);
|
|
326
419
|
}
|
|
327
420
|
const MAP_EXPORT_VERSION = 1;
|
|
328
421
|
function buildExport(appFilter, t) {
|
|
@@ -350,9 +443,18 @@ function buildExport(appFilter, t) {
|
|
|
350
443
|
steps: f.steps,
|
|
351
444
|
use_count: f.use_count,
|
|
352
445
|
})),
|
|
446
|
+
pitfalls: exportInsights(app.id, 'pitfall'),
|
|
447
|
+
mechanisms: exportInsights(app.id, 'mechanism'),
|
|
353
448
|
})),
|
|
354
449
|
};
|
|
355
450
|
}
|
|
451
|
+
function exportInsights(appId, kind) {
|
|
452
|
+
return listInsights(appId, kind).map((r) => ({
|
|
453
|
+
key: r.key,
|
|
454
|
+
description: r.description,
|
|
455
|
+
symptom: r.symptom,
|
|
456
|
+
}));
|
|
457
|
+
}
|
|
356
458
|
function runExport(argv, language) {
|
|
357
459
|
const t = MAP_I18N[language];
|
|
358
460
|
const { positionals, flags } = parseArgs(argv);
|
|
@@ -381,6 +483,7 @@ function isRecord(v) {
|
|
|
381
483
|
const MAX_IMPORT_APPS = 500;
|
|
382
484
|
const MAX_IMPORT_ENTRIES = 5_000;
|
|
383
485
|
const MAX_IMPORT_FLOWS = 1_000;
|
|
486
|
+
const MAX_IMPORT_INSIGHTS = 5_000; // pitfalls + mechanisms combined
|
|
384
487
|
const MAX_IMPORT_ITEM_BYTES = 1_048_576; // 1 MiB
|
|
385
488
|
const ENTRY_KINDS = new Set(['selector', 'flow', 'gotcha']);
|
|
386
489
|
/** Parse + container-shape checks. Throws (single error, no aggregation)
|
|
@@ -415,6 +518,8 @@ function parseExportFile(raw, t) {
|
|
|
415
518
|
notes: typeof app.notes === 'string' ? app.notes : null,
|
|
416
519
|
entries: Array.isArray(app.entries) ? app.entries : [],
|
|
417
520
|
flows: Array.isArray(app.flows) ? app.flows : [],
|
|
521
|
+
pitfalls: Array.isArray(app.pitfalls) ? app.pitfalls : [],
|
|
522
|
+
mechanisms: Array.isArray(app.mechanisms) ? app.mechanisms : [],
|
|
418
523
|
};
|
|
419
524
|
});
|
|
420
525
|
}
|
|
@@ -448,9 +553,11 @@ function validateImportFile(rawApps, t) {
|
|
|
448
553
|
}
|
|
449
554
|
let totalEntries = 0;
|
|
450
555
|
let totalFlows = 0;
|
|
556
|
+
let totalInsights = 0;
|
|
451
557
|
for (const rawApp of rawApps) {
|
|
452
558
|
totalEntries += rawApp.entries.length;
|
|
453
559
|
totalFlows += rawApp.flows.length;
|
|
560
|
+
totalInsights += rawApp.pitfalls.length + rawApp.mechanisms.length;
|
|
454
561
|
const entries = [];
|
|
455
562
|
rawApp.entries.forEach((item, index) => {
|
|
456
563
|
if (!isRecord(item)) {
|
|
@@ -530,6 +637,20 @@ function validateImportFile(rawApps, t) {
|
|
|
530
637
|
: 0,
|
|
531
638
|
});
|
|
532
639
|
});
|
|
640
|
+
const validateInsightList = (items, kind) => {
|
|
641
|
+
const out = [];
|
|
642
|
+
items.forEach((item, index) => {
|
|
643
|
+
// Same rules browser.map.save enforces (length caps, no symptom on
|
|
644
|
+
// a mechanism, trimmed key) — see parseInsight in map/tools.ts.
|
|
645
|
+
try {
|
|
646
|
+
out.push(parseInsight(item, kind));
|
|
647
|
+
}
|
|
648
|
+
catch (err) {
|
|
649
|
+
errors.push(t.importInsightError(rawApp.app_key, kind, index, err.message));
|
|
650
|
+
}
|
|
651
|
+
});
|
|
652
|
+
return out;
|
|
653
|
+
};
|
|
533
654
|
apps.push({
|
|
534
655
|
origin: rawApp.origin,
|
|
535
656
|
app_key: rawApp.app_key,
|
|
@@ -537,6 +658,8 @@ function validateImportFile(rawApps, t) {
|
|
|
537
658
|
notes: rawApp.notes,
|
|
538
659
|
entries,
|
|
539
660
|
flows,
|
|
661
|
+
pitfalls: validateInsightList(rawApp.pitfalls, 'pitfall'),
|
|
662
|
+
mechanisms: validateInsightList(rawApp.mechanisms, 'mechanism'),
|
|
540
663
|
});
|
|
541
664
|
}
|
|
542
665
|
if (totalEntries > MAX_IMPORT_ENTRIES) {
|
|
@@ -545,6 +668,9 @@ function validateImportFile(rawApps, t) {
|
|
|
545
668
|
if (totalFlows > MAX_IMPORT_FLOWS) {
|
|
546
669
|
errors.push(t.importCapExceeded('flows', totalFlows, MAX_IMPORT_FLOWS));
|
|
547
670
|
}
|
|
671
|
+
if (totalInsights > MAX_IMPORT_INSIGHTS) {
|
|
672
|
+
errors.push(t.importCapExceeded('insights', totalInsights, MAX_IMPORT_INSIGHTS));
|
|
673
|
+
}
|
|
548
674
|
return { errors, apps };
|
|
549
675
|
}
|
|
550
676
|
/** Structural equality good enough for JSON-shaped values (objects,
|
|
@@ -609,6 +735,8 @@ function writeImport(apps, replace) {
|
|
|
609
735
|
entriesImported: 0,
|
|
610
736
|
entriesSkipped: 0,
|
|
611
737
|
flowsImported: 0,
|
|
738
|
+
pitfallsImported: 0,
|
|
739
|
+
mechanismsImported: 0,
|
|
612
740
|
};
|
|
613
741
|
const runTxn = getDb().transaction((toImport) => {
|
|
614
742
|
for (const appData of toImport) {
|
|
@@ -663,6 +791,25 @@ function writeImport(apps, replace) {
|
|
|
663
791
|
});
|
|
664
792
|
summary.flowsImported++;
|
|
665
793
|
}
|
|
794
|
+
for (const [kind, items] of [
|
|
795
|
+
['pitfall', appData.pitfalls],
|
|
796
|
+
['mechanism', appData.mechanisms],
|
|
797
|
+
]) {
|
|
798
|
+
for (const item of items) {
|
|
799
|
+
saveInsight({
|
|
800
|
+
origin: app.origin,
|
|
801
|
+
app_key: app.app_key,
|
|
802
|
+
kind,
|
|
803
|
+
key: item.key,
|
|
804
|
+
description: item.description,
|
|
805
|
+
symptom: item.symptom,
|
|
806
|
+
});
|
|
807
|
+
if (kind === 'pitfall')
|
|
808
|
+
summary.pitfallsImported++;
|
|
809
|
+
else
|
|
810
|
+
summary.mechanismsImported++;
|
|
811
|
+
}
|
|
812
|
+
}
|
|
666
813
|
}
|
|
667
814
|
});
|
|
668
815
|
runTxn(apps);
|