@codemcp/workflows 4.10.1 → 4.10.3
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/.turbo/turbo-build.log +1 -1
- package/dist/components/beads/beads-instruction-generator.d.ts +4 -8
- package/dist/components/beads/beads-instruction-generator.d.ts.map +1 -1
- package/dist/components/beads/beads-instruction-generator.js +28 -51
- package/dist/components/beads/beads-instruction-generator.js.map +1 -1
- package/dist/components/beads/beads-task-backend-client.d.ts.map +1 -1
- package/dist/components/beads/beads-task-backend-client.js +1 -4
- package/dist/components/beads/beads-task-backend-client.js.map +1 -1
- package/dist/plugin-system/beads-plugin.d.ts +70 -0
- package/dist/plugin-system/beads-plugin.d.ts.map +1 -0
- package/dist/plugin-system/beads-plugin.js +459 -0
- package/dist/plugin-system/beads-plugin.js.map +1 -0
- package/dist/plugin-system/index.d.ts +9 -0
- package/dist/plugin-system/index.d.ts.map +1 -0
- package/dist/plugin-system/index.js +9 -0
- package/dist/plugin-system/index.js.map +1 -0
- package/dist/plugin-system/plugin-interfaces.d.ts +99 -0
- package/dist/plugin-system/plugin-interfaces.d.ts.map +1 -0
- package/dist/plugin-system/plugin-interfaces.js +9 -0
- package/dist/plugin-system/plugin-interfaces.js.map +1 -0
- package/dist/plugin-system/plugin-registry.d.ts +44 -0
- package/dist/plugin-system/plugin-registry.d.ts.map +1 -0
- package/dist/plugin-system/plugin-registry.js +132 -0
- package/dist/plugin-system/plugin-registry.js.map +1 -0
- package/dist/server-config.d.ts.map +1 -1
- package/dist/server-config.js +28 -8
- package/dist/server-config.js.map +1 -1
- package/dist/tool-handlers/conduct-review.d.ts.map +1 -1
- package/dist/tool-handlers/conduct-review.js +1 -2
- package/dist/tool-handlers/conduct-review.js.map +1 -1
- package/dist/tool-handlers/get-tool-info.d.ts +0 -1
- package/dist/tool-handlers/get-tool-info.d.ts.map +1 -1
- package/dist/tool-handlers/get-tool-info.js +0 -1
- package/dist/tool-handlers/get-tool-info.js.map +1 -1
- package/dist/tool-handlers/proceed-to-phase.d.ts +0 -7
- package/dist/tool-handlers/proceed-to-phase.d.ts.map +1 -1
- package/dist/tool-handlers/proceed-to-phase.js +15 -95
- package/dist/tool-handlers/proceed-to-phase.js.map +1 -1
- package/dist/tool-handlers/resume-workflow.d.ts +0 -1
- package/dist/tool-handlers/resume-workflow.d.ts.map +1 -1
- package/dist/tool-handlers/resume-workflow.js +0 -1
- package/dist/tool-handlers/resume-workflow.js.map +1 -1
- package/dist/tool-handlers/start-development.d.ts +0 -16
- package/dist/tool-handlers/start-development.d.ts.map +1 -1
- package/dist/tool-handlers/start-development.js +29 -130
- package/dist/tool-handlers/start-development.js.map +1 -1
- package/dist/tool-handlers/whats-next.d.ts +0 -2
- package/dist/tool-handlers/whats-next.d.ts.map +1 -1
- package/dist/tool-handlers/whats-next.js +1 -2
- package/dist/tool-handlers/whats-next.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/beads/beads-instruction-generator.ts +32 -64
- package/src/components/beads/beads-task-backend-client.ts +1 -4
- package/src/plugin-system/beads-plugin.ts +641 -0
- package/src/plugin-system/index.ts +20 -0
- package/src/plugin-system/plugin-interfaces.ts +154 -0
- package/src/plugin-system/plugin-registry.ts +190 -0
- package/src/server-config.ts +30 -8
- package/src/tool-handlers/conduct-review.ts +1 -2
- package/src/tool-handlers/get-tool-info.ts +0 -2
- package/src/tool-handlers/proceed-to-phase.ts +19 -139
- package/src/tool-handlers/resume-workflow.ts +0 -2
- package/src/tool-handlers/start-development.ts +35 -213
- package/src/tool-handlers/whats-next.ts +1 -4
- package/src/types.ts +2 -0
- package/test/e2e/beads-plugin-integration.test.ts +1594 -0
- package/test/e2e/core-functionality.test.ts +3 -12
- package/test/e2e/mcp-contract.test.ts +0 -31
- package/test/e2e/plugin-system-integration.test.ts +1421 -0
- package/test/e2e/state-management.test.ts +1 -5
- package/test/e2e/workflow-integration.test.ts +2 -11
- package/test/unit/beads-instruction-generator.test.ts +235 -103
- package/test/unit/beads-phase-task-id-integration.test.ts +7 -29
- package/test/unit/beads-plugin-behavioral.test.ts +512 -0
- package/test/unit/beads-plugin.test.ts +94 -0
- package/test/unit/plugin-error-handling.test.ts +240 -0
- package/test/unit/proceed-to-phase-plugin-integration.test.ts +150 -0
- package/test/unit/resume-workflow.test.ts +0 -1
- package/test/unit/server-config-plugin-registry.test.ts +81 -0
- package/test/unit/server-tools.test.ts +0 -1
- package/test/unit/start-development-goal-extraction.test.ts +22 -16
- package/test/utils/test-helpers.ts +3 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/components/server-components-factory.d.ts +0 -39
- package/dist/components/server-components-factory.d.ts.map +0 -1
- package/dist/components/server-components-factory.js +0 -62
- package/dist/components/server-components-factory.js.map +0 -1
- package/src/components/server-components-factory.ts +0 -86
- package/test/e2e/component-substitution.test.ts +0 -208
- package/test/unit/beads-integration-filename.test.ts +0 -93
- package/test/unit/server-components-factory.test.ts +0 -279
package/.turbo/turbo-build.log
CHANGED
|
@@ -4,16 +4,15 @@
|
|
|
4
4
|
* Beads-specific implementation of IInstructionGenerator.
|
|
5
5
|
* Generates instructions optimized for beads task management workflow.
|
|
6
6
|
*/
|
|
7
|
-
import { type IInstructionGenerator, type InstructionContext, type GeneratedInstructions, type YamlStateMachine
|
|
8
|
-
import { BeadsTaskBackendClient } from './beads-task-backend-client.js';
|
|
7
|
+
import { type IInstructionGenerator, type InstructionContext, type GeneratedInstructions, type YamlStateMachine } from '@codemcp/workflows-core';
|
|
9
8
|
/**
|
|
10
9
|
* Beads-specific instruction generator
|
|
11
10
|
*/
|
|
12
11
|
export declare class BeadsInstructionGenerator implements IInstructionGenerator {
|
|
13
12
|
private projectDocsManager;
|
|
14
|
-
constructor(
|
|
13
|
+
constructor();
|
|
15
14
|
/**
|
|
16
|
-
* Set the state machine definition (
|
|
15
|
+
* Set the state machine definition (interface requirement)
|
|
17
16
|
*/
|
|
18
17
|
setStateMachine(_stateMachine: YamlStateMachine): void;
|
|
19
18
|
/**
|
|
@@ -35,10 +34,7 @@ export declare class BeadsInstructionGenerator implements IInstructionGenerator
|
|
|
35
34
|
/**
|
|
36
35
|
* Generate beads-specific task management guidance
|
|
37
36
|
*/
|
|
38
|
-
private
|
|
39
|
-
/**
|
|
40
|
-
* Extract phase task ID from plan file (simplified implementation)
|
|
41
|
-
*/
|
|
37
|
+
private generateBeadsCLIGuidance;
|
|
42
38
|
private extractPhaseTaskId;
|
|
43
39
|
/**
|
|
44
40
|
* Capitalize phase name for display
|
|
@@ -1 +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,
|
|
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,EAEtB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;IACrE,OAAO,CAAC,kBAAkB,CAAqB;;IAM/C;;OAEG;IACH,eAAe,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI;IAItD;;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;IAkCtC;;OAEG;YACW,wBAAwB;YA0CxB,kBAAkB;IA0ChC;;OAEG;IACH,OAAO,CAAC,eAAe;CAMxB"}
|
|
@@ -4,22 +4,20 @@
|
|
|
4
4
|
* Beads-specific implementation of IInstructionGenerator.
|
|
5
5
|
* Generates instructions optimized for beads task management workflow.
|
|
6
6
|
*/
|
|
7
|
-
import { ProjectDocsManager,
|
|
7
|
+
import { ProjectDocsManager, } from '@codemcp/workflows-core';
|
|
8
8
|
/**
|
|
9
9
|
* Beads-specific instruction generator
|
|
10
10
|
*/
|
|
11
11
|
export class BeadsInstructionGenerator {
|
|
12
12
|
projectDocsManager;
|
|
13
|
-
constructor(
|
|
13
|
+
constructor() {
|
|
14
14
|
this.projectDocsManager = new ProjectDocsManager();
|
|
15
|
-
// Task backend client and detector may be used in future enhancements
|
|
16
15
|
}
|
|
17
16
|
/**
|
|
18
|
-
* Set the state machine definition (
|
|
17
|
+
* Set the state machine definition (interface requirement)
|
|
19
18
|
*/
|
|
20
19
|
setStateMachine(_stateMachine) {
|
|
21
|
-
//
|
|
22
|
-
return;
|
|
20
|
+
// No-op: beads uses CLI for state management
|
|
23
21
|
}
|
|
24
22
|
/**
|
|
25
23
|
* Generate comprehensive instructions optimized for beads workflow
|
|
@@ -61,12 +59,11 @@ export class BeadsInstructionGenerator {
|
|
|
61
59
|
* Enhance instructions with beads-specific guidance
|
|
62
60
|
*/
|
|
63
61
|
async enhanceBeadsInstructions(baseInstructions, context) {
|
|
64
|
-
const {
|
|
62
|
+
const { planFileExists } = context;
|
|
65
63
|
// Generate beads-specific task management guidance
|
|
66
|
-
const beadsTaskGuidance = await this.
|
|
64
|
+
const beadsTaskGuidance = await this.generateBeadsCLIGuidance(context);
|
|
67
65
|
// Beads-optimized instruction structure
|
|
68
|
-
|
|
69
|
-
${baseInstructions}
|
|
66
|
+
let enhanced = `${baseInstructions}
|
|
70
67
|
|
|
71
68
|
**Plan File Guidance:**
|
|
72
69
|
Use the plan file as memory for the current objective
|
|
@@ -74,71 +71,51 @@ Use the plan file as memory for the current objective
|
|
|
74
71
|
- Add relevant notes to help maintain context
|
|
75
72
|
- Do NOT enter tasks in the plan file, use beads CLI exclusively for task management
|
|
76
73
|
|
|
77
|
-
**🔧 BD CLI Task Management:**
|
|
78
74
|
${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
75
|
// Add plan file creation note if needed
|
|
92
76
|
if (!planFileExists) {
|
|
93
|
-
|
|
77
|
+
enhanced +=
|
|
94
78
|
'\n\n**Note**: Plan file will be created when you first update it.';
|
|
95
79
|
}
|
|
96
80
|
// Add beads-specific reminders
|
|
97
|
-
|
|
81
|
+
enhanced += `\n\n**Important Reminders:**
|
|
98
82
|
- Use ONLY bd CLI tool for task management - do not use your own task management tools
|
|
99
83
|
- Call whats_next() after the next user message to maintain the development workflow`;
|
|
100
|
-
return
|
|
84
|
+
return enhanced;
|
|
101
85
|
}
|
|
102
86
|
/**
|
|
103
87
|
* Generate beads-specific task management guidance
|
|
104
88
|
*/
|
|
105
|
-
async
|
|
106
|
-
const {
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
89
|
+
async generateBeadsCLIGuidance(context) {
|
|
90
|
+
const { instructionSource } = context;
|
|
91
|
+
// For whats_next, provide detailed guidance
|
|
92
|
+
if (instructionSource === 'whats_next') {
|
|
93
|
+
let additionalInstructions = `**bd Task Management:**
|
|
94
|
+
`;
|
|
95
|
+
const phaseTaskId = await this.extractPhaseTaskId(context);
|
|
96
|
+
if (!phaseTaskId) {
|
|
97
|
+
return (additionalInstructions +
|
|
98
|
+
`- Use bd CLI tool exclusively
|
|
111
99
|
- **Start by listing ready tasks**: \`bd list --parent <phase-task-id> --status open\`
|
|
112
100
|
- **Create new tasks**: \`bd create 'Task title' --parent <phase-task-id> -p <priority>\`
|
|
113
101
|
- **Update status when working**: \`bd update <task-id> --status in_progress\`
|
|
114
102
|
- **Complete tasks**: \`bd close <task-id>\`
|
|
115
103
|
- **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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
**Focus on ${this.capitalizePhase(phase)} Phase Tasks** (subtasks of \`${phaseTaskId}\`):
|
|
104
|
+
- Add new tasks as they are identified during your work with the user`);
|
|
105
|
+
}
|
|
106
|
+
return (additionalInstructions +
|
|
107
|
+
`
|
|
108
|
+
**Focus on subtasks of \`${phaseTaskId}\`**:
|
|
122
109
|
• \`bd list --parent ${phaseTaskId} --status open\` - List ready work items
|
|
123
110
|
• \`bd update <task-id> --status in_progress\` - Start working on a specific task
|
|
124
111
|
• \`bd close <task-id>\` - Mark task complete when finished
|
|
125
112
|
|
|
126
113
|
**New Tasks for Current Phase**:
|
|
127
114
|
• \`bd create 'Task description' --parent ${phaseTaskId} -p <priority>\` - Create work item under current phase
|
|
128
|
-
• \`bd dep add <task-id> <depends-on-id>\` - Define dependencies for a task
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
**Essential bd Commands**:
|
|
132
|
-
• \`bd list --parent ${phaseTaskId} --status open\` - List ready work items
|
|
133
|
-
• \`bd update <task-id> --status in_progress\` - Start working
|
|
134
|
-
• \`bd close <task-id>\` - Complete work item
|
|
135
|
-
• \`bd show ${phaseTaskId}\` - View phase and its work items
|
|
136
|
-
|
|
137
|
-
**Immediate Action**: Run \`bd list --parent ${phaseTaskId} --status open\` to see ready tasks.`;
|
|
115
|
+
• \`bd dep add <task-id> <depends-on-id>\` - Define dependencies for a task:`);
|
|
116
|
+
}
|
|
117
|
+
return '';
|
|
138
118
|
}
|
|
139
|
-
/**
|
|
140
|
-
* Extract phase task ID from plan file (simplified implementation)
|
|
141
|
-
*/
|
|
142
119
|
async extractPhaseTaskId(context) {
|
|
143
120
|
try {
|
|
144
121
|
const { readFile } = await import('node:fs/promises');
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"beads-instruction-generator.js","sourceRoot":"","sources":["../../../src/components/beads/beads-instruction-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;IA4ChE;;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"}
|
|
@@ -75,8 +75,7 @@ export class BeadsTaskBackendClient {
|
|
|
75
75
|
if (!result.success || !result.stdout) {
|
|
76
76
|
return [];
|
|
77
77
|
}
|
|
78
|
-
// Parse
|
|
79
|
-
// This is a simplified parser - would need to be adjusted based on actual beads output format
|
|
78
|
+
// Parse beads CLI text output
|
|
80
79
|
const lines = result.stdout.trim().split('\n');
|
|
81
80
|
const tasks = [];
|
|
82
81
|
for (const line of lines) {
|
|
@@ -84,8 +83,6 @@ export class BeadsTaskBackendClient {
|
|
|
84
83
|
!line.startsWith('○') &&
|
|
85
84
|
!line.startsWith('●') &&
|
|
86
85
|
!line.includes('Tip:')) {
|
|
87
|
-
// Extract task ID and title from beads output format
|
|
88
|
-
// This is based on observed beads CLI output format
|
|
89
86
|
const match = line.match(/^○?\s*([^\s]+)\s+.*?\s+-\s+(.+)$/);
|
|
90
87
|
if (match) {
|
|
91
88
|
tasks.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beads-task-backend-client.js","sourceRoot":"","sources":["../../../src/components/beads/beads-task-backend-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,MAAM,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACzB,WAAW,CAAS;IAE5B,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC/B,IAAc;QAEd,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;gBACtC,OAAO;gBACP,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;gBAC9C,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aAClC,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACnC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,KAIjB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAClC,IAAI;gBACJ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EACJ,SAAS,CAAC,MAAM;oBAChB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1D,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,YAAoB;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;gBAC5C,MAAM;gBACN,UAAU;gBACV,YAAY;gBACZ,UAAU;gBACV,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"beads-task-backend-client.js","sourceRoot":"","sources":["../../../src/components/beads/beads-task-backend-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beads Plugin Implementation
|
|
3
|
+
*
|
|
4
|
+
* Plugin that integrates beads task management system with responsible-vibe-mcp.
|
|
5
|
+
* Encapsulates ALL beads-specific functionality to maintain zero core application
|
|
6
|
+
* coupling as specified in plugin architecture design.
|
|
7
|
+
*
|
|
8
|
+
* Core Principle: This plugin must be completely self-contained and the core
|
|
9
|
+
* application must have ZERO knowledge of beads functionality.
|
|
10
|
+
*/
|
|
11
|
+
import type { IPlugin, PluginHooks } from './plugin-interfaces.js';
|
|
12
|
+
/**
|
|
13
|
+
* BeadsPlugin class implementing the IPlugin interface
|
|
14
|
+
*
|
|
15
|
+
* Activation: Only when process.env.TASK_BACKEND === 'beads'
|
|
16
|
+
* Priority: Sequence 100 (middle priority)
|
|
17
|
+
* Encapsulation: All beads functionality contained within this plugin
|
|
18
|
+
*/
|
|
19
|
+
export declare class BeadsPlugin implements IPlugin {
|
|
20
|
+
private projectPath;
|
|
21
|
+
private beadsStateManager;
|
|
22
|
+
private beadsTaskBackendClient;
|
|
23
|
+
private planManager;
|
|
24
|
+
constructor(options: {
|
|
25
|
+
projectPath: string;
|
|
26
|
+
});
|
|
27
|
+
getName(): string;
|
|
28
|
+
getSequence(): number;
|
|
29
|
+
isEnabled(): boolean;
|
|
30
|
+
getHooks(): PluginHooks;
|
|
31
|
+
/**
|
|
32
|
+
* Handle beforePhaseTransition hook
|
|
33
|
+
* Replaces validateBeadsTaskCompletion() method from proceed-to-phase.ts
|
|
34
|
+
*/
|
|
35
|
+
private handleBeforePhaseTransition;
|
|
36
|
+
/**
|
|
37
|
+
* Handle afterStartDevelopment hook
|
|
38
|
+
* Replaces setupBeadsIntegration() method from start-development.ts
|
|
39
|
+
* Implements graceful degradation: continues app operation even if beads operations fail
|
|
40
|
+
*/
|
|
41
|
+
private handleAfterStartDevelopment;
|
|
42
|
+
/**
|
|
43
|
+
* Handle afterPlanFileCreated hook
|
|
44
|
+
* Enhances the plan file with beads-specific templates and placeholders
|
|
45
|
+
*
|
|
46
|
+
* This hook is called after a plan file is created. For beads integration,
|
|
47
|
+
* it ensures the plan file has TBD placeholders for phase task IDs that
|
|
48
|
+
* will be filled in later by afterStartDevelopment.
|
|
49
|
+
*
|
|
50
|
+
* Note: Task IDs themselves are created in afterStartDevelopment, not here.
|
|
51
|
+
* This hook ensures the plan has the proper structure to receive them.
|
|
52
|
+
*/
|
|
53
|
+
private handleAfterPlanFileCreated;
|
|
54
|
+
/**
|
|
55
|
+
* Validate beads task completion before phase transition
|
|
56
|
+
* Implements graceful error handling: logs errors but continues on non-validation failures
|
|
57
|
+
*/
|
|
58
|
+
private validateBeadsTaskCompletion;
|
|
59
|
+
/**
|
|
60
|
+
* Extract Goal section content from plan file
|
|
61
|
+
* Returns the goal content if it exists and is meaningful, otherwise undefined
|
|
62
|
+
*/
|
|
63
|
+
private extractGoalFromPlan;
|
|
64
|
+
/**
|
|
65
|
+
* Update plan file to include beads phase task IDs in comments
|
|
66
|
+
* Implements graceful degradation: logs errors but continues app operation if update fails
|
|
67
|
+
*/
|
|
68
|
+
private updatePlanFileWithPhaseTaskIds;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=beads-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-plugin.d.ts","sourceRoot":"","sources":["../../src/plugin-system/beads-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EAIZ,MAAM,wBAAwB,CAAC;AAYhC;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,OAAO;IACzC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,WAAW,CAAc;gBAErB,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE;IAW5C,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIrB,SAAS,IAAI,OAAO;IASpB,QAAQ,IAAI,WAAW;IAQvB;;;OAGG;YACW,2BAA2B;IA8CzC;;;;OAIG;YACW,2BAA2B;IAkKzC;;;;;;;;;;OAUG;YACW,0BAA0B;IAuBxC;;;OAGG;YACW,2BAA2B;IAsKzC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA+C3B;;;OAGG;YACW,8BAA8B;CAsF7C"}
|