@codemcp/workflows 4.7.0 → 4.8.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 (52) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/components/beads/beads-instruction-generator.d.ts +48 -0
  3. package/dist/components/beads/beads-instruction-generator.d.ts.map +1 -0
  4. package/dist/components/beads/beads-instruction-generator.js +182 -0
  5. package/dist/components/beads/beads-instruction-generator.js.map +1 -0
  6. package/dist/components/beads/beads-plan-manager.d.ts +66 -0
  7. package/dist/components/beads/beads-plan-manager.d.ts.map +1 -0
  8. package/dist/components/beads/beads-plan-manager.js +288 -0
  9. package/dist/components/beads/beads-plan-manager.js.map +1 -0
  10. package/dist/components/beads/beads-task-backend-client.d.ts +43 -0
  11. package/dist/components/beads/beads-task-backend-client.d.ts.map +1 -0
  12. package/dist/components/beads/beads-task-backend-client.js +178 -0
  13. package/dist/components/beads/beads-task-backend-client.js.map +1 -0
  14. package/dist/components/server-components-factory.d.ts +39 -0
  15. package/dist/components/server-components-factory.d.ts.map +1 -0
  16. package/dist/components/server-components-factory.js +62 -0
  17. package/dist/components/server-components-factory.js.map +1 -0
  18. package/dist/server-config.d.ts.map +1 -1
  19. package/dist/server-config.js +8 -4
  20. package/dist/server-config.js.map +1 -1
  21. package/dist/server-implementation.d.ts +1 -1
  22. package/dist/tool-handlers/proceed-to-phase.d.ts +5 -0
  23. package/dist/tool-handlers/proceed-to-phase.d.ts.map +1 -1
  24. package/dist/tool-handlers/proceed-to-phase.js +95 -0
  25. package/dist/tool-handlers/proceed-to-phase.js.map +1 -1
  26. package/dist/tool-handlers/start-development.d.ts.map +1 -1
  27. package/dist/tool-handlers/start-development.js +7 -3
  28. package/dist/tool-handlers/start-development.js.map +1 -1
  29. package/dist/tool-handlers/whats-next.d.ts +0 -12
  30. package/dist/tool-handlers/whats-next.d.ts.map +1 -1
  31. package/dist/tool-handlers/whats-next.js +1 -88
  32. package/dist/tool-handlers/whats-next.js.map +1 -1
  33. package/dist/types.d.ts +7 -4
  34. package/dist/types.d.ts.map +1 -1
  35. package/package.json +2 -2
  36. package/src/components/beads/beads-instruction-generator.ts +261 -0
  37. package/src/components/beads/beads-plan-manager.ts +358 -0
  38. package/src/components/beads/beads-task-backend-client.ts +232 -0
  39. package/src/components/server-components-factory.ts +86 -0
  40. package/src/server-config.ts +9 -4
  41. package/src/tool-handlers/proceed-to-phase.ts +140 -0
  42. package/src/tool-handlers/start-development.ts +14 -3
  43. package/src/tool-handlers/whats-next.ts +4 -117
  44. package/src/types.ts +7 -4
  45. package/test/e2e/component-substitution.test.ts +208 -0
  46. package/test/unit/beads-instruction-generator.test.ts +847 -0
  47. package/test/unit/beads-phase-task-id-integration.test.ts +557 -0
  48. package/test/unit/server-components-factory.test.ts +279 -0
  49. package/test/unit/setup-project-docs-handler.test.ts +3 -2
  50. package/test/utils/e2e-test-setup.ts +0 -1
  51. package/test/utils/temp-files.ts +12 -0
  52. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1,4 +1,4 @@
1
1
 
2
- > @codemcp/workflows@4.7.0 build /home/runner/work/responsible-vibe-mcp/responsible-vibe-mcp/packages/mcp-server
2
+ > @codemcp/workflows@4.8.0 build /home/runner/work/responsible-vibe-mcp/responsible-vibe-mcp/packages/mcp-server
3
3
  > tsc -p tsconfig.build.json
4
4
 
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Beads Instruction Generator
3
+ *
4
+ * Beads-specific implementation of IInstructionGenerator.
5
+ * Generates instructions optimized for beads task management workflow.
6
+ */
7
+ import { type IInstructionGenerator, type InstructionContext, type GeneratedInstructions, type YamlStateMachine, type TaskBackendConfig } from '@codemcp/workflows-core';
8
+ import { BeadsTaskBackendClient } from './beads-task-backend-client.js';
9
+ /**
10
+ * Beads-specific instruction generator
11
+ */
12
+ export declare class BeadsInstructionGenerator implements IInstructionGenerator {
13
+ private projectDocsManager;
14
+ constructor(_taskBackendClient?: BeadsTaskBackendClient, _taskBackendDetector?: () => TaskBackendConfig);
15
+ /**
16
+ * Set the state machine definition (kept for interface compatibility)
17
+ */
18
+ setStateMachine(_stateMachine: YamlStateMachine): void;
19
+ /**
20
+ * Generate comprehensive instructions optimized for beads workflow
21
+ */
22
+ generateInstructions(baseInstructions: string, context: InstructionContext): Promise<GeneratedInstructions>;
23
+ /**
24
+ * Apply variable substitution to instructions
25
+ */
26
+ private applyVariableSubstitution;
27
+ /**
28
+ * Escape special regex characters in variable names
29
+ */
30
+ private escapeRegExp;
31
+ /**
32
+ * Enhance instructions with beads-specific guidance
33
+ */
34
+ private enhanceBeadsInstructions;
35
+ /**
36
+ * Generate beads-specific task management guidance
37
+ */
38
+ private generateBeadsTaskGuidance;
39
+ /**
40
+ * Extract phase task ID from plan file (simplified implementation)
41
+ */
42
+ private extractPhaseTaskId;
43
+ /**
44
+ * Capitalize phase name for display
45
+ */
46
+ private capitalizePhase;
47
+ }
48
+ //# sourceMappingURL=beads-instruction-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads-instruction-generator.d.ts","sourceRoot":"","sources":["../../../src/components/beads/beads-instruction-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAGrB,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;GAEG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;IACrE,OAAO,CAAC,kBAAkB,CAAqB;gBAG7C,kBAAkB,CAAC,EAAE,sBAAsB,EAC3C,oBAAoB,GAAE,MAAM,iBAAwD;IAMtF;;OAEG;IACH,eAAe,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI;IAKtD;;OAEG;IACG,oBAAoB,CACxB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,qBAAqB,CAAC;IA2BjC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAqBjC;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;YACW,wBAAwB;IAyDtC;;OAEG;YACW,yBAAyB;IAuCvC;;OAEG;YACW,kBAAkB;IA0ChC;;OAEG;IACH,OAAO,CAAC,eAAe;CAMxB"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Beads Instruction Generator
3
+ *
4
+ * Beads-specific implementation of IInstructionGenerator.
5
+ * Generates instructions optimized for beads task management workflow.
6
+ */
7
+ import { ProjectDocsManager, TaskBackendManager, } from '@codemcp/workflows-core';
8
+ /**
9
+ * Beads-specific instruction generator
10
+ */
11
+ export class BeadsInstructionGenerator {
12
+ projectDocsManager;
13
+ constructor(_taskBackendClient, _taskBackendDetector = TaskBackendManager.detectTaskBackend) {
14
+ this.projectDocsManager = new ProjectDocsManager();
15
+ // Task backend client and detector may be used in future enhancements
16
+ }
17
+ /**
18
+ * Set the state machine definition (kept for interface compatibility)
19
+ */
20
+ setStateMachine(_stateMachine) {
21
+ // Not needed for beads implementation but kept for interface compliance
22
+ return;
23
+ }
24
+ /**
25
+ * Generate comprehensive instructions optimized for beads workflow
26
+ */
27
+ async generateInstructions(baseInstructions, context) {
28
+ // Apply variable substitution to base instructions
29
+ const substitutedInstructions = this.applyVariableSubstitution(baseInstructions, context.conversationContext.projectPath, context.conversationContext.gitBranch);
30
+ // Enhance base instructions with beads-specific guidance
31
+ const enhancedInstructions = await this.enhanceBeadsInstructions(substitutedInstructions, context);
32
+ return {
33
+ instructions: enhancedInstructions,
34
+ planFileGuidance: 'Using beads CLI for task management - plan file serves as context only',
35
+ metadata: {
36
+ phase: context.phase,
37
+ planFilePath: context.conversationContext.planFilePath,
38
+ transitionReason: context.transitionReason,
39
+ isModeled: context.isModeled,
40
+ },
41
+ };
42
+ }
43
+ /**
44
+ * Apply variable substitution to instructions
45
+ */
46
+ applyVariableSubstitution(instructions, projectPath, gitBranch) {
47
+ const substitutions = this.projectDocsManager.getVariableSubstitutions(projectPath, gitBranch);
48
+ let result = instructions;
49
+ for (const [variable, value] of Object.entries(substitutions)) {
50
+ result = result.replace(new RegExp(this.escapeRegExp(variable), 'g'), value);
51
+ }
52
+ return result;
53
+ }
54
+ /**
55
+ * Escape special regex characters in variable names
56
+ */
57
+ escapeRegExp(string) {
58
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
59
+ }
60
+ /**
61
+ * Enhance instructions with beads-specific guidance
62
+ */
63
+ async enhanceBeadsInstructions(baseInstructions, context) {
64
+ const { phase, conversationContext, transitionReason, isModeled, planFileExists, } = context;
65
+ // Generate beads-specific task management guidance
66
+ const beadsTaskGuidance = await this.generateBeadsTaskGuidance(context);
67
+ // Beads-optimized instruction structure
68
+ const enhanced = `You are in the ${phase} phase.
69
+ ${baseInstructions}
70
+
71
+ **Plan File Guidance:**
72
+ Use the plan file as memory for the current objective
73
+ - Update the "Key Decisions" section with important choices made
74
+ - Add relevant notes to help maintain context
75
+ - Do NOT enter tasks in the plan file, use beads CLI exclusively for task management
76
+
77
+ **🔧 BD CLI Task Management:**
78
+ ${beadsTaskGuidance}`;
79
+ // Add project context
80
+ const enhancedWithContext = enhanced +
81
+ `\n\n**Project Context:**
82
+ - Project: ${conversationContext.projectPath}
83
+ - Branch: ${conversationContext.gitBranch}
84
+ - Current Phase: ${phase}`;
85
+ // Add transition context if this is a modeled transition
86
+ let final = enhancedWithContext;
87
+ if (isModeled && transitionReason) {
88
+ final += `\n\n**Phase Context:**
89
+ - ${transitionReason}`;
90
+ }
91
+ // Add plan file creation note if needed
92
+ if (!planFileExists) {
93
+ final +=
94
+ '\n\n**Note**: Plan file will be created when you first update it.';
95
+ }
96
+ // Add beads-specific reminders
97
+ final += `\n\n**Important Reminders:**
98
+ - Use ONLY bd CLI tool for task management - do not use your own task management tools
99
+ - Call whats_next() after the next user message to maintain the development workflow`;
100
+ return final;
101
+ }
102
+ /**
103
+ * Generate beads-specific task management guidance
104
+ */
105
+ async generateBeadsTaskGuidance(context) {
106
+ const { phase } = context;
107
+ // Extract phase task ID from plan file (this would need to be implemented)
108
+ const phaseTaskId = await this.extractPhaseTaskId(context);
109
+ if (!phaseTaskId) {
110
+ return `- Use bd CLI tool exclusively
111
+ - **Start by listing ready tasks**: \`bd list --parent <phase-task-id> --status open\`
112
+ - **Create new tasks**: \`bd create 'Task title' --parent <phase-task-id> -p 2\`
113
+ - **Update status when working**: \`bd update <task-id> --status in_progress\`
114
+ - **Complete tasks**: \`bd close <task-id>\`
115
+ - **Focus on ready tasks first** - let beads handle dependencies
116
+ - Add new tasks as they are identified during your work with the user`;
117
+ }
118
+ return `
119
+ You are currently in the ${this.capitalizePhase(phase)} phase. All work items should be created as children of ${phaseTaskId}.
120
+
121
+ **Focus on ${this.capitalizePhase(phase)} Phase Tasks** (subtasks of \`${phaseTaskId}\`):
122
+ • \`bd list --parent ${phaseTaskId} --status open\` - List ready work items
123
+ • \`bd update <task-id> --status in_progress\` - Start working on a specific task
124
+ • \`bd close <task-id>\` - Mark task complete when finished
125
+
126
+ **Create New Tasks for Current Phase**:
127
+ • \`bd create 'Task description' --parent ${phaseTaskId} -p 2\` - Create work item under current phase
128
+
129
+ **Essential Commands**:
130
+ • \`bd list --parent ${phaseTaskId} --status open\` - List ready work items
131
+ • \`bd create 'Task description' --parent ${phaseTaskId} -p 2\` - Create work item
132
+ • \`bd update <task-id> --status in_progress\` - Start working
133
+ • \`bd close <task-id>\` - Complete work item
134
+ • \`bd show ${phaseTaskId}\` - View phase and its work items
135
+
136
+ **Immediate Action**: Run \`bd list --parent ${phaseTaskId} --status open\` to see ready tasks.`;
137
+ }
138
+ /**
139
+ * Extract phase task ID from plan file (simplified implementation)
140
+ */
141
+ async extractPhaseTaskId(context) {
142
+ try {
143
+ const { readFile } = await import('node:fs/promises');
144
+ const content = await readFile(context.conversationContext.planFilePath, 'utf-8');
145
+ const phaseName = this.capitalizePhase(context.phase);
146
+ const phaseHeader = `## ${phaseName}`;
147
+ // Look for the phase header followed by beads-phase-id comment
148
+ const phaseSection = content.split('\n');
149
+ let foundPhaseHeader = false;
150
+ for (const line of phaseSection) {
151
+ if (line.trim() === phaseHeader) {
152
+ foundPhaseHeader = true;
153
+ continue;
154
+ }
155
+ if (foundPhaseHeader && line.includes('beads-phase-id:')) {
156
+ const match = line.match(/beads-phase-id:\s*([\w\d.-]+)/);
157
+ if (match) {
158
+ return match[1] || null;
159
+ }
160
+ }
161
+ // Stop looking if we hit the next phase header
162
+ if (foundPhaseHeader && line.startsWith('##') && line !== phaseHeader) {
163
+ break;
164
+ }
165
+ }
166
+ return null;
167
+ }
168
+ catch (_error) {
169
+ return null;
170
+ }
171
+ }
172
+ /**
173
+ * Capitalize phase name for display
174
+ */
175
+ capitalizePhase(phase) {
176
+ return phase
177
+ .split('_')
178
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
179
+ .join(' ');
180
+ }
181
+ }
182
+ //# sourceMappingURL=beads-instruction-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads-instruction-generator.js","sourceRoot":"","sources":["../../../src/components/beads/beads-instruction-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAKL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AAGjC;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAC5B,kBAAkB,CAAqB;IAE/C,YACE,kBAA2C,EAC3C,uBAAgD,kBAAkB,CAAC,iBAAiB;QAEpF,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACnD,sEAAsE;IACxE,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,aAA+B;QAC7C,wEAAwE;QACxE,OAAO;IACT,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CACxB,gBAAwB,EACxB,OAA2B;QAE3B,mDAAmD;QACnD,MAAM,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,CAC5D,gBAAgB,EAChB,OAAO,CAAC,mBAAmB,CAAC,WAAW,EACvC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CACtC,CAAC;QAEF,yDAAyD;QACzD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAC9D,uBAAuB,EACvB,OAAO,CACR,CAAC;QAEF,OAAO;YACL,YAAY,EAAE,oBAAoB;YAClC,gBAAgB,EACd,wEAAwE;YAC1E,QAAQ,EAAE;gBACR,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,YAAY,EAAE,OAAO,CAAC,mBAAmB,CAAC,YAAY;gBACtD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,yBAAyB,CAC/B,YAAoB,EACpB,WAAmB,EACnB,SAAkB;QAElB,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CACpE,WAAW,EACX,SAAS,CACV,CAAC;QAEF,IAAI,MAAM,GAAG,YAAY,CAAC;QAC1B,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9D,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAC5C,KAAK,CACN,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAAc;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB,CACpC,gBAAwB,EACxB,OAA2B;QAE3B,MAAM,EACJ,KAAK,EACL,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,EACT,cAAc,GACf,GAAG,OAAO,CAAC;QAEZ,mDAAmD;QACnD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAExE,wCAAwC;QACxC,MAAM,QAAQ,GAAG,kBAAkB,KAAK;EAC1C,gBAAgB;;;;;;;;;EAShB,iBAAiB,EAAE,CAAC;QAElB,sBAAsB;QACtB,MAAM,mBAAmB,GACvB,QAAQ;YACR;aACO,mBAAmB,CAAC,WAAW;YAChC,mBAAmB,CAAC,SAAS;mBACtB,KAAK,EAAE,CAAC;QAEvB,yDAAyD;QACzD,IAAI,KAAK,GAAG,mBAAmB,CAAC;QAChC,IAAI,SAAS,IAAI,gBAAgB,EAAE,CAAC;YAClC,KAAK,IAAI;IACX,gBAAgB,EAAE,CAAC;QACnB,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,KAAK;gBACH,mEAAmE,CAAC;QACxE,CAAC;QAED,+BAA+B;QAC/B,KAAK,IAAI;;qFAEwE,CAAC;QAElF,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CACrC,OAA2B;QAE3B,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAE1B,2EAA2E;QAC3E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;;;;;;sEAMyD,CAAC;QACnE,CAAC;QAED,OAAO;2BACgB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,2DAA2D,WAAW;;aAE/G,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,iCAAiC,WAAW;uBAC7D,WAAW;;;;;4CAKU,WAAW;;;uBAGhC,WAAW;4CACU,WAAW;;;cAGzC,WAAW;;+CAEsB,WAAW,sCAAsC,CAAC;IAC/F,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,OAA2B;QAE3B,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAC5B,OAAO,CAAC,mBAAmB,CAAC,YAAY,EACxC,OAAO,CACR,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAC;YAEtC,+DAA+D;YAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAE7B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;oBAChC,gBAAgB,GAAG,IAAI,CAAC;oBACxB,SAAS;gBACX,CAAC;gBAED,IAAI,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;oBAC1D,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;oBAC1B,CAAC;gBACH,CAAC;gBAED,+CAA+C;gBAC/C,IAAI,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;oBACtE,MAAM;gBACR,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAa;QACnC,OAAO,KAAK;aACT,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACzD,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Beads Plan Manager
3
+ *
4
+ * Beads-specific implementation of IPlanManager.
5
+ * Manages plan files optimized for beads task management workflow.
6
+ */
7
+ import { type IPlanManager, type PlanFileInfo, type YamlStateMachine, type TaskBackendConfig } from '@codemcp/workflows-core';
8
+ /**
9
+ * Beads-specific plan manager implementation
10
+ */
11
+ export declare class BeadsPlanManager implements IPlanManager {
12
+ private stateMachine;
13
+ /**
14
+ * Set the state machine definition for dynamic plan generation
15
+ */
16
+ setStateMachine(stateMachine: YamlStateMachine): void;
17
+ /**
18
+ * Set the task backend configuration
19
+ */
20
+ setTaskBackend(taskBackend: TaskBackendConfig): void;
21
+ /**
22
+ * Get plan file information
23
+ */
24
+ getPlanFileInfo(planFilePath: string): Promise<PlanFileInfo>;
25
+ /**
26
+ * Create initial plan file if it doesn't exist
27
+ */
28
+ ensurePlanFile(planFilePath: string, projectPath: string, gitBranch: string): Promise<void>;
29
+ /**
30
+ * Create initial plan file optimized for beads workflow
31
+ */
32
+ private createInitialBeadsPlanFile;
33
+ /**
34
+ * Generate initial plan file content optimized for beads workflow
35
+ */
36
+ private generateBeadsInitialPlanContent;
37
+ /**
38
+ * Update plan file with new content
39
+ */
40
+ updatePlanFile(planFilePath: string, content: string): Promise<void>;
41
+ /**
42
+ * Get plan file content for LLM context
43
+ */
44
+ getPlanFileContent(planFilePath: string): Promise<string>;
45
+ /**
46
+ * Generate phase-specific plan file guidance optimized for beads
47
+ */
48
+ generatePlanFileGuidance(phase: string): string;
49
+ /**
50
+ * Delete plan file
51
+ */
52
+ deletePlanFile(planFilePath: string): Promise<boolean>;
53
+ /**
54
+ * Ensure plan file is deleted (verify deletion)
55
+ */
56
+ ensurePlanFileDeleted(planFilePath: string): Promise<boolean>;
57
+ /**
58
+ * Capitalize phase name for display
59
+ */
60
+ private capitalizePhase;
61
+ /**
62
+ * Generate workflow documentation URL for predefined workflows
63
+ */
64
+ private generateWorkflowDocumentationUrl;
65
+ }
66
+ //# sourceMappingURL=beads-plan-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads-plan-manager.d.ts","sourceRoot":"","sources":["../../../src/components/beads/beads-plan-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAEvB,MAAM,yBAAyB,CAAC;AAOjC;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,YAAY,CAAiC;IAErD;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAQrD;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI;IAQpD;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBlE;;OAEG;IACG,cAAc,CAClB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAwBhB;;OAEG;YACW,0BAA0B;IAoCxC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAwFvC;;OAEG;IACG,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1E;;OAEG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/D;;OAEG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAkB/C;;OAEG;IACG,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4B5D;;OAEG;IACG,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BnE;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,gCAAgC;CAWzC"}
@@ -0,0 +1,288 @@
1
+ /**
2
+ * Beads Plan Manager
3
+ *
4
+ * Beads-specific implementation of IPlanManager.
5
+ * Manages plan files optimized for beads task management workflow.
6
+ */
7
+ import { createLogger, } from '@codemcp/workflows-core';
8
+ import { writeFile, readFile, access } from 'node:fs/promises';
9
+ import { dirname } from 'node:path';
10
+ import { mkdir } from 'node:fs/promises';
11
+ const logger = createLogger('BeadsPlanManager');
12
+ /**
13
+ * Beads-specific plan manager implementation
14
+ */
15
+ export class BeadsPlanManager {
16
+ stateMachine = null;
17
+ /**
18
+ * Set the state machine definition for dynamic plan generation
19
+ */
20
+ setStateMachine(stateMachine) {
21
+ this.stateMachine = stateMachine;
22
+ logger.debug('State machine set for beads plan manager', {
23
+ name: stateMachine.name,
24
+ phases: Object.keys(stateMachine.states),
25
+ });
26
+ }
27
+ /**
28
+ * Set the task backend configuration
29
+ */
30
+ setTaskBackend(taskBackend) {
31
+ // Task backend is implicit for beads plan manager (always beads)
32
+ logger.debug('Task backend set for beads plan manager', {
33
+ backend: taskBackend.backend,
34
+ available: taskBackend.isAvailable,
35
+ });
36
+ }
37
+ /**
38
+ * Get plan file information
39
+ */
40
+ async getPlanFileInfo(planFilePath) {
41
+ try {
42
+ await access(planFilePath);
43
+ const content = await readFile(planFilePath, 'utf-8');
44
+ return {
45
+ path: planFilePath,
46
+ exists: true,
47
+ content,
48
+ };
49
+ }
50
+ catch (_error) {
51
+ return {
52
+ path: planFilePath,
53
+ exists: false,
54
+ };
55
+ }
56
+ }
57
+ /**
58
+ * Create initial plan file if it doesn't exist
59
+ */
60
+ async ensurePlanFile(planFilePath, projectPath, gitBranch) {
61
+ logger.debug('Ensuring beads plan file exists', {
62
+ planFilePath,
63
+ projectPath,
64
+ gitBranch,
65
+ });
66
+ const planInfo = await this.getPlanFileInfo(planFilePath);
67
+ if (!planInfo.exists) {
68
+ logger.info('Plan file not found, creating beads-optimized plan', {
69
+ planFilePath,
70
+ });
71
+ await this.createInitialBeadsPlanFile(planFilePath, projectPath, gitBranch);
72
+ logger.info('Beads plan file created successfully', { planFilePath });
73
+ }
74
+ else {
75
+ logger.debug('Plan file already exists', { planFilePath });
76
+ }
77
+ }
78
+ /**
79
+ * Create initial plan file optimized for beads workflow
80
+ */
81
+ async createInitialBeadsPlanFile(planFilePath, projectPath, gitBranch) {
82
+ logger.debug('Creating beads-optimized plan file', { planFilePath });
83
+ try {
84
+ // Ensure directory exists
85
+ await mkdir(dirname(planFilePath), { recursive: true });
86
+ logger.debug('Plan file directory ensured', {
87
+ directory: dirname(planFilePath),
88
+ });
89
+ const projectName = projectPath.split('/').pop() || 'Unknown Project';
90
+ const branchInfo = gitBranch !== 'no-git' ? ` (${gitBranch} branch)` : '';
91
+ const initialContent = this.generateBeadsInitialPlanContent(projectName, branchInfo);
92
+ await writeFile(planFilePath, initialContent, 'utf-8');
93
+ logger.info('Beads plan file written successfully', {
94
+ planFilePath,
95
+ contentLength: initialContent.length,
96
+ projectName,
97
+ });
98
+ }
99
+ catch (error) {
100
+ logger.error('Failed to create beads plan file', error, {
101
+ planFilePath,
102
+ });
103
+ throw error;
104
+ }
105
+ }
106
+ /**
107
+ * Generate initial plan file content optimized for beads workflow
108
+ */
109
+ generateBeadsInitialPlanContent(projectName, branchInfo) {
110
+ const timestamp = new Date().toISOString().split('T')[0];
111
+ if (!this.stateMachine) {
112
+ throw new Error('State machine not set. This should not happen as state machine is always loaded.');
113
+ }
114
+ const phases = Object.keys(this.stateMachine.states);
115
+ const initialPhase = this.stateMachine.initial_state;
116
+ const documentationUrl = this.generateWorkflowDocumentationUrl(this.stateMachine.name);
117
+ let content = `# Development Plan: ${projectName}${branchInfo}
118
+
119
+ *Generated on ${timestamp} by Vibe Feature MCP*
120
+ *Workflow: ${documentationUrl
121
+ ? '[' + this.stateMachine.name + ']' + '(' + documentationUrl + ')'
122
+ : this.stateMachine.name}*
123
+ *Task Management: Beads Issue Tracker*
124
+
125
+ ## Goal
126
+ *Define what you're building or fixing - this will be updated as requirements are gathered*
127
+
128
+ ## ${this.capitalizePhase(initialPhase)}
129
+ <!-- beads-phase-id: TBD -->
130
+ ### Tasks
131
+
132
+ **🔧 TASK MANAGEMENT VIA CLI TOOL bd**
133
+
134
+ Tasks are managed via bd CLI tool. Use bd commands to create and manage tasks with proper hierarchy:
135
+
136
+ - \`bd list --parent <phase-task-id> --status open\`
137
+ - \`bd create "Task title" --parent <phase-task-id> -p 2\`
138
+ - \`bd close <task-id>\`
139
+
140
+ **Never use [ ] or [x] checkboxes - use bd commands only!**
141
+
142
+ ### Completed
143
+ - [x] Created development plan file
144
+
145
+ `;
146
+ // Generate sections for each phase with beads-specific guidance
147
+ for (const phase of phases) {
148
+ if (phase !== initialPhase) {
149
+ content += `## ${this.capitalizePhase(phase)}
150
+ <!-- beads-phase-id: TBD -->
151
+ ### Tasks
152
+
153
+ **🔧 TASK MANAGEMENT VIA CLI TOOL bd**
154
+
155
+ Tasks are managed via bd CLI tool. Use bd commands to create and manage tasks with proper hierarchy:
156
+
157
+ - \`bd list --parent <phase-task-id> --status open\`
158
+ - \`bd create "Task title" --parent <phase-task-id> -p 2\`
159
+ - \`bd close <task-id>\`
160
+
161
+ **Never use [ ] or [x] checkboxes - use bd commands only!**
162
+
163
+ ### Completed
164
+ *None yet*
165
+
166
+ `;
167
+ }
168
+ }
169
+ content += `## Key Decisions
170
+ *Important decisions will be documented here as they are made*
171
+
172
+ ## Notes
173
+ *Additional context and observations*
174
+
175
+ ---
176
+ *This plan is maintained by the LLM and uses beads CLI for task management. Tool responses provide guidance on which bd commands to use for task management.*
177
+ `;
178
+ return content;
179
+ }
180
+ /**
181
+ * Update plan file with new content
182
+ */
183
+ async updatePlanFile(planFilePath, content) {
184
+ // Ensure directory exists
185
+ await mkdir(dirname(planFilePath), { recursive: true });
186
+ await writeFile(planFilePath, content, 'utf-8');
187
+ }
188
+ /**
189
+ * Get plan file content for LLM context
190
+ */
191
+ async getPlanFileContent(planFilePath) {
192
+ const planInfo = await this.getPlanFileInfo(planFilePath);
193
+ if (!planInfo.exists) {
194
+ return 'Plan file does not exist yet. It will be created when the LLM updates it.';
195
+ }
196
+ return planInfo.content || '';
197
+ }
198
+ /**
199
+ * Generate phase-specific plan file guidance optimized for beads
200
+ */
201
+ generatePlanFileGuidance(phase) {
202
+ if (!this.stateMachine) {
203
+ throw new Error('State machine not set. This should not happen as state machine is always loaded.');
204
+ }
205
+ const phaseDefinition = this.stateMachine.states[phase];
206
+ if (!phaseDefinition) {
207
+ logger.warn('Unknown phase for beads plan file guidance', { phase });
208
+ return `Update the ${this.capitalizePhase(phase)} section with current progress. Use bd CLI for all task management.`;
209
+ }
210
+ const capitalizedPhase = this.capitalizePhase(phase);
211
+ return `Update the ${capitalizedPhase} section with progress. Use bd CLI exclusively for task management - never use checkboxes. Document important decisions in the Key Decisions section.`;
212
+ }
213
+ /**
214
+ * Delete plan file
215
+ */
216
+ async deletePlanFile(planFilePath) {
217
+ logger.debug('Deleting beads plan file', { planFilePath });
218
+ try {
219
+ // Check if file exists first
220
+ await access(planFilePath);
221
+ // Import unlink dynamically to avoid issues
222
+ const { unlink } = await import('node:fs/promises');
223
+ await unlink(planFilePath);
224
+ logger.info('Beads plan file deleted successfully', { planFilePath });
225
+ return true;
226
+ }
227
+ catch (error) {
228
+ if (error.code === 'ENOENT') {
229
+ logger.debug('Beads plan file does not exist, nothing to delete', {
230
+ planFilePath,
231
+ });
232
+ return true; // Consider it successful if file doesn't exist
233
+ }
234
+ logger.error('Failed to delete beads plan file', error, {
235
+ planFilePath,
236
+ });
237
+ throw error;
238
+ }
239
+ }
240
+ /**
241
+ * Ensure plan file is deleted (verify deletion)
242
+ */
243
+ async ensurePlanFileDeleted(planFilePath) {
244
+ logger.debug('Ensuring beads plan file is deleted', { planFilePath });
245
+ try {
246
+ await access(planFilePath);
247
+ // If we reach here, file still exists
248
+ logger.warn('Beads plan file still exists after deletion attempt', {
249
+ planFilePath,
250
+ });
251
+ return false;
252
+ }
253
+ catch (error) {
254
+ if (error.code === 'ENOENT') {
255
+ logger.debug('Beads plan file successfully deleted (does not exist)', {
256
+ planFilePath,
257
+ });
258
+ return true;
259
+ }
260
+ // Some other error occurred
261
+ logger.error('Error checking beads plan file deletion', error, {
262
+ planFilePath,
263
+ });
264
+ throw error;
265
+ }
266
+ }
267
+ /**
268
+ * Capitalize phase name for display
269
+ */
270
+ capitalizePhase(phase) {
271
+ return phase
272
+ .split('_')
273
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
274
+ .join(' ');
275
+ }
276
+ /**
277
+ * Generate workflow documentation URL for predefined workflows
278
+ */
279
+ generateWorkflowDocumentationUrl(workflowName) {
280
+ // Don't generate URL for custom workflows
281
+ if (workflowName === 'custom') {
282
+ return undefined;
283
+ }
284
+ // Generate URL for predefined workflows
285
+ return `https://mrsimpson.github.io/responsible-vibe-mcp/workflows/${workflowName}`;
286
+ }
287
+ }
288
+ //# sourceMappingURL=beads-plan-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads-plan-manager.js","sourceRoot":"","sources":["../../../src/components/beads/beads-plan-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Beads Task Backend Client
3
+ *
4
+ * Implementation of ITaskBackendClient for beads task management system.
5
+ * Handles CLI operations and task validation for beads backend.
6
+ */
7
+ import { type ITaskBackendClient, type BackendTask, type TaskValidationResult } from '@codemcp/workflows-core';
8
+ /**
9
+ * Beads-specific implementation of task backend client
10
+ */
11
+ export declare class BeadsTaskBackendClient implements ITaskBackendClient {
12
+ private projectPath;
13
+ constructor(projectPath: string);
14
+ /**
15
+ * Execute a beads command safely
16
+ */
17
+ private executeBeadsCommand;
18
+ /**
19
+ * Check if beads backend is available
20
+ */
21
+ isAvailable(): Promise<boolean>;
22
+ /**
23
+ * Get all open tasks for a given parent task
24
+ */
25
+ getOpenTasks(parentTaskId: string): Promise<BackendTask[]>;
26
+ /**
27
+ * Validate that all tasks under a parent are completed
28
+ */
29
+ validateTasksCompleted(parentTaskId: string): Promise<TaskValidationResult>;
30
+ /**
31
+ * Create a new task under a parent
32
+ */
33
+ createTask(title: string, parentTaskId: string, priority?: number): Promise<string>;
34
+ /**
35
+ * Update task status
36
+ */
37
+ updateTaskStatus(taskId: string, status: 'open' | 'in_progress' | 'completed' | 'cancelled'): Promise<void>;
38
+ /**
39
+ * Map our status enum to beads CLI status values
40
+ */
41
+ private mapStatusToBeads;
42
+ }
43
+ //# sourceMappingURL=beads-task-backend-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads-task-backend-client.d.ts","sourceRoot":"","sources":["../../../src/components/beads/beads-task-backend-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AAMjC;;GAEG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAI/B;;OAEG;YACW,mBAAmB;IAwCjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA+ChE;;OAEG;IACG,sBAAsB,CAC1B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC;IAahC;;OAEG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,QAAQ,SAAI,GACX,OAAO,CAAC,MAAM,CAAC;IAgClB;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,GACzD,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAgBzB"}