@codemcp/workflows-opencode 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +85 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/opencode-logger.d.ts +21 -0
- package/dist/opencode-logger.js +104 -0
- package/dist/opencode-logger.js.map +1 -0
- package/dist/plugin.d.ts +23 -0
- package/dist/plugin.js +395 -0
- package/dist/plugin.js.map +1 -0
- package/dist/server-context.d.ts +40 -0
- package/dist/server-context.js +96 -0
- package/dist/server-context.js.map +1 -0
- package/dist/tool-handlers/conduct-review.d.ts +3 -0
- package/dist/tool-handlers/conduct-review.js +37 -0
- package/dist/tool-handlers/conduct-review.js.map +1 -0
- package/dist/tool-handlers/proceed-to-phase.d.ts +3 -0
- package/dist/tool-handlers/proceed-to-phase.js +74 -0
- package/dist/tool-handlers/proceed-to-phase.js.map +1 -0
- package/dist/tool-handlers/reset-development.d.ts +3 -0
- package/dist/tool-handlers/reset-development.js +63 -0
- package/dist/tool-handlers/reset-development.js.map +1 -0
- package/dist/tool-handlers/setup-project-docs.d.ts +3 -0
- package/dist/tool-handlers/setup-project-docs.js +74 -0
- package/dist/tool-handlers/setup-project-docs.js.map +1 -0
- package/dist/tool-handlers/start-development.d.ts +3 -0
- package/dist/tool-handlers/start-development.js +69 -0
- package/dist/tool-handlers/start-development.js.map +1 -0
- package/dist/tool-handlers/tool-helper.d.ts +10 -0
- package/dist/tool-handlers/tool-helper.js +7 -0
- package/dist/tool-handlers/tool-helper.js.map +1 -0
- package/dist/types.d.ts +193 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +14 -0
- package/dist/utils.js +26 -0
- package/dist/utils.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ServerContext Builder for OpenCode Plugin
|
|
3
|
+
*
|
|
4
|
+
* Creates a ServerContext compatible with MCP server handlers,
|
|
5
|
+
* allowing the plugin to delegate to handler implementations.
|
|
6
|
+
*/
|
|
7
|
+
import type { ServerContext, HandlerResult } from '@codemcp/workflows-server';
|
|
8
|
+
export type { ServerContext } from '@codemcp/workflows-server';
|
|
9
|
+
import { type IPlanManager, type IInstructionGenerator, type LoggerFactory } from '@codemcp/workflows-core';
|
|
10
|
+
export interface ServerContextOptions {
|
|
11
|
+
projectDir: string;
|
|
12
|
+
planManager: IPlanManager;
|
|
13
|
+
instructionGenerator: IInstructionGenerator;
|
|
14
|
+
/** Optional logger factory - if provided, handlers will use this instead of global createLogger */
|
|
15
|
+
loggerFactory?: LoggerFactory;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Creates a ServerContext that can be passed to MCP server handlers.
|
|
19
|
+
*
|
|
20
|
+
* The handlers expect certain components to be initialized and wired together.
|
|
21
|
+
* This function creates fresh instances for each request to ensure clean state.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createServerContext(options: ServerContextOptions): ServerContext;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize async components of a ServerContext.
|
|
26
|
+
* Call this before using the context with handlers.
|
|
27
|
+
*
|
|
28
|
+
* Note: Workflow loading is done in createServerContext(), not here.
|
|
29
|
+
*/
|
|
30
|
+
export declare function initializeServerContext(context: ServerContext): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Convert MCP handler errors to user-friendly instructions.
|
|
33
|
+
* Returns null if the result is successful and has data.
|
|
34
|
+
*/
|
|
35
|
+
export declare function handleMcpError<T>(result: HandlerResult<T>): string | null;
|
|
36
|
+
/**
|
|
37
|
+
* Unwrap MCP handler result data after error check.
|
|
38
|
+
* Call this only after handleMcpError returns null.
|
|
39
|
+
*/
|
|
40
|
+
export declare function unwrapResult<T>(result: HandlerResult<T>): T;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ServerContext Builder for OpenCode Plugin
|
|
3
|
+
*
|
|
4
|
+
* Creates a ServerContext compatible with MCP server handlers,
|
|
5
|
+
* allowing the plugin to delegate to handler implementations.
|
|
6
|
+
*/
|
|
7
|
+
import { PluginRegistry, BeadsPlugin } from '@codemcp/workflows-server';
|
|
8
|
+
import { ConversationManager, TransitionEngine, WorkflowManager, FileStorage, InteractionLogger, } from '@codemcp/workflows-core';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
/**
|
|
11
|
+
* Creates a ServerContext that can be passed to MCP server handlers.
|
|
12
|
+
*
|
|
13
|
+
* The handlers expect certain components to be initialized and wired together.
|
|
14
|
+
* This function creates fresh instances for each request to ensure clean state.
|
|
15
|
+
*/
|
|
16
|
+
export function createServerContext(options) {
|
|
17
|
+
const { projectDir, planManager, instructionGenerator, loggerFactory } = options;
|
|
18
|
+
// Create workflow manager and load project workflows
|
|
19
|
+
const workflowManager = new WorkflowManager();
|
|
20
|
+
workflowManager.loadProjectWorkflows(projectDir);
|
|
21
|
+
// Create file storage — shared across ConversationManager and InteractionLogger
|
|
22
|
+
// so both operate on the same underlying persistence instance
|
|
23
|
+
const fileStorage = new FileStorage(path.join(projectDir, '.vibe', 'storage'));
|
|
24
|
+
const conversationManager = new ConversationManager(fileStorage, workflowManager, projectDir);
|
|
25
|
+
// InteractionLogger uses the same fileStorage so hasInteractions() works correctly.
|
|
26
|
+
// Without this, isFirstCallFromInitialState() always returns true on session resume,
|
|
27
|
+
// causing WhatsNextHandler to reset the phase to explore on every plugin load.
|
|
28
|
+
const interactionLogger = new InteractionLogger(fileStorage);
|
|
29
|
+
// Create transition engine
|
|
30
|
+
const transitionEngine = new TransitionEngine(projectDir);
|
|
31
|
+
transitionEngine.setConversationManager(conversationManager);
|
|
32
|
+
// Initialize plugin registry and register BeadsPlugin
|
|
33
|
+
// (PluginRegistry.registerPlugin checks isEnabled() internally)
|
|
34
|
+
// Pass loggerFactory so BeadsPlugin logs go through OpenCode SDK
|
|
35
|
+
const pluginRegistry = new PluginRegistry();
|
|
36
|
+
pluginRegistry.registerPlugin(new BeadsPlugin({ projectPath: projectDir, loggerFactory }));
|
|
37
|
+
return {
|
|
38
|
+
conversationManager,
|
|
39
|
+
transitionEngine,
|
|
40
|
+
planManager,
|
|
41
|
+
instructionGenerator,
|
|
42
|
+
workflowManager,
|
|
43
|
+
interactionLogger,
|
|
44
|
+
projectPath: projectDir,
|
|
45
|
+
pluginRegistry,
|
|
46
|
+
loggerFactory,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Initialize async components of a ServerContext.
|
|
51
|
+
* Call this before using the context with handlers.
|
|
52
|
+
*
|
|
53
|
+
* Note: Workflow loading is done in createServerContext(), not here.
|
|
54
|
+
*/
|
|
55
|
+
export async function initializeServerContext(context) {
|
|
56
|
+
// Initialize the file storage that the context's ConversationManager uses.
|
|
57
|
+
// initialize() creates the conversations directory if it doesn't exist.
|
|
58
|
+
// We access it via the conversationManager's database — but since it's not
|
|
59
|
+
// exposed, we create a fresh instance pointing to the same path and initialize it.
|
|
60
|
+
const fileStorage = new FileStorage(path.join(context.projectPath, '.vibe', 'storage'));
|
|
61
|
+
await fileStorage.initialize();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Convert MCP handler errors to user-friendly instructions.
|
|
65
|
+
* Returns null if the result is successful and has data.
|
|
66
|
+
*/
|
|
67
|
+
export function handleMcpError(result) {
|
|
68
|
+
if (result.success && result.data) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const error = result.error || 'Unknown error';
|
|
72
|
+
// Extract actionable message from known error patterns
|
|
73
|
+
if (error.includes('CONVERSATION_NOT_FOUND')) {
|
|
74
|
+
return 'No active workflow. Use `start_workflow` to begin.';
|
|
75
|
+
}
|
|
76
|
+
if (error.includes('Invalid workflow:')) {
|
|
77
|
+
// Error already contains available workflows list
|
|
78
|
+
return error.replace(/^.*?Invalid workflow:/, 'Invalid workflow:');
|
|
79
|
+
}
|
|
80
|
+
if (error.includes('Available workflows:')) {
|
|
81
|
+
return error;
|
|
82
|
+
}
|
|
83
|
+
// Generic error - return as instruction
|
|
84
|
+
return `Error: ${error}`;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Unwrap MCP handler result data after error check.
|
|
88
|
+
* Call this only after handleMcpError returns null.
|
|
89
|
+
*/
|
|
90
|
+
export function unwrapResult(result) {
|
|
91
|
+
if (!result.data) {
|
|
92
|
+
throw new Error('No data in result');
|
|
93
|
+
}
|
|
94
|
+
return result.data;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=server-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-context.js","sourceRoot":"","sources":["../src/server-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ConductReviewHandler, } from '@codemcp/workflows-server';
|
|
3
|
+
import { tool } from './tool-helper.js';
|
|
4
|
+
import { handleMcpError, unwrapResult } from '../server-context.js';
|
|
5
|
+
import { createLogger } from '@codemcp/workflows-core';
|
|
6
|
+
export function createConductReviewTool(getServerContext) {
|
|
7
|
+
return tool({
|
|
8
|
+
description: 'Conduct a review before phase transition. Args: target_phase',
|
|
9
|
+
args: {
|
|
10
|
+
target_phase: z.string().describe('Target phase after review'),
|
|
11
|
+
},
|
|
12
|
+
execute: async (args) => {
|
|
13
|
+
const { target_phase } = args;
|
|
14
|
+
const serverContext = await getServerContext();
|
|
15
|
+
const logger = serverContext.loggerFactory
|
|
16
|
+
? serverContext.loggerFactory('conduct_review')
|
|
17
|
+
: createLogger('conduct_review');
|
|
18
|
+
logger.debug('conduct_review called', { targetPhase: target_phase });
|
|
19
|
+
try {
|
|
20
|
+
// Delegate to ConductReviewHandler
|
|
21
|
+
const handler = new ConductReviewHandler();
|
|
22
|
+
const result = await handler.handle({ target_phase }, serverContext);
|
|
23
|
+
// Handle errors gracefully
|
|
24
|
+
const errorMsg = handleMcpError(result);
|
|
25
|
+
if (errorMsg) {
|
|
26
|
+
return errorMsg;
|
|
27
|
+
}
|
|
28
|
+
return unwrapResult(result).instructions;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
32
|
+
return `Error: ${errorMessage}`;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=conduct-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conduct-review.js","sourceRoot":"","sources":["../../src/tool-handlers/conduct-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,oBAAoB,GAErB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,UAAU,uBAAuB,CACrC,gBAA8C;IAE9C,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,8DAA8D;QAC3E,IAAI,EAAE;YACJ,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SAC/D;QACD,OAAO,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;YACpB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;YAC9B,MAAM,aAAa,GAAG,MAAM,gBAAgB,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa;gBACxC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC;gBAC/C,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YAEnC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;YAErE,IAAI,CAAC;gBACH,mCAAmC;gBACnC,MAAM,OAAO,GAAG,IAAI,oBAAoB,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,EAAE,aAAa,CAAC,CAAC;gBAErE,2BAA2B;gBAC3B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBAED,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,OAAO,UAAU,YAAY,EAAE,CAAC;YAClC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type ServerContext, type WhatsNextResult } from '@codemcp/workflows-server';
|
|
2
|
+
import type { ToolDefinition } from '../types.js';
|
|
3
|
+
export declare function createProceedToPhaseTool(getServerContext: () => Promise<ServerContext>, setBufferedInstructions: (result: WhatsNextResult) => void): ToolDefinition;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ProceedToPhaseHandler, } from '@codemcp/workflows-server';
|
|
3
|
+
import { tool } from './tool-helper.js';
|
|
4
|
+
import { handleMcpError, unwrapResult } from '../server-context.js';
|
|
5
|
+
import { createLogger } from '@codemcp/workflows-core';
|
|
6
|
+
import { stripWhatsNextReferences } from '../utils.js';
|
|
7
|
+
export function createProceedToPhaseTool(getServerContext, setBufferedInstructions) {
|
|
8
|
+
return tool({
|
|
9
|
+
description: 'Move to a development phase. Args: target_phase (from plan file), reason (optional), review_state (not-required|pending|performed)',
|
|
10
|
+
args: {
|
|
11
|
+
target_phase: z.string().describe('Phase name from plan file'),
|
|
12
|
+
reason: z.string().optional().describe('Why transitioning now'),
|
|
13
|
+
review_state: z
|
|
14
|
+
.enum(['not-required', 'pending', 'performed'])
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('Review state'),
|
|
17
|
+
},
|
|
18
|
+
execute: async (args) => {
|
|
19
|
+
const { target_phase, reason, review_state } = args;
|
|
20
|
+
const serverContext = await getServerContext();
|
|
21
|
+
const logger = serverContext.loggerFactory
|
|
22
|
+
? serverContext.loggerFactory('proceed_to_phase')
|
|
23
|
+
: createLogger('proceed_to_phase');
|
|
24
|
+
logger.debug('proceed_to_phase called', { to: target_phase, reason });
|
|
25
|
+
try {
|
|
26
|
+
// Delegate to ProceedToPhaseHandler
|
|
27
|
+
const handler = new ProceedToPhaseHandler();
|
|
28
|
+
const result = await handler.handle({
|
|
29
|
+
target_phase,
|
|
30
|
+
reason,
|
|
31
|
+
review_state: review_state ?? 'not-required',
|
|
32
|
+
}, serverContext);
|
|
33
|
+
// Handle errors gracefully
|
|
34
|
+
const errorMsg = handleMcpError(result);
|
|
35
|
+
if (errorMsg) {
|
|
36
|
+
return errorMsg;
|
|
37
|
+
}
|
|
38
|
+
const data = unwrapResult(result);
|
|
39
|
+
// Buffer instructions so the next chat.message hook uses them
|
|
40
|
+
// instead of re-querying WhatsNextHandler (which may read stale disk state)
|
|
41
|
+
setBufferedInstructions({
|
|
42
|
+
phase: data.phase,
|
|
43
|
+
instructions: data.instructions,
|
|
44
|
+
plan_file_path: data.plan_file_path,
|
|
45
|
+
allowed_file_patterns: data.allowed_file_patterns,
|
|
46
|
+
});
|
|
47
|
+
// Build response with instructions (strip whats_next references)
|
|
48
|
+
const lines = [];
|
|
49
|
+
lines.push(`Transitioned to: ${data.phase}`);
|
|
50
|
+
if (data.transition_reason) {
|
|
51
|
+
lines.push(`Reason: ${data.transition_reason}`);
|
|
52
|
+
}
|
|
53
|
+
if (data.instructions) {
|
|
54
|
+
lines.push('');
|
|
55
|
+
lines.push(stripWhatsNextReferences(data.instructions));
|
|
56
|
+
}
|
|
57
|
+
// File restrictions
|
|
58
|
+
const patterns = data.allowed_file_patterns;
|
|
59
|
+
if (patterns.includes('*') || patterns.includes('**/*')) {
|
|
60
|
+
lines.push('Files: All allowed');
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
lines.push(`Allowed: ${patterns.join(', ')}`);
|
|
64
|
+
}
|
|
65
|
+
return lines.join('\n');
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
69
|
+
return `Error: ${errorMessage}`;
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=proceed-to-phase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proceed-to-phase.js","sourceRoot":"","sources":["../../src/tool-handlers/proceed-to-phase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { ResetDevelopmentHandler, } from '@codemcp/workflows-server';
|
|
4
|
+
import { FileStorage, ConversationManager, WorkflowManager, createLogger, } from '@codemcp/workflows-core';
|
|
5
|
+
import { tool } from './tool-helper.js';
|
|
6
|
+
import { handleMcpError } from '../server-context.js';
|
|
7
|
+
export function createResetDevelopmentTool(projectDir, getServerContext) {
|
|
8
|
+
return tool({
|
|
9
|
+
description: 'Reset workflow state. Args: confirm (required: true), reason (optional), delete_plan (optional: also delete plan file)',
|
|
10
|
+
args: {
|
|
11
|
+
confirm: z.boolean().describe('Must be true'),
|
|
12
|
+
reason: z.string().optional().describe('Reason for reset'),
|
|
13
|
+
delete_plan: z.boolean().optional().describe('Also delete plan file'),
|
|
14
|
+
},
|
|
15
|
+
execute: async (args) => {
|
|
16
|
+
const { confirm, reason, delete_plan } = args;
|
|
17
|
+
const serverContext = await getServerContext();
|
|
18
|
+
const logger = serverContext.loggerFactory
|
|
19
|
+
? serverContext.loggerFactory('reset_development')
|
|
20
|
+
: createLogger('reset_development');
|
|
21
|
+
logger.debug('reset_development called', { confirm, delete_plan });
|
|
22
|
+
if (!confirm) {
|
|
23
|
+
return `Reset requires confirm: true. Will delete conversation state${delete_plan ? ' and plan file' : ''}.`;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
if (delete_plan) {
|
|
27
|
+
// Full reset: delegate to ResetDevelopmentHandler
|
|
28
|
+
const handler = new ResetDevelopmentHandler();
|
|
29
|
+
const result = await handler.handle({ confirm, reason }, serverContext);
|
|
30
|
+
const errorMsg = handleMcpError(result);
|
|
31
|
+
if (errorMsg) {
|
|
32
|
+
return errorMsg;
|
|
33
|
+
}
|
|
34
|
+
const deleted = result.data?.resetItems?.join(', ') || 'workflow state';
|
|
35
|
+
return `Reset complete. Deleted: ${deleted}. Use \`start_workflow\` to begin.`;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Partial reset: delete conversation state only, preserve plan file
|
|
39
|
+
const storageDir = path.join(projectDir, '.vibe', 'storage');
|
|
40
|
+
const fileStorage = new FileStorage(storageDir);
|
|
41
|
+
await fileStorage.initialize();
|
|
42
|
+
const conversationManager = new ConversationManager(fileStorage, new WorkflowManager(), projectDir);
|
|
43
|
+
let context;
|
|
44
|
+
try {
|
|
45
|
+
context = await conversationManager.getConversationContext();
|
|
46
|
+
}
|
|
47
|
+
catch (_err) {
|
|
48
|
+
return 'No active workflow. Use `start_workflow` to begin.';
|
|
49
|
+
}
|
|
50
|
+
if (context) {
|
|
51
|
+
await conversationManager.cleanupConversationData(context.conversationId);
|
|
52
|
+
}
|
|
53
|
+
return `Reset complete. Use \`start_workflow\` to begin.`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
58
|
+
return `Error: ${errorMessage}`;
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=reset-development.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset-development.js","sourceRoot":"","sources":["../../src/tool-handlers/reset-development.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { SetupProjectDocsHandler, } from '@codemcp/workflows-server';
|
|
3
|
+
import { tool } from './tool-helper.js';
|
|
4
|
+
import { handleMcpError, unwrapResult } from '../server-context.js';
|
|
5
|
+
import { createLogger, TemplateManager } from '@codemcp/workflows-core';
|
|
6
|
+
export async function createSetupProjectDocsTool(projectDir, getServerContext) {
|
|
7
|
+
// Get available templates for description
|
|
8
|
+
const templateManager = new TemplateManager();
|
|
9
|
+
const availableTemplates = await templateManager.getAvailableTemplates();
|
|
10
|
+
const archOptions = availableTemplates.architecture.join(', ');
|
|
11
|
+
const reqOptions = availableTemplates.requirements.join(', ');
|
|
12
|
+
const designOptions = availableTemplates.design.join(', ');
|
|
13
|
+
return tool({
|
|
14
|
+
description: `Create project docs with templates or link existing files. Options - architecture: ${archOptions}, none, or file path; requirements: ${reqOptions}, none, or file path; design: ${designOptions}, none, or file path`,
|
|
15
|
+
args: {
|
|
16
|
+
architecture: z
|
|
17
|
+
.string()
|
|
18
|
+
.default('freestyle')
|
|
19
|
+
.describe('Template name, "none", or file path'),
|
|
20
|
+
requirements: z
|
|
21
|
+
.string()
|
|
22
|
+
.default('none')
|
|
23
|
+
.describe('Template name, "none", or file path'),
|
|
24
|
+
design: z
|
|
25
|
+
.string()
|
|
26
|
+
.default('freestyle')
|
|
27
|
+
.describe('Template name, "none", or file path'),
|
|
28
|
+
},
|
|
29
|
+
execute: async (args) => {
|
|
30
|
+
const serverContext = await getServerContext();
|
|
31
|
+
const logger = serverContext.loggerFactory
|
|
32
|
+
? serverContext.loggerFactory('setup_project_docs')
|
|
33
|
+
: createLogger('setup_project_docs');
|
|
34
|
+
logger.debug('setup_project_docs called', args);
|
|
35
|
+
try {
|
|
36
|
+
// Delegate to SetupProjectDocsHandler
|
|
37
|
+
const handler = new SetupProjectDocsHandler();
|
|
38
|
+
const result = await handler.handle({
|
|
39
|
+
architecture: args.architecture,
|
|
40
|
+
requirements: args.requirements,
|
|
41
|
+
design: args.design,
|
|
42
|
+
project_path: projectDir,
|
|
43
|
+
}, serverContext);
|
|
44
|
+
// Handle errors gracefully
|
|
45
|
+
const errorMsg = handleMcpError(result);
|
|
46
|
+
if (errorMsg) {
|
|
47
|
+
return errorMsg;
|
|
48
|
+
}
|
|
49
|
+
const data = unwrapResult(result);
|
|
50
|
+
logger.info('setup_project_docs: Completed', {
|
|
51
|
+
created: data.created,
|
|
52
|
+
linked: data.linked,
|
|
53
|
+
skipped: data.skipped,
|
|
54
|
+
});
|
|
55
|
+
// Build response
|
|
56
|
+
const lines = [];
|
|
57
|
+
lines.push(data.message);
|
|
58
|
+
if (data.paths) {
|
|
59
|
+
lines.push('');
|
|
60
|
+
lines.push('Document paths:');
|
|
61
|
+
lines.push(` Architecture: ${data.paths.architecture}`);
|
|
62
|
+
lines.push(` Requirements: ${data.paths.requirements}`);
|
|
63
|
+
lines.push(` Design: ${data.paths.design}`);
|
|
64
|
+
}
|
|
65
|
+
return lines.join('\n');
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
69
|
+
return `Error: ${errorMessage}`;
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=setup-project-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-project-docs.js","sourceRoot":"","sources":["../../src/tool-handlers/setup-project-docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type WhatsNextResult, type ServerContext } from '@codemcp/workflows-server';
|
|
2
|
+
import type { ToolDefinition } from '../types.js';
|
|
3
|
+
export declare function createStartDevelopmentTool(projectDir: string, getServerContext: () => Promise<ServerContext>, setBufferedInstructions: (result: WhatsNextResult) => void): ToolDefinition;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { StartDevelopmentHandler, } from '@codemcp/workflows-server';
|
|
3
|
+
import { tool } from './tool-helper.js';
|
|
4
|
+
import { handleMcpError, unwrapResult } from '../server-context.js';
|
|
5
|
+
import { WorkflowManager, createLogger } from '@codemcp/workflows-core';
|
|
6
|
+
import { stripWhatsNextReferences } from '../utils.js';
|
|
7
|
+
export function createStartDevelopmentTool(projectDir, getServerContext, setBufferedInstructions) {
|
|
8
|
+
// Load available workflows for description
|
|
9
|
+
// NOTE: Using getAvailableWorkflowsForProject() to respect:
|
|
10
|
+
// 1. VIBE_WORKFLOW_DOMAINS configuration (domain filtering)
|
|
11
|
+
// 2. Project-specific workflow configuration
|
|
12
|
+
const workflowManager = new WorkflowManager();
|
|
13
|
+
const availableWorkflows = workflowManager.getAvailableWorkflowsForProject(projectDir);
|
|
14
|
+
const workflowNames = availableWorkflows.map(w => w.name);
|
|
15
|
+
// Build tool description with workflow list
|
|
16
|
+
const toolDescription = workflowNames.length > 0
|
|
17
|
+
? `Start a development workflow. Available: ${workflowNames.join(', ')}`
|
|
18
|
+
: 'Start a development workflow (no workflows available - check VIBE_WORKFLOW_DOMAINS)';
|
|
19
|
+
return tool({
|
|
20
|
+
description: toolDescription,
|
|
21
|
+
args: {
|
|
22
|
+
workflow: z.string().describe('Workflow name'),
|
|
23
|
+
require_reviews: z
|
|
24
|
+
.boolean()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Require reviews before phase transitions'),
|
|
27
|
+
},
|
|
28
|
+
execute: async (args) => {
|
|
29
|
+
const serverContext = await getServerContext();
|
|
30
|
+
const logger = serverContext.loggerFactory
|
|
31
|
+
? serverContext.loggerFactory('start_development')
|
|
32
|
+
: createLogger('start_development');
|
|
33
|
+
logger.debug('start_development called', { workflow: args.workflow });
|
|
34
|
+
try {
|
|
35
|
+
// Delegate to StartDevelopmentHandler
|
|
36
|
+
const handler = new StartDevelopmentHandler();
|
|
37
|
+
const result = await handler.handle({
|
|
38
|
+
workflow: args.workflow,
|
|
39
|
+
require_reviews: args.require_reviews,
|
|
40
|
+
project_path: projectDir,
|
|
41
|
+
}, serverContext);
|
|
42
|
+
// Handle errors gracefully
|
|
43
|
+
const errorMsg = handleMcpError(result);
|
|
44
|
+
if (errorMsg) {
|
|
45
|
+
return errorMsg;
|
|
46
|
+
}
|
|
47
|
+
const data = unwrapResult(result);
|
|
48
|
+
logger.info('start_development: Successfully started workflow', {
|
|
49
|
+
workflow: args.workflow,
|
|
50
|
+
phase: data.phase,
|
|
51
|
+
});
|
|
52
|
+
// Buffer instructions for the next chat.message hook
|
|
53
|
+
setBufferedInstructions({
|
|
54
|
+
phase: data.phase,
|
|
55
|
+
instructions: data.instructions,
|
|
56
|
+
plan_file_path: data.plan_file_path,
|
|
57
|
+
allowed_file_patterns: data.allowed_file_patterns ?? ['**/*'],
|
|
58
|
+
});
|
|
59
|
+
// Return the instructions from the handler (strip whats_next references)
|
|
60
|
+
return stripWhatsNextReferences(data.instructions);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
64
|
+
return `Error: ${errorMessage}`;
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=start-development.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-development.js","sourceRoot":"","sources":["../../src/tool-handlers/start-development.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolDefinition } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Tool definition helper
|
|
5
|
+
*/
|
|
6
|
+
export declare function tool<Args extends z.ZodRawShape>(input: {
|
|
7
|
+
description: string;
|
|
8
|
+
args: Args;
|
|
9
|
+
execute(args: z.infer<z.ZodObject<Args>>, context: unknown): Promise<string>;
|
|
10
|
+
}): ToolDefinition;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-helper.js","sourceRoot":"","sources":["../../src/tool-handlers/tool-helper.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,IAAI,CAA6B,KAIhD;IACC,OAAO,KAAuB,CAAC;AACjC,CAAC"}
|