@0xmaxma/claude-gateway 1.7.10 → 1.8.1
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 +167 -41
- package/dist/agent/builtin-commands.js +2 -2
- package/dist/agent/builtin-commands.js.map +1 -1
- package/dist/agent/knowledge/config.d.ts.map +1 -1
- package/dist/agent/knowledge/config.js +2 -9
- package/dist/agent/knowledge/config.js.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 +304 -0
- package/dist/agent/model-catalog.js.map +1 -0
- package/dist/agent/runner.d.ts +76 -0
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +212 -41
- package/dist/agent/runner.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 +14 -0
- 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/installer.d.ts +73 -5
- package/dist/apps/installer.d.ts.map +1 -1
- package/dist/apps/installer.js +237 -22
- 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 +160 -46
- 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 +14 -5
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +155 -26
- package/dist/session/process.js.map +1 -1
- 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/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/receiver-server.ts +4 -0
- package/mcp/tools/telegram/receiver-server.ts +152 -29
- package/package.json +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkGA,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/config/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/config/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAK9D,QAAA,MAAM,2BAA2B,EAAE,MAAM,EAMxC,CAAC;AAOF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB;AAOD,qBAAa,aAAc,SAAQ,YAAY;IAc3C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAfzB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IACrH,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IACtE,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IACtF,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAMxF,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAAgB;gBAGlB,UAAU,EAAE,MAAM,EACnC,aAAa,EAAE,aAAa,EACX,MAAM,EAAE,MAAM;IAMjC,KAAK,IAAI,IAAI;IASb,IAAI,IAAI,IAAI;IAKZ,kCAAkC;IAClC,SAAS,IAAI,aAAa;IAI1B,MAAM,IAAI,IAAI;IAgFd,OAAO,CAAC,UAAU;CAoEnB;AAED,2EAA2E;AAC3E,iBAAS,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAoBlD;AAGD,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,2BAA2B,EAAE,CAAC"}
|
package/dist/config/watcher.js
CHANGED
|
@@ -1,44 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.HOT_RELOADABLE_AGENT_FIELDS = exports.ConfigWatcher = void 0;
|
|
37
4
|
exports._deepEqual = deepEqual;
|
|
38
5
|
const events_1 = require("events");
|
|
39
|
-
const os = __importStar(require("os"));
|
|
40
6
|
const loader_1 = require("./loader");
|
|
41
7
|
const factory_1 = require("../watch/factory");
|
|
8
|
+
const paths_1 = require("../utils/paths");
|
|
42
9
|
// Fields that can be hot-reloaded without restarting the gateway
|
|
43
10
|
const HOT_RELOADABLE_AGENT_FIELDS = [
|
|
44
11
|
'claude.model',
|
|
@@ -84,7 +51,7 @@ class ConfigWatcher extends events_1.EventEmitter {
|
|
|
84
51
|
let newConfig;
|
|
85
52
|
try {
|
|
86
53
|
newConfig = (0, loader_1.loadConfig)(this.configPath);
|
|
87
|
-
newConfig.gateway.logDir = newConfig.gateway.logDir
|
|
54
|
+
newConfig.gateway.logDir = (0, paths_1.expandHome)(newConfig.gateway.logDir);
|
|
88
55
|
}
|
|
89
56
|
catch (err) {
|
|
90
57
|
this.logger.error('Config reload failed, keeping current config', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/config/watcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/config/watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,12 @@ export declare class DiscordReceiver {
|
|
|
13
13
|
start(): void;
|
|
14
14
|
private spawnProcess;
|
|
15
15
|
private scheduleRestart;
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Stop the receiver and resolve only once the child has actually exited.
|
|
18
|
+
* Escalates SIGTERM → SIGKILL so a wedged child cannot outlive the gateway's
|
|
19
|
+
* shutdown. See issue #405.
|
|
20
|
+
*/
|
|
21
|
+
stop(): Promise<void>;
|
|
17
22
|
isRunning(): boolean;
|
|
18
23
|
}
|
|
19
24
|
//# sourceMappingURL=receiver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receiver.d.ts","sourceRoot":"","sources":["../../src/discord/receiver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"receiver.d.ts","sourceRoot":"","sources":["../../src/discord/receiver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAYvC,qBAAa,eAAe;IASxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;gBAGtC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM;IAKjC,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,YAAY;IAwCpB,OAAO,CAAC,eAAe;IAuBvB;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrB,SAAS,IAAI,OAAO;CAGrB"}
|
package/dist/discord/receiver.js
CHANGED
|
@@ -37,6 +37,7 @@ exports.DiscordReceiver = void 0;
|
|
|
37
37
|
const child_process_1 = require("child_process");
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const logger_1 = require("../logger");
|
|
40
|
+
const stop_child_1 = require("../utils/stop-child");
|
|
40
41
|
const AUTO_RESTART_DELAY_MS = 5000;
|
|
41
42
|
const MAX_RESTARTS = 3;
|
|
42
43
|
// After MAX_RESTARTS fast attempts, fall back to a slow indefinite retry
|
|
@@ -116,13 +117,20 @@ class DiscordReceiver {
|
|
|
116
117
|
this.spawnProcess();
|
|
117
118
|
}, delay);
|
|
118
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Stop the receiver and resolve only once the child has actually exited.
|
|
122
|
+
* Escalates SIGTERM → SIGKILL so a wedged child cannot outlive the gateway's
|
|
123
|
+
* shutdown. See issue #405.
|
|
124
|
+
*/
|
|
119
125
|
stop() {
|
|
120
126
|
this.stopping = true;
|
|
121
127
|
if (this.restartTimer) {
|
|
122
128
|
clearTimeout(this.restartTimer);
|
|
123
129
|
this.restartTimer = null;
|
|
124
130
|
}
|
|
125
|
-
this.process
|
|
131
|
+
return (0, stop_child_1.stopChildProcess)(this.process, {
|
|
132
|
+
onEscalate: (pid) => this.logger.warn(`DiscordReceiver did not exit within ${stop_child_1.STOP_GRACE_MS}ms of SIGTERM; sending SIGKILL`, { pid }),
|
|
133
|
+
});
|
|
126
134
|
}
|
|
127
135
|
isRunning() {
|
|
128
136
|
return this.process !== null && !this.process.killed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receiver.js","sourceRoot":"","sources":["../../src/discord/receiver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAoD;AACpD,2CAA6B;AAE7B,sCAAyC;
|
|
1
|
+
{"version":3,"file":"receiver.js","sourceRoot":"","sources":["../../src/discord/receiver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAoD;AACpD,2CAA6B;AAE7B,sCAAyC;AACzC,oDAAsE;AAEtE,MAAM,qBAAqB,GAAG,IAAK,CAAC;AACpC,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,yEAAyE;AACzE,uEAAuE;AACvE,yEAAyE;AACzE,oDAAoD;AACpD,MAAM,qBAAqB,GAAG,CAAC,GAAG,KAAM,CAAC;AAEzC,MAAa,eAAe;IAQ1B,YACmB,WAAwB,EACxB,YAAoB,EACpB,MAAc;QAFd,gBAAW,GAAX,WAAW,CAAa;QACxB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,WAAM,GAAN,MAAM,CAAQ;QAVzB,YAAO,GAAwB,IAAI,CAAC;QACpC,aAAQ,GAAG,KAAK,CAAC;QACjB,iBAAY,GAAG,CAAC,CAAC;QACjB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,iBAAY,GAAyC,IAAI,CAAC;QAQhE,IAAI,CAAC,MAAM,GAAG,IAAA,qBAAY,EAAC,GAAG,WAAW,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC1G,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAEzE,IAAI,CAAC,OAAO,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE;YAC1C,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE;gBAC3D,iBAAiB,EAAE,QAAQ;gBAC3B,yEAAyE;gBACzE,uEAAuE;gBACvE,0EAA0E;gBAC1E,sEAAsE;gBACtE,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,IAAI,SAAS;gBAClE,oBAAoB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC7E,uBAAuB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnF,yBAAyB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvF,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;gBACrC,uBAAuB,EAAE,oBAAoB,IAAI,CAAC,YAAY,UAAU;aACzE;YACD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAC5E,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CACpE,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CACnE,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;IAEO,eAAe;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC;QACpD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACxE,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,6EAA6E;QAC7E,2EAA2E;QAC3E,8DAA8D;QAC9D,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,0BAA0B,YAAY,iDAAiD,qBAAqB,uDAAuD,CACpK,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,KAAK,IAAI,EAAE;YAC3D,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,SAAS;SACV,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,OAAO,IAAA,6BAAgB,EAAC,IAAI,CAAC,OAAO,EAAE;YACpC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,uCAAuC,0BAAa,gCAAgC,EACpF,EAAE,GAAG,EAAE,CACR;SACJ,CAAC,CAAC;IACL,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACvD,CAAC;CACF;AA9GD,0CA8GC"}
|
package/dist/entry.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":""}
|
package/dist/entry.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
/**
|
|
38
|
+
* Executable entry point.
|
|
39
|
+
*
|
|
40
|
+
* Deliberately tiny. `src/index.ts` pulls the whole server graph in at module
|
|
41
|
+
* scope — router, agent runner, app installer, cron manager, the sqlite-backed
|
|
42
|
+
* history and knowledge stores — because it *is* the server. Dispatching from
|
|
43
|
+
* there meant every CLI invocation paid that cost and inherited its failures:
|
|
44
|
+
* `claude-gateway --help` loaded sqlite and printed Node's experimental-feature
|
|
45
|
+
* warning before the banner, and `doctor`/`debug-bundle`, whose whole purpose is
|
|
46
|
+
* to work when the server does not, could be brought down by a module-load
|
|
47
|
+
* error in it.
|
|
48
|
+
*
|
|
49
|
+
* So the decision is made here, before either side is loaded, and only the side
|
|
50
|
+
* that is actually needed gets imported.
|
|
51
|
+
*
|
|
52
|
+
* `src/index.ts` keeps its own dispatch: service units written before this
|
|
53
|
+
* split run `dist/index.js gateway start`, and those must keep booting.
|
|
54
|
+
*/
|
|
55
|
+
const load_dotenv_1 = require("./load-dotenv");
|
|
56
|
+
// Before anything reads process.env — the server boots from these variables and
|
|
57
|
+
// the CLI resolves the gateway's address from the same $GATEWAY_BIND.
|
|
58
|
+
(0, load_dotenv_1.loadGatewayDotenv)();
|
|
59
|
+
const command_names_1 = require("./cli/command-names");
|
|
60
|
+
const invocation = (0, command_names_1.classifyInvocation)(process.argv.slice(2), process.env, {
|
|
61
|
+
hasTty: process.stdin.isTTY === true,
|
|
62
|
+
});
|
|
63
|
+
if (invocation === 'boot' || invocation === 'legacy-boot') {
|
|
64
|
+
// Importing the server module runs its own dispatch, which re-classifies this
|
|
65
|
+
// same argv and starts main(). Nothing else to do here.
|
|
66
|
+
Promise.resolve().then(() => __importStar(require('./index'))).catch((err) => {
|
|
67
|
+
process.stderr.write(`Failed to start gateway: ${err?.message ?? err}\n`);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
Promise.resolve().then(() => __importStar(require('./cli'))).then(({ runCli }) => runCli(process.argv.slice(2)))
|
|
73
|
+
.then(async (code) => {
|
|
74
|
+
const { exitAfterFlush } = await Promise.resolve().then(() => __importStar(require('./cli/output')));
|
|
75
|
+
await exitAfterFlush(code);
|
|
76
|
+
})
|
|
77
|
+
.catch(async (err) => {
|
|
78
|
+
process.stderr.write(`Error: ${err?.message ?? err}\n`);
|
|
79
|
+
const { exitAfterFlush } = await Promise.resolve().then(() => __importStar(require('./cli/output')));
|
|
80
|
+
await exitAfterFlush(1);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,+CAAkD;AAElD,gFAAgF;AAChF,sEAAsE;AACtE,IAAA,+BAAiB,GAAE,CAAC;AAEpB,uDAAyD;AAEzD,MAAM,UAAU,GAAG,IAAA,kCAAkB,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE;IACxE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI;CACrC,CAAC,CAAC;AAEH,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;IAC1D,8EAA8E;IAC9E,wDAAwD;IACxD,kDAAO,SAAS,IAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,kDAAO,OAAO,IACX,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACnD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,cAAc,GAAC,CAAC;QACxD,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;SACD,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC;QACxD,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,cAAc,GAAC,CAAC;QACxD,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -39,27 +39,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
const path = __importStar(require("path"));
|
|
40
40
|
const fs = __importStar(require("fs"));
|
|
41
41
|
const os = __importStar(require("os"));
|
|
42
|
+
const load_dotenv_1 = require("./load-dotenv");
|
|
42
43
|
// Load ~/.claude-gateway/.env so global installs pick up env vars without
|
|
43
|
-
// needing shell exports or running via npm start.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (!fs.existsSync(envFile))
|
|
47
|
-
return;
|
|
48
|
-
for (const line of fs.readFileSync(envFile, 'utf8').split('\n')) {
|
|
49
|
-
const trimmed = line.trim();
|
|
50
|
-
if (!trimmed || trimmed.startsWith('#'))
|
|
51
|
-
continue;
|
|
52
|
-
const eq = trimmed.indexOf('=');
|
|
53
|
-
if (eq === -1)
|
|
54
|
-
continue;
|
|
55
|
-
const key = trimmed.slice(0, eq).trim();
|
|
56
|
-
const val = trimmed.slice(eq + 1).trim().replace(/^["']|["']$/g, '');
|
|
57
|
-
if (!(key in process.env))
|
|
58
|
-
process.env[key] = val;
|
|
59
|
-
}
|
|
60
|
-
})();
|
|
44
|
+
// needing shell exports or running via npm start. Shared with src/entry.ts,
|
|
45
|
+
// which does the same before dispatching to the CLI.
|
|
46
|
+
(0, load_dotenv_1.loadGatewayDotenv)();
|
|
61
47
|
const loader_1 = require("./config/loader");
|
|
62
48
|
const migrator_1 = require("./config/migrator");
|
|
49
|
+
const bootstrap_1 = require("./config/bootstrap");
|
|
63
50
|
const workspace_loader_1 = require("./agent/workspace-loader");
|
|
64
51
|
const knowledge_1 = require("./agent/knowledge");
|
|
65
52
|
const skills_1 = require("./skills");
|
|
@@ -78,17 +65,16 @@ const context_isolation_1 = require("./agent/context-isolation");
|
|
|
78
65
|
const logger_1 = require("./logger");
|
|
79
66
|
const watcher_1 = require("./config/watcher");
|
|
80
67
|
const registry_1 = require("./apps/registry");
|
|
68
|
+
const orphan_receivers_1 = require("./utils/orphan-receivers");
|
|
69
|
+
const shutdown_signals_1 = require("./shutdown-signals");
|
|
81
70
|
const registry_client_1 = require("./apps/registry-client");
|
|
82
71
|
const installer_1 = require("./apps/installer");
|
|
83
72
|
const agent_manager_1 = require("./apps/agent-manager");
|
|
84
73
|
const socket_server_1 = require("./apps/socket-server");
|
|
85
74
|
const compose_generator_1 = require("./apps/compose-generator");
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
return p;
|
|
91
|
-
}
|
|
75
|
+
const command_names_1 = require("./cli/command-names");
|
|
76
|
+
const manager_2 = require("./cli/manager");
|
|
77
|
+
const paths_1 = require("./utils/paths");
|
|
92
78
|
// ─── Simple argument parsing (no heavy deps) ──────────────────────────────────
|
|
93
79
|
function parseArgs(argv) {
|
|
94
80
|
const result = {};
|
|
@@ -109,10 +95,12 @@ function parseArgs(argv) {
|
|
|
109
95
|
return result;
|
|
110
96
|
}
|
|
111
97
|
const args = parseArgs(process.argv);
|
|
112
|
-
const CONFIG_PATH =
|
|
98
|
+
const CONFIG_PATH = (0, paths_1.expandHome)(args['config'] ??
|
|
113
99
|
process.env.GATEWAY_CONFIG ??
|
|
114
100
|
path.join(os.homedir(), '.claude-gateway', 'config.json'));
|
|
115
101
|
const PORT = parseInt((process.env.PORT ?? '10850'), 10);
|
|
102
|
+
// Pidfile lets the CLI detect a foreground gateway (see src/cli/manager.ts).
|
|
103
|
+
const PIDFILE_PATH = (0, manager_2.defaultPidfilePath)();
|
|
116
104
|
function printStartupTable(results) {
|
|
117
105
|
const COL_ID = Math.max(13, ...results.map((r) => r.id.length)) + 2;
|
|
118
106
|
const COL_STATUS = 12;
|
|
@@ -543,8 +531,15 @@ async function main() {
|
|
|
543
531
|
// Load agent .env files before config interpolation so ${TOKEN} vars resolve
|
|
544
532
|
const gatewayAgentsDir = path.join(path.dirname(CONFIG_PATH), 'agents');
|
|
545
533
|
loadAgentEnvFiles(gatewayAgentsDir);
|
|
546
|
-
// ──
|
|
534
|
+
// ── First run: create config.json with a fresh admin key if none exists ───
|
|
547
535
|
const templatePath = path.join(__dirname, '..', 'config.template.json');
|
|
536
|
+
const bootstrap = (0, bootstrap_1.ensureConfigExists)(CONFIG_PATH, templatePath);
|
|
537
|
+
if (bootstrap.created) {
|
|
538
|
+
// The key itself is never printed — see firstRunNotice().
|
|
539
|
+
for (const line of (0, bootstrap_1.firstRunNotice)(CONFIG_PATH, bootstrap.adminKey ?? ''))
|
|
540
|
+
console.log(line);
|
|
541
|
+
}
|
|
542
|
+
// ── Auto-migrate config (add missing fields from template) ────────────────
|
|
548
543
|
const templateJson = JSON.parse(fs.readFileSync(templatePath, 'utf-8'));
|
|
549
544
|
const templateVersion = templateJson.configVersion ?? '0.0.0';
|
|
550
545
|
try {
|
|
@@ -569,7 +564,7 @@ async function main() {
|
|
|
569
564
|
}
|
|
570
565
|
console.log(`[gateway] Loading config from ${CONFIG_PATH}`);
|
|
571
566
|
const config = (0, loader_1.loadConfig)(CONFIG_PATH);
|
|
572
|
-
config.gateway.logDir =
|
|
567
|
+
config.gateway.logDir = (0, paths_1.expandHome)(config.gateway.logDir);
|
|
573
568
|
// ── Context isolation check ──────────────────────────────────────────────
|
|
574
569
|
const guard = new context_isolation_1.ContextIsolationGuard();
|
|
575
570
|
guard.validate(config.agents);
|
|
@@ -579,9 +574,32 @@ async function main() {
|
|
|
579
574
|
const startupResults = [];
|
|
580
575
|
const sharedSkillsDir = path.join(os.homedir(), '.claude-gateway', 'shared-skills');
|
|
581
576
|
const personalSkillsDir = path.join(os.homedir(), '.claude', 'skills');
|
|
582
|
-
const globalLogger = (0, logger_1.createLogger)('gateway',
|
|
577
|
+
const globalLogger = (0, logger_1.createLogger)('gateway', (0, paths_1.expandHome)(config.gateway.logDir));
|
|
583
578
|
const mcpToolsDir = path.resolve(__dirname, '..', 'mcp', 'tools');
|
|
584
|
-
const logDir =
|
|
579
|
+
const logDir = (0, paths_1.expandHome)(config.gateway.logDir);
|
|
580
|
+
// Signals are wired HERE, not after startup finishes. Boot spawns receivers
|
|
581
|
+
// one agent at a time and can take a while (the orphan sweep alone waits out a
|
|
582
|
+
// grace period), and until a handler exists a SIGHUP during that window kills
|
|
583
|
+
// the gateway by default disposition and orphans every receiver started so
|
|
584
|
+
// far — the same failure this file fixes (issue #405).
|
|
585
|
+
//
|
|
586
|
+
// The full teardown closes over components that do not exist yet, so the
|
|
587
|
+
// handler delegates to it once available and otherwise does the subset that
|
|
588
|
+
// matters this early: stopping the runners, which are what own receivers.
|
|
589
|
+
let fullShutdown = null;
|
|
590
|
+
const bootShutdown = async (signal) => {
|
|
591
|
+
if (fullShutdown)
|
|
592
|
+
return fullShutdown(signal);
|
|
593
|
+
console.log(`[gateway] Received ${signal} during startup, shutting down...`);
|
|
594
|
+
for (const scheduler of schedulers)
|
|
595
|
+
scheduler.stop();
|
|
596
|
+
await Promise.allSettled([...agentRunners.values()].map((runner) => runner.stop()));
|
|
597
|
+
console.log('[gateway] Startup shutdown complete.');
|
|
598
|
+
};
|
|
599
|
+
registeredShutdown = (0, shutdown_signals_1.registerShutdownSignals)({
|
|
600
|
+
run: bootShutdown,
|
|
601
|
+
onBegin: () => { isShuttingDown = true; },
|
|
602
|
+
});
|
|
585
603
|
// Initial sync: copy shared and module skills to ~/.claude/skills/ so the Skill tool sees them
|
|
586
604
|
(0, sync_1.syncSharedSkills)(sharedSkillsDir, personalSkillsDir, globalLogger);
|
|
587
605
|
(0, sync_1.syncModuleSkills)(mcpToolsDir, personalSkillsDir, globalLogger);
|
|
@@ -607,7 +625,7 @@ async function main() {
|
|
|
607
625
|
const cronManager = new manager_1.CronManager({
|
|
608
626
|
storePath: path.join(path.dirname(CONFIG_PATH), 'crons.json'),
|
|
609
627
|
runsDir: path.join(path.dirname(CONFIG_PATH), 'cron-runs'),
|
|
610
|
-
}, agentRunners, agentConfigs, (0, logger_1.createLogger)('cron-manager',
|
|
628
|
+
}, agentRunners, agentConfigs, (0, logger_1.createLogger)('cron-manager', (0, paths_1.expandHome)(config.gateway.logDir)));
|
|
611
629
|
await cronManager.start();
|
|
612
630
|
const ctx = {
|
|
613
631
|
agentRunners,
|
|
@@ -620,9 +638,41 @@ async function main() {
|
|
|
620
638
|
cronManager,
|
|
621
639
|
reflectionVaultsStarted: new Set(),
|
|
622
640
|
};
|
|
641
|
+
// Reclaim receivers a previous gateway generation left behind before spawning
|
|
642
|
+
// this one's. An exit that bypasses shutdown() — SIGKILL, the OOM killer, or a
|
|
643
|
+
// SIGHUP on a pre-#405 build — reparents them to init, where they keep polling
|
|
644
|
+
// their channel forever. Signal handling alone cannot cover SIGKILL/OOM, so
|
|
645
|
+
// this sweep is the only path that recovers from them. See issue #405.
|
|
646
|
+
//
|
|
647
|
+
// Deliberately awaited before any agent starts: an orphan and a fresh receiver
|
|
648
|
+
// polling the same bot token at once would race for every update, so the old
|
|
649
|
+
// one must be gone before the new one exists.
|
|
650
|
+
try {
|
|
651
|
+
const sweep = await (0, orphan_receivers_1.sweepOrphanedReceivers)(mcpToolsDir);
|
|
652
|
+
if (sweep.reclaimed.length > 0) {
|
|
653
|
+
const forced = sweep.forced.length > 0 ? ` (${sweep.forced.length} needed SIGKILL)` : '';
|
|
654
|
+
console.log(`[gateway] Reclaimed ${sweep.reclaimed.length} orphaned receiver process${sweep.reclaimed.length === 1 ? '' : 'es'}${forced}`);
|
|
655
|
+
for (const orphan of sweep.reclaimed) {
|
|
656
|
+
globalLogger.info('Reclaimed orphaned receiver', { pid: orphan.pid, command: orphan.command });
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
// Never fold these into the reclaimed count: they are still alive and still
|
|
660
|
+
// polling their bot tokens, which is exactly what an operator needs to know.
|
|
661
|
+
if (sweep.failed.length > 0) {
|
|
662
|
+
console.warn(`[gateway] Could NOT reclaim ${sweep.failed.length} orphaned receiver process${sweep.failed.length === 1 ? '' : 'es'} — still running: ` +
|
|
663
|
+
sweep.failed.map((f) => `${f.pid} (${f.reason})`).join(', '));
|
|
664
|
+
globalLogger.warn('Orphaned receivers could not be reclaimed', { failed: sweep.failed });
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
catch (err) {
|
|
668
|
+
// A host whose process list cannot be read must still boot — but never
|
|
669
|
+
// silently: an unreadable `ps` means orphans are accumulating unseen.
|
|
670
|
+
console.warn(`[gateway] Failed to sweep orphaned receivers: ${err.message}`);
|
|
671
|
+
globalLogger.warn('Failed to sweep orphaned receivers', { error: err.message });
|
|
672
|
+
}
|
|
623
673
|
for (const agentConfig of config.agents) {
|
|
624
674
|
// Expand ~ in workspace path so all downstream code uses absolute paths
|
|
625
|
-
agentConfig.workspace =
|
|
675
|
+
agentConfig.workspace = (0, paths_1.expandHome)(agentConfig.workspace);
|
|
626
676
|
await startAgent(agentConfig, config, ctx);
|
|
627
677
|
}
|
|
628
678
|
// Print startup summary table
|
|
@@ -687,6 +737,19 @@ async function main() {
|
|
|
687
737
|
const router = new gateway_router_1.GatewayRouter(agentRunners, agentConfigs, undefined, config, cronManager, CONFIG_PATH, appsRegistry, appInstaller, registryClient);
|
|
688
738
|
await router.start(PORT);
|
|
689
739
|
console.log(`[gateway] Listening on port ${PORT}`);
|
|
740
|
+
// Write the pidfile so the CLI can detect a foreground gateway (and SIGTERM it
|
|
741
|
+
// for `gateway stop/restart`). The listening port goes on the second line:
|
|
742
|
+
// $PORT lives in the shell that launched the server, so a CLI run from
|
|
743
|
+
// anywhere else cannot otherwise learn where to reach it. The real bound port
|
|
744
|
+
// is used rather than the requested one, which is 0 when the OS picks.
|
|
745
|
+
// Best-effort — never fail boot over it.
|
|
746
|
+
try {
|
|
747
|
+
fs.mkdirSync(path.dirname(PIDFILE_PATH), { recursive: true });
|
|
748
|
+
fs.writeFileSync(PIDFILE_PATH, `${process.pid}\n${router.listeningPort() ?? PORT}\n`);
|
|
749
|
+
}
|
|
750
|
+
catch (e) {
|
|
751
|
+
globalLogger.warn?.('Could not write pidfile', { path: PIDFILE_PATH, error: e.message });
|
|
752
|
+
}
|
|
690
753
|
// Wire installer callbacks now that the router is available
|
|
691
754
|
installerCallbacks.registerRoutes = (appName, ports) => {
|
|
692
755
|
for (const port of ports) {
|
|
@@ -796,7 +859,7 @@ async function main() {
|
|
|
796
859
|
if (fs.existsSync(agentEnvFile)) {
|
|
797
860
|
loadAgentEnvFile(agentEnvFile);
|
|
798
861
|
}
|
|
799
|
-
newAgentConfig.workspace =
|
|
862
|
+
newAgentConfig.workspace = (0, paths_1.expandHome)(newAgentConfig.workspace);
|
|
800
863
|
await startAgent(newAgentConfig, configWatcher.getConfig(), ctx);
|
|
801
864
|
globalLogger.info('Agent hot-added successfully', { id: newAgentConfig.id });
|
|
802
865
|
});
|
|
@@ -816,7 +879,7 @@ async function main() {
|
|
|
816
879
|
return;
|
|
817
880
|
// Update runner's agentConfig so it has the new bot token
|
|
818
881
|
// Expand ~ so downstream path.join calls produce absolute paths
|
|
819
|
-
freshAgent.workspace =
|
|
882
|
+
freshAgent.workspace = (0, paths_1.expandHome)(freshAgent.workspace);
|
|
820
883
|
const agentRunner = runner;
|
|
821
884
|
agentRunner.updateAgentConfig(freshAgent);
|
|
822
885
|
if (channel === 'telegram') {
|
|
@@ -844,10 +907,7 @@ async function main() {
|
|
|
844
907
|
});
|
|
845
908
|
configWatcher.start();
|
|
846
909
|
// Graceful shutdown — idempotent: safe to call from multiple signal/error sources.
|
|
847
|
-
const
|
|
848
|
-
if (isShuttingDown)
|
|
849
|
-
return;
|
|
850
|
-
isShuttingDown = true;
|
|
910
|
+
const runShutdown = async (signal) => {
|
|
851
911
|
console.log(`[gateway] Received ${signal}, shutting down...`);
|
|
852
912
|
for (const scheduler of schedulers) {
|
|
853
913
|
scheduler.stop();
|
|
@@ -855,16 +915,38 @@ async function main() {
|
|
|
855
915
|
cronManager.stop();
|
|
856
916
|
configWatcher.stop();
|
|
857
917
|
socketServer.stopAll();
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
918
|
+
// Every teardown below must run even if an earlier one throws. Previously a
|
|
919
|
+
// rejection here propagated and the process hung with its children still
|
|
920
|
+
// parented — recoverable. Now that a failed shutdown exits the process, an
|
|
921
|
+
// unguarded throw would *guarantee* the remaining receivers reparent to
|
|
922
|
+
// init: precisely the bug this file is fixing (issue #405).
|
|
923
|
+
const settled = await Promise.allSettled([
|
|
924
|
+
router.stop(),
|
|
925
|
+
// Runners stop concurrently, not serially. Teardown is now awaited, and
|
|
926
|
+
// the Discord receiver always takes ~2s to exit (its receiver-server
|
|
927
|
+
// force-exits on an unconditional timer), so serial stops would multiply
|
|
928
|
+
// that by the agent count and risk a supervisor's stop timeout (docker
|
|
929
|
+
// stop's 10s default, TimeoutStopSec) SIGKILLing the gateway mid-teardown
|
|
930
|
+
// — re-orphaning the very receivers this protects.
|
|
931
|
+
...[...agentRunners.values()].map((runner) => runner.stop()),
|
|
932
|
+
]);
|
|
933
|
+
for (const result of settled) {
|
|
934
|
+
if (result.status === 'rejected') {
|
|
935
|
+
console.error('[gateway] Shutdown step failed:', result.reason);
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
// Remove the pidfile so the CLI does not treat a stale pid as a live gateway.
|
|
939
|
+
try {
|
|
940
|
+
fs.unlinkSync(PIDFILE_PATH);
|
|
941
|
+
}
|
|
942
|
+
catch {
|
|
943
|
+
/* already gone — fine */
|
|
861
944
|
}
|
|
862
945
|
console.log('[gateway] Shutdown complete.');
|
|
863
946
|
};
|
|
864
|
-
//
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
process.on('SIGINT', () => shutdown('SIGINT').then(() => process.exit(0)));
|
|
947
|
+
// Hand the fully-wired teardown to the handlers registered at the top of
|
|
948
|
+
// main(). From here a signal tears down everything; before it, the boot subset.
|
|
949
|
+
fullShutdown = runShutdown;
|
|
868
950
|
}
|
|
869
951
|
async function emergencyShutdown(label, detail) {
|
|
870
952
|
console.error(`[gateway] ${label}:`, detail);
|
|
@@ -892,7 +974,39 @@ process.on('uncaughtException', (err) => {
|
|
|
892
974
|
return;
|
|
893
975
|
emergencyShutdown('uncaughtException', err).finally(() => process.exit(1));
|
|
894
976
|
});
|
|
895
|
-
|
|
896
|
-
|
|
977
|
+
// Starting the gateway is intentionally explicit: only `gateway start` enters
|
|
978
|
+
// the server boot path. Every other invocation (including no args, --help, and
|
|
979
|
+
// typos) runs through the CLI so it cannot accidentally create a live server.
|
|
980
|
+
// The one exception is a supervised no-command launch from a pre-1.8 unit file,
|
|
981
|
+
// which still boots (with a warning) so existing installs don't restart-loop.
|
|
982
|
+
// The CLI runner remains lazy-loaded and is never imported on the server path.
|
|
983
|
+
const invocation = (0, command_names_1.classifyInvocation)(process.argv.slice(2), process.env, {
|
|
984
|
+
hasTty: process.stdin.isTTY === true,
|
|
897
985
|
});
|
|
986
|
+
if (invocation === 'legacy-boot') {
|
|
987
|
+
process.stderr.write('DEPRECATED: starting the gateway with no command. Update this service to run ' +
|
|
988
|
+
'`claude-gateway gateway start` (or reinstall with `claude-gateway service install`); ' +
|
|
989
|
+
'a future release will print help and exit instead of starting.\n');
|
|
990
|
+
}
|
|
991
|
+
if (invocation === 'boot' || invocation === 'legacy-boot') {
|
|
992
|
+
// Before anything can spawn a child: the supervisor markers we were launched
|
|
993
|
+
// with are inherited, and a descendant that still sees them would classify a
|
|
994
|
+
// bare invocation as a service launch and boot a second server.
|
|
995
|
+
(0, command_names_1.claimSupervisorEnv)(process.env);
|
|
996
|
+
main().catch((err) => {
|
|
997
|
+
emergencyShutdown('Fatal error in main()', err).finally(() => process.exit(1));
|
|
998
|
+
});
|
|
999
|
+
}
|
|
1000
|
+
else {
|
|
1001
|
+
Promise.resolve().then(() => __importStar(require('./cli'))).then(({ runCli }) => runCli(process.argv.slice(2)))
|
|
1002
|
+
.then(async (code) => {
|
|
1003
|
+
const { exitAfterFlush } = await Promise.resolve().then(() => __importStar(require('./cli/output')));
|
|
1004
|
+
await exitAfterFlush(code);
|
|
1005
|
+
})
|
|
1006
|
+
.catch(async (err) => {
|
|
1007
|
+
process.stderr.write(`Error: ${err?.message ?? err}\n`);
|
|
1008
|
+
const { exitAfterFlush } = await Promise.resolve().then(() => __importStar(require('./cli/output')));
|
|
1009
|
+
await exitAfterFlush(1);
|
|
1010
|
+
});
|
|
1011
|
+
}
|
|
898
1012
|
//# sourceMappingURL=index.js.map
|