@jobshimo/browser-link 0.21.0 → 0.23.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.
Files changed (92) hide show
  1. package/README.md +5 -0
  2. package/dist/agent-instructions/content.js +11 -0
  3. package/dist/agent-instructions/content.js.map +1 -1
  4. package/dist/bridge/events.d.ts +1 -1
  5. package/dist/bridge/events.js +6 -1
  6. package/dist/bridge/events.js.map +1 -1
  7. package/dist/bridge/ipc-client.d.ts +6 -7
  8. package/dist/bridge/ipc-client.js +4 -3
  9. package/dist/bridge/ipc-client.js.map +1 -1
  10. package/dist/bridge/protocol.d.ts +28 -16
  11. package/dist/bridge/protocol.js +23 -7
  12. package/dist/bridge/protocol.js.map +1 -1
  13. package/dist/bridge/server.d.ts +8 -10
  14. package/dist/bridge/server.js.map +1 -1
  15. package/dist/bridge/ws-bridge.d.ts +53 -18
  16. package/dist/bridge/ws-bridge.js +129 -21
  17. package/dist/bridge/ws-bridge.js.map +1 -1
  18. package/dist/cdp/client.d.ts +35 -0
  19. package/dist/cdp/client.js +149 -0
  20. package/dist/cdp/client.js.map +1 -0
  21. package/dist/cdp/flow.d.ts +178 -0
  22. package/dist/cdp/flow.js +217 -0
  23. package/dist/cdp/flow.js.map +1 -0
  24. package/dist/cdp/gate.d.ts +31 -0
  25. package/dist/cdp/gate.js +35 -0
  26. package/dist/cdp/gate.js.map +1 -0
  27. package/dist/cdp/grant.d.ts +45 -0
  28. package/dist/cdp/grant.js +81 -0
  29. package/dist/cdp/grant.js.map +1 -0
  30. package/dist/cdp/inpage/builders.d.ts +165 -0
  31. package/dist/cdp/inpage/builders.js +501 -0
  32. package/dist/cdp/inpage/builders.js.map +1 -0
  33. package/dist/cdp/inpage/deep-query.d.ts +57 -0
  34. package/dist/cdp/inpage/deep-query.js +325 -0
  35. package/dist/cdp/inpage/deep-query.js.map +1 -0
  36. package/dist/cdp/inpage/dom-helpers.d.ts +27 -0
  37. package/dist/cdp/inpage/dom-helpers.js +147 -0
  38. package/dist/cdp/inpage/dom-helpers.js.map +1 -0
  39. package/dist/cdp/keymap.d.ts +83 -0
  40. package/dist/cdp/keymap.js +205 -0
  41. package/dist/cdp/keymap.js.map +1 -0
  42. package/dist/cdp/settle.d.ts +38 -0
  43. package/dist/cdp/settle.js +76 -0
  44. package/dist/cdp/settle.js.map +1 -0
  45. package/dist/cdp/support.d.ts +26 -0
  46. package/dist/cdp/support.js +58 -0
  47. package/dist/cdp/support.js.map +1 -0
  48. package/dist/cdp/targets.d.ts +54 -0
  49. package/dist/cdp/targets.js +176 -0
  50. package/dist/cdp/targets.js.map +1 -0
  51. package/dist/cdp/transport.d.ts +31 -0
  52. package/dist/cdp/transport.js +531 -0
  53. package/dist/cdp/transport.js.map +1 -0
  54. package/dist/cli.js +64 -2
  55. package/dist/cli.js.map +1 -1
  56. package/dist/commands/about.js +13 -0
  57. package/dist/commands/about.js.map +1 -1
  58. package/dist/commands/cdp.d.ts +28 -0
  59. package/dist/commands/cdp.js +172 -0
  60. package/dist/commands/cdp.js.map +1 -0
  61. package/dist/commands/config.d.ts +97 -0
  62. package/dist/commands/config.js +228 -13
  63. package/dist/commands/config.js.map +1 -1
  64. package/dist/config.d.ts +89 -0
  65. package/dist/config.js +94 -1
  66. package/dist/config.js.map +1 -1
  67. package/dist/extension/background.js +424 -1
  68. package/dist/extension/background.js.map +1 -1
  69. package/dist/extension/flow-recording-policy.d.ts +47 -0
  70. package/dist/extension/flow-recording-policy.js +54 -0
  71. package/dist/extension/flow-recording-policy.js.map +1 -0
  72. package/dist/extension/inpage/recorder.d.ts +35 -0
  73. package/dist/extension/inpage/recorder.js +333 -0
  74. package/dist/extension/inpage/recorder.js.map +1 -0
  75. package/dist/extension/manifest.json +1 -1
  76. package/dist/extension/popup.html +56 -0
  77. package/dist/extension/popup.js +195 -4
  78. package/dist/extension/popup.js.map +1 -1
  79. package/dist/extension/recording.d.ts +158 -0
  80. package/dist/extension/recording.js +214 -0
  81. package/dist/extension/recording.js.map +1 -0
  82. package/dist/messages.d.ts +53 -12
  83. package/dist/server.js +9 -0
  84. package/dist/server.js.map +1 -1
  85. package/dist/tools/browser-definitions.js +4 -3
  86. package/dist/tools/browser-definitions.js.map +1 -1
  87. package/dist/tools/browser-dispatch.d.ts +31 -0
  88. package/dist/tools/browser-dispatch.js +88 -40
  89. package/dist/tools/browser-dispatch.js.map +1 -1
  90. package/dist/tools/server-instructions.js +19 -0
  91. package/dist/tools/server-instructions.js.map +1 -1
  92. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -9,6 +9,7 @@ import { runToolsCommand } from './commands/tools.js';
9
9
  import { runMultiAgentCommand } from './commands/multi-agent.js';
10
10
  import { runFreePort } from './commands/free-port.js';
11
11
  import { runConfigCommand } from './commands/config.js';
12
+ import { runCdpCommand } from './commands/cdp.js';
12
13
  import { runMapCommand } from './commands/map.js';
13
14
  import { formatStatus as formatInstructionsStatus, installInstructionsAll, installInstructionsFor, statusAll as instructionsStatusAll, statusFor as instructionsStatusFor, uninstallInstructionsAll, uninstallInstructionsFor, } from './commands/instructions.js';
14
15
  import { loadConfig } from './config.js';
@@ -41,7 +42,7 @@ Uso:
41
42
  browser-link multi-agent Estado del modo multi-agente y re-elección automática.
42
43
  browser-link multi-agent enable | disable
43
44
  browser-link multi-agent auto-reelect enable | disable
44
- browser-link config get Muestra todas las configuraciones conocidas (por ahora, idle-ttl).
45
+ browser-link config get Muestra todas las configuraciones conocidas (idle-ttl, flow-recording).
45
46
  browser-link config get idle-ttl
46
47
  Muestra el TTL de auto-desconexión por inactividad configurado.
47
48
  browser-link config set idle-ttl <minutos|never>
@@ -50,6 +51,36 @@ Uso:
50
51
  extensión — gana la última escritura (ver README). Bajar el TTL
51
52
  cuenta desde la última actividad de cada pestaña: una pestaña ya
52
53
  inactiva puede desconectarse en el próximo barrido.
54
+ browser-link config get flow-recording
55
+ Muestra si la grabación de flows por demostración está habilitada.
56
+ browser-link config set flow-recording <on|off>
57
+ Habilita/deshabilita la grabación de flows (opt-in, apagado por
58
+ defecto). El mismo valor es editable desde el popup de la
59
+ extensión — gana la última escritura (ver README).
60
+ browser-link config get cdp-direct.enabled | cdp-direct.port | cdp-direct.grant-ttl
61
+ Muestra la configuración de cdp-direct (ver "browser-link cdp"
62
+ más abajo).
63
+ browser-link config set cdp-direct.enabled <true|false>
64
+ Habilita/deshabilita el modo cdp-direct (apagado por defecto).
65
+ Habilitarlo NO alcanza para que un agente use una pestaña cdp: —
66
+ además hace falta un permiso vigente (browser-link cdp allow).
67
+ browser-link config set cdp-direct.port <puerto>
68
+ Puerto loopback para cdp-direct (default 9222). El host es
69
+ siempre 127.0.0.1, nunca configurable.
70
+ browser-link config set cdp-direct.grant-ttl <minutos|never>
71
+ Duración por defecto de un permiso otorgado con
72
+ "browser-link cdp allow" cuando no se pasa --minutes (default
73
+ 60, 1-1440, o "never" — reduce la postura de seguridad).
74
+ browser-link cdp allow [--minutes N]
75
+ Otorga un permiso de tiempo limitado para que los agentes usen
76
+ cdp-direct (ver la sección "cdp-direct mode" del README). Solo
77
+ vos podés correr esto — ningún agente puede otorgárselo a sí
78
+ mismo.
79
+ browser-link cdp revoke Revoca el permiso de cdp-direct vigente.
80
+ browser-link cdp status Muestra si cdp-direct está habilitado, el puerto configurado,
81
+ el estado del permiso (ninguno/vigente/expirado, tiempo
82
+ restante) y si hay un endpoint de Chrome DevTools alcanzable
83
+ ahora mismo en ese puerto.
53
84
  browser-link map Lista las apps que el mapa persistente de UI conoce
54
85
  (app_key, origin, cantidad de entradas/flows, última vez).
55
86
  browser-link map show <app> Muestra las entradas y flows guardados de una app
@@ -120,7 +151,7 @@ Usage:
120
151
  browser-link multi-agent Show multi-agent mode + auto-reelect status.
121
152
  browser-link multi-agent enable | disable
122
153
  browser-link multi-agent auto-reelect enable | disable
123
- browser-link config get Show every known config setting (currently just idle-ttl).
154
+ browser-link config get Show every known config setting (idle-ttl, flow-recording).
124
155
  browser-link config get idle-ttl
125
156
  Show the configured idle-disconnect TTL.
126
157
  browser-link config set idle-ttl <minutes|never>
@@ -129,6 +160,33 @@ Usage:
129
160
  last write wins (see README). Lowering the TTL counts from each
130
161
  tab's last activity: an already-idle tab may disconnect on the
131
162
  next sweep.
163
+ browser-link config get flow-recording
164
+ Show whether flow recording by demonstration is enabled.
165
+ browser-link config set flow-recording <on|off>
166
+ Enable/disable flow recording (opt-in, off by default). The same
167
+ setting is editable from the extension's popup — last write wins
168
+ (see README).
169
+ browser-link config get cdp-direct.enabled | cdp-direct.port | cdp-direct.grant-ttl
170
+ Show cdp-direct's configuration (see "browser-link cdp" below).
171
+ browser-link config set cdp-direct.enabled <true|false>
172
+ Enable/disable cdp-direct mode (off by default). Enabling it
173
+ alone does NOT let an agent use a cdp: tab — a live grant is
174
+ also required (browser-link cdp allow).
175
+ browser-link config set cdp-direct.port <port>
176
+ Loopback port cdp-direct dials (default 9222). The host is
177
+ always 127.0.0.1, never configurable.
178
+ browser-link config set cdp-direct.grant-ttl <minutes|never>
179
+ Default lifetime of a grant recorded by "browser-link cdp allow"
180
+ when --minutes is not passed (default 60, 1-1440, or "never" —
181
+ reduces the security posture).
182
+ browser-link cdp allow [--minutes N]
183
+ Record a time-boxed grant letting agents use cdp-direct (see the
184
+ README's "cdp-direct mode" section). Only you can run this — no
185
+ agent can grant itself access.
186
+ browser-link cdp revoke Revoke the current cdp-direct grant.
187
+ browser-link cdp status Show whether cdp-direct is enabled, the configured port, the
188
+ grant state (none/active/expired, remaining time), and whether a
189
+ Chrome DevTools endpoint is reachable right now on that port.
132
190
  browser-link map List apps known to the persistent UI map (app_key,
133
191
  origin, entry/flow counts, last seen).
134
192
  browser-link map show <app> Show the saved entries and flows for one app
@@ -290,6 +348,10 @@ async function dispatch(argv) {
290
348
  console.log(await runConfigCommand(rest, language));
291
349
  return;
292
350
  }
351
+ case 'cdp': {
352
+ console.log(await runCdpCommand(rest, language));
353
+ return;
354
+ }
293
355
  case 'map': {
294
356
  console.log(runMapCommand(rest, language));
295
357
  return;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,12 @@ export const I18N_ABOUT = {
21
21
  'opens its own WebSocket to that port and registers a tab_id. From',
22
22
  'that moment on, the agent can call tools targeting that tab_id, and',
23
23
  'the server forwards each request to the extension over the WebSocket.',
24
+ '',
25
+ 'Optional: cdp-direct mode lets the server drive Chrome tabs directly',
26
+ 'over --remote-debugging-port instead, skipping the extension — off by',
27
+ 'default and gated behind an explicit, time-boxed grant only you can',
28
+ 'issue (`browser-link cdp allow`). See the README\'s "cdp-direct mode"',
29
+ 'section, or run `browser-link cdp status`.',
24
30
  ].join('\n'),
25
31
  bindingTitle: 'Process binding (zero-config defense)',
26
32
  binding: [
@@ -130,6 +136,13 @@ export const I18N_ABOUT = {
130
136
  'registra con un tab_id. Desde ahí, el agente puede llamar',
131
137
  'herramientas que apuntan a ese tab_id y el servidor reenvía cada',
132
138
  'petición a la extensión.',
139
+ '',
140
+ 'Opcional: el modo cdp-direct permite que el servidor maneje pestañas',
141
+ 'de Chrome directamente vía --remote-debugging-port, sin pasar por la',
142
+ 'extensión — apagado por defecto y protegido detrás de un permiso',
143
+ 'explícito y de tiempo limitado que solo vos podés otorgar',
144
+ '(`browser-link cdp allow`). Ver la sección "cdp-direct mode" del',
145
+ 'README, o correr `browser-link cdp status`.',
133
146
  ].join('\n'),
134
147
  bindingTitle: 'Validación por proceso (sin configuración)',
135
148
  binding: [
@@ -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,28 @@
1
+ import type { Language } from './welcome.js';
2
+ /** `browser-link cdp allow [--minutes N]`. Records a grant whose lifetime
3
+ * is `--minutes` when given (parsed with the SAME rules
4
+ * `config set cdp-direct.grant-ttl` uses — see `parseGrantTtlArg`), or the
5
+ * configured `cdp-direct.grant-ttl` default otherwise. `0`/`never` records
6
+ * a grant that never expires. */
7
+ export declare function allowCdpDirect(argv: string[], language?: Language): string;
8
+ /** `browser-link cdp revoke`. Idempotent — revoking with nothing active
9
+ * says so instead of pretending something happened.
10
+ *
11
+ * Fails CLOSED. The realistic failure mode on Windows is a file-lock /
12
+ * sharing-violation that blocks DELETION while the file stays READABLE — so
13
+ * the grant file survives, `loadGrant` reads it fine, and the gate's grant
14
+ * check would keep returning `{ ok: true }` after the user believes they
15
+ * revoked. To make revoke genuinely fail-closed we ALSO flip
16
+ * `cdp-direct.enabled=false` (a DIFFERENT file — config.json — unlikely to
17
+ * share the grant file's lock) as a defense-in-depth fallback, so the
18
+ * gate's FIRST check (enabled) denies even though the stale grant file
19
+ * survives. If disabling ALSO fails, we surface both facts loudly. Either
20
+ * way this THROWS — the CLI dispatcher turns the throw into a non-zero
21
+ * exit. */
22
+ export declare function revokeCdpDirect(language?: Language): string;
23
+ /** `browser-link cdp status`. Reachability is checked live (a real HTTP
24
+ * call to `/json/version` on the configured port) regardless of the
25
+ * enabled/grant state — this is a diagnostic, not a gated action, same
26
+ * spirit as `browser-link doctor`. */
27
+ export declare function cdpDirectStatus(language?: Language): Promise<string>;
28
+ export declare function runCdpCommand(argv: string[], language?: Language): Promise<string>;
@@ -0,0 +1,172 @@
1
+ import { clampGrantTtlMinutes, loadConfig, sanitizeCdpPort, saveConfig } from '../config.js';
2
+ import { clearGrant, grantFilePath, isGrantLive, loadGrant, remainingMs, saveGrant, } from '../cdp/grant.js';
3
+ import { isChromeDevtoolsEndpoint } from '../cdp/targets.js';
4
+ import { CFG_I18N, parseGrantTtlArg } from './config.js';
5
+ const CDP_I18N = {
6
+ en: {
7
+ usage: 'Usage: browser-link cdp <allow|revoke|status> [--minutes N]',
8
+ unknownAction: (action) => `Unknown cdp action: ${action}. Use allow, revoke or status.`,
9
+ allowSaved: (expiryLabel) => `cdp-direct grant recorded — expires ${expiryLabel}. Revoke any time with \`browser-link cdp revoke\`.`,
10
+ allowNeverNote: ' WARNING: this grant never expires until revoked — reduces the security posture.',
11
+ disabledNote: ' Note: cdp-direct.enabled is currently off — run `browser-link config set cdp-direct.enabled true` for the grant to take effect.',
12
+ revoked: 'cdp-direct grant revoked.',
13
+ noGrantToRevoke: 'No cdp-direct grant was active.',
14
+ revokeFailedDisabled: (path, reason) => `Could not remove the grant file: ${path} — ${reason}. As a safeguard, cdp-direct has been DISABLED (cdp-direct.enabled=false); re-enable it with \`browser-link config set cdp-direct.enabled true\` once you have deleted the file.`,
15
+ revokeFailedBoth: (path, reason, disableReason) => `Could not remove the grant file: ${path} — ${reason}. The safeguard ALSO failed to disable cdp-direct: ${disableReason}. cdp-direct MAY STILL BE ACTIVE — delete the grant file manually and run \`browser-link config set cdp-direct.enabled false\`.`,
16
+ statusHeader: 'cdp-direct status',
17
+ enabledLabel: 'enabled',
18
+ portLabel: 'port',
19
+ grantLabel: 'grant',
20
+ grantNone: 'none — run `browser-link cdp allow` to grant access',
21
+ grantNever: 'active, never expires',
22
+ grantExpired: 'expired — run `browser-link cdp allow` to grant access again',
23
+ grantRemaining: (minutes) => `active, ${minutes} min remaining`,
24
+ reachableLabel: 'Chrome DevTools endpoint reachable',
25
+ yes: 'yes',
26
+ no: 'no',
27
+ never: 'never',
28
+ },
29
+ es: {
30
+ usage: 'Uso: browser-link cdp <allow|revoke|status> [--minutes N]',
31
+ unknownAction: (action) => `Acción de cdp desconocida: ${action}. Usá allow, revoke o status.`,
32
+ allowSaved: (expiryLabel) => `Permiso de cdp-direct registrado — expira ${expiryLabel}. Revocalo en cualquier momento con \`browser-link cdp revoke\`.`,
33
+ allowNeverNote: ' ADVERTENCIA: este permiso no expira hasta que lo revoques — reduce la postura de seguridad.',
34
+ disabledNote: ' Nota: cdp-direct.enabled está apagado actualmente — corré `browser-link config set cdp-direct.enabled true` para que el permiso tenga efecto.',
35
+ revoked: 'Permiso de cdp-direct revocado.',
36
+ noGrantToRevoke: 'No había ningún permiso de cdp-direct activo.',
37
+ revokeFailedDisabled: (path, reason) => `No se pudo eliminar el archivo de permiso: ${path} — ${reason}. Como salvaguarda, cdp-direct fue DESHABILITADO (cdp-direct.enabled=false); volvé a habilitarlo con \`browser-link config set cdp-direct.enabled true\` una vez que hayas eliminado el archivo.`,
38
+ revokeFailedBoth: (path, reason, disableReason) => `No se pudo eliminar el archivo de permiso: ${path} — ${reason}. La salvaguarda TAMBIÉN falló al deshabilitar cdp-direct: ${disableReason}. cdp-direct PUEDE SEGUIR ACTIVO — eliminá el archivo de permiso manualmente y corré \`browser-link config set cdp-direct.enabled false\`.`,
39
+ statusHeader: 'Estado de cdp-direct',
40
+ enabledLabel: 'habilitado',
41
+ portLabel: 'puerto',
42
+ grantLabel: 'permiso',
43
+ grantNone: 'ninguno — corré `browser-link cdp allow` para otorgar acceso',
44
+ grantNever: 'activo, nunca expira',
45
+ grantExpired: 'expirado — corré `browser-link cdp allow` para otorgar acceso de nuevo',
46
+ grantRemaining: (minutes) => `activo, ${minutes} min restantes`,
47
+ reachableLabel: 'endpoint de Chrome DevTools alcanzable',
48
+ yes: 'sí',
49
+ no: 'no',
50
+ never: 'nunca',
51
+ },
52
+ };
53
+ function parseMinutesFlag(argv) {
54
+ const idx = argv.indexOf('--minutes');
55
+ if (idx === -1 || idx === argv.length - 1)
56
+ return undefined;
57
+ return argv[idx + 1];
58
+ }
59
+ function formatExpiry(expiresAt, t) {
60
+ if (expiresAt === null)
61
+ return t.never;
62
+ return new Date(expiresAt).toISOString();
63
+ }
64
+ /** `browser-link cdp allow [--minutes N]`. Records a grant whose lifetime
65
+ * is `--minutes` when given (parsed with the SAME rules
66
+ * `config set cdp-direct.grant-ttl` uses — see `parseGrantTtlArg`), or the
67
+ * configured `cdp-direct.grant-ttl` default otherwise. `0`/`never` records
68
+ * a grant that never expires. */
69
+ export function allowCdpDirect(argv, language = 'en') {
70
+ const t = CDP_I18N[language];
71
+ const cfg = loadConfig();
72
+ const rawMinutes = parseMinutesFlag(argv);
73
+ const { minutes: parsedMinutes, note } = rawMinutes !== undefined
74
+ ? parseGrantTtlArg(rawMinutes, CFG_I18N[language])
75
+ : { minutes: cfg.cdpDirectGrantTtlMinutes ?? 60, note: '' };
76
+ const minutes = clampGrantTtlMinutes(parsedMinutes);
77
+ const grant = saveGrant(minutes);
78
+ let message = t.allowSaved(formatExpiry(grant.expiresAt, t)) + note;
79
+ if (grant.expiresAt === null)
80
+ message += t.allowNeverNote;
81
+ if (cfg.cdpDirectEnabled !== true)
82
+ message += t.disabledNote;
83
+ return message;
84
+ }
85
+ /** `browser-link cdp revoke`. Idempotent — revoking with nothing active
86
+ * says so instead of pretending something happened.
87
+ *
88
+ * Fails CLOSED. The realistic failure mode on Windows is a file-lock /
89
+ * sharing-violation that blocks DELETION while the file stays READABLE — so
90
+ * the grant file survives, `loadGrant` reads it fine, and the gate's grant
91
+ * check would keep returning `{ ok: true }` after the user believes they
92
+ * revoked. To make revoke genuinely fail-closed we ALSO flip
93
+ * `cdp-direct.enabled=false` (a DIFFERENT file — config.json — unlikely to
94
+ * share the grant file's lock) as a defense-in-depth fallback, so the
95
+ * gate's FIRST check (enabled) denies even though the stale grant file
96
+ * survives. If disabling ALSO fails, we surface both facts loudly. Either
97
+ * way this THROWS — the CLI dispatcher turns the throw into a non-zero
98
+ * exit. */
99
+ export function revokeCdpDirect(language = 'en') {
100
+ const t = CDP_I18N[language];
101
+ const hadGrant = loadGrant() !== null;
102
+ try {
103
+ clearGrant();
104
+ }
105
+ catch (err) {
106
+ const reason = err instanceof Error ? err.message : String(err);
107
+ // Defense in depth: the grant file may have survived (readable but
108
+ // undeletable). Deny via the enabled flag so the gate closes anyway.
109
+ try {
110
+ saveConfig({ cdpDirectEnabled: false });
111
+ }
112
+ catch (disableErr) {
113
+ const disableReason = disableErr instanceof Error ? disableErr.message : String(disableErr);
114
+ // `reason` (the original unlink failure) is carried in the message;
115
+ // the `cause` is this catch's own error, per preserve-caught-error.
116
+ throw new Error(t.revokeFailedBoth(grantFilePath(), reason, disableReason), {
117
+ cause: disableErr,
118
+ });
119
+ }
120
+ throw new Error(t.revokeFailedDisabled(grantFilePath(), reason), { cause: err });
121
+ }
122
+ return hadGrant ? t.revoked : t.noGrantToRevoke;
123
+ }
124
+ /** `browser-link cdp status`. Reachability is checked live (a real HTTP
125
+ * call to `/json/version` on the configured port) regardless of the
126
+ * enabled/grant state — this is a diagnostic, not a gated action, same
127
+ * spirit as `browser-link doctor`. */
128
+ export async function cdpDirectStatus(language = 'en') {
129
+ const t = CDP_I18N[language];
130
+ const cfg = loadConfig();
131
+ const grant = loadGrant();
132
+ const now = Date.now();
133
+ const live = isGrantLive(grant, now);
134
+ let grantLine;
135
+ if (!grant) {
136
+ grantLine = t.grantNone;
137
+ }
138
+ else if (!live) {
139
+ grantLine = t.grantExpired;
140
+ }
141
+ else if (grant.expiresAt === null) {
142
+ grantLine = t.grantNever;
143
+ }
144
+ else {
145
+ grantLine = t.grantRemaining(Math.ceil((remainingMs(grant, now) ?? 0) / 60_000));
146
+ }
147
+ const port = sanitizeCdpPort(cfg.cdpDirectPort);
148
+ const reachable = await isChromeDevtoolsEndpoint(port);
149
+ return [
150
+ t.statusHeader,
151
+ '',
152
+ ` ${t.enabledLabel} ${cfg.cdpDirectEnabled === true ? t.yes : t.no}`,
153
+ ` ${t.portLabel} ${port}`,
154
+ ` ${t.grantLabel} ${grantLine}`,
155
+ ` ${t.reachableLabel} ${reachable ? t.yes : t.no}`,
156
+ ].join('\n');
157
+ }
158
+ export async function runCdpCommand(argv, language = 'en') {
159
+ const t = CDP_I18N[language];
160
+ const action = argv.at(0);
161
+ const rest = argv.slice(1);
162
+ if (action === undefined)
163
+ throw new Error(t.usage);
164
+ if (action === 'allow')
165
+ return allowCdpDirect(rest, language);
166
+ if (action === 'revoke')
167
+ return revokeCdpDirect(language);
168
+ if (action === 'status')
169
+ return cdpDirectStatus(language);
170
+ throw new Error(t.unknownAction(action));
171
+ }
172
+ //# sourceMappingURL=cdp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../src/commands/cdp.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,89 @@
1
1
  import type { Language } from './welcome.js';
2
+ /**
3
+ * `browser-link config` — scriptable CLI surface for settings that are also
4
+ * editable from the extension's popup: the idle-disconnect TTL (see
5
+ * `packages/extension/src/idle-policy.ts`) and the opt-in flow-recording
6
+ * toggle (see `packages/extension/src/flow-recording-policy.ts`). `get`/`set`
7
+ * are structured as `<action> <key> [value]` so each setting slots in
8
+ * without a redesign.
9
+ *
10
+ * browser-link config get Show every known setting.
11
+ * browser-link config get idle-ttl Show just idle-ttl.
12
+ * browser-link config get flow-recording Show just flow-recording.
13
+ * browser-link config set idle-ttl <minutes|never>
14
+ * browser-link config set flow-recording <on|off>
15
+ *
16
+ * Precedence with the popup: both editors write to ONE logical value per
17
+ * setting — last write wins, decided by comparing `updatedAt` epoch-ms
18
+ * timestamps (see messages.ts's SettingsUpdatePayload doc and the README's
19
+ * "Idle disconnect" / "Recording flows by demonstration" sections). Each
20
+ * `config set` here:
21
+ * 1. Persists the value plus its own `*UpdatedAt: Date.now()` to
22
+ * config.json — this is what a NEW tab connecting later reads (see
23
+ * ws-bridge.ts's `tab.register` handler).
24
+ * 2. Best-effort pushes the same value to every ALREADY connected tab
25
+ * right now, over the multi-agent IPC bridge (127.0.0.1:17530) — the
26
+ * one existing local control channel into a running primary. This
27
+ * requires a primary to be up AND multi-agent mode enabled (the
28
+ * default); when neither holds, the CLI says so plainly and the value
29
+ * still applies the next time a tab (re)connects.
30
+ */
31
+ export interface ConfigI18n {
32
+ header: string;
33
+ idleTtlLabel: string;
34
+ never: string;
35
+ minutes: (n: number) => string;
36
+ notSetViaCli: string;
37
+ invalidValue: (raw: string) => string;
38
+ clampedNote: (original: number, clamped: number) => string;
39
+ setSaved: (label: string) => string;
40
+ pushedLive: (n: number) => string;
41
+ pushedNone: string;
42
+ pushUnavailable: string;
43
+ pushRejected: string;
44
+ usage: string;
45
+ unknownKey: (key: string) => string;
46
+ unknownAction: (action: string) => string;
47
+ flowRecordingLabel: string;
48
+ flowRecordingEnabled: string;
49
+ flowRecordingDisabled: string;
50
+ flowRecordingNotSetViaCli: string;
51
+ invalidFlowRecordingValue: (raw: string) => string;
52
+ flowRecordingSetSaved: (label: string) => string;
53
+ cdpDirectEnabledLabel: string;
54
+ cdpDirectPortLabel: string;
55
+ cdpDirectGrantTtlLabel: string;
56
+ cdpDirectOn: string;
57
+ cdpDirectOff: string;
58
+ invalidCdpDirectEnabledValue: (raw: string) => string;
59
+ cdpDirectEnabledSetSaved: (label: string) => string;
60
+ invalidCdpDirectPortValue: (raw: string) => string;
61
+ cdpDirectPortSetSaved: (port: number) => string;
62
+ invalidGrantTtlValue: (raw: string) => string;
63
+ grantTtlNever: string;
64
+ cdpDirectGrantTtlSetSaved: (label: string) => string;
65
+ }
66
+ /** Exported so `commands/cdp.ts` can reuse `parseGrantTtlArg`'s exact
67
+ * localized wording for `cdp allow --minutes`'s per-call override — same
68
+ * error/clamp messages `config set cdp-direct.grant-ttl` produces. */
69
+ export declare const CFG_I18N: Record<Language, ConfigI18n>;
2
70
  /** One formatted line describing the current `idleTtlMinutes` state, shared
3
71
  * by both `config get` (no key — lists everything) and `config get idle-ttl`
4
72
  * (just this one). */
5
73
  export declare function getIdleTtlLine(language?: Language): string;
74
+ /** One formatted line describing the current `flowRecordingEnabled` state —
75
+ * mirrors `getIdleTtlLine` exactly, shared by `config get` (no key) and
76
+ * `config get flow-recording`. */
77
+ export declare function getFlowRecordingLine(language?: Language): string;
78
+ /** One formatted line describing the current `cdpDirectEnabled` state. */
79
+ export declare function getCdpDirectEnabledLine(language?: Language): string;
80
+ /** One formatted line describing the current `cdpDirectPort` state. */
81
+ export declare function getCdpDirectPortLine(language?: Language): string;
82
+ /** One formatted line describing the current `cdpDirectGrantTtlMinutes`
83
+ * state — the DEFAULT lifetime `browser-link cdp allow` applies when no
84
+ * `--minutes` override is passed, not the state of any grant itself (see
85
+ * `browser-link cdp status` for that). */
86
+ export declare function getCdpDirectGrantTtlLine(language?: Language): string;
6
87
  export declare function listConfig(language?: Language): string;
7
88
  /** Override the IPC endpoint the live push dials. Production callers never
8
89
  * set this (defaults to the real 127.0.0.1:17530); tests spin up an
@@ -14,4 +95,20 @@ export interface IpcPushOptions {
14
95
  port?: number;
15
96
  }
16
97
  export declare function setIdleTtl(rawValue: string, language?: Language, ipcOptions?: IpcPushOptions): Promise<string>;
98
+ export declare function setFlowRecording(rawValue: string, language?: Language, ipcOptions?: IpcPushOptions): Promise<string>;
99
+ export declare function setCdpDirectEnabled(rawValue: string, language?: Language): string;
100
+ export declare function setCdpDirectPort(rawValue: string, language?: Language): string;
101
+ /**
102
+ * Parse the CLI's raw `<minutes|never>` argument for
103
+ * `config set cdp-direct.grant-ttl` — mirrors `parseIdleTtlArg` exactly,
104
+ * with the grant's own bounds/wording. Exported so `commands/cdp.ts` can
105
+ * reuse the SAME parsing for `cdp allow --minutes`'s per-call override —
106
+ * one implementation of "what counts as a valid TTL argument", not two
107
+ * that could drift.
108
+ */
109
+ export declare function parseGrantTtlArg(raw: string, t: ConfigI18n): {
110
+ minutes: number;
111
+ note: string;
112
+ };
113
+ export declare function setCdpDirectGrantTtl(rawValue: string, language?: Language): string;
17
114
  export declare function runConfigCommand(argv: string[], language?: Language): Promise<string>;