instar 1.2.38 → 1.2.40

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 (47) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +6 -1
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/TopicIntent.d.ts +162 -0
  5. package/dist/core/TopicIntent.d.ts.map +1 -0
  6. package/dist/core/TopicIntent.js +355 -0
  7. package/dist/core/TopicIntent.js.map +1 -0
  8. package/dist/core/TopicIntentArcCheck.d.ts +101 -0
  9. package/dist/core/TopicIntentArcCheck.d.ts.map +1 -0
  10. package/dist/core/TopicIntentArcCheck.js +146 -0
  11. package/dist/core/TopicIntentArcCheck.js.map +1 -0
  12. package/dist/core/TopicIntentBriefing.d.ts +44 -0
  13. package/dist/core/TopicIntentBriefing.d.ts.map +1 -0
  14. package/dist/core/TopicIntentBriefing.js +88 -0
  15. package/dist/core/TopicIntentBriefing.js.map +1 -0
  16. package/dist/core/TopicIntentExtractor.d.ts +90 -0
  17. package/dist/core/TopicIntentExtractor.d.ts.map +1 -0
  18. package/dist/core/TopicIntentExtractor.js +153 -0
  19. package/dist/core/TopicIntentExtractor.js.map +1 -0
  20. package/dist/core/TopicIntentPendingConfirm.d.ts +96 -0
  21. package/dist/core/TopicIntentPendingConfirm.d.ts.map +1 -0
  22. package/dist/core/TopicIntentPendingConfirm.js +223 -0
  23. package/dist/core/TopicIntentPendingConfirm.js.map +1 -0
  24. package/dist/server/AgentServer.d.ts +3 -0
  25. package/dist/server/AgentServer.d.ts.map +1 -1
  26. package/dist/server/AgentServer.js +10 -0
  27. package/dist/server/AgentServer.js.map +1 -1
  28. package/dist/server/topicIntentRoutes.d.ts +27 -0
  29. package/dist/server/topicIntentRoutes.d.ts.map +1 -0
  30. package/dist/server/topicIntentRoutes.js +189 -0
  31. package/dist/server/topicIntentRoutes.js.map +1 -0
  32. package/dist/tunnel/LocaltunnelProvider.d.ts +63 -0
  33. package/dist/tunnel/LocaltunnelProvider.d.ts.map +1 -0
  34. package/dist/tunnel/LocaltunnelProvider.js +130 -0
  35. package/dist/tunnel/LocaltunnelProvider.js.map +1 -0
  36. package/dist/tunnel/TunnelManager.d.ts +44 -1
  37. package/dist/tunnel/TunnelManager.d.ts.map +1 -1
  38. package/dist/tunnel/TunnelManager.js +199 -15
  39. package/dist/tunnel/TunnelManager.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/data/builtin-manifest.json +4 -4
  42. package/src/templates/hooks/telegram-topic-context.sh +19 -0
  43. package/upgrades/1.2.39.md +54 -0
  44. package/upgrades/1.2.40.md +119 -0
  45. package/upgrades/side-effects/consent-state-machine.md +135 -0
  46. package/upgrades/side-effects/localtunnel-provider.md +95 -0
  47. package/upgrades/side-effects/topic-intent-layer.md +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topicIntentRoutes.js","sourceRoot":"","sources":["../../src/server/topicIntentRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * LocaltunnelProvider — Tier-2 consent-gated relay tunnel via *.loca.lt.
3
+ *
4
+ * Per spec specs/dev-infrastructure/tunnel-failure-resilience.md Part 1
5
+ * (provider abstraction, Tier 2) and Part 7 (supply-chain hardening).
6
+ *
7
+ * SECURITY POSTURE:
8
+ * - localtunnel routes the agent's local server traffic through
9
+ * loca.lt servers. The relay operator (and anyone who logs the URL)
10
+ * can see dashboard PIN + signed view URLs while the relay is active.
11
+ * This is exactly why the spec gates Tier-2 providers behind owner
12
+ * consent — see Part 3 (consent flow) and Part 6 (mandatory
13
+ * credential rotation on relay-episode end).
14
+ * - The agent never spins this up without an explicit per-episode
15
+ * consent record bound to the owner principal — that's enforced in
16
+ * TunnelManager's state machine, not in this provider.
17
+ *
18
+ * Supply-chain hardening (Part 7):
19
+ * - The npm package `localtunnel` is pinned at exact version in
20
+ * package.json (no caret range).
21
+ * - The provider spawns the localtunnel client via its programmatic
22
+ * API; a future hardening PR can switch to child-process isolation
23
+ * once the spec's checksum-verified install path is added.
24
+ * - `isAvailable()` resolves false if the npm package cannot be
25
+ * loaded, so a missing dep degrades gracefully (provider skipped)
26
+ * instead of crashing.
27
+ *
28
+ * The provider does NOT own retry/reconnect/notification — those are
29
+ * the manager's responsibility per the single-owner mandate (PR 2).
30
+ */
31
+ import type { TunnelProvider, TunnelProviderHandle, ProviderName, ProviderTier } from './TunnelProvider.js';
32
+ export interface LocaltunnelProviderOptions {
33
+ /** Local port the relay should point at. */
34
+ port: number;
35
+ /** Start timeout in milliseconds (default: 20_000). */
36
+ startTimeoutMs?: number;
37
+ /**
38
+ * Optional subdomain hint passed to localtunnel. When set, the
39
+ * service will try to allocate the requested name; when unavailable
40
+ * (already taken or rate-limited), localtunnel falls back to a
41
+ * random subdomain. NEVER use the agent's identity here — the
42
+ * subdomain is publicly visible on *.loca.lt.
43
+ */
44
+ subdomain?: string;
45
+ }
46
+ export declare class LocaltunnelProvider implements TunnelProvider {
47
+ readonly name: ProviderName;
48
+ readonly tier: ProviderTier;
49
+ private readonly port;
50
+ private readonly startTimeoutMs;
51
+ private readonly subdomain;
52
+ /**
53
+ * Cached dynamic-import result. The first `isAvailable()` call
54
+ * detects whether the npm package is present; subsequent calls reuse
55
+ * the cached resolution.
56
+ */
57
+ private _moduleResolved;
58
+ constructor(opts: LocaltunnelProviderOptions);
59
+ isAvailable(): Promise<boolean>;
60
+ start(localPort: number): Promise<TunnelProviderHandle>;
61
+ private loadModule;
62
+ }
63
+ //# sourceMappingURL=LocaltunnelProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocaltunnelProvider.d.ts","sourceRoot":"","sources":["../../src/tunnel/LocaltunnelProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,0BAA0B;IACzC,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAiB;IAC5C,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAK;IAEhC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAgD;gBAE3D,IAAI,EAAE,0BAA0B;IAMtC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;YA8D/C,UAAU;CAezB"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * LocaltunnelProvider — Tier-2 consent-gated relay tunnel via *.loca.lt.
3
+ *
4
+ * Per spec specs/dev-infrastructure/tunnel-failure-resilience.md Part 1
5
+ * (provider abstraction, Tier 2) and Part 7 (supply-chain hardening).
6
+ *
7
+ * SECURITY POSTURE:
8
+ * - localtunnel routes the agent's local server traffic through
9
+ * loca.lt servers. The relay operator (and anyone who logs the URL)
10
+ * can see dashboard PIN + signed view URLs while the relay is active.
11
+ * This is exactly why the spec gates Tier-2 providers behind owner
12
+ * consent — see Part 3 (consent flow) and Part 6 (mandatory
13
+ * credential rotation on relay-episode end).
14
+ * - The agent never spins this up without an explicit per-episode
15
+ * consent record bound to the owner principal — that's enforced in
16
+ * TunnelManager's state machine, not in this provider.
17
+ *
18
+ * Supply-chain hardening (Part 7):
19
+ * - The npm package `localtunnel` is pinned at exact version in
20
+ * package.json (no caret range).
21
+ * - The provider spawns the localtunnel client via its programmatic
22
+ * API; a future hardening PR can switch to child-process isolation
23
+ * once the spec's checksum-verified install path is added.
24
+ * - `isAvailable()` resolves false if the npm package cannot be
25
+ * loaded, so a missing dep degrades gracefully (provider skipped)
26
+ * instead of crashing.
27
+ *
28
+ * The provider does NOT own retry/reconnect/notification — those are
29
+ * the manager's responsibility per the single-owner mandate (PR 2).
30
+ */
31
+ export class LocaltunnelProvider {
32
+ name = 'localtunnel';
33
+ tier = 2;
34
+ port;
35
+ startTimeoutMs;
36
+ subdomain;
37
+ /**
38
+ * Cached dynamic-import result. The first `isAvailable()` call
39
+ * detects whether the npm package is present; subsequent calls reuse
40
+ * the cached resolution.
41
+ */
42
+ _moduleResolved;
43
+ constructor(opts) {
44
+ this.port = opts.port;
45
+ this.startTimeoutMs = opts.startTimeoutMs ?? 20_000;
46
+ this.subdomain = opts.subdomain;
47
+ }
48
+ async isAvailable() {
49
+ const mod = await this.loadModule();
50
+ return mod !== 'unavailable';
51
+ }
52
+ async start(localPort) {
53
+ const mod = await this.loadModule();
54
+ if (mod === 'unavailable') {
55
+ throw new Error('binary-missing: localtunnel npm package is not installed');
56
+ }
57
+ const lt = mod.default;
58
+ if (typeof lt !== 'function') {
59
+ throw new Error('binary-missing: localtunnel module did not expose the expected factory');
60
+ }
61
+ const port = localPort || this.port;
62
+ return new Promise((resolve, reject) => {
63
+ let resolved = false;
64
+ const timeout = setTimeout(() => {
65
+ if (resolved)
66
+ return;
67
+ resolved = true;
68
+ reject(new Error('timeout: localtunnel did not emit a URL within the start budget'));
69
+ }, this.startTimeoutMs);
70
+ lt({ port, subdomain: this.subdomain }).then((client) => {
71
+ if (resolved) {
72
+ try {
73
+ client.close();
74
+ }
75
+ catch { /* best effort */ }
76
+ return;
77
+ }
78
+ resolved = true;
79
+ clearTimeout(timeout);
80
+ if (!client.url) {
81
+ reject(new Error('process-exit: localtunnel returned no URL'));
82
+ return;
83
+ }
84
+ client.on('error', () => { });
85
+ resolve({
86
+ url: client.url,
87
+ stop: async () => {
88
+ try {
89
+ client.close();
90
+ }
91
+ catch { /* already dead */ }
92
+ },
93
+ });
94
+ }, (err) => {
95
+ if (resolved)
96
+ return;
97
+ resolved = true;
98
+ clearTimeout(timeout);
99
+ const msg = (err?.message ?? '').toLowerCase();
100
+ if (msg.includes('rate') || msg.includes('429')) {
101
+ reject(new Error(`rate-limited: localtunnel: ${err.message}`));
102
+ return;
103
+ }
104
+ if (msg.includes('econnrefused') || msg.includes('dns')) {
105
+ reject(new Error(`network: localtunnel: ${err.message}`));
106
+ return;
107
+ }
108
+ reject(new Error(`process-exit: localtunnel start failed: ${err.message}`));
109
+ });
110
+ });
111
+ }
112
+ async loadModule() {
113
+ if (this._moduleResolved !== undefined)
114
+ return this._moduleResolved;
115
+ try {
116
+ // Dynamic specifier so TypeScript doesn't require an installed
117
+ // `@types/localtunnel`. The npm package itself is an optional
118
+ // peer-style dep — agents without it installed degrade
119
+ // gracefully via the catch below.
120
+ const specifier = 'localtunnel';
121
+ const mod = (await import(/* @vite-ignore */ specifier));
122
+ this._moduleResolved = mod;
123
+ }
124
+ catch {
125
+ this._moduleResolved = 'unavailable';
126
+ }
127
+ return this._moduleResolved;
128
+ }
129
+ }
130
+ //# sourceMappingURL=LocaltunnelProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocaltunnelProvider.js","sourceRoot":"","sources":["../../src/tunnel/LocaltunnelProvider.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@
40
40
  */
41
41
  import { EventEmitter } from 'node:events';
42
42
  import { type PersistedTunnelState } from './TunnelLifecycle.js';
43
- import type { TunnelProvider, ProviderFailureReason } from './TunnelProvider.js';
43
+ import type { TunnelProvider, ProviderName, ProviderFailureReason } from './TunnelProvider.js';
44
44
  import type { NotifierSink } from './TunnelNotifier.js';
45
45
  export interface TunnelConfig {
46
46
  /** Whether tunnel is enabled. */
@@ -110,6 +110,13 @@ export declare class TunnelManager extends EventEmitter {
110
110
  private _backoffAttempt;
111
111
  private _backoffTimer;
112
112
  private _postExhaustedTimer;
113
+ /**
114
+ * Pending consent record — populated when the manager enters
115
+ * `awaiting-consent` and cleared on grant / decline / timeout / stop.
116
+ * The nonce is the CSPRNG token sent to the owner; matching it on
117
+ * `grantConsent()` is the security-load-bearing check.
118
+ */
119
+ private _pendingConsent;
113
120
  constructor(config: TunnelConfig, injections?: TunnelManagerInjections);
114
121
  get url(): string | null;
115
122
  get isRunning(): boolean;
@@ -154,6 +161,42 @@ export declare class TunnelManager extends EventEmitter {
154
161
  private doStart;
155
162
  private driveTier1;
156
163
  private exhaustedOrBackoff;
164
+ /** First Tier-2 provider that reports available, or null. */
165
+ private findAvailableTier2;
166
+ /**
167
+ * Internal — called after the lifecycle transitions to
168
+ * `awaiting-consent`. Generates the one-time nonce, stores the
169
+ * pending consent record, and arms the timeout.
170
+ */
171
+ private requestConsent;
172
+ private clearPendingConsent;
173
+ /**
174
+ * Public — called by the consent UX layer (Telegram callback handler
175
+ * in PR 6) after the owner approves. Validates the nonce matches the
176
+ * pending consent record, starts the Tier-2 provider, and transitions
177
+ * to `relay-active`. Returns true on success, false if the nonce
178
+ * didn't match (replay, race, stale click) or the state moved beyond
179
+ * awaiting-consent.
180
+ */
181
+ grantConsent(nonce: string): Promise<boolean>;
182
+ /**
183
+ * Public — called by the consent UX layer when the owner declines.
184
+ * Validates the nonce, applies the cross-episode cooldown, and
185
+ * transitions to `exhausted` + background retry.
186
+ */
187
+ declineConsent(nonce: string): boolean;
188
+ private recordConsentDecline;
189
+ /**
190
+ * Public — the active pending-consent record (or null). Used by the
191
+ * consent UX layer (PR 6) to know what nonce to embed in the inline
192
+ * button.
193
+ */
194
+ get pendingConsent(): {
195
+ episodeId: string;
196
+ provider: ProviderName;
197
+ nonce: string;
198
+ issuedAt: number;
199
+ } | null;
157
200
  /**
158
201
  * Background retry — runs the bounded exponential ladder off the
159
202
  * start() promise so initial start() resolves/rejects fast. After
@@ -1 +1 @@
1
- {"version":3,"file":"TunnelManager.d.ts","sourceRoot":"","sources":["../../src/tunnel/TunnelManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TunnelManager.d.ts","sourceRoot":"","sources":["../../src/tunnel/TunnelManager.ts"],"names":[],"mappings":"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"}
@@ -41,9 +41,10 @@
41
41
  import { EventEmitter } from 'node:events';
42
42
  import fs from 'node:fs';
43
43
  import path from 'node:path';
44
- import { TunnelLifecycle, classifyFailure, } from './TunnelLifecycle.js';
44
+ import { TunnelLifecycle, classifyFailure, generateNonce, } from './TunnelLifecycle.js';
45
45
  import { CloudflareQuickProvider } from './CloudflareQuickProvider.js';
46
46
  import { CloudflareNamedProvider } from './CloudflareNamedProvider.js';
47
+ import { LocaltunnelProvider } from './LocaltunnelProvider.js';
47
48
  import { TunnelNotifier } from './TunnelNotifier.js';
48
49
  // ── Constants ───────────────────────────────────────────────────────
49
50
  const BASE_BACKOFF_MS = 5_000;
@@ -61,6 +62,8 @@ const REACHABILITY_TIMEOUT_MS = 8_000;
61
62
  * the regression we explicitly need to avoid in the PR chain.
62
63
  */
63
64
  const POST_EXHAUSTED_RETRY_INTERVAL_MS = 15 * 60_000;
65
+ /** Per-episode consent prompt timeout — matches spec Part 4 default (15 min). */
66
+ const CONSENT_TIMEOUT_MS = 15 * 60_000;
64
67
  // ── Manager ────────────────────────────────────────────────────────
65
68
  export class TunnelManager extends EventEmitter {
66
69
  config;
@@ -78,6 +81,13 @@ export class TunnelManager extends EventEmitter {
78
81
  _backoffAttempt = 0;
79
82
  _backoffTimer = null;
80
83
  _postExhaustedTimer = null;
84
+ /**
85
+ * Pending consent record — populated when the manager enters
86
+ * `awaiting-consent` and cleared on grant / decline / timeout / stop.
87
+ * The nonce is the CSPRNG token sent to the owner; matching it on
88
+ * `grantConsent()` is the security-load-bearing check.
89
+ */
90
+ _pendingConsent = null;
81
91
  constructor(config, injections) {
82
92
  super();
83
93
  this.config = config;
@@ -132,6 +142,7 @@ export class TunnelManager extends EventEmitter {
132
142
  this._stopped = true;
133
143
  this.clearBackoffTimer();
134
144
  this.clearPostExhaustedTimer();
145
+ this.clearPendingConsent();
135
146
  this._startPromise = null;
136
147
  if (this.currentHandle) {
137
148
  try {
@@ -208,6 +219,8 @@ export class TunnelManager extends EventEmitter {
208
219
  // ── Internals ──────────────────────────────────────────────────
209
220
  buildDefaultPool(config) {
210
221
  const pool = [];
222
+ // Tier-1 (automatic, secure). Cloudflare named first when configured,
223
+ // then quick as the zero-config default.
211
224
  if (config.token || config.configFile) {
212
225
  pool.push(new CloudflareNamedProvider({
213
226
  token: config.token,
@@ -216,6 +229,13 @@ export class TunnelManager extends EventEmitter {
216
229
  }));
217
230
  }
218
231
  pool.push(new CloudflareQuickProvider({ port: config.port, stateDir: config.stateDir }));
232
+ // Tier-2 (consent-gated relays). Listed AFTER Tier-1 — the driver
233
+ // only reaches these after exhausting Tier-1, and only after the
234
+ // owner explicitly grants consent. LocaltunnelProvider's
235
+ // isAvailable() returns false when the `localtunnel` npm package
236
+ // isn't installed, so agents without the dep see this slot
237
+ // silently skipped — the spec's "opt-in capability" posture.
238
+ pool.push(new LocaltunnelProvider({ port: config.port }));
219
239
  return pool;
220
240
  }
221
241
  async doStart() {
@@ -293,31 +313,195 @@ export class TunnelManager extends EventEmitter {
293
313
  return this.exhaustedOrBackoff(lastErr);
294
314
  }
295
315
  async exhaustedOrBackoff(lastErr) {
296
- // Matches the legacy semantics: start() rejects after the FIRST
297
- // round of provider attempts fails. The backoff retry runs in the
298
- // background — the manager keeps trying without blocking the
299
- // caller, and emits 'url' when a later attempt succeeds. This
300
- // prevents start() from blocking server.ts boot for the full
301
- // 25-minute worst-case exponential window. The original failing
302
- // E2E (tests/e2e/tunnel-private-view.test.ts) timed out at the
303
- // beforeAll 60s budget because the old draft kept retrying inside
304
- // start().
316
+ // start() rejects after the FIRST round of provider attempts
317
+ // fails (matches the legacy semantics). The backoff retry runs in
318
+ // the background — the manager keeps trying without blocking the
319
+ // caller, and emits 'url' when a later attempt succeeds.
320
+ //
321
+ // PR 5 addition: BEFORE transitioning to exhausted, check if any
322
+ // Tier-2 providers are available and the cross-episode consent
323
+ // cooldown isn't active. If so, transition to `awaiting-consent`
324
+ // and request consent from the owner. The relay-active path
325
+ // activates on `grantConsent()`.
326
+ const candidateTier2 = await this.findAvailableTier2();
327
+ const cooldownActive = this.lifecycle.isConsentSuppressed();
328
+ if (candidateTier2 && !cooldownActive) {
329
+ const from = this.lifecycle.state;
330
+ if (from === 'retrying' || from === 'starting') {
331
+ if (this.lifecycle.transition(from, 'awaiting-consent', {
332
+ activeProvider: null,
333
+ lastFailureReason: classifyFailure(lastErr),
334
+ })) {
335
+ this.requestConsent(candidateTier2);
336
+ }
337
+ }
338
+ const err = lastErr ?? new Error('Tier-1 exhausted; awaiting owner consent for backup relay');
339
+ this.emit('error', err);
340
+ throw err;
341
+ }
305
342
  const from = this.lifecycle.state;
306
343
  if (from === 'retrying' || from === 'starting') {
307
344
  this.lifecycle.transition(from, 'exhausted', { activeProvider: null });
308
345
  }
309
346
  const err = lastErr ?? new Error('all Tier-1 providers failed');
310
- // Schedule background retry (bounded exponential ladder, then the
311
- // indefinite post-exhausted placeholder once the ladder runs out).
312
- // Fire-and-forget; if a later attempt succeeds, the 'url' event
313
- // fires and downstream subscribers (notifier, dashboard
314
- // broadcaster, log line) catch up.
315
347
  if (this._autoReconnect && !this._stopped) {
316
348
  this.scheduleBackgroundRetry();
317
349
  }
318
350
  this.emit('error', err);
319
351
  throw err;
320
352
  }
353
+ /** First Tier-2 provider that reports available, or null. */
354
+ async findAvailableTier2() {
355
+ for (const p of this.providers) {
356
+ if (p.tier !== 2)
357
+ continue;
358
+ const avail = await p.isAvailable().catch(() => false);
359
+ if (avail)
360
+ return p;
361
+ }
362
+ return null;
363
+ }
364
+ /**
365
+ * Internal — called after the lifecycle transitions to
366
+ * `awaiting-consent`. Generates the one-time nonce, stores the
367
+ * pending consent record, and arms the timeout.
368
+ */
369
+ requestConsent(provider) {
370
+ this.clearPendingConsent();
371
+ const episode = this.lifecycle.episode;
372
+ if (!episode)
373
+ return;
374
+ const nonce = generateNonce();
375
+ const timer = setTimeout(() => {
376
+ this.recordConsentDecline(nonce, 'timeout');
377
+ }, CONSENT_TIMEOUT_MS);
378
+ this._pendingConsent = {
379
+ episodeId: episode.episodeId,
380
+ provider,
381
+ nonce,
382
+ issuedAt: Date.now(),
383
+ timer,
384
+ };
385
+ }
386
+ clearPendingConsent() {
387
+ if (this._pendingConsent) {
388
+ clearTimeout(this._pendingConsent.timer);
389
+ this._pendingConsent = null;
390
+ }
391
+ }
392
+ /**
393
+ * Public — called by the consent UX layer (Telegram callback handler
394
+ * in PR 6) after the owner approves. Validates the nonce matches the
395
+ * pending consent record, starts the Tier-2 provider, and transitions
396
+ * to `relay-active`. Returns true on success, false if the nonce
397
+ * didn't match (replay, race, stale click) or the state moved beyond
398
+ * awaiting-consent.
399
+ */
400
+ async grantConsent(nonce) {
401
+ if (!this._pendingConsent)
402
+ return false;
403
+ if (this._pendingConsent.nonce !== nonce)
404
+ return false;
405
+ if (this.lifecycle.state !== 'awaiting-consent') {
406
+ this.clearPendingConsent();
407
+ return false;
408
+ }
409
+ const { provider, episodeId } = this._pendingConsent;
410
+ if (this.lifecycle.episode?.episodeId !== episodeId) {
411
+ this.clearPendingConsent();
412
+ return false;
413
+ }
414
+ // Single-use: clear BEFORE starting so a replay loses cleanly.
415
+ this.clearPendingConsent();
416
+ try {
417
+ const handle = await provider.start(this.config.port);
418
+ const reachable = await this.probeReachability(handle.url).catch(() => false);
419
+ if (!reachable) {
420
+ try {
421
+ await handle.stop();
422
+ }
423
+ catch { /* best effort */ }
424
+ this.lifecycle.recordAttempt(provider.name, 'reachability-failed');
425
+ this.lifecycle.recordConsentRefusal();
426
+ const from = this.lifecycle.state;
427
+ if (from === 'awaiting-consent') {
428
+ this.lifecycle.transition('awaiting-consent', 'exhausted', { activeProvider: null });
429
+ }
430
+ if (this._autoReconnect && !this._stopped) {
431
+ this.scheduleBackgroundRetry();
432
+ }
433
+ return false;
434
+ }
435
+ this.currentHandle = handle;
436
+ this.currentProviderName = provider.name;
437
+ this._legacyState.url = handle.url;
438
+ this._legacyState.startedAt = new Date().toISOString();
439
+ // Set rotation-pending — entering relay-active is the persisted
440
+ // marker that says "credentials must rotate when this episode
441
+ // ends" (per spec Part 6 / verification finding V1).
442
+ this.lifecycle.setRotationPending(true);
443
+ this.lifecycle.transition('awaiting-consent', 'relay-active', {
444
+ activeProvider: provider.name,
445
+ lastFailureReason: null,
446
+ rotationPending: true,
447
+ });
448
+ this.persist();
449
+ this.emit('url', handle.url);
450
+ return true;
451
+ }
452
+ catch (err) {
453
+ this.lifecycle.recordAttempt(provider.name, classifyFailure(err));
454
+ this.lifecycle.recordConsentRefusal();
455
+ const from = this.lifecycle.state;
456
+ if (from === 'awaiting-consent') {
457
+ this.lifecycle.transition('awaiting-consent', 'exhausted', { activeProvider: null });
458
+ }
459
+ if (this._autoReconnect && !this._stopped) {
460
+ this.scheduleBackgroundRetry();
461
+ }
462
+ return false;
463
+ }
464
+ }
465
+ /**
466
+ * Public — called by the consent UX layer when the owner declines.
467
+ * Validates the nonce, applies the cross-episode cooldown, and
468
+ * transitions to `exhausted` + background retry.
469
+ */
470
+ declineConsent(nonce) {
471
+ return this.recordConsentDecline(nonce, 'decline');
472
+ }
473
+ recordConsentDecline(nonce, _reason) {
474
+ if (!this._pendingConsent)
475
+ return false;
476
+ if (this._pendingConsent.nonce !== nonce)
477
+ return false;
478
+ if (this.lifecycle.state !== 'awaiting-consent') {
479
+ this.clearPendingConsent();
480
+ return false;
481
+ }
482
+ this.clearPendingConsent();
483
+ this.lifecycle.recordConsentRefusal();
484
+ this.lifecycle.transition('awaiting-consent', 'exhausted', { activeProvider: null });
485
+ if (this._autoReconnect && !this._stopped) {
486
+ this.scheduleBackgroundRetry();
487
+ }
488
+ return true;
489
+ }
490
+ /**
491
+ * Public — the active pending-consent record (or null). Used by the
492
+ * consent UX layer (PR 6) to know what nonce to embed in the inline
493
+ * button.
494
+ */
495
+ get pendingConsent() {
496
+ if (!this._pendingConsent)
497
+ return null;
498
+ return {
499
+ episodeId: this._pendingConsent.episodeId,
500
+ provider: this._pendingConsent.provider.name,
501
+ nonce: this._pendingConsent.nonce,
502
+ issuedAt: this._pendingConsent.issuedAt,
503
+ };
504
+ }
321
505
  /**
322
506
  * Background retry — runs the bounded exponential ladder off the
323
507
  * start() promise so initial start() resolves/rejects fast. After
@@ -1 +1 @@
1
- {"version":3,"file":"TunnelManager.js","sourceRoot":"","sources":["../../src/tunnel/TunnelManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TunnelManager.js","sourceRoot":"","sources":["../../src/tunnel/TunnelManager.ts"],"names":[],"mappings":"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"}