nightshift-mcp 2.1.2 → 2.2.0

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/tools/prd.js CHANGED
@@ -4,6 +4,7 @@ import { ChatManager } from "../chat-manager.js";
4
4
  import { RalphManager } from "../ralph-manager.js";
5
5
  import { WorkflowManager } from "../workflow-manager.js";
6
6
  import { validateProjectPath } from "../project-context.js";
7
+ import { generateStories, loadVisionConfig, approveGeneratedStories } from "../vision.js";
7
8
  function getPrdManagers(ctx, projectPath) {
8
9
  if (!projectPath) {
9
10
  return {
@@ -299,6 +300,123 @@ export const completeStory = defineTool({
299
300
  }
300
301
  },
301
302
  });
303
+ export const generateStoriesFromVision = defineTool({
304
+ name: "generate_stories",
305
+ category: "prd",
306
+ description: "Generate new user stories from project vision",
307
+ fullDescription: `Generate new user stories by comparing the project vision against the current codebase state.
308
+
309
+ Uses an AI agent (default: gemini) to analyze the codebase, identify gaps between the vision and what's been built, and produce new stories with acceptance criteria.
310
+
311
+ Requires either a vision configured in nightshift.config.json or an inline vision parameter.
312
+
313
+ Config format (nightshift.config.json):
314
+ {
315
+ "vision": "Description of the end-state goal",
316
+ "autoGenerateWhenBelow": 5,
317
+ "taskGenerationAgent": "gemini",
318
+ "maxAutoGenerated": 10,
319
+ "requireApproval": false
320
+ }
321
+
322
+ When autoGenerateWhenBelow is set, the daemon will automatically trigger generation when incomplete story count drops below the threshold.`,
323
+ inputSchema: z.object({
324
+ vision: z.string().optional().describe("Project vision/goal (overrides config file vision)"),
325
+ maxStories: z.number().optional().describe("Maximum stories to generate (default: 10)"),
326
+ agent: z.string().optional().describe("Agent to use for generation (default: gemini)"),
327
+ requireApproval: z.boolean().optional().describe("Require human approval before stories are activated (default: false)"),
328
+ projectPath: z.string().optional().describe("Optional project path override"),
329
+ }),
330
+ handler: async (params, ctx) => {
331
+ try {
332
+ const { projectPath, chatManager, ralphManager } = getPrdManagers(ctx, params.projectPath);
333
+ if (!ralphManager.hasPRD()) {
334
+ return {
335
+ content: [{ type: "text", text: "No prd.json found. Create a PRD first before generating stories." }],
336
+ isError: true,
337
+ };
338
+ }
339
+ // Build config from params + config file
340
+ const fileConfig = loadVisionConfig(projectPath);
341
+ const vision = params.vision || fileConfig?.vision;
342
+ if (!vision) {
343
+ return {
344
+ content: [{
345
+ type: "text",
346
+ text: JSON.stringify({
347
+ error: "No vision configured",
348
+ hint: "Either pass a 'vision' parameter or add a 'vision' field to nightshift.config.json",
349
+ example: {
350
+ vision: "Build an AI-powered task manager with real-time collaboration",
351
+ autoGenerateWhenBelow: 5,
352
+ taskGenerationAgent: "gemini",
353
+ maxAutoGenerated: 10,
354
+ },
355
+ }, null, 2),
356
+ }],
357
+ isError: true,
358
+ };
359
+ }
360
+ const config = {
361
+ vision,
362
+ autoGenerateWhenBelow: fileConfig?.autoGenerateWhenBelow ?? 5,
363
+ taskGenerationAgent: params.agent ?? fileConfig?.taskGenerationAgent ?? "gemini",
364
+ maxAutoGenerated: params.maxStories ?? fileConfig?.maxAutoGenerated ?? 10,
365
+ requireApproval: params.requireApproval ?? fileConfig?.requireApproval ?? false,
366
+ };
367
+ const result = await generateStories(projectPath, ralphManager, chatManager, config);
368
+ return {
369
+ content: [{
370
+ type: "text",
371
+ text: JSON.stringify(result, null, 2),
372
+ }],
373
+ isError: !result.success,
374
+ };
375
+ }
376
+ catch (error) {
377
+ return {
378
+ content: [{ type: "text", text: `Error generating stories: ${error instanceof Error ? error.message : String(error)}` }],
379
+ isError: true,
380
+ };
381
+ }
382
+ },
383
+ });
384
+ export const approveStories = defineTool({
385
+ name: "approve_stories",
386
+ category: "prd",
387
+ description: "Approve auto-generated stories for execution",
388
+ fullDescription: `Approve auto-generated stories so the daemon will pick them up for execution.
389
+
390
+ When stories are generated with requireApproval=true, they get a "pending_approval" tag and the daemon skips them. Use this tool to approve specific stories or all pending stories at once.`,
391
+ inputSchema: z.object({
392
+ storyIds: z.array(z.string()).optional().describe("Specific story IDs to approve (omit to approve all pending)"),
393
+ projectPath: z.string().optional().describe("Optional project path override"),
394
+ }),
395
+ handler: async (params, ctx) => {
396
+ try {
397
+ const { ralphManager } = getPrdManagers(ctx, params.projectPath);
398
+ const result = approveGeneratedStories(ralphManager, params.storyIds);
399
+ return {
400
+ content: [{
401
+ type: "text",
402
+ text: JSON.stringify({
403
+ approved: result.approved,
404
+ notFound: result.notFound,
405
+ message: result.approved.length > 0
406
+ ? `Approved ${result.approved.length} stories: ${result.approved.join(", ")}`
407
+ : "No stories to approve",
408
+ }, null, 2),
409
+ }],
410
+ };
411
+ }
412
+ catch (error) {
413
+ return {
414
+ content: [{ type: "text", text: `Error approving stories: ${error instanceof Error ? error.message : String(error)}` }],
415
+ isError: true,
416
+ };
417
+ }
418
+ },
419
+ });
302
420
  // Export all PRD tools as an array
303
421
  export const prdTools = [
304
422
  readPrd,
@@ -307,5 +425,7 @@ export const prdTools = [
307
425
  getIncompleteStories,
308
426
  claimStory,
309
427
  completeStory,
428
+ generateStoriesFromVision,
429
+ approveStories,
310
430
  ];
311
431
  //# sourceMappingURL=prd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prd.js","sourceRoot":"","sources":["../../src/tools/prd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prd.js","sourceRoot":"","sources":["../../src/tools/prd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * NightShift Vision - Auto-Task Generation
3
+ *
4
+ * When a project vision/goal is defined, automatically generates new stories
5
+ * when incomplete story count drops below a configurable threshold.
6
+ * Uses an agent (typically Gemini) to compare vision vs current codebase state
7
+ * and identify gaps that become new user stories.
8
+ */
9
+ import { RalphManager } from "./ralph-manager.js";
10
+ import { ChatManager } from "./chat-manager.js";
11
+ import { type AgentType } from "./agent-spawner.js";
12
+ export interface VisionConfig {
13
+ /** The project vision / end-state goal description */
14
+ vision: string;
15
+ /** Generate new stories when incomplete count drops below this (default: 5) */
16
+ autoGenerateWhenBelow: number;
17
+ /** Agent to use for story generation (default: "gemini") */
18
+ taskGenerationAgent: AgentType;
19
+ /** Max stories to generate per cycle (default: 10) */
20
+ maxAutoGenerated: number;
21
+ /** Require human approval before generated stories are activated (default: false) */
22
+ requireApproval: boolean;
23
+ }
24
+ export interface GeneratedStory {
25
+ id: string;
26
+ title: string;
27
+ description: string;
28
+ acceptanceCriteria: string[];
29
+ priority: number;
30
+ tags?: string[];
31
+ }
32
+ export interface GenerationResult {
33
+ success: boolean;
34
+ storiesGenerated: number;
35
+ storyIds: string[];
36
+ error?: string;
37
+ /** Whether stories need approval before being worked on */
38
+ pendingApproval: boolean;
39
+ }
40
+ /**
41
+ * Load vision config from nightshift.config.json.
42
+ * Returns null if no vision is configured.
43
+ */
44
+ export declare function loadVisionConfig(projectPath: string): VisionConfig | null;
45
+ /**
46
+ * Generate new stories based on the project vision.
47
+ *
48
+ * Spawns an agent to analyze the codebase and vision, then parses
49
+ * the generated stories and adds them to prd.json.
50
+ */
51
+ export declare function generateStories(projectPath: string, ralph: RalphManager, chat: ChatManager, config: VisionConfig): Promise<GenerationResult>;
52
+ /**
53
+ * Check if vision-based story generation should be triggered.
54
+ * Called by the daemon after each reconciliation cycle.
55
+ *
56
+ * Returns true if generation was triggered (caller should re-reconcile).
57
+ */
58
+ export declare function checkVisionThreshold(projectPath: string, ralph: RalphManager, chat: ChatManager): Promise<boolean>;
59
+ /**
60
+ * Approve auto-generated stories so the daemon will pick them up.
61
+ * Removes the "pending_approval" tag and updates notes.
62
+ */
63
+ export declare function approveGeneratedStories(ralph: RalphManager, storyIds?: string[]): {
64
+ approved: string[];
65
+ notFound: string[];
66
+ };
67
+ //# sourceMappingURL=vision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../src/vision.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAOhE,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,qBAAqB,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,mBAAmB,EAAE,SAAS,CAAC;IAC/B,sDAAsD;IACtD,gBAAgB,EAAE,MAAM,CAAC;IACzB,qFAAqF;IACrF,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,eAAe,EAAE,OAAO,CAAC;CAC1B;AAQD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAoBzE;AA2ID;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAiG3B;AAMD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAkC5C"}
package/dist/vision.js ADDED
@@ -0,0 +1,315 @@
1
+ /**
2
+ * NightShift Vision - Auto-Task Generation
3
+ *
4
+ * When a project vision/goal is defined, automatically generates new stories
5
+ * when incomplete story count drops below a configurable threshold.
6
+ * Uses an agent (typically Gemini) to compare vision vs current codebase state
7
+ * and identify gaps that become new user stories.
8
+ */
9
+ import * as fs from "fs";
10
+ import * as path from "path";
11
+ import { spawnAgent } from "./agent-spawner.js";
12
+ // ============================================
13
+ // Config Loading
14
+ // ============================================
15
+ const CONFIG_FILENAME = "nightshift.config.json";
16
+ /**
17
+ * Load vision config from nightshift.config.json.
18
+ * Returns null if no vision is configured.
19
+ */
20
+ export function loadVisionConfig(projectPath) {
21
+ const configFile = path.join(projectPath, CONFIG_FILENAME);
22
+ if (!fs.existsSync(configFile))
23
+ return null;
24
+ try {
25
+ const raw = JSON.parse(fs.readFileSync(configFile, "utf-8"));
26
+ if (!raw.vision || typeof raw.vision !== "string")
27
+ return null;
28
+ return {
29
+ vision: raw.vision,
30
+ autoGenerateWhenBelow: raw.autoGenerateWhenBelow ?? 5,
31
+ taskGenerationAgent: raw.taskGenerationAgent ?? "gemini",
32
+ maxAutoGenerated: raw.maxAutoGenerated ?? 10,
33
+ requireApproval: raw.requireApproval ?? false,
34
+ };
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ // ============================================
41
+ // Story ID Generation
42
+ // ============================================
43
+ /**
44
+ * Compute the next story ID based on existing stories.
45
+ * Finds the highest US-NNN and increments from there.
46
+ */
47
+ function getNextStoryId(existingStories, count) {
48
+ let maxNum = 0;
49
+ for (const story of existingStories) {
50
+ const match = story.id.match(/^US-(\d+)$/);
51
+ if (match) {
52
+ const num = parseInt(match[1], 10);
53
+ if (num > maxNum)
54
+ maxNum = num;
55
+ }
56
+ }
57
+ const ids = [];
58
+ for (let i = 1; i <= count; i++) {
59
+ ids.push(`US-${String(maxNum + i).padStart(3, "0")}`);
60
+ }
61
+ return ids;
62
+ }
63
+ // ============================================
64
+ // Story Generation
65
+ // ============================================
66
+ /**
67
+ * Build the prompt sent to the generation agent.
68
+ */
69
+ function buildGenerationPrompt(vision, prd, maxStories, projectPath) {
70
+ const completedStories = prd.userStories.filter(s => s.passes);
71
+ const incompleteStories = prd.userStories.filter(s => !s.passes);
72
+ const existingIds = prd.userStories.map(s => s.id);
73
+ // Build a concise summary of what's been done
74
+ const completedSummary = completedStories.length > 0
75
+ ? completedStories.map(s => `- ${s.id}: ${s.title}`).join("\n")
76
+ : "(none yet)";
77
+ const incompleteSummary = incompleteStories.length > 0
78
+ ? incompleteStories.map(s => `- ${s.id}: ${s.title}`).join("\n")
79
+ : "(none)";
80
+ return `You are a product manager and technical lead. Your job is to identify the most important work that needs to be done to achieve the project vision.
81
+
82
+ ## Project Vision
83
+ ${vision}
84
+
85
+ ## Project Description
86
+ ${prd.description || "(no description)"}
87
+
88
+ ## Completed Stories (${completedStories.length})
89
+ ${completedSummary}
90
+
91
+ ## In-Progress / Remaining Stories (${incompleteStories.length})
92
+ ${incompleteSummary}
93
+
94
+ ## Existing Story IDs (do NOT reuse these)
95
+ ${existingIds.join(", ")}
96
+
97
+ ## Your Task
98
+
99
+ 1. Read the codebase in the current directory to understand what has been built so far.
100
+ 2. Compare the current state against the project vision.
101
+ 3. Identify the top ${maxStories} most important gaps, features, or improvements needed.
102
+ 4. For each gap, create a user story.
103
+
104
+ ## Output Format
105
+
106
+ You MUST output ONLY a JSON array of story objects, with NO surrounding text or markdown:
107
+
108
+ [
109
+ {
110
+ "title": "Short descriptive title",
111
+ "description": "Detailed description of what needs to be built",
112
+ "acceptanceCriteria": ["AC 1", "AC 2", "AC 3"],
113
+ "priority": 1,
114
+ "tags": ["relevant", "tags"]
115
+ }
116
+ ]
117
+
118
+ Rules:
119
+ - Priority 1 = highest priority, increment from there
120
+ - Each story should be independently completable by a single agent
121
+ - Stories should be specific and actionable, not vague
122
+ - Include 2-5 acceptance criteria per story
123
+ - Tags help route to the right pipeline (e.g., "frontend", "backend", "api", "research")
124
+ - Do NOT include an "id" field — IDs will be assigned automatically
125
+ - Output valid JSON only — no markdown fences, no explanatory text`;
126
+ }
127
+ /**
128
+ * Parse the agent's output into story objects.
129
+ * Handles common issues: markdown fences, explanatory text around JSON.
130
+ */
131
+ function parseGeneratedStories(output) {
132
+ // Strip markdown fences if present
133
+ let cleaned = output.trim();
134
+ cleaned = cleaned.replace(/^```(?:json)?\s*\n?/i, "").replace(/\n?\s*```\s*$/i, "");
135
+ // Try to find a JSON array in the output
136
+ const arrayMatch = cleaned.match(/\[[\s\S]*\]/);
137
+ if (!arrayMatch) {
138
+ throw new Error("No JSON array found in agent output");
139
+ }
140
+ const parsed = JSON.parse(arrayMatch[0]);
141
+ if (!Array.isArray(parsed)) {
142
+ throw new Error("Parsed output is not an array");
143
+ }
144
+ // Validate each story has required fields
145
+ const stories = [];
146
+ for (const item of parsed) {
147
+ if (!item.title || typeof item.title !== "string")
148
+ continue;
149
+ stories.push({
150
+ id: "", // assigned later
151
+ title: item.title,
152
+ description: item.description || "",
153
+ acceptanceCriteria: Array.isArray(item.acceptanceCriteria) ? item.acceptanceCriteria : [],
154
+ priority: typeof item.priority === "number" ? item.priority : 999,
155
+ tags: Array.isArray(item.tags) ? item.tags : undefined,
156
+ });
157
+ }
158
+ return stories;
159
+ }
160
+ /**
161
+ * Generate new stories based on the project vision.
162
+ *
163
+ * Spawns an agent to analyze the codebase and vision, then parses
164
+ * the generated stories and adds them to prd.json.
165
+ */
166
+ export async function generateStories(projectPath, ralph, chat, config) {
167
+ const prd = ralph.readPRD();
168
+ if (!prd) {
169
+ return { success: false, storiesGenerated: 0, storyIds: [], error: "No prd.json found", pendingApproval: false };
170
+ }
171
+ const prompt = buildGenerationPrompt(config.vision, prd, config.maxAutoGenerated, projectPath);
172
+ // Spawn the generation agent
173
+ chat.writeMessage({
174
+ agent: "NightShift",
175
+ type: "INFO",
176
+ content: `Vision auto-generation triggered (${prd.userStories.filter(s => !s.passes).length} incomplete stories, threshold: ${config.autoGenerateWhenBelow}). Spawning ${config.taskGenerationAgent} to generate up to ${config.maxAutoGenerated} new stories.`,
177
+ });
178
+ const result = await spawnAgent({
179
+ agent: config.taskGenerationAgent,
180
+ prompt,
181
+ projectPath,
182
+ timeout: 600_000, // 10 minutes
183
+ role: "vision-generator",
184
+ });
185
+ if (!result.success || !result.output) {
186
+ const error = `Story generation failed: ${result.error || "no output from agent"}`;
187
+ chat.writeMessage({ agent: "NightShift", type: "ERROR", content: error });
188
+ return { success: false, storiesGenerated: 0, storyIds: [], error, pendingApproval: false };
189
+ }
190
+ // Parse the agent's output
191
+ let generated;
192
+ try {
193
+ generated = parseGeneratedStories(result.output);
194
+ }
195
+ catch (err) {
196
+ const error = `Failed to parse generated stories: ${err instanceof Error ? err.message : String(err)}`;
197
+ chat.writeMessage({ agent: "NightShift", type: "ERROR", content: error });
198
+ return { success: false, storiesGenerated: 0, storyIds: [], error, pendingApproval: false };
199
+ }
200
+ if (generated.length === 0) {
201
+ chat.writeMessage({ agent: "NightShift", type: "INFO", content: "Vision agent returned no new stories — vision may be complete." });
202
+ return { success: true, storiesGenerated: 0, storyIds: [], pendingApproval: false };
203
+ }
204
+ // Cap at maxAutoGenerated
205
+ generated = generated.slice(0, config.maxAutoGenerated);
206
+ // Assign IDs
207
+ const newIds = getNextStoryId(prd.userStories, generated.length);
208
+ for (let i = 0; i < generated.length; i++) {
209
+ generated[i].id = newIds[i];
210
+ }
211
+ // Re-read PRD to avoid race conditions with concurrent story completions
212
+ const freshPrd = ralph.readPRD();
213
+ if (!freshPrd) {
214
+ return { success: false, storiesGenerated: 0, storyIds: [], error: "PRD disappeared during generation", pendingApproval: false };
215
+ }
216
+ // Add stories to PRD
217
+ const pendingApproval = config.requireApproval;
218
+ for (const story of generated) {
219
+ const newStory = {
220
+ id: story.id,
221
+ title: story.title,
222
+ description: story.description,
223
+ acceptanceCriteria: story.acceptanceCriteria,
224
+ priority: story.priority,
225
+ passes: false,
226
+ notes: pendingApproval ? "AUTO_GENERATED — awaiting approval" : "AUTO_GENERATED",
227
+ tags: [...(story.tags || []), "auto_generated"],
228
+ };
229
+ // If approval required, mark with a special tag so daemon skips them
230
+ if (pendingApproval) {
231
+ newStory.tags = [...(newStory.tags || []), "pending_approval"];
232
+ }
233
+ freshPrd.userStories.push(newStory);
234
+ }
235
+ ralph.writePRD(freshPrd);
236
+ const storyIds = generated.map(s => s.id);
237
+ const summaryLines = generated.map(s => ` ${s.id}: ${s.title}`).join("\n");
238
+ chat.writeMessage({
239
+ agent: "NightShift",
240
+ type: "INFO",
241
+ content: `Vision auto-generation complete. Added ${generated.length} stories:\n${summaryLines}${pendingApproval ? "\nStories are pending human approval." : ""}`,
242
+ });
243
+ return {
244
+ success: true,
245
+ storiesGenerated: generated.length,
246
+ storyIds,
247
+ pendingApproval,
248
+ };
249
+ }
250
+ // ============================================
251
+ // Daemon Integration
252
+ // ============================================
253
+ /**
254
+ * Check if vision-based story generation should be triggered.
255
+ * Called by the daemon after each reconciliation cycle.
256
+ *
257
+ * Returns true if generation was triggered (caller should re-reconcile).
258
+ */
259
+ export async function checkVisionThreshold(projectPath, ralph, chat) {
260
+ const config = loadVisionConfig(projectPath);
261
+ if (!config)
262
+ return false;
263
+ const prd = ralph.readPRD();
264
+ if (!prd)
265
+ return false;
266
+ const incomplete = prd.userStories.filter(s => {
267
+ if (s.passes)
268
+ return false;
269
+ // Don't count pending_approval stories as "available work"
270
+ if (s.tags?.includes("pending_approval"))
271
+ return false;
272
+ return true;
273
+ });
274
+ if (incomplete.length >= config.autoGenerateWhenBelow) {
275
+ return false; // Enough stories remain, no generation needed
276
+ }
277
+ // Trigger generation
278
+ const result = await generateStories(projectPath, ralph, chat, config);
279
+ return result.success && result.storiesGenerated > 0;
280
+ }
281
+ /**
282
+ * Approve auto-generated stories so the daemon will pick them up.
283
+ * Removes the "pending_approval" tag and updates notes.
284
+ */
285
+ export function approveGeneratedStories(ralph, storyIds) {
286
+ const prd = ralph.readPRD();
287
+ if (!prd)
288
+ return { approved: [], notFound: [] };
289
+ const approved = [];
290
+ const notFound = [];
291
+ const targetStories = storyIds
292
+ ? prd.userStories.filter(s => storyIds.includes(s.id))
293
+ : prd.userStories.filter(s => s.tags?.includes("pending_approval"));
294
+ if (storyIds) {
295
+ for (const id of storyIds) {
296
+ if (!prd.userStories.find(s => s.id === id)) {
297
+ notFound.push(id);
298
+ }
299
+ }
300
+ }
301
+ for (const story of targetStories) {
302
+ if (story.tags) {
303
+ story.tags = story.tags.filter(t => t !== "pending_approval");
304
+ }
305
+ if (story.notes === "AUTO_GENERATED — awaiting approval") {
306
+ story.notes = "AUTO_GENERATED — approved";
307
+ }
308
+ approved.push(story.id);
309
+ }
310
+ if (approved.length > 0) {
311
+ ralph.writePRD(prd);
312
+ }
313
+ return { approved, notFound };
314
+ }
315
+ //# sourceMappingURL=vision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vision.js","sourceRoot":"","sources":["../src/vision.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nightshift-mcp",
3
- "version": "2.1.2",
3
+ "version": "2.2.0",
4
4
  "description": "Agent teams and multi-agent orchestration across AI models via MCP. Coordinate Claude, Codex, Gemini, Vibe, and Goose with delegation, failovers, and autonomous workflows.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",