@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemcp/workflows",
3
- "version": "6.6.2",
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.2"
54
+ "@codemcp/workflows-core": "6.6.4"
55
55
  },
56
56
  "lint-staged": {
57
57
  "*.{ts,js,mts,cts,tsx,jsx}": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemcp/workflows-cli",
3
- "version": "6.6.2",
3
+ "version": "6.6.4",
4
4
  "description": "CLI tools for responsible-vibe development workflows",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemcp/workflows-core",
3
- "version": "6.6.2",
3
+ "version": "6.6.4",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemcp/workflows-docs",
3
- "version": "6.6.2",
3
+ "version": "6.6.4",
4
4
  "description": "Documentation site for Responsible Vibe MCP",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemcp/workflows-server",
3
- "version": "6.6.2",
3
+ "version": "6.6.4",
4
4
  "description": "MCP server for responsible-vibe development workflows - provides structured workflow guidance",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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 context;
28140
+ let context2;
28117
28141
  try {
28118
- context = await conversationManager.getConversationContext();
28142
+ context2 = await conversationManager.getConversationContext();
28119
28143
  } catch (_err) {
28120
28144
  return "No active workflow. Use `start_workflow` to begin.";
28121
28145
  }
28122
- if (context) {
28146
+ if (context2) {
28123
28147
  await conversationManager.cleanupConversationData(
28124
- context.conversationId
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", {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemcp/workflows-opencode",
3
- "version": "6.6.2",
3
+ "version": "6.6.4",
4
4
  "description": "OpenCode plugin for structured development workflows",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemcp/workflows-opencode-tui",
3
- "version": "6.6.2",
3
+ "version": "6.6.4",
4
4
  "description": "OpenCode TUI sidebar plugin that displays the current responsible-vibe workflow phase and name",
5
5
  "main": "workflows-phase.tsx",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemcp/workflows-visualizer",
3
- "version": "6.6.2",
3
+ "version": "6.6.4",
4
4
  "type": "module",
5
5
  "main": "dist/index.ts",
6
6
  "module": "dist/index.ts",