@neotx/cli 0.1.0-alpha.24 → 0.1.0-alpha.25
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/child-5X5IHAKS.js +92 -0
- package/dist/child-5X5IHAKS.js.map +1 -0
- package/dist/child-mode-IB3XSUHD.js +8 -0
- package/dist/child-mode-IB3XSUHD.js.map +1 -0
- package/dist/chunk-4TQ3Q6IE.js +43 -0
- package/dist/chunk-4TQ3Q6IE.js.map +1 -0
- package/dist/chunk-6PSXZ3UV.js +46 -0
- package/dist/chunk-6PSXZ3UV.js.map +1 -0
- package/dist/chunk-V5SN5F73.js +54 -0
- package/dist/chunk-V5SN5F73.js.map +1 -0
- package/dist/daemon/child-supervisor-worker.js +136 -0
- package/dist/daemon/child-supervisor-worker.js.map +1 -0
- package/dist/daemon/supervisor-worker.js +9 -1
- package/dist/daemon/supervisor-worker.js.map +1 -1
- package/dist/daemon/worker.js +16 -3
- package/dist/daemon/worker.js.map +1 -1
- package/dist/directive-7WM2Q2UW.js +259 -0
- package/dist/directive-7WM2Q2UW.js.map +1 -0
- package/dist/do-F5XW2ELZ.js +83 -0
- package/dist/do-F5XW2ELZ.js.map +1 -0
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/{log-PTHLI7ZN.js → log-ZLIAIBZQ.js} +64 -9
- package/dist/log-ZLIAIBZQ.js.map +1 -0
- package/dist/{memory-SDZ57W2S.js → memory-CW6E65SQ.js} +112 -62
- package/dist/memory-CW6E65SQ.js.map +1 -0
- package/dist/{run-MWHIQUSY.js → run-NV762V5B.js} +56 -22
- package/dist/run-NV762V5B.js.map +1 -0
- package/dist/{supervise-XMZRNODO.js → supervise-BWIKWNHH.js} +68 -41
- package/dist/supervise-BWIKWNHH.js.map +1 -0
- package/dist/{supervisor-3RUX5SPH.js → supervisor-N4D5EWCC.js} +1 -1
- package/dist/tui-LSW7VVK6.js +1319 -0
- package/dist/tui-LSW7VVK6.js.map +1 -0
- package/package.json +4 -4
- package/dist/log-PTHLI7ZN.js.map +0 -1
- package/dist/memory-SDZ57W2S.js.map +0 -1
- package/dist/run-MWHIQUSY.js.map +0 -1
- package/dist/supervise-XMZRNODO.js.map +0 -1
- package/dist/tui-67VJ5VBA.js +0 -842
- package/dist/tui-67VJ5VBA.js.map +0 -1
- /package/dist/{supervisor-3RUX5SPH.js.map → supervisor-N4D5EWCC.js.map} +0 -0
|
@@ -1,43 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isDaemonRunning,
|
|
3
|
+
startDaemonDetached
|
|
4
|
+
} from "./chunk-V5SN5F73.js";
|
|
5
|
+
import "./chunk-6PSXZ3UV.js";
|
|
1
6
|
import {
|
|
2
7
|
printError,
|
|
3
8
|
printSuccess
|
|
4
9
|
} from "./chunk-YQIWMDXL.js";
|
|
5
10
|
|
|
6
11
|
// src/commands/supervise.ts
|
|
7
|
-
import { spawn } from "child_process";
|
|
8
12
|
import { randomUUID } from "crypto";
|
|
9
|
-
import {
|
|
10
|
-
import { appendFile,
|
|
11
|
-
import path from "path";
|
|
12
|
-
import { fileURLToPath } from "url";
|
|
13
|
+
import { existsSync } from "fs";
|
|
14
|
+
import { appendFile, rm } from "fs/promises";
|
|
13
15
|
import {
|
|
14
16
|
getSupervisorActivityPath,
|
|
15
17
|
getSupervisorDir,
|
|
16
18
|
getSupervisorInboxPath,
|
|
17
19
|
getSupervisorLockPath,
|
|
18
|
-
getSupervisorStatePath,
|
|
19
20
|
isProcessAlive,
|
|
20
|
-
loadGlobalConfig
|
|
21
|
-
supervisorDaemonStateSchema
|
|
21
|
+
loadGlobalConfig
|
|
22
22
|
} from "@neotx/core";
|
|
23
23
|
import { defineCommand } from "citty";
|
|
24
24
|
var DEFAULT_NAME = "supervisor";
|
|
25
|
-
async function readState(name) {
|
|
26
|
-
const statePath = getSupervisorStatePath(name);
|
|
27
|
-
if (!existsSync(statePath)) return null;
|
|
28
|
-
try {
|
|
29
|
-
const raw = await readFile(statePath, "utf-8");
|
|
30
|
-
return supervisorDaemonStateSchema.parse(JSON.parse(raw));
|
|
31
|
-
} catch {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
async function isDaemonRunning(name) {
|
|
36
|
-
const state = await readState(name);
|
|
37
|
-
if (!state || state.status === "stopped") return null;
|
|
38
|
-
if (!isProcessAlive(state.pid)) return null;
|
|
39
|
-
return state;
|
|
40
|
-
}
|
|
41
25
|
async function handleStatus(name) {
|
|
42
26
|
const state = await isDaemonRunning(name);
|
|
43
27
|
if (!state) {
|
|
@@ -112,22 +96,14 @@ async function startDaemon(name) {
|
|
|
112
96
|
if (existsSync(lockPath)) {
|
|
113
97
|
await rm(lockPath, { force: true });
|
|
114
98
|
}
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const child = spawn(process.execPath, [workerPath, name], {
|
|
122
|
-
detached: true,
|
|
123
|
-
stdio: ["ignore", logFd, logFd],
|
|
124
|
-
cwd: packageRoot,
|
|
125
|
-
env: process.env
|
|
126
|
-
});
|
|
127
|
-
child.unref();
|
|
128
|
-
closeSync(logFd);
|
|
99
|
+
const result = await startDaemonDetached(name);
|
|
100
|
+
if (result.error) {
|
|
101
|
+
printError(`Failed to start supervisor daemon: ${result.error}`);
|
|
102
|
+
process.exitCode = 1;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
129
105
|
const config = await loadGlobalConfig();
|
|
130
|
-
printSuccess(`Supervisor "${name}" started (PID ${
|
|
106
|
+
printSuccess(`Supervisor "${name}" started (PID ${result.pid})`);
|
|
131
107
|
console.log(` Port: ${config.supervisor.port}`);
|
|
132
108
|
console.log(` Health: curl localhost:${config.supervisor.port}/health`);
|
|
133
109
|
console.log(` Webhook: curl -X POST localhost:${config.supervisor.port}/webhook -d '{}'`);
|
|
@@ -144,9 +120,40 @@ async function handleAttach(name) {
|
|
|
144
120
|
process.exitCode = 1;
|
|
145
121
|
return;
|
|
146
122
|
}
|
|
147
|
-
const { renderSupervisorTui } = await import("./tui-
|
|
123
|
+
const { renderSupervisorTui } = await import("./tui-LSW7VVK6.js");
|
|
148
124
|
await renderSupervisorTui(name);
|
|
149
125
|
}
|
|
126
|
+
async function handleChildMode(parentName, objective, criteriaStr, budgetStr) {
|
|
127
|
+
if (!objective) {
|
|
128
|
+
printError("--objective is required when using --parent");
|
|
129
|
+
process.exitCode = 1;
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (!criteriaStr) {
|
|
133
|
+
printError("--criteria is required when using --parent");
|
|
134
|
+
process.exitCode = 1;
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const running = await isDaemonRunning(parentName);
|
|
138
|
+
if (!running) {
|
|
139
|
+
printError(`Parent supervisor "${parentName}" is not running.`);
|
|
140
|
+
printError("Start it first with: neo supervise --detach");
|
|
141
|
+
process.exitCode = 1;
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const criteria = criteriaStr.split(",").map((s) => s.trim()).filter(Boolean);
|
|
145
|
+
const budget = budgetStr ? Number.parseFloat(budgetStr) : void 0;
|
|
146
|
+
const { spawnChildFromCli } = await import("./child-mode-IB3XSUHD.js");
|
|
147
|
+
const options = {
|
|
148
|
+
parentName,
|
|
149
|
+
objective,
|
|
150
|
+
acceptanceCriteria: criteria
|
|
151
|
+
};
|
|
152
|
+
if (budget !== void 0) {
|
|
153
|
+
options.maxCostUsd = budget;
|
|
154
|
+
}
|
|
155
|
+
await spawnChildFromCli(options);
|
|
156
|
+
}
|
|
150
157
|
async function handleMessage(name, text) {
|
|
151
158
|
const running = await isDaemonRunning(name);
|
|
152
159
|
if (!running) {
|
|
@@ -199,10 +206,30 @@ var supervise_default = defineCommand({
|
|
|
199
206
|
message: {
|
|
200
207
|
type: "string",
|
|
201
208
|
description: "Send a message to the supervisor inbox"
|
|
209
|
+
},
|
|
210
|
+
parent: {
|
|
211
|
+
type: "string",
|
|
212
|
+
description: "Start as a child of an existing supervisor (registers via IPC)"
|
|
213
|
+
},
|
|
214
|
+
objective: {
|
|
215
|
+
type: "string",
|
|
216
|
+
description: "Objective for child supervisor (required with --parent)"
|
|
217
|
+
},
|
|
218
|
+
criteria: {
|
|
219
|
+
type: "string",
|
|
220
|
+
description: "Comma-separated acceptance criteria (required with --parent)"
|
|
221
|
+
},
|
|
222
|
+
budget: {
|
|
223
|
+
type: "string",
|
|
224
|
+
description: "Max cost in USD for child supervisor"
|
|
202
225
|
}
|
|
203
226
|
},
|
|
204
227
|
async run({ args }) {
|
|
205
228
|
const name = args.name;
|
|
229
|
+
if (args.parent) {
|
|
230
|
+
await handleChildMode(args.parent, args.objective, args.criteria, args.budget);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
206
233
|
if (args.status) {
|
|
207
234
|
await handleStatus(name);
|
|
208
235
|
return;
|
|
@@ -239,4 +266,4 @@ var supervise_default = defineCommand({
|
|
|
239
266
|
export {
|
|
240
267
|
supervise_default as default
|
|
241
268
|
};
|
|
242
|
-
//# sourceMappingURL=supervise-
|
|
269
|
+
//# sourceMappingURL=supervise-BWIKWNHH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/supervise.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { existsSync } from \"node:fs\";\nimport { appendFile, rm } from \"node:fs/promises\";\nimport {\n getSupervisorActivityPath,\n getSupervisorDir,\n getSupervisorInboxPath,\n getSupervisorLockPath,\n isProcessAlive,\n loadGlobalConfig,\n} from \"@neotx/core\";\nimport { defineCommand } from \"citty\";\nimport { isDaemonRunning, startDaemonDetached } from \"../daemon-utils.js\";\nimport { printError, printSuccess } from \"../output.js\";\n\nconst DEFAULT_NAME = \"supervisor\";\n\nasync function handleStatus(name: string): Promise<void> {\n const state = await isDaemonRunning(name);\n if (!state) {\n console.log(`No supervisor daemon running (name: ${name}).`);\n return;\n }\n\n const config = await loadGlobalConfig();\n printSuccess(`Supervisor \"${name}\" running`);\n console.log(` PID: ${state.pid}`);\n console.log(` Port: ${state.port}`);\n console.log(` Session: ${state.sessionId}`);\n console.log(` Started: ${state.startedAt}`);\n console.log(` Timeout: ${config.supervisor.eventTimeoutMs / 1000}s`);\n console.log(` Heartbeats: ${state.heartbeatCount}`);\n if (state.lastHeartbeat) {\n console.log(` Last beat: ${state.lastHeartbeat}`);\n }\n console.log(` Cost today: $${state.todayCostUsd?.toFixed(2) ?? \"0.00\"}`);\n console.log(` Cost total: $${state.totalCostUsd?.toFixed(2) ?? \"0.00\"}`);\n console.log(` Status: ${state.status}`);\n console.log(\"\");\n console.log(` Health: curl localhost:${state.port}/health`);\n console.log(\" TUI: neo supervise\");\n console.log(\" Stop: neo supervise --kill\");\n}\n\nasync function handleKill(name: string): Promise<void> {\n const state = await isDaemonRunning(name);\n if (!state) {\n printError(`No supervisor daemon running (name: ${name}).`);\n\n // Clean up stale lock if exists\n const lockPath = getSupervisorLockPath(name);\n if (existsSync(lockPath)) {\n await rm(lockPath, { force: true });\n }\n process.exitCode = 1;\n return;\n }\n\n // Send SIGTERM for graceful shutdown, then SIGKILL after 10s\n const pid = state.pid;\n try {\n process.kill(pid, \"SIGTERM\");\n printSuccess(`Sent SIGTERM to supervisor \"${name}\" (PID ${pid})`);\n } catch {\n printError(`Failed to send signal to PID ${pid}. Cleaning up.`);\n const lockPath = getSupervisorLockPath(name);\n await rm(lockPath, { force: true });\n return;\n }\n\n // Wait up to 10s for graceful exit, then force kill\n const deadline = Date.now() + 10_000;\n while (Date.now() < deadline) {\n await new Promise((r) => setTimeout(r, 500));\n if (!isProcessAlive(pid)) {\n printSuccess(\"Daemon stopped.\");\n return;\n }\n }\n\n // Force kill\n try {\n process.kill(pid, \"SIGKILL\");\n printSuccess(`Daemon did not exit in time — sent SIGKILL (PID ${pid}).`);\n } catch {\n // Already dead\n }\n\n // Clean up lock\n const lockPath = getSupervisorLockPath(name);\n await rm(lockPath, { force: true });\n}\n\nasync function startDaemon(name: string): Promise<void> {\n const running = await isDaemonRunning(name);\n if (running) {\n printError(`Supervisor \"${name}\" is already running (PID ${running.pid}).`);\n printError(\"Use --kill first, or run neo supervise to open TUI.\");\n process.exitCode = 1;\n return;\n }\n\n // Clean up stale lock\n const lockPath = getSupervisorLockPath(name);\n if (existsSync(lockPath)) {\n await rm(lockPath, { force: true });\n }\n\n const result = await startDaemonDetached(name);\n\n if (result.error) {\n printError(`Failed to start supervisor daemon: ${result.error}`);\n process.exitCode = 1;\n return;\n }\n\n const config = await loadGlobalConfig();\n\n printSuccess(`Supervisor \"${name}\" started (PID ${result.pid})`);\n console.log(` Port: ${config.supervisor.port}`);\n console.log(` Health: curl localhost:${config.supervisor.port}/health`);\n console.log(` Webhook: curl -X POST localhost:${config.supervisor.port}/webhook -d '{}'`);\n console.log(` Logs: ${getSupervisorDir(name)}/daemon.log`);\n console.log(` TUI: neo supervise`);\n console.log(` Status: neo supervise --status`);\n console.log(` Stop: neo supervise --kill`);\n}\n\nasync function handleAttach(name: string): Promise<void> {\n const running = await isDaemonRunning(name);\n if (!running) {\n printError(`No supervisor daemon running (name: ${name}).`);\n printError(\"Start with: neo supervise\");\n process.exitCode = 1;\n return;\n }\n\n const { renderSupervisorTui } = await import(\"../tui/index.js\");\n await renderSupervisorTui(name);\n}\n\nasync function handleChildMode(\n parentName: string,\n objective: string | undefined,\n criteriaStr: string | undefined,\n budgetStr: string | undefined,\n): Promise<void> {\n if (!objective) {\n printError(\"--objective is required when using --parent\");\n process.exitCode = 1;\n return;\n }\n\n if (!criteriaStr) {\n printError(\"--criteria is required when using --parent\");\n process.exitCode = 1;\n return;\n }\n\n const running = await isDaemonRunning(parentName);\n if (!running) {\n printError(`Parent supervisor \"${parentName}\" is not running.`);\n printError(\"Start it first with: neo supervise --detach\");\n process.exitCode = 1;\n return;\n }\n\n const criteria = criteriaStr\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n const budget = budgetStr ? Number.parseFloat(budgetStr) : undefined;\n\n const { spawnChildFromCli } = await import(\"../child-mode.js\");\n\n const options: Parameters<typeof spawnChildFromCli>[0] = {\n parentName,\n objective,\n acceptanceCriteria: criteria,\n };\n if (budget !== undefined) {\n options.maxCostUsd = budget;\n }\n\n await spawnChildFromCli(options);\n}\n\nasync function handleMessage(name: string, text: string): Promise<void> {\n const running = await isDaemonRunning(name);\n if (!running) {\n printError(`No supervisor daemon running (name: ${name}).`);\n process.exitCode = 1;\n return;\n }\n\n const id = randomUUID();\n const timestamp = new Date().toISOString();\n\n const message = { id, from: \"api\" as const, text, timestamp };\n await appendFile(getSupervisorInboxPath(name), `${JSON.stringify(message)}\\n`, \"utf-8\");\n\n // Write to activity.jsonl so the message appears in the TUI conversation\n const activityEntry = { id, type: \"message\", summary: text, timestamp };\n await appendFile(getSupervisorActivityPath(name), `${JSON.stringify(activityEntry)}\\n`, \"utf-8\");\n\n printSuccess(`Message sent to supervisor \"${name}\".`);\n}\n\nexport default defineCommand({\n meta: {\n name: \"supervise\",\n description: \"Manage the autonomous supervisor daemon\",\n },\n args: {\n name: {\n type: \"string\",\n description: \"Supervisor instance name\",\n default: DEFAULT_NAME,\n },\n status: {\n type: \"boolean\",\n description: \"Show supervisor status\",\n default: false,\n },\n kill: {\n type: \"boolean\",\n description: \"Stop the running supervisor\",\n default: false,\n },\n attach: {\n type: \"boolean\",\n description: \"Open the TUI for a running supervisor (default when no flags given)\",\n default: false,\n },\n detach: {\n type: \"boolean\",\n alias: \"d\",\n description: \"Start daemon in the background without opening the TUI\",\n default: false,\n },\n message: {\n type: \"string\",\n description: \"Send a message to the supervisor inbox\",\n },\n parent: {\n type: \"string\",\n description: \"Start as a child of an existing supervisor (registers via IPC)\",\n },\n objective: {\n type: \"string\",\n description: \"Objective for child supervisor (required with --parent)\",\n },\n criteria: {\n type: \"string\",\n description: \"Comma-separated acceptance criteria (required with --parent)\",\n },\n budget: {\n type: \"string\",\n description: \"Max cost in USD for child supervisor\",\n },\n },\n async run({ args }) {\n const name = args.name;\n\n if (args.parent) {\n await handleChildMode(args.parent, args.objective, args.criteria, args.budget);\n return;\n }\n\n if (args.status) {\n await handleStatus(name);\n return;\n }\n\n if (args.kill) {\n await handleKill(name);\n return;\n }\n\n if (args.attach) {\n await handleAttach(name);\n return;\n }\n\n if (args.message) {\n await handleMessage(name, args.message);\n return;\n }\n\n // --detach: start daemon headless (no TUI)\n if (args.detach) {\n const alreadyRunning = await isDaemonRunning(name);\n if (alreadyRunning) {\n printSuccess(`Supervisor \"${name}\" already running (PID ${alreadyRunning.pid}).`);\n return;\n }\n await startDaemon(name);\n return;\n }\n\n // Default: start daemon if needed, then open TUI\n const alreadyRunning = await isDaemonRunning(name);\n if (!alreadyRunning) {\n await startDaemon(name);\n // Wait briefly for daemon to initialize before attaching\n await new Promise((r) => setTimeout(r, 1500));\n }\n await handleAttach(name);\n },\n});\n"],"mappings":"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","names":["lockPath","alreadyRunning"]}
|