maxsimcli 4.6.0 → 4.7.1
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/dist/assets/CHANGELOG.md +39 -0
- package/dist/cli.cjs +470 -961
- package/dist/cli.cjs.map +1 -1
- package/dist/{core-RRjCSt0G.cjs → core-D5zUr9cb.cjs} +4 -3
- package/dist/core-D5zUr9cb.cjs.map +1 -0
- package/dist/install.cjs +3 -195
- package/dist/install.cjs.map +1 -1
- package/dist/mcp-server.cjs +2853 -217
- package/dist/mcp-server.cjs.map +1 -1
- package/dist/{skills-MYlMkYNt.cjs → skills-CjFWZIGM.cjs} +6 -6
- package/dist/{skills-MYlMkYNt.cjs.map → skills-CjFWZIGM.cjs.map} +1 -1
- package/package.json +1 -7
- package/dist/.tsbuildinfo +0 -1
- package/dist/assets/dashboard/client/assets/index-C199D4Eb.css +0 -32
- package/dist/assets/dashboard/client/assets/index-nAXJLp0_.js +0 -233
- package/dist/assets/dashboard/client/index.html +0 -19
- package/dist/assets/dashboard/server.js +0 -78813
- package/dist/backend/index.d.ts +0 -4
- package/dist/backend/index.d.ts.map +0 -1
- package/dist/backend/index.js +0 -12
- package/dist/backend/index.js.map +0 -1
- package/dist/backend/lifecycle.d.ts +0 -13
- package/dist/backend/lifecycle.d.ts.map +0 -1
- package/dist/backend/lifecycle.js +0 -168
- package/dist/backend/lifecycle.js.map +0 -1
- package/dist/backend/server.d.ts +0 -13
- package/dist/backend/server.d.ts.map +0 -1
- package/dist/backend/server.js +0 -1013
- package/dist/backend/server.js.map +0 -1
- package/dist/backend/terminal.d.ts +0 -49
- package/dist/backend/terminal.d.ts.map +0 -1
- package/dist/backend/terminal.js +0 -209
- package/dist/backend/terminal.js.map +0 -1
- package/dist/backend/types.d.ts +0 -77
- package/dist/backend/types.d.ts.map +0 -1
- package/dist/backend/types.js +0 -6
- package/dist/backend/types.js.map +0 -1
- package/dist/backend-server.cjs +0 -80672
- package/dist/backend-server.cjs.map +0 -1
- package/dist/backend-server.d.cts +0 -2
- package/dist/backend-server.d.ts +0 -11
- package/dist/backend-server.d.ts.map +0 -1
- package/dist/backend-server.js +0 -43
- package/dist/backend-server.js.map +0 -1
- package/dist/cli.d.cts +0 -2
- package/dist/cli.d.ts +0 -7
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -510
- package/dist/cli.js.map +0 -1
- package/dist/core/artefakte.d.ts +0 -12
- package/dist/core/artefakte.d.ts.map +0 -1
- package/dist/core/artefakte.js +0 -152
- package/dist/core/artefakte.js.map +0 -1
- package/dist/core/commands.d.ts +0 -26
- package/dist/core/commands.d.ts.map +0 -1
- package/dist/core/commands.js +0 -550
- package/dist/core/commands.js.map +0 -1
- package/dist/core/config.d.ts +0 -10
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -143
- package/dist/core/config.js.map +0 -1
- package/dist/core/context-loader.d.ts +0 -21
- package/dist/core/context-loader.d.ts.map +0 -1
- package/dist/core/context-loader.js +0 -212
- package/dist/core/context-loader.js.map +0 -1
- package/dist/core/core.d.ts +0 -91
- package/dist/core/core.d.ts.map +0 -1
- package/dist/core/core.js +0 -823
- package/dist/core/core.js.map +0 -1
- package/dist/core/dashboard-launcher.d.ts +0 -56
- package/dist/core/dashboard-launcher.d.ts.map +0 -1
- package/dist/core/dashboard-launcher.js +0 -246
- package/dist/core/dashboard-launcher.js.map +0 -1
- package/dist/core/drift.d.ts +0 -37
- package/dist/core/drift.d.ts.map +0 -1
- package/dist/core/drift.js +0 -213
- package/dist/core/drift.js.map +0 -1
- package/dist/core/frontmatter.d.ts +0 -33
- package/dist/core/frontmatter.d.ts.map +0 -1
- package/dist/core/frontmatter.js +0 -193
- package/dist/core/frontmatter.js.map +0 -1
- package/dist/core/index.d.ts +0 -28
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -189
- package/dist/core/index.js.map +0 -1
- package/dist/core/init.d.ts +0 -287
- package/dist/core/init.d.ts.map +0 -1
- package/dist/core/init.js +0 -816
- package/dist/core/init.js.map +0 -1
- package/dist/core/milestone.d.ts +0 -9
- package/dist/core/milestone.d.ts.map +0 -1
- package/dist/core/milestone.js +0 -230
- package/dist/core/milestone.js.map +0 -1
- package/dist/core/phase.d.ts +0 -53
- package/dist/core/phase.d.ts.map +0 -1
- package/dist/core/phase.js +0 -891
- package/dist/core/phase.js.map +0 -1
- package/dist/core/roadmap.d.ts +0 -10
- package/dist/core/roadmap.d.ts.map +0 -1
- package/dist/core/roadmap.js +0 -165
- package/dist/core/roadmap.js.map +0 -1
- package/dist/core/skills.d.ts +0 -20
- package/dist/core/skills.d.ts.map +0 -1
- package/dist/core/skills.js +0 -144
- package/dist/core/skills.js.map +0 -1
- package/dist/core/start.d.ts +0 -15
- package/dist/core/start.d.ts.map +0 -1
- package/dist/core/start.js +0 -80
- package/dist/core/start.js.map +0 -1
- package/dist/core/state.d.ts +0 -32
- package/dist/core/state.d.ts.map +0 -1
- package/dist/core/state.js +0 -582
- package/dist/core/state.js.map +0 -1
- package/dist/core/template.d.ts +0 -30
- package/dist/core/template.d.ts.map +0 -1
- package/dist/core/template.js +0 -223
- package/dist/core/template.js.map +0 -1
- package/dist/core/types.d.ts +0 -519
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -60
- package/dist/core/types.js.map +0 -1
- package/dist/core/verify.d.ts +0 -128
- package/dist/core/verify.d.ts.map +0 -1
- package/dist/core/verify.js +0 -754
- package/dist/core/verify.js.map +0 -1
- package/dist/core-RRjCSt0G.cjs.map +0 -1
- package/dist/esm-iIOBzmdz.cjs +0 -1561
- package/dist/esm-iIOBzmdz.cjs.map +0 -1
- package/dist/hooks/index.d.ts +0 -11
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -18
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/maxsim-check-update.d.ts +0 -17
- package/dist/hooks/maxsim-check-update.d.ts.map +0 -1
- package/dist/hooks/maxsim-check-update.js +0 -101
- package/dist/hooks/maxsim-check-update.js.map +0 -1
- package/dist/hooks/maxsim-context-monitor.d.ts +0 -21
- package/dist/hooks/maxsim-context-monitor.d.ts.map +0 -1
- package/dist/hooks/maxsim-context-monitor.js +0 -131
- package/dist/hooks/maxsim-context-monitor.js.map +0 -1
- package/dist/hooks/maxsim-statusline.d.ts +0 -19
- package/dist/hooks/maxsim-statusline.d.ts.map +0 -1
- package/dist/hooks/maxsim-statusline.js +0 -146
- package/dist/hooks/maxsim-statusline.js.map +0 -1
- package/dist/hooks/shared.d.ts +0 -11
- package/dist/hooks/shared.d.ts.map +0 -1
- package/dist/hooks/shared.js +0 -29
- package/dist/hooks/shared.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/install/adapters.d.ts +0 -6
- package/dist/install/adapters.d.ts.map +0 -1
- package/dist/install/adapters.js +0 -65
- package/dist/install/adapters.js.map +0 -1
- package/dist/install/copy.d.ts +0 -6
- package/dist/install/copy.d.ts.map +0 -1
- package/dist/install/copy.js +0 -71
- package/dist/install/copy.js.map +0 -1
- package/dist/install/dashboard.d.ts +0 -16
- package/dist/install/dashboard.d.ts.map +0 -1
- package/dist/install/dashboard.js +0 -273
- package/dist/install/dashboard.js.map +0 -1
- package/dist/install/hooks.d.ts +0 -31
- package/dist/install/hooks.d.ts.map +0 -1
- package/dist/install/hooks.js +0 -260
- package/dist/install/hooks.js.map +0 -1
- package/dist/install/index.d.ts +0 -2
- package/dist/install/index.d.ts.map +0 -1
- package/dist/install/index.js +0 -534
- package/dist/install/index.js.map +0 -1
- package/dist/install/manifest.d.ts +0 -23
- package/dist/install/manifest.d.ts.map +0 -1
- package/dist/install/manifest.js +0 -133
- package/dist/install/manifest.js.map +0 -1
- package/dist/install/patches.d.ts +0 -10
- package/dist/install/patches.d.ts.map +0 -1
- package/dist/install/patches.js +0 -124
- package/dist/install/patches.js.map +0 -1
- package/dist/install/shared.d.ts +0 -56
- package/dist/install/shared.d.ts.map +0 -1
- package/dist/install/shared.js +0 -181
- package/dist/install/shared.js.map +0 -1
- package/dist/install/uninstall.d.ts +0 -5
- package/dist/install/uninstall.d.ts.map +0 -1
- package/dist/install/uninstall.js +0 -222
- package/dist/install/uninstall.js.map +0 -1
- package/dist/install/utils.d.ts +0 -27
- package/dist/install/utils.d.ts.map +0 -1
- package/dist/install/utils.js +0 -99
- package/dist/install/utils.js.map +0 -1
- package/dist/install.d.cts +0 -2
- package/dist/lifecycle-DxCru7rk.cjs +0 -136
- package/dist/lifecycle-DxCru7rk.cjs.map +0 -1
- package/dist/mcp/config-tools.d.ts +0 -13
- package/dist/mcp/config-tools.d.ts.map +0 -1
- package/dist/mcp/config-tools.js +0 -66
- package/dist/mcp/config-tools.js.map +0 -1
- package/dist/mcp/context-tools.d.ts +0 -13
- package/dist/mcp/context-tools.d.ts.map +0 -1
- package/dist/mcp/context-tools.js +0 -176
- package/dist/mcp/context-tools.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -11
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -26
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/phase-tools.d.ts +0 -13
- package/dist/mcp/phase-tools.d.ts.map +0 -1
- package/dist/mcp/phase-tools.js +0 -177
- package/dist/mcp/phase-tools.js.map +0 -1
- package/dist/mcp/roadmap-tools.d.ts +0 -13
- package/dist/mcp/roadmap-tools.d.ts.map +0 -1
- package/dist/mcp/roadmap-tools.js +0 -79
- package/dist/mcp/roadmap-tools.js.map +0 -1
- package/dist/mcp/state-tools.d.ts +0 -13
- package/dist/mcp/state-tools.d.ts.map +0 -1
- package/dist/mcp/state-tools.js +0 -185
- package/dist/mcp/state-tools.js.map +0 -1
- package/dist/mcp/todo-tools.d.ts +0 -13
- package/dist/mcp/todo-tools.d.ts.map +0 -1
- package/dist/mcp/todo-tools.js +0 -143
- package/dist/mcp/todo-tools.js.map +0 -1
- package/dist/mcp/utils.d.ts +0 -27
- package/dist/mcp/utils.d.ts.map +0 -1
- package/dist/mcp/utils.js +0 -82
- package/dist/mcp/utils.js.map +0 -1
- package/dist/mcp-server.d.cts +0 -2
- package/dist/mcp-server.d.ts +0 -12
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js +0 -31
- package/dist/mcp-server.js.map +0 -1
- package/dist/server-By0TN-nC.cjs +0 -2995
- package/dist/server-By0TN-nC.cjs.map +0 -1
|
@@ -1,176 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-tools.js","sourceRoot":"","sources":["../../src/mcp/context-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/index.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool Registration — Orchestrates all tool registrations
|
|
3
|
-
*
|
|
4
|
-
* This is the single entry point for registering MCP tools on the server.
|
|
5
|
-
*/
|
|
6
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
|
-
/**
|
|
8
|
-
* Register all MCP tools on the given server instance.
|
|
9
|
-
*/
|
|
10
|
-
export declare function registerAllTools(server: McpServer): void;
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/mcp/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* MCP Tool Registration — Orchestrates all tool registrations
|
|
4
|
-
*
|
|
5
|
-
* This is the single entry point for registering MCP tools on the server.
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.registerAllTools = registerAllTools;
|
|
9
|
-
const phase_tools_js_1 = require("./phase-tools.js");
|
|
10
|
-
const todo_tools_js_1 = require("./todo-tools.js");
|
|
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");
|
|
15
|
-
/**
|
|
16
|
-
* Register all MCP tools on the given server instance.
|
|
17
|
-
*/
|
|
18
|
-
function registerAllTools(server) {
|
|
19
|
-
(0, phase_tools_js_1.registerPhaseTools)(server);
|
|
20
|
-
(0, todo_tools_js_1.registerTodoTools)(server);
|
|
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);
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=index.js.map
|
package/dist/mcp/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Phase CRUD MCP Tools — Phase operations 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 phase CRUD tools on the MCP server.
|
|
11
|
-
*/
|
|
12
|
-
export declare function registerPhaseTools(server: McpServer): void;
|
|
13
|
-
//# sourceMappingURL=phase-tools.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"phase-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/phase-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBzE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyN1D"}
|
package/dist/mcp/phase-tools.js
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Phase CRUD MCP Tools — Phase operations 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.registerPhaseTools = registerPhaseTools;
|
|
14
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
15
|
-
const zod_1 = require("zod");
|
|
16
|
-
const core_js_1 = require("../core/core.js");
|
|
17
|
-
const phase_js_1 = require("../core/phase.js");
|
|
18
|
-
const utils_js_1 = require("./utils.js");
|
|
19
|
-
/**
|
|
20
|
-
* Register all phase CRUD tools on the MCP server.
|
|
21
|
-
*/
|
|
22
|
-
function registerPhaseTools(server) {
|
|
23
|
-
// ── mcp_find_phase ──────────────────────────────────────────────────────────
|
|
24
|
-
server.tool('mcp_find_phase', 'Find a phase directory by number or name. Returns phase details including plans, summaries, and status.', {
|
|
25
|
-
phase: zod_1.z.string().describe('Phase number or name (e.g. "01", "1", "01A", "1.1")'),
|
|
26
|
-
}, async ({ phase }) => {
|
|
27
|
-
try {
|
|
28
|
-
const cwd = (0, utils_js_1.detectProjectRoot)();
|
|
29
|
-
if (!cwd) {
|
|
30
|
-
return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
|
|
31
|
-
}
|
|
32
|
-
const result = (0, core_js_1.findPhaseInternal)(cwd, phase);
|
|
33
|
-
if (!result) {
|
|
34
|
-
return (0, utils_js_1.mcpError)(`Phase ${phase} not found`, 'Phase not found');
|
|
35
|
-
}
|
|
36
|
-
return (0, utils_js_1.mcpSuccess)({
|
|
37
|
-
found: result.found,
|
|
38
|
-
directory: result.directory,
|
|
39
|
-
phase_number: result.phase_number,
|
|
40
|
-
phase_name: result.phase_name,
|
|
41
|
-
phase_slug: result.phase_slug,
|
|
42
|
-
plans: result.plans,
|
|
43
|
-
summaries: result.summaries,
|
|
44
|
-
incomplete_plans: result.incomplete_plans,
|
|
45
|
-
has_research: result.has_research,
|
|
46
|
-
has_context: result.has_context,
|
|
47
|
-
has_verification: result.has_verification,
|
|
48
|
-
archived: result.archived ?? null,
|
|
49
|
-
}, `Found phase ${result.phase_number}: ${result.phase_name ?? 'unnamed'}`);
|
|
50
|
-
}
|
|
51
|
-
catch (e) {
|
|
52
|
-
return (0, utils_js_1.mcpError)(e.message, 'Operation failed');
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
// ── mcp_list_phases ─────────────────────────────────────────────────────────
|
|
56
|
-
server.tool('mcp_list_phases', 'List phase directories with pagination. Returns sorted phases with offset/limit support.', {
|
|
57
|
-
include_archived: zod_1.z
|
|
58
|
-
.boolean()
|
|
59
|
-
.optional()
|
|
60
|
-
.default(false)
|
|
61
|
-
.describe('Include archived phases from completed milestones'),
|
|
62
|
-
offset: zod_1.z
|
|
63
|
-
.number()
|
|
64
|
-
.optional()
|
|
65
|
-
.default(0)
|
|
66
|
-
.describe('Number of phases to skip (for pagination)'),
|
|
67
|
-
limit: zod_1.z
|
|
68
|
-
.number()
|
|
69
|
-
.optional()
|
|
70
|
-
.default(20)
|
|
71
|
-
.describe('Maximum number of phases to return'),
|
|
72
|
-
}, async ({ include_archived, offset, limit }) => {
|
|
73
|
-
try {
|
|
74
|
-
const cwd = (0, utils_js_1.detectProjectRoot)();
|
|
75
|
-
if (!cwd) {
|
|
76
|
-
return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
|
|
77
|
-
}
|
|
78
|
-
const phasesDir = (0, core_js_1.phasesPath)(cwd);
|
|
79
|
-
if (!node_fs_1.default.existsSync(phasesDir)) {
|
|
80
|
-
return (0, utils_js_1.mcpSuccess)({ directories: [], count: 0, total_count: 0, offset, limit, has_more: false }, 'No phases directory found');
|
|
81
|
-
}
|
|
82
|
-
let dirs = (0, core_js_1.listSubDirs)(phasesDir);
|
|
83
|
-
if (include_archived) {
|
|
84
|
-
const archived = (0, core_js_1.getArchivedPhaseDirs)(cwd);
|
|
85
|
-
for (const a of archived) {
|
|
86
|
-
dirs.push(`${a.name} [${a.milestone}]`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
dirs.sort((a, b) => (0, core_js_1.comparePhaseNum)(a, b));
|
|
90
|
-
const total_count = dirs.length;
|
|
91
|
-
const paginated = dirs.slice(offset, offset + limit);
|
|
92
|
-
const has_more = offset + limit < total_count;
|
|
93
|
-
return (0, utils_js_1.mcpSuccess)({ directories: paginated, count: paginated.length, total_count, offset, limit, has_more }, `Showing ${paginated.length} of ${total_count} phase(s)`);
|
|
94
|
-
}
|
|
95
|
-
catch (e) {
|
|
96
|
-
return (0, utils_js_1.mcpError)(e.message, 'Operation failed');
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
// ── mcp_create_phase ────────────────────────────────────────────────────────
|
|
100
|
-
server.tool('mcp_create_phase', 'Create a new phase. Adds the next sequential phase directory and appends to ROADMAP.md.', {
|
|
101
|
-
name: zod_1.z.string().describe('Phase description/name (e.g. "Authentication System")'),
|
|
102
|
-
}, async ({ name }) => {
|
|
103
|
-
try {
|
|
104
|
-
const cwd = (0, utils_js_1.detectProjectRoot)();
|
|
105
|
-
if (!cwd) {
|
|
106
|
-
return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
|
|
107
|
-
}
|
|
108
|
-
if (!name || !name.trim()) {
|
|
109
|
-
return (0, utils_js_1.mcpError)('Phase name must not be empty', 'Validation failed');
|
|
110
|
-
}
|
|
111
|
-
const result = await (0, phase_js_1.phaseAddCore)(cwd, name, { includeStubs: true });
|
|
112
|
-
return (0, utils_js_1.mcpSuccess)({
|
|
113
|
-
phase_number: result.phase_number,
|
|
114
|
-
padded: result.padded,
|
|
115
|
-
name: result.description,
|
|
116
|
-
slug: result.slug,
|
|
117
|
-
directory: result.directory,
|
|
118
|
-
}, `Created Phase ${result.phase_number}: ${result.description}`);
|
|
119
|
-
}
|
|
120
|
-
catch (e) {
|
|
121
|
-
return (0, utils_js_1.mcpError)(e.message, 'Operation failed');
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
// ── mcp_insert_phase ────────────────────────────────────────────────────────
|
|
125
|
-
server.tool('mcp_insert_phase', 'Insert a decimal phase after a specified phase (e.g. 01.1 after 01). Creates directory and updates ROADMAP.md.', {
|
|
126
|
-
name: zod_1.z.string().describe('Phase description/name'),
|
|
127
|
-
after: zod_1.z.string().describe('Phase number to insert after (e.g. "01", "1")'),
|
|
128
|
-
}, async ({ name, after }) => {
|
|
129
|
-
try {
|
|
130
|
-
const cwd = (0, utils_js_1.detectProjectRoot)();
|
|
131
|
-
if (!cwd) {
|
|
132
|
-
return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
|
|
133
|
-
}
|
|
134
|
-
if (!name || !name.trim()) {
|
|
135
|
-
return (0, utils_js_1.mcpError)('Phase name must not be empty', 'Validation failed');
|
|
136
|
-
}
|
|
137
|
-
const result = await (0, phase_js_1.phaseInsertCore)(cwd, after, name, { includeStubs: true });
|
|
138
|
-
return (0, utils_js_1.mcpSuccess)({
|
|
139
|
-
phase_number: result.phase_number,
|
|
140
|
-
after_phase: result.after_phase,
|
|
141
|
-
name: result.description,
|
|
142
|
-
slug: result.slug,
|
|
143
|
-
directory: result.directory,
|
|
144
|
-
}, `Inserted Phase ${result.phase_number}: ${result.description} after Phase ${result.after_phase}`);
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
147
|
-
return (0, utils_js_1.mcpError)(e.message, 'Operation failed');
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
// ── mcp_complete_phase ──────────────────────────────────────────────────────
|
|
151
|
-
server.tool('mcp_complete_phase', 'Mark a phase as complete. Updates ROADMAP.md checkbox, progress table, plan count, STATE.md, and REQUIREMENTS.md.', {
|
|
152
|
-
phase: zod_1.z.string().describe('Phase number to complete (e.g. "01", "1", "1.1")'),
|
|
153
|
-
}, async ({ phase }) => {
|
|
154
|
-
try {
|
|
155
|
-
const cwd = (0, utils_js_1.detectProjectRoot)();
|
|
156
|
-
if (!cwd) {
|
|
157
|
-
return (0, utils_js_1.mcpError)('No .planning/ directory found', 'Project not detected');
|
|
158
|
-
}
|
|
159
|
-
const result = await (0, phase_js_1.phaseCompleteCore)(cwd, phase);
|
|
160
|
-
return (0, utils_js_1.mcpSuccess)({
|
|
161
|
-
completed_phase: result.completed_phase,
|
|
162
|
-
phase_name: result.phase_name,
|
|
163
|
-
plans_executed: result.plans_executed,
|
|
164
|
-
next_phase: result.next_phase,
|
|
165
|
-
next_phase_name: result.next_phase_name,
|
|
166
|
-
is_last_phase: result.is_last_phase,
|
|
167
|
-
date: result.date,
|
|
168
|
-
roadmap_updated: result.roadmap_updated,
|
|
169
|
-
state_updated: result.state_updated,
|
|
170
|
-
}, `Phase ${phase} marked as complete${result.next_phase ? `, next: Phase ${result.next_phase}` : ''}`);
|
|
171
|
-
}
|
|
172
|
-
catch (e) {
|
|
173
|
-
return (0, utils_js_1.mcpError)(e.message, 'Operation failed');
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
//# sourceMappingURL=phase-tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"phase-tools.js","sourceRoot":"","sources":["../../src/mcp/phase-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,79 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"roadmap-tools.js","sourceRoot":"","sources":["../../src/mcp/roadmap-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* State Management MCP Tools — STATE.md operations 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 state management tools on the MCP server.
|
|
11
|
-
*/
|
|
12
|
-
export declare function registerStateTools(server: McpServer): void;
|
|
13
|
-
//# sourceMappingURL=state-tools.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/state-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuQ1D"}
|