@antseed/cli 0.1.154 → 0.1.156

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 (56) hide show
  1. package/dist/cli/commands/tunnel/index.d.ts +3 -0
  2. package/dist/cli/commands/tunnel/index.d.ts.map +1 -0
  3. package/dist/cli/commands/tunnel/index.js +10 -0
  4. package/dist/cli/commands/tunnel/index.js.map +1 -0
  5. package/dist/cli/commands/tunnel/paths.d.ts +4 -0
  6. package/dist/cli/commands/tunnel/paths.d.ts.map +1 -0
  7. package/dist/cli/commands/tunnel/paths.js +5 -0
  8. package/dist/cli/commands/tunnel/paths.js.map +1 -0
  9. package/dist/cli/commands/tunnel/start.d.ts +3 -0
  10. package/dist/cli/commands/tunnel/start.d.ts.map +1 -0
  11. package/dist/cli/commands/tunnel/start.js +235 -0
  12. package/dist/cli/commands/tunnel/start.js.map +1 -0
  13. package/dist/cli/commands/tunnel/status.d.ts +3 -0
  14. package/dist/cli/commands/tunnel/status.d.ts.map +1 -0
  15. package/dist/cli/commands/tunnel/status.js +39 -0
  16. package/dist/cli/commands/tunnel/status.js.map +1 -0
  17. package/dist/cli/commands/tunnel/stop.d.ts +3 -0
  18. package/dist/cli/commands/tunnel/stop.d.ts.map +1 -0
  19. package/dist/cli/commands/tunnel/stop.js +28 -0
  20. package/dist/cli/commands/tunnel/stop.js.map +1 -0
  21. package/dist/cli/index.js +2 -0
  22. package/dist/cli/index.js.map +1 -1
  23. package/dist/proxy/buyer-proxy.d.ts.map +1 -1
  24. package/dist/proxy/buyer-proxy.js +7 -1
  25. package/dist/proxy/buyer-proxy.js.map +1 -1
  26. package/dist/proxy/buyer-proxy.test.js +112 -1
  27. package/dist/proxy/buyer-proxy.test.js.map +1 -1
  28. package/dist/proxy/conversation-identity.d.ts +3 -1
  29. package/dist/proxy/conversation-identity.d.ts.map +1 -1
  30. package/dist/proxy/conversation-identity.js +80 -7
  31. package/dist/proxy/conversation-identity.js.map +1 -1
  32. package/dist/proxy/conversation-identity.test.js +146 -0
  33. package/dist/proxy/conversation-identity.test.js.map +1 -1
  34. package/dist/proxy/conversation-store.d.ts.map +1 -1
  35. package/dist/proxy/conversation-store.js +34 -6
  36. package/dist/proxy/conversation-store.js.map +1 -1
  37. package/dist/proxy/conversation-store.test.js +58 -0
  38. package/dist/proxy/conversation-store.test.js.map +1 -1
  39. package/dist/system-proxy/profiles.d.ts.map +1 -1
  40. package/dist/system-proxy/profiles.js +4 -1
  41. package/dist/system-proxy/profiles.js.map +1 -1
  42. package/dist/system-proxy/types.d.ts +2 -1
  43. package/dist/system-proxy/types.d.ts.map +1 -1
  44. package/dist/tunnel/cloudflared.d.ts +2 -0
  45. package/dist/tunnel/cloudflared.d.ts.map +1 -0
  46. package/dist/tunnel/cloudflared.js +57 -0
  47. package/dist/tunnel/cloudflared.js.map +1 -0
  48. package/dist/tunnel/gateway.d.ts +16 -0
  49. package/dist/tunnel/gateway.d.ts.map +1 -0
  50. package/dist/tunnel/gateway.js +146 -0
  51. package/dist/tunnel/gateway.js.map +1 -0
  52. package/dist/tunnel/gateway.test.d.ts +2 -0
  53. package/dist/tunnel/gateway.test.d.ts.map +1 -0
  54. package/dist/tunnel/gateway.test.js +89 -0
  55. package/dist/tunnel/gateway.test.js.map +1 -0
  56. package/package.json +4 -4
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerTunnelCommands(program: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAK7D"}
@@ -0,0 +1,10 @@
1
+ import { registerTunnelStartCommand } from './start.js';
2
+ import { registerTunnelStatusCommand } from './status.js';
3
+ import { registerTunnelStopCommand } from './stop.js';
4
+ export function registerTunnelCommands(program) {
5
+ const tunnel = program.command('tunnel').description('Expose the buyer API through a secure public HTTPS tunnel');
6
+ registerTunnelStartCommand(tunnel);
7
+ registerTunnelStatusCommand(tunnel);
8
+ registerTunnelStopCommand(tunnel);
9
+ }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAErD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,2DAA2D,CAAC,CAAA;IACjH,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAClC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IACnC,yBAAyB,CAAC,MAAM,CAAC,CAAA;AACnC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function tunnelDir(dataDir: string): string;
2
+ export declare function tunnelPidFile(dataDir: string): string;
3
+ export declare function tunnelStateFile(dataDir: string): string;
4
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/paths.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAmC;AACrF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAkD;AACxG,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAyD"}
@@ -0,0 +1,5 @@
1
+ import { join } from 'node:path';
2
+ export function tunnelDir(dataDir) { return join(dataDir, 'tunnel'); }
3
+ export function tunnelPidFile(dataDir) { return join(tunnelDir(dataDir), 'tunnel.pid'); }
4
+ export function tunnelStateFile(dataDir) { return join(tunnelDir(dataDir), 'tunnel.state.json'); }
5
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,SAAS,CAAC,OAAe,IAAY,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA,CAAC,CAAC;AACrF,MAAM,UAAU,aAAa,CAAC,OAAe,IAAY,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA,CAAC,CAAC;AACxG,MAAM,UAAU,eAAe,CAAC,OAAe,IAAY,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAA,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerTunnelStartCommand(cmd: Command): void;
3
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/start.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4IxC,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA2F7D"}
@@ -0,0 +1,235 @@
1
+ import { mkdir, unlink, writeFile } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { spawn } from 'node:child_process';
4
+ import { delimiter, join } from 'node:path';
5
+ import chalk from 'chalk';
6
+ import ora from 'ora';
7
+ import { getGlobalOptions } from '../types.js';
8
+ import { setupShutdownHandler } from '../../shutdown.js';
9
+ import { TunnelGateway } from '../../../tunnel/gateway.js';
10
+ import { ensureCloudflared } from '../../../tunnel/cloudflared.js';
11
+ import { tunnelDir, tunnelPidFile, tunnelStateFile } from './paths.js';
12
+ const DEFAULT_BUYER_PORT = 8377;
13
+ const DEFAULT_GATEWAY_PORT = 8379;
14
+ function parseTunnelProvider(value) {
15
+ const provider = value.trim().toLowerCase();
16
+ if (provider === 'cloudflare' || provider === 'ngrok')
17
+ return provider;
18
+ throw new Error('Tunnel provider must be cloudflare or ngrok.');
19
+ }
20
+ function providerDisplayName(provider) {
21
+ return provider === 'cloudflare' ? 'Cloudflare Tunnel' : 'ngrok';
22
+ }
23
+ function providerTokenEnvironmentName(provider) {
24
+ return provider === 'cloudflare' ? 'CLOUDFLARED_TUNNEL_TOKEN' : 'NGROK_AUTHTOKEN';
25
+ }
26
+ function resolveTunnelToken(provider) {
27
+ const providerToken = process.env[providerTokenEnvironmentName(provider)];
28
+ return (process.env['ANTSEED_TUNNEL_TOKEN'] ?? providerToken ?? '').trim();
29
+ }
30
+ function parsePublicUrl(value, provider) {
31
+ if (!value) {
32
+ if (provider === 'cloudflare') {
33
+ throw new Error('ANTSEED_TUNNEL_PUBLIC_URL is required for Cloudflare Tunnel.');
34
+ }
35
+ return null;
36
+ }
37
+ let url;
38
+ try {
39
+ url = new URL(value);
40
+ }
41
+ catch {
42
+ throw new Error('ANTSEED_TUNNEL_PUBLIC_URL must be a valid https:// URL.');
43
+ }
44
+ if (url.protocol !== 'https:') {
45
+ throw new Error('ANTSEED_TUNNEL_PUBLIC_URL must be an https:// URL.');
46
+ }
47
+ return url;
48
+ }
49
+ function ngrokArgs(gatewayPort, publicUrl) {
50
+ return [
51
+ 'http',
52
+ `http://127.0.0.1:${gatewayPort}`,
53
+ ...(publicUrl ? ['--url', publicUrl.origin] : []),
54
+ '--pooling-enabled',
55
+ '--log', 'stdout', '--log-format', 'json', '--log-level', 'info',
56
+ ];
57
+ }
58
+ function waitForProcessStartup(child, provider) {
59
+ return new Promise((resolve, reject) => {
60
+ const timer = setTimeout(resolve, 1500);
61
+ child.once('error', (error) => {
62
+ clearTimeout(timer);
63
+ reject(error);
64
+ });
65
+ child.once('exit', (code) => {
66
+ clearTimeout(timer);
67
+ reject(new Error(`${provider} tunnel exited with code ${String(code)}`));
68
+ });
69
+ });
70
+ }
71
+ function errorMessage(error) {
72
+ return error instanceof Error ? error.message : String(error);
73
+ }
74
+ function findHttpsUrl(value) {
75
+ if (typeof value === 'string' && value.startsWith('https://'))
76
+ return value;
77
+ if (!value || typeof value !== 'object')
78
+ return null;
79
+ for (const [key, nested] of Object.entries(value)) {
80
+ if ((key === 'url' || key === 'public_url') && typeof nested === 'string' && nested.startsWith('https://'))
81
+ return nested;
82
+ const found = findHttpsUrl(nested);
83
+ if (found)
84
+ return found;
85
+ }
86
+ return null;
87
+ }
88
+ function waitForNgrokUrl(child) {
89
+ return new Promise((resolve, reject) => {
90
+ let buffer = '';
91
+ let settled = false;
92
+ const finish = (error, url) => {
93
+ if (settled)
94
+ return;
95
+ settled = true;
96
+ clearTimeout(timer);
97
+ child.stdout?.off('data', onData);
98
+ child.stderr?.off('data', onData);
99
+ child.off('error', onError);
100
+ child.off('exit', onExit);
101
+ if (error)
102
+ reject(error);
103
+ else
104
+ resolve(url);
105
+ };
106
+ const onData = (chunk) => {
107
+ buffer += chunk.toString();
108
+ const lines = buffer.split(/\r?\n/);
109
+ buffer = lines.pop() ?? '';
110
+ for (const line of lines) {
111
+ try {
112
+ const found = findHttpsUrl(JSON.parse(line));
113
+ if (found) {
114
+ finish(null, new URL(found));
115
+ return;
116
+ }
117
+ }
118
+ catch { /* wait for the structured startup line */ }
119
+ }
120
+ };
121
+ const onError = (error) => finish(error);
122
+ const onExit = (code) => finish(new Error(`ngrok tunnel exited with code ${String(code)}`));
123
+ const timer = setTimeout(() => finish(new Error('Timed out waiting for ngrok to publish its HTTPS URL.')), 15_000);
124
+ child.stdout?.on('data', onData);
125
+ child.stderr?.on('data', onData);
126
+ child.once('error', onError);
127
+ child.once('exit', onExit);
128
+ });
129
+ }
130
+ function resolveNgrokBinary() {
131
+ const configured = process.env['ANTSEED_NGROK_BIN']?.trim();
132
+ if (configured)
133
+ return configured;
134
+ const executable = process.platform === 'win32' ? 'ngrok.exe' : 'ngrok';
135
+ const candidates = [
136
+ ...(process.env.PATH ?? '').split(delimiter).filter(Boolean).map((directory) => join(directory, executable)),
137
+ ...(process.platform === 'darwin' ? ['/opt/homebrew/bin/ngrok', '/usr/local/bin/ngrok'] : []),
138
+ ];
139
+ const found = candidates.find((candidate) => existsSync(candidate));
140
+ if (found)
141
+ return found;
142
+ throw new Error('ngrok CLI was not found. Install ngrok or set ANTSEED_NGROK_BIN.');
143
+ }
144
+ export function registerTunnelStartCommand(cmd) {
145
+ cmd
146
+ .command('start')
147
+ .description('Expose the local buyer API through an authenticated HTTPS tunnel')
148
+ .option('--provider <provider>', 'Tunnel provider: cloudflare or ngrok')
149
+ .option('--buyer-port <number>', 'Local buyer proxy port', String(DEFAULT_BUYER_PORT))
150
+ .option('--gateway-port <number>', 'Local authenticated gateway port', String(DEFAULT_GATEWAY_PORT))
151
+ .action(async (options) => {
152
+ const dataDir = getGlobalOptions(cmd).dataDir;
153
+ const buyerPort = parseInt(options.buyerPort, 10) || DEFAULT_BUYER_PORT;
154
+ const gatewayPort = parseInt(options.gatewayPort, 10) || DEFAULT_GATEWAY_PORT;
155
+ const provider = parseTunnelProvider(options.provider ?? process.env['ANTSEED_TUNNEL_PROVIDER'] ?? 'cloudflare');
156
+ const tunnelToken = resolveTunnelToken(provider);
157
+ const configuredPublicUrl = process.env['ANTSEED_TUNNEL_PUBLIC_URL']?.trim() ?? '';
158
+ const apiKey = process.env['ANTSEED_TUNNEL_API_KEY']?.trim() ?? '';
159
+ if (!tunnelToken) {
160
+ throw new Error(`Set ${providerTokenEnvironmentName(provider)} before starting the tunnel.`);
161
+ }
162
+ let publicUrl = parsePublicUrl(configuredPublicUrl, provider);
163
+ if (apiKey.length < 16) {
164
+ throw new Error('ANTSEED_TUNNEL_API_KEY must be at least 16 characters.');
165
+ }
166
+ const gateway = new TunnelGateway({
167
+ buyerPort,
168
+ apiKey,
169
+ listenPort: gatewayPort,
170
+ onLog: (message) => process.stderr.write(`[tunnel] ${message}\n`),
171
+ });
172
+ const spinner = ora('Starting authenticated API gateway...').start();
173
+ await gateway.start();
174
+ let tunnelProcess = null;
175
+ try {
176
+ const binary = provider === 'cloudflare'
177
+ ? await ensureCloudflared(dataDir)
178
+ : resolveNgrokBinary();
179
+ const args = provider === 'cloudflare'
180
+ ? ['tunnel', '--no-autoupdate', 'run']
181
+ : ngrokArgs(gatewayPort, publicUrl);
182
+ const tunnelEnvironment = provider === 'cloudflare'
183
+ ? { TUNNEL_TOKEN: tunnelToken }
184
+ : { NGROK_AUTHTOKEN: tunnelToken };
185
+ tunnelProcess = spawn(binary, args, {
186
+ stdio: ['ignore', 'pipe', 'pipe'],
187
+ env: {
188
+ ...process.env,
189
+ ...tunnelEnvironment,
190
+ },
191
+ });
192
+ const ngrokUrlPromise = provider === 'ngrok' ? waitForNgrokUrl(tunnelProcess) : null;
193
+ tunnelProcess.stdout?.pipe(process.stdout);
194
+ tunnelProcess.stderr?.pipe(process.stderr);
195
+ if (ngrokUrlPromise) {
196
+ publicUrl = await ngrokUrlPromise;
197
+ }
198
+ else {
199
+ await waitForProcessStartup(tunnelProcess, provider);
200
+ }
201
+ }
202
+ catch (error) {
203
+ await gateway.stop();
204
+ spinner.fail(chalk.red(`Could not start ${providerDisplayName(provider)}: ${errorMessage(error)}`));
205
+ process.exitCode = 1;
206
+ return;
207
+ }
208
+ if (!publicUrl)
209
+ throw new Error('Tunnel provider did not publish a public URL.');
210
+ const baseUrl = `${publicUrl.toString().replace(/\/+$/, '')}/v1`;
211
+ await mkdir(tunnelDir(dataDir), { recursive: true });
212
+ await writeFile(tunnelPidFile(dataDir), String(process.pid), 'utf8');
213
+ await writeFile(tunnelStateFile(dataDir), JSON.stringify({
214
+ running: true,
215
+ pid: process.pid,
216
+ provider,
217
+ buyerPort,
218
+ gatewayPort,
219
+ publicUrl: publicUrl.toString(),
220
+ baseUrl,
221
+ startedAt: Date.now(),
222
+ }), 'utf8');
223
+ spinner.succeed(chalk.green('Public HTTPS tunnel is running'));
224
+ console.log(`${chalk.bold('Base URL:')} ${baseUrl}`);
225
+ console.log(chalk.dim('Use the same ANTSEED_TUNNEL_API_KEY as the client API key.'));
226
+ setupShutdownHandler(async () => {
227
+ tunnelProcess?.kill('SIGTERM');
228
+ await gateway.stop();
229
+ await unlink(tunnelPidFile(dataDir)).catch(() => undefined);
230
+ await unlink(tunnelStateFile(dataDir)).catch(() => undefined);
231
+ console.log(chalk.dim('Public HTTPS tunnel stopped.'));
232
+ });
233
+ });
234
+ }
235
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerTunnelStatusCommand(cmd: Command): void;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASxC,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAqB9D"}
@@ -0,0 +1,39 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import chalk from 'chalk';
3
+ import { getGlobalOptions } from '../types.js';
4
+ import { tunnelStateFile } from './paths.js';
5
+ function isProcessAlive(pid) {
6
+ try {
7
+ process.kill(pid, 0);
8
+ return true;
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ }
14
+ export function registerTunnelStatusCommand(cmd) {
15
+ cmd
16
+ .command('status')
17
+ .description('Show public HTTPS tunnel status')
18
+ .option('--json', 'Print machine-readable JSON', false)
19
+ .action(async (options) => {
20
+ const dataDir = getGlobalOptions(cmd).dataDir;
21
+ let state = { running: false };
22
+ try {
23
+ state = JSON.parse(await readFile(tunnelStateFile(dataDir), 'utf8'));
24
+ const pid = Number(state['pid']);
25
+ state.running = Number.isInteger(pid) && pid > 0 && isProcessAlive(pid);
26
+ }
27
+ catch { /* not configured */ }
28
+ if (options.json) {
29
+ console.log(JSON.stringify(state));
30
+ return;
31
+ }
32
+ console.log(`Tunnel: ${state.running ? chalk.green('running') : chalk.dim('stopped')}`);
33
+ if (typeof state['provider'] === 'string')
34
+ console.log(`Provider: ${state['provider']}`);
35
+ if (state.running && typeof state['baseUrl'] === 'string')
36
+ console.log(`Base URL: ${state['baseUrl']}`);
37
+ });
38
+ }
39
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAA;IAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,QAAQ,EAAE,6BAA6B,EAAE,KAAK,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAA;QAC7C,IAAI,KAAK,GAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACvD,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAA4B,CAAA;YAC/F,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;YAChC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAA;QACzE,CAAC;QAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAChC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;YAClC,OAAM;QACR,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACvF,IAAI,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QACxF,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACzG,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerTunnelStopCommand(cmd: Command): void;
3
+ //# sourceMappingURL=stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/stop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAkB5D"}
@@ -0,0 +1,28 @@
1
+ import { readFile, unlink } from 'node:fs/promises';
2
+ import chalk from 'chalk';
3
+ import { getGlobalOptions } from '../types.js';
4
+ import { tunnelPidFile, tunnelStateFile } from './paths.js';
5
+ export function registerTunnelStopCommand(cmd) {
6
+ cmd
7
+ .command('stop')
8
+ .description('Stop the public HTTPS tunnel')
9
+ .action(async () => {
10
+ const dataDir = getGlobalOptions(cmd).dataDir;
11
+ try {
12
+ const pid = parseInt((await readFile(tunnelPidFile(dataDir), 'utf8')).trim(), 10);
13
+ if (Number.isFinite(pid) && pid > 0)
14
+ process.kill(pid, 'SIGTERM');
15
+ console.log(chalk.green('Tunnel stop requested.'));
16
+ }
17
+ catch (error) {
18
+ if (error.code !== 'ESRCH' && error.code !== 'ENOENT')
19
+ throw error;
20
+ console.log(chalk.dim('Tunnel is not running.'));
21
+ }
22
+ finally {
23
+ await unlink(tunnelPidFile(dataDir)).catch(() => undefined);
24
+ await unlink(tunnelStateFile(dataDir)).catch(() => undefined);
25
+ }
26
+ });
27
+ }
28
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../../src/cli/commands/tunnel/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAA;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;YACjF,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAA;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,OAAO,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAA;YACxH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;QAClD,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC3D,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
package/dist/cli/index.js CHANGED
@@ -13,6 +13,7 @@ import { registerDepositAlias } from './commands/buyer/deposit.js';
13
13
  import { registerMetricsCommand } from './commands/metrics.js';
14
14
  import { registerWrappedToolCommands } from './commands/wrapped-tools.js';
15
15
  import { registerSystemProxyCommands } from './commands/system-proxy/index.js';
16
+ import { registerTunnelCommands } from './commands/tunnel/index.js';
16
17
  loadEnvFromFiles();
17
18
  import pkg from '../../package.json' with { type: 'json' };
18
19
  const version = pkg.version;
@@ -36,5 +37,6 @@ registerDepositAlias(program);
36
37
  registerMetricsCommand(program);
37
38
  registerWrappedToolCommands(program);
38
39
  registerSystemProxyCommands(program);
40
+ registerTunnelCommands(program);
39
41
  program.parse(process.argv);
40
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,gBAAgB,EAAE,CAAC;AAEnB,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,6BAA6B,CAAC;KAC1C,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,qBAAqB,EAAE,4EAA4E,CAAC;KAC3G,MAAM,CAAC,mBAAmB,EAAE,oFAAoF,CAAC;KACjH,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAE5D,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAErC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,gBAAgB,EAAE,CAAC;AAEnB,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,6BAA6B,CAAC;KAC1C,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,qBAAqB,EAAE,4EAA4E,CAAC;KAC3G,MAAM,CAAC,mBAAmB,EAAE,oFAAoF,CAAC;KACjH,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAE5D,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"buyer-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/buyer-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buyer-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/buyer-proxy.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,13 @@ const WATCHER_ABSENCE_ERRORS = {
26
26
  'no-deposit-relay': 'Deposit watcher unavailable — this chain has no deposit relay.',
27
27
  'external-daemon': 'Deposit watcher unavailable — another daemon owns the proxy port and runs the watcher.',
28
28
  };
29
- const RETRYABLE_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);
29
+ // 401/403 are included: sellers relay upstream auth failures (revoked or
30
+ // expired key, region/WAF block) that are specific to that seller's upstream
31
+ // account, so another peer serving the same model can usually complete the
32
+ // request. 402 stays terminal (buyer payment flow), and 404 stays terminal
33
+ // because model_not_found already has dedicated unadvertise handling while a
34
+ // generic 404 would repeat identically on every peer.
35
+ const RETRYABLE_STATUS_CODES = new Set([401, 403, 408, 429, 500, 502, 503, 504]);
30
36
  const MODEL_RATE_LIMIT_MAX_ATTEMPTS_PER_PEER = 3;
31
37
  const MODEL_RATE_LIMIT_RETRY_DELAYS_MS = [250, 750];
32
38
  const MODEL_RATE_LIMIT_MAX_RETRY_AFTER_MS = 2_000;