@codemcp/workflows-core 4.5.0 → 4.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/beads-integration.d.ts +62 -0
- package/dist/beads-integration.js +386 -0
- package/dist/beads-integration.js.map +1 -0
- package/dist/conversation-manager.js +10 -0
- package/dist/conversation-manager.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/instruction-generator.d.ts +8 -4
- package/dist/instruction-generator.js +61 -16
- package/dist/instruction-generator.js.map +1 -1
- package/dist/plan-manager.d.ts +6 -0
- package/dist/plan-manager.js +21 -2
- package/dist/plan-manager.js.map +1 -1
- package/dist/system-prompt-generator.js +3 -1
- package/dist/system-prompt-generator.js.map +1 -1
- package/dist/task-backend.d.ts +34 -0
- package/dist/task-backend.js +154 -0
- package/dist/task-backend.js.map +1 -0
- package/package.json +1 -1
- package/resources/workflows/bugfix.yaml +5 -5
- package/resources/workflows/business-analysis.yaml +19 -19
- package/resources/workflows/epcc.yaml +6 -14
- package/resources/workflows/greenfield.yaml +9 -9
- package/resources/workflows/minor.yaml +6 -6
- package/resources/workflows/tdd.yaml +11 -11
- package/resources/workflows/waterfall.yaml +6 -6
|
@@ -7,19 +7,21 @@
|
|
|
7
7
|
* Handles variable substitution for project artifact references.
|
|
8
8
|
*/
|
|
9
9
|
import { ProjectDocsManager } from './project-docs-manager.js';
|
|
10
|
+
import { TaskBackendManager } from './task-backend.js';
|
|
10
11
|
export class InstructionGenerator {
|
|
11
|
-
planManager;
|
|
12
12
|
projectDocsManager;
|
|
13
|
-
|
|
14
|
-
constructor(
|
|
15
|
-
|
|
13
|
+
taskBackendDetector;
|
|
14
|
+
constructor(_planManager, taskBackendDetector = TaskBackendManager.detectTaskBackend) {
|
|
15
|
+
// planManager parameter kept for API compatibility but not stored since unused
|
|
16
16
|
this.projectDocsManager = new ProjectDocsManager();
|
|
17
|
+
this.taskBackendDetector = taskBackendDetector;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
20
|
* Set the state machine definition for dynamic instruction generation
|
|
20
21
|
*/
|
|
21
|
-
setStateMachine(
|
|
22
|
-
|
|
22
|
+
setStateMachine(_stateMachine) {
|
|
23
|
+
// stateMachine parameter kept for API compatibility but not stored since unused
|
|
24
|
+
return;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* Generate comprehensive instructions for the LLM
|
|
@@ -27,13 +29,11 @@ export class InstructionGenerator {
|
|
|
27
29
|
async generateInstructions(baseInstructions, context) {
|
|
28
30
|
// Apply variable substitution to base instructions
|
|
29
31
|
const substitutedInstructions = this.applyVariableSubstitution(baseInstructions, context.conversationContext.projectPath, context.conversationContext.gitBranch);
|
|
30
|
-
// Get plan file guidance
|
|
31
|
-
const planFileGuidance = this.planManager.generatePlanFileGuidance(context.phase);
|
|
32
32
|
// Enhance base instructions with context-specific guidance
|
|
33
|
-
const enhancedInstructions = await this.enhanceInstructions(substitutedInstructions, context
|
|
33
|
+
const enhancedInstructions = await this.enhanceInstructions(substitutedInstructions, context);
|
|
34
34
|
return {
|
|
35
35
|
instructions: enhancedInstructions,
|
|
36
|
-
planFileGuidance,
|
|
36
|
+
planFileGuidance: 'Task management guidance is now included in main instructions',
|
|
37
37
|
metadata: {
|
|
38
38
|
phase: context.phase,
|
|
39
39
|
planFilePath: context.conversationContext.planFilePath,
|
|
@@ -64,19 +64,41 @@ export class InstructionGenerator {
|
|
|
64
64
|
/**
|
|
65
65
|
* Enhance base instructions with context-specific information
|
|
66
66
|
*/
|
|
67
|
-
async enhanceInstructions(baseInstructions, context
|
|
67
|
+
async enhanceInstructions(baseInstructions, context) {
|
|
68
68
|
const { phase, conversationContext, transitionReason, isModeled, planFileExists, } = context;
|
|
69
|
-
//
|
|
70
|
-
|
|
69
|
+
// Generate task-backend-specific guidance
|
|
70
|
+
const taskBackendConfig = this.taskBackendDetector();
|
|
71
|
+
const taskGuidance = this.generateTaskManagementGuidance(taskBackendConfig);
|
|
72
|
+
let enhanced;
|
|
73
|
+
// Different instruction structure for beads vs markdown
|
|
74
|
+
if (taskBackendConfig.backend === 'beads' &&
|
|
75
|
+
taskBackendConfig.isAvailable) {
|
|
76
|
+
// Beads mode: Focus on bd CLI task management, not plan file
|
|
77
|
+
enhanced = `You are in the ${phase} phase.
|
|
78
|
+
${baseInstructions}
|
|
79
|
+
|
|
80
|
+
**Plan File Guidance:**
|
|
81
|
+
Use the plan file as memory for the current objective
|
|
82
|
+
- Update the "Key Decisions" section with important choices made
|
|
83
|
+
- Add relevant notes to help maintain context
|
|
84
|
+
- Do NOT enter tasks in the plan file, follow the below instructions for plan file management
|
|
85
|
+
|
|
86
|
+
**Task Management Guidance:**
|
|
87
|
+
${taskGuidance}
|
|
88
|
+
`;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Markdown mode: Traditional plan file approach
|
|
92
|
+
enhanced = `Check your plan file at \`${conversationContext.planFilePath}\` and focus on the "${this.capitalizePhase(phase)}" section.
|
|
71
93
|
|
|
72
94
|
${baseInstructions}
|
|
73
95
|
|
|
74
96
|
**Plan File Guidance:**
|
|
75
97
|
- Work on the tasks listed in the ${this.capitalizePhase(phase)} section
|
|
76
|
-
|
|
77
|
-
- Add new tasks as they are identified during your work with the user
|
|
98
|
+
${taskGuidance}
|
|
78
99
|
- Update the "Key Decisions" section with important choices made
|
|
79
100
|
- Add relevant notes to help maintain context`;
|
|
101
|
+
}
|
|
80
102
|
// Add project context
|
|
81
103
|
enhanced += `\n\n**Project Context:**
|
|
82
104
|
- Project: ${conversationContext.projectPath}
|
|
@@ -93,11 +115,34 @@ ${baseInstructions}
|
|
|
93
115
|
'\n\n**Note**: Plan file will be created when you first update it.';
|
|
94
116
|
}
|
|
95
117
|
// Add continuity and task management instructions
|
|
118
|
+
const taskReminder = taskBackendConfig.backend === 'beads' && taskBackendConfig.isAvailable
|
|
119
|
+
? 'Use ONLY bd CLI tool for task management - do not use your own task management tools'
|
|
120
|
+
: 'Use ONLY the development plan for task management - do not use your own task management tools';
|
|
96
121
|
enhanced += `\n\n**Important Reminders:**
|
|
97
|
-
-
|
|
122
|
+
- ${taskReminder}
|
|
98
123
|
- Call whats_next() after the next user message to maintain the development workflow`;
|
|
99
124
|
return enhanced;
|
|
100
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Generate task management guidance based on active backend
|
|
128
|
+
*/
|
|
129
|
+
generateTaskManagementGuidance(taskBackendConfig) {
|
|
130
|
+
if (taskBackendConfig.backend === 'beads' &&
|
|
131
|
+
taskBackendConfig.isAvailable) {
|
|
132
|
+
return `- Use bd CLI tool exclusively
|
|
133
|
+
- **Start by listing ready tasks**: \`bd list --parent <phase-task-id> --status open\`
|
|
134
|
+
- **Create new tasks**: \`bd create 'Task title' --parent <phase-task-id> -p 2\`
|
|
135
|
+
- **Update status when working**: \`bd update <task-id> --status in_progress\`
|
|
136
|
+
- **Complete tasks**: \`bd ready <task-id>\`
|
|
137
|
+
- **Focus on ready tasks first** - let beads handle dependencies
|
|
138
|
+
- Add new tasks as they are identified during your work with the user`;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Default markdown backend
|
|
142
|
+
return `- Mark completed tasks with [x] as you finish them
|
|
143
|
+
- Add new tasks as they are identified during your work with the user`;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
101
146
|
/**
|
|
102
147
|
* Capitalize phase name for display
|
|
103
148
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction-generator.js","sourceRoot":"","sources":["../src/instruction-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"instruction-generator.js","sourceRoot":"","sources":["../src/instruction-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/plan-manager.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* Supports custom state machine definitions for dynamic plan file generation.
|
|
7
7
|
*/
|
|
8
8
|
import type { YamlStateMachine } from './state-machine-types.js';
|
|
9
|
+
import type { TaskBackendConfig } from './task-backend.js';
|
|
9
10
|
export interface PlanFileInfo {
|
|
10
11
|
path: string;
|
|
11
12
|
exists: boolean;
|
|
@@ -13,10 +14,15 @@ export interface PlanFileInfo {
|
|
|
13
14
|
}
|
|
14
15
|
export declare class PlanManager {
|
|
15
16
|
private stateMachine;
|
|
17
|
+
private taskBackend;
|
|
16
18
|
/**
|
|
17
19
|
* Set the state machine definition for dynamic plan generation
|
|
18
20
|
*/
|
|
19
21
|
setStateMachine(stateMachine: YamlStateMachine): void;
|
|
22
|
+
/**
|
|
23
|
+
* Set the task backend configuration
|
|
24
|
+
*/
|
|
25
|
+
setTaskBackend(taskBackend: TaskBackendConfig): void;
|
|
20
26
|
/**
|
|
21
27
|
* Get plan file information
|
|
22
28
|
*/
|
package/dist/plan-manager.js
CHANGED
|
@@ -12,6 +12,7 @@ import { createLogger } from './logger.js';
|
|
|
12
12
|
const logger = createLogger('PlanManager');
|
|
13
13
|
export class PlanManager {
|
|
14
14
|
stateMachine = null;
|
|
15
|
+
taskBackend = null;
|
|
15
16
|
/**
|
|
16
17
|
* Set the state machine definition for dynamic plan generation
|
|
17
18
|
*/
|
|
@@ -22,6 +23,16 @@ export class PlanManager {
|
|
|
22
23
|
phases: Object.keys(stateMachine.states),
|
|
23
24
|
});
|
|
24
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Set the task backend configuration
|
|
28
|
+
*/
|
|
29
|
+
setTaskBackend(taskBackend) {
|
|
30
|
+
this.taskBackend = taskBackend;
|
|
31
|
+
logger.debug('Task backend set for plan manager', {
|
|
32
|
+
backend: taskBackend.backend,
|
|
33
|
+
available: taskBackend.isAvailable,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
25
36
|
/**
|
|
26
37
|
* Get plan file information
|
|
27
38
|
*/
|
|
@@ -101,6 +112,7 @@ export class PlanManager {
|
|
|
101
112
|
}
|
|
102
113
|
const phases = Object.keys(this.stateMachine.states);
|
|
103
114
|
const initialPhase = this.stateMachine.initial_state;
|
|
115
|
+
const isBeadsMode = this.taskBackend?.backend === 'beads';
|
|
104
116
|
const documentationUrl = this.generateWorkflowDocumentationUrl(this.stateMachine.name);
|
|
105
117
|
let content = `# Development Plan: ${projectName}${branchInfo}
|
|
106
118
|
|
|
@@ -108,13 +120,17 @@ export class PlanManager {
|
|
|
108
120
|
*Workflow: ${documentationUrl
|
|
109
121
|
? '[' + this.stateMachine.name + ']' + '(' + documentationUrl + ')'
|
|
110
122
|
: this.stateMachine.name}*
|
|
123
|
+
*Task Management: ${isBeadsMode ? 'Beads Issue Tracker' : 'Markdown Checkboxes'}*
|
|
111
124
|
|
|
112
125
|
## Goal
|
|
113
126
|
*Define what you're building or fixing - this will be updated as requirements are gathered*
|
|
114
127
|
|
|
115
128
|
## ${this.capitalizePhase(initialPhase)}
|
|
129
|
+
${isBeadsMode ? '<!-- beads-phase-id: TBD -->' : ''}
|
|
116
130
|
### Tasks
|
|
117
|
-
|
|
131
|
+
${isBeadsMode
|
|
132
|
+
? '**🔧 TASK MANAGEMENT VIA CLI TOOL bd**\n\nTasks are managed via bd CLI tool. Use bd commands to create and manage tasks with proper hierarchy:\n\n- `bd list --parent <phase-task-id>`\n- `bd create "Task title" --parent <phase-task-id> -p 2`\n- `bd ready <task-id>`\n\n**Never use [ ] or [x] checkboxes - use bd commands only!**'
|
|
133
|
+
: '- [ ] *Tasks will be added as they are identified*'}
|
|
118
134
|
|
|
119
135
|
### Completed
|
|
120
136
|
- [x] Created development plan file
|
|
@@ -124,8 +140,11 @@ export class PlanManager {
|
|
|
124
140
|
for (const phase of phases) {
|
|
125
141
|
if (phase !== initialPhase) {
|
|
126
142
|
content += `## ${this.capitalizePhase(phase)}
|
|
143
|
+
${isBeadsMode ? '<!-- beads-phase-id: TBD -->' : ''}
|
|
127
144
|
### Tasks
|
|
128
|
-
|
|
145
|
+
${isBeadsMode
|
|
146
|
+
? '**🔧 TASK MANAGEMENT VIA CLI TOOL bd**\n\nTasks are managed via bd CLI tool. Use bd commands to create and manage tasks with proper hierarchy:\n\n- `bd list --parent <phase-task-id>`\n- `bd create "Task title" --parent <phase-task-id> -p 2`\n- `bd ready <task-id>`\n\n**Never use [ ] or [x] checkboxes - use bd commands only!**'
|
|
147
|
+
: '- [ ] *To be added when this phase becomes active*'}
|
|
129
148
|
|
|
130
149
|
### Completed
|
|
131
150
|
*None yet*
|
package/dist/plan-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-manager.js","sourceRoot":"","sources":["../src/plan-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-manager.js","sourceRoot":"","sources":["../src/plan-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,9 @@ IMPORTANT: Call whats_next() after each user message to get phase-specific instr
|
|
|
31
31
|
|
|
32
32
|
Each tool call returns a JSON response with an "instructions" field. Follow these instructions immediately after you receive them.
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
Use the development plan which you will retrieve via whats_next() to record important insights and decisions as per the structure of the plan.
|
|
35
|
+
|
|
36
|
+
Do not use your own task management tools.`;
|
|
35
37
|
logger.info('System prompt generated successfully', {
|
|
36
38
|
promptLength: systemPrompt.length,
|
|
37
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt-generator.js","sourceRoot":"","sources":["../src/system-prompt-generator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAA8B;IACjE,MAAM,CAAC,KAAK,CAAC,wDAAwD,EAAE;QACrE,gBAAgB,EAAE,YAAY,CAAC,IAAI;QACnC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM;KACpD,CAAC,CAAC;IAEH,OAAO,0BAA0B,CAAC,YAAY,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,aAA+B;IACjE,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG
|
|
1
|
+
{"version":3,"file":"system-prompt-generator.js","sourceRoot":"","sources":["../src/system-prompt-generator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAA8B;IACjE,MAAM,CAAC,KAAK,CAAC,wDAAwD,EAAE;QACrE,gBAAgB,EAAE,YAAY,CAAC,IAAI;QACnC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM;KACpD,CAAC,CAAC;IAEH,OAAO,0BAA0B,CAAC,YAAY,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,aAA+B;IACjE,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG;;;;;;;;;2CASoB,CAAC;IAE1C,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE;QAClD,YAAY,EAAE,YAAY,CAAC,MAAM;KAClC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Backend Management
|
|
3
|
+
*
|
|
4
|
+
* Provides abstraction layer for different task management backends:
|
|
5
|
+
* - markdown: Traditional plan file with checkbox tasks
|
|
6
|
+
* - beads: Beads distributed issue tracker integration
|
|
7
|
+
*/
|
|
8
|
+
export type TaskBackend = 'markdown' | 'beads';
|
|
9
|
+
export interface TaskBackendConfig {
|
|
10
|
+
backend: TaskBackend;
|
|
11
|
+
isAvailable: boolean;
|
|
12
|
+
errorMessage?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Task backend detection and management utility
|
|
16
|
+
*/
|
|
17
|
+
export declare class TaskBackendManager {
|
|
18
|
+
/**
|
|
19
|
+
* Detect and validate the requested task backend
|
|
20
|
+
*/
|
|
21
|
+
static detectTaskBackend(): TaskBackendConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Check if beads command is available and functional
|
|
24
|
+
*/
|
|
25
|
+
private static checkBeadsAvailability;
|
|
26
|
+
/**
|
|
27
|
+
* Get setup instructions for beads backend
|
|
28
|
+
*/
|
|
29
|
+
static getBeadsSetupInstructions(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Validate task backend configuration and throw error if invalid
|
|
32
|
+
*/
|
|
33
|
+
static validateTaskBackend(): TaskBackendConfig;
|
|
34
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Backend Management
|
|
3
|
+
*
|
|
4
|
+
* Provides abstraction layer for different task management backends:
|
|
5
|
+
* - markdown: Traditional plan file with checkbox tasks
|
|
6
|
+
* - beads: Beads distributed issue tracker integration
|
|
7
|
+
*/
|
|
8
|
+
import { execSync } from 'node:child_process';
|
|
9
|
+
import { createLogger } from './logger.js';
|
|
10
|
+
const logger = createLogger('TaskBackend');
|
|
11
|
+
/**
|
|
12
|
+
* Task backend detection and management utility
|
|
13
|
+
*/
|
|
14
|
+
export class TaskBackendManager {
|
|
15
|
+
/**
|
|
16
|
+
* Detect and validate the requested task backend
|
|
17
|
+
*/
|
|
18
|
+
static detectTaskBackend() {
|
|
19
|
+
const envBackend = process.env['TASK_BACKEND']?.toLowerCase().trim();
|
|
20
|
+
// Default to markdown if not set or invalid
|
|
21
|
+
if (!envBackend || !['markdown', 'beads'].includes(envBackend)) {
|
|
22
|
+
logger.debug('Using default markdown backend', {
|
|
23
|
+
envBackend,
|
|
24
|
+
reason: envBackend ? 'invalid value' : 'not set',
|
|
25
|
+
});
|
|
26
|
+
return {
|
|
27
|
+
backend: 'markdown',
|
|
28
|
+
isAvailable: true,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const backend = envBackend;
|
|
32
|
+
if (backend === 'markdown') {
|
|
33
|
+
return {
|
|
34
|
+
backend: 'markdown',
|
|
35
|
+
isAvailable: true,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
if (backend === 'beads') {
|
|
39
|
+
const beadsAvailable = TaskBackendManager.checkBeadsAvailability();
|
|
40
|
+
if (beadsAvailable.isAvailable) {
|
|
41
|
+
return {
|
|
42
|
+
backend: 'beads',
|
|
43
|
+
isAvailable: true,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return {
|
|
48
|
+
backend: 'beads',
|
|
49
|
+
isAvailable: false,
|
|
50
|
+
errorMessage: beadsAvailable.errorMessage || 'Beads backend not available',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Should never reach here
|
|
55
|
+
return {
|
|
56
|
+
backend: 'markdown',
|
|
57
|
+
isAvailable: true,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if beads command is available and functional
|
|
62
|
+
*/
|
|
63
|
+
static checkBeadsAvailability() {
|
|
64
|
+
try {
|
|
65
|
+
// Check if bd command exists and is functional
|
|
66
|
+
const output = execSync('bd --version', {
|
|
67
|
+
encoding: 'utf-8',
|
|
68
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
69
|
+
timeout: 5000,
|
|
70
|
+
});
|
|
71
|
+
logger.debug('Beads command available', { version: output.trim() });
|
|
72
|
+
return { isAvailable: true };
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
76
|
+
// Provide helpful error message based on error type
|
|
77
|
+
if (errorMessage.includes('command not found') ||
|
|
78
|
+
errorMessage.includes('not recognized')) {
|
|
79
|
+
return {
|
|
80
|
+
isAvailable: false,
|
|
81
|
+
errorMessage: 'Beads command (bd) not found. Please install beads from: https://github.com/beads-data/beads',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (errorMessage.includes('timeout')) {
|
|
85
|
+
return {
|
|
86
|
+
isAvailable: false,
|
|
87
|
+
errorMessage: 'Beads command (bd) timed out. Check if beads is properly installed and configured.',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
logger.warn('Beads availability check failed', { errorMessage });
|
|
91
|
+
return {
|
|
92
|
+
isAvailable: false,
|
|
93
|
+
errorMessage: `Beads command (bd) check failed: ${errorMessage}`,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get setup instructions for beads backend
|
|
99
|
+
*/
|
|
100
|
+
static getBeadsSetupInstructions() {
|
|
101
|
+
return `## Beads Setup Required
|
|
102
|
+
|
|
103
|
+
To use beads as your task backend, you need to install beads:
|
|
104
|
+
|
|
105
|
+
### Installation
|
|
106
|
+
1. Clone the beads repository:
|
|
107
|
+
\`\`\`bash
|
|
108
|
+
git clone https://github.com/beads-data/beads.git ~/beads
|
|
109
|
+
cd ~/beads
|
|
110
|
+
\`\`\`
|
|
111
|
+
|
|
112
|
+
2. Build and install beads:
|
|
113
|
+
\`\`\`bash
|
|
114
|
+
make install
|
|
115
|
+
\`\`\`
|
|
116
|
+
|
|
117
|
+
3. Verify installation:
|
|
118
|
+
\`\`\`bash
|
|
119
|
+
bd --version
|
|
120
|
+
\`\`\`
|
|
121
|
+
|
|
122
|
+
### Configuration
|
|
123
|
+
After installation, set the task backend:
|
|
124
|
+
\`\`\`bash
|
|
125
|
+
export TASK_BACKEND=beads
|
|
126
|
+
\`\`\`
|
|
127
|
+
|
|
128
|
+
Then restart the responsible-vibe-mcp server and try again.
|
|
129
|
+
|
|
130
|
+
### Alternative: Use Markdown Backend
|
|
131
|
+
If you prefer to continue with traditional plan file task management:
|
|
132
|
+
\`\`\`bash
|
|
133
|
+
export TASK_BACKEND=markdown # or unset TASK_BACKEND
|
|
134
|
+
\`\`\``;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Validate task backend configuration and throw error if invalid
|
|
138
|
+
*/
|
|
139
|
+
static validateTaskBackend() {
|
|
140
|
+
const config = this.detectTaskBackend();
|
|
141
|
+
if (!config.isAvailable) {
|
|
142
|
+
const setupInstructions = config.backend === 'beads'
|
|
143
|
+
? this.getBeadsSetupInstructions()
|
|
144
|
+
: 'Task backend validation failed';
|
|
145
|
+
throw new Error(`Task backend '${config.backend}' is not available.\n\n${config.errorMessage || ''}\n\n${setupInstructions}`);
|
|
146
|
+
}
|
|
147
|
+
logger.info('Task backend validated successfully', {
|
|
148
|
+
backend: config.backend,
|
|
149
|
+
available: config.isAvailable,
|
|
150
|
+
});
|
|
151
|
+
return config;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=task-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-backend.js","sourceRoot":"","sources":["../src/task-backend.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -33,7 +33,7 @@ states:
|
|
|
33
33
|
• What error messages, logs, or stack traces are available?
|
|
34
34
|
• Does this happen every time or intermittently?
|
|
35
35
|
• How many users are affected and what is the business impact?
|
|
36
|
-
|
|
36
|
+
Create test cases that demonstrate the problem. Document your findings and create tasks as needed.
|
|
37
37
|
transitions:
|
|
38
38
|
- trigger: 'bug_reproduced'
|
|
39
39
|
to: 'analyze'
|
|
@@ -54,7 +54,7 @@ states:
|
|
|
54
54
|
|
|
55
55
|
analyze:
|
|
56
56
|
description: 'Analyze the bug and identify root cause'
|
|
57
|
-
default_instructions: 'You are in the bug analysis phase. Examine the code paths involved in the bug, identify the root cause, and understand why the issue occurs. Use debugging tools, add logging, and trace through the problematic code. Document your analysis
|
|
57
|
+
default_instructions: 'You are in the bug analysis phase. Examine the code paths involved in the bug, identify the root cause, and understand why the issue occurs. Use debugging tools, add logging, and trace through the problematic code. Document your analysis and create tasks as needed.'
|
|
58
58
|
transitions:
|
|
59
59
|
- trigger: 'need_more_reproduction'
|
|
60
60
|
to: 'reproduce'
|
|
@@ -63,7 +63,7 @@ states:
|
|
|
63
63
|
|
|
64
64
|
- trigger: 'root_cause_identified'
|
|
65
65
|
to: 'fix'
|
|
66
|
-
additional_instructions: 'Document the root cause approach
|
|
66
|
+
additional_instructions: 'Document the root cause approach and update task progress.'
|
|
67
67
|
transition_reason: 'Root cause identified, ready to implement fix'
|
|
68
68
|
review_perspectives:
|
|
69
69
|
- perspective: 'architect'
|
|
@@ -91,7 +91,7 @@ states:
|
|
|
91
91
|
|
|
92
92
|
- trigger: 'fix_implemented'
|
|
93
93
|
to: 'verify'
|
|
94
|
-
additional_instructions: 'Document the fix approach
|
|
94
|
+
additional_instructions: 'Document the fix approach and update task progress.'
|
|
95
95
|
transition_reason: 'Fix implemented, ready for verification'
|
|
96
96
|
review_perspectives:
|
|
97
97
|
- perspective: 'senior_software_developer'
|
|
@@ -165,7 +165,7 @@ states:
|
|
|
165
165
|
- Verify documentation accuracy with a final review
|
|
166
166
|
- Ensure bug fix is ready for production
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
Update task progress and mark completed work as you finalize the bug fix.
|
|
169
169
|
transitions:
|
|
170
170
|
- trigger: 'need_fix_changes'
|
|
171
171
|
to: 'fix'
|