@0xmaxma/claude-gateway 1.7.9 → 1.8.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 +178 -44
- package/dist/agent/builtin-commands.js +2 -2
- package/dist/agent/builtin-commands.js.map +1 -1
- package/dist/agent/dreaming/accept.d.ts.map +1 -1
- package/dist/agent/dreaming/accept.js +4 -1
- package/dist/agent/dreaming/accept.js.map +1 -1
- package/dist/agent/dreaming/config.d.ts.map +1 -1
- package/dist/agent/dreaming/config.js +2 -0
- package/dist/agent/dreaming/config.js.map +1 -1
- package/dist/agent/dreaming/reviewer.d.ts.map +1 -1
- package/dist/agent/dreaming/reviewer.js +9 -2
- package/dist/agent/dreaming/reviewer.js.map +1 -1
- package/dist/agent/dreaming/staleness.d.ts +7 -1
- package/dist/agent/dreaming/staleness.d.ts.map +1 -1
- package/dist/agent/dreaming/staleness.js +17 -2
- package/dist/agent/dreaming/staleness.js.map +1 -1
- package/dist/agent/dreaming/types.d.ts +17 -1
- package/dist/agent/dreaming/types.d.ts.map +1 -1
- package/dist/agent/knowledge/archive-db.d.ts +43 -0
- package/dist/agent/knowledge/archive-db.d.ts.map +1 -1
- package/dist/agent/knowledge/archive-db.js +130 -0
- package/dist/agent/knowledge/archive-db.js.map +1 -1
- package/dist/agent/knowledge/config.d.ts +3 -1
- package/dist/agent/knowledge/config.d.ts.map +1 -1
- package/dist/agent/knowledge/config.js +32 -10
- package/dist/agent/knowledge/config.js.map +1 -1
- package/dist/agent/knowledge/index.d.ts +11 -4
- package/dist/agent/knowledge/index.d.ts.map +1 -1
- package/dist/agent/knowledge/index.js +22 -1
- package/dist/agent/knowledge/index.js.map +1 -1
- package/dist/agent/knowledge/indexer.d.ts +0 -7
- package/dist/agent/knowledge/indexer.d.ts.map +1 -1
- package/dist/agent/knowledge/indexer.js +34 -7
- package/dist/agent/knowledge/indexer.js.map +1 -1
- package/dist/agent/knowledge/lifecycle.d.ts +20 -4
- package/dist/agent/knowledge/lifecycle.d.ts.map +1 -1
- package/dist/agent/knowledge/lifecycle.js +33 -4
- package/dist/agent/knowledge/lifecycle.js.map +1 -1
- package/dist/agent/knowledge/reflection.d.ts +114 -0
- package/dist/agent/knowledge/reflection.d.ts.map +1 -0
- package/dist/agent/knowledge/reflection.js +447 -0
- package/dist/agent/knowledge/reflection.js.map +1 -0
- package/dist/agent/knowledge/shared-dedup.d.ts +85 -0
- package/dist/agent/knowledge/shared-dedup.d.ts.map +1 -0
- package/dist/agent/knowledge/shared-dedup.js +187 -0
- package/dist/agent/knowledge/shared-dedup.js.map +1 -0
- package/dist/agent/knowledge/shared-promote.d.ts +82 -7
- package/dist/agent/knowledge/shared-promote.d.ts.map +1 -1
- package/dist/agent/knowledge/shared-promote.js +244 -11
- package/dist/agent/knowledge/shared-promote.js.map +1 -1
- package/dist/agent/knowledge/shared-staleness.d.ts +51 -0
- package/dist/agent/knowledge/shared-staleness.d.ts.map +1 -0
- package/dist/agent/knowledge/shared-staleness.js +149 -0
- package/dist/agent/knowledge/shared-staleness.js.map +1 -0
- package/dist/agent/knowledge/shared-writer.d.ts +19 -0
- package/dist/agent/knowledge/shared-writer.d.ts.map +1 -1
- package/dist/agent/knowledge/shared-writer.js +42 -0
- package/dist/agent/knowledge/shared-writer.js.map +1 -1
- package/dist/agent/knowledge/types.d.ts +24 -0
- package/dist/agent/knowledge/types.d.ts.map +1 -1
- package/dist/agent/model-catalog.d.ts +62 -0
- package/dist/agent/model-catalog.d.ts.map +1 -0
- package/dist/agent/model-catalog.js +264 -0
- package/dist/agent/model-catalog.js.map +1 -0
- package/dist/agent/runner.d.ts +83 -0
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +281 -51
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/workspace-loader.d.ts +17 -2
- package/dist/agent/workspace-loader.d.ts.map +1 -1
- package/dist/agent/workspace-loader.js +17 -1
- package/dist/agent/workspace-loader.js.map +1 -1
- package/dist/api/cron-router.d.ts +12 -8
- package/dist/api/cron-router.d.ts.map +1 -1
- package/dist/api/cron-router.js +82 -16
- package/dist/api/cron-router.js.map +1 -1
- package/dist/api/gateway-router.d.ts +4 -0
- package/dist/api/gateway-router.d.ts.map +1 -1
- package/dist/api/gateway-router.js +16 -1
- package/dist/api/gateway-router.js.map +1 -1
- package/dist/api/manifest-sources.d.ts +15 -0
- package/dist/api/manifest-sources.d.ts.map +1 -0
- package/dist/api/manifest-sources.js +27 -0
- package/dist/api/manifest-sources.js.map +1 -0
- package/dist/api/meta-router.d.ts +13 -0
- package/dist/api/meta-router.d.ts.map +1 -0
- package/dist/api/meta-router.js +26 -0
- package/dist/api/meta-router.js.map +1 -0
- package/dist/api/packages.d.ts.map +1 -1
- package/dist/api/packages.js +18 -198
- package/dist/api/packages.js.map +1 -1
- package/dist/api/route-registry.d.ts +81 -0
- package/dist/api/route-registry.d.ts.map +1 -0
- package/dist/api/route-registry.js +44 -0
- package/dist/api/route-registry.js.map +1 -0
- package/dist/api/router.d.ts.map +1 -1
- package/dist/api/router.js +21 -3
- package/dist/api/router.js.map +1 -1
- package/dist/apps/compose-generator.js +7 -4
- package/dist/apps/compose-generator.js.map +1 -1
- package/dist/apps/installer.d.ts +154 -0
- package/dist/apps/installer.d.ts.map +1 -1
- package/dist/apps/installer.js +657 -54
- package/dist/apps/installer.js.map +1 -1
- package/dist/cli/args.d.ts +25 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +55 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/colors.d.ts +37 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +63 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/command-names.d.ts +98 -0
- package/dist/cli/command-names.d.ts.map +1 -0
- package/dist/cli/command-names.js +109 -0
- package/dist/cli/command-names.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +28 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +321 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/channels.d.ts +17 -0
- package/dist/cli/commands/channels.d.ts.map +1 -0
- package/dist/cli/commands/channels.js +101 -0
- package/dist/cli/commands/channels.js.map +1 -0
- package/dist/cli/commands/debug-bundle.d.ts +6 -0
- package/dist/cli/commands/debug-bundle.d.ts.map +1 -0
- package/dist/cli/commands/debug-bundle.js +220 -0
- package/dist/cli/commands/debug-bundle.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +104 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/gateway.d.ts +12 -0
- package/dist/cli/commands/gateway.d.ts.map +1 -0
- package/dist/cli/commands/gateway.js +145 -0
- package/dist/cli/commands/gateway.js.map +1 -0
- package/dist/cli/commands/service.d.ts +33 -0
- package/dist/cli/commands/service.d.ts.map +1 -0
- package/dist/cli/commands/service.js +513 -0
- package/dist/cli/commands/service.js.map +1 -0
- package/dist/cli/commands/update.d.ts +16 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +149 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands.generated.d.ts +4 -0
- package/dist/cli/commands.generated.d.ts.map +1 -0
- package/dist/cli/commands.generated.js +220 -0
- package/dist/cli/commands.generated.js.map +1 -0
- package/dist/cli/health.d.ts +31 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +49 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/cli/http-client.d.ts +140 -0
- package/dist/cli/http-client.d.ts.map +1 -0
- package/dist/cli/http-client.js +332 -0
- package/dist/cli/http-client.js.map +1 -0
- package/dist/cli/index.d.ts +27 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +372 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/manager.d.ts +64 -0
- package/dist/cli/manager.d.ts.map +1 -0
- package/dist/cli/manager.js +181 -0
- package/dist/cli/manager.js.map +1 -0
- package/dist/cli/output.d.ts +49 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +101 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/prompt.d.ts +29 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +154 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/redact.d.ts +3 -0
- package/dist/cli/redact.d.ts.map +1 -0
- package/dist/cli/redact.js +33 -0
- package/dist/cli/redact.js.map +1 -0
- package/dist/cli/types.d.ts +22 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +4 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/config/bootstrap.d.ts +33 -0
- package/dist/config/bootstrap.d.ts.map +1 -0
- package/dist/config/bootstrap.js +117 -0
- package/dist/config/bootstrap.js.map +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +5 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/watcher.d.ts.map +1 -1
- package/dist/config/watcher.js +2 -35
- package/dist/config/watcher.js.map +1 -1
- package/dist/discord/receiver.d.ts +6 -1
- package/dist/discord/receiver.d.ts.map +1 -1
- package/dist/discord/receiver.js +9 -1
- package/dist/discord/receiver.js.map +1 -1
- package/dist/entry.d.ts +3 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +83 -0
- package/dist/entry.js.map +1 -0
- package/dist/index.js +197 -47
- package/dist/index.js.map +1 -1
- package/dist/load-dotenv.d.ts +2 -0
- package/dist/load-dotenv.d.ts.map +1 -0
- package/dist/load-dotenv.js +68 -0
- package/dist/load-dotenv.js.map +1 -0
- package/dist/packages/registry.d.ts +50 -0
- package/dist/packages/registry.d.ts.map +1 -0
- package/dist/packages/registry.js +209 -0
- package/dist/packages/registry.js.map +1 -0
- package/dist/session/process.d.ts +20 -3
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +120 -5
- package/dist/session/process.js.map +1 -1
- package/dist/shell/claude-pty-shell.js +146 -27
- package/dist/shell/claude-pty-shell.js.map +1 -1
- package/dist/shell/draft-phantom.d.ts +49 -0
- package/dist/shell/draft-phantom.d.ts.map +1 -0
- package/dist/shell/draft-phantom.js +59 -0
- package/dist/shell/draft-phantom.js.map +1 -0
- package/dist/shell/submit-diag.d.ts +67 -0
- package/dist/shell/submit-diag.d.ts.map +1 -0
- package/dist/shell/submit-diag.js +69 -0
- package/dist/shell/submit-diag.js.map +1 -0
- package/dist/shutdown-signals.d.ts +47 -0
- package/dist/shutdown-signals.d.ts.map +1 -0
- package/dist/shutdown-signals.js +62 -0
- package/dist/shutdown-signals.js.map +1 -0
- package/dist/telegram/receiver.d.ts +6 -1
- package/dist/telegram/receiver.d.ts.map +1 -1
- package/dist/telegram/receiver.js +9 -1
- package/dist/telegram/receiver.js.map +1 -1
- package/dist/types.d.ts +25 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/orphan-receivers.d.ts +90 -0
- package/dist/utils/orphan-receivers.d.ts.map +1 -0
- package/dist/utils/orphan-receivers.js +218 -0
- package/dist/utils/orphan-receivers.js.map +1 -0
- package/dist/utils/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +60 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/stop-child.d.ts +21 -0
- package/dist/utils/stop-child.d.ts.map +1 -0
- package/dist/utils/stop-child.js +64 -0
- package/dist/utils/stop-child.js.map +1 -0
- package/lib/pairing.ts +1 -1
- package/mcp/tools/agent/handlers.ts +1 -1
- package/mcp/tools/discord/module.ts +23 -15
- package/mcp/tools/discord/receiver-server.ts +4 -0
- package/mcp/tools/memory/archive-reader.test.ts +25 -1
- package/mcp/tools/memory/archive-reader.ts +70 -12
- package/mcp/tools/memory/archive-writer.test.ts +168 -0
- package/mcp/tools/memory/archive-writer.ts +137 -0
- package/mcp/tools/memory/module.test.ts +187 -0
- package/mcp/tools/memory/module.ts +192 -6
- package/mcp/tools/telegram/module.ts +10 -2
- package/mcp/tools/telegram/receiver-server.ts +15 -6
- package/mcp/tools/telegram/typing.ts +178 -34
- package/package.json +6 -4
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runUpdate = runUpdate;
|
|
4
|
+
exports.runClaude = runClaude;
|
|
5
|
+
const registry_1 = require("../../packages/registry");
|
|
6
|
+
const manager_1 = require("../manager");
|
|
7
|
+
const prompt_1 = require("../prompt");
|
|
8
|
+
const output_1 = require("../output");
|
|
9
|
+
const output_2 = require("../output");
|
|
10
|
+
const RELEASE_NOTES = {
|
|
11
|
+
'claude-gateway': (v) => `https://github.com/0xMaxMa/claude-gateway/releases/tag/v${v}`,
|
|
12
|
+
'claude-code': () => 'https://www.npmjs.com/package/@anthropic-ai/claude-code',
|
|
13
|
+
};
|
|
14
|
+
/** Read the installed and published versions. Returns null (after reporting)
|
|
15
|
+
* when the registry can't be reached, so `check` never claims "up to date"
|
|
16
|
+
* merely because the lookup failed. */
|
|
17
|
+
async function resolve(id) {
|
|
18
|
+
const config = registry_1.PACKAGES[id];
|
|
19
|
+
const current = (0, registry_1.resolveCurrent)(config);
|
|
20
|
+
let latest;
|
|
21
|
+
try {
|
|
22
|
+
latest = await (0, registry_1.getLatestVersion)(config.npm);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
latest = null;
|
|
26
|
+
}
|
|
27
|
+
if (latest === null) {
|
|
28
|
+
process.stderr.write(`Could not reach the npm registry to look up ${config.npm}.\n`);
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return { config, current, latest, hasUpdate: (0, registry_1.updateAvailable)(current, latest) };
|
|
32
|
+
}
|
|
33
|
+
async function confirm(flags, question) {
|
|
34
|
+
if (flags.yes === true)
|
|
35
|
+
return true;
|
|
36
|
+
if (!process.stdin.isTTY) {
|
|
37
|
+
process.stderr.write('Refusing to update non-interactively without --yes.\n');
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const rl = (0, prompt_1.createRl)();
|
|
41
|
+
try {
|
|
42
|
+
const answer = (await (0, prompt_1.ask)(rl, `${question} (y/N): `)).trim().toLowerCase();
|
|
43
|
+
return answer === 'y' || answer === 'yes';
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
rl.close();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async function check(id, flags) {
|
|
50
|
+
const resolved = await resolve(id);
|
|
51
|
+
if (!resolved)
|
|
52
|
+
return 1;
|
|
53
|
+
(0, output_1.printJson)({
|
|
54
|
+
package: resolved.config.npm,
|
|
55
|
+
current: resolved.current,
|
|
56
|
+
latest: resolved.latest,
|
|
57
|
+
hasUpdate: resolved.hasUpdate,
|
|
58
|
+
}, flags);
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
/** Tell the operator exactly how to get the new code running. An npm install
|
|
62
|
+
* replaces the files on disk; the process already in memory keeps serving the
|
|
63
|
+
* old build until its manager restarts it. */
|
|
64
|
+
function printRestartGuidance() {
|
|
65
|
+
const manager = (0, manager_1.detectManager)();
|
|
66
|
+
if (manager === 'unknown') {
|
|
67
|
+
process.stderr.write('Restart the gateway to run the new version.\n');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
process.stderr.write(`The running gateway still serves the previous build — restart it with \`claude-gateway gateway restart\` (${manager}).\n`);
|
|
71
|
+
}
|
|
72
|
+
async function update(id, flags) {
|
|
73
|
+
const resolved = await resolve(id);
|
|
74
|
+
if (!resolved)
|
|
75
|
+
return 1;
|
|
76
|
+
const { config, current, latest } = resolved;
|
|
77
|
+
if (!resolved.hasUpdate) {
|
|
78
|
+
(0, output_1.printJson)({ package: config.npm, from: current, to: current, updated: false }, flags);
|
|
79
|
+
process.stderr.write(current === null
|
|
80
|
+
? `${config.npm} is not installed here — install it before updating.\n`
|
|
81
|
+
: `Already on ${current} (published latest: ${latest}).\n`);
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
process.stderr.write(`\n${config.npm}\n current: ${current ?? 'not installed'}\n target: ${latest}\n` +
|
|
85
|
+
` notes: ${RELEASE_NOTES[id](latest)}\n\n`);
|
|
86
|
+
if (!(await confirm(flags, `Update ${config.npm} to ${latest}?`))) {
|
|
87
|
+
process.stderr.write('Aborted — nothing was installed.\n');
|
|
88
|
+
return 1;
|
|
89
|
+
}
|
|
90
|
+
// Native-installer packages (claude-code) must use their own updater: an
|
|
91
|
+
// `npm install -g` would write a second copy that isn't the binary on PATH.
|
|
92
|
+
const error = config.update === 'native' && config.bin ? (0, registry_1.runNativeUpdate)(config) : (0, registry_1.installNpmLatest)(config.npm);
|
|
93
|
+
if (error !== null) {
|
|
94
|
+
process.stderr.write(`Update failed: ${error}\n`);
|
|
95
|
+
return 1;
|
|
96
|
+
}
|
|
97
|
+
const to = config.detect === 'binary' ? (0, registry_1.resolveCurrent)(config) : (0, registry_1.getNpmListVersion)(config.npm);
|
|
98
|
+
(0, output_1.printJson)({ package: config.npm, from: current, to, updated: to !== current }, flags);
|
|
99
|
+
if (to === current) {
|
|
100
|
+
// A native updater can legitimately be a no-op on its own channel.
|
|
101
|
+
process.stderr.write(`${config.npm} reports ${to ?? 'an unknown version'} after updating — no change.\n`);
|
|
102
|
+
return 0;
|
|
103
|
+
}
|
|
104
|
+
if (id === 'claude-gateway')
|
|
105
|
+
printRestartGuidance();
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
/** `claude-gateway update [check]` — the gateway's own package. */
|
|
109
|
+
async function runUpdate(id, positionals, flags) {
|
|
110
|
+
const verb = positionals[0];
|
|
111
|
+
if (flags.help === true) {
|
|
112
|
+
(0, output_2.writeCommandHelp)(true, 'update', "check for or install a newer claude-gateway", 'claude-gateway update [check] [--yes]', [' check is read-only; the bare form installs after confirming.']);
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
if (!verb)
|
|
116
|
+
return update(id, flags);
|
|
117
|
+
if (verb === 'check')
|
|
118
|
+
return check(id, flags);
|
|
119
|
+
process.stderr.write(`Unknown: update ${verb} (expected no argument, or "check")\n`);
|
|
120
|
+
return 1;
|
|
121
|
+
}
|
|
122
|
+
/** `claude-gateway claude <version|update [check]>` — the Claude Code binary. */
|
|
123
|
+
async function runClaude(positionals, flags) {
|
|
124
|
+
const [verb, sub] = positionals;
|
|
125
|
+
if (!verb || flags.help === true) {
|
|
126
|
+
(0, output_2.writeCommandHelp)(flags.help === true, 'claude', 'inspect or update the Claude Code binary', 'claude-gateway claude <version|update [check]> [--yes]');
|
|
127
|
+
return flags.help === true ? 0 : 1;
|
|
128
|
+
}
|
|
129
|
+
if (verb === 'version') {
|
|
130
|
+
const current = (0, registry_1.resolveCurrent)(registry_1.PACKAGES['claude-code']);
|
|
131
|
+
if (current === null) {
|
|
132
|
+
process.stderr.write('Claude Code is not installed, or `claude --version` failed.\n');
|
|
133
|
+
return 1;
|
|
134
|
+
}
|
|
135
|
+
process.stdout.write(current + '\n');
|
|
136
|
+
return 0;
|
|
137
|
+
}
|
|
138
|
+
if (verb === 'update') {
|
|
139
|
+
if (!sub)
|
|
140
|
+
return update('claude-code', flags);
|
|
141
|
+
if (sub === 'check')
|
|
142
|
+
return check('claude-code', flags);
|
|
143
|
+
process.stderr.write(`Unknown: claude update ${sub} (expected no argument, or "check")\n`);
|
|
144
|
+
return 1;
|
|
145
|
+
}
|
|
146
|
+
process.stderr.write(`Unknown: claude ${verb} (expected version|update)\n`);
|
|
147
|
+
return 1;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.generated.d.ts","sourceRoot":"","sources":["../../src/cli/commands.generated.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAsNhD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,EAAc,CAAC"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GENERATED_NOUNS = exports.GENERATED_COMMANDS = void 0;
|
|
4
|
+
exports.GENERATED_COMMANDS = [
|
|
5
|
+
{
|
|
6
|
+
"noun": "crons",
|
|
7
|
+
"verb": "create",
|
|
8
|
+
"method": "POST",
|
|
9
|
+
"path": "/v1/crons",
|
|
10
|
+
"args": [],
|
|
11
|
+
"flags": [
|
|
12
|
+
{
|
|
13
|
+
"name": "agentId",
|
|
14
|
+
"in": "body",
|
|
15
|
+
"required": true,
|
|
16
|
+
"description": "Owning agent id"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "name",
|
|
20
|
+
"in": "body",
|
|
21
|
+
"required": true,
|
|
22
|
+
"description": "Job name"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "type",
|
|
26
|
+
"in": "body",
|
|
27
|
+
"description": "command | agent"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "schedule",
|
|
31
|
+
"in": "body",
|
|
32
|
+
"description": "5-field cron expression (scheduleKind=cron)"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "scheduleKind",
|
|
36
|
+
"in": "body",
|
|
37
|
+
"description": "cron | at"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "scheduleAt",
|
|
41
|
+
"in": "body",
|
|
42
|
+
"description": "ISO-8601 timestamp (scheduleKind=at)"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "command",
|
|
46
|
+
"in": "body",
|
|
47
|
+
"description": "Shell command (type=command)"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "prompt",
|
|
51
|
+
"in": "body",
|
|
52
|
+
"description": "Agent prompt (type=agent)"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"summary": "Create a cron job",
|
|
56
|
+
"auth": "key"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"noun": "crons",
|
|
60
|
+
"verb": "delete",
|
|
61
|
+
"method": "DELETE",
|
|
62
|
+
"path": "/v1/crons/:id",
|
|
63
|
+
"args": [
|
|
64
|
+
"id"
|
|
65
|
+
],
|
|
66
|
+
"flags": [],
|
|
67
|
+
"summary": "Delete a cron job",
|
|
68
|
+
"auth": "key"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"noun": "crons",
|
|
72
|
+
"verb": "get",
|
|
73
|
+
"method": "GET",
|
|
74
|
+
"path": "/v1/crons/:id",
|
|
75
|
+
"args": [
|
|
76
|
+
"id"
|
|
77
|
+
],
|
|
78
|
+
"flags": [],
|
|
79
|
+
"summary": "Get a single cron job",
|
|
80
|
+
"auth": "key"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"noun": "crons",
|
|
84
|
+
"verb": "list",
|
|
85
|
+
"method": "GET",
|
|
86
|
+
"path": "/v1/crons",
|
|
87
|
+
"args": [],
|
|
88
|
+
"flags": [
|
|
89
|
+
{
|
|
90
|
+
"name": "agent",
|
|
91
|
+
"in": "query",
|
|
92
|
+
"description": "Filter by agent id"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"summary": "List cron jobs accessible by this key",
|
|
96
|
+
"auth": "key"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"noun": "crons",
|
|
100
|
+
"verb": "run",
|
|
101
|
+
"method": "POST",
|
|
102
|
+
"path": "/v1/crons/:id/run",
|
|
103
|
+
"args": [
|
|
104
|
+
"id"
|
|
105
|
+
],
|
|
106
|
+
"flags": [],
|
|
107
|
+
"summary": "Trigger a cron job now",
|
|
108
|
+
"auth": "key"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"noun": "crons",
|
|
112
|
+
"verb": "runs",
|
|
113
|
+
"method": "GET",
|
|
114
|
+
"path": "/v1/crons/:id/runs",
|
|
115
|
+
"args": [
|
|
116
|
+
"id"
|
|
117
|
+
],
|
|
118
|
+
"flags": [
|
|
119
|
+
{
|
|
120
|
+
"name": "limit",
|
|
121
|
+
"in": "query",
|
|
122
|
+
"description": "Max runs to return (default 20)"
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"summary": "Get cron job run history",
|
|
126
|
+
"auth": "key"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"noun": "crons",
|
|
130
|
+
"verb": "status",
|
|
131
|
+
"method": "GET",
|
|
132
|
+
"path": "/v1/crons/status",
|
|
133
|
+
"args": [],
|
|
134
|
+
"flags": [],
|
|
135
|
+
"summary": "Cron scheduler status",
|
|
136
|
+
"auth": "key"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"noun": "crons",
|
|
140
|
+
"verb": "update",
|
|
141
|
+
"method": "PUT",
|
|
142
|
+
"path": "/v1/crons/:id",
|
|
143
|
+
"args": [
|
|
144
|
+
"id"
|
|
145
|
+
],
|
|
146
|
+
"flags": [
|
|
147
|
+
{
|
|
148
|
+
"name": "name",
|
|
149
|
+
"in": "body",
|
|
150
|
+
"description": "Job name"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"name": "type",
|
|
154
|
+
"in": "body",
|
|
155
|
+
"description": "command | agent"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "schedule",
|
|
159
|
+
"in": "body",
|
|
160
|
+
"description": "5-field cron expression (scheduleKind=cron)"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"name": "scheduleKind",
|
|
164
|
+
"in": "body",
|
|
165
|
+
"description": "cron | at"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"name": "scheduleAt",
|
|
169
|
+
"in": "body",
|
|
170
|
+
"description": "ISO-8601 timestamp (scheduleKind=at)"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "timezone",
|
|
174
|
+
"in": "body",
|
|
175
|
+
"description": "IANA timezone for the schedule"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "command",
|
|
179
|
+
"in": "body",
|
|
180
|
+
"description": "Shell command (type=command)"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"name": "prompt",
|
|
184
|
+
"in": "body",
|
|
185
|
+
"description": "Agent prompt (type=agent)"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "telegram",
|
|
189
|
+
"in": "body",
|
|
190
|
+
"description": "Telegram chat id for the result"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "discord",
|
|
194
|
+
"in": "body",
|
|
195
|
+
"description": "Discord channel id for the result"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"name": "timeoutMs",
|
|
199
|
+
"in": "body",
|
|
200
|
+
"description": "Per-run timeout in milliseconds"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"name": "deleteAfterRun",
|
|
204
|
+
"in": "body",
|
|
205
|
+
"boolean": true,
|
|
206
|
+
"description": "Delete the job after its next run"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"name": "enabled",
|
|
210
|
+
"in": "body",
|
|
211
|
+
"boolean": true,
|
|
212
|
+
"description": "Enable or disable the job"
|
|
213
|
+
}
|
|
214
|
+
],
|
|
215
|
+
"summary": "Update a cron job",
|
|
216
|
+
"auth": "key"
|
|
217
|
+
}
|
|
218
|
+
];
|
|
219
|
+
exports.GENERATED_NOUNS = ["crons"];
|
|
220
|
+
//# sourceMappingURL=commands.generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.generated.js","sourceRoot":"","sources":["../../src/cli/commands.generated.ts"],"names":[],"mappings":";;;AAIa,QAAA,kBAAkB,GAAuB;IACpD;QACE,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,iBAAiB;aACjC;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,UAAU;aAC1B;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,iBAAiB;aACjC;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,6CAA6C;aAC7D;YACD;gBACE,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,WAAW;aAC3B;YACD;gBACE,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,sCAAsC;aACtD;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,8BAA8B;aAC9C;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,2BAA2B;aAC3C;SACF;QACD,SAAS,EAAE,mBAAmB;QAC9B,MAAM,EAAE,KAAK;KACd;IACD;QACE,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE;YACN,IAAI;SACL;QACD,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,mBAAmB;QAC9B,MAAM,EAAE,KAAK;KACd;IACD;QACE,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE;YACN,IAAI;SACL;QACD,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,uBAAuB;QAClC,MAAM,EAAE,KAAK;KACd;IACD;QACE,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,OAAO;gBACb,aAAa,EAAE,oBAAoB;aACpC;SACF;QACD,SAAS,EAAE,uCAAuC;QAClD,MAAM,EAAE,KAAK;KACd;IACD;QACE,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE;YACN,IAAI;SACL;QACD,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,wBAAwB;QACnC,MAAM,EAAE,KAAK;KACd;IACD;QACE,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,oBAAoB;QAC5B,MAAM,EAAE;YACN,IAAI;SACL;QACD,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,OAAO;gBACb,aAAa,EAAE,iCAAiC;aACjD;SACF;QACD,SAAS,EAAE,0BAA0B;QACrC,MAAM,EAAE,KAAK;KACd;IACD;QACE,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,uBAAuB;QAClC,MAAM,EAAE,KAAK;KACd;IACD;QACE,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE;YACN,IAAI;SACL;QACD,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,UAAU;aAC1B;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,iBAAiB;aACjC;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,6CAA6C;aAC7D;YACD;gBACE,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,WAAW;aAC3B;YACD;gBACE,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,sCAAsC;aACtD;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,gCAAgC;aAChD;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,8BAA8B;aAC9C;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,2BAA2B;aAC3C;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,iCAAiC;aACjD;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,mCAAmC;aACnD;YACD;gBACE,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,iCAAiC;aACjD;YACD;gBACE,MAAM,EAAE,gBAAgB;gBACxB,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,mCAAmC;aACnD;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,2BAA2B;aAC3C;SACF;QACD,SAAS,EAAE,mBAAmB;QAC9B,MAAM,EAAE,KAAK;KACd;CACF,CAAC;AAEW,QAAA,eAAe,GAAa,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one `/health` probe every CLI command uses.
|
|
3
|
+
*
|
|
4
|
+
* There were three of these — in `doctor`, `gateway status` and `service
|
|
5
|
+
* install` — at three different fidelities, and a bug fixed in one survived in
|
|
6
|
+
* the others (a leaked abort timer needed the same fix three times). One
|
|
7
|
+
* implementation means one behaviour and one place to fix.
|
|
8
|
+
*/
|
|
9
|
+
export interface HealthProbe {
|
|
10
|
+
/** True only for a 2xx: the CLI can actually use this URL. */
|
|
11
|
+
ok: boolean;
|
|
12
|
+
/** True when something answered at all, whatever the status. */
|
|
13
|
+
answered: boolean;
|
|
14
|
+
/** The HTTP status, when there was one. */
|
|
15
|
+
status?: number;
|
|
16
|
+
/** One line fit to show an operator. */
|
|
17
|
+
detail: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Probe `<baseUrl>/health`.
|
|
21
|
+
*
|
|
22
|
+
* A status is reported verbatim rather than collapsed into "no response": a
|
|
23
|
+
* reverse proxy that replies 401 is *up*, and saying otherwise sends the
|
|
24
|
+
* operator to debug a proxy that is working fine.
|
|
25
|
+
*
|
|
26
|
+
* The abort timer is cleared in `finally`. A rejected fetch would otherwise
|
|
27
|
+
* skip clearTimeout and leave a live timer holding the event loop open — and an
|
|
28
|
+
* unreachable gateway is exactly the case these commands are run for.
|
|
29
|
+
*/
|
|
30
|
+
export declare function probeHealth(baseUrl: string, timeoutMs?: number): Promise<HealthProbe>;
|
|
31
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,EAAE,EAAE,OAAO,CAAC;IACZ,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAsBzF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The one `/health` probe every CLI command uses.
|
|
4
|
+
*
|
|
5
|
+
* There were three of these — in `doctor`, `gateway status` and `service
|
|
6
|
+
* install` — at three different fidelities, and a bug fixed in one survived in
|
|
7
|
+
* the others (a leaked abort timer needed the same fix three times). One
|
|
8
|
+
* implementation means one behaviour and one place to fix.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.probeHealth = probeHealth;
|
|
12
|
+
/**
|
|
13
|
+
* Probe `<baseUrl>/health`.
|
|
14
|
+
*
|
|
15
|
+
* A status is reported verbatim rather than collapsed into "no response": a
|
|
16
|
+
* reverse proxy that replies 401 is *up*, and saying otherwise sends the
|
|
17
|
+
* operator to debug a proxy that is working fine.
|
|
18
|
+
*
|
|
19
|
+
* The abort timer is cleared in `finally`. A rejected fetch would otherwise
|
|
20
|
+
* skip clearTimeout and leave a live timer holding the event loop open — and an
|
|
21
|
+
* unreachable gateway is exactly the case these commands are run for.
|
|
22
|
+
*/
|
|
23
|
+
async function probeHealth(baseUrl, timeoutMs = 3000) {
|
|
24
|
+
const controller = new AbortController();
|
|
25
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
26
|
+
try {
|
|
27
|
+
const res = await fetch(`${baseUrl}/health`, { signal: controller.signal });
|
|
28
|
+
if (res.ok)
|
|
29
|
+
return { ok: true, answered: true, status: res.status, detail: 'gateway responding' };
|
|
30
|
+
return {
|
|
31
|
+
ok: false,
|
|
32
|
+
answered: true,
|
|
33
|
+
status: res.status,
|
|
34
|
+
detail: `HTTP ${res.status} (answered, but not a healthy gateway)`,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
const aborted = err?.name === 'AbortError';
|
|
39
|
+
return {
|
|
40
|
+
ok: false,
|
|
41
|
+
answered: false,
|
|
42
|
+
detail: aborted ? `no response (timed out after ${timeoutMs}ms)` : 'no response',
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/cli/health.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAwBH,kCAsBC;AAjCD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,SAAS,GAAG,IAAI;IACjE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,IAAI,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;QAClG,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,QAAQ,GAAG,CAAC,MAAM,wCAAwC;SACnE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAI,GAAqC,EAAE,IAAI,KAAK,YAAY,CAAC;QAC9E,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,gCAAgC,SAAS,KAAK,CAAC,CAAC,CAAC,aAAa;SACjF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import type { ApiKey } from '../types';
|
|
2
|
+
import { LocalGateway } from './manager';
|
|
3
|
+
import { expandHome } from '../utils/paths';
|
|
4
|
+
/**
|
|
5
|
+
* CLI HTTP client — resolves where to talk to the gateway and which key to use,
|
|
6
|
+
* then makes the request. Kept deliberately light: it reads the config JSON
|
|
7
|
+
* directly rather than going through the server's loadConfig() (no validation,
|
|
8
|
+
* migration, or server-side side effects), so the CLI stays fast and works even
|
|
9
|
+
* when the gateway is misconfigured or down.
|
|
10
|
+
*
|
|
11
|
+
* Resolution never prints the API key.
|
|
12
|
+
*/
|
|
13
|
+
export declare const DEFAULT_PORT = 10850;
|
|
14
|
+
export { expandHome };
|
|
15
|
+
/** The slice of gateway config the CLI cares about. */
|
|
16
|
+
export interface CliConfigView {
|
|
17
|
+
bind?: string;
|
|
18
|
+
publicUrl?: string;
|
|
19
|
+
keys?: ApiKey[];
|
|
20
|
+
logDir?: string;
|
|
21
|
+
}
|
|
22
|
+
/** Read ~/.claude-gateway/config.json (or an override path) and extract the
|
|
23
|
+
* fields the CLI needs. Returns an empty view if the file is missing/unreadable
|
|
24
|
+
* so that flags/env can still drive resolution. */
|
|
25
|
+
export declare function loadCliConfig(configPath?: string): CliConfigView;
|
|
26
|
+
export interface ResolveInputs {
|
|
27
|
+
/** `--url` / `--key` values (undefined if not passed). */
|
|
28
|
+
flagUrl?: string;
|
|
29
|
+
flagKey?: string;
|
|
30
|
+
/** process.env (injectable for tests). */
|
|
31
|
+
env?: NodeJS.ProcessEnv;
|
|
32
|
+
config?: CliConfigView;
|
|
33
|
+
/** The gateway process running on this host (with the port it listens on),
|
|
34
|
+
* or null when there is none. Injectable for tests; defaults to the pidfile
|
|
35
|
+
* read in `manager.ts`. */
|
|
36
|
+
localGateway?: () => LocalGateway | null;
|
|
37
|
+
}
|
|
38
|
+
/** Where a command will be sent, and where to retry if that address is dead. */
|
|
39
|
+
export interface UrlPlan {
|
|
40
|
+
baseUrl: string;
|
|
41
|
+
/** A second address for the *same* gateway, tried once when `baseUrl` cannot
|
|
42
|
+
* be reached at all. Absent when there is no second address, or when the
|
|
43
|
+
* caller named one explicitly. */
|
|
44
|
+
fallbackUrl?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Resolve where the CLI should talk to the gateway. Precedence:
|
|
48
|
+
* --url → $CLAUDE_GATEWAY_URL → http://<bind>:<port> *when a gateway is
|
|
49
|
+
* running on this host* → config.gateway.publicUrl → http://<bind>:<port>
|
|
50
|
+
*
|
|
51
|
+
* `config.gateway.publicUrl` describes *this* gateway as seen from outside,
|
|
52
|
+
* so when the gateway is running here, loopback and the public URL are the
|
|
53
|
+
* same server — the public one just adds a reverse-proxy hop. Preferring it
|
|
54
|
+
* from the gateway's own host makes every command depend on that proxy, and a
|
|
55
|
+
* proxy enforcing its own authentication (which the CLI has no credentials
|
|
56
|
+
* for) answers 401 to commands that work perfectly over loopback. So a live
|
|
57
|
+
* local gateway wins; `--url` and `$CLAUDE_GATEWAY_URL` still override, for
|
|
58
|
+
* deliberately exercising the proxy path or reaching another host.
|
|
59
|
+
*
|
|
60
|
+
* Liveness comes from a pidfile, which can lie: a gateway killed without
|
|
61
|
+
* cleanup leaves one behind, and the OS may reissue that pid to an unrelated
|
|
62
|
+
* process. The local address would then be preferred and nothing would answer
|
|
63
|
+
* it, so `publicUrl` is returned as `fallbackUrl` — the same gateway by its
|
|
64
|
+
* other name — for the caller to retry once. That cost is paid only when the
|
|
65
|
+
* local address is genuinely unreachable.
|
|
66
|
+
*
|
|
67
|
+
* A bind of 0.0.0.0 / :: is a listen address, not a dial address, so it is
|
|
68
|
+
* rewritten to loopback for the client. The port comes from the pidfile when a
|
|
69
|
+
* gateway is running (see readLocalGateway), else $PORT, else 10850. The
|
|
70
|
+
* returned URLs have no trailing slash.
|
|
71
|
+
*/
|
|
72
|
+
export declare function resolveUrlPlan(i?: ResolveInputs): UrlPlan;
|
|
73
|
+
/** The base URL alone — see resolveUrlPlan() for the precedence and why. */
|
|
74
|
+
export declare function resolveUrl(i?: ResolveInputs): string;
|
|
75
|
+
/**
|
|
76
|
+
* Resolve the URL for probing the gateway *process on this host* — used by
|
|
77
|
+
* `gateway status` and by `service install`'s post-install health check.
|
|
78
|
+
* Precedence:
|
|
79
|
+
* --url → http://<bind>:<port>
|
|
80
|
+
*
|
|
81
|
+
* Deliberately NOT resolveUrl(): `config.gateway.publicUrl` (and
|
|
82
|
+
* `$CLAUDE_GATEWAY_URL`) usually point at a reverse proxy, which may be
|
|
83
|
+
* unreachable from the box itself — or, worse, still answering from a
|
|
84
|
+
* different instance, so a dead local service would be reported healthy.
|
|
85
|
+
* An explicit `--url` still wins, for deliberately checking another host.
|
|
86
|
+
*/
|
|
87
|
+
export declare function resolveLocalUrl(i?: ResolveInputs): string;
|
|
88
|
+
/**
|
|
89
|
+
* Resolve the API key. Precedence:
|
|
90
|
+
* --key → $CLAUDE_GATEWAY_API_KEY → first admin key in config → first key in config
|
|
91
|
+
*
|
|
92
|
+
* Returns undefined if none is available. The key is never logged.
|
|
93
|
+
*/
|
|
94
|
+
export declare function resolveKey(i?: ResolveInputs): string | undefined;
|
|
95
|
+
export interface RequestOptions {
|
|
96
|
+
method: string;
|
|
97
|
+
/** API path beginning with /v1 (mounted under /api server-side). */
|
|
98
|
+
path: string;
|
|
99
|
+
baseUrl: string;
|
|
100
|
+
key?: string;
|
|
101
|
+
query?: Record<string, string | undefined>;
|
|
102
|
+
body?: unknown;
|
|
103
|
+
/** Abort the request after this many ms (default 30000). */
|
|
104
|
+
timeoutMs?: number;
|
|
105
|
+
/** A second address for the same gateway, tried once when `baseUrl` cannot be
|
|
106
|
+
* reached at all (see resolveUrlPlan). An HTTP error is never retried — the
|
|
107
|
+
* gateway answered, and repeating the call elsewhere would hide that. */
|
|
108
|
+
fallbackBaseUrl?: string;
|
|
109
|
+
/** Called before the retry, so the switch is never silent. Injectable for
|
|
110
|
+
* tests; defaults to a one-line note on stderr. */
|
|
111
|
+
onFallback?: (from: string, to: string, reason: string) => void;
|
|
112
|
+
}
|
|
113
|
+
export interface RequestResult {
|
|
114
|
+
status: number;
|
|
115
|
+
ok: boolean;
|
|
116
|
+
/** Parsed JSON when the response is JSON, otherwise the raw text. */
|
|
117
|
+
data: unknown;
|
|
118
|
+
}
|
|
119
|
+
/** Build the full request URL: `${baseUrl}/api${path}` plus any query string. */
|
|
120
|
+
export declare function buildRequestUrl(baseUrl: string, apiPath: string, query?: Record<string, string | undefined>): string;
|
|
121
|
+
/**
|
|
122
|
+
* Make an authenticated request to the gateway. Throws a clear Error (with the
|
|
123
|
+
* server's message when present) on a non-2xx response or a transport failure,
|
|
124
|
+
* so command wrappers can surface it and exit non-zero.
|
|
125
|
+
*/
|
|
126
|
+
export declare function request(opts: RequestOptions): Promise<RequestResult>;
|
|
127
|
+
/**
|
|
128
|
+
* Resolve a plan down to one base URL that something is actually answering on.
|
|
129
|
+
*
|
|
130
|
+
* `request()` carries the stale-pidfile fallback per call, which suits the
|
|
131
|
+
* one-shot commands. The interactive flows (`agents`, `channels`) thread a
|
|
132
|
+
* single base URL through many helpers and many requests, so they settle the
|
|
133
|
+
* question once up front instead: if the local address answers nothing, the
|
|
134
|
+
* whole session runs against `publicUrl`.
|
|
135
|
+
*
|
|
136
|
+
* Costs one extra `/health` round trip, and only when a fallback exists at all
|
|
137
|
+
* — that is, only when a pidfile pointed at a gateway on this host.
|
|
138
|
+
*/
|
|
139
|
+
export declare function resolveReachableUrl(plan: UrlPlan): Promise<string>;
|
|
140
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/cli/http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAoB,YAAY,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C;;;;;;;;GAQG;AAEH,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,CAAC;AAGtB,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;oDAEoD;AACpD,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAkBhE;AAED,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;gCAE4B;IAC5B,YAAY,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;CAC1C;AAED,gFAAgF;AAChF,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB;;uCAEmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAE,aAAkB,GAAG,OAAO,CAc7D;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,CAAC,GAAE,aAAkB,GAAG,MAAM,CAExD;AAqCD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,CAAC,GAAE,aAAkB,GAAG,MAAM,CAK7D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAE,aAAkB,GAAG,MAAM,GAAG,SAAS,CASpE;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;8EAE0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;wDACoD;IACpD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AASD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,qEAAqE;IACrE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAapH;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAY1E;AAmED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAUxE"}
|