@jobshimo/browser-link 0.18.3 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +2 -2
  2. package/dist/bridge/ipc-client.d.ts +17 -0
  3. package/dist/bridge/ipc-client.js +42 -0
  4. package/dist/bridge/ipc-client.js.map +1 -1
  5. package/dist/bridge/protocol.d.ts +28 -1
  6. package/dist/bridge/protocol.js +17 -0
  7. package/dist/bridge/protocol.js.map +1 -1
  8. package/dist/bridge/server.d.ts +13 -0
  9. package/dist/bridge/server.js +10 -0
  10. package/dist/bridge/server.js.map +1 -1
  11. package/dist/bridge/ws-bridge.d.ts +32 -0
  12. package/dist/bridge/ws-bridge.js +52 -1
  13. package/dist/bridge/ws-bridge.js.map +1 -1
  14. package/dist/cli.js +23 -0
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/about.js +64 -43
  17. package/dist/commands/about.js.map +1 -1
  18. package/dist/commands/config.d.ts +17 -0
  19. package/dist/commands/config.js +158 -0
  20. package/dist/commands/config.js.map +1 -0
  21. package/dist/commands/extension.js +2 -2
  22. package/dist/commands/extension.js.map +1 -1
  23. package/dist/commands/welcome.js +5 -5
  24. package/dist/commands/welcome.js.map +1 -1
  25. package/dist/config.d.ts +38 -0
  26. package/dist/config.js +25 -0
  27. package/dist/config.js.map +1 -1
  28. package/dist/extension/background.js +126 -29
  29. package/dist/extension/background.js.map +1 -1
  30. package/dist/extension/idle-policy.d.ts +106 -0
  31. package/dist/extension/idle-policy.js +132 -0
  32. package/dist/extension/idle-policy.js.map +1 -0
  33. package/dist/extension/manifest.json +1 -1
  34. package/dist/extension/popup.d.ts +1 -38
  35. package/dist/extension/popup.html +45 -0
  36. package/dist/extension/popup.js +87 -5
  37. package/dist/extension/popup.js.map +1 -1
  38. package/dist/messages.d.ts +26 -1
  39. package/dist/server.js +7 -2
  40. package/dist/server.js.map +1 -1
  41. package/dist/ui/screens/extension.js +2 -2
  42. package/dist/ui/screens/extension.js.map +1 -1
  43. package/package.json +1 -1
@@ -10,17 +10,17 @@ export const I18N_ABOUT = {
10
10
  'It is split in two pieces:',
11
11
  ' 1) This Node binary, the MCP server the client spawns over stdio.',
12
12
  ' 2) A small Chrome extension that you load manually. The extension',
13
- ' stays inert on every tab until you press "Conectar" on it. You',
14
- ' can enable as many tabs as you want, one by one. Tabs you do not',
15
- ' connect remain invisible to the agent.',
13
+ ' stays inert on every tab until you press "Connect this tab" on',
14
+ ' it. You can enable as many tabs as you want, one by one. Tabs',
15
+ ' you do not connect remain invisible to the agent.',
16
16
  ].join('\n'),
17
17
  howTitle: 'How does it work?',
18
18
  how: [
19
19
  'The Node binary listens on 127.0.0.1:17529 (loopback only — never on',
20
- 'a public interface). Each tab where you press "Conectar" opens its',
21
- 'own WebSocket to that port and registers a tab_id. From that moment',
22
- 'on, the agent can call tools targeting that tab_id, and the server',
23
- 'forwards each request to the extension over the WebSocket.',
20
+ 'a public interface). Each tab where you press "Connect this tab"',
21
+ 'opens its own WebSocket to that port and registers a tab_id. From',
22
+ 'that moment on, the agent can call tools targeting that tab_id, and',
23
+ 'the server forwards each request to the extension over the WebSocket.',
24
24
  ].join('\n'),
25
25
  bindingTitle: 'Process binding (zero-config defense)',
26
26
  binding: [
@@ -37,21 +37,31 @@ export const I18N_ABOUT = {
37
37
  ].join('\n'),
38
38
  bridgeToolsTitle: 'Tools the agent gets over the bridge',
39
39
  bridgeTools: [
40
- ' browser.list_tabs list connected tabs',
41
- ' browser.ping check the bridge to a tab',
42
- ' browser.snapshot dump title, url, text and interactive elements (filterable)',
43
- ' browser.find locate an element by visible text selector + coords',
44
- ' browser.state compact orientation snapshotfocused element, dialogs, scroll',
40
+ ' browser.list_tabs list connected tabs',
41
+ ' browser.my_tabs list tabs claimed by the calling agent',
42
+ ' browser.ping check the bridge to a tab',
43
+ ' browser.snapshot dump title, url, text and interactive elements (filterable)',
44
+ ' browser.find locate an element by visible text selector + coords',
45
+ ' browser.state compact orientation snapshot — focused element, dialogs, scroll',
45
46
  ' browser.canvas_screenshot capture a <canvas> as PNG/JPEG (Qt-WASM, WebGL, DOMless pages)',
46
- ' browser.navigate change the tab URL',
47
- ' browser.click click an element by CSS selector',
48
- ' browser.type type into an input',
49
- ' browser.press press a key (trusted CDP input, not synthetic)',
50
- ' browser.flow run a find/click/type/press/wait_for sequence in one call',
51
- ' browser.evaluate run JavaScript in the page context',
52
- ' browser.console recent console messages (rolling 200)',
53
- ' browser.network recent network requests (rolling 200)',
54
- ' browser.network_body fetch the body of a specific request',
47
+ ' browser.console recent console messages (rolling 200)',
48
+ ' browser.network recent network requests (rolling 200)',
49
+ ' browser.network_body fetch the body of a specific request',
50
+ ' browser.wait_for wait for a selector, JS expression, or network request',
51
+ ' browser.wait_for_tab wait for a popup/window.open tab and auto-claim it',
52
+ ' browser.events bridge lifecycle log (tab renamed/registered/claimed, …)',
53
+ ' browser.navigate change the tab URL',
54
+ ' browser.click click an element by CSS selector (occlusion-checked)',
55
+ ' browser.type type into an input',
56
+ ' browser.press press a key (trusted CDP input, not synthetic)',
57
+ ' browser.drag drag an element to another element or coordinate',
58
+ ' browser.flow run a find/click/type/press/wait_for sequence in one call',
59
+ ' browser.evaluate run JavaScript in the page context',
60
+ ' browser.dialog_respond answer a pending alert/confirm/prompt',
61
+ ' browser.set_permission grant/deny a browser permission for an origin',
62
+ ' browser.claim_tab reserve a tab for the calling agent',
63
+ ' browser.release_tab release a tab claim',
64
+ ' browser.reset soft-reset the bridge (drop tabs, claims, events)',
55
65
  ].join('\n'),
56
66
  mapToolsTitle: 'Persistent UI map (private, on your machine)',
57
67
  mapTools: [
@@ -107,18 +117,19 @@ export const I18N_ABOUT = {
107
117
  ' 1) Este binario de Node, el servidor MCP que el cliente arranca',
108
118
  ' por stdio.',
109
119
  ' 2) Una pequeña extensión de Chrome que cargás vos a mano. La',
110
- ' extensión queda inerte en cada pestaña hasta que pulsás',
111
- ' "Conectar" sobre ella. Podés habilitar todas las pestañas que',
112
- ' quieras, una por una. Las pestañas que no conectes siguen',
113
- ' invisibles al agente.',
120
+ ' extensión queda inerte en cada pestaña hasta que pulsás el',
121
+ ' botón "Connect this tab" sobre ella. Podés habilitar todas las',
122
+ ' pestañas que quieras, una por una. Las pestañas que no conectes',
123
+ ' siguen invisibles al agente.',
114
124
  ].join('\n'),
115
125
  howTitle: '¿Cómo funciona?',
116
126
  how: [
117
127
  'El binario de Node escucha en 127.0.0.1:17529 (solo loopback — nunca',
118
- 'en una interfaz pública). Cada pestaña donde pulsás "Conectar" abre',
119
- 'su propio WebSocket contra ese puerto y se registra con un tab_id.',
120
- 'Desde ahí, el agente puede llamar herramientas que apuntan a ese',
121
- 'tab_id y el servidor reenvía cada petición a la extensión.',
128
+ 'en una interfaz pública). Cada pestaña donde pulsás el botón',
129
+ '"Connect this tab" abre su propio WebSocket contra ese puerto y se',
130
+ 'registra con un tab_id. Desde ahí, el agente puede llamar',
131
+ 'herramientas que apuntan a ese tab_id y el servidor reenvía cada',
132
+ 'petición a la extensión.',
122
133
  ].join('\n'),
123
134
  bindingTitle: 'Validación por proceso (sin configuración)',
124
135
  binding: [
@@ -136,21 +147,31 @@ export const I18N_ABOUT = {
136
147
  ].join('\n'),
137
148
  bridgeToolsTitle: 'Herramientas que el agente expone vía el puente',
138
149
  bridgeTools: [
139
- ' browser.list_tabs listar pestañas conectadas',
140
- ' browser.ping comprobar el puente a una pestaña',
141
- ' browser.snapshot volcar título, url, texto y elementos interactivos (filtrable)',
142
- ' browser.find localizar un elemento por texto visible selector + coords',
143
- ' browser.state instantánea de orientaciónelemento enfocado, diálogos, scroll',
150
+ ' browser.list_tabs listar pestañas conectadas',
151
+ ' browser.my_tabs listar pestañas reclamadas por el agente que llama',
152
+ ' browser.ping comprobar el puente a una pestaña',
153
+ ' browser.snapshot volcar título, url, texto y elementos interactivos (filtrable)',
154
+ ' browser.find localizar un elemento por texto visible selector + coords',
155
+ ' browser.state instantánea de orientación — elemento enfocado, diálogos, scroll',
144
156
  ' browser.canvas_screenshot capturar un <canvas> como PNG/JPEG (Qt-WASM, WebGL, sin DOM)',
145
- ' browser.navigate cambiar la URL de la pestaña',
146
- ' browser.click hacer click en un elemento por CSS selector',
147
- ' browser.type escribir en un input',
148
- ' browser.press presionar una tecla (input CDP confiable, no sintético)',
149
- ' browser.flow encadenar find/click/type/press/wait_for en una sola llamada',
150
- ' browser.evaluate ejecutar JavaScript en el contexto de la página',
151
- ' browser.console mensajes recientes de consola (200 últimos)',
152
- ' browser.network peticiones de red recientes (200 últimas)',
153
- ' browser.network_body traer el body de una petición concreta',
157
+ ' browser.console mensajes recientes de consola (200 últimos)',
158
+ ' browser.network peticiones de red recientes (200 últimas)',
159
+ ' browser.network_body traer el body de una petición concreta',
160
+ ' browser.wait_for esperar un selector, expresión JS o petición de red',
161
+ ' browser.wait_for_tab esperar una pestaña emergente (window.open) y reclamarla',
162
+ ' browser.events log de eventos del puente (pestaña renombrada/registrada/…)',
163
+ ' browser.navigate cambiar la URL de la pestaña',
164
+ ' browser.click hacer click en un elemento por CSS selector (con chequeo de oclusión)',
165
+ ' browser.type escribir en un input',
166
+ ' browser.press presionar una tecla (input CDP confiable, no sintético)',
167
+ ' browser.drag arrastrar un elemento hacia otro elemento o coordenada',
168
+ ' browser.flow encadenar find/click/type/press/wait_for en una sola llamada',
169
+ ' browser.evaluate ejecutar JavaScript en el contexto de la página',
170
+ ' browser.dialog_respond responder un alert/confirm/prompt pendiente',
171
+ ' browser.set_permission otorgar/denegar un permiso del navegador para un origen',
172
+ ' browser.claim_tab reservar una pestaña para el agente que llama',
173
+ ' browser.release_tab liberar una reclamación de pestaña',
174
+ ' browser.reset reiniciar el puente (soltar pestañas, reclamos, eventos)',
154
175
  ].join('\n'),
155
176
  mapToolsTitle: 'Mapa de UI persistente (privado, en tu máquina)',
156
177
  mapTools: [
@@ -1 +1 @@
1
- {"version":3,"file":"about.js","sourceRoot":"","sources":["../../src/commands/about.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"about.js","sourceRoot":"","sources":["../../src/commands/about.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Language } from './welcome.js';
2
+ /** One formatted line describing the current `idleTtlMinutes` state, shared
3
+ * by both `config get` (no key — lists everything) and `config get idle-ttl`
4
+ * (just this one). */
5
+ export declare function getIdleTtlLine(language?: Language): string;
6
+ export declare function listConfig(language?: Language): string;
7
+ /** Override the IPC endpoint the live push dials. Production callers never
8
+ * set this (defaults to the real 127.0.0.1:17530); tests spin up an
9
+ * ephemeral IpcServer (port: 0) and pass its bound port so the push path
10
+ * is exercised against a real socket instead of always short-circuiting on
11
+ * "no primary reachable". */
12
+ export interface IpcPushOptions {
13
+ host?: string;
14
+ port?: number;
15
+ }
16
+ export declare function setIdleTtl(rawValue: string, language?: Language, ipcOptions?: IpcPushOptions): Promise<string>;
17
+ export declare function runConfigCommand(argv: string[], language?: Language): Promise<string>;
@@ -0,0 +1,158 @@
1
+ import { MAX_IDLE_TTL_MINUTES, MIN_IDLE_TTL_MINUTES, clampIdleTtlMinutes, loadConfig, saveConfig, } from '../config.js';
2
+ import { HandshakeError, IpcClient } from '../bridge/ipc-client.js';
3
+ import { readToken } from '../bridge/token.js';
4
+ const CFG_I18N = {
5
+ en: {
6
+ header: 'browser-link config',
7
+ idleTtlLabel: 'idle-ttl',
8
+ never: 'never (auto-disconnect disabled)',
9
+ minutes: (n) => `${n} min`,
10
+ notSetViaCli: "not set via CLI — the extension's own default/popup choice applies (30 min unless changed in the popup)",
11
+ invalidValue: (raw) => `Invalid idle-ttl value: "${raw}". Use a whole number of minutes (${MIN_IDLE_TTL_MINUTES}-${MAX_IDLE_TTL_MINUTES}) or "never".`,
12
+ clampedNote: (original, clamped) => ` (clamped from ${original} to ${clamped})`,
13
+ setSaved: (label) => `Idle-disconnect TTL set to ${label}.`,
14
+ pushedLive: (n) => ` Pushed immediately to ${n} connected tab(s).`,
15
+ pushedNone: ' No tabs are currently connected — it will apply the next time one connects.',
16
+ pushUnavailable: ' Could not reach a running browser-link primary (not running, or multi-agent mode is off) — it will apply the next time a tab connects.',
17
+ pushRejected: ' A running primary rejected the push (stale or mismatched multi-agent token — it may have just restarted). The value is saved and applies the next time a tab connects.',
18
+ usage: 'Usage: browser-link config get [idle-ttl] | browser-link config set idle-ttl <minutes|never>',
19
+ unknownKey: (key) => `Unknown config key: ${key}. Known keys: idle-ttl.`,
20
+ unknownAction: (action) => `Unknown config action: ${action}. Use get or set.`,
21
+ },
22
+ es: {
23
+ header: 'Configuración de browser-link',
24
+ idleTtlLabel: 'idle-ttl',
25
+ never: 'nunca (auto-desconexión deshabilitada)',
26
+ minutes: (n) => `${n} min`,
27
+ notSetViaCli: 'no configurado por CLI — se aplica el valor por defecto o el elegido en el popup de la extensión (30 min salvo que se haya cambiado en el popup)',
28
+ invalidValue: (raw) => `Valor de idle-ttl inválido: "${raw}". Usá un número entero de minutos (${MIN_IDLE_TTL_MINUTES}-${MAX_IDLE_TTL_MINUTES}) o "never".`,
29
+ clampedNote: (original, clamped) => ` (ajustado de ${original} a ${clamped})`,
30
+ setSaved: (label) => `TTL de auto-desconexión configurado a ${label}.`,
31
+ pushedLive: (n) => ` Aplicado de inmediato a ${n} pestaña(s) conectada(s).`,
32
+ pushedNone: ' No hay pestañas conectadas actualmente — se aplicará la próxima vez que una se conecte.',
33
+ pushUnavailable: ' No se pudo contactar a un browser-link primary en ejecución (no está corriendo, o el modo multi-agente está apagado) — se aplicará la próxima vez que una pestaña se conecte.',
34
+ pushRejected: ' Un primary en ejecución rechazó el push (token multi-agente obsoleto o no coincidente — puede haberse reiniciado recién). El valor quedó guardado y se aplicará la próxima vez que una pestaña se conecte.',
35
+ usage: 'Uso: browser-link config get [idle-ttl] | browser-link config set idle-ttl <minutos|never>',
36
+ unknownKey: (key) => `Clave de configuración desconocida: ${key}. Claves conocidas: idle-ttl.`,
37
+ unknownAction: (action) => `Acción de config desconocida: ${action}. Usá get o set.`,
38
+ },
39
+ };
40
+ /** One formatted line describing the current `idleTtlMinutes` state, shared
41
+ * by both `config get` (no key — lists everything) and `config get idle-ttl`
42
+ * (just this one). */
43
+ export function getIdleTtlLine(language = 'en') {
44
+ const t = CFG_I18N[language];
45
+ const cfg = loadConfig();
46
+ const value = cfg.idleTtlMinutes === undefined
47
+ ? t.notSetViaCli
48
+ : cfg.idleTtlMinutes === 0
49
+ ? t.never
50
+ : t.minutes(cfg.idleTtlMinutes);
51
+ return ` ${t.idleTtlLabel} ${value}`;
52
+ }
53
+ export function listConfig(language = 'en') {
54
+ const t = CFG_I18N[language];
55
+ return [t.header, '', getIdleTtlLine(language)].join('\n');
56
+ }
57
+ /**
58
+ * Parse the CLI's raw `<minutes|never>` argument.
59
+ *
60
+ * Distinct from `clampIdleTtlMinutes` (config.ts) on purpose: that function
61
+ * is a defensive safety net for VALUES THE USER NEVER TYPED (a corrupted
62
+ * config.json, a hand-edited file) — for those, silently falling back to
63
+ * the 30-minute default is the safer failure mode, since there's no one to
64
+ * tell. Here the user just typed something on a terminal RIGHT NOW: a
65
+ * genuinely unparsable value (letters, decimals) gets a clear error instead
66
+ * of a silent substitution, and an out-of-range integer gets clamped to the
67
+ * boundary WITH a note explaining what happened — both are more honest
68
+ * feedback loops for an interactive command than defaulting silently.
69
+ */
70
+ function parseIdleTtlArg(raw, t) {
71
+ const normalized = raw.trim().toLowerCase();
72
+ if (normalized === 'never' || normalized === '0')
73
+ return { minutes: 0, note: '' };
74
+ const parsed = Number(normalized);
75
+ if (!Number.isFinite(parsed) || !Number.isInteger(parsed)) {
76
+ throw new Error(t.invalidValue(raw));
77
+ }
78
+ if (parsed < MIN_IDLE_TTL_MINUTES || parsed > MAX_IDLE_TTL_MINUTES) {
79
+ const clamped = Math.min(Math.max(parsed, MIN_IDLE_TTL_MINUTES), MAX_IDLE_TTL_MINUTES);
80
+ return { minutes: clamped, note: t.clampedNote(parsed, clamped) };
81
+ }
82
+ return { minutes: parsed, note: '' };
83
+ }
84
+ /** Best-effort live push to an already-running primary over the
85
+ * multi-agent IPC bridge. Never throws — every failure degrades to a
86
+ * message. Failures are NOT collapsed into one diagnosis: an explicit
87
+ * hello-reject (stale/mismatched token, version mismatch) proves a primary
88
+ * IS running and gets `pushRejected`, while connection-refused / timeout /
89
+ * missing-token-file — where "no primary, or multi-agent off" is the
90
+ * honest reading — get `pushUnavailable`. */
91
+ async function tryPushLive(settings, t, ipcOptions = {}) {
92
+ const token = readToken();
93
+ if (!token)
94
+ return t.pushUnavailable;
95
+ const client = new IpcClient();
96
+ try {
97
+ await client.connect(token, {
98
+ host: ipcOptions.host,
99
+ port: ipcOptions.port,
100
+ handshakeTimeoutMs: 1500,
101
+ });
102
+ const ack = await client.sendSettingsPush(settings);
103
+ return ack.notified > 0 ? t.pushedLive(ack.notified) : t.pushedNone;
104
+ }
105
+ catch (err) {
106
+ // HandshakeError message shapes (see ipc-client.ts): "Primary
107
+ // rejected: <reason>" only when a live primary answered with an
108
+ // explicit hello-reject — timeouts and unexpected frames use other
109
+ // wording, and socket-level failures are not HandshakeErrors at all.
110
+ if (err instanceof HandshakeError && /rejected/i.test(err.message)) {
111
+ return t.pushRejected;
112
+ }
113
+ return t.pushUnavailable;
114
+ }
115
+ finally {
116
+ await client.disconnect().catch(() => {
117
+ /* best effort */
118
+ });
119
+ }
120
+ }
121
+ export async function setIdleTtl(rawValue, language = 'en', ipcOptions = {}) {
122
+ const t = CFG_I18N[language];
123
+ // Defensive final pass: parseIdleTtlArg already guarantees an in-range
124
+ // value or 0, so this is a no-op in practice — but it keeps ONE function
125
+ // as the single source of truth for "what counts as a safe stored value",
126
+ // matching the extension side's clampIdleTtlMinutes.
127
+ const { minutes: parsedMinutes, note } = parseIdleTtlArg(rawValue, t);
128
+ const minutes = clampIdleTtlMinutes(parsedMinutes);
129
+ const updatedAt = Date.now();
130
+ saveConfig({ idleTtlMinutes: minutes, idleTtlUpdatedAt: updatedAt });
131
+ const label = (minutes === 0 ? t.never : t.minutes(minutes)) + note;
132
+ const pushMessage = await tryPushLive({ idleTtlMinutes: minutes, updatedAt }, t, ipcOptions);
133
+ return t.setSaved(label) + pushMessage;
134
+ }
135
+ export async function runConfigCommand(argv, language = 'en') {
136
+ const t = CFG_I18N[language];
137
+ const action = argv.at(0);
138
+ const key = argv.at(1);
139
+ const value = argv.at(2);
140
+ if (action === undefined || action === 'get') {
141
+ if (key === undefined)
142
+ return listConfig(language);
143
+ if (key === 'idle-ttl')
144
+ return getIdleTtlLine(language);
145
+ throw new Error(t.unknownKey(key));
146
+ }
147
+ if (action === 'set') {
148
+ if (key === undefined)
149
+ throw new Error(t.usage);
150
+ if (key !== 'idle-ttl')
151
+ throw new Error(t.unknownKey(key));
152
+ if (value === undefined)
153
+ throw new Error(t.usage);
154
+ return setIdleTtl(value, language);
155
+ }
156
+ throw new Error(t.unknownAction(action));
157
+ }
158
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ const EXT_I18N = {
32
32
  selectButton: 'Click "Select Folder".',
33
33
  pathLabel: 'Chrome extension assets are at:',
34
34
  stepsLabel: 'Install steps:',
35
- afterLoading: 'After loading, open the extension popup on any tab and click "Conectar" to bridge it.',
35
+ afterLoading: 'After loading, open the extension popup on any tab and click "Connect this tab" to bridge it.',
36
36
  notFound: 'Extension assets not found. Run `npm run build:extension` (dev) or reinstall the package.',
37
37
  },
38
38
  es: {
@@ -43,7 +43,7 @@ const EXT_I18N = {
43
43
  selectButton: 'Hacé click en "Seleccionar carpeta".',
44
44
  pathLabel: 'Los assets de la extensión están en:',
45
45
  stepsLabel: 'Pasos de instalación:',
46
- afterLoading: 'Después de cargarla, abrí el popup de la extensión en cualquier pestaña y hacé click en "Conectar" para puentearla.',
46
+ afterLoading: 'Después de cargarla, abrí el popup de la extensión en cualquier pestaña y hacé click en "Connect this tab" para puentearla.',
47
47
  notFound: 'No se encontraron los assets. Corré `npm run build:extension` (dev) o reinstalá el paquete.',
48
48
  },
49
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/commands/extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/commands/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG;QACjB,+DAA+D;QAC/D,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;QAC7B,gFAAgF;QAChF,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC;QACpD,gGAAgG;QAChG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC;KAC/C,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAeD,MAAM,QAAQ,GAAoC;IAChD,EAAE,EAAE;QACF,UAAU,EAAE,4CAA4C;QACxD,SAAS,EAAE,sCAAsC;QACjD,YAAY,EAAE,wBAAwB;QACtC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE;QACpC,YAAY,EAAE,wBAAwB;QACtC,SAAS,EAAE,iCAAiC;QAC5C,UAAU,EAAE,gBAAgB;QAC5B,YAAY,EACV,+FAA+F;QACjG,QAAQ,EACN,2FAA2F;KAC9F;IACD,EAAE,EAAE;QACF,UAAU,EAAE,4CAA4C;QACxD,SAAS,EAAE,oDAAoD;QAC/D,YAAY,EAAE,uCAAuC;QACrD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE;QAC3C,YAAY,EAAE,sCAAsC;QACpD,SAAS,EAAE,sCAAsC;QACjD,UAAU,EAAE,uBAAuB;QACnC,YAAY,EACV,6HAA6H;QAC/H,QAAQ,EACN,6FAA6F;KAChG;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,CAAS,EAAE,QAAkB;IAClD,OAAO,QAAQ,KAAK,IAAI;QACtB,CAAC,CAAC,kDAAkD,CAAC,EAAE;QACvD,CAAC,CAAC,4CAA4C,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,aAAa,CAAC,QAAkB;IACvC,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,8BAA8B,CAAC;AAC/F,CAAC;AAED,SAAS,aAAa,CAAC,CAAS,EAAE,QAAkB;IAClD,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,OAAO,CAAC,OAAe,EAAE,QAAkB;IAClD,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAC5F,MAAM,CACP,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,OAAO;YACL,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,YAAY;YACd,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;YAChC,aAAa,CAAC,QAAQ,CAAC;SACxB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpG,CAAC;AAOD,MAAM,UAAU,gBAAgB,CAAC,WAAqB,IAAI;IACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;KACnD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,WAAqB,IAAI;IAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAC9B,CAAC"}
@@ -46,7 +46,7 @@ export const I18N_WELCOME = {
46
46
  'process act on your behalf. Disconnect a tab from the extension popup',
47
47
  'when you are done with it.',
48
48
  ].join('\n'),
49
- responsibility: 'You are responsible for every action the agent performs on the tabs you explicitly enable. The extension stays inert on any tab where you have not pressed "Conectar" yourself.',
49
+ responsibility: 'You are responsible for every action the agent performs on the tabs you explicitly enable. The extension stays inert on any tab where you have not pressed "Connect this tab" yourself.',
50
50
  extensionNote: 'The Chrome extension is custom and ships inside this package. The setup menu after this screen will tell you where it lives so you can load it via chrome://extensions → Load unpacked.',
51
51
  prompt: 'How do you want to proceed?',
52
52
  detailHint: 'Press i for the full breakdown · also available under About.',
@@ -100,10 +100,10 @@ export const I18N_WELCOME = {
100
100
  ].join('\n'),
101
101
  warningTitle: 'Leelo antes de continuar',
102
102
  warning: [
103
- 'Conectar una pestaña le da al agente acceso a todo lo que esté en esa',
104
- 'pestaña: sesiones iniciadas, tarjetas guardadas, wallets, banca,',
103
+ 'Una pestaña conectada le da al agente acceso a todo lo que esté en',
104
+ 'ella: sesiones iniciadas, tarjetas guardadas, wallets, banca,',
105
105
  'consolas de trabajo, paneles de administración… lo que el navegador',
106
- 'esté mostrando en ella en ese momento.',
106
+ 'esté mostrando en ese momento.',
107
107
  '',
108
108
  'Tratá al agente como a un dev junior con control remoto de esas',
109
109
  'pestañas: puede comprar cosas, enviar formularios, cambiar',
@@ -114,7 +114,7 @@ export const I18N_WELCOME = {
114
114
  'automatizado actúe en tu nombre. Desconectá la pestaña desde el popup',
115
115
  'cuando termines de usarla.',
116
116
  ].join('\n'),
117
- responsibility: 'Sos responsable de cada acción que el agente haga en las pestañas que habilitás explícitamente. La extensión se mantiene inerte en cualquier pestaña donde no hayas apretado "Conectar" vos mismo.',
117
+ responsibility: 'Sos responsable de cada acción que el agente haga en las pestañas que habilitás explícitamente. La extensión se mantiene inerte en cualquier pestaña donde no hayas apretado "Connect this tab" vos mismo.',
118
118
  extensionNote: 'La extensión de Chrome es custom y viene incluida en este paquete. El menú que aparece después de esta pantalla te dice exactamente dónde está para que la cargues vía chrome://extensions → Cargar sin empaquetar.',
119
119
  prompt: '¿Cómo querés seguir?',
120
120
  detailHint: 'Apretá i para ver el detalle completo · también disponible en About.',
@@ -1 +1 @@
1
- {"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -30,6 +30,44 @@ export interface BrowserLinkConfig {
30
30
  * the primary does). Has no effect when multiAgent is false.
31
31
  */
32
32
  autoReelect?: boolean;
33
+ /**
34
+ * CLI-side mirror of the extension's idle-disconnect TTL (see
35
+ * `packages/extension/src/idle-policy.ts`), in minutes. `0` means
36
+ * "never". Set via `browser-link config set idle-ttl <minutes|never>`.
37
+ *
38
+ * Deliberately left `undefined` — NOT defaulted to 30 here — when the
39
+ * CLI has never touched it: the WS bridge only pushes a `settings.update`
40
+ * to the extension when this field is explicitly set, so a popup-only
41
+ * user (who never ran the CLI command) never sees a spurious overwrite
42
+ * of their own choice with a server-side "default". See `idleTtlUpdatedAt`
43
+ * for the precedence rule when both sides have set a value.
44
+ */
45
+ idleTtlMinutes?: number;
46
+ /**
47
+ * Epoch-ms timestamp of the last `idleTtlMinutes` write from the CLI.
48
+ * Sent alongside `idleTtlMinutes` in every `settings.update` push so the
49
+ * extension can apply a last-write-wins precedence rule against its own
50
+ * locally-stored timestamp (popup edits stamp their own `Date.now()`).
51
+ * Always set together with `idleTtlMinutes` — never one without the other.
52
+ */
53
+ idleTtlUpdatedAt?: number;
33
54
  }
55
+ /** Safety-rail bounds mirrored from the extension's `idle-policy.ts` — kept
56
+ * as an independent copy (not a shared import) for the same reason
57
+ * `messages.ts` duplicates the wire types instead of depending on
58
+ * `@browser-link/shared`: the server publishes to npm standalone and must
59
+ * not carry an unresolvable workspace dependency. */
60
+ export declare const MIN_IDLE_TTL_MINUTES = 1;
61
+ export declare const MAX_IDLE_TTL_MINUTES = 1440;
62
+ export declare const DEFAULT_IDLE_TTL_MINUTES = 30;
63
+ /**
64
+ * Clamp a CLI-provided idle-TTL value the same way the extension clamps a
65
+ * stored one: `0` ("never") passes through untouched; a non-integer, an
66
+ * out-of-range value, or anything malformed falls back to
67
+ * `DEFAULT_IDLE_TTL_MINUTES` rather than being snapped to the nearest
68
+ * boundary. Exported so `commands/config.ts` and its tests share one
69
+ * implementation instead of re-deriving the bounds.
70
+ */
71
+ export declare function clampIdleTtlMinutes(value: number): number;
34
72
  export declare function loadConfig(): BrowserLinkConfig;
35
73
  export declare function saveConfig(patch: Partial<BrowserLinkConfig>): BrowserLinkConfig;
package/dist/config.js CHANGED
@@ -2,6 +2,31 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
3
  import { getDataDir } from './map/paths.js';
4
4
  import { sanitizeDisabledTools } from './permissions.js';
5
+ /** Safety-rail bounds mirrored from the extension's `idle-policy.ts` — kept
6
+ * as an independent copy (not a shared import) for the same reason
7
+ * `messages.ts` duplicates the wire types instead of depending on
8
+ * `@browser-link/shared`: the server publishes to npm standalone and must
9
+ * not carry an unresolvable workspace dependency. */
10
+ export const MIN_IDLE_TTL_MINUTES = 1;
11
+ export const MAX_IDLE_TTL_MINUTES = 1440;
12
+ export const DEFAULT_IDLE_TTL_MINUTES = 30;
13
+ /**
14
+ * Clamp a CLI-provided idle-TTL value the same way the extension clamps a
15
+ * stored one: `0` ("never") passes through untouched; a non-integer, an
16
+ * out-of-range value, or anything malformed falls back to
17
+ * `DEFAULT_IDLE_TTL_MINUTES` rather than being snapped to the nearest
18
+ * boundary. Exported so `commands/config.ts` and its tests share one
19
+ * implementation instead of re-deriving the bounds.
20
+ */
21
+ export function clampIdleTtlMinutes(value) {
22
+ if (value === 0)
23
+ return 0;
24
+ if (!Number.isFinite(value) || !Number.isInteger(value))
25
+ return DEFAULT_IDLE_TTL_MINUTES;
26
+ if (value < MIN_IDLE_TTL_MINUTES || value > MAX_IDLE_TTL_MINUTES)
27
+ return DEFAULT_IDLE_TTL_MINUTES;
28
+ return value;
29
+ }
5
30
  /** Defaults applied at load time so consumers can read `cfg.multiAgent`
6
31
  * directly. Persisted form (see `normaliseForWrite`) only carries the field
7
32
  * when the user overrides the default, keeping the on-disk config minimal. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}