@agent-deck/cli 1.10.0 → 1.10.2
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/dist/assignment.d.ts +2 -2
- package/dist/assignment.d.ts.map +1 -1
- package/dist/assignment.js +12 -7
- package/dist/assignment.js.map +1 -1
- package/dist/backend-runtime.d.ts +13 -0
- package/dist/backend-runtime.d.ts.map +1 -1
- package/dist/backend-runtime.js +20 -0
- package/dist/backend-runtime.js.map +1 -1
- package/dist/cli-integration-harness.d.ts +93 -0
- package/dist/cli-integration-harness.d.ts.map +1 -0
- package/dist/cli-integration-harness.js +309 -0
- package/dist/cli-integration-harness.js.map +1 -0
- package/dist/coordinator.d.ts +2 -0
- package/dist/coordinator.d.ts.map +1 -0
- package/dist/coordinator.js +153 -0
- package/dist/coordinator.js.map +1 -0
- package/dist/cursor-mcp-inspect.d.ts +5 -6
- package/dist/cursor-mcp-inspect.d.ts.map +1 -1
- package/dist/cursor-mcp-inspect.js +18 -19
- package/dist/cursor-mcp-inspect.js.map +1 -1
- package/dist/daemon-logs.d.ts +7 -0
- package/dist/daemon-logs.d.ts.map +1 -1
- package/dist/daemon-logs.js +55 -0
- package/dist/daemon-logs.js.map +1 -1
- package/dist/grant-issue.d.ts +5 -0
- package/dist/grant-issue.d.ts.map +1 -1
- package/dist/grant-issue.js +70 -19
- package/dist/grant-issue.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp-bridge.js +1 -1
- package/dist/mcp-bridge.js.map +1 -1
- package/dist/mcp-config.d.ts +5 -3
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +8 -5
- package/dist/mcp-config.js.map +1 -1
- package/dist/mcp-launcher.d.ts +5 -5
- package/dist/mcp-launcher.d.ts.map +1 -1
- package/dist/mcp-launcher.js +11 -11
- package/dist/mcp-launcher.js.map +1 -1
- package/dist/menubar.d.ts +13 -0
- package/dist/menubar.d.ts.map +1 -1
- package/dist/menubar.js +32 -1
- package/dist/menubar.js.map +1 -1
- package/dist/node-runtime.d.ts +14 -2
- package/dist/node-runtime.d.ts.map +1 -1
- package/dist/node-runtime.js +37 -18
- package/dist/node-runtime.js.map +1 -1
- package/dist/shutdown-reason.d.ts +105 -0
- package/dist/shutdown-reason.d.ts.map +1 -0
- package/dist/shutdown-reason.js +247 -0
- package/dist/shutdown-reason.js.map +1 -0
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +361 -37
- package/dist/start.js.map +1 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +27 -0
- package/dist/status.js.map +1 -1
- package/dist/stop.d.ts +14 -1
- package/dist/stop.d.ts.map +1 -1
- package/dist/stop.js +72 -1
- package/dist/stop.js.map +1 -1
- package/dist/store.d.ts +9 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +41 -0
- package/dist/store.js.map +1 -1
- package/package.json +3 -3
package/dist/menubar.d.ts
CHANGED
|
@@ -5,6 +5,19 @@ export declare function formatAge(lastActivityAt: string, now: Date): string;
|
|
|
5
5
|
export declare function resolveDashboardBaseUrl(): string;
|
|
6
6
|
export declare function buildApprovalHref(challenge: PendingAdminChallenge, _dashboardBaseUrl: string): string;
|
|
7
7
|
export declare function buildOpenDashboardMenubarLine(): string;
|
|
8
|
+
/** How the menu bar names itself when it stops the deck. */
|
|
9
|
+
export declare const MENUBAR_STOP_SOURCE = "menubar";
|
|
10
|
+
/**
|
|
11
|
+
* The menu bar's own stop, routed through `agent-deck stop --source` so the
|
|
12
|
+
* SIGTERM it causes is distinguishable in supervisor.log from a bare
|
|
13
|
+
* `kill -TERM` and from an operator's own `agent-deck stop` (NOT-135).
|
|
14
|
+
*
|
|
15
|
+
* The argv is deliberately space-free: SwiftBar splits `paramN=` values on
|
|
16
|
+
* whitespace, so a quoted `--detail "Quit Agent Deck"` would arrive as two
|
|
17
|
+
* arguments and lose the attribution this line exists to carry.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildStopDeckMenubarArgs(): string[];
|
|
20
|
+
export declare function buildStopDeckMenubarLine(): string;
|
|
8
21
|
/** SwiftBar/xbar output. `null` bindings = backend offline (accuracy first: dim, never guess). */
|
|
9
22
|
export declare function renderMenubar(bindings: LiveBinding[] | null, now: Date, pendingApprovals?: PendingAdminChallenge[], dashboardBaseUrl?: string): string;
|
|
10
23
|
export declare function runMenubar(): Promise<number>;
|
package/dist/menubar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menubar.d.ts","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAM7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAW,GAAG,MAAM,CAEjE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAe9D;AAED,wBAAgB,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAkBnE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAMhD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAOrG;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,kGAAkG;AAClG,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,EAC9B,GAAG,EAAE,IAAI,EACT,gBAAgB,GAAE,qBAAqB,EAAO,EAC9C,gBAAgB,SAA4B,GAC3C,MAAM,
|
|
1
|
+
{"version":3,"file":"menubar.d.ts","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAM7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAW,GAAG,MAAM,CAEjE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAe9D;AAED,wBAAgB,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAkBnE;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAMhD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAOrG;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAEnD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAKjD;AAED,kGAAkG;AAClG,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,EAC9B,GAAG,EAAE,IAAI,EACT,gBAAgB,GAAE,qBAAqB,EAAO,EAC9C,gBAAgB,SAA4B,GAC3C,MAAM,CAuER;AAyBD,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAwBlD"}
|
package/dist/menubar.js
CHANGED
|
@@ -3,12 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MENUBAR_STOP_SOURCE = void 0;
|
|
6
7
|
exports.truncateName = truncateName;
|
|
7
8
|
exports.formatTimeUntil = formatTimeUntil;
|
|
8
9
|
exports.formatAge = formatAge;
|
|
9
10
|
exports.resolveDashboardBaseUrl = resolveDashboardBaseUrl;
|
|
10
11
|
exports.buildApprovalHref = buildApprovalHref;
|
|
11
12
|
exports.buildOpenDashboardMenubarLine = buildOpenDashboardMenubarLine;
|
|
13
|
+
exports.buildStopDeckMenubarArgs = buildStopDeckMenubarArgs;
|
|
14
|
+
exports.buildStopDeckMenubarLine = buildStopDeckMenubarLine;
|
|
12
15
|
exports.renderMenubar = renderMenubar;
|
|
13
16
|
exports.runMenubar = runMenubar;
|
|
14
17
|
const node_path_1 = __importDefault(require("node:path"));
|
|
@@ -71,6 +74,26 @@ function buildApprovalHref(challenge, _dashboardBaseUrl) {
|
|
|
71
74
|
function buildOpenDashboardMenubarLine() {
|
|
72
75
|
return 'Open dashboard | bash=agent-deck param1=open terminal=false';
|
|
73
76
|
}
|
|
77
|
+
/** How the menu bar names itself when it stops the deck. */
|
|
78
|
+
exports.MENUBAR_STOP_SOURCE = 'menubar';
|
|
79
|
+
/**
|
|
80
|
+
* The menu bar's own stop, routed through `agent-deck stop --source` so the
|
|
81
|
+
* SIGTERM it causes is distinguishable in supervisor.log from a bare
|
|
82
|
+
* `kill -TERM` and from an operator's own `agent-deck stop` (NOT-135).
|
|
83
|
+
*
|
|
84
|
+
* The argv is deliberately space-free: SwiftBar splits `paramN=` values on
|
|
85
|
+
* whitespace, so a quoted `--detail "Quit Agent Deck"` would arrive as two
|
|
86
|
+
* arguments and lose the attribution this line exists to carry.
|
|
87
|
+
*/
|
|
88
|
+
function buildStopDeckMenubarArgs() {
|
|
89
|
+
return ['stop', '--source', exports.MENUBAR_STOP_SOURCE, '--detail', 'menu-bar-stop-item'];
|
|
90
|
+
}
|
|
91
|
+
function buildStopDeckMenubarLine() {
|
|
92
|
+
const params = buildStopDeckMenubarArgs()
|
|
93
|
+
.map((arg, i) => `param${i + 1}=${arg}`)
|
|
94
|
+
.join(' ');
|
|
95
|
+
return `Stop Agent Deck | bash=agent-deck ${params} terminal=false refresh=true`;
|
|
96
|
+
}
|
|
74
97
|
/** SwiftBar/xbar output. `null` bindings = backend offline (accuracy first: dim, never guess). */
|
|
75
98
|
function renderMenubar(bindings, now, pendingApprovals = [], dashboardBaseUrl = resolveDashboardBaseUrl()) {
|
|
76
99
|
if (bindings === null) {
|
|
@@ -84,7 +107,15 @@ function renderMenubar(bindings, now, pendingApprovals = [], dashboardBaseUrl =
|
|
|
84
107
|
: bindings.length === 0
|
|
85
108
|
? '◆ —'
|
|
86
109
|
: `◆ ${bindings.length}`;
|
|
87
|
-
|
|
110
|
+
// The deck is up (bindings answered), so stopping it is an offer worth making
|
|
111
|
+
// — and it is the one stop path that has to name itself, since SIGTERM won't.
|
|
112
|
+
const lines = [
|
|
113
|
+
title,
|
|
114
|
+
'---',
|
|
115
|
+
buildOpenDashboardMenubarLine(),
|
|
116
|
+
buildStopDeckMenubarLine(),
|
|
117
|
+
'---',
|
|
118
|
+
];
|
|
88
119
|
if (pendingCount > 0) {
|
|
89
120
|
lines.push('Admin approval pending | size=11 color=orange');
|
|
90
121
|
for (const challenge of pendingApprovals) {
|
package/dist/menubar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menubar.js","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"menubar.js","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"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"}
|
package/dist/node-runtime.d.ts
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
export declare function getNodeMajor(): number;
|
|
2
2
|
export declare function formatNodeVersionError(): string;
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function isSupportedNodeMajor(major?: number): boolean;
|
|
4
4
|
/** Load better-sqlite3 from the CLI's backend dependency tree (catches ABI / cache mismatches). */
|
|
5
5
|
export declare function verifySqliteNative(): {
|
|
6
6
|
ok: true;
|
|
7
7
|
} | {
|
|
8
8
|
ok: false;
|
|
9
|
+
reason: string;
|
|
9
10
|
message: string;
|
|
10
11
|
};
|
|
11
|
-
export
|
|
12
|
+
export interface PreflightFailure {
|
|
13
|
+
/** One line, for supervisor.log and `agent-deck status`. */
|
|
14
|
+
reason: string;
|
|
15
|
+
/** The full operator-facing explanation, already formatted for a terminal. */
|
|
16
|
+
message: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Runtime checks that must pass before anything is spawned. Returns the failure
|
|
20
|
+
* rather than printing it: a start that dies here has to end up in supervisor.log
|
|
21
|
+
* and `agent-deck status` too, not only on the terminal that invoked it.
|
|
22
|
+
*/
|
|
23
|
+
export declare function checkStartPreflight(): PreflightFailure | null;
|
|
12
24
|
//# sourceMappingURL=node-runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-runtime.d.ts","sourceRoot":"","sources":["../src/node-runtime.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAc/C;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"node-runtime.d.ts","sourceRoot":"","sources":["../src/node-runtime.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAc/C;AAED,wBAAgB,oBAAoB,CAAC,KAAK,SAAiB,GAAG,OAAO,CAEpE;AAED,mGAAmG;AACnG,wBAAgB,kBAAkB,IAAI;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqClG;AAMD,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,IAAI,CAe7D"}
|
package/dist/node-runtime.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getNodeMajor = getNodeMajor;
|
|
4
4
|
exports.formatNodeVersionError = formatNodeVersionError;
|
|
5
|
-
exports.
|
|
5
|
+
exports.isSupportedNodeMajor = isSupportedNodeMajor;
|
|
6
6
|
exports.verifySqliteNative = verifySqliteNative;
|
|
7
|
-
exports.
|
|
7
|
+
exports.checkStartPreflight = checkStartPreflight;
|
|
8
8
|
const paths_1 = require("./paths");
|
|
9
9
|
/** Node majors we test against. 24 is the default target; 20+ remains supported. */
|
|
10
10
|
const SUPPORTED_NODE_MAJORS = [20, 22, 23, 24, 25, 26];
|
|
@@ -27,13 +27,8 @@ function formatNodeVersionError() {
|
|
|
27
27
|
`Unsupported major: ${major}. Native SQLite bindings (better-sqlite3) must match your Node version.`,
|
|
28
28
|
].join('\n');
|
|
29
29
|
}
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
if (SUPPORTED_NODE_MAJORS.includes(major)) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
console.error(formatNodeVersionError());
|
|
36
|
-
return 1;
|
|
30
|
+
function isSupportedNodeMajor(major = getNodeMajor()) {
|
|
31
|
+
return SUPPORTED_NODE_MAJORS.includes(major);
|
|
37
32
|
}
|
|
38
33
|
/** Load better-sqlite3 from the CLI's backend dependency tree (catches ABI / cache mismatches). */
|
|
39
34
|
function verifySqliteNative() {
|
|
@@ -42,14 +37,24 @@ function verifySqliteNative() {
|
|
|
42
37
|
paths: [(0, paths_1.resolveBackendRoot)(), (0, paths_1.getCliPackageRoot)()],
|
|
43
38
|
});
|
|
44
39
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
45
|
-
require(sqlitePath);
|
|
40
|
+
const Database = require(sqlitePath);
|
|
41
|
+
// `require` alone proves nothing: better-sqlite3 dlopens its .node binding
|
|
42
|
+
// lazily, on first Database construction. Without this probe an ABI
|
|
43
|
+
// mismatch passes preflight and only surfaces as the backend exiting 1.
|
|
44
|
+
const probe = new Database(':memory:');
|
|
45
|
+
probe.close();
|
|
46
46
|
return { ok: true };
|
|
47
47
|
}
|
|
48
48
|
catch (error) {
|
|
49
49
|
const detail = error instanceof Error ? error.message : String(error);
|
|
50
|
-
|
|
50
|
+
// Node reports a failed dlopen as `code`, not in the message, and an
|
|
51
|
+
// arch mismatch ("incompatible architecture") never says NODE_MODULE_VERSION.
|
|
52
|
+
const code = error?.code ?? '';
|
|
53
|
+
if (detail.includes('NODE_MODULE_VERSION') || code === 'ERR_DLOPEN_FAILED') {
|
|
51
54
|
return {
|
|
52
55
|
ok: false,
|
|
56
|
+
reason: `better-sqlite3 native module does not match node ${process.version} ` +
|
|
57
|
+
`(NODE_MODULE_VERSION ${process.versions.modules}): ${firstLine(detail)}`,
|
|
53
58
|
message: [
|
|
54
59
|
'better-sqlite3 native module does not match this Node.js version.',
|
|
55
60
|
'',
|
|
@@ -61,15 +66,29 @@ function verifySqliteNative() {
|
|
|
61
66
|
].join('\n'),
|
|
62
67
|
};
|
|
63
68
|
}
|
|
64
|
-
return { ok: false, message: detail };
|
|
69
|
+
return { ok: false, reason: `better-sqlite3 could not be loaded: ${firstLine(detail)}`, message: detail };
|
|
65
70
|
}
|
|
66
71
|
}
|
|
67
|
-
function
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
function firstLine(text) {
|
|
73
|
+
return text.split('\n')[0].trim();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Runtime checks that must pass before anything is spawned. Returns the failure
|
|
77
|
+
* rather than printing it: a start that dies here has to end up in supervisor.log
|
|
78
|
+
* and `agent-deck status` too, not only on the terminal that invoked it.
|
|
79
|
+
*/
|
|
80
|
+
function checkStartPreflight() {
|
|
81
|
+
const major = getNodeMajor();
|
|
82
|
+
if (!isSupportedNodeMajor(major)) {
|
|
83
|
+
return {
|
|
84
|
+
reason: `unsupported Node.js major ${major} (${process.version})`,
|
|
85
|
+
message: formatNodeVersionError(),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const sqlite = verifySqliteNative();
|
|
89
|
+
if (!sqlite.ok) {
|
|
90
|
+
return { reason: sqlite.reason, message: sqlite.message };
|
|
71
91
|
}
|
|
72
|
-
|
|
73
|
-
return 1;
|
|
92
|
+
return null;
|
|
74
93
|
}
|
|
75
94
|
//# sourceMappingURL=node-runtime.js.map
|
package/dist/node-runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-runtime.js","sourceRoot":"","sources":["../src/node-runtime.ts"],"names":[],"mappings":";;AAMA,oCAEC;AAED,wDAcC;AAED,
|
|
1
|
+
{"version":3,"file":"node-runtime.js","sourceRoot":"","sources":["../src/node-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A SIGTERM carries no sender, so `agent-deck stop`, the menubar, an API call
|
|
3
|
+
* and `kill -TERM` all land in the same supervisor handler. The requester drops
|
|
4
|
+
* a short-lived note here first; the supervisor consumes it while shutting down
|
|
5
|
+
* so the log line can name the origin instead of only the exit code.
|
|
6
|
+
*/
|
|
7
|
+
export interface StopRequest {
|
|
8
|
+
/** Who asked for the stop — `agent-deck stop`, `menubar`, `api`, ... */
|
|
9
|
+
source: string;
|
|
10
|
+
/** Free-form context: `--force restart`, dashboard user, calling script. */
|
|
11
|
+
detail?: string;
|
|
12
|
+
requestedAt: string;
|
|
13
|
+
requesterPid: number;
|
|
14
|
+
/** Supervisor pid this request targets; 0 means "whichever instance is up". */
|
|
15
|
+
targetPid: number;
|
|
16
|
+
}
|
|
17
|
+
export interface LastStopRecord {
|
|
18
|
+
at: string;
|
|
19
|
+
exitCode: number;
|
|
20
|
+
reason: string;
|
|
21
|
+
supervisorPid: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A start that never reached the supervisor loop answers a different question
|
|
25
|
+
* ("why won't it start?") and lives in its own file, so it cannot overwrite the
|
|
26
|
+
* answer to "why did the deck stop?".
|
|
27
|
+
*/
|
|
28
|
+
export interface LastStartFailureRecord {
|
|
29
|
+
at: string;
|
|
30
|
+
exitCode: number;
|
|
31
|
+
reason: string;
|
|
32
|
+
pid: number;
|
|
33
|
+
}
|
|
34
|
+
/** A stop note older than this is stale — a previous run left it behind. */
|
|
35
|
+
export declare const STOP_REQUEST_MAX_AGE_MS = 60000;
|
|
36
|
+
export declare function stopRequestPath(): string;
|
|
37
|
+
export declare function lastStopPath(): string;
|
|
38
|
+
export declare function lastStartFailurePath(): string;
|
|
39
|
+
export declare function recordStopRequest(input: {
|
|
40
|
+
source: string;
|
|
41
|
+
detail?: string;
|
|
42
|
+
targetPid?: number;
|
|
43
|
+
now?: Date;
|
|
44
|
+
requesterPid?: number;
|
|
45
|
+
}): StopRequest;
|
|
46
|
+
export declare function readStopRequest(): StopRequest | null;
|
|
47
|
+
export declare function clearStopRequest(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Take the pending stop note if it is fresh and aimed at this supervisor.
|
|
50
|
+
* Always removes the file so a stale note cannot mislabel a later shutdown.
|
|
51
|
+
*/
|
|
52
|
+
export declare function consumeStopRequest(options: {
|
|
53
|
+
supervisorPid: number;
|
|
54
|
+
now?: Date;
|
|
55
|
+
maxAgeMs?: number;
|
|
56
|
+
}): StopRequest | null;
|
|
57
|
+
export declare function describeStopRequest(request: StopRequest): string;
|
|
58
|
+
/**
|
|
59
|
+
* Combine what the supervisor observed (a signal, a child exit, a failed
|
|
60
|
+
* start) with the requester note, when there is one.
|
|
61
|
+
*/
|
|
62
|
+
export declare function composeShutdownReason(origin: string, request: StopRequest | null): string;
|
|
63
|
+
/**
|
|
64
|
+
* A supervisor that throws is a stop too, and the least explained one: Node's
|
|
65
|
+
* default handler prints a trace and exits without any of our bookkeeping. Split
|
|
66
|
+
* into a one-line reason (the log line, `status`) and the frames (the log body).
|
|
67
|
+
*/
|
|
68
|
+
export declare function describeCrash(error: unknown): {
|
|
69
|
+
reason: string;
|
|
70
|
+
detail: string[];
|
|
71
|
+
};
|
|
72
|
+
/** Origin string for a signal with no matching stop note. */
|
|
73
|
+
export declare function describeSignalOrigin(signal: 'SIGINT' | 'SIGTERM' | 'SIGHUP'): string;
|
|
74
|
+
export declare function formatSupervisorShutdownLine(exitCode: number, reason: string): string;
|
|
75
|
+
/**
|
|
76
|
+
* A `start` that never supervised anything — it found a deck already running,
|
|
77
|
+
* or died before spawning one — is not the deck stopping, and must not claim a
|
|
78
|
+
* `supervisor shutting down` line that an operator reads as exactly that.
|
|
79
|
+
*/
|
|
80
|
+
export declare function formatCommandExitLine(exitCode: number, reason: string): string;
|
|
81
|
+
export declare function formatStartFailureLine(reason: string): string;
|
|
82
|
+
/**
|
|
83
|
+
* A start that dies before the supervisor loop still has to leave a trail. The
|
|
84
|
+
* operator's next move is supervisor.log or `agent-deck status`, and neither can
|
|
85
|
+
* show a message that only ever reached the invoking terminal.
|
|
86
|
+
*/
|
|
87
|
+
export declare function recordStartFailure(input: {
|
|
88
|
+
reason: string;
|
|
89
|
+
/** Extra operator-facing lines, copied into supervisor.log under the reason. */
|
|
90
|
+
detail?: string[];
|
|
91
|
+
exitCode?: number;
|
|
92
|
+
/** Something closer to the failure already wrote a record — do not clobber it. */
|
|
93
|
+
keepExistingRecord?: boolean;
|
|
94
|
+
pid?: number;
|
|
95
|
+
now?: Date;
|
|
96
|
+
}): number;
|
|
97
|
+
export declare function writeLastStop(record: LastStopRecord): void;
|
|
98
|
+
export declare function readLastStop(): LastStopRecord | null;
|
|
99
|
+
export declare function readLastStartFailure(): LastStartFailureRecord | null;
|
|
100
|
+
/** A start that got the deck running answers the previous failure — drop it. */
|
|
101
|
+
export declare function clearLastStartFailure(): void;
|
|
102
|
+
export declare function formatLastStopLines(record: LastStopRecord | null): string[];
|
|
103
|
+
/** Printed under the last stop, so "won't start" and "stopped" stay distinct. */
|
|
104
|
+
export declare function formatLastStartFailureLines(record: LastStartFailureRecord | null): string[];
|
|
105
|
+
//# sourceMappingURL=shutdown-reason.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown-reason.d.ts","sourceRoot":"","sources":["../src/shutdown-reason.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.STOP_REQUEST_MAX_AGE_MS = void 0;
|
|
7
|
+
exports.stopRequestPath = stopRequestPath;
|
|
8
|
+
exports.lastStopPath = lastStopPath;
|
|
9
|
+
exports.lastStartFailurePath = lastStartFailurePath;
|
|
10
|
+
exports.recordStopRequest = recordStopRequest;
|
|
11
|
+
exports.readStopRequest = readStopRequest;
|
|
12
|
+
exports.clearStopRequest = clearStopRequest;
|
|
13
|
+
exports.consumeStopRequest = consumeStopRequest;
|
|
14
|
+
exports.describeStopRequest = describeStopRequest;
|
|
15
|
+
exports.composeShutdownReason = composeShutdownReason;
|
|
16
|
+
exports.describeCrash = describeCrash;
|
|
17
|
+
exports.describeSignalOrigin = describeSignalOrigin;
|
|
18
|
+
exports.formatSupervisorShutdownLine = formatSupervisorShutdownLine;
|
|
19
|
+
exports.formatCommandExitLine = formatCommandExitLine;
|
|
20
|
+
exports.formatStartFailureLine = formatStartFailureLine;
|
|
21
|
+
exports.recordStartFailure = recordStartFailure;
|
|
22
|
+
exports.writeLastStop = writeLastStop;
|
|
23
|
+
exports.readLastStop = readLastStop;
|
|
24
|
+
exports.readLastStartFailure = readLastStartFailure;
|
|
25
|
+
exports.clearLastStartFailure = clearLastStartFailure;
|
|
26
|
+
exports.formatLastStopLines = formatLastStopLines;
|
|
27
|
+
exports.formatLastStartFailureLines = formatLastStartFailureLines;
|
|
28
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
29
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
30
|
+
const node_util_1 = require("node:util");
|
|
31
|
+
const shared_1 = require("@agent-deck/shared");
|
|
32
|
+
const daemon_logs_1 = require("./daemon-logs");
|
|
33
|
+
/** A stop note older than this is stale — a previous run left it behind. */
|
|
34
|
+
exports.STOP_REQUEST_MAX_AGE_MS = 60_000;
|
|
35
|
+
function stopRequestPath() {
|
|
36
|
+
return node_path_1.default.join((0, shared_1.resolveAgentDeckHome)(), 'stop-request.json');
|
|
37
|
+
}
|
|
38
|
+
function lastStopPath() {
|
|
39
|
+
return node_path_1.default.join((0, shared_1.resolveAgentDeckHome)(), 'last-stop.json');
|
|
40
|
+
}
|
|
41
|
+
function lastStartFailurePath() {
|
|
42
|
+
return node_path_1.default.join((0, shared_1.resolveAgentDeckHome)(), 'last-start-failure.json');
|
|
43
|
+
}
|
|
44
|
+
function recordStopRequest(input) {
|
|
45
|
+
const request = {
|
|
46
|
+
source: input.source,
|
|
47
|
+
...(input.detail ? { detail: input.detail } : {}),
|
|
48
|
+
requestedAt: (input.now ?? new Date()).toISOString(),
|
|
49
|
+
requesterPid: input.requesterPid ?? process.pid,
|
|
50
|
+
targetPid: input.targetPid ?? 0,
|
|
51
|
+
};
|
|
52
|
+
const target = stopRequestPath();
|
|
53
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(target), { recursive: true });
|
|
54
|
+
node_fs_1.default.writeFileSync(target, `${JSON.stringify(request, null, 2)}\n`, 'utf8');
|
|
55
|
+
return request;
|
|
56
|
+
}
|
|
57
|
+
function readStopRequest() {
|
|
58
|
+
try {
|
|
59
|
+
const parsed = JSON.parse(node_fs_1.default.readFileSync(stopRequestPath(), 'utf8'));
|
|
60
|
+
if (typeof parsed?.source !== 'string' || typeof parsed?.requestedAt !== 'string') {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return parsed;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function clearStopRequest() {
|
|
70
|
+
try {
|
|
71
|
+
node_fs_1.default.unlinkSync(stopRequestPath());
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// ignore
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Take the pending stop note if it is fresh and aimed at this supervisor.
|
|
79
|
+
* Always removes the file so a stale note cannot mislabel a later shutdown.
|
|
80
|
+
*/
|
|
81
|
+
function consumeStopRequest(options) {
|
|
82
|
+
const request = readStopRequest();
|
|
83
|
+
if (!request) {
|
|
84
|
+
clearStopRequest();
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const requestedAt = new Date(request.requestedAt).getTime();
|
|
88
|
+
const age = (options.now ?? new Date()).getTime() - requestedAt;
|
|
89
|
+
const stale = Number.isNaN(requestedAt) || age < 0 || age > (options.maxAgeMs ?? exports.STOP_REQUEST_MAX_AGE_MS);
|
|
90
|
+
const forThisSupervisor = request.targetPid === 0 || request.targetPid === options.supervisorPid;
|
|
91
|
+
// Someone else's note is left where its target can still find it: eating it
|
|
92
|
+
// would cost that supervisor its attribution *and* convince `agent-deck stop`
|
|
93
|
+
// that the origin was recorded when nobody recorded it.
|
|
94
|
+
if (forThisSupervisor || stale) {
|
|
95
|
+
clearStopRequest();
|
|
96
|
+
}
|
|
97
|
+
return forThisSupervisor && !stale ? request : null;
|
|
98
|
+
}
|
|
99
|
+
function describeStopRequest(request) {
|
|
100
|
+
const parts = [request.source];
|
|
101
|
+
if (request.detail) {
|
|
102
|
+
parts.push(request.detail);
|
|
103
|
+
}
|
|
104
|
+
return `${parts.join(' — ')} (pid ${request.requesterPid})`;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Combine what the supervisor observed (a signal, a child exit, a failed
|
|
108
|
+
* start) with the requester note, when there is one.
|
|
109
|
+
*/
|
|
110
|
+
function composeShutdownReason(origin, request) {
|
|
111
|
+
return request ? `${origin}; requested by ${describeStopRequest(request)}` : origin;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A supervisor that throws is a stop too, and the least explained one: Node's
|
|
115
|
+
* default handler prints a trace and exits without any of our bookkeeping. Split
|
|
116
|
+
* into a one-line reason (the log line, `status`) and the frames (the log body).
|
|
117
|
+
*/
|
|
118
|
+
function describeCrash(error) {
|
|
119
|
+
if (error instanceof Error) {
|
|
120
|
+
const code = error.code;
|
|
121
|
+
return {
|
|
122
|
+
reason: code ? `${error.name} [${code}]: ${error.message}` : `${error.name}: ${error.message}`,
|
|
123
|
+
// error.stack repeats the message on its first line; keep only the frames.
|
|
124
|
+
detail: (error.stack?.split('\n').slice(1) ?? []).map((line) => line.trim()).filter(Boolean),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// `String({})` is "[object Object]" — a rejected plain object is exactly the
|
|
128
|
+
// throw an operator has no other way to identify.
|
|
129
|
+
return { reason: typeof error === 'string' ? error : (0, node_util_1.inspect)(error, { depth: 2 }), detail: [] };
|
|
130
|
+
}
|
|
131
|
+
/** Origin string for a signal with no matching stop note. */
|
|
132
|
+
function describeSignalOrigin(signal) {
|
|
133
|
+
switch (signal) {
|
|
134
|
+
case 'SIGINT':
|
|
135
|
+
return 'signal SIGINT (Ctrl-C or terminal interrupt)';
|
|
136
|
+
case 'SIGHUP':
|
|
137
|
+
return 'signal SIGHUP (terminal closed)';
|
|
138
|
+
default:
|
|
139
|
+
return 'signal SIGTERM';
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function formatSupervisorShutdownLine(exitCode, reason) {
|
|
143
|
+
return `[agent-deck] supervisor shutting down (exit ${exitCode}, reason: ${reason})`;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* A `start` that never supervised anything — it found a deck already running,
|
|
147
|
+
* or died before spawning one — is not the deck stopping, and must not claim a
|
|
148
|
+
* `supervisor shutting down` line that an operator reads as exactly that.
|
|
149
|
+
*/
|
|
150
|
+
function formatCommandExitLine(exitCode, reason) {
|
|
151
|
+
return `[agent-deck] agent-deck start exiting (exit ${exitCode}, reason: ${reason})`;
|
|
152
|
+
}
|
|
153
|
+
function formatStartFailureLine(reason) {
|
|
154
|
+
return `[agent-deck] start failed: ${reason}`;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* A start that dies before the supervisor loop still has to leave a trail. The
|
|
158
|
+
* operator's next move is supervisor.log or `agent-deck status`, and neither can
|
|
159
|
+
* show a message that only ever reached the invoking terminal.
|
|
160
|
+
*/
|
|
161
|
+
function recordStartFailure(input) {
|
|
162
|
+
const exitCode = input.exitCode ?? 1;
|
|
163
|
+
const at = (input.now ?? new Date()).toISOString();
|
|
164
|
+
try {
|
|
165
|
+
(0, daemon_logs_1.appendDaemonLogLine)('supervisor', `${at} ${formatStartFailureLine(input.reason)}`);
|
|
166
|
+
for (const line of input.detail ?? []) {
|
|
167
|
+
(0, daemon_logs_1.appendDaemonLogLine)('supervisor', `${at} [agent-deck] start failed| ${line}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// A start already failing must not fail again on its own diagnostic.
|
|
172
|
+
}
|
|
173
|
+
if (!input.keepExistingRecord) {
|
|
174
|
+
writeJsonRecord(lastStartFailurePath(), {
|
|
175
|
+
at,
|
|
176
|
+
exitCode,
|
|
177
|
+
reason: input.reason,
|
|
178
|
+
pid: input.pid ?? process.pid,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
return exitCode;
|
|
182
|
+
}
|
|
183
|
+
function writeJsonRecord(target, record) {
|
|
184
|
+
try {
|
|
185
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(target), { recursive: true });
|
|
186
|
+
node_fs_1.default.writeFileSync(target, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
// Never block a shutdown (or a failing start) on a bookkeeping write.
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
function readJsonRecord(source) {
|
|
193
|
+
try {
|
|
194
|
+
const parsed = JSON.parse(node_fs_1.default.readFileSync(source, 'utf8'));
|
|
195
|
+
if (typeof parsed?.at !== 'string' || typeof parsed?.reason !== 'string') {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
return parsed;
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function writeLastStop(record) {
|
|
205
|
+
writeJsonRecord(lastStopPath(), record);
|
|
206
|
+
}
|
|
207
|
+
function readLastStop() {
|
|
208
|
+
return readJsonRecord(lastStopPath());
|
|
209
|
+
}
|
|
210
|
+
function readLastStartFailure() {
|
|
211
|
+
return readJsonRecord(lastStartFailurePath());
|
|
212
|
+
}
|
|
213
|
+
/** A start that got the deck running answers the previous failure — drop it. */
|
|
214
|
+
function clearLastStartFailure() {
|
|
215
|
+
try {
|
|
216
|
+
node_fs_1.default.unlinkSync(lastStartFailurePath());
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
// Nothing to clear.
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
function formatLastStopLines(record) {
|
|
223
|
+
if (!record) {
|
|
224
|
+
return [
|
|
225
|
+
'Last stop: (no record — an instance stopped before this build, or was killed with SIGKILL)',
|
|
226
|
+
];
|
|
227
|
+
}
|
|
228
|
+
return [
|
|
229
|
+
'Last stop:',
|
|
230
|
+
` at ${record.at}`,
|
|
231
|
+
` exit ${record.exitCode}`,
|
|
232
|
+
` reason ${record.reason}`,
|
|
233
|
+
];
|
|
234
|
+
}
|
|
235
|
+
/** Printed under the last stop, so "won't start" and "stopped" stay distinct. */
|
|
236
|
+
function formatLastStartFailureLines(record) {
|
|
237
|
+
if (!record) {
|
|
238
|
+
return [];
|
|
239
|
+
}
|
|
240
|
+
return [
|
|
241
|
+
'Last failed start:',
|
|
242
|
+
` at ${record.at}`,
|
|
243
|
+
` exit ${record.exitCode}`,
|
|
244
|
+
` reason ${record.reason}`,
|
|
245
|
+
];
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=shutdown-reason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown-reason.js","sourceRoot":"","sources":["../src/shutdown-reason.ts"],"names":[],"mappings":"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"}
|
package/dist/start.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAgDA,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,SAAwB,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/E;AAqfD,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmQ1E;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAyFjD"}
|