@codemcp/workflows 6.6.2 → 6.6.4
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/package.json +2 -2
- package/packages/cli/package.json +1 -1
- package/packages/core/package.json +1 -1
- package/packages/docs/package.json +1 -1
- package/packages/mcp-server/package.json +1 -1
- package/packages/opencode-plugin/dist/index.js +52 -9
- package/packages/opencode-plugin/package.json +1 -1
- package/packages/opencode-tui-plugin/package.json +1 -1
- package/packages/visualizer/package.json +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codemcp/workflows",
|
|
3
|
-
"version": "6.6.
|
|
3
|
+
"version": "6.6.4",
|
|
4
4
|
"description": "A Model Context Protocol server that acts as an intelligent conversation state manager and development guide for LLMs, featuring comprehensive long-term memory with persistent project artifacts",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "packages/cli/dist/index.js",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"typescript": "^5.9.3",
|
|
52
52
|
"vitepress": "^1.6.4",
|
|
53
53
|
"vitest": "4.0.18",
|
|
54
|
-
"@codemcp/workflows-core": "6.6.
|
|
54
|
+
"@codemcp/workflows-core": "6.6.4"
|
|
55
55
|
},
|
|
56
56
|
"lint-staged": {
|
|
57
57
|
"*.{ts,js,mts,cts,tsx,jsx}": [
|
|
@@ -27993,11 +27993,19 @@ function createProceedToPhaseTool(getServerContext, setBufferedInstructions) {
|
|
|
27993
27993
|
reason: z5.string().optional().describe("Why transitioning now"),
|
|
27994
27994
|
review_state: z5.enum(["not-required", "pending", "performed"]).optional().describe("Review state")
|
|
27995
27995
|
},
|
|
27996
|
-
execute: async (args) => {
|
|
27996
|
+
execute: async (args, context) => {
|
|
27997
27997
|
const { target_phase, reason, review_state } = args;
|
|
27998
27998
|
const serverContext = await getServerContext();
|
|
27999
27999
|
const logger37 = serverContext.loggerFactory ? serverContext.loggerFactory("proceed_to_phase") : createLogger2("proceed_to_phase");
|
|
28000
28000
|
logger37.debug("proceed_to_phase called", { to: target_phase, reason });
|
|
28001
|
+
if (context && typeof context.ask === "function") {
|
|
28002
|
+
await context.ask({
|
|
28003
|
+
permission: "proceed_to_phase",
|
|
28004
|
+
patterns: ["*"],
|
|
28005
|
+
always: ["*"],
|
|
28006
|
+
metadata: { target_phase, reason }
|
|
28007
|
+
});
|
|
28008
|
+
}
|
|
28001
28009
|
try {
|
|
28002
28010
|
const handler = new ProceedToPhaseHandler();
|
|
28003
28011
|
const result = await handler.handle(
|
|
@@ -28051,11 +28059,19 @@ function createConductReviewTool(getServerContext) {
|
|
|
28051
28059
|
args: {
|
|
28052
28060
|
target_phase: z6.string().describe("Target phase after review")
|
|
28053
28061
|
},
|
|
28054
|
-
execute: async (args) => {
|
|
28062
|
+
execute: async (args, context) => {
|
|
28055
28063
|
const { target_phase } = args;
|
|
28056
28064
|
const serverContext = await getServerContext();
|
|
28057
28065
|
const logger37 = serverContext.loggerFactory ? serverContext.loggerFactory("conduct_review") : createLogger2("conduct_review");
|
|
28058
28066
|
logger37.debug("conduct_review called", { targetPhase: target_phase });
|
|
28067
|
+
if (context && typeof context.ask === "function") {
|
|
28068
|
+
await context.ask({
|
|
28069
|
+
permission: "conduct_review",
|
|
28070
|
+
patterns: ["*"],
|
|
28071
|
+
always: ["*"],
|
|
28072
|
+
metadata: { target_phase }
|
|
28073
|
+
});
|
|
28074
|
+
}
|
|
28059
28075
|
try {
|
|
28060
28076
|
const handler = new ConductReviewHandler();
|
|
28061
28077
|
const result = await handler.handle({ target_phase }, serverContext);
|
|
@@ -28083,11 +28099,19 @@ function createResetDevelopmentTool(projectDir, getServerContext) {
|
|
|
28083
28099
|
reason: z7.string().optional().describe("Reason for reset"),
|
|
28084
28100
|
delete_plan: z7.boolean().optional().describe("Also delete plan file")
|
|
28085
28101
|
},
|
|
28086
|
-
execute: async (args) => {
|
|
28102
|
+
execute: async (args, context) => {
|
|
28087
28103
|
const { confirm, reason, delete_plan } = args;
|
|
28088
28104
|
const serverContext = await getServerContext();
|
|
28089
28105
|
const logger37 = serverContext.loggerFactory ? serverContext.loggerFactory("reset_development") : createLogger2("reset_development");
|
|
28090
28106
|
logger37.debug("reset_development called", { confirm, delete_plan });
|
|
28107
|
+
if (context && typeof context.ask === "function") {
|
|
28108
|
+
await context.ask({
|
|
28109
|
+
permission: "reset_development",
|
|
28110
|
+
patterns: ["*"],
|
|
28111
|
+
always: ["*"],
|
|
28112
|
+
metadata: { delete_plan, reason }
|
|
28113
|
+
});
|
|
28114
|
+
}
|
|
28091
28115
|
if (!confirm) {
|
|
28092
28116
|
return `Reset requires confirm: true. Will delete conversation state${delete_plan ? " and plan file" : ""}.`;
|
|
28093
28117
|
}
|
|
@@ -28113,15 +28137,15 @@ function createResetDevelopmentTool(projectDir, getServerContext) {
|
|
|
28113
28137
|
new WorkflowManager2(),
|
|
28114
28138
|
projectDir
|
|
28115
28139
|
);
|
|
28116
|
-
let
|
|
28140
|
+
let context2;
|
|
28117
28141
|
try {
|
|
28118
|
-
|
|
28142
|
+
context2 = await conversationManager.getConversationContext();
|
|
28119
28143
|
} catch (_err) {
|
|
28120
28144
|
return "No active workflow. Use `start_workflow` to begin.";
|
|
28121
28145
|
}
|
|
28122
|
-
if (
|
|
28146
|
+
if (context2) {
|
|
28123
28147
|
await conversationManager.cleanupConversationData(
|
|
28124
|
-
|
|
28148
|
+
context2.conversationId
|
|
28125
28149
|
);
|
|
28126
28150
|
}
|
|
28127
28151
|
return `Reset complete. Use \`start_workflow\` to begin.`;
|
|
@@ -28147,10 +28171,18 @@ function createStartDevelopmentTool(projectDir, getServerContext, setBufferedIns
|
|
|
28147
28171
|
workflow: z8.string().describe("Workflow name"),
|
|
28148
28172
|
require_reviews: z8.boolean().optional().describe("Require reviews before phase transitions")
|
|
28149
28173
|
},
|
|
28150
|
-
execute: async (args) => {
|
|
28174
|
+
execute: async (args, context) => {
|
|
28151
28175
|
const serverContext = await getServerContext();
|
|
28152
28176
|
const logger37 = serverContext.loggerFactory ? serverContext.loggerFactory("start_development") : createLogger2("start_development");
|
|
28153
28177
|
logger37.debug("start_development called", { workflow: args.workflow });
|
|
28178
|
+
if (context && typeof context.ask === "function") {
|
|
28179
|
+
await context.ask({
|
|
28180
|
+
permission: "start_development",
|
|
28181
|
+
patterns: ["*"],
|
|
28182
|
+
always: ["*"],
|
|
28183
|
+
metadata: { workflow: args.workflow }
|
|
28184
|
+
});
|
|
28185
|
+
}
|
|
28154
28186
|
try {
|
|
28155
28187
|
const handler = new StartDevelopmentHandler();
|
|
28156
28188
|
const result = await handler.handle(
|
|
@@ -28200,10 +28232,18 @@ async function createSetupProjectDocsTool(projectDir, getServerContext) {
|
|
|
28200
28232
|
requirements: z9.string().default("none").describe('Template name, "none", or file path'),
|
|
28201
28233
|
design: z9.string().default("freestyle").describe('Template name, "none", or file path')
|
|
28202
28234
|
},
|
|
28203
|
-
execute: async (args) => {
|
|
28235
|
+
execute: async (args, context) => {
|
|
28204
28236
|
const serverContext = await getServerContext();
|
|
28205
28237
|
const logger37 = serverContext.loggerFactory ? serverContext.loggerFactory("setup_project_docs") : createLogger2("setup_project_docs");
|
|
28206
28238
|
logger37.debug("setup_project_docs called", args);
|
|
28239
|
+
if (context && typeof context.ask === "function") {
|
|
28240
|
+
await context.ask({
|
|
28241
|
+
permission: "setup_project_docs",
|
|
28242
|
+
patterns: ["*"],
|
|
28243
|
+
always: ["*"],
|
|
28244
|
+
metadata: args
|
|
28245
|
+
});
|
|
28246
|
+
}
|
|
28207
28247
|
try {
|
|
28208
28248
|
const handler = new SetupProjectDocsHandler();
|
|
28209
28249
|
const result = await handler.handle(
|
|
@@ -28474,6 +28514,7 @@ var WorkflowsPlugin = async (input) => {
|
|
|
28474
28514
|
sessionID: hookInput.sessionID,
|
|
28475
28515
|
messageID: hookInput.messageID || output.message.id,
|
|
28476
28516
|
type: "text",
|
|
28517
|
+
synthetic: true,
|
|
28477
28518
|
text: `No Active Workflow Use the \`start_development\` tool to begin.`
|
|
28478
28519
|
});
|
|
28479
28520
|
return;
|
|
@@ -28490,6 +28531,7 @@ var WorkflowsPlugin = async (input) => {
|
|
|
28490
28531
|
sessionID: hookInput.sessionID,
|
|
28491
28532
|
messageID: hookInput.messageID || output.message.id,
|
|
28492
28533
|
type: "text",
|
|
28534
|
+
synthetic: true,
|
|
28493
28535
|
text: `No Active Workflow Use the \`start_development\` tool to begin.`
|
|
28494
28536
|
});
|
|
28495
28537
|
return;
|
|
@@ -28514,6 +28556,7 @@ var WorkflowsPlugin = async (input) => {
|
|
|
28514
28556
|
sessionID: hookInput.sessionID,
|
|
28515
28557
|
messageID: hookInput.messageID || output.message.id,
|
|
28516
28558
|
type: "text",
|
|
28559
|
+
synthetic: true,
|
|
28517
28560
|
text: instructionText
|
|
28518
28561
|
});
|
|
28519
28562
|
logger37.info("chat.message: injected phase instructions", {
|