@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.
Files changed (68) hide show
  1. package/dist/assignment.d.ts +2 -2
  2. package/dist/assignment.d.ts.map +1 -1
  3. package/dist/assignment.js +12 -7
  4. package/dist/assignment.js.map +1 -1
  5. package/dist/backend-runtime.d.ts +13 -0
  6. package/dist/backend-runtime.d.ts.map +1 -1
  7. package/dist/backend-runtime.js +20 -0
  8. package/dist/backend-runtime.js.map +1 -1
  9. package/dist/cli-integration-harness.d.ts +93 -0
  10. package/dist/cli-integration-harness.d.ts.map +1 -0
  11. package/dist/cli-integration-harness.js +309 -0
  12. package/dist/cli-integration-harness.js.map +1 -0
  13. package/dist/coordinator.d.ts +2 -0
  14. package/dist/coordinator.d.ts.map +1 -0
  15. package/dist/coordinator.js +153 -0
  16. package/dist/coordinator.js.map +1 -0
  17. package/dist/cursor-mcp-inspect.d.ts +5 -6
  18. package/dist/cursor-mcp-inspect.d.ts.map +1 -1
  19. package/dist/cursor-mcp-inspect.js +18 -19
  20. package/dist/cursor-mcp-inspect.js.map +1 -1
  21. package/dist/daemon-logs.d.ts +7 -0
  22. package/dist/daemon-logs.d.ts.map +1 -1
  23. package/dist/daemon-logs.js +55 -0
  24. package/dist/daemon-logs.js.map +1 -1
  25. package/dist/grant-issue.d.ts +5 -0
  26. package/dist/grant-issue.d.ts.map +1 -1
  27. package/dist/grant-issue.js +70 -19
  28. package/dist/grant-issue.js.map +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/mcp-bridge.js +1 -1
  33. package/dist/mcp-bridge.js.map +1 -1
  34. package/dist/mcp-config.d.ts +5 -3
  35. package/dist/mcp-config.d.ts.map +1 -1
  36. package/dist/mcp-config.js +8 -5
  37. package/dist/mcp-config.js.map +1 -1
  38. package/dist/mcp-launcher.d.ts +5 -5
  39. package/dist/mcp-launcher.d.ts.map +1 -1
  40. package/dist/mcp-launcher.js +11 -11
  41. package/dist/mcp-launcher.js.map +1 -1
  42. package/dist/menubar.d.ts +13 -0
  43. package/dist/menubar.d.ts.map +1 -1
  44. package/dist/menubar.js +32 -1
  45. package/dist/menubar.js.map +1 -1
  46. package/dist/node-runtime.d.ts +14 -2
  47. package/dist/node-runtime.d.ts.map +1 -1
  48. package/dist/node-runtime.js +37 -18
  49. package/dist/node-runtime.js.map +1 -1
  50. package/dist/shutdown-reason.d.ts +105 -0
  51. package/dist/shutdown-reason.d.ts.map +1 -0
  52. package/dist/shutdown-reason.js +247 -0
  53. package/dist/shutdown-reason.js.map +1 -0
  54. package/dist/start.d.ts.map +1 -1
  55. package/dist/start.js +361 -37
  56. package/dist/start.js.map +1 -1
  57. package/dist/status.d.ts.map +1 -1
  58. package/dist/status.js +27 -0
  59. package/dist/status.js.map +1 -1
  60. package/dist/stop.d.ts +14 -1
  61. package/dist/stop.d.ts.map +1 -1
  62. package/dist/stop.js +72 -1
  63. package/dist/stop.js.map +1 -1
  64. package/dist/store.d.ts +9 -0
  65. package/dist/store.d.ts.map +1 -1
  66. package/dist/store.js +41 -0
  67. package/dist/store.js.map +1 -1
  68. 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>;
@@ -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,CA+DR;AAyBD,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAwBlD"}
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
- const lines = [title, '---', buildOpenDashboardMenubarLine(), '---'];
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) {
@@ -1 +1 @@
1
- {"version":3,"file":"menubar.js","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menubar.js","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,24 @@
1
1
  export declare function getNodeMajor(): number;
2
2
  export declare function formatNodeVersionError(): string;
3
- export declare function assertSupportedNodeVersion(): number | null;
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 declare function assertSqliteNative(): number | null;
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,0BAA0B,IAAI,MAAM,GAAG,IAAI,CAO1D;AAED,mGAAmG;AACnG,wBAAgB,kBAAkB,IAAI;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0BlF;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAOlD"}
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"}
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getNodeMajor = getNodeMajor;
4
4
  exports.formatNodeVersionError = formatNodeVersionError;
5
- exports.assertSupportedNodeVersion = assertSupportedNodeVersion;
5
+ exports.isSupportedNodeMajor = isSupportedNodeMajor;
6
6
  exports.verifySqliteNative = verifySqliteNative;
7
- exports.assertSqliteNative = assertSqliteNative;
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 assertSupportedNodeVersion() {
31
- const major = getNodeMajor();
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
- if (detail.includes('NODE_MODULE_VERSION')) {
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 assertSqliteNative() {
68
- const result = verifySqliteNative();
69
- if (result.ok) {
70
- return null;
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
- console.error(result.message);
73
- return 1;
92
+ return null;
74
93
  }
75
94
  //# sourceMappingURL=node-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-runtime.js","sourceRoot":"","sources":["../src/node-runtime.ts"],"names":[],"mappings":";;AAMA,oCAEC;AAED,wDAcC;AAED,gEAOC;AAGD,gDA0BC;AAED,gDAOC;AAvED,mCAAgE;AAEhE,oFAAoF;AACpF,MAAM,qBAAqB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;AAChE,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,sBAAsB;IACpC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,OAAO;QACL,+CAA+C,OAAO,CAAC,OAAO,IAAI;QAClE,+BAA+B,oBAAoB,yBAAyB;QAC5E,EAAE;QACF,WAAW;QACX,iBAAiB,oBAAoB,eAAe,oBAAoB,eAAe;QACvF,wEAAwE;QACxE,qCAAqC;QACrC,oCAAoC;QACpC,EAAE;QACF,sBAAsB,KAAK,yEAAyE;KACrG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAgB,0BAA0B;IACxC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,IAAK,qBAA2C,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mGAAmG;AACnG,SAAgB,kBAAkB;IAChC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;YACnD,KAAK,EAAE,CAAC,IAAA,0BAAkB,GAAE,EAAE,IAAA,yBAAiB,GAAE,CAAC;SACnD,CAAC,CAAC;QACH,iEAAiE;QACjE,OAAO,CAAC,UAAU,CAAC,CAAC;QACpB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE;oBACP,mEAAmE;oBACnE,EAAE;oBACF,qDAAqD;oBACrD,sBAAsB;oBACtB,qCAAqC;oBACrC,EAAE;oBACF,MAAM;iBACP,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB;IAChC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC"}
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AA8BA,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;AAyND,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkN1E;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CA0EjD"}
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"}