nightshift-mcp 2.0.1 → 2.1.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.
Files changed (50) hide show
  1. package/README.md +46 -15
  2. package/dist/agent-spawner.d.ts +9 -0
  3. package/dist/agent-spawner.d.ts.map +1 -1
  4. package/dist/agent-spawner.js +88 -5
  5. package/dist/agent-spawner.js.map +1 -1
  6. package/dist/daemon.d.ts +19 -5
  7. package/dist/daemon.d.ts.map +1 -1
  8. package/dist/daemon.js +220 -36
  9. package/dist/daemon.js.map +1 -1
  10. package/dist/database.d.ts +2 -2
  11. package/dist/database.d.ts.map +1 -1
  12. package/dist/database.js +4 -4
  13. package/dist/database.js.map +1 -1
  14. package/dist/index.js +219 -1146
  15. package/dist/index.js.map +1 -1
  16. package/dist/orchestrator.d.ts +12 -1
  17. package/dist/orchestrator.d.ts.map +1 -1
  18. package/dist/orchestrator.js +245 -15
  19. package/dist/orchestrator.js.map +1 -1
  20. package/dist/pipeline.d.ts +61 -0
  21. package/dist/pipeline.d.ts.map +1 -0
  22. package/dist/pipeline.js +227 -0
  23. package/dist/pipeline.js.map +1 -0
  24. package/dist/project-context.d.ts +28 -0
  25. package/dist/project-context.d.ts.map +1 -0
  26. package/dist/project-context.js +45 -0
  27. package/dist/project-context.js.map +1 -0
  28. package/dist/run-logger.d.ts +61 -0
  29. package/dist/run-logger.d.ts.map +1 -0
  30. package/dist/run-logger.js +219 -0
  31. package/dist/run-logger.js.map +1 -0
  32. package/dist/tools/agents.d.ts +3 -0
  33. package/dist/tools/agents.d.ts.map +1 -1
  34. package/dist/tools/agents.js +148 -5
  35. package/dist/tools/agents.js.map +1 -1
  36. package/dist/tools/bugs.d.ts.map +1 -1
  37. package/dist/tools/bugs.js +48 -22
  38. package/dist/tools/bugs.js.map +1 -1
  39. package/dist/tools/chat.d.ts.map +1 -1
  40. package/dist/tools/chat.js +47 -20
  41. package/dist/tools/chat.js.map +1 -1
  42. package/dist/tools/prd.d.ts.map +1 -1
  43. package/dist/tools/prd.js +67 -31
  44. package/dist/tools/prd.js.map +1 -1
  45. package/dist/tools/progress.d.ts.map +1 -1
  46. package/dist/tools/progress.js +22 -7
  47. package/dist/tools/progress.js.map +1 -1
  48. package/dist/tools/utility.js +2 -2
  49. package/dist/tools/utility.js.map +1 -1
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -40,13 +40,22 @@ claude codex
40
40
  - **Delegation**: Hand off stories or research tasks to specific agents with full context injection
41
41
  - **Failover handling**: Seamless handoffs when an agent hits rate limits or context windows
42
42
 
43
- ### Reliability (New in 2.0)
44
- - **Circuit breaker**: Per-agent CLOSED/OPEN/HALF_OPEN state machine. Auto-disables failing agents, re-enables after configurable cooldown. Persisted across daemon restarts.
45
- - **Immutable audit trail**: Append-only SQLite table records every spawn, completion, failure, circuit break, and stuck-agent kill
43
+ ### Reliability
44
+ - **Health tracker**: Per-agent failure tracking. Auto-disables failing agents, re-enables after configurable cooldown. Persisted across daemon restarts.
45
+ - **Immutable audit trail**: Append-only SQLite table records every spawn, completion, failure, and stuck-agent kill
46
46
  - **Run records**: Structured execution history per agent run — duration, exit status, files changed, scope leak detection
47
47
  - **Budget tracking**: Per-agent cost tracking with daily/monthly limits, warning thresholds, enable/disable toggle
48
48
  - **Autoresearch**: Built-in analytics queries — agent success rates, average duration, scope leak rates
49
49
 
50
+ ### New in 2.1
51
+ - **Runtime project switching**: `set_project_path` tool + optional `projectPath` param on all tools. No more restarting the MCP server to switch projects.
52
+ - **Token tracking**: Parses token usage from Codex, Ollama, Gemini, and Claude output. Every `spawn_agent` call logs to `.robot-chat/runs.jsonl`.
53
+ - **Run log + stats**: Structured JSONL log per spawn. `get_run_stats` tool for aggregate tokens per agent, avg durations, rate limit counts.
54
+ - **Rate limit detection**: Parses 429s, "quota exceeded", retry-after from agent output. Returns structured `rate_limited` status.
55
+ - **Agent role tagging**: `role` param on `spawn_agent`, `delegate_story` — planner, coder, fixer, verifier, etc. Shows in run log and chat.
56
+ - **Configurable pipelines**: Define multi-step agent pipelines (e.g., Gemini plans → Codex implements → Claude verifies). Tag-based routing. `get_pipeline` / `set_pipeline` tools.
57
+ - **Tool usage tracking**: Parses which tools agents used (Read, Edit, Bash, exec, shell commands) from output.
58
+
50
59
  ### Task Management
51
60
  - **PRD-driven workflow**: User stories in `prd.json` with priorities, dependencies (`dependsOn`), and tags for routing
52
61
  - **Bug tracking**: `bugs.json` for post-testing feedback loops
@@ -61,18 +70,24 @@ claude codex
61
70
  ### Platform
62
71
  - **Cross-platform**: Windows, Linux, macOS
63
72
  - **6 agent types**: Claude, Codex, Gemini, Vibe, Goose, Ollama
64
- - **49 MCP tools** across 10 categories
73
+ - **52 MCP tools** across 10 categories
65
74
  - **NightShift CLI**: `nightshift` command for agent coordination without MCP
66
75
  - **Zero external services**: Everything runs locally with SQLite + file storage
67
76
 
68
- ## What's New in 2.0
77
+ ## What's New in 2.1
78
+
79
+ - **Runtime project switching**: `set_project_path` tool changes the active project without restarting. All PRD, chat, bug, and progress tools also accept an optional `projectPath` param for per-call overrides.
80
+ - **Token tracking + run log**: Every `spawn_agent` call (foreground and background) appends to `.robot-chat/runs.jsonl` with agent, role, duration, tokens, rate limit info, and tools used. `get_run_stats` tool returns aggregate analytics.
81
+ - **Configurable pipelines**: Define agent pipelines via `nightshift.config.json` or `set_pipeline` tool. 5 built-in pipelines (default, frontend, backend, research, quick) with tag-based routing. Pipelines execute in the daemon and orchestrator — earlier steps capture output as context for later steps.
82
+ - **Agent role tagging**: `role` param on spawn/delegate tools. Feeds run log and chat messages.
83
+ - **Rate limit detection**: Parses 429, quota exhausted, retry-after from agent output.
84
+ - **Health tracker rename**: "circuit breaker" → "health tracker" in all user-facing names.
69
85
 
70
- - **SQLite foundation**: New data layer (`.robot-chat/nightshift.db`) with ACID transactions and WAL mode. Powers audit trail, run records, budget tracking, and circuit breaker persistence. Legacy managers (chat, PRD, workflow) still use their original files for backwards compatibility — migration planned for 2.1.
71
- - **Circuit breaker**: Tracks consecutive failures per agent type. Auto-disables after threshold (default: 3), auto-recovers after cooldown (default: 60s). Single-probe enforcement in half-open state.
72
- - **Immutable audit trail**: Every daemon event logged to `audit_log` table. Queryable by event type, agent, story, or timestamp.
73
- - **Run records + autoresearch**: Structured execution data feeds analytics queries for agent performance optimization.
74
- - **Budget tracking**: Enable/disable per agent with configurable daily and monthly cost limits. Ready for OpenRouter integration.
75
- - **Security**: MCP SDK upgraded to 1.28.0. Zero production dependency vulnerabilities.
86
+ ### What was in 2.0
87
+ - SQLite foundation (`.robot-chat/nightshift.db`) with ACID transactions and WAL mode
88
+ - Health tracker (per-agent failure tracking with auto-disable/re-enable)
89
+ - Immutable audit trail, run records, budget tracking, autoresearch queries
90
+ - MCP SDK 1.28.0, zero production vulnerabilities
76
91
 
77
92
  ## Architecture
78
93
 
@@ -129,6 +144,16 @@ delegate_research(task: "Analyze auth patterns and recommend approach")
129
144
  delegate_story(agent: "codex", storyId: "US-001")
130
145
  ```
131
146
 
147
+ ### Pipeline (multi-step)
148
+ ```
149
+ set_pipeline(name: "default", steps: [
150
+ { agent: "gemini", role: "planner" },
151
+ { agent: "codex", role: "implementer" },
152
+ { agent: "claude", role: "verifier" }
153
+ ])
154
+ orchestrate()
155
+ ```
156
+
132
157
  ### Daemon (hands-off)
133
158
  ```bash
134
159
  nightshift-daemon --verbose --max-agents 4
@@ -199,7 +224,7 @@ When all stories pass and all bugs are fixed, NightShift posts `READY_TO_TEST` t
199
224
 
200
225
  ## Tools Reference
201
226
 
202
- NightShift provides 49 tools across 10 categories. Key tools listed below — use `nightshift_setup(showExamples: true)` or `nightshift_help` for full documentation.
227
+ NightShift provides 52 tools across 10 categories. Key tools listed below — use `nightshift_setup(showExamples: true)` or `nightshift_help` for full documentation.
203
228
 
204
229
  ### Communication
205
230
  | Tool | Description |
@@ -228,13 +253,17 @@ NightShift provides 49 tools across 10 categories. Key tools listed below — us
228
253
  | `spawn_agent_background` | Spawn agent, return immediately (async) |
229
254
  | `delegate_story` | Delegate a story with full context injection |
230
255
  | `delegate_research` | Delegate research/analysis task |
256
+ | `get_run_stats` | Token usage, durations, rate limits from run log |
231
257
 
232
- ### Orchestration
258
+ ### Orchestration & Pipelines
233
259
  | Tool | Description |
234
260
  |------|-------------|
235
261
  | `orchestrate` | Autonomous claim-implement-complete loop |
236
262
  | `get_agent_status` | Check background agent by PID |
237
263
  | `list_running_agents` | All spawned agents with status |
264
+ | `set_project_path` | Switch active project at runtime |
265
+ | `get_pipeline` | View configured pipelines and tag routing |
266
+ | `set_pipeline` | Create/update agent pipelines at runtime |
238
267
 
239
268
  ### Workflow
240
269
  | Tool | Description |
@@ -280,7 +309,7 @@ nightshift-daemon [options]
280
309
  **What it does:**
281
310
  - Watches `prd.json` and `chat.txt` for changes
282
311
  - Auto-spawns agents for unassigned stories
283
- - Circuit breaker disables failing agents, re-enables after cooldown
312
+ - Health tracker disables failing agents, re-enables after cooldown
284
313
  - Detects and kills stuck agents
285
314
  - Claims failover requests
286
315
  - Quarantines stories that fail repeatedly
@@ -331,7 +360,9 @@ NightShift uses a hybrid storage approach:
331
360
  | **Audit trail** | `.robot-chat/nightshift.db` | SQLite (immutable) |
332
361
  | **Run records** | `.robot-chat/nightshift.db` | SQLite |
333
362
  | **Budget** | `.robot-chat/nightshift.db` | SQLite |
334
- | **Circuit breaker** | `.robot-chat/nightshift.db` | SQLite |
363
+ | **Health tracker** | `.robot-chat/nightshift.db` | SQLite |
364
+ | **Run log** | `.robot-chat/runs.jsonl` | JSONL (append-only) |
365
+ | **Pipeline config** | `.robot-chat/pipeline-override.json` | JSON (runtime) |
335
366
 
336
367
  Add `.robot-chat/` to your `.gitignore` — coordination state is ephemeral.
337
368
 
@@ -4,6 +4,7 @@ export interface TrackedAgent {
4
4
  pid: number | undefined;
5
5
  outputFile: string;
6
6
  startTime: number;
7
+ role?: string;
7
8
  storyId?: string;
8
9
  prompt: string;
9
10
  }
@@ -27,6 +28,7 @@ export declare function getTrackedAgentStatus(pid: number): {
27
28
  agent?: AgentType;
28
29
  outputFile?: string;
29
30
  startTime?: number;
31
+ role?: string;
30
32
  storyId?: string;
31
33
  exitCode?: number | null;
32
34
  tailOutput?: string;
@@ -39,6 +41,7 @@ export declare function listTrackedAgents(): Array<{
39
41
  agent: AgentType;
40
42
  outputFile: string;
41
43
  startTime: number;
44
+ role?: string;
42
45
  storyId?: string;
43
46
  running: boolean;
44
47
  elapsedSeconds: number;
@@ -49,6 +52,8 @@ export interface SpawnOptions {
49
52
  projectPath: string;
50
53
  timeout?: number;
51
54
  background?: boolean;
55
+ role?: string;
56
+ storyId?: string;
52
57
  }
53
58
  export interface SpawnResult {
54
59
  success: boolean;
@@ -56,6 +61,10 @@ export interface SpawnResult {
56
61
  exitCode: number | null;
57
62
  pid?: number;
58
63
  error?: string;
64
+ duration_seconds?: number;
65
+ tokens?: import("./run-logger.js").TokenUsage;
66
+ rateLimitInfo?: import("./run-logger.js").RateLimitInfo;
67
+ toolsUsed?: string[];
59
68
  }
60
69
  /**
61
70
  * Spawn an AI agent as a subprocess
@@ -1 +1 @@
1
- {"version":3,"file":"agent-spawner.d.ts","sourceRoot":"","sources":["../src/agent-spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-spawner.d.ts","sourceRoot":"","sources":["../src/agent-spawner.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { spawn, spawnSync } from "child_process";
2
2
  import * as path from "path";
3
3
  import * as fs from "fs";
4
4
  import { commandExistsAsync, killProcess, isProcessRunning, isWindows, } from "./platform.js";
5
+ import { parseTokensFromOutput, detectRateLimit, parseToolsUsed, appendRunLog, } from "./run-logger.js";
5
6
  /** All agents spawned, keyed by PID or outputFile. Persisted to disk. */
6
7
  const trackedAgents = new Map();
7
8
  /** Path to the on-disk registry (set once we know projectPath) */
@@ -16,6 +17,7 @@ export function initAgentRegistry(projectPath) {
16
17
  fs.mkdirSync(dir, { recursive: true });
17
18
  }
18
19
  registryFile = path.join(dir, "agent-registry.json");
20
+ trackedAgents.clear();
19
21
  loadRegistry();
20
22
  }
21
23
  /** Load persisted registry from disk into the in-memory map */
@@ -94,6 +96,7 @@ export function getTrackedAgentStatus(pid) {
94
96
  agent: entry.agent,
95
97
  outputFile: entry.outputFile,
96
98
  startTime: entry.startTime,
99
+ role: entry.role,
97
100
  storyId: entry.storyId,
98
101
  exitCode: running ? undefined : exitCode,
99
102
  tailOutput,
@@ -111,6 +114,7 @@ export function listTrackedAgents() {
111
114
  agent: entry.agent,
112
115
  outputFile: entry.outputFile,
113
116
  startTime: entry.startTime,
117
+ role: entry.role,
114
118
  storyId: entry.storyId,
115
119
  running,
116
120
  elapsedSeconds: Math.round((Date.now() - entry.startTime) / 1000),
@@ -200,12 +204,13 @@ function getAgentConfig(agent) {
200
204
  * Spawn an AI agent as a subprocess
201
205
  */
202
206
  export async function spawnAgent(options) {
203
- const { agent, prompt, projectPath, timeout = 5 * 60 * 1000 } = options;
207
+ const { agent, prompt, projectPath, timeout = 5 * 60 * 1000, role, storyId } = options;
204
208
  // Ensure registry is initialized for this project
205
209
  if (!registryFile)
206
210
  initAgentRegistry(projectPath);
207
211
  const config = getAgentConfig(agent);
208
212
  const { cmd, args, promptDelivery, promptFlag, env: agentEnv } = config;
213
+ const startTime = Date.now();
209
214
  return new Promise((resolve) => {
210
215
  let output = "";
211
216
  let errorOutput = "";
@@ -262,6 +267,30 @@ export async function spawnAgent(options) {
262
267
  // Handle completion
263
268
  proc.on("close", (code) => {
264
269
  clearTimeout(timeoutId);
270
+ const durationSeconds = Math.round((Date.now() - startTime) / 1000);
271
+ const fullOutput = [output, errorOutput].filter(Boolean).join("\n").trim();
272
+ const tokens = parseTokensFromOutput(agent, fullOutput);
273
+ const rateLimitInfo = detectRateLimit(fullOutput);
274
+ const toolsUsed = parseToolsUsed(fullOutput);
275
+ // Determine status
276
+ let status = code === 0 ? "completed" : "failed";
277
+ if (timedOut)
278
+ status = "timeout";
279
+ else if (rateLimitInfo?.detected && code !== 0)
280
+ status = "rate_limited";
281
+ // Log the run
282
+ appendRunLog(projectPath, {
283
+ timestamp: new Date().toISOString(),
284
+ agent,
285
+ role,
286
+ storyId,
287
+ duration_seconds: durationSeconds,
288
+ status,
289
+ exitCode: code,
290
+ tokens,
291
+ rateLimitInfo,
292
+ toolsUsed,
293
+ });
265
294
  if (timedOut) {
266
295
  const timeoutSec = timeout / 1000;
267
296
  const suggestedSec = Math.min(timeoutSec * 2, 1200);
@@ -269,25 +298,44 @@ export async function spawnAgent(options) {
269
298
  success: false,
270
299
  output,
271
300
  exitCode: code,
301
+ duration_seconds: durationSeconds,
302
+ tokens,
303
+ rateLimitInfo,
304
+ toolsUsed,
272
305
  error: `Agent timed out after ${timeoutSec} seconds. The task likely needs more time. Retry with a longer timeout (try ${suggestedSec}s) or use spawn_agent_background for long-running tasks.`,
273
306
  });
274
307
  }
275
308
  else {
276
309
  resolve({
277
310
  success: code === 0,
278
- output: output || errorOutput,
311
+ output: fullOutput,
279
312
  exitCode: code,
280
313
  pid: proc.pid,
314
+ duration_seconds: durationSeconds,
315
+ tokens,
316
+ rateLimitInfo,
317
+ toolsUsed,
281
318
  error: code !== 0 ? errorOutput || `Exit code: ${code}` : undefined,
282
319
  });
283
320
  }
284
321
  });
285
322
  proc.on("error", (err) => {
286
323
  clearTimeout(timeoutId);
324
+ const durationSeconds = Math.round((Date.now() - startTime) / 1000);
325
+ appendRunLog(projectPath, {
326
+ timestamp: new Date().toISOString(),
327
+ agent,
328
+ role,
329
+ storyId,
330
+ duration_seconds: durationSeconds,
331
+ status: "failed",
332
+ exitCode: null,
333
+ });
287
334
  resolve({
288
335
  success: false,
289
336
  output: "",
290
337
  exitCode: null,
338
+ duration_seconds: durationSeconds,
291
339
  error: `Failed to spawn ${agent}: ${err.message}`,
292
340
  });
293
341
  });
@@ -328,12 +376,13 @@ function stripAnsiEscapes(str) {
328
376
  * Create the Node.js wrapper script content for background agent spawning
329
377
  * This script runs the agent and captures output to a file
330
378
  */
331
- function createWrapperScript(agent, cmd, args, promptFile, outputFile, promptDelivery, promptFlag) {
379
+ function createWrapperScript(agent, cmd, args, promptFile, outputFile, promptDelivery, promptFlag, role, storyId) {
332
380
  const argsJson = JSON.stringify(args);
333
381
  const promptFlagJson = promptFlag ? JSON.stringify(promptFlag) : "null";
334
382
  return `
335
383
  import { spawn } from "child_process";
336
384
  import * as fs from "fs";
385
+ import * as path from "path";
337
386
 
338
387
  const agent = ${JSON.stringify(agent)};
339
388
  const cmd = ${JSON.stringify(cmd)};
@@ -342,6 +391,9 @@ const promptFile = ${JSON.stringify(promptFile)};
342
391
  const outputFile = ${JSON.stringify(outputFile)};
343
392
  const promptDelivery = ${JSON.stringify(promptDelivery)};
344
393
  const promptFlag = ${promptFlagJson};
394
+ const role = ${JSON.stringify(role || undefined)};
395
+ const storyId = ${JSON.stringify(storyId || undefined)};
396
+ const startTime = Date.now();
345
397
 
346
398
  // Read the prompt
347
399
  const prompt = fs.readFileSync(promptFile, "utf-8");
@@ -400,8 +452,36 @@ if (promptDelivery === "stdin") {
400
452
  writeNext();
401
453
  }
402
454
 
455
+ // Append run log entry (inline — no imports from parent module)
456
+ function appendRunLog(exitCode, timedOut) {
457
+ try {
458
+ const duration = Math.round((Date.now() - startTime) / 1000);
459
+ const hasRateLimit = /rate.?limit|quota.?exceeded|too many requests|capacity.*exhausted|exhausted.*capacity|throttl/i.test(output);
460
+ let status = exitCode === 0 ? "completed" : "failed";
461
+ if (timedOut) status = "timeout";
462
+ else if (hasRateLimit) status = "rate_limited";
463
+
464
+ // Parse tokens (simple patterns)
465
+ let tokens = undefined;
466
+ const tokensMatch = output.match(/tokens?\\s*used[*:]*\\s*([\\d,]+)/i);
467
+ if (tokensMatch) tokens = { total: parseInt(tokensMatch[1].replace(/,/g, ""), 10) };
468
+ const promptEval = output.match(/"prompt_eval_count"\\s*:\\s*(\\d+)/);
469
+ const evalCount = output.match(/"eval_count"\\s*:\\s*(\\d+)/);
470
+ if (promptEval || evalCount) {
471
+ const inp = promptEval ? parseInt(promptEval[1], 10) : undefined;
472
+ const out = evalCount ? parseInt(evalCount[1], 10) : undefined;
473
+ tokens = { input: inp, output: out, total: (inp || 0) + (out || 0) };
474
+ }
475
+
476
+ const entry = { timestamp: new Date().toISOString(), agent, role, storyId, duration_seconds: duration, status, exitCode, tokens };
477
+ const logFile = path.join(process.cwd(), ".robot-chat", "runs.jsonl");
478
+ fs.appendFileSync(logFile, JSON.stringify(entry) + "\\n", "utf-8");
479
+ } catch {}
480
+ }
481
+
403
482
  proc.on("close", (code) => {
404
483
  fs.appendFileSync(outputFile, \`\\n---\\nFinished: \${new Date().toISOString()}\\nExit Code: \${code}\\n\`);
484
+ appendRunLog(code, false);
405
485
  // Clean up prompt file
406
486
  try {
407
487
  fs.unlinkSync(promptFile);
@@ -411,6 +491,7 @@ proc.on("close", (code) => {
411
491
 
412
492
  proc.on("error", (err) => {
413
493
  fs.appendFileSync(outputFile, \`\\n---\\nError: \${err.message}\\nFinished: \${new Date().toISOString()}\\nExit Code: 1\\n\`);
494
+ appendRunLog(1, false);
414
495
  try {
415
496
  fs.unlinkSync(promptFile);
416
497
  } catch {}
@@ -423,7 +504,7 @@ proc.on("error", (err) => {
423
504
  * Uses a Node.js wrapper script for cross-platform compatibility
424
505
  */
425
506
  export function spawnAgentBackground(options) {
426
- const { agent, prompt, projectPath } = options;
507
+ const { agent, prompt, projectPath, role, storyId } = options;
427
508
  // Ensure registry is initialized for this project
428
509
  if (!registryFile)
429
510
  initAgentRegistry(projectPath);
@@ -441,7 +522,7 @@ export function spawnAgentBackground(options) {
441
522
  // Write prompt to file
442
523
  fs.writeFileSync(promptFile, prompt, "utf-8");
443
524
  // Create wrapper script
444
- const wrapperScript = createWrapperScript(agent, cmd, args, promptFile, outputFile, promptDelivery, promptFlag);
525
+ const wrapperScript = createWrapperScript(agent, cmd, args, promptFile, outputFile, promptDelivery, promptFlag, role, storyId);
445
526
  fs.writeFileSync(wrapperFile, wrapperScript, "utf-8");
446
527
  // Spawn Node.js to run the wrapper script
447
528
  const proc = spawn("node", [wrapperFile], {
@@ -462,6 +543,8 @@ export function spawnAgentBackground(options) {
462
543
  pid: proc.pid,
463
544
  outputFile,
464
545
  startTime: Date.now(),
546
+ role,
547
+ storyId,
465
548
  prompt: prompt.substring(0, 500),
466
549
  });
467
550
  // Schedule cleanup of wrapper file after a delay (agent should have read it by then)
@@ -1 +1 @@
1
- {"version":3,"file":"agent-spawner.js","sourceRoot":"","sources":["../src/agent-spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-spawner.js","sourceRoot":"","sources":["../src/agent-spawner.ts"],"names":[],"mappings":"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"}
package/dist/daemon.d.ts CHANGED
@@ -16,10 +16,10 @@ interface DaemonConfig {
16
16
  agents: AgentType[];
17
17
  verbose: boolean;
18
18
  dryRun: boolean;
19
- circuitBreakerThreshold: number;
20
- circuitBreakerCooldownMs: number;
19
+ healthThreshold: number;
20
+ healthCooldownMs: number;
21
21
  }
22
- type CircuitState = "CLOSED" | "OPEN" | "HALF_OPEN";
22
+ type HealthState = "CLOSED" | "OPEN" | "HALF_OPEN";
23
23
  export declare class NightShiftDaemon {
24
24
  private config;
25
25
  private ralph;
@@ -29,7 +29,7 @@ export declare class NightShiftDaemon {
29
29
  private running;
30
30
  private activeAgents;
31
31
  private storyStates;
32
- private agentCircuits;
32
+ private agentHealth;
33
33
  private availableAgents;
34
34
  private agentIndex;
35
35
  private prdWatcher;
@@ -63,7 +63,7 @@ export declare class NightShiftDaemon {
63
63
  private releaseProbe;
64
64
  private getHealthyAgents;
65
65
  getCircuitStatus(): Record<string, {
66
- state: CircuitState;
66
+ state: HealthState;
67
67
  failures: number;
68
68
  successes: number;
69
69
  consecutiveFailures: number;
@@ -71,6 +71,20 @@ export declare class NightShiftDaemon {
71
71
  private reconcile;
72
72
  private getNextAgent;
73
73
  private spawnAgentForStory;
74
+ /**
75
+ * Run a multi-step pipeline for a story.
76
+ * Earlier steps run foreground (capturing output as context),
77
+ * the final step runs background (non-blocking for the daemon).
78
+ */
79
+ private runPipelineForStory;
80
+ /**
81
+ * Build prompt for a pipeline step with role-specific instructions.
82
+ */
83
+ private buildPipelineStepPrompt;
84
+ /**
85
+ * Original single-agent spawn (used when pipeline has 0-1 steps)
86
+ */
87
+ private spawnSingleAgentForStory;
74
88
  private buildAgentPrompt;
75
89
  private monitorAgent;
76
90
  private onAgentExit;
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAQH,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAQ5B,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAmBD,KAAK,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAiBpD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,EAAE,CAAe;IAGzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,aAAa,CAAgD;IACrE,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAAK;IAGvB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,eAAe,CAAQ;IAG/B,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,cAAc,CAA0C;IAGhE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE;IA0BnE,OAAO,CAAC,GAAG;IAwBX,OAAO,CAAC,WAAW;IAmCnB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,QAAQ;YAkBF,YAAY;YAKZ,aAAa;YAwBb,cAAc;IA2B5B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,kBAAkB;IAyB1B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,gBAAgB;IAexB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC;YAiB/G,SAAS;IA6CvB,OAAO,CAAC,YAAY;YAQN,kBAAkB;IAgFhC,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,YAAY;YAaN,WAAW;IA2CzB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,eAAe;YAOT,WAAW;IAgDnB,KAAK;IA0CL,QAAQ;CAuBf"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AASH,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAS5B,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAmBD,KAAK,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAiBnD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,EAAE,CAAe;IAGzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAAK;IAGvB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,eAAe,CAAQ;IAG/B,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,cAAc,CAA0C;IAGhE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE;IA0BnE,OAAO,CAAC,GAAG;IAwBX,OAAO,CAAC,WAAW;IAmCnB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,QAAQ;YAkBF,YAAY;YAKZ,aAAa;YAwBb,cAAc;IA2B5B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,kBAAkB;IAyB1B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,gBAAgB;IAexB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAC;YAiB9G,SAAS;IA6CvB,OAAO,CAAC,YAAY;YAQN,kBAAkB;IA4BhC;;;;OAIG;YACW,mBAAmB;IA+JjC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA+B/B;;OAEG;YACW,wBAAwB;IAkEtC,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,YAAY;YAaN,WAAW;IA2CzB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,eAAe;YAOT,WAAW;IAgDnB,KAAK;IA0CL,QAAQ;CAuBf"}