@context-forge/mcp 0.8.5 → 0.8.6

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 (61) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +51 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/tools/agentGuideTool.d.ts +3 -0
  6. package/dist/tools/agentGuideTool.d.ts.map +1 -0
  7. package/dist/tools/agentGuideTool.js +83 -0
  8. package/dist/tools/agentGuideTool.js.map +1 -0
  9. package/dist/tools/agentOnboardTool.d.ts +3 -0
  10. package/dist/tools/agentOnboardTool.d.ts.map +1 -0
  11. package/dist/tools/agentOnboardTool.js +85 -0
  12. package/dist/tools/agentOnboardTool.js.map +1 -0
  13. package/dist/tools/agentQuickstartTool.d.ts +3 -0
  14. package/dist/tools/agentQuickstartTool.d.ts.map +1 -0
  15. package/dist/tools/agentQuickstartTool.js +60 -0
  16. package/dist/tools/agentQuickstartTool.js.map +1 -0
  17. package/dist/tools/configTools.d.ts +3 -0
  18. package/dist/tools/configTools.d.ts.map +1 -0
  19. package/dist/tools/configTools.js +76 -0
  20. package/dist/tools/configTools.js.map +1 -0
  21. package/dist/tools/contextTools.d.ts +28 -0
  22. package/dist/tools/contextTools.d.ts.map +1 -0
  23. package/dist/tools/contextTools.js +229 -0
  24. package/dist/tools/contextTools.js.map +1 -0
  25. package/dist/tools/guideTools.d.ts +3 -0
  26. package/dist/tools/guideTools.d.ts.map +1 -0
  27. package/dist/tools/guideTools.js +130 -0
  28. package/dist/tools/guideTools.js.map +1 -0
  29. package/dist/tools/introspectionTools.d.ts +3 -0
  30. package/dist/tools/introspectionTools.d.ts.map +1 -0
  31. package/dist/tools/introspectionTools.js +276 -0
  32. package/dist/tools/introspectionTools.js.map +1 -0
  33. package/dist/tools/projectTools.d.ts +3 -0
  34. package/dist/tools/projectTools.d.ts.map +1 -0
  35. package/dist/tools/projectTools.js +264 -0
  36. package/dist/tools/projectTools.js.map +1 -0
  37. package/dist/tools/resolveOperationPath.d.ts +28 -0
  38. package/dist/tools/resolveOperationPath.d.ts.map +1 -0
  39. package/dist/tools/resolveOperationPath.js +56 -0
  40. package/dist/tools/resolveOperationPath.js.map +1 -0
  41. package/dist/tools/resolveProjectId.d.ts +14 -0
  42. package/dist/tools/resolveProjectId.d.ts.map +1 -0
  43. package/dist/tools/resolveProjectId.js +86 -0
  44. package/dist/tools/resolveProjectId.js.map +1 -0
  45. package/dist/tools/stateTools.d.ts +3 -0
  46. package/dist/tools/stateTools.d.ts.map +1 -0
  47. package/dist/tools/stateTools.js +55 -0
  48. package/dist/tools/stateTools.js.map +1 -0
  49. package/dist/tools/versionTool.d.ts +3 -0
  50. package/dist/tools/versionTool.d.ts.map +1 -0
  51. package/dist/tools/versionTool.js +11 -0
  52. package/dist/tools/versionTool.js.map +1 -0
  53. package/dist/tools/workflowTools.d.ts +3 -0
  54. package/dist/tools/workflowTools.d.ts.map +1 -0
  55. package/dist/tools/workflowTools.js +270 -0
  56. package/dist/tools/workflowTools.js.map +1 -0
  57. package/dist/tools/worktreeTools.d.ts +3 -0
  58. package/dist/tools/worktreeTools.d.ts.map +1 -0
  59. package/dist/tools/worktreeTools.js +234 -0
  60. package/dist/tools/worktreeTools.js.map +1 -0
  61. package/package.json +2 -2
@@ -0,0 +1,234 @@
1
+ import { z } from 'zod';
2
+ import { FileProjectStore, WorktreeService, GitWorktreeDiscovery } from '@context-forge/core/node';
3
+ import { resolveProjectId } from './resolveProjectId.js';
4
+ import { errorResult, jsonResult } from './contextTools.js';
5
+ /**
6
+ * Resolve a worktree by ID or name (case-insensitive).
7
+ * Returns the project and worktree, or an error result.
8
+ */
9
+ async function resolveWorktree(projectId, worktreeIdOrName, store) {
10
+ const project = await store.getById(projectId);
11
+ if (!project) {
12
+ return errorResult(`Project not found: '${projectId}'. Use the project_list tool to see available projects.`);
13
+ }
14
+ const service = new WorktreeService(store);
15
+ // Try exact ID first
16
+ let worktree = await service.getWorktree(projectId, worktreeIdOrName);
17
+ if (!worktree) {
18
+ // Fall back to case-insensitive name match
19
+ worktree = await service.getWorktreeByName(projectId, worktreeIdOrName);
20
+ }
21
+ if (!worktree) {
22
+ return errorResult(`Worktree '${worktreeIdOrName}' not found in project '${projectId}'. ` +
23
+ 'Use the worktree_list tool to see available worktrees.');
24
+ }
25
+ return { project, worktree };
26
+ }
27
+ /** Check if a result is an error (has isError field). */
28
+ function isErrorResult(result) {
29
+ return typeof result === 'object' && result !== null && 'isError' in result;
30
+ }
31
+ /** Parse an index range string "start-end" into a [number, number] tuple. */
32
+ function parseIndexRange(value) {
33
+ const match = /^(\d+)-(\d+)$/.exec(value);
34
+ if (!match)
35
+ return null;
36
+ return [parseInt(match[1], 10), parseInt(match[2], 10)];
37
+ }
38
+ export function registerWorktreeTools(server) {
39
+ // --- worktree_list ---
40
+ server.registerTool('worktree_list', {
41
+ title: 'List Worktrees',
42
+ description: 'List all worktree contexts for a project. Returns worktree IDs, names, index ranges, and workflow state. ' +
43
+ 'Use this to discover available worktrees before calling worktree_get or worktree_update.',
44
+ inputSchema: {
45
+ projectId: z.string().optional().describe('Project ID. Omit to resolve from CWD.'),
46
+ },
47
+ annotations: { readOnlyHint: true, openWorldHint: false },
48
+ }, async (args) => {
49
+ try {
50
+ const resolvedId = await resolveProjectId(args.projectId);
51
+ const store = new FileProjectStore();
52
+ const service = new WorktreeService(store);
53
+ const worktrees = await service.listWorktrees(resolvedId);
54
+ // Validate worktree paths if project has a projectPath
55
+ const project = await store.getById(resolvedId);
56
+ let pathStatuses;
57
+ if (project?.projectPath && worktrees.length > 0) {
58
+ try {
59
+ const gitWorktrees = await new GitWorktreeDiscovery().listWorktrees(project.projectPath);
60
+ pathStatuses = await service.validateWorktreePaths(resolvedId, gitWorktrees);
61
+ }
62
+ catch {
63
+ // Git discovery failure — omit pathStatuses
64
+ }
65
+ }
66
+ return jsonResult({ worktrees, count: worktrees.length, ...(pathStatuses ? { pathStatuses } : {}) });
67
+ }
68
+ catch (error) {
69
+ const msg = error instanceof Error ? error.message : String(error);
70
+ return errorResult(`Error: ${msg}`);
71
+ }
72
+ });
73
+ // --- worktree_get ---
74
+ server.registerTool('worktree_get', {
75
+ title: 'Get Worktree',
76
+ description: 'Get full details for a specific worktree context by ID or name. ' +
77
+ 'Returns all worktree fields including index range, workflow state, and paths.',
78
+ inputSchema: {
79
+ projectId: z.string().optional().describe('Project ID. Omit to resolve from CWD.'),
80
+ worktree: z.string().describe('Worktree ID or name to look up.'),
81
+ },
82
+ annotations: { readOnlyHint: true, openWorldHint: false },
83
+ }, async (args) => {
84
+ try {
85
+ const resolvedId = await resolveProjectId(args.projectId);
86
+ const store = new FileProjectStore();
87
+ const result = await resolveWorktree(resolvedId, args.worktree, store);
88
+ if (isErrorResult(result))
89
+ return result;
90
+ return jsonResult(result.worktree);
91
+ }
92
+ catch (error) {
93
+ const msg = error instanceof Error ? error.message : String(error);
94
+ return errorResult(`Error: ${msg}`);
95
+ }
96
+ });
97
+ // --- worktree_init ---
98
+ server.registerTool('worktree_init', {
99
+ title: 'Initialize Worktree',
100
+ description: 'Create a new worktree context for a project. The first worktree triggers forward migration, ' +
101
+ 'moving existing workflow fields into a "default" worktree (range 100-799). Returns the created worktree, ' +
102
+ 'whether migration occurred, and any index range overlaps.',
103
+ inputSchema: {
104
+ projectId: z.string().optional().describe('Project ID. Omit to resolve from CWD.'),
105
+ name: z.string().describe('Display name for the worktree context.'),
106
+ indexRange: z.string().describe('Slice index range as "start-end" (e.g., "100-199").'),
107
+ worktreePath: z.string().optional().describe('Absolute path to the git worktree directory.'),
108
+ archDoc: z.string().optional().describe('Architecture document reference.'),
109
+ slicePlan: z.string().optional().describe('Slice plan document reference.'),
110
+ developmentPhase: z.string().optional().describe('Initial development phase.'),
111
+ override: z.boolean().optional().describe('Skip range-chopping and allow intentional overlap.'),
112
+ },
113
+ annotations: { destructiveHint: false, idempotentHint: false },
114
+ }, async (args) => {
115
+ try {
116
+ const range = parseIndexRange(args.indexRange);
117
+ if (!range) {
118
+ return errorResult(`Invalid indexRange format: '${args.indexRange}'. Expected "start-end" (e.g., "100-199").`);
119
+ }
120
+ const resolvedId = await resolveProjectId(args.projectId);
121
+ const store = new FileProjectStore();
122
+ const service = new WorktreeService(store);
123
+ const result = await service.addWorktree(resolvedId, {
124
+ name: args.name,
125
+ indexRange: range,
126
+ worktreePath: args.worktreePath,
127
+ archDoc: args.archDoc,
128
+ slicePlan: args.slicePlan,
129
+ override: args.override,
130
+ });
131
+ // Set developmentPhase via update if provided
132
+ if (args.developmentPhase) {
133
+ await service.updateWorktree(resolvedId, result.worktree.id, {
134
+ developmentPhase: args.developmentPhase,
135
+ });
136
+ result.worktree.developmentPhase = args.developmentPhase;
137
+ }
138
+ return jsonResult(result);
139
+ }
140
+ catch (error) {
141
+ const msg = error instanceof Error ? error.message : String(error);
142
+ return errorResult(`Error: ${msg}`);
143
+ }
144
+ });
145
+ // --- worktree_update ---
146
+ server.registerTool('worktree_update', {
147
+ title: 'Update Worktree',
148
+ description: 'Update fields on an existing worktree context. Provide the worktree ID or name and any fields to change. ' +
149
+ 'Returns the full updated worktree context.',
150
+ inputSchema: {
151
+ projectId: z.string().optional().describe('Project ID. Omit to resolve from CWD.'),
152
+ worktree: z.string().describe('Worktree ID or name to update.'),
153
+ name: z.string().optional().describe('New display name.'),
154
+ indexRange: z.string().optional().describe('New index range as "start-end".'),
155
+ worktreePath: z.string().optional().describe('New worktree directory path.'),
156
+ archDoc: z.string().optional().describe('Architecture document reference.'),
157
+ slicePlan: z.string().optional().describe('Slice plan document reference.'),
158
+ developmentPhase: z.string().optional().describe('Development phase.'),
159
+ activeSlice: z.string().optional().describe('Active slice name.'),
160
+ activeTaskFile: z.string().optional().describe('Active task file name.'),
161
+ instruction: z.string().optional().describe('Instruction type.'),
162
+ workType: z.enum(['start', 'continue']).optional().describe('Work type.'),
163
+ rangeOverride: z.boolean().optional().describe('Allow overlapping index ranges (skip range chopping).'),
164
+ },
165
+ annotations: { destructiveHint: false, idempotentHint: true },
166
+ }, async (args) => {
167
+ try {
168
+ const resolvedId = await resolveProjectId(args.projectId);
169
+ const store = new FileProjectStore();
170
+ const resolved = await resolveWorktree(resolvedId, args.worktree, store);
171
+ if (isErrorResult(resolved))
172
+ return resolved;
173
+ // Parse indexRange if provided
174
+ let indexRange;
175
+ if (args.indexRange) {
176
+ const parsed = parseIndexRange(args.indexRange);
177
+ if (!parsed) {
178
+ return errorResult(`Invalid indexRange format: '${args.indexRange}'. Expected "start-end" (e.g., "100-199").`);
179
+ }
180
+ indexRange = parsed;
181
+ }
182
+ // Collect non-undefined update fields (all args except routing keys)
183
+ const NON_UPDATE_KEYS = new Set(['projectId', 'worktree', 'indexRange']);
184
+ const updates = {};
185
+ for (const [key, value] of Object.entries(args)) {
186
+ if (!NON_UPDATE_KEYS.has(key) && value !== undefined) {
187
+ updates[key] = value;
188
+ }
189
+ }
190
+ if (indexRange) {
191
+ updates.indexRange = indexRange;
192
+ }
193
+ const service = new WorktreeService(store);
194
+ const updated = await service.updateWorktree(resolvedId, resolved.worktree.id, updates);
195
+ // Check for overlaps when range changed
196
+ let overlaps;
197
+ if (indexRange) {
198
+ overlaps = await service.findOverlaps(resolvedId, indexRange, resolved.worktree.id);
199
+ }
200
+ return jsonResult({ worktree: updated, ...(overlaps ? { overlaps } : {}) });
201
+ }
202
+ catch (error) {
203
+ const msg = error instanceof Error ? error.message : String(error);
204
+ return errorResult(`Error: ${msg}`);
205
+ }
206
+ });
207
+ // --- worktree_rm ---
208
+ server.registerTool('worktree_rm', {
209
+ title: 'Remove Worktree',
210
+ description: 'Remove a worktree context from a project. If this is the last worktree, triggers reverse migration ' +
211
+ 'restoring workflow fields to the project. Returns the removed worktree and whether migration occurred.',
212
+ inputSchema: {
213
+ projectId: z.string().optional().describe('Project ID. Omit to resolve from CWD.'),
214
+ worktree: z.string().describe('Worktree ID or name to remove.'),
215
+ },
216
+ annotations: { destructiveHint: true, idempotentHint: false },
217
+ }, async (args) => {
218
+ try {
219
+ const resolvedId = await resolveProjectId(args.projectId);
220
+ const store = new FileProjectStore();
221
+ const resolved = await resolveWorktree(resolvedId, args.worktree, store);
222
+ if (isErrorResult(resolved))
223
+ return resolved;
224
+ const service = new WorktreeService(store);
225
+ const result = await service.removeWorktree(resolvedId, resolved.worktree.id);
226
+ return jsonResult(result);
227
+ }
228
+ catch (error) {
229
+ const msg = error instanceof Error ? error.message : String(error);
230
+ return errorResult(`Error: ${msg}`);
231
+ }
232
+ });
233
+ }
234
+ //# sourceMappingURL=worktreeTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktreeTools.js","sourceRoot":"","sources":["../../src/tools/worktreeTools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@context-forge/mcp",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "description": "MCP server for Context Forge — generates structured AI context prompts from project configuration and templates",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -34,7 +34,7 @@
34
34
  "dependencies": {
35
35
  "@modelcontextprotocol/sdk": "^1.26.0",
36
36
  "zod": "^4.1.5",
37
- "@context-forge/core": "0.8.5"
37
+ "@context-forge/core": "0.8.6"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^25.3.0",