maxsimcli 4.0.2 → 4.2.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.
Files changed (127) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/assets/CHANGELOG.md +16 -0
  3. package/dist/assets/dashboard/client/assets/{index-C_eAetZJ.js → index-BcRHShXD.js} +59 -59
  4. package/dist/assets/dashboard/client/assets/index-C199D4Eb.css +32 -0
  5. package/dist/assets/dashboard/client/index.html +2 -2
  6. package/dist/assets/dashboard/server.js +26 -11
  7. package/dist/assets/templates/agents/AGENTS.md +18 -69
  8. package/dist/assets/templates/agents/maxsim-code-reviewer.md +17 -92
  9. package/dist/assets/templates/agents/maxsim-codebase-mapper.md +57 -694
  10. package/dist/assets/templates/agents/maxsim-debugger.md +80 -925
  11. package/dist/assets/templates/agents/maxsim-executor.md +94 -431
  12. package/dist/assets/templates/agents/maxsim-integration-checker.md +51 -319
  13. package/dist/assets/templates/agents/maxsim-phase-researcher.md +63 -429
  14. package/dist/assets/templates/agents/maxsim-plan-checker.md +79 -568
  15. package/dist/assets/templates/agents/maxsim-planner.md +125 -855
  16. package/dist/assets/templates/agents/maxsim-project-researcher.md +32 -472
  17. package/dist/assets/templates/agents/maxsim-research-synthesizer.md +25 -134
  18. package/dist/assets/templates/agents/maxsim-roadmapper.md +66 -480
  19. package/dist/assets/templates/agents/maxsim-spec-reviewer.md +13 -55
  20. package/dist/assets/templates/agents/maxsim-verifier.md +95 -450
  21. package/dist/assets/templates/commands/maxsim/artefakte.md +122 -0
  22. package/dist/assets/templates/commands/maxsim/batch.md +42 -0
  23. package/dist/assets/templates/commands/maxsim/check-todos.md +1 -0
  24. package/dist/assets/templates/commands/maxsim/sdd.md +39 -0
  25. package/dist/assets/templates/references/thinking-partner.md +33 -0
  26. package/dist/assets/templates/workflows/batch.md +420 -0
  27. package/dist/assets/templates/workflows/check-todos.md +85 -1
  28. package/dist/assets/templates/workflows/discuss-phase.md +31 -0
  29. package/dist/assets/templates/workflows/execute-plan.md +96 -27
  30. package/dist/assets/templates/workflows/help.md +47 -0
  31. package/dist/assets/templates/workflows/sdd.md +426 -0
  32. package/dist/backend/index.d.ts +4 -0
  33. package/dist/backend/index.d.ts.map +1 -0
  34. package/dist/backend/index.js +12 -0
  35. package/dist/backend/index.js.map +1 -0
  36. package/dist/backend/lifecycle.d.ts +13 -0
  37. package/dist/backend/lifecycle.d.ts.map +1 -0
  38. package/dist/backend/lifecycle.js +168 -0
  39. package/dist/backend/lifecycle.js.map +1 -0
  40. package/dist/backend/server.d.ts +13 -0
  41. package/dist/backend/server.d.ts.map +1 -0
  42. package/dist/backend/server.js +1013 -0
  43. package/dist/backend/server.js.map +1 -0
  44. package/dist/backend/terminal.d.ts +49 -0
  45. package/dist/backend/terminal.d.ts.map +1 -0
  46. package/dist/backend/terminal.js +209 -0
  47. package/dist/backend/terminal.js.map +1 -0
  48. package/dist/backend/types.d.ts +77 -0
  49. package/dist/backend/types.d.ts.map +1 -0
  50. package/dist/backend/types.js +6 -0
  51. package/dist/backend/types.js.map +1 -0
  52. package/dist/backend-server.cjs +80636 -0
  53. package/dist/backend-server.cjs.map +1 -0
  54. package/dist/backend-server.d.cts +2 -0
  55. package/dist/backend-server.d.ts +11 -0
  56. package/dist/backend-server.d.ts.map +1 -0
  57. package/dist/backend-server.js +43 -0
  58. package/dist/backend-server.js.map +1 -0
  59. package/dist/cli.cjs +378 -172
  60. package/dist/cli.cjs.map +1 -1
  61. package/dist/cli.js +28 -8
  62. package/dist/cli.js.map +1 -1
  63. package/dist/core/artefakte.d.ts.map +1 -1
  64. package/dist/core/artefakte.js +16 -0
  65. package/dist/core/artefakte.js.map +1 -1
  66. package/dist/core/context-loader.d.ts +1 -0
  67. package/dist/core/context-loader.d.ts.map +1 -1
  68. package/dist/core/context-loader.js +58 -0
  69. package/dist/core/context-loader.js.map +1 -1
  70. package/dist/core/core.d.ts +6 -0
  71. package/dist/core/core.d.ts.map +1 -1
  72. package/dist/core/core.js +238 -0
  73. package/dist/core/core.js.map +1 -1
  74. package/dist/core/index.d.ts +1 -1
  75. package/dist/core/index.d.ts.map +1 -1
  76. package/dist/core/index.js +5 -3
  77. package/dist/core/index.js.map +1 -1
  78. package/dist/core/phase.d.ts +11 -11
  79. package/dist/core/phase.d.ts.map +1 -1
  80. package/dist/core/phase.js +88 -73
  81. package/dist/core/phase.js.map +1 -1
  82. package/dist/core/roadmap.d.ts +2 -2
  83. package/dist/core/roadmap.d.ts.map +1 -1
  84. package/dist/core/roadmap.js +11 -10
  85. package/dist/core/roadmap.js.map +1 -1
  86. package/dist/core/skills.d.ts +4 -3
  87. package/dist/core/skills.d.ts.map +1 -1
  88. package/dist/core/skills.js +14 -15
  89. package/dist/core/skills.js.map +1 -1
  90. package/dist/core/state.d.ts +11 -11
  91. package/dist/core/state.d.ts.map +1 -1
  92. package/dist/core/state.js +60 -54
  93. package/dist/core/state.js.map +1 -1
  94. package/dist/{core-TFSlUjV1.cjs → core-RRjCSt0G.cjs} +1 -9
  95. package/dist/{core-TFSlUjV1.cjs.map → core-RRjCSt0G.cjs.map} +1 -1
  96. package/dist/esm-iIOBzmdz.cjs +1561 -0
  97. package/dist/esm-iIOBzmdz.cjs.map +1 -0
  98. package/dist/install.cjs +2 -2
  99. package/dist/lifecycle-0M4VqOMm.cjs +136 -0
  100. package/dist/lifecycle-0M4VqOMm.cjs.map +1 -0
  101. package/dist/mcp/config-tools.d.ts +13 -0
  102. package/dist/mcp/config-tools.d.ts.map +1 -0
  103. package/dist/mcp/config-tools.js +66 -0
  104. package/dist/mcp/config-tools.js.map +1 -0
  105. package/dist/mcp/context-tools.d.ts +13 -0
  106. package/dist/mcp/context-tools.d.ts.map +1 -0
  107. package/dist/mcp/context-tools.js +176 -0
  108. package/dist/mcp/context-tools.js.map +1 -0
  109. package/dist/mcp/index.d.ts +0 -1
  110. package/dist/mcp/index.d.ts.map +1 -1
  111. package/dist/mcp/index.js +6 -1
  112. package/dist/mcp/index.js.map +1 -1
  113. package/dist/mcp/phase-tools.js +3 -3
  114. package/dist/mcp/phase-tools.js.map +1 -1
  115. package/dist/mcp/roadmap-tools.d.ts +13 -0
  116. package/dist/mcp/roadmap-tools.d.ts.map +1 -0
  117. package/dist/mcp/roadmap-tools.js +79 -0
  118. package/dist/mcp/roadmap-tools.js.map +1 -0
  119. package/dist/mcp-server.cjs +799 -38
  120. package/dist/mcp-server.cjs.map +1 -1
  121. package/dist/server-G1MIg_Oe.cjs +2980 -0
  122. package/dist/server-G1MIg_Oe.cjs.map +1 -0
  123. package/dist/{skills-BOSxYUzf.cjs → skills-MYlMkYNt.cjs} +41 -29
  124. package/dist/skills-MYlMkYNt.cjs.map +1 -0
  125. package/package.json +7 -1
  126. package/dist/assets/dashboard/client/assets/index-CmiJKqOU.css +0 -32
  127. package/dist/skills-BOSxYUzf.cjs.map +0 -1
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ /**
3
+ * Context Query MCP Tools — Project context exposed as MCP tools
4
+ *
5
+ * CRITICAL: Never import output() or error() from core — they call process.exit().
6
+ * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.
7
+ * CRITICAL: Never call process.exit() — the server must stay alive after every tool call.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.registerContextTools = registerContextTools;
14
+ const node_fs_1 = __importDefault(require("node:fs"));
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const zod_1 = require("zod");
17
+ const core_js_1 = require("../core/core.js");
18
+ const roadmap_js_1 = require("../core/roadmap.js");
19
+ const state_js_1 = require("../core/state.js");
20
+ const context_loader_js_1 = require("../core/context-loader.js");
21
+ const utils_js_1 = require("./utils.js");
22
+ /**
23
+ * Register all context query tools on the MCP server.
24
+ */
25
+ function registerContextTools(server) {
26
+ // ── mcp_get_active_phase ────────────────────────────────────────────────────
27
+ server.tool('mcp_get_active_phase', 'Get the currently active phase and next phase from roadmap analysis and STATE.md.', {}, async () => {
28
+ try {
29
+ const cwd = (0, utils_js_1.detectProjectRoot)();
30
+ if (!cwd) {
31
+ return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
32
+ }
33
+ const roadmapResult = await (0, roadmap_js_1.cmdRoadmapAnalyze)(cwd);
34
+ let current_phase = null;
35
+ let next_phase = null;
36
+ let phase_name = null;
37
+ let status = null;
38
+ if (roadmapResult.ok) {
39
+ const data = roadmapResult.result;
40
+ current_phase = data.current_phase ?? null;
41
+ next_phase = data.next_phase ?? null;
42
+ }
43
+ // Also read STATE.md for current phase field
44
+ const stateContent = (0, core_js_1.safeReadFile)((0, core_js_1.planningPath)(cwd, 'STATE.md'));
45
+ if (stateContent) {
46
+ const statePhase = (0, state_js_1.stateExtractField)(stateContent, 'Current Phase');
47
+ if (statePhase)
48
+ phase_name = statePhase;
49
+ const stateStatus = (0, state_js_1.stateExtractField)(stateContent, 'Status');
50
+ if (stateStatus)
51
+ status = stateStatus;
52
+ }
53
+ return (0, utils_js_1.mcpSuccess)({ current_phase, next_phase, phase_name, status }, `Active phase: ${phase_name ?? current_phase ?? 'unknown'}`);
54
+ }
55
+ catch (e) {
56
+ return (0, utils_js_1.mcpError)('Failed: ' + e.message, 'Error occurred');
57
+ }
58
+ });
59
+ // ── mcp_get_guidelines ──────────────────────────────────────────────────────
60
+ server.tool('mcp_get_guidelines', 'Get project guidelines: PROJECT.md vision, config, and optionally phase-specific context.', {
61
+ phase: zod_1.z
62
+ .string()
63
+ .optional()
64
+ .describe('Optional phase number to include phase-specific context'),
65
+ }, async ({ phase }) => {
66
+ try {
67
+ const cwd = (0, utils_js_1.detectProjectRoot)();
68
+ if (!cwd) {
69
+ return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
70
+ }
71
+ const project_vision = (0, core_js_1.safeReadFile)((0, core_js_1.planningPath)(cwd, 'PROJECT.md'));
72
+ const config = (0, core_js_1.loadConfig)(cwd);
73
+ let phase_context = null;
74
+ if (phase) {
75
+ const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase);
76
+ if (phaseInfo) {
77
+ const contextPath = node_path_1.default.join(phaseInfo.directory, `${phaseInfo.phase_number}-CONTEXT.md`);
78
+ phase_context = (0, core_js_1.safeReadFile)(contextPath);
79
+ }
80
+ }
81
+ return (0, utils_js_1.mcpSuccess)({ project_vision, config, phase_context }, `Guidelines loaded${phase ? ` with phase ${phase} context` : ''}`);
82
+ }
83
+ catch (e) {
84
+ return (0, utils_js_1.mcpError)('Failed: ' + e.message, 'Error occurred');
85
+ }
86
+ });
87
+ // ── mcp_get_context_for_task ────────────────────────────────────────────────
88
+ server.tool('mcp_get_context_for_task', 'Load context files for a task. Includes project context, roadmap, artefakte, and codebase docs filtered by topic. ' +
89
+ 'Topic keywords select relevant codebase docs: "ui/frontend" loads CONVENTIONS+STRUCTURE, ' +
90
+ '"api/backend" loads ARCHITECTURE+CONVENTIONS, "testing" loads TESTING+CONVENTIONS, ' +
91
+ '"database" loads ARCHITECTURE+STACK, "refactor" loads CONCERNS+ARCHITECTURE. ' +
92
+ 'Without topic, defaults to STACK+ARCHITECTURE.', {
93
+ phase: zod_1.z
94
+ .string()
95
+ .optional()
96
+ .describe('Phase number to scope context to'),
97
+ topic: zod_1.z
98
+ .string()
99
+ .optional()
100
+ .describe('Topic keywords to filter codebase docs (e.g. "frontend", "api", "testing", "database", "refactor")'),
101
+ }, async ({ phase, topic }) => {
102
+ try {
103
+ const cwd = (0, utils_js_1.detectProjectRoot)();
104
+ if (!cwd) {
105
+ return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
106
+ }
107
+ const result = (0, context_loader_js_1.cmdContextLoad)(cwd, phase, topic, true);
108
+ if (!result.ok) {
109
+ return (0, utils_js_1.mcpError)(result.error, 'Context load failed');
110
+ }
111
+ return (0, utils_js_1.mcpSuccess)({ context: result.result }, `Context loaded${phase ? ` for phase ${phase}` : ''}${topic ? ` topic "${topic}"` : ''}`);
112
+ }
113
+ catch (e) {
114
+ return (0, utils_js_1.mcpError)('Failed: ' + e.message, 'Error occurred');
115
+ }
116
+ });
117
+ // ── mcp_get_project_overview ────────────────────────────────────────────────
118
+ server.tool('mcp_get_project_overview', 'Get a high-level project overview: PROJECT.md, REQUIREMENTS.md, and STATE.md contents.', {}, async () => {
119
+ try {
120
+ const cwd = (0, utils_js_1.detectProjectRoot)();
121
+ if (!cwd) {
122
+ return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
123
+ }
124
+ const project = (0, core_js_1.safeReadFile)((0, core_js_1.planningPath)(cwd, 'PROJECT.md'));
125
+ const requirements = (0, core_js_1.safeReadFile)((0, core_js_1.planningPath)(cwd, 'REQUIREMENTS.md'));
126
+ const state = (0, core_js_1.safeReadFile)((0, core_js_1.planningPath)(cwd, 'STATE.md'));
127
+ return (0, utils_js_1.mcpSuccess)({ project, requirements, state }, 'Project overview loaded');
128
+ }
129
+ catch (e) {
130
+ return (0, utils_js_1.mcpError)('Failed: ' + e.message, 'Error occurred');
131
+ }
132
+ });
133
+ // ── mcp_get_phase_detail ────────────────────────────────────────────────────
134
+ server.tool('mcp_get_phase_detail', 'Get detailed information about a specific phase including all its files (plans, summaries, context, research, verification).', {
135
+ phase: zod_1.z.string().describe('Phase number or name (e.g. "01", "1", "01A")'),
136
+ }, async ({ phase }) => {
137
+ try {
138
+ const cwd = (0, utils_js_1.detectProjectRoot)();
139
+ if (!cwd) {
140
+ return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
141
+ }
142
+ const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase);
143
+ if (!phaseInfo) {
144
+ return (0, utils_js_1.mcpError)(`Phase ${phase} not found`, 'Phase not found');
145
+ }
146
+ // Read all files in the phase directory
147
+ const files = [];
148
+ try {
149
+ const entries = node_fs_1.default.readdirSync(phaseInfo.directory);
150
+ for (const entry of entries) {
151
+ const fullPath = node_path_1.default.join(phaseInfo.directory, entry);
152
+ const stat = node_fs_1.default.statSync(fullPath);
153
+ if (stat.isFile()) {
154
+ files.push({
155
+ name: entry,
156
+ content: (0, core_js_1.safeReadFile)(fullPath),
157
+ });
158
+ }
159
+ }
160
+ }
161
+ catch {
162
+ // Directory may not exist or be empty
163
+ }
164
+ return (0, utils_js_1.mcpSuccess)({
165
+ phase_number: phaseInfo.phase_number,
166
+ phase_name: phaseInfo.phase_name,
167
+ directory: phaseInfo.directory,
168
+ files,
169
+ }, `Phase ${phaseInfo.phase_number} detail: ${files.length} file(s)`);
170
+ }
171
+ catch (e) {
172
+ return (0, utils_js_1.mcpError)('Failed: ' + e.message, 'Error occurred');
173
+ }
174
+ });
175
+ }
176
+ //# sourceMappingURL=context-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-tools.js","sourceRoot":"","sources":["../../src/mcp/context-tools.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@
2
2
  * MCP Tool Registration — Orchestrates all tool registrations
3
3
  *
4
4
  * This is the single entry point for registering MCP tools on the server.
5
- * Later plans will add registerTodoTools, registerStateTools, etc.
6
5
  */
7
6
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAIxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAOxD"}
package/dist/mcp/index.js CHANGED
@@ -3,13 +3,15 @@
3
3
  * MCP Tool Registration — Orchestrates all tool registrations
4
4
  *
5
5
  * This is the single entry point for registering MCP tools on the server.
6
- * Later plans will add registerTodoTools, registerStateTools, etc.
7
6
  */
8
7
  Object.defineProperty(exports, "__esModule", { value: true });
9
8
  exports.registerAllTools = registerAllTools;
10
9
  const phase_tools_js_1 = require("./phase-tools.js");
11
10
  const todo_tools_js_1 = require("./todo-tools.js");
12
11
  const state_tools_js_1 = require("./state-tools.js");
12
+ const context_tools_js_1 = require("./context-tools.js");
13
+ const roadmap_tools_js_1 = require("./roadmap-tools.js");
14
+ const config_tools_js_1 = require("./config-tools.js");
13
15
  /**
14
16
  * Register all MCP tools on the given server instance.
15
17
  */
@@ -17,5 +19,8 @@ function registerAllTools(server) {
17
19
  (0, phase_tools_js_1.registerPhaseTools)(server);
18
20
  (0, todo_tools_js_1.registerTodoTools)(server);
19
21
  (0, state_tools_js_1.registerStateTools)(server);
22
+ (0, context_tools_js_1.registerContextTools)(server);
23
+ (0, roadmap_tools_js_1.registerRoadmapTools)(server);
24
+ (0, config_tools_js_1.registerConfigTools)(server);
20
25
  }
21
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAUH,4CAIC;AAXD,qDAAsD;AACtD,mDAAoD;AACpD,qDAAsD;AAEtD;;GAEG;AACH,SAAgB,gBAAgB,CAAC,MAAiB;IAChD,IAAA,mCAAkB,EAAC,MAAM,CAAC,CAAC;IAC3B,IAAA,iCAAiB,EAAC,MAAM,CAAC,CAAC;IAC1B,IAAA,mCAAkB,EAAC,MAAM,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAaH,4CAOC;AAjBD,qDAAsD;AACtD,mDAAoD;AACpD,qDAAsD;AACtD,yDAA0D;AAC1D,yDAA0D;AAC1D,uDAAwD;AAExD;;GAEG;AACH,SAAgB,gBAAgB,CAAC,MAAiB;IAChD,IAAA,mCAAkB,EAAC,MAAM,CAAC,CAAC;IAC3B,IAAA,iCAAiB,EAAC,MAAM,CAAC,CAAC;IAC1B,IAAA,mCAAkB,EAAC,MAAM,CAAC,CAAC;IAC3B,IAAA,uCAAoB,EAAC,MAAM,CAAC,CAAC;IAC7B,IAAA,uCAAoB,EAAC,MAAM,CAAC,CAAC;IAC7B,IAAA,qCAAmB,EAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
@@ -95,7 +95,7 @@ function registerPhaseTools(server) {
95
95
  if (!name || !name.trim()) {
96
96
  return (0, utils_js_1.mcpError)('Phase name must not be empty', 'Validation failed');
97
97
  }
98
- const result = (0, phase_js_1.phaseAddCore)(cwd, name, { includeStubs: true });
98
+ const result = await (0, phase_js_1.phaseAddCore)(cwd, name, { includeStubs: true });
99
99
  return (0, utils_js_1.mcpSuccess)({
100
100
  phase_number: result.phase_number,
101
101
  padded: result.padded,
@@ -121,7 +121,7 @@ function registerPhaseTools(server) {
121
121
  if (!name || !name.trim()) {
122
122
  return (0, utils_js_1.mcpError)('Phase name must not be empty', 'Validation failed');
123
123
  }
124
- const result = (0, phase_js_1.phaseInsertCore)(cwd, after, name, { includeStubs: true });
124
+ const result = await (0, phase_js_1.phaseInsertCore)(cwd, after, name, { includeStubs: true });
125
125
  return (0, utils_js_1.mcpSuccess)({
126
126
  phase_number: result.phase_number,
127
127
  after_phase: result.after_phase,
@@ -143,7 +143,7 @@ function registerPhaseTools(server) {
143
143
  if (!cwd) {
144
144
  return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
145
145
  }
146
- const result = (0, phase_js_1.phaseCompleteCore)(cwd, phase);
146
+ const result = await (0, phase_js_1.phaseCompleteCore)(cwd, phase);
147
147
  return (0, utils_js_1.mcpSuccess)({
148
148
  completed_phase: result.completed_phase,
149
149
  phase_name: result.phase_name,
@@ -1 +1 @@
1
- {"version":3,"file":"phase-tools.js","sourceRoot":"","sources":["../../src/mcp/phase-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase-tools.js","sourceRoot":"","sources":["../../src/mcp/phase-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Roadmap Query MCP Tools — Roadmap analysis exposed as MCP tools
3
+ *
4
+ * CRITICAL: Never import output() or error() from core — they call process.exit().
5
+ * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.
6
+ * CRITICAL: Never call process.exit() — the server must stay alive after every tool call.
7
+ */
8
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
+ /**
10
+ * Register all roadmap query tools on the MCP server.
11
+ */
12
+ export declare function registerRoadmapTools(server: McpServer): void;
13
+ //# sourceMappingURL=roadmap-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadmap-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/roadmap-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsF5D"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * Roadmap Query MCP Tools — Roadmap analysis exposed as MCP tools
4
+ *
5
+ * CRITICAL: Never import output() or error() from core — they call process.exit().
6
+ * CRITICAL: Never write to stdout — it is reserved for MCP JSON-RPC protocol.
7
+ * CRITICAL: Never call process.exit() — the server must stay alive after every tool call.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.registerRoadmapTools = registerRoadmapTools;
11
+ const roadmap_js_1 = require("../core/roadmap.js");
12
+ const utils_js_1 = require("./utils.js");
13
+ /**
14
+ * Register all roadmap query tools on the MCP server.
15
+ */
16
+ function registerRoadmapTools(server) {
17
+ // ── mcp_get_roadmap ─────────────────────────────────────────────────────────
18
+ server.tool('mcp_get_roadmap', 'Get the full roadmap analysis including all phases, their status, and progress.', {}, async () => {
19
+ try {
20
+ const cwd = (0, utils_js_1.detectProjectRoot)();
21
+ if (!cwd) {
22
+ return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
23
+ }
24
+ const result = await (0, roadmap_js_1.cmdRoadmapAnalyze)(cwd);
25
+ if (!result.ok) {
26
+ return (0, utils_js_1.mcpError)(result.error, 'Roadmap analysis failed');
27
+ }
28
+ return (0, utils_js_1.mcpSuccess)({ roadmap: result.result }, 'Roadmap analysis complete');
29
+ }
30
+ catch (e) {
31
+ return (0, utils_js_1.mcpError)('Failed: ' + e.message, 'Error occurred');
32
+ }
33
+ });
34
+ // ── mcp_get_roadmap_progress ────────────────────────────────────────────────
35
+ server.tool('mcp_get_roadmap_progress', 'Get a focused progress summary: total phases, completed, in-progress, not started, and progress percentage.', {}, async () => {
36
+ try {
37
+ const cwd = (0, utils_js_1.detectProjectRoot)();
38
+ if (!cwd) {
39
+ return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
40
+ }
41
+ const result = await (0, roadmap_js_1.cmdRoadmapAnalyze)(cwd);
42
+ if (!result.ok) {
43
+ return (0, utils_js_1.mcpError)(result.error, 'Roadmap analysis failed');
44
+ }
45
+ const data = result.result;
46
+ const phases = (data.phases ?? []);
47
+ const total_phases = phases.length;
48
+ let completed = 0;
49
+ let in_progress = 0;
50
+ let not_started = 0;
51
+ for (const p of phases) {
52
+ const status = String(p.status ?? '').toLowerCase();
53
+ if (status === 'completed' || status === 'done') {
54
+ completed++;
55
+ }
56
+ else if (status === 'in-progress' || status === 'in_progress' || status === 'active') {
57
+ in_progress++;
58
+ }
59
+ else {
60
+ not_started++;
61
+ }
62
+ }
63
+ const progress_percent = total_phases > 0 ? Math.round((completed / total_phases) * 100) : 0;
64
+ return (0, utils_js_1.mcpSuccess)({
65
+ total_phases,
66
+ completed,
67
+ in_progress,
68
+ not_started,
69
+ progress_percent,
70
+ current_phase: data.current_phase ?? null,
71
+ next_phase: data.next_phase ?? null,
72
+ }, `Progress: ${completed}/${total_phases} phases complete (${progress_percent}%)`);
73
+ }
74
+ catch (e) {
75
+ return (0, utils_js_1.mcpError)('Failed: ' + e.message, 'Error occurred');
76
+ }
77
+ });
78
+ }
79
+ //# sourceMappingURL=roadmap-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadmap-tools.js","sourceRoot":"","sources":["../../src/mcp/roadmap-tools.ts"],"names":[],"mappings":"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"}