@bd7pil/ocrc 0.13.6 → 0.14.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/README.md CHANGED
@@ -65,7 +65,7 @@ required**:
65
65
  ```
66
66
  2. **From Telegram** (once the bot is running): send `/pair`, open the link.
67
67
 
68
- Links carry a *pending* token — valid **5 minutes, single use**, and issuing
68
+ Links carry a *pending* token — valid **1 minute, single use**, and issuing
69
69
  a new one invalidates the old (refresh = new code). The device exchanges it
70
70
  for the real access token on first open; the token never appears in a URL
71
71
  again. Already-paired sessions can onboard further devices from the web
package/dist/cli/index.js CHANGED
@@ -24,12 +24,12 @@ COMMANDS:
24
24
  install Install as opencode plugin
25
25
  uninstall Remove from opencode plugin config
26
26
  pair Show QR + URL to pair a device
27
- start <dir> Start the production instance (detached; env from ~/.ocrc/config.env)
28
- start --watch <dir> Foreground supervisor: adopt-or-spawn + crash auto-restart
29
- restore Re-launch the last instance under --watch (for @reboot cron)
30
- stop Stop it (watcher first, then the instance)
31
- restart [dir] Restart it (keeps the current mode)
32
- status Show instance state (server / watcher / web panel / workdir)
27
+ start <dir> Start the production instance under its supervisor
28
+ (crash auto-restart; env from ~/.ocrc/config.env)
29
+ restore Re-launch the last instance (the @reboot cron calls this)
30
+ stop Stop it (supervisor first, then the instance)
31
+ restart [dir] Restart it
32
+ status Show instance state (server / supervisor / web panel / workdir)
33
33
  host Run standalone against an ACP agent (no opencode; OCRC_ACP_CMD)
34
34
  --help, -h Show this help
35
35
  `;
@@ -1,19 +1,23 @@
1
1
  // service.ts — `ocrc start|stop|restart|status|restore`: production instance
2
- // lifecycle, the octg `octg start <dir>` ergonomic.
2
+ // lifecycle, matching octg's ergonomics: ONE command, supervision built in.
3
3
  //
4
- // Two start modes:
5
- // ocrc start <dir> detached one-shot launcher (no supervision).
6
- // ocrc start --watch <dir> FOREGROUND supervisor (run-4096.sh semantics in
7
- // Node): adopt-or-spawn, crash-restart after a
8
- // delay, exit-code>=128 / stop-file = intentional
9
- // stop. User runs it under nohup/tmux; `ocrc
10
- // restore` re-launches it after reboot.
11
- // The plugin still cannot supervise its own host — the watcher is this CLI
12
- // process watching from outside; in steady state it is a dormant poll loop.
4
+ // ocrc start <dir> spawn a detached supervisor (adopt-or-spawn, crash
5
+ // auto-restart, .stop-file graceful stop) and exit —
6
+ // exactly what octg's start did by generating run-N.sh
7
+ // ocrc stop TERM the supervisor (its cleanup chain takes the
8
+ // instance down), port-level fallback, SIGKILL last
9
+ // ocrc restart [dir] stop + start
10
+ // ocrc status server / supervisor / web panel / workdir
11
+ // ocrc restore idempotent revive — reads last.json; the @reboot cron
12
+ // line (`ocrc restore`) is the only boot-restore path
13
+ //
14
+ // The plugin cannot supervise its own host; the supervisor is this CLI
15
+ // process running --supervisor (hidden arg) in a detached self-spawn.
13
16
  import { spawn, spawnSync } from 'node:child_process';
14
17
  import { existsSync, readFileSync, writeFileSync, mkdirSync, appendFileSync, openSync, unlinkSync } from 'node:fs';
15
18
  import { join } from 'node:path';
16
19
  import { homedir } from 'node:os';
20
+ import { fileURLToPath } from 'node:url';
17
21
  const OCRC_HOME = process.env.OCRC_HOME ?? join(homedir(), '.ocrc');
18
22
  const RUN_DIR = join(OCRC_HOME, 'run');
19
23
  const CONFIG_FILE = join(OCRC_HOME, 'config.env');
@@ -80,12 +84,12 @@ function alive(pid) {
80
84
  return false;
81
85
  }
82
86
  }
83
- function pidFilePath(port, kind) {
84
- return join(RUN_DIR, `${kind}-${port}.pid`);
87
+ function pidFilePath(port) {
88
+ return join(RUN_DIR, `${port}.pid`);
85
89
  }
86
- function readPid(port, kind) {
90
+ function readPid(port) {
87
91
  try {
88
- const raw = readFileSync(pidFilePath(port, kind), 'utf-8').trim();
92
+ const raw = readFileSync(pidFilePath(port), 'utf-8').trim();
89
93
  const pid = Number(raw);
90
94
  return Number.isFinite(pid) && pid > 0 ? pid : null;
91
95
  }
@@ -116,11 +120,10 @@ function lastWorkDir() {
116
120
  return null;
117
121
  }
118
122
  }
119
- // ── watch mode: the foreground supervisor ───────────────────────────────────
120
- async function watchLoop(cfg, workDir) {
123
+ // ── supervisor (the run-N.sh equivalent): an internal, detached self-spawn ──
124
+ async function supervisorLoop(cfg, workDir) {
121
125
  const stopFile = join(RUN_DIR, `.stop-${cfg.port}`);
122
- const watchPidFile = pidFilePath(cfg.port, 'watch');
123
- let child = null;
126
+ const pidFile = pidFilePath(cfg.port);
124
127
  let childPid = null;
125
128
  let stopping = false;
126
129
  const killChild = () => {
@@ -138,56 +141,55 @@ async function watchLoop(cfg, workDir) {
138
141
  }
139
142
  catch { /* absent */ }
140
143
  try {
141
- unlinkSync(watchPidFile);
144
+ unlinkSync(pidFile);
142
145
  }
143
146
  catch { /* absent */ }
144
- console.log(`[watch:${cfg.port}] stopped`);
147
+ console.log(`[supervisor:${cfg.port}] stopped`);
145
148
  process.exit(0);
146
149
  };
147
150
  process.on('SIGTERM', () => { stopping = true; killChild(); });
148
151
  process.on('SIGINT', () => { stopping = true; killChild(); });
149
152
  mkdirSync(RUN_DIR, { recursive: true });
150
- writeFileSync(watchPidFile, String(process.pid));
151
- console.log(`[watch:${cfg.port}] supervising (pid ${process.pid}, workdir ${workDir}; stop: ocrc stop)`);
153
+ writeFileSync(pidFile, String(process.pid));
154
+ console.log(`[supervisor:${cfg.port}] supervising (pid ${process.pid}, workdir ${workDir}; stop: ocrc stop)`);
152
155
  while (!stopping) {
153
156
  if (existsSync(stopFile)) {
154
- console.log(`[watch:${cfg.port}] stop file detected`);
157
+ console.log(`[supervisor:${cfg.port}] stop file detected`);
155
158
  cleanupAndExit();
156
159
  }
157
160
  // Adopt an already-listening instance (octg takeover semantics)…
158
161
  const existing = pidOnPort(cfg.port);
159
162
  if (existing !== null) {
160
- console.log(`[watch:${cfg.port}] adopted existing opencode (pid ${existing})`);
163
+ console.log(`[supervisor:${cfg.port}] adopted existing opencode (pid ${existing})`);
161
164
  childPid = existing;
162
165
  while (alive(childPid) && !existsSync(stopFile) && !stopping)
163
166
  await sleep(1000);
164
167
  }
165
168
  else {
166
- // …or spawn our own attached child and await its exit code.
169
+ // …or spawn our own attached child and await its exit.
167
170
  if (!existsSync(cfg.bin)) {
168
- console.error(`[watch:${cfg.port}] opencode binary missing: ${cfg.bin}`);
171
+ console.error(`[supervisor:${cfg.port}] opencode binary missing: ${cfg.bin}`);
169
172
  process.exit(1);
170
173
  }
171
- appendFileSync(PROD_LOG, `\n[watch ${new Date().toISOString()}] spawn ${cfg.mode} :${cfg.port}\n`);
172
- child = spawn(cfg.bin, [cfg.mode, '--port', cfg.port, `--hostname=${cfg.host}`], {
174
+ appendFileSync(PROD_LOG, `\n[supervisor ${new Date().toISOString()}] spawn ${cfg.mode} :${cfg.port}\n`);
175
+ const child = spawn(cfg.bin, [cfg.mode, '--port', cfg.port, `--hostname=${cfg.host}`], {
173
176
  cwd: workDir,
174
177
  stdio: ['ignore', 'inherit', 'inherit'],
175
178
  env: { ...process.env, ...cfg.env },
176
179
  });
177
180
  childPid = child.pid ?? null;
178
- console.log(`[watch:${cfg.port}] started opencode (pid ${childPid})`);
181
+ console.log(`[supervisor:${cfg.port}] started opencode (pid ${childPid})`);
179
182
  const outcome = await new Promise((resolve) => {
180
183
  child.once('exit', (c, sig) => resolve({ code: c, signal: sig ?? null }));
181
184
  });
182
- child = null;
183
185
  childPid = null;
184
186
  if (stopping)
185
187
  break;
186
188
  if (!shouldRestart(outcome.code, outcome.signal, existsSync(stopFile))) {
187
- console.log(`[watch:${cfg.port}] opencode exited intentionally (code=${outcome.code ?? '-'} signal=${outcome.signal ?? '-'})`);
189
+ console.log(`[supervisor:${cfg.port}] opencode exited intentionally (code=${outcome.code ?? '-'} signal=${outcome.signal ?? '-'})`);
188
190
  cleanupAndExit();
189
191
  }
190
- console.log(`[watch:${cfg.port}] opencode CRASHED (code=${outcome.code ?? '-'} signal=${outcome.signal ?? '-'}); restarting in ${cfg.watchDelayMs / 1000}s`);
192
+ console.log(`[supervisor:${cfg.port}] opencode CRASHED (code=${outcome.code ?? '-'} signal=${outcome.signal ?? '-'}); restarting in ${cfg.watchDelayMs / 1000}s`);
191
193
  }
192
194
  if (stopping)
193
195
  break;
@@ -197,52 +199,59 @@ async function watchLoop(cfg, workDir) {
197
199
  }
198
200
  // ── commands ────────────────────────────────────────────────────────────────
199
201
  export async function main(argv) {
200
- // argv[0] is the command word; --watch may sit anywhere after it.
201
- const watch = argv.includes('--watch');
202
- const args = argv.filter((a) => a !== '--watch');
203
- const cmd = args[0];
204
- const rest = args.slice(1);
202
+ // Internal entry: the detached supervisor process itself.
203
+ if (argv[0] === '--supervisor') {
204
+ const workDir = argv[1] ?? '';
205
+ if (!workDir || !existsSync(workDir)) {
206
+ console.error('[supervisor] invalid workdir');
207
+ process.exit(1);
208
+ }
209
+ await supervisorLoop(loadConfig(), workDir);
210
+ return;
211
+ }
212
+ // `--watch` is accepted and IGNORED (pre-0.14.0 muscle memory): supervision
213
+ // is always on, octg-style. The first non-flag word is the command.
214
+ const cmd = argv.find((a) => !a.startsWith('--')) ?? '';
215
+ const rest = (() => {
216
+ const i = argv.findIndex((a) => !a.startsWith('--'));
217
+ return i >= 0 ? argv.slice(i + 1) : [];
218
+ })();
205
219
  const cfg = loadConfig();
206
220
  const webPort = readConfigEnv().OCRC_WEB_PORT ?? '4099';
207
221
  if (cmd === 'start') {
208
222
  const workDir = rest[0] ?? lastWorkDir();
209
223
  if (!workDir || !existsSync(workDir)) {
210
- console.error('usage: ocrc start [--watch] <work_dir>');
224
+ console.error('usage: ocrc start <work_dir>');
211
225
  process.exit(1);
212
226
  }
213
- if (watch) {
214
- // One watcher per port: a live watch pid file refuses to double-start.
215
- const wpid = readPid(cfg.port, 'watch');
216
- if (wpid !== null && alive(wpid)) {
217
- console.log(`watcher already running (pid ${wpid}) — nothing to do`);
218
- return;
219
- }
220
- await watchLoop(cfg, workDir);
221
- return;
222
- }
223
227
  const existing = pidOnPort(cfg.port);
224
228
  if (existing !== null) {
225
229
  console.log(`already running (pid ${existing}, port ${cfg.port}) — nothing to do`);
226
230
  return;
227
231
  }
232
+ const supPid = readPid(cfg.port);
233
+ if (supPid !== null && alive(supPid)) {
234
+ console.log(`supervisor already running (pid ${supPid}) — it will adopt or restart the instance`);
235
+ return;
236
+ }
228
237
  if (!existsSync(cfg.bin)) {
229
238
  console.error(`opencode binary not found: ${cfg.bin} (set OCRC_SERVER_BIN in ${CONFIG_FILE})`);
230
239
  process.exit(1);
231
240
  }
232
241
  mkdirSync(RUN_DIR, { recursive: true });
233
242
  writeFileSync(join(RUN_DIR, 'last.json'), JSON.stringify({ workDir, port: cfg.port }, null, 2));
234
- // Detached + unref + stdin ignored: the child survives the CLI exiting
235
- // (nohup-equivalent). stdout/stderr append to prod.log.
243
+ // octg parity: `start` hands off to a detached supervisor and returns.
244
+ // Spawn SELF (--supervisor) detached; stdout/stderr append to prod.log.
245
+ const self = fileURLToPath(import.meta.url);
236
246
  const out = openSync(PROD_LOG, 'a');
237
- const child = spawn(cfg.bin, [cfg.mode, '--port', cfg.port, `--hostname=${cfg.host}`], {
238
- cwd: workDir,
247
+ const child = spawn(process.execPath, [self, '--supervisor', workDir], {
239
248
  detached: true,
240
249
  stdio: ['ignore', out, out],
241
250
  env: { ...process.env, ...cfg.env },
242
251
  });
243
252
  child.unref();
244
- appendFileSync(PROD_LOG, `\n[ocrc start ${new Date().toISOString()}] pid=${child.pid} workdir=${workDir}\n`);
245
- console.log(`starting opencode ${cfg.mode} on :${cfg.port} (pid ${child.pid}, workdir ${workDir})…`);
253
+ appendFileSync(PROD_LOG, `\n[ocrc start ${new Date().toISOString()}] supervisor pid=${child.pid} workdir=${workDir}\n`);
254
+ console.log(`starting supervised opencode on :${cfg.port} (supervisor pid ${child.pid}, workdir ${workDir})…`);
246
255
  if (!(await waitPort(cfg.port, true, 30))) {
247
256
  console.error(`port ${cfg.port} did not come up in 30s — check ${PROD_LOG}`);
248
257
  process.exit(1);
@@ -252,50 +261,41 @@ export async function main(argv) {
252
261
  return;
253
262
  }
254
263
  if (cmd === 'restore') {
255
- // Idempotent revive: nothing to do when the instance (watched or bare) is
256
- // already up — this runs every minute from cron.
264
+ // Idempotent revive: nothing to do when the instance is already up —
265
+ // this runs every boot from the @reboot cron line.
257
266
  if (pidOnPort(cfg.port) !== null) {
258
267
  console.log(`already running (port ${cfg.port}) — nothing to restore`);
259
268
  return;
260
269
  }
261
270
  const workDir = lastWorkDir();
262
271
  if (!workDir) {
263
- console.error('no previous work_dir on record — usage: ocrc start --watch <work_dir> first');
272
+ console.error('no previous work_dir on record — usage: ocrc start <work_dir> first');
264
273
  process.exit(1);
265
274
  }
266
- console.log(`restoring watched instance for ${workDir}…`);
267
- await main(['start', '--watch', workDir]);
275
+ console.log(`restoring supervised instance for ${workDir}…`);
276
+ await main(['start', workDir]);
268
277
  return;
269
278
  }
270
279
  if (cmd === 'stop') {
271
- // The watcher owns the child via its cleanup chain — TERM it first.
272
- const wpid = readPid(cfg.port, 'watch');
273
- if (wpid !== null && alive(wpid)) {
274
- console.log(`stopping watcher (pid ${wpid})…`);
280
+ // The supervisor owns the child via its cleanup chain — TERM it first.
281
+ const supPid = readPid(cfg.port);
282
+ if (supPid !== null && alive(supPid)) {
283
+ console.log(`stopping supervisor (pid ${supPid})…`);
275
284
  try {
276
- process.kill(wpid, 'SIGTERM');
285
+ process.kill(supPid, 'SIGTERM');
277
286
  }
278
287
  catch { /* gone */ }
279
- // Watcher's cleanup chain: TERM child → free port → remove files.
280
288
  for (let i = 0; i < 20; i++) {
281
- if (!alive(wpid))
289
+ if (!alive(supPid))
282
290
  break;
283
291
  await sleep(500);
284
292
  }
285
293
  }
286
- let pid = readPid(cfg.port, 'prod');
287
- if (pid !== null && !alive(pid))
288
- pid = null;
289
- if (pid === null)
290
- pid = pidOnPort(cfg.port);
294
+ const pid = pidOnPort(cfg.port);
291
295
  if (pid === null) {
292
296
  console.log(`not running (nothing on port ${cfg.port})`);
293
297
  try {
294
- unlinkSync(pidFilePath(cfg.port, 'prod'));
295
- }
296
- catch { /* already gone */ }
297
- try {
298
- unlinkSync(pidFilePath(cfg.port, 'watch'));
298
+ unlinkSync(pidFilePath(cfg.port));
299
299
  }
300
300
  catch { /* already gone */ }
301
301
  return;
@@ -314,7 +314,7 @@ export async function main(argv) {
314
314
  await waitPort(cfg.port, false, 5);
315
315
  }
316
316
  try {
317
- unlinkSync(pidFilePath(cfg.port, 'prod'));
317
+ unlinkSync(pidFilePath(cfg.port));
318
318
  }
319
319
  catch { /* already gone */ }
320
320
  console.log(pidOnPort(cfg.port) === null ? `stopped (port ${cfg.port} free)` : `port ${cfg.port} still busy — check manually`);
@@ -326,29 +326,25 @@ export async function main(argv) {
326
326
  console.error('no previous work_dir — usage: ocrc restart <work_dir>');
327
327
  process.exit(1);
328
328
  }
329
- const wasWatched = (() => {
330
- const wpid = readPid(cfg.port, 'watch');
331
- return wpid !== null && alive(wpid);
332
- })();
333
329
  await main(['stop']);
334
- await main(wasWatched ? ['start', '--watch', workDir] : ['start', workDir]);
330
+ await main(['start', workDir]);
335
331
  return;
336
332
  }
337
333
  if (cmd === 'status') {
338
334
  const portPid = pidOnPort(cfg.port);
339
335
  const ver = spawnSync(cfg.bin, ['--version'], { encoding: 'utf-8' }).stdout?.trim();
340
- const wpid = readPid(cfg.port, 'watch');
341
- console.log(`binary : ${cfg.bin} (${(ver ?? 'n/a').split('\n')[0]})`);
342
- console.log(`server : port ${cfg.port} ${portPid !== null ? `UP (pid ${portPid})` : 'DOWN'}`);
343
- console.log(`watch : ${wpid !== null && alive(wpid) ? `active (pid ${wpid})` : 'none (bare start)'}`);
336
+ const supPid = readPid(cfg.port);
337
+ console.log(`binary : ${cfg.bin} (${(ver ?? 'n/a').split('\n')[0]})`);
338
+ console.log(`server : port ${cfg.port} ${portPid !== null ? `UP (pid ${portPid})` : 'DOWN'}`);
339
+ console.log(`supervisor: ${supPid !== null && alive(supPid) ? `active (pid ${supPid})` : 'none'}`);
344
340
  const web = httpGetStatus(`http://127.0.0.1:${webPort}/`);
345
- console.log(`web : port ${webPort} ${web !== null ? `HTTP ${web}` : 'unreachable'}`);
341
+ console.log(`web panel : port ${webPort} ${web !== null ? `HTTP ${web}` : 'unreachable'}`);
346
342
  const workDir = lastWorkDir();
347
343
  if (workDir)
348
- console.log(`workdir: ${workDir}`);
344
+ console.log(`workdir : ${workDir}`);
349
345
  return;
350
346
  }
351
- console.error('usage: ocrc start [--watch] <work_dir> | stop | restart [work_dir] | restore | status');
347
+ console.error('usage: ocrc start <work_dir> | stop | restart [work_dir] | status | restore');
352
348
  process.exit(1);
353
349
  }
354
350
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export async function buildPairContext() {
27
27
  const url = await resolvePublicUrl({ publicUrl: process.env.WEB_PUBLIC_URL, port });
28
28
  return { token, url };
29
29
  }
30
- const DEFAULT_PENDING_TTL_MS = 5 * 60_000;
30
+ const DEFAULT_PENDING_TTL_MS = 60_000;
31
31
  export function createPairingStore(realToken, ttlMs = DEFAULT_PENDING_TTL_MS) {
32
32
  const random = () => randomBytes(24).toString('base64url');
33
33
  let current = null;
@@ -1 +1 @@
1
- {"version":3,"file":"pairing.js","sourceRoot":"","sources":["../../src/connectivity/pairing.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D;4EAC4E;AAC5E,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAA;AAC1E,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IAC7D,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACrC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACxE,MAAM,KAAK,GAAG;QACZ,wDAAwD;QACxD,EAAE;QACF,GAAG;QACH,EAAE;QACF,yDAAyD;KAC1D,CAAA;IACD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;AAC3B,CAAC;AAOD;wDACwD;AACxD,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;IAC9E,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;IACjE,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAA;IACnF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AACvB,CAAC;AAsBD,MAAM,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAA;AAEzC,MAAM,UAAU,kBAAkB,CAAC,SAAuB,EAAE,QAAgB,sBAAsB;IAChG,MAAM,MAAM,GAAG,GAAW,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAClE,IAAI,OAAO,GAA0B,IAAI,CAAA;IAEzC,OAAO;QACL,KAAK;YACH,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;YAC5D,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,QAAQ,CAAC,OAAO;YACd,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO;gBAAE,OAAO,IAAI,CAAA;YACtD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAA;YAAC,CAAC;YACnE,OAAO,GAAG,IAAI,CAAA,CAAC,aAAa;YAC5B,OAAO,SAAS,EAAE,CAAA;QACpB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;kCAEkC;AAClC,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAe;IAC/D,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAA;AAC3E,CAAC"}
1
+ {"version":3,"file":"pairing.js","sourceRoot":"","sources":["../../src/connectivity/pairing.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D;4EAC4E;AAC5E,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAA;AAC1E,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IAC7D,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACrC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACxE,MAAM,KAAK,GAAG;QACZ,wDAAwD;QACxD,EAAE;QACF,GAAG;QACH,EAAE;QACF,yDAAyD;KAC1D,CAAA;IACD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;AAC3B,CAAC;AAOD;wDACwD;AACxD,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;IAC9E,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;IACjE,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAA;IACnF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AACvB,CAAC;AAsBD,MAAM,sBAAsB,GAAG,MAAM,CAAA;AAErC,MAAM,UAAU,kBAAkB,CAAC,SAAuB,EAAE,QAAgB,sBAAsB;IAChG,MAAM,MAAM,GAAG,GAAW,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAClE,IAAI,OAAO,GAA0B,IAAI,CAAA;IAEzC,OAAO;QACL,KAAK;YACH,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;YAC5D,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,QAAQ,CAAC,OAAO;YACd,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO;gBAAE,OAAO,IAAI,CAAA;YACtD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAA;YAAC,CAAC;YACnE,OAAO,GAAG,IAAI,CAAA,CAAC,aAAa;YAC5B,OAAO,SAAS,EAAE,CAAA;QACpB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;kCAEkC;AAClC,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAe;IAC/D,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAA;AAC3E,CAAC"}
@@ -380,10 +380,10 @@ export function registerHandlers(deps) {
380
380
  const { url } = await buildPairContext();
381
381
  if (deps.pairing) {
382
382
  // M11: short-lived single-use pending token — the chat log only ever
383
- // holds a credential that dies in 5 minutes or on first use.
383
+ // holds a credential that dies in 1 minute or on first use.
384
384
  const p = deps.pairing.issue();
385
385
  const pairUrl = buildPairUrlPending(url, p.token);
386
- await ctx.reply(`🔗 <b>Pair a device</b>\n\nOpen this link on the device within <b>5 minutes</b> (single use — sending /pair again invalidates it):\n<code>${pairUrl}</code>`, { parse_mode: 'HTML' });
386
+ await ctx.reply(`🔗 <b>Pair a device</b>\n\nOpen this link on the device within <b>1 minute</b> (single use — sending /pair again invalidates it):\n<code>${pairUrl}</code>`, { parse_mode: 'HTML' });
387
387
  }
388
388
  else {
389
389
  const { token } = await buildPairContext();