autoproject-mcp 1.1.1 → 1.4.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.
- package/README.md +54 -2
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts +4 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +108 -1
- package/dist/prompts/index.js.map +1 -1
- package/dist/tools/applicationTools.d.ts +5 -5
- package/dist/tools/applicationTools.js +43 -43
- package/dist/tools/applicationTools.js.map +1 -1
- package/dist/tools/documentTools.d.ts +9 -10
- package/dist/tools/documentTools.d.ts.map +1 -1
- package/dist/tools/documentTools.js +124 -66
- package/dist/tools/documentTools.js.map +1 -1
- package/dist/tools/hierarchyTools.d.ts +5 -1
- package/dist/tools/hierarchyTools.d.ts.map +1 -1
- package/dist/tools/hierarchyTools.js +82 -13
- package/dist/tools/hierarchyTools.js.map +1 -1
- package/dist/tools/releaseCycleLinkTools.d.ts +4 -4
- package/dist/tools/releaseCycleLinkTools.d.ts.map +1 -1
- package/dist/tools/releaseCycleLinkTools.js +60 -36
- package/dist/tools/releaseCycleLinkTools.js.map +1 -1
- package/dist/tools/screenTools.d.ts +9 -1
- package/dist/tools/screenTools.d.ts.map +1 -1
- package/dist/tools/screenTools.js +90 -21
- package/dist/tools/screenTools.js.map +1 -1
- package/dist/tools/testTools.d.ts +3 -1
- package/dist/tools/testTools.d.ts.map +1 -1
- package/dist/tools/testTools.js +207 -2
- package/dist/tools/testTools.js.map +1 -1
- package/dist/tools/useCaseTools.js +2 -2
- package/dist/tools/useCaseTools.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* MCP Tools: Product Document Management
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* within a product via the AutoProject Agent API.
|
|
5
|
+
* Read + write tools for product content documents (PRD, BRD, ARCHITECTURE, etc.).
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Typical align-with-implementation workflow:
|
|
8
|
+
* 1. list_documents (optional search/name) → pick documentId
|
|
9
|
+
* 2. get_document or get_document_sections → read current content
|
|
10
|
+
* 3. update_document_section (section-wise) and/or update_document (fullText/metadata)
|
|
11
|
+
*
|
|
12
|
+
* Common documentTypeCode values: PRD, BRD, TRD, SRS, FSD, ARCHITECTURE,
|
|
13
|
+
* USER_GUIDE, RELEASE_NOTES, MEETING_NOTES, TEST_PLAN, etc.
|
|
10
14
|
*/
|
|
11
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
16
|
exports.documentToolDefinitions = void 0;
|
|
@@ -16,8 +20,9 @@ const DEFAULT_PRODUCT_ID = process.env.AUTOPROJECT_PRODUCT_ID ?? '';
|
|
|
16
20
|
exports.documentToolDefinitions = [
|
|
17
21
|
{
|
|
18
22
|
name: 'list_documents',
|
|
19
|
-
description: 'List
|
|
20
|
-
'
|
|
23
|
+
description: 'List documents for a product (names, types, status, summary). '
|
|
24
|
+
+ 'Filter by documentType code and/or search/name (matches document name, slug, or summary). '
|
|
25
|
+
+ 'Use this first to find the documentId before get_document or updates.',
|
|
21
26
|
inputSchema: {
|
|
22
27
|
type: 'object',
|
|
23
28
|
properties: {
|
|
@@ -26,6 +31,14 @@ exports.documentToolDefinitions = [
|
|
|
26
31
|
type: 'string',
|
|
27
32
|
description: 'Filter by document type code (e.g. PRD, BRD, TRD, ARCHITECTURE, RELEASE_NOTES, USER_GUIDE).',
|
|
28
33
|
},
|
|
34
|
+
search: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
description: 'Search by document name, slug, or summary (case-insensitive). Alias: name.',
|
|
37
|
+
},
|
|
38
|
+
name: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: 'Alias for search — find documents by name.',
|
|
41
|
+
},
|
|
29
42
|
limit: { type: 'number', description: 'Maximum number of results to return. Default: 50, max: 200.' },
|
|
30
43
|
},
|
|
31
44
|
required: [],
|
|
@@ -33,8 +46,8 @@ exports.documentToolDefinitions = [
|
|
|
33
46
|
},
|
|
34
47
|
{
|
|
35
48
|
name: 'get_document',
|
|
36
|
-
description: 'Get
|
|
37
|
-
'Use
|
|
49
|
+
description: 'Get a document fully: metadata, latest version fullText, and all sections. '
|
|
50
|
+
+ 'Use when aligning a PRD/architecture doc with the current implementation.',
|
|
38
51
|
inputSchema: {
|
|
39
52
|
type: 'object',
|
|
40
53
|
properties: {
|
|
@@ -46,7 +59,8 @@ exports.documentToolDefinitions = [
|
|
|
46
59
|
},
|
|
47
60
|
{
|
|
48
61
|
name: 'get_document_sections',
|
|
49
|
-
description: 'Get the structured sections of a document\'s current version
|
|
62
|
+
description: 'Get the structured sections of a document\'s current version (sectionId, sectionKey, sectionName, content). '
|
|
63
|
+
+ 'Prefer this for section-wise review before update_document_section.',
|
|
50
64
|
inputSchema: {
|
|
51
65
|
type: 'object',
|
|
52
66
|
properties: {
|
|
@@ -58,89 +72,133 @@ exports.documentToolDefinitions = [
|
|
|
58
72
|
},
|
|
59
73
|
{
|
|
60
74
|
name: 'search_documents',
|
|
61
|
-
description: 'Full-text search across
|
|
62
|
-
'
|
|
75
|
+
description: 'Full-text search across document sections (and document names) in a product. '
|
|
76
|
+
+ 'Returns matching sections with documentId, document name, and type.',
|
|
63
77
|
inputSchema: {
|
|
64
78
|
type: 'object',
|
|
65
79
|
properties: {
|
|
66
80
|
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
67
|
-
query: { type: 'string', description: 'Search term to find in
|
|
81
|
+
query: { type: 'string', description: 'Search term to find in section content, section titles, or document names.' },
|
|
68
82
|
},
|
|
69
83
|
required: ['query'],
|
|
70
84
|
},
|
|
71
85
|
},
|
|
86
|
+
{
|
|
87
|
+
name: 'update_document',
|
|
88
|
+
description: 'Update a document\'s metadata and/or full text. '
|
|
89
|
+
+ 'Metadata (name, summary, tags, status, visibility) patches in place. '
|
|
90
|
+
+ 'fullText/content patches the current DRAFT version, or creates a new DRAFT version if the current one is published. '
|
|
91
|
+
+ 'Requires write:documents scope. Prefer update_document_section for section-level edits.',
|
|
92
|
+
inputSchema: {
|
|
93
|
+
type: 'object',
|
|
94
|
+
properties: {
|
|
95
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
96
|
+
documentId: { type: 'string', description: 'Document UUID.' },
|
|
97
|
+
name: { type: 'string', description: 'New document name.' },
|
|
98
|
+
summary: { type: 'string', description: 'New document summary.' },
|
|
99
|
+
tags: { type: 'array', items: { type: 'string' }, description: 'Replacement tag list.' },
|
|
100
|
+
status: { type: 'string', description: 'Document status (e.g. DRAFT, PUBLISHED).' },
|
|
101
|
+
visibility: { type: 'string', description: 'Visibility (e.g. INTERNAL, PUBLIC).' },
|
|
102
|
+
fullText: { type: 'string', description: 'Full document markdown/text content.' },
|
|
103
|
+
content: { type: 'string', description: 'Alias for fullText.' },
|
|
104
|
+
changeSummary: { type: 'string', description: 'Optional note when creating/patching a version.' },
|
|
105
|
+
},
|
|
106
|
+
required: ['documentId'],
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'update_document_section',
|
|
111
|
+
description: 'Update one section of a document\'s current version (section-wise edit). '
|
|
112
|
+
+ 'Identify the section by sectionId (from get_document_sections) and/or sectionKey. '
|
|
113
|
+
+ 'If sectionKey is new, the section is created. Use to realign a section with the current implementation. '
|
|
114
|
+
+ 'Requires write:documents scope.',
|
|
115
|
+
inputSchema: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
properties: {
|
|
118
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
119
|
+
documentId: { type: 'string', description: 'Document UUID.' },
|
|
120
|
+
sectionId: { type: 'string', description: 'Existing section UUID (preferred when updating).' },
|
|
121
|
+
sectionKey: { type: 'string', description: 'Stable section key (used to update or create).' },
|
|
122
|
+
sectionName: { type: 'string', description: 'Section title/heading.' },
|
|
123
|
+
content: { type: 'string', description: 'Section body content (markdown).' },
|
|
124
|
+
summary: { type: 'string', description: 'Optional short section summary.' },
|
|
125
|
+
sectionType: { type: 'string', description: 'Section type (e.g. PARAGRAPH, HEADING).' },
|
|
126
|
+
displayOrder: { type: 'number', description: 'Order among sections.' },
|
|
127
|
+
headingLevel: { type: 'number', description: 'Heading level (1–6) if applicable.' },
|
|
128
|
+
contentFormat: { type: 'string', description: 'Content format (default MARKDOWN).' },
|
|
129
|
+
},
|
|
130
|
+
required: ['documentId'],
|
|
131
|
+
},
|
|
132
|
+
},
|
|
72
133
|
];
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
if (!
|
|
76
|
-
|
|
134
|
+
function resolveProductId(args) {
|
|
135
|
+
const id = args.productId || DEFAULT_PRODUCT_ID;
|
|
136
|
+
if (!id) {
|
|
137
|
+
throw new Error('productId is required (pass it or set AUTOPROJECT_PRODUCT_ID).');
|
|
77
138
|
}
|
|
139
|
+
return id;
|
|
140
|
+
}
|
|
141
|
+
async function handleDocumentTool(toolName, args) {
|
|
142
|
+
const productId = resolveProductId(args);
|
|
78
143
|
const documentId = args.documentId;
|
|
79
144
|
switch (toolName) {
|
|
80
145
|
case 'list_documents': {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const data = await (0, client_js_1.apiGet)(`/products/${productId}/documents`, params);
|
|
87
|
-
const items = data?.items ?? [];
|
|
88
|
-
if (items.length === 0) {
|
|
89
|
-
return { content: [{ type: 'text', text: 'No documents found.' }] };
|
|
90
|
-
}
|
|
91
|
-
const lines = items.map((d) => `[${d.id}] [${d.documentTypeCode ?? 'N/A'}] ${d.name} | Status: ${d.status} | Visibility: ${d.visibility} | Updated: ${d.updatedAt}\n` +
|
|
92
|
-
(d.summary ? ` Summary: ${String(d.summary).slice(0, 120)}` : ''));
|
|
93
|
-
return { content: [{ type: 'text', text: `Documents (${items.length}):\n${lines.join('\n')}` }] };
|
|
146
|
+
return await (0, client_js_1.apiGet)(`/products/${productId}/documents`, {
|
|
147
|
+
documentType: args.documentType,
|
|
148
|
+
search: args.search ?? args.name,
|
|
149
|
+
limit: args.limit,
|
|
150
|
+
});
|
|
94
151
|
}
|
|
95
152
|
case 'get_document': {
|
|
96
153
|
if (!documentId)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const d = data;
|
|
100
|
-
const header = `Document: ${d.name}\n` +
|
|
101
|
-
`ID: ${d.id} | Type: ${d.documentTypeCode ?? 'N/A'} (${d.documentTypeName ?? 'N/A'})\n` +
|
|
102
|
-
`Status: ${d.status} | Visibility: ${d.visibility} | Version: ${d.versionNumber ?? 'N/A'}\n` +
|
|
103
|
-
`Summary: ${d.summary ?? 'N/A'}\n` +
|
|
104
|
-
`Tags: ${Array.isArray(d.tags) && d.tags.length ? d.tags.join(', ') : 'none'}\n`;
|
|
105
|
-
const sections = d.sections ?? [];
|
|
106
|
-
let body;
|
|
107
|
-
if (d.fullText) {
|
|
108
|
-
body = `\n--- Full Text ---\n${d.fullText}`;
|
|
109
|
-
}
|
|
110
|
-
else if (sections.length > 0) {
|
|
111
|
-
const sectionLines = sections.map((s) => `${'#'.repeat(s.headingLevel || 2)} ${s.sectionName}\n${s.content ?? '(no content)'}`);
|
|
112
|
-
body = `\n--- Sections (${sections.length}) ---\n${sectionLines.join('\n\n')}`;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
body = '\n(No content available for this document)';
|
|
116
|
-
}
|
|
117
|
-
return { content: [{ type: 'text', text: header + body }] };
|
|
154
|
+
throw new Error('documentId is required.');
|
|
155
|
+
return await (0, client_js_1.apiGet)(`/products/${productId}/documents/${documentId}`);
|
|
118
156
|
}
|
|
119
157
|
case 'get_document_sections': {
|
|
120
158
|
if (!documentId)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const sections = data?.items ?? [];
|
|
124
|
-
if (sections.length === 0) {
|
|
125
|
-
return { content: [{ type: 'text', text: 'No sections found for this document.' }] };
|
|
126
|
-
}
|
|
127
|
-
const lines = sections.map((s) => `[${s.displayOrder}] ${'#'.repeat(s.headingLevel || 2)} ${s.sectionName} (${s.sectionType}) | key: ${s.sectionKey}`);
|
|
128
|
-
return { content: [{ type: 'text', text: `Sections (${sections.length}):\n${lines.join('\n')}` }] };
|
|
159
|
+
throw new Error('documentId is required.');
|
|
160
|
+
return await (0, client_js_1.apiGet)(`/products/${productId}/documents/${documentId}/sections`);
|
|
129
161
|
}
|
|
130
162
|
case 'search_documents': {
|
|
131
163
|
const q = args.query || '';
|
|
132
164
|
if (!q.trim())
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
165
|
+
throw new Error('query is required.');
|
|
166
|
+
return await (0, client_js_1.apiGet)(`/products/${productId}/knowledge`, { q });
|
|
167
|
+
}
|
|
168
|
+
case 'update_document': {
|
|
169
|
+
if (!documentId)
|
|
170
|
+
throw new Error('documentId is required.');
|
|
171
|
+
return await (0, client_js_1.apiPatch)(`/products/${productId}/documents/${documentId}`, {
|
|
172
|
+
name: args.name,
|
|
173
|
+
summary: args.summary,
|
|
174
|
+
tags: args.tags,
|
|
175
|
+
status: args.status,
|
|
176
|
+
visibility: args.visibility,
|
|
177
|
+
fullText: args.fullText,
|
|
178
|
+
content: args.content,
|
|
179
|
+
changeSummary: args.changeSummary,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
case 'update_document_section': {
|
|
183
|
+
if (!documentId)
|
|
184
|
+
throw new Error('documentId is required.');
|
|
185
|
+
if (!args.sectionId && !args.sectionKey) {
|
|
186
|
+
throw new Error('Provide sectionId and/or sectionKey.');
|
|
138
187
|
}
|
|
139
|
-
|
|
140
|
-
|
|
188
|
+
return await (0, client_js_1.apiPatch)(`/products/${productId}/documents/${documentId}/sections`, {
|
|
189
|
+
sectionId: args.sectionId,
|
|
190
|
+
sectionKey: args.sectionKey,
|
|
191
|
+
sectionName: args.sectionName,
|
|
192
|
+
content: args.content,
|
|
193
|
+
summary: args.summary,
|
|
194
|
+
sectionType: args.sectionType,
|
|
195
|
+
displayOrder: args.displayOrder,
|
|
196
|
+
headingLevel: args.headingLevel,
|
|
197
|
+
contentFormat: args.contentFormat,
|
|
198
|
+
});
|
|
141
199
|
}
|
|
142
200
|
default:
|
|
143
|
-
|
|
201
|
+
throw new Error(`Unknown document tool: ${toolName}`);
|
|
144
202
|
}
|
|
145
203
|
}
|
|
146
204
|
//# sourceMappingURL=documentTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentTools.js","sourceRoot":"","sources":["../../src/tools/documentTools.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"documentTools.js","sourceRoot":"","sources":["../../src/tools/documentTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP Tools: Hierarchy read and status update
|
|
3
|
-
* Tools:
|
|
3
|
+
* Tools: get_hierarchy, list_modules, list_feature_groups, list_features,
|
|
4
|
+
* get_feature_detail, get_task_detail, update_status
|
|
5
|
+
*
|
|
6
|
+
* Product hierarchy (UI terminology):
|
|
7
|
+
* Module → Feature Group → Feature
|
|
4
8
|
*/
|
|
5
9
|
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
10
|
export declare const hierarchyToolDefinitions: Tool[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchyTools.d.ts","sourceRoot":"","sources":["../../src/tools/hierarchyTools.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hierarchyTools.d.ts","sourceRoot":"","sources":["../../src/tools/hierarchyTools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,eAAO,MAAM,wBAAwB,EAAE,IAAI,EAwG1C,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,oBA0CpF"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* MCP Tools: Hierarchy read and status update
|
|
4
|
-
* Tools:
|
|
4
|
+
* Tools: get_hierarchy, list_modules, list_feature_groups, list_features,
|
|
5
|
+
* get_feature_detail, get_task_detail, update_status
|
|
6
|
+
*
|
|
7
|
+
* Product hierarchy (UI terminology):
|
|
8
|
+
* Module → Feature Group → Feature
|
|
5
9
|
*/
|
|
6
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
11
|
exports.hierarchyToolDefinitions = void 0;
|
|
@@ -9,43 +13,86 @@ exports.handleHierarchyTool = handleHierarchyTool;
|
|
|
9
13
|
const client_js_1 = require("../client.js");
|
|
10
14
|
exports.hierarchyToolDefinitions = [
|
|
11
15
|
{
|
|
12
|
-
name: '
|
|
13
|
-
description: 'Get
|
|
16
|
+
name: 'get_hierarchy',
|
|
17
|
+
description: 'Get the product hierarchy tree: modules with nested feature groups. ' +
|
|
18
|
+
'Use this first to discover module IDs, then list_features with moduleId/status to pull work.',
|
|
14
19
|
inputSchema: {
|
|
15
20
|
type: 'object',
|
|
16
21
|
properties: {
|
|
17
22
|
productId: { type: 'string', description: 'Product ID' },
|
|
18
|
-
featureId: { type: 'string', description: 'Feature ID' },
|
|
19
23
|
},
|
|
20
|
-
required: ['productId'
|
|
24
|
+
required: ['productId'],
|
|
21
25
|
},
|
|
22
26
|
},
|
|
23
27
|
{
|
|
24
|
-
name: '
|
|
25
|
-
description: '
|
|
28
|
+
name: 'list_modules',
|
|
29
|
+
description: 'List modules (top level of the product hierarchy) with status and description. ' +
|
|
30
|
+
'Optionally filter by module status.',
|
|
26
31
|
inputSchema: {
|
|
27
32
|
type: 'object',
|
|
28
33
|
properties: {
|
|
29
34
|
productId: { type: 'string', description: 'Product ID' },
|
|
30
|
-
|
|
35
|
+
status: { type: 'string', description: 'Filter by module status (e.g. IN_PROGRESS, COMPLETED)' },
|
|
36
|
+
limit: { type: 'number', description: 'Max results (default 50, max 200)' },
|
|
31
37
|
},
|
|
32
|
-
required: ['productId'
|
|
38
|
+
required: ['productId'],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'list_feature_groups',
|
|
43
|
+
description: 'List feature groups (second hierarchy level). Filter by moduleId and/or status.',
|
|
44
|
+
inputSchema: {
|
|
45
|
+
type: 'object',
|
|
46
|
+
properties: {
|
|
47
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
48
|
+
moduleId: { type: 'string', description: 'Filter by parent module ID' },
|
|
49
|
+
status: { type: 'string', description: 'Filter by feature-group status' },
|
|
50
|
+
limit: { type: 'number', description: 'Max results (default 50, max 200)' },
|
|
51
|
+
},
|
|
52
|
+
required: ['productId'],
|
|
33
53
|
},
|
|
34
54
|
},
|
|
35
55
|
{
|
|
36
56
|
name: 'list_features',
|
|
37
|
-
description: 'List features (
|
|
57
|
+
description: 'List features (third hierarchy level) within a product. ' +
|
|
58
|
+
'Filter by status, priority, moduleId, and/or featureGroupId to pull incomplete work for a module.',
|
|
38
59
|
inputSchema: {
|
|
39
60
|
type: 'object',
|
|
40
61
|
properties: {
|
|
41
62
|
productId: { type: 'string', description: 'Product ID' },
|
|
42
|
-
status: { type: 'string', description: 'Filter by status (e.g. IN_PROGRESS)' },
|
|
63
|
+
status: { type: 'string', description: 'Filter by feature status (e.g. IN_PROGRESS, TODO)' },
|
|
43
64
|
priority: { type: 'string', description: 'Filter by priority (e.g. HIGH)' },
|
|
44
|
-
|
|
65
|
+
moduleId: { type: 'string', description: 'Filter by parent module ID' },
|
|
66
|
+
featureGroupId: { type: 'string', description: 'Filter by parent feature-group ID' },
|
|
67
|
+
limit: { type: 'number', description: 'Max results (default 50, max 200)' },
|
|
45
68
|
},
|
|
46
69
|
required: ['productId'],
|
|
47
70
|
},
|
|
48
71
|
},
|
|
72
|
+
{
|
|
73
|
+
name: 'get_feature_detail',
|
|
74
|
+
description: 'Get full details of a feature by ID, including acceptance criteria.',
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
79
|
+
featureId: { type: 'string', description: 'Feature ID' },
|
|
80
|
+
},
|
|
81
|
+
required: ['productId', 'featureId'],
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'get_task_detail',
|
|
86
|
+
description: 'Get details of a task, including description and current status.',
|
|
87
|
+
inputSchema: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {
|
|
90
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
91
|
+
taskId: { type: 'string', description: 'Task ID' },
|
|
92
|
+
},
|
|
93
|
+
required: ['productId', 'taskId'],
|
|
94
|
+
},
|
|
95
|
+
},
|
|
49
96
|
{
|
|
50
97
|
name: 'update_status',
|
|
51
98
|
description: 'Update the status of a feature, task, or micro-task. Status must follow valid workflow transitions.',
|
|
@@ -53,7 +100,11 @@ exports.hierarchyToolDefinitions = [
|
|
|
53
100
|
type: 'object',
|
|
54
101
|
properties: {
|
|
55
102
|
productId: { type: 'string', description: 'Product ID' },
|
|
56
|
-
entityType: {
|
|
103
|
+
entityType: {
|
|
104
|
+
type: 'string',
|
|
105
|
+
enum: ['feature', 'task', 'micro-task', 'feature-group'],
|
|
106
|
+
description: 'Type of entity',
|
|
107
|
+
},
|
|
57
108
|
entityId: { type: 'string', description: 'Entity ID' },
|
|
58
109
|
status: { type: 'string', description: 'New status value' },
|
|
59
110
|
},
|
|
@@ -63,6 +114,22 @@ exports.hierarchyToolDefinitions = [
|
|
|
63
114
|
];
|
|
64
115
|
async function handleHierarchyTool(name, args) {
|
|
65
116
|
switch (name) {
|
|
117
|
+
case 'get_hierarchy': {
|
|
118
|
+
return await (0, client_js_1.apiGet)(`/products/${args.productId}/hierarchy`);
|
|
119
|
+
}
|
|
120
|
+
case 'list_modules': {
|
|
121
|
+
return await (0, client_js_1.apiGet)(`/products/${args.productId}/modules`, {
|
|
122
|
+
status: args.status,
|
|
123
|
+
limit: args.limit,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
case 'list_feature_groups': {
|
|
127
|
+
return await (0, client_js_1.apiGet)(`/products/${args.productId}/feature-groups`, {
|
|
128
|
+
moduleId: args.moduleId,
|
|
129
|
+
status: args.status,
|
|
130
|
+
limit: args.limit,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
66
133
|
case 'get_feature_detail': {
|
|
67
134
|
return await (0, client_js_1.apiGet)(`/products/${args.productId}/entities/feature/${args.featureId}`);
|
|
68
135
|
}
|
|
@@ -73,6 +140,8 @@ async function handleHierarchyTool(name, args) {
|
|
|
73
140
|
return await (0, client_js_1.apiGet)(`/products/${args.productId}/features`, {
|
|
74
141
|
status: args.status,
|
|
75
142
|
priority: args.priority,
|
|
143
|
+
moduleId: args.moduleId,
|
|
144
|
+
featureGroupId: args.featureGroupId,
|
|
76
145
|
limit: args.limit,
|
|
77
146
|
});
|
|
78
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchyTools.js","sourceRoot":"","sources":["../../src/tools/hierarchyTools.ts"],"names":[],"mappings":";AAAA;;;
|
|
1
|
+
{"version":3,"file":"hierarchyTools.js","sourceRoot":"","sources":["../../src/tools/hierarchyTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP Tools: Release cycle linking for feature groups and
|
|
2
|
+
* MCP Tools: Release cycle listing and linking for feature groups and features.
|
|
3
3
|
*
|
|
4
4
|
* Workflow for IDE agents:
|
|
5
|
-
* 1. Call list_release_cycles
|
|
5
|
+
* 1. Call list_release_cycles to discover available cycles and their IDs.
|
|
6
6
|
* 2. Call get_feature_group_release_cycle / get_feature_release_cycle to check if already linked.
|
|
7
7
|
* 3. If missing or wrong, call set_feature_group_release_cycle / set_feature_release_cycle.
|
|
8
8
|
*
|
|
9
9
|
* Terminology (aligned with AGENTS.md):
|
|
10
|
-
* "feature group" = DB FeatureGroup / API "
|
|
11
|
-
* "feature" = DB
|
|
10
|
+
* "feature group" = DB FeatureGroup / API "feature-groups" (Feature Group in UI)
|
|
11
|
+
* "feature" = DB Feature / API "features" (Feature in UI)
|
|
12
12
|
*
|
|
13
13
|
* Cascade note: setting a release cycle on a feature group automatically cascades
|
|
14
14
|
* to child features that previously inherited the old parent cycle.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releaseCycleLinkTools.d.ts","sourceRoot":"","sources":["../../src/tools/releaseCycleLinkTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK1D,eAAO,MAAM,+BAA+B,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"releaseCycleLinkTools.d.ts","sourceRoot":"","sources":["../../src/tools/releaseCycleLinkTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK1D,eAAO,MAAM,+BAA+B,EAAE,IAAI,EA8EjD,CAAC;AAEF,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GAmH/F"}
|