nightshift-mcp 1.1.1 → 2.0.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/README.md +979 -971
- package/dist/agent-spawner.js +85 -85
- package/dist/chat-manager.js +8 -8
- package/dist/cli.js +32 -32
- package/dist/daemon-manager.js +69 -69
- package/dist/daemon.d.ts +21 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +247 -47
- package/dist/daemon.js.map +1 -1
- package/dist/database.d.ts +139 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +503 -0
- package/dist/database.js.map +1 -0
- package/dist/index.js +121 -121
- package/dist/orchestrator.js +67 -67
- package/dist/ralph-manager.js +11 -11
- package/dist/ralph-manager.js.map +1 -1
- package/dist/tools/agents.js +84 -84
- package/dist/tools/utility.js +64 -64
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +56 -54
package/dist/tools/agents.js
CHANGED
|
@@ -85,22 +85,22 @@ export const spawnAgentTool = defineTool({
|
|
|
85
85
|
name: "spawn_agent",
|
|
86
86
|
category: "agents",
|
|
87
87
|
description: "Spawn another AI agent as a subprocess",
|
|
88
|
-
fullDescription: `Spawn another AI agent as a subprocess to work on a task. The agent runs to completion and returns results.
|
|
89
|
-
|
|
90
|
-
IMPORTANT — Timeout guidance (the default 300s is only good for simple tasks):
|
|
91
|
-
- Simple/quick tasks (hello, version check): 30-60s
|
|
92
|
-
- Code generation or small features: 300s (5 min, the default)
|
|
93
|
-
- Research with web search or codebase exploration: 600s (10 min)
|
|
94
|
-
- Full story implementation with tests: 600-900s (10-15 min)
|
|
95
|
-
- Complex multi-file refactors: 900-1200s (15-20 min)
|
|
96
|
-
If a task times out, retry with a LONGER timeout — do not retry with the same value.
|
|
97
|
-
|
|
98
|
-
Agent selection guide (only available agents will work — check list_available_agents first):
|
|
99
|
-
- claude: Best for complex logic, orchestration, nuanced judgment. Most capable but uses API credits.
|
|
100
|
-
- codex: Good for code generation and straightforward implementation. Uses OpenAI credits.
|
|
101
|
-
- gemini: Good for research, planning, code review. Uses Google credits.
|
|
102
|
-
- goose: Flexible — can use any model via OpenRouter or Ollama (local/free). Good general-purpose agent.
|
|
103
|
-
- ollama: Runs via local Ollama models. Free but less capable. Best for simple, well-defined tasks.
|
|
88
|
+
fullDescription: `Spawn another AI agent as a subprocess to work on a task. The agent runs to completion and returns results.
|
|
89
|
+
|
|
90
|
+
IMPORTANT — Timeout guidance (the default 300s is only good for simple tasks):
|
|
91
|
+
- Simple/quick tasks (hello, version check): 30-60s
|
|
92
|
+
- Code generation or small features: 300s (5 min, the default)
|
|
93
|
+
- Research with web search or codebase exploration: 600s (10 min)
|
|
94
|
+
- Full story implementation with tests: 600-900s (10-15 min)
|
|
95
|
+
- Complex multi-file refactors: 900-1200s (15-20 min)
|
|
96
|
+
If a task times out, retry with a LONGER timeout — do not retry with the same value.
|
|
97
|
+
|
|
98
|
+
Agent selection guide (only available agents will work — check list_available_agents first):
|
|
99
|
+
- claude: Best for complex logic, orchestration, nuanced judgment. Most capable but uses API credits.
|
|
100
|
+
- codex: Good for code generation and straightforward implementation. Uses OpenAI credits.
|
|
101
|
+
- gemini: Good for research, planning, code review. Uses Google credits.
|
|
102
|
+
- goose: Flexible — can use any model via OpenRouter or Ollama (local/free). Good general-purpose agent.
|
|
103
|
+
- ollama: Runs via local Ollama models. Free but less capable. Best for simple, well-defined tasks.
|
|
104
104
|
- vibe: Follows detailed specs well. Good for tasks with clear acceptance criteria.`,
|
|
105
105
|
inputSchema: z.object({
|
|
106
106
|
agent: z.enum(AGENT_TYPES).describe("Which agent to spawn. IMPORTANT: only use agents confirmed available by list_available_agents or preflight check. Do NOT guess."),
|
|
@@ -218,8 +218,8 @@ export const delegateStory = defineTool({
|
|
|
218
218
|
name: "delegate_story",
|
|
219
219
|
category: "agents",
|
|
220
220
|
description: "Delegate a user story to another AI agent",
|
|
221
|
-
fullDescription: `Delegate a user story to another AI agent. Claims the story, spawns the agent with full context, and tracks completion. The spawned agent works autonomously.
|
|
222
|
-
|
|
221
|
+
fullDescription: `Delegate a user story to another AI agent. Claims the story, spawns the agent with full context, and tracks completion. The spawned agent works autonomously.
|
|
222
|
+
|
|
223
223
|
IMPORTANT: Only delegate to agents that are actually available. Use list_available_agents or the preflight check to verify before choosing. If the agent you want isn't available, the tool will return an error with a list of agents that ARE available — use one of those instead.`,
|
|
224
224
|
inputSchema: z.object({
|
|
225
225
|
agent: z.enum(AGENT_TYPES).describe("Which agent to delegate to. MUST be an available agent — check list_available_agents first."),
|
|
@@ -274,31 +274,31 @@ IMPORTANT: Only delegate to agents that are actually available. Use list_availab
|
|
|
274
274
|
// Resolve the nightshift CLI command for this project
|
|
275
275
|
const ns = getNightshiftCliCommand(ctx.projectPath);
|
|
276
276
|
// Build delegation prompt
|
|
277
|
-
const delegationPrompt = `You are an autonomous coding agent. Complete this user story:
|
|
278
|
-
|
|
279
|
-
## Story: ${story.id} - ${story.title || "(untitled)"}
|
|
280
|
-
|
|
281
|
-
${story.description || "(No description provided)"}
|
|
282
|
-
|
|
283
|
-
### Acceptance Criteria:
|
|
284
|
-
${Array.isArray(story.acceptanceCriteria) && story.acceptanceCriteria.length > 0 ? story.acceptanceCriteria.map((c) => `- ${c}`).join("\n") : "(No acceptance criteria specified)"}
|
|
285
|
-
|
|
286
|
-
### Relevant Context:
|
|
287
|
-
${contextSection}
|
|
288
|
-
|
|
289
|
-
### Recent Chat:
|
|
290
|
-
${recentChat.map((m) => `[${m.agent}] ${m.type}: ${m.content.substring(0, 200)}`).join("\n")}
|
|
291
|
-
|
|
292
|
-
### Instructions:
|
|
293
|
-
1. Implement the acceptance criteria
|
|
294
|
-
2. Run quality checks (typecheck, lint, test)
|
|
295
|
-
3. Commit with message: "feat: ${story.id} - ${story.title}"
|
|
296
|
-
4. Use the nightshift CLI to coordinate (works without MCP):
|
|
297
|
-
- Post updates: ${ns} chat --agent ${agent} --type STATUS_UPDATE --message "your progress"
|
|
298
|
-
- When done: ${ns} complete ${story.id} --agent ${agent} --summary "what you did" --learnings "key insights"
|
|
299
|
-
- If you hit limits: ${ns} failover --agent ${agent} --task "${story.id}" --message "reason"
|
|
300
|
-
(If nightshift MCP tools are available, you can use those instead — they do the same thing.)
|
|
301
|
-
|
|
277
|
+
const delegationPrompt = `You are an autonomous coding agent. Complete this user story:
|
|
278
|
+
|
|
279
|
+
## Story: ${story.id} - ${story.title || "(untitled)"}
|
|
280
|
+
|
|
281
|
+
${story.description || "(No description provided)"}
|
|
282
|
+
|
|
283
|
+
### Acceptance Criteria:
|
|
284
|
+
${Array.isArray(story.acceptanceCriteria) && story.acceptanceCriteria.length > 0 ? story.acceptanceCriteria.map((c) => `- ${c}`).join("\n") : "(No acceptance criteria specified)"}
|
|
285
|
+
|
|
286
|
+
### Relevant Context:
|
|
287
|
+
${contextSection}
|
|
288
|
+
|
|
289
|
+
### Recent Chat:
|
|
290
|
+
${recentChat.map((m) => `[${m.agent}] ${m.type}: ${m.content.substring(0, 200)}`).join("\n")}
|
|
291
|
+
|
|
292
|
+
### Instructions:
|
|
293
|
+
1. Implement the acceptance criteria
|
|
294
|
+
2. Run quality checks (typecheck, lint, test)
|
|
295
|
+
3. Commit with message: "feat: ${story.id} - ${story.title}"
|
|
296
|
+
4. Use the nightshift CLI to coordinate (works without MCP):
|
|
297
|
+
- Post updates: ${ns} chat --agent ${agent} --type STATUS_UPDATE --message "your progress"
|
|
298
|
+
- When done: ${ns} complete ${story.id} --agent ${agent} --summary "what you did" --learnings "key insights"
|
|
299
|
+
- If you hit limits: ${ns} failover --agent ${agent} --task "${story.id}" --message "reason"
|
|
300
|
+
(If nightshift MCP tools are available, you can use those instead — they do the same thing.)
|
|
301
|
+
|
|
302
302
|
Begin implementation now.`;
|
|
303
303
|
// Post delegation to chat
|
|
304
304
|
ctx.chatManager.writeMessage({
|
|
@@ -389,8 +389,8 @@ export const delegateResearch = defineTool({
|
|
|
389
389
|
name: "delegate_research",
|
|
390
390
|
category: "agents",
|
|
391
391
|
description: "Delegate research/planning task to an available agent",
|
|
392
|
-
fullDescription: `Delegate a research or planning task to an AI agent. Automatically picks the best AVAILABLE agent (prefers gemini > claude > ollama > codex — but only agents that are actually installed and runnable). You can override the agent selection. Returns findings that can inform implementation decisions.
|
|
393
|
-
|
|
392
|
+
fullDescription: `Delegate a research or planning task to an AI agent. Automatically picks the best AVAILABLE agent (prefers gemini > claude > ollama > codex — but only agents that are actually installed and runnable). You can override the agent selection. Returns findings that can inform implementation decisions.
|
|
393
|
+
|
|
394
394
|
Default timeout is 10 minutes. Research tasks involving web search or large codebase exploration may need the full duration.`,
|
|
395
395
|
inputSchema: z.object({
|
|
396
396
|
task: z.string().describe("The research/planning task (e.g., 'Analyze authentication patterns in codebase', 'Review PR for security issues', 'Plan architecture for feature X')"),
|
|
@@ -445,34 +445,34 @@ Default timeout is 10 minutes. Research tasks involving web search or large code
|
|
|
445
445
|
// Resolve the nightshift CLI command for this project
|
|
446
446
|
const ns = getNightshiftCliCommand(ctx.projectPath);
|
|
447
447
|
// Build research prompt optimized for read-only analysis
|
|
448
|
-
const researchPrompt = `You are a research and planning agent. Your task is to analyze and provide recommendations.
|
|
449
|
-
|
|
450
|
-
## Task
|
|
451
|
-
${task}
|
|
452
|
-
|
|
453
|
-
${context ? `## Additional Context\n${context}\n` : ""}
|
|
454
|
-
## Project Context
|
|
455
|
-
${prd ? `Project: ${prd.projectName || prd.project || "Unknown"}\nDescription: ${prd.description}` : "No PRD found."}
|
|
456
|
-
|
|
457
|
-
## Relevant Context from Previous Work:
|
|
458
|
-
${contextSection}
|
|
459
|
-
|
|
460
|
-
## Recent Agent Communication
|
|
461
|
-
${recentChat.map((m) => `[${m.agent}] ${m.type}: ${m.content.substring(0, 200)}`).join("\n")}
|
|
462
|
-
|
|
463
|
-
## Instructions
|
|
464
|
-
1. Analyze the codebase and gather relevant information
|
|
465
|
-
2. Use read_file, glob, and other read-only tools to explore
|
|
466
|
-
3. Provide clear findings and actionable recommendations
|
|
467
|
-
4. Structure your response as:
|
|
468
|
-
- **Summary**: Brief overview of findings
|
|
469
|
-
- **Details**: Detailed analysis
|
|
470
|
-
- **Recommendations**: Specific actionable suggestions
|
|
471
|
-
- **Considerations**: Trade-offs or things to watch out for
|
|
472
|
-
|
|
473
|
-
5. Post findings: ${ns} chat --agent ${selectedAgent} --type INFO --message "your findings here"
|
|
474
|
-
(If nightshift MCP tools are available, you can use write_robot_chat and store_context instead.)
|
|
475
|
-
|
|
448
|
+
const researchPrompt = `You are a research and planning agent. Your task is to analyze and provide recommendations.
|
|
449
|
+
|
|
450
|
+
## Task
|
|
451
|
+
${task}
|
|
452
|
+
|
|
453
|
+
${context ? `## Additional Context\n${context}\n` : ""}
|
|
454
|
+
## Project Context
|
|
455
|
+
${prd ? `Project: ${prd.projectName || prd.project || "Unknown"}\nDescription: ${prd.description}` : "No PRD found."}
|
|
456
|
+
|
|
457
|
+
## Relevant Context from Previous Work:
|
|
458
|
+
${contextSection}
|
|
459
|
+
|
|
460
|
+
## Recent Agent Communication
|
|
461
|
+
${recentChat.map((m) => `[${m.agent}] ${m.type}: ${m.content.substring(0, 200)}`).join("\n")}
|
|
462
|
+
|
|
463
|
+
## Instructions
|
|
464
|
+
1. Analyze the codebase and gather relevant information
|
|
465
|
+
2. Use read_file, glob, and other read-only tools to explore
|
|
466
|
+
3. Provide clear findings and actionable recommendations
|
|
467
|
+
4. Structure your response as:
|
|
468
|
+
- **Summary**: Brief overview of findings
|
|
469
|
+
- **Details**: Detailed analysis
|
|
470
|
+
- **Recommendations**: Specific actionable suggestions
|
|
471
|
+
- **Considerations**: Trade-offs or things to watch out for
|
|
472
|
+
|
|
473
|
+
5. Post findings: ${ns} chat --agent ${selectedAgent} --type INFO --message "your findings here"
|
|
474
|
+
(If nightshift MCP tools are available, you can use write_robot_chat and store_context instead.)
|
|
475
|
+
|
|
476
476
|
Focus on analysis and recommendations. Do NOT attempt to write or modify files.`;
|
|
477
477
|
// Post delegation to chat
|
|
478
478
|
await ctx.chatManager.writeMessage({
|
|
@@ -547,17 +547,17 @@ export const orchestrate = defineTool({
|
|
|
547
547
|
name: "orchestrate",
|
|
548
548
|
category: "agents",
|
|
549
549
|
description: "Start autonomous orchestration to complete the PRD",
|
|
550
|
-
fullDescription: `Start autonomous orchestration to complete all stories and bugs in the PRD.
|
|
551
|
-
|
|
552
|
-
This is the MAIN entry point for autonomous development. It:
|
|
553
|
-
1. Auto-starts the daemon (background process that survives agent failures)
|
|
554
|
-
2. The daemon orchestrates all work, spawning agents as needed
|
|
555
|
-
3. Handles agent timeouts, rate limits, and failovers automatically
|
|
556
|
-
4. Posts READY_TO_TEST when all work is complete
|
|
557
|
-
|
|
558
|
-
The daemon runs independently - even if this agent hits rate limits, work continues.
|
|
559
|
-
|
|
560
|
-
Use mode="daemon" (default) for resilient autonomous operation.
|
|
550
|
+
fullDescription: `Start autonomous orchestration to complete all stories and bugs in the PRD.
|
|
551
|
+
|
|
552
|
+
This is the MAIN entry point for autonomous development. It:
|
|
553
|
+
1. Auto-starts the daemon (background process that survives agent failures)
|
|
554
|
+
2. The daemon orchestrates all work, spawning agents as needed
|
|
555
|
+
3. Handles agent timeouts, rate limits, and failovers automatically
|
|
556
|
+
4. Posts READY_TO_TEST when all work is complete
|
|
557
|
+
|
|
558
|
+
The daemon runs independently - even if this agent hits rate limits, work continues.
|
|
559
|
+
|
|
560
|
+
Use mode="daemon" (default) for resilient autonomous operation.
|
|
561
561
|
Use mode="inline" only for quick interactive sessions where you're actively monitoring.`,
|
|
562
562
|
inputSchema: z.object({
|
|
563
563
|
mode: z.enum(["daemon", "inline"]).optional().describe("Orchestration mode: 'daemon' (default, resilient - survives agent failures) or 'inline' (runs in this agent, for quick interactive work)"),
|
package/dist/tools/utility.js
CHANGED
|
@@ -97,20 +97,20 @@ export const nightshiftSetup = defineTool({
|
|
|
97
97
|
response += `## Suggestions\n${suggestions.map(s => `- ${s}`).join("\n")}\n\n`;
|
|
98
98
|
}
|
|
99
99
|
response += `## Agent Configuration\n\n`;
|
|
100
|
-
response += `**Claude Code** (~/.claude.json):\n\`\`\`json
|
|
101
|
-
{
|
|
102
|
-
"mcpServers": {
|
|
103
|
-
"nightshift": {
|
|
104
|
-
"command": "nightshift-mcp",
|
|
105
|
-
"args": ["${ctx.projectPath}"]
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
100
|
+
response += `**Claude Code** (~/.claude.json):\n\`\`\`json
|
|
101
|
+
{
|
|
102
|
+
"mcpServers": {
|
|
103
|
+
"nightshift": {
|
|
104
|
+
"command": "nightshift-mcp",
|
|
105
|
+
"args": ["${ctx.projectPath}"]
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
109
|
\`\`\`\n\n`;
|
|
110
|
-
response += `**Codex** (~/.codex/config.toml):\n\`\`\`toml
|
|
111
|
-
[mcp_servers.nightshift]
|
|
112
|
-
command = "nightshift-mcp"
|
|
113
|
-
args = ["${ctx.projectPath}"]
|
|
110
|
+
response += `**Codex** (~/.codex/config.toml):\n\`\`\`toml
|
|
111
|
+
[mcp_servers.nightshift]
|
|
112
|
+
command = "nightshift-mcp"
|
|
113
|
+
args = ["${ctx.projectPath}"]
|
|
114
114
|
\`\`\`\n\n`;
|
|
115
115
|
if (showExamples) {
|
|
116
116
|
response += `## PRD Schema Reference\n\n`;
|
|
@@ -136,58 +136,58 @@ args = ["${ctx.projectPath}"]
|
|
|
136
136
|
response += `- Use \`acceptanceCriteria\`, NOT \`acceptance_criteria\`, \`criteria\`, or \`requirements\`\n`;
|
|
137
137
|
response += `- Use \`passes: false\` to mark incomplete, NOT \`status: "pending"\`\n`;
|
|
138
138
|
response += `- Place prd.json in the **project root**, NOT in .robot-chat/\n\n`;
|
|
139
|
-
response += `### Example prd.json\n\`\`\`json
|
|
140
|
-
{
|
|
141
|
-
"project": "MyProject",
|
|
142
|
-
"description": "Brief project description",
|
|
143
|
-
"userStories": [
|
|
144
|
-
{
|
|
145
|
-
"id": "US-001",
|
|
146
|
-
"title": "Implement login page",
|
|
147
|
-
"description": "Create a login page with email/password authentication",
|
|
148
|
-
"acceptanceCriteria": [
|
|
149
|
-
"Login form with email and password fields",
|
|
150
|
-
"Form validation with error messages",
|
|
151
|
-
"Redirects to dashboard on success"
|
|
152
|
-
],
|
|
153
|
-
"priority": 1,
|
|
154
|
-
"passes": false,
|
|
155
|
-
"notes": ""
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
"id": "US-002",
|
|
159
|
-
"title": "Add logout button",
|
|
160
|
-
"description": "Add a logout button to the navigation bar",
|
|
161
|
-
"acceptanceCriteria": [
|
|
162
|
-
"Logout button visible when authenticated",
|
|
163
|
-
"Clears session and redirects to login"
|
|
164
|
-
],
|
|
165
|
-
"priority": 2,
|
|
166
|
-
"passes": false,
|
|
167
|
-
"notes": ""
|
|
168
|
-
}
|
|
169
|
-
]
|
|
170
|
-
}
|
|
139
|
+
response += `### Example prd.json\n\`\`\`json
|
|
140
|
+
{
|
|
141
|
+
"project": "MyProject",
|
|
142
|
+
"description": "Brief project description",
|
|
143
|
+
"userStories": [
|
|
144
|
+
{
|
|
145
|
+
"id": "US-001",
|
|
146
|
+
"title": "Implement login page",
|
|
147
|
+
"description": "Create a login page with email/password authentication",
|
|
148
|
+
"acceptanceCriteria": [
|
|
149
|
+
"Login form with email and password fields",
|
|
150
|
+
"Form validation with error messages",
|
|
151
|
+
"Redirects to dashboard on success"
|
|
152
|
+
],
|
|
153
|
+
"priority": 1,
|
|
154
|
+
"passes": false,
|
|
155
|
+
"notes": ""
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"id": "US-002",
|
|
159
|
+
"title": "Add logout button",
|
|
160
|
+
"description": "Add a logout button to the navigation bar",
|
|
161
|
+
"acceptanceCriteria": [
|
|
162
|
+
"Logout button visible when authenticated",
|
|
163
|
+
"Clears session and redirects to login"
|
|
164
|
+
],
|
|
165
|
+
"priority": 2,
|
|
166
|
+
"passes": false,
|
|
167
|
+
"notes": ""
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
171
|
\`\`\`\n\n`;
|
|
172
|
-
response += `### Example bugs.json\n\`\`\`json
|
|
173
|
-
{
|
|
174
|
-
"project": "MyProject",
|
|
175
|
-
"bugs": [
|
|
176
|
-
{
|
|
177
|
-
"id": "BUG-001",
|
|
178
|
-
"title": "Login fails on mobile Safari",
|
|
179
|
-
"description": "Login button unresponsive on iOS Safari",
|
|
180
|
-
"stepsToReproduce": [
|
|
181
|
-
"Open app on iOS Safari",
|
|
182
|
-
"Enter credentials",
|
|
183
|
-
"Tap login button",
|
|
184
|
-
"Nothing happens"
|
|
185
|
-
],
|
|
186
|
-
"priority": 1,
|
|
187
|
-
"fixed": false
|
|
188
|
-
}
|
|
189
|
-
]
|
|
190
|
-
}
|
|
172
|
+
response += `### Example bugs.json\n\`\`\`json
|
|
173
|
+
{
|
|
174
|
+
"project": "MyProject",
|
|
175
|
+
"bugs": [
|
|
176
|
+
{
|
|
177
|
+
"id": "BUG-001",
|
|
178
|
+
"title": "Login fails on mobile Safari",
|
|
179
|
+
"description": "Login button unresponsive on iOS Safari",
|
|
180
|
+
"stepsToReproduce": [
|
|
181
|
+
"Open app on iOS Safari",
|
|
182
|
+
"Enter credentials",
|
|
183
|
+
"Tap login button",
|
|
184
|
+
"Nothing happens"
|
|
185
|
+
],
|
|
186
|
+
"priority": 1,
|
|
187
|
+
"fixed": false
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
191
|
\`\`\`\n`;
|
|
192
192
|
}
|
|
193
193
|
return {
|
package/dist/types.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export interface UserStory {
|
|
|
15
15
|
notes: string;
|
|
16
16
|
dependsOn?: string[];
|
|
17
17
|
tags?: string[];
|
|
18
|
+
[key: string]: unknown;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
21
|
* A bug report (similar structure to UserStory for consistency)
|
|
@@ -45,6 +46,7 @@ export interface PRD {
|
|
|
45
46
|
branchName?: string;
|
|
46
47
|
description: string;
|
|
47
48
|
userStories: UserStory[];
|
|
49
|
+
[key: string]: unknown;
|
|
48
50
|
}
|
|
49
51
|
/**
|
|
50
52
|
* A parsed chat message
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,eAAe,GACf,eAAe,GACf,SAAS,GACT,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,aAAa,GACb,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,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,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,54 +1,56 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "nightshift-mcp",
|
|
3
|
-
"version": "
|
|
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
|
-
"type": "module",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"bin": {
|
|
8
|
-
"nightshift-mcp": "./dist/index.js",
|
|
9
|
-
"nightshift-daemon": "./dist/daemon.js",
|
|
10
|
-
"nightshift": "./dist/cli.js"
|
|
11
|
-
},
|
|
12
|
-
"files": [
|
|
13
|
-
"dist",
|
|
14
|
-
"README.md"
|
|
15
|
-
],
|
|
16
|
-
"scripts": {
|
|
17
|
-
"build": "tsc",
|
|
18
|
-
"dev": "tsc --watch",
|
|
19
|
-
"start": "node dist/index.js",
|
|
20
|
-
"test": "vitest run",
|
|
21
|
-
"test:watch": "vitest",
|
|
22
|
-
"prepare": "npm run build",
|
|
23
|
-
"prepublishOnly": "npm run build"
|
|
24
|
-
},
|
|
25
|
-
"keywords": [
|
|
26
|
-
"mcp",
|
|
27
|
-
"model-context-protocol",
|
|
28
|
-
"ai-agents",
|
|
29
|
-
"multi-agent",
|
|
30
|
-
"agent-teams",
|
|
31
|
-
"agentic",
|
|
32
|
-
"claude",
|
|
33
|
-
"codex",
|
|
34
|
-
"gemini",
|
|
35
|
-
"vibe",
|
|
36
|
-
"orchestration",
|
|
37
|
-
"agent-orchestration",
|
|
38
|
-
"autonomous-agents",
|
|
39
|
-
"agent-coordination",
|
|
40
|
-
"nightshift"
|
|
41
|
-
],
|
|
42
|
-
"license": "MIT",
|
|
43
|
-
"dependencies": {
|
|
44
|
-
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"@types/
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "nightshift-mcp",
|
|
3
|
+
"version": "2.0.0",
|
|
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
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"nightshift-mcp": "./dist/index.js",
|
|
9
|
+
"nightshift-daemon": "./dist/daemon.js",
|
|
10
|
+
"nightshift": "./dist/cli.js"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"README.md"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"dev": "tsc --watch",
|
|
19
|
+
"start": "node dist/index.js",
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"test:watch": "vitest",
|
|
22
|
+
"prepare": "npm run build",
|
|
23
|
+
"prepublishOnly": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"mcp",
|
|
27
|
+
"model-context-protocol",
|
|
28
|
+
"ai-agents",
|
|
29
|
+
"multi-agent",
|
|
30
|
+
"agent-teams",
|
|
31
|
+
"agentic",
|
|
32
|
+
"claude",
|
|
33
|
+
"codex",
|
|
34
|
+
"gemini",
|
|
35
|
+
"vibe",
|
|
36
|
+
"orchestration",
|
|
37
|
+
"agent-orchestration",
|
|
38
|
+
"autonomous-agents",
|
|
39
|
+
"agent-coordination",
|
|
40
|
+
"nightshift"
|
|
41
|
+
],
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
45
|
+
"better-sqlite3": "^12.8.0",
|
|
46
|
+
"proper-lockfile": "^4.1.2",
|
|
47
|
+
"zod": "^3.25.0"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
51
|
+
"@types/node": "^20.0.0",
|
|
52
|
+
"@types/proper-lockfile": "^4.1.4",
|
|
53
|
+
"typescript": "^5.0.0",
|
|
54
|
+
"vitest": "^1.0.0"
|
|
55
|
+
}
|
|
56
|
+
}
|