nightshift-mcp 1.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.
Files changed (74) hide show
  1. package/README.md +670 -0
  2. package/dist/agent-spawner.d.ts +55 -0
  3. package/dist/agent-spawner.d.ts.map +1 -0
  4. package/dist/agent-spawner.js +468 -0
  5. package/dist/agent-spawner.js.map +1 -0
  6. package/dist/chat-manager.d.ts +72 -0
  7. package/dist/chat-manager.d.ts.map +1 -0
  8. package/dist/chat-manager.js +331 -0
  9. package/dist/chat-manager.js.map +1 -0
  10. package/dist/daemon.d.ts +65 -0
  11. package/dist/daemon.d.ts.map +1 -0
  12. package/dist/daemon.js +563 -0
  13. package/dist/daemon.js.map +1 -0
  14. package/dist/file-lock.d.ts +41 -0
  15. package/dist/file-lock.d.ts.map +1 -0
  16. package/dist/file-lock.js +157 -0
  17. package/dist/file-lock.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +2433 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/ralph-manager.d.ts +148 -0
  23. package/dist/ralph-manager.d.ts.map +1 -0
  24. package/dist/ralph-manager.js +399 -0
  25. package/dist/ralph-manager.js.map +1 -0
  26. package/dist/tool-registry.d.ts +130 -0
  27. package/dist/tool-registry.d.ts.map +1 -0
  28. package/dist/tool-registry.js +280 -0
  29. package/dist/tool-registry.js.map +1 -0
  30. package/dist/tools/agents.d.ts +7 -0
  31. package/dist/tools/agents.d.ts.map +1 -0
  32. package/dist/tools/agents.js +366 -0
  33. package/dist/tools/agents.js.map +1 -0
  34. package/dist/tools/bugs.d.ts +6 -0
  35. package/dist/tools/bugs.d.ts.map +1 -0
  36. package/dist/tools/bugs.js +184 -0
  37. package/dist/tools/bugs.js.map +1 -0
  38. package/dist/tools/chat.d.ts +10 -0
  39. package/dist/tools/chat.d.ts.map +1 -0
  40. package/dist/tools/chat.js +287 -0
  41. package/dist/tools/chat.js.map +1 -0
  42. package/dist/tools/index.d.ts +33 -0
  43. package/dist/tools/index.d.ts.map +1 -0
  44. package/dist/tools/index.js +51 -0
  45. package/dist/tools/index.js.map +1 -0
  46. package/dist/tools/prd.d.ts +8 -0
  47. package/dist/tools/prd.d.ts.map +1 -0
  48. package/dist/tools/prd.js +275 -0
  49. package/dist/tools/prd.js.map +1 -0
  50. package/dist/tools/progress.d.ts +5 -0
  51. package/dist/tools/progress.d.ts.map +1 -0
  52. package/dist/tools/progress.js +81 -0
  53. package/dist/tools/progress.js.map +1 -0
  54. package/dist/tools/savepoints.d.ts +5 -0
  55. package/dist/tools/savepoints.d.ts.map +1 -0
  56. package/dist/tools/savepoints.js +100 -0
  57. package/dist/tools/savepoints.js.map +1 -0
  58. package/dist/tools/utility.d.ts +4 -0
  59. package/dist/tools/utility.d.ts.map +1 -0
  60. package/dist/tools/utility.js +375 -0
  61. package/dist/tools/utility.js.map +1 -0
  62. package/dist/tools/workflow.d.ts +10 -0
  63. package/dist/tools/workflow.d.ts.map +1 -0
  64. package/dist/tools/workflow.js +321 -0
  65. package/dist/tools/workflow.js.map +1 -0
  66. package/dist/types.d.ts +105 -0
  67. package/dist/types.d.ts.map +1 -0
  68. package/dist/types.js +2 -0
  69. package/dist/types.js.map +1 -0
  70. package/dist/workflow-manager.d.ts +154 -0
  71. package/dist/workflow-manager.d.ts.map +1 -0
  72. package/dist/workflow-manager.js +356 -0
  73. package/dist/workflow-manager.js.map +1 -0
  74. package/package.json +48 -0
@@ -0,0 +1,321 @@
1
+ import { z } from "zod";
2
+ import { defineTool } from "../tool-registry.js";
3
+ const WORKFLOW_PHASES = ["research", "decisions", "planning", "build", "test", "report", "complete"];
4
+ export const initWorkflow = defineTool({
5
+ name: "init_workflow",
6
+ category: "workflow",
7
+ description: "Initialize a new workflow with project goal",
8
+ fullDescription: "Initialize a new workflow with project goal and phases. Creates workflow.json for tracking state.",
9
+ inputSchema: z.object({
10
+ projectGoal: z.string().describe("High-level goal of the project"),
11
+ phases: z.array(z.enum(WORKFLOW_PHASES)).optional().describe("Custom phases (default: research, decisions, planning, build, test, report)"),
12
+ }),
13
+ handler: async ({ projectGoal, phases }, ctx) => {
14
+ try {
15
+ const state = await ctx.workflowManager.initWorkflow(projectGoal, phases);
16
+ return {
17
+ content: [{
18
+ type: "text",
19
+ text: `Workflow initialized!\n\nProject Goal: ${projectGoal}\nPhases: ${state.phases.map((p) => p.name).join(" → ")}\nCurrent Phase: ${state.currentPhase}\n\nWorkflow file: ${ctx.workflowManager.getWorkflowPath()}`,
20
+ }],
21
+ };
22
+ }
23
+ catch (error) {
24
+ return {
25
+ content: [{ type: "text", text: `Error initializing workflow: ${error instanceof Error ? error.message : String(error)}` }],
26
+ isError: true,
27
+ };
28
+ }
29
+ },
30
+ });
31
+ export const getWorkflowState = defineTool({
32
+ name: "get_workflow_state",
33
+ category: "workflow",
34
+ description: "Get current workflow state and progress",
35
+ fullDescription: "Get the current workflow state including phase, assignments, and decisions.",
36
+ inputSchema: z.object({}),
37
+ handler: async (_params, ctx) => {
38
+ try {
39
+ const state = ctx.workflowManager.readWorkflow();
40
+ if (!state) {
41
+ return {
42
+ content: [{ type: "text", text: "No workflow initialized. Use init_workflow to start a new workflow." }],
43
+ };
44
+ }
45
+ const summary = ctx.workflowManager.getWorkflowSummary();
46
+ const activeAssignments = ctx.workflowManager.getActiveAssignments();
47
+ let response = `# Workflow State\n\n`;
48
+ response += `**Project Goal:** ${state.projectGoal}\n`;
49
+ response += `**Current Phase:** ${state.currentPhase}\n`;
50
+ response += `**Progress:** ${summary?.phaseProgress}\n\n`;
51
+ response += `## Phases\n`;
52
+ for (const phase of state.phases) {
53
+ const status = phase.status === "completed" ? "✓" : phase.status === "in_progress" ? "→" : "○";
54
+ response += `${status} ${phase.name}`;
55
+ if (phase.startedAt)
56
+ response += ` (started: ${phase.startedAt})`;
57
+ if (phase.completedAt)
58
+ response += ` (completed: ${phase.completedAt})`;
59
+ response += `\n`;
60
+ }
61
+ response += `\n## Active Assignments\n`;
62
+ const assignmentEntries = Object.entries(activeAssignments);
63
+ if (assignmentEntries.length === 0) {
64
+ response += `No active assignments.\n`;
65
+ }
66
+ else {
67
+ for (const [storyId, assignment] of assignmentEntries) {
68
+ response += `- ${storyId}: ${assignment.agent} (since ${assignment.claimedAt})\n`;
69
+ }
70
+ }
71
+ response += `\n## Decisions (${state.decisions.length} total)\n`;
72
+ if (state.decisions.length === 0) {
73
+ response += `No decisions recorded yet.\n`;
74
+ }
75
+ else {
76
+ for (const decision of state.decisions.slice(-5)) {
77
+ response += `- ${decision.id}: ${decision.topic} → ${decision.chosen} (by ${decision.decidedBy})\n`;
78
+ }
79
+ if (state.decisions.length > 5) {
80
+ response += `... and ${state.decisions.length - 5} more\n`;
81
+ }
82
+ }
83
+ return {
84
+ content: [{ type: "text", text: response }],
85
+ };
86
+ }
87
+ catch (error) {
88
+ return {
89
+ content: [{ type: "text", text: `Error reading workflow: ${error instanceof Error ? error.message : String(error)}` }],
90
+ isError: true,
91
+ };
92
+ }
93
+ },
94
+ });
95
+ export const advancePhase = defineTool({
96
+ name: "advance_phase",
97
+ category: "workflow",
98
+ description: "Advance to the next workflow phase",
99
+ fullDescription: "Advance to the next workflow phase. Use when current phase's exit criteria are met.",
100
+ inputSchema: z.object({}),
101
+ handler: async (_params, ctx) => {
102
+ try {
103
+ const result = await ctx.workflowManager.advancePhase();
104
+ if (!result) {
105
+ const currentPhase = ctx.workflowManager.getCurrentPhase();
106
+ return {
107
+ content: [{
108
+ type: "text",
109
+ text: currentPhase
110
+ ? `Already at final phase: ${currentPhase}. Cannot advance further.`
111
+ : "No workflow initialized. Use init_workflow first.",
112
+ }],
113
+ isError: !currentPhase,
114
+ };
115
+ }
116
+ // Post to chat about phase change
117
+ await ctx.chatManager.writeMessage({
118
+ agent: "Workflow",
119
+ type: "STATUS_UPDATE",
120
+ content: `Phase advanced: ${result.previousPhase} → ${result.newPhase}`,
121
+ });
122
+ return {
123
+ content: [{ type: "text", text: `Phase advanced!\n\nPrevious: ${result.previousPhase}\nCurrent: ${result.newPhase}` }],
124
+ };
125
+ }
126
+ catch (error) {
127
+ return {
128
+ content: [{ type: "text", text: `Error advancing phase: ${error instanceof Error ? error.message : String(error)}` }],
129
+ isError: true,
130
+ };
131
+ }
132
+ },
133
+ });
134
+ export const setPhase = defineTool({
135
+ name: "set_phase",
136
+ category: "workflow",
137
+ description: "Set the workflow to a specific phase",
138
+ fullDescription: "Set the workflow to a specific phase (for manual control or recovery).",
139
+ inputSchema: z.object({
140
+ phase: z.enum(WORKFLOW_PHASES).describe("Target phase to set"),
141
+ }),
142
+ handler: async ({ phase }, ctx) => {
143
+ try {
144
+ const success = await ctx.workflowManager.setPhase(phase);
145
+ if (!success) {
146
+ return {
147
+ content: [{ type: "text", text: "Failed to set phase. Ensure workflow is initialized and phase is valid." }],
148
+ isError: true,
149
+ };
150
+ }
151
+ // Post to chat about phase change
152
+ await ctx.chatManager.writeMessage({
153
+ agent: "Workflow",
154
+ type: "STATUS_UPDATE",
155
+ content: `Phase manually set to: ${phase}`,
156
+ });
157
+ return {
158
+ content: [{ type: "text", text: `Phase set to: ${phase}` }],
159
+ };
160
+ }
161
+ catch (error) {
162
+ return {
163
+ content: [{ type: "text", text: `Error setting phase: ${error instanceof Error ? error.message : String(error)}` }],
164
+ isError: true,
165
+ };
166
+ }
167
+ },
168
+ });
169
+ export const recordDecision = defineTool({
170
+ name: "record_decision",
171
+ category: "workflow",
172
+ description: "Record a strategic decision",
173
+ fullDescription: "Record a strategic decision made during the project. Helps track rationale for future reference.",
174
+ inputSchema: z.object({
175
+ topic: z.string().describe("What the decision is about (e.g., 'Authentication method')"),
176
+ options: z.array(z.string()).describe("Options that were considered"),
177
+ chosen: z.string().describe("The option that was chosen"),
178
+ rationale: z.string().describe("Why this option was chosen"),
179
+ decidedBy: z.string().describe("Agent or person who made the decision"),
180
+ }),
181
+ handler: async ({ topic, options, chosen, rationale, decidedBy }, ctx) => {
182
+ try {
183
+ const decision = await ctx.workflowManager.recordDecision(topic, options, chosen, rationale, decidedBy);
184
+ if (!decision) {
185
+ return {
186
+ content: [{ type: "text", text: "Failed to record decision. Ensure workflow is initialized with init_workflow first." }],
187
+ isError: true,
188
+ };
189
+ }
190
+ // Post to chat about decision
191
+ await ctx.chatManager.writeMessage({
192
+ agent: decidedBy,
193
+ type: "INFO",
194
+ content: `Decision recorded: ${decision.id}\nTopic: ${topic}\nChosen: ${chosen}\nRationale: ${rationale}`,
195
+ });
196
+ return {
197
+ content: [{ type: "text", text: `Decision recorded!\n\nID: ${decision.id}\nTopic: ${topic}\nOptions: ${options.join(", ")}\nChosen: ${chosen}\nRationale: ${rationale}\nDecided by: ${decidedBy}` }],
198
+ };
199
+ }
200
+ catch (error) {
201
+ return {
202
+ content: [{ type: "text", text: `Error recording decision: ${error instanceof Error ? error.message : String(error)}` }],
203
+ isError: true,
204
+ };
205
+ }
206
+ },
207
+ });
208
+ export const getDecisions = defineTool({
209
+ name: "get_decisions",
210
+ category: "workflow",
211
+ description: "Get all recorded decisions",
212
+ fullDescription: "Get all recorded decisions, optionally filtered by topic.",
213
+ inputSchema: z.object({
214
+ topic: z.string().optional().describe("Filter decisions by topic (partial match)"),
215
+ }),
216
+ handler: async ({ topic }, ctx) => {
217
+ try {
218
+ const decisions = topic
219
+ ? ctx.workflowManager.getDecisionsByTopic(topic)
220
+ : ctx.workflowManager.getDecisions();
221
+ if (decisions.length === 0) {
222
+ return {
223
+ content: [{
224
+ type: "text",
225
+ text: topic
226
+ ? `No decisions found matching topic: ${topic}`
227
+ : "No decisions recorded yet.",
228
+ }],
229
+ };
230
+ }
231
+ let response = `# Recorded Decisions (${decisions.length})\n\n`;
232
+ for (const d of decisions) {
233
+ response += `## ${d.id}: ${d.topic}\n`;
234
+ response += `- **Options:** ${d.options.join(", ")}\n`;
235
+ response += `- **Chosen:** ${d.chosen}\n`;
236
+ response += `- **Rationale:** ${d.rationale}\n`;
237
+ response += `- **Decided by:** ${d.decidedBy} at ${d.decidedAt}\n\n`;
238
+ }
239
+ return {
240
+ content: [{ type: "text", text: response }],
241
+ };
242
+ }
243
+ catch (error) {
244
+ return {
245
+ content: [{ type: "text", text: `Error getting decisions: ${error instanceof Error ? error.message : String(error)}` }],
246
+ isError: true,
247
+ };
248
+ }
249
+ },
250
+ });
251
+ export const getActiveAssignments = defineTool({
252
+ name: "get_active_assignments",
253
+ category: "workflow",
254
+ description: "Get stories currently being worked on",
255
+ fullDescription: "Get all stories currently being worked on by agents.",
256
+ inputSchema: z.object({}),
257
+ handler: async (_params, ctx) => {
258
+ try {
259
+ const assignments = ctx.workflowManager.getActiveAssignments();
260
+ const entries = Object.entries(assignments);
261
+ if (entries.length === 0) {
262
+ return {
263
+ content: [{ type: "text", text: "No active assignments. All agents are free to claim stories." }],
264
+ };
265
+ }
266
+ let response = `# Active Assignments\n\n`;
267
+ for (const [storyId, assignment] of entries) {
268
+ response += `- **${storyId}**: ${assignment.agent} (since ${assignment.claimedAt})\n`;
269
+ }
270
+ return {
271
+ content: [{ type: "text", text: response }],
272
+ };
273
+ }
274
+ catch (error) {
275
+ return {
276
+ content: [{ type: "text", text: `Error getting assignments: ${error instanceof Error ? error.message : String(error)}` }],
277
+ isError: true,
278
+ };
279
+ }
280
+ },
281
+ });
282
+ export const clearAssignment = defineTool({
283
+ name: "clear_assignment",
284
+ category: "workflow",
285
+ description: "Clear a story assignment",
286
+ fullDescription: "Clear a story assignment (for abandonment/failover scenarios).",
287
+ inputSchema: z.object({
288
+ storyId: z.string().describe("The story ID to clear assignment for"),
289
+ }),
290
+ handler: async ({ storyId }, ctx) => {
291
+ try {
292
+ const cleared = await ctx.workflowManager.clearAssignment(storyId);
293
+ if (!cleared) {
294
+ return {
295
+ content: [{ type: "text", text: `No active assignment found for story ${storyId}.` }],
296
+ };
297
+ }
298
+ return {
299
+ content: [{ type: "text", text: `Assignment cleared for story ${storyId}. It can now be claimed by another agent.` }],
300
+ };
301
+ }
302
+ catch (error) {
303
+ return {
304
+ content: [{ type: "text", text: `Error clearing assignment: ${error instanceof Error ? error.message : String(error)}` }],
305
+ isError: true,
306
+ };
307
+ }
308
+ },
309
+ });
310
+ // Export all workflow tools as an array
311
+ export const workflowTools = [
312
+ initWorkflow,
313
+ getWorkflowState,
314
+ advancePhase,
315
+ setPhase,
316
+ recordDecision,
317
+ getDecisions,
318
+ getActiveAssignments,
319
+ clearAssignment,
320
+ ];
321
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAqC,MAAM,qBAAqB,CAAC;AAGpF,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAE9G,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,6CAA6C;IAC1D,eAAe,EAAE,mGAAmG;IACpH,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAClE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;KAC5I,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,GAAgB,EAAuB,EAAE;QAChF,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAE1E,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0CAA0C,WAAW,aAAa,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,YAAY,sBAAsB,GAAG,CAAC,eAAe,CAAC,eAAe,EAAE,EAAE;qBAC5N,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC3H,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,oBAAoB;IAC1B,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,yCAAyC;IACtD,eAAe,EAAE,6EAA6E;IAC9F,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAgB,EAAuB,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YAEjD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qEAAqE,EAAE,CAAC;iBACzG,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;YACzD,MAAM,iBAAiB,GAAG,GAAG,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;YAErE,IAAI,QAAQ,GAAG,sBAAsB,CAAC;YACtC,QAAQ,IAAI,qBAAqB,KAAK,CAAC,WAAW,IAAI,CAAC;YACvD,QAAQ,IAAI,sBAAsB,KAAK,CAAC,YAAY,IAAI,CAAC;YACzD,QAAQ,IAAI,iBAAiB,OAAO,EAAE,aAAa,MAAM,CAAC;YAE1D,QAAQ,IAAI,aAAa,CAAC;YAC1B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/F,QAAQ,IAAI,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,KAAK,CAAC,SAAS;oBAAE,QAAQ,IAAI,cAAc,KAAK,CAAC,SAAS,GAAG,CAAC;gBAClE,IAAI,KAAK,CAAC,WAAW;oBAAE,QAAQ,IAAI,gBAAgB,KAAK,CAAC,WAAW,GAAG,CAAC;gBACxE,QAAQ,IAAI,IAAI,CAAC;YACnB,CAAC;YAED,QAAQ,IAAI,2BAA2B,CAAC;YACxC,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC5D,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,QAAQ,IAAI,0BAA0B,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,iBAAiB,EAAE,CAAC;oBACtD,QAAQ,IAAI,KAAK,OAAO,KAAM,UAAkB,CAAC,KAAK,WAAY,UAAkB,CAAC,SAAS,KAAK,CAAC;gBACtG,CAAC;YACH,CAAC;YAED,QAAQ,IAAI,mBAAmB,KAAK,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC;YACjE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,QAAQ,IAAI,8BAA8B,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjD,QAAQ,IAAI,KAAK,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,MAAM,QAAQ,QAAQ,CAAC,SAAS,KAAK,CAAC;gBACtG,CAAC;gBACD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,QAAQ,IAAI,WAAW,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC;gBAC7D,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACtH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,oCAAoC;IACjD,eAAe,EAAE,qFAAqF;IACtG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAgB,EAAuB,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YAExD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;gBAC3D,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,YAAY;gCAChB,CAAC,CAAC,2BAA2B,YAAY,2BAA2B;gCACpE,CAAC,CAAC,mDAAmD;yBACxD,CAAC;oBACF,OAAO,EAAE,CAAC,YAAY;iBACvB,CAAC;YACJ,CAAC;YAED,kCAAkC;YAClC,MAAM,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC;gBACjC,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,mBAAmB,MAAM,CAAC,aAAa,MAAM,MAAM,CAAC,QAAQ,EAAE;aACxE,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,MAAM,CAAC,aAAa,cAAc,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;aACvH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACrH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;IACjC,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,sCAAsC;IACnD,eAAe,EAAE,wEAAwE;IACzF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KAC/D,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAgB,EAAuB,EAAE;QAClE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAsB,CAAC,CAAC;YAE3E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yEAAyE,EAAE,CAAC;oBAC5G,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,kCAAkC;YAClC,MAAM,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC;gBACjC,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,0BAA0B,KAAK,EAAE;aAC3C,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,KAAK,EAAE,EAAE,CAAC;aAC5D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,6BAA6B;IAC1C,eAAe,EAAE,kGAAkG;IACnH,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACxF,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACrE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACzD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC5D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KACxE,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,GAAgB,EAAuB,EAAE;QACzG,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAExG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qFAAqF,EAAE,CAAC;oBACxH,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,8BAA8B;YAC9B,MAAM,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC;gBACjC,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,sBAAsB,QAAQ,CAAC,EAAE,YAAY,KAAK,aAAa,MAAM,gBAAgB,SAAS,EAAE;aAC1G,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,QAAQ,CAAC,EAAE,YAAY,KAAK,cAAc,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,MAAM,gBAAgB,SAAS,iBAAiB,SAAS,EAAE,EAAE,CAAC;aACrM,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACxH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,4BAA4B;IACzC,eAAe,EAAE,2DAA2D;IAC5E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KACnF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAgB,EAAuB,EAAE;QAClE,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,KAAK;gBACrB,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,mBAAmB,CAAC,KAAK,CAAC;gBAChD,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YAEvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,KAAK;gCACT,CAAC,CAAC,sCAAsC,KAAK,EAAE;gCAC/C,CAAC,CAAC,4BAA4B;yBACjC,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,GAAG,yBAAyB,SAAS,CAAC,MAAM,OAAO,CAAC;YAChE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,QAAQ,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;gBACvC,QAAQ,IAAI,kBAAkB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvD,QAAQ,IAAI,iBAAiB,CAAC,CAAC,MAAM,IAAI,CAAC;gBAC1C,QAAQ,IAAI,oBAAoB,CAAC,CAAC,SAAS,IAAI,CAAC;gBAChD,QAAQ,IAAI,qBAAqB,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC;YACvE,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACvH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;IAC7C,IAAI,EAAE,wBAAwB;IAC9B,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,uCAAuC;IACpD,eAAe,EAAE,sDAAsD;IACvE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAgB,EAAuB,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAE5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8DAA8D,EAAE,CAAC;iBAClG,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,GAAG,0BAA0B,CAAC;YAC1C,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC;gBAC5C,QAAQ,IAAI,OAAO,OAAO,OAAQ,UAAkB,CAAC,KAAK,WAAY,UAAkB,CAAC,SAAS,KAAK,CAAC;YAC1G,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACzH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACxC,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,0BAA0B;IACvC,eAAe,EAAE,gEAAgE;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACrE,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAgB,EAAuB,EAAE;QACpE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEnE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,OAAO,GAAG,EAAE,CAAC;iBACtF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,OAAO,2CAA2C,EAAE,CAAC;aACtH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACzH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,cAAc;IACd,YAAY;IACZ,oBAAoB;IACpB,eAAe;CAChB,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Message types for robot chat communication
3
+ */
4
+ export type MessageType = "FAILOVER_NEEDED" | "FAILOVER_CLAIMED" | "TASK_COMPLETE" | "STATUS_UPDATE" | "HANDOFF" | "INFO" | "ERROR" | "QUESTION" | "ANSWER" | "TASK_ASSIGNMENT" | "ITERATION_START" | "STORY_COMPLETE" | "STORY_CLAIMED" | "READY_TO_TEST" | "BUG_CLAIMED" | "BUG_FIXED";
5
+ /**
6
+ * A user story in the PRD
7
+ */
8
+ export interface UserStory {
9
+ id: string;
10
+ title: string;
11
+ description: string;
12
+ acceptanceCriteria: string[];
13
+ priority: number;
14
+ passes: boolean;
15
+ notes: string;
16
+ }
17
+ /**
18
+ * A bug report (similar structure to UserStory for consistency)
19
+ */
20
+ export interface Bug {
21
+ id: string;
22
+ title: string;
23
+ description: string;
24
+ stepsToReproduce?: string[];
25
+ priority: number;
26
+ fixed: boolean;
27
+ notes?: string;
28
+ }
29
+ /**
30
+ * The bugs.json structure
31
+ */
32
+ export interface BugList {
33
+ project?: string;
34
+ bugs: Bug[];
35
+ }
36
+ /**
37
+ * The PRD structure (Ralph-compatible)
38
+ * Supports both 'project' and 'projectName' for flexibility
39
+ */
40
+ export interface PRD {
41
+ project?: string;
42
+ projectName?: string;
43
+ branchName?: string;
44
+ description: string;
45
+ userStories: UserStory[];
46
+ }
47
+ /**
48
+ * A parsed chat message
49
+ */
50
+ export interface ChatMessage {
51
+ /** Agent name (e.g., "Claude", "Codex", "Gemini") */
52
+ agent: string;
53
+ /** Timestamp in HH:MM format */
54
+ timestamp: string;
55
+ /** Full timestamp as Date object */
56
+ date: Date;
57
+ /** Message type */
58
+ type: MessageType;
59
+ /** Message content (may be multi-line) */
60
+ content: string;
61
+ /** Raw message text including header */
62
+ raw: string;
63
+ /** Line number in the chat file where this message starts */
64
+ lineNumber: number;
65
+ }
66
+ /**
67
+ * A failover request that hasn't been claimed
68
+ */
69
+ export interface UnclaimedFailover {
70
+ /** The original failover message */
71
+ message: ChatMessage;
72
+ /** Agent that requested the failover */
73
+ requestingAgent: string;
74
+ /** Parsed task information if available */
75
+ task?: string;
76
+ /** Parsed progress percentage if available */
77
+ progress?: string;
78
+ /** Files mentioned in the failover */
79
+ filesModified?: string[];
80
+ }
81
+ /**
82
+ * Options for reading chat messages
83
+ */
84
+ export interface ReadOptions {
85
+ /** Maximum number of messages to return */
86
+ limit?: number;
87
+ /** Filter by agent name */
88
+ agent?: string;
89
+ /** Filter by message type */
90
+ type?: MessageType;
91
+ /** Only return messages after this date */
92
+ since?: Date;
93
+ }
94
+ /**
95
+ * Options for writing a chat message
96
+ */
97
+ export interface WriteOptions {
98
+ /** Agent name (required) */
99
+ agent: string;
100
+ /** Message type (required) */
101
+ type: MessageType;
102
+ /** Message content (required) */
103
+ content: string;
104
+ }
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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;CACf;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,SAAS,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,OAAO,EAAE,WAAW,CAAC;IACrB,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,IAAI,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Workflow phases for autonomous project execution
3
+ */
4
+ export type WorkflowPhase = "research" | "decisions" | "planning" | "build" | "test" | "report" | "complete";
5
+ /**
6
+ * Story assignment tracking
7
+ */
8
+ export interface StoryAssignment {
9
+ agent: string;
10
+ status: "in_progress" | "completed";
11
+ claimedAt: string;
12
+ completedAt?: string;
13
+ }
14
+ /**
15
+ * Decision record for tracking strategic choices
16
+ */
17
+ export interface Decision {
18
+ id: string;
19
+ topic: string;
20
+ options: string[];
21
+ chosen: string;
22
+ rationale: string;
23
+ decidedBy: string;
24
+ decidedAt: string;
25
+ }
26
+ /**
27
+ * Phase definition with exit criteria
28
+ */
29
+ export interface PhaseDefinition {
30
+ name: WorkflowPhase;
31
+ status: "pending" | "in_progress" | "completed";
32
+ exitCriteria?: string;
33
+ startedAt?: string;
34
+ completedAt?: string;
35
+ }
36
+ /**
37
+ * Complete workflow state
38
+ */
39
+ export interface WorkflowState {
40
+ projectGoal: string;
41
+ currentPhase: WorkflowPhase;
42
+ phases: PhaseDefinition[];
43
+ assignments: {
44
+ [storyId: string]: StoryAssignment;
45
+ };
46
+ decisions: Decision[];
47
+ lastUpdated: string;
48
+ }
49
+ /**
50
+ * Result of attempting to assign a story
51
+ */
52
+ export interface AssignmentResult {
53
+ success: boolean;
54
+ error?: string;
55
+ existingAgent?: string;
56
+ }
57
+ /**
58
+ * Manages workflow state for multi-agent coordination
59
+ */
60
+ export declare class WorkflowManager {
61
+ private readonly projectPath;
62
+ private readonly workflowFile;
63
+ constructor(projectPath: string);
64
+ /**
65
+ * Check if workflow file exists
66
+ */
67
+ hasWorkflow(): boolean;
68
+ /**
69
+ * Initialize a new workflow
70
+ */
71
+ initWorkflow(projectGoal: string, phases?: WorkflowPhase[]): Promise<WorkflowState>;
72
+ /**
73
+ * Read workflow state (async with locking)
74
+ */
75
+ readWorkflowAsync(): Promise<WorkflowState | null>;
76
+ /**
77
+ * Read workflow state (sync - use for non-critical reads)
78
+ */
79
+ readWorkflow(): WorkflowState | null;
80
+ /**
81
+ * Write workflow state (async with locking)
82
+ */
83
+ writeWorkflow(state: WorkflowState): Promise<void>;
84
+ /**
85
+ * Get current phase
86
+ */
87
+ getCurrentPhase(): WorkflowPhase | null;
88
+ /**
89
+ * Advance to next phase (async with atomic operation)
90
+ */
91
+ advancePhase(): Promise<{
92
+ previousPhase: WorkflowPhase;
93
+ newPhase: WorkflowPhase;
94
+ } | null>;
95
+ /**
96
+ * Set phase directly (for manual control) - async with atomic operation
97
+ */
98
+ setPhase(phase: WorkflowPhase): Promise<boolean>;
99
+ /**
100
+ * Check if a story is currently assigned
101
+ */
102
+ isStoryAssigned(storyId: string): StoryAssignment | null;
103
+ /**
104
+ * Assign a story to an agent - atomic operation to prevent race conditions
105
+ * NO AUTO-INITIALIZATION: Workflow must be initialized first with init_workflow
106
+ */
107
+ assignStory(storyId: string, agent: string): Promise<AssignmentResult>;
108
+ /**
109
+ * Mark a story assignment as completed (async with atomic operation)
110
+ */
111
+ completeAssignment(storyId: string): Promise<boolean>;
112
+ /**
113
+ * Clear a story assignment (for abandonment/failover) - async with atomic operation
114
+ */
115
+ clearAssignment(storyId: string): Promise<boolean>;
116
+ /**
117
+ * Get all active assignments
118
+ */
119
+ getActiveAssignments(): {
120
+ [storyId: string]: StoryAssignment;
121
+ };
122
+ /**
123
+ * Record a decision - async with atomic operation
124
+ * NO AUTO-INITIALIZATION: Workflow must be initialized first with init_workflow
125
+ */
126
+ recordDecision(topic: string, options: string[], chosen: string, rationale: string, decidedBy: string): Promise<Decision | null>;
127
+ /**
128
+ * Get all decisions
129
+ */
130
+ getDecisions(): Decision[];
131
+ /**
132
+ * Get decisions by topic
133
+ */
134
+ getDecisionsByTopic(topic: string): Decision[];
135
+ /**
136
+ * Get workflow summary
137
+ */
138
+ getWorkflowSummary(): {
139
+ projectGoal: string;
140
+ currentPhase: WorkflowPhase;
141
+ phaseProgress: string;
142
+ activeAssignments: number;
143
+ totalDecisions: number;
144
+ } | null;
145
+ /**
146
+ * Get file path
147
+ */
148
+ getWorkflowPath(): string;
149
+ /**
150
+ * Check if a specific agent owns a story assignment
151
+ */
152
+ isAgentOwner(storyId: string, agent: string): boolean;
153
+ }
154
+ //# sourceMappingURL=workflow-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-manager.d.ts","sourceRoot":"","sources":["../src/workflow-manager.ts"],"names":[],"mappings":"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"}