autoproject-mcp 1.0.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 +135 -0
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +62 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +188 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +14 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +128 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +21 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +81 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/tools/applicationTools.d.ts +24 -0
- package/dist/tools/applicationTools.d.ts.map +1 -0
- package/dist/tools/applicationTools.js +160 -0
- package/dist/tools/applicationTools.js.map +1 -0
- package/dist/tools/copilotTools.d.ts +8 -0
- package/dist/tools/copilotTools.d.ts.map +1 -0
- package/dist/tools/copilotTools.js +55 -0
- package/dist/tools/copilotTools.js.map +1 -0
- package/dist/tools/defectTools.d.ts +8 -0
- package/dist/tools/defectTools.d.ts.map +1 -0
- package/dist/tools/defectTools.js +144 -0
- package/dist/tools/defectTools.js.map +1 -0
- package/dist/tools/documentTools.d.ts +18 -0
- package/dist/tools/documentTools.d.ts.map +1 -0
- package/dist/tools/documentTools.js +146 -0
- package/dist/tools/documentTools.js.map +1 -0
- package/dist/tools/evidenceTools.d.ts +8 -0
- package/dist/tools/evidenceTools.d.ts.map +1 -0
- package/dist/tools/evidenceTools.js +63 -0
- package/dist/tools/evidenceTools.js.map +1 -0
- package/dist/tools/hierarchyTools.d.ts +8 -0
- package/dist/tools/hierarchyTools.d.ts.map +1 -0
- package/dist/tools/hierarchyTools.js +86 -0
- package/dist/tools/hierarchyTools.js.map +1 -0
- package/dist/tools/importTools.d.ts +22 -0
- package/dist/tools/importTools.d.ts.map +1 -0
- package/dist/tools/importTools.js +145 -0
- package/dist/tools/importTools.js.map +1 -0
- package/dist/tools/launchPlanTools.d.ts +19 -0
- package/dist/tools/launchPlanTools.d.ts.map +1 -0
- package/dist/tools/launchPlanTools.js +319 -0
- package/dist/tools/launchPlanTools.js.map +1 -0
- package/dist/tools/productTools.d.ts +8 -0
- package/dist/tools/productTools.d.ts.map +1 -0
- package/dist/tools/productTools.js +80 -0
- package/dist/tools/productTools.js.map +1 -0
- package/dist/tools/releaseCycleLinkTools.d.ts +24 -0
- package/dist/tools/releaseCycleLinkTools.d.ts.map +1 -0
- package/dist/tools/releaseCycleLinkTools.js +174 -0
- package/dist/tools/releaseCycleLinkTools.js.map +1 -0
- package/dist/tools/screenTools.d.ts +12 -0
- package/dist/tools/screenTools.d.ts.map +1 -0
- package/dist/tools/screenTools.js +125 -0
- package/dist/tools/screenTools.js.map +1 -0
- package/dist/tools/testTools.d.ts +8 -0
- package/dist/tools/testTools.d.ts.map +1 -0
- package/dist/tools/testTools.js +91 -0
- package/dist/tools/testTools.js.map +1 -0
- package/dist/tools/ticketTools.d.ts +18 -0
- package/dist/tools/ticketTools.d.ts.map +1 -0
- package/dist/tools/ticketTools.js +138 -0
- package/dist/tools/ticketTools.js.map +1 -0
- package/dist/tools/todoTools.d.ts +8 -0
- package/dist/tools/todoTools.d.ts.map +1 -0
- package/dist/tools/todoTools.js +104 -0
- package/dist/tools/todoTools.js.map +1 -0
- package/dist/tools/useCaseTools.d.ts +8 -0
- package/dist/tools/useCaseTools.d.ts.map +1 -0
- package/dist/tools/useCaseTools.js +238 -0
- package/dist/tools/useCaseTools.js.map +1 -0
- package/dist/tools/workTools.d.ts +8 -0
- package/dist/tools/workTools.d.ts.map +1 -0
- package/dist/tools/workTools.js +99 -0
- package/dist/tools/workTools.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Tools: Product Document Management
|
|
4
|
+
*
|
|
5
|
+
* Provides 4 read-only tools for browsing and searching all document types
|
|
6
|
+
* within a product via the AutoProject Agent API.
|
|
7
|
+
*
|
|
8
|
+
* Common documentTypeCode values (system-defined): PRD, BRD, TRD, SRS, FSD,
|
|
9
|
+
* ARCHITECTURE, USER_GUIDE, RELEASE_NOTES, MEETING_NOTES, TEST_PLAN, etc.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.documentToolDefinitions = void 0;
|
|
13
|
+
exports.handleDocumentTool = handleDocumentTool;
|
|
14
|
+
const client_js_1 = require("../client.js");
|
|
15
|
+
const DEFAULT_PRODUCT_ID = process.env.AUTOPROJECT_PRODUCT_ID ?? '';
|
|
16
|
+
exports.documentToolDefinitions = [
|
|
17
|
+
{
|
|
18
|
+
name: 'list_documents',
|
|
19
|
+
description: 'List all documents for a product. Optionally filter by document type code (e.g. PRD, BRD, TRD, ARCHITECTURE, RELEASE_NOTES). ' +
|
|
20
|
+
'Returns document id, name, type, status, visibility, summary, and last-updated date.',
|
|
21
|
+
inputSchema: {
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
25
|
+
documentType: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'Filter by document type code (e.g. PRD, BRD, TRD, ARCHITECTURE, RELEASE_NOTES, USER_GUIDE).',
|
|
28
|
+
},
|
|
29
|
+
limit: { type: 'number', description: 'Maximum number of results to return. Default: 50, max: 200.' },
|
|
30
|
+
},
|
|
31
|
+
required: [],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'get_document',
|
|
36
|
+
description: 'Get the full content of a document including its latest version text and all sections. ' +
|
|
37
|
+
'Use this to read the actual content of a PRD, architecture doc, release notes, etc.',
|
|
38
|
+
inputSchema: {
|
|
39
|
+
type: 'object',
|
|
40
|
+
properties: {
|
|
41
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
42
|
+
documentId: { type: 'string', description: 'Document UUID.' },
|
|
43
|
+
},
|
|
44
|
+
required: ['documentId'],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'get_document_sections',
|
|
49
|
+
description: 'Get the structured sections of a document\'s current version. Useful for navigating large documents.',
|
|
50
|
+
inputSchema: {
|
|
51
|
+
type: 'object',
|
|
52
|
+
properties: {
|
|
53
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
54
|
+
documentId: { type: 'string', description: 'Document UUID.' },
|
|
55
|
+
},
|
|
56
|
+
required: ['documentId'],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'search_documents',
|
|
61
|
+
description: 'Full-text search across all document sections in a product. Returns matching sections with document name and type. ' +
|
|
62
|
+
'Useful for finding specific requirements, specs, or notes by keyword.',
|
|
63
|
+
inputSchema: {
|
|
64
|
+
type: 'object',
|
|
65
|
+
properties: {
|
|
66
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
67
|
+
query: { type: 'string', description: 'Search term to find in document section content or titles.' },
|
|
68
|
+
},
|
|
69
|
+
required: ['query'],
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
async function handleDocumentTool(toolName, args) {
|
|
74
|
+
const productId = args.productId || DEFAULT_PRODUCT_ID;
|
|
75
|
+
if (!productId) {
|
|
76
|
+
return { content: [{ type: 'text', text: 'Error: productId is required (or set AUTOPROJECT_PRODUCT_ID env).' }] };
|
|
77
|
+
}
|
|
78
|
+
const documentId = args.documentId;
|
|
79
|
+
switch (toolName) {
|
|
80
|
+
case 'list_documents': {
|
|
81
|
+
const params = {};
|
|
82
|
+
if (args.documentType)
|
|
83
|
+
params.documentType = args.documentType;
|
|
84
|
+
if (args.limit)
|
|
85
|
+
params.limit = args.limit;
|
|
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')}` }] };
|
|
94
|
+
}
|
|
95
|
+
case 'get_document': {
|
|
96
|
+
if (!documentId)
|
|
97
|
+
return { content: [{ type: 'text', text: 'Error: documentId is required.' }] };
|
|
98
|
+
const data = await (0, client_js_1.apiGet)(`/products/${productId}/documents/${documentId}`);
|
|
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 }] };
|
|
118
|
+
}
|
|
119
|
+
case 'get_document_sections': {
|
|
120
|
+
if (!documentId)
|
|
121
|
+
return { content: [{ type: 'text', text: 'Error: documentId is required.' }] };
|
|
122
|
+
const data = await (0, client_js_1.apiGet)(`/products/${productId}/documents/${documentId}/sections`);
|
|
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')}` }] };
|
|
129
|
+
}
|
|
130
|
+
case 'search_documents': {
|
|
131
|
+
const q = args.query || '';
|
|
132
|
+
if (!q.trim())
|
|
133
|
+
return { content: [{ type: 'text', text: 'Error: query is required.' }] };
|
|
134
|
+
const data = await (0, client_js_1.apiGet)(`/products/${productId}/knowledge`, { q });
|
|
135
|
+
const results = data?.results ?? [];
|
|
136
|
+
if (results.length === 0) {
|
|
137
|
+
return { content: [{ type: 'text', text: `No results found for "${q}".` }] };
|
|
138
|
+
}
|
|
139
|
+
const lines = results.map((r) => `[${r.documentTypeCode ?? 'N/A'}] ${r.documentName} › ${r.sectionName}\n ${String(r.content ?? '').slice(0, 200)}`);
|
|
140
|
+
return { content: [{ type: 'text', text: `Search results for "${q}" (${results.length}):\n\n${lines.join('\n\n')}` }] };
|
|
141
|
+
}
|
|
142
|
+
default:
|
|
143
|
+
return { content: [{ type: 'text', text: `Unknown document tool: ${toolName}` }] };
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=documentTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentTools.js","sourceRoot":"","sources":["../../src/tools/documentTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools: Evidence linking, comments, notes
|
|
3
|
+
* Tools: link_evidence, add_comment
|
|
4
|
+
*/
|
|
5
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
export declare const evidenceToolDefinitions: Tool[];
|
|
7
|
+
export declare function handleEvidenceTool(name: string, args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
//# sourceMappingURL=evidenceTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidenceTools.d.ts","sourceRoot":"","sources":["../../src/tools/evidenceTools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,eAAO,MAAM,uBAAuB,EAAE,IAAI,EAiCzC,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,oBAqBnF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Tools: Evidence linking, comments, notes
|
|
4
|
+
* Tools: link_evidence, add_comment
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.evidenceToolDefinitions = void 0;
|
|
8
|
+
exports.handleEvidenceTool = handleEvidenceTool;
|
|
9
|
+
const client_js_1 = require("../client.js");
|
|
10
|
+
exports.evidenceToolDefinitions = [
|
|
11
|
+
{
|
|
12
|
+
name: 'link_evidence',
|
|
13
|
+
description: 'Link implementation evidence (PR, commit, branch, scan, test run) to a product entity.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
18
|
+
entityType: { type: 'string', description: 'Entity type (feature, task, defect, etc.)' },
|
|
19
|
+
entityId: { type: 'string', description: 'Entity ID' },
|
|
20
|
+
type: { type: 'string', enum: ['PR', 'COMMIT', 'BRANCH', 'SCAN', 'TEST_RUN'], description: 'Evidence type' },
|
|
21
|
+
url: { type: 'string', description: 'URL of the evidence (e.g. GitHub PR URL)' },
|
|
22
|
+
ref: { type: 'string', description: 'Git ref (branch name, commit SHA, etc.)' },
|
|
23
|
+
note: { type: 'string', description: 'Optional note about the evidence' },
|
|
24
|
+
},
|
|
25
|
+
required: ['productId', 'entityType', 'entityId', 'type'],
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'add_comment',
|
|
30
|
+
description: 'Add an agent comment to a feature, task, or micro-task. Comments are tagged as agent-authored.',
|
|
31
|
+
inputSchema: {
|
|
32
|
+
type: 'object',
|
|
33
|
+
properties: {
|
|
34
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
35
|
+
entityType: { type: 'string', description: 'Entity type (feature, task, micro-task)' },
|
|
36
|
+
entityId: { type: 'string', description: 'Entity ID' },
|
|
37
|
+
text: { type: 'string', description: 'Comment text (supports markdown)' },
|
|
38
|
+
prUrl: { type: 'string', description: 'Optional PR URL to append' },
|
|
39
|
+
},
|
|
40
|
+
required: ['productId', 'entityType', 'entityId', 'text'],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
async function handleEvidenceTool(name, args) {
|
|
45
|
+
switch (name) {
|
|
46
|
+
case 'link_evidence': {
|
|
47
|
+
return await (0, client_js_1.apiPost)(`/products/${args.productId}/evidence`, {
|
|
48
|
+
entityType: args.entityType,
|
|
49
|
+
entityId: args.entityId,
|
|
50
|
+
type: args.type,
|
|
51
|
+
url: args.url,
|
|
52
|
+
ref: args.ref,
|
|
53
|
+
note: args.note,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
case 'add_comment': {
|
|
57
|
+
return await (0, client_js_1.apiPost)(`/products/${args.productId}/entities/${args.entityType}/${args.entityId}/comments`, { text: args.text, prUrl: args.prUrl });
|
|
58
|
+
}
|
|
59
|
+
default:
|
|
60
|
+
throw new Error(`Unknown evidence tool: ${name}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=evidenceTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidenceTools.js","sourceRoot":"","sources":["../../src/tools/evidenceTools.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAwCH,gDAqBC;AA1DD,4CAA+C;AAElC,QAAA,uBAAuB,GAAW;IAC7C;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,wFAAwF;QACrG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACxD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;gBACxF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE;gBACtD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE;gBAC5G,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;gBAChF,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBAC/E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;aAC1E;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC;SAC1D;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,gGAAgG;QAC7G,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACxD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBACtF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE;gBACtD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;gBACzE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;aACpE;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC;SAC1D;KACF;CACF,CAAC;AAEK,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,IAA6B;IAClF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,OAAO,MAAM,IAAA,mBAAO,EAAC,aAAa,IAAI,CAAC,SAAS,WAAW,EAAE;gBAC3D,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,OAAO,MAAM,IAAA,mBAAO,EAClB,aAAa,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,WAAW,EACnF,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CACvC,CAAC;QACJ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools: Hierarchy read and status update
|
|
3
|
+
* Tools: get_feature_detail, get_task_detail, list_features, update_status
|
|
4
|
+
*/
|
|
5
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
export declare const hierarchyToolDefinitions: Tool[];
|
|
7
|
+
export declare function handleHierarchyTool(name: string, args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
//# sourceMappingURL=hierarchyTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hierarchyTools.d.ts","sourceRoot":"","sources":["../../src/tools/hierarchyTools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,eAAO,MAAM,wBAAwB,EAAE,IAAI,EAqD1C,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,oBAwBpF"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Tools: Hierarchy read and status update
|
|
4
|
+
* Tools: get_feature_detail, get_task_detail, list_features, update_status
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.hierarchyToolDefinitions = void 0;
|
|
8
|
+
exports.handleHierarchyTool = handleHierarchyTool;
|
|
9
|
+
const client_js_1 = require("../client.js");
|
|
10
|
+
exports.hierarchyToolDefinitions = [
|
|
11
|
+
{
|
|
12
|
+
name: 'get_feature_detail',
|
|
13
|
+
description: 'Get full details of a feature (SubFeature) by ID, including acceptance criteria.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
18
|
+
featureId: { type: 'string', description: 'Feature ID' },
|
|
19
|
+
},
|
|
20
|
+
required: ['productId', 'featureId'],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'get_task_detail',
|
|
25
|
+
description: 'Get details of a task, including description and current status.',
|
|
26
|
+
inputSchema: {
|
|
27
|
+
type: 'object',
|
|
28
|
+
properties: {
|
|
29
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
30
|
+
taskId: { type: 'string', description: 'Task ID' },
|
|
31
|
+
},
|
|
32
|
+
required: ['productId', 'taskId'],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'list_features',
|
|
37
|
+
description: 'List features (SubFeatures) within a product, with optional status/priority filter.',
|
|
38
|
+
inputSchema: {
|
|
39
|
+
type: 'object',
|
|
40
|
+
properties: {
|
|
41
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
42
|
+
status: { type: 'string', description: 'Filter by status (e.g. IN_PROGRESS)' },
|
|
43
|
+
priority: { type: 'string', description: 'Filter by priority (e.g. HIGH)' },
|
|
44
|
+
limit: { type: 'number', description: 'Max results' },
|
|
45
|
+
},
|
|
46
|
+
required: ['productId'],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'update_status',
|
|
51
|
+
description: 'Update the status of a feature, task, or micro-task. Status must follow valid workflow transitions.',
|
|
52
|
+
inputSchema: {
|
|
53
|
+
type: 'object',
|
|
54
|
+
properties: {
|
|
55
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
56
|
+
entityType: { type: 'string', enum: ['feature', 'task', 'micro-task', 'feature-group'], description: 'Type of entity' },
|
|
57
|
+
entityId: { type: 'string', description: 'Entity ID' },
|
|
58
|
+
status: { type: 'string', description: 'New status value' },
|
|
59
|
+
},
|
|
60
|
+
required: ['productId', 'entityType', 'entityId', 'status'],
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
async function handleHierarchyTool(name, args) {
|
|
65
|
+
switch (name) {
|
|
66
|
+
case 'get_feature_detail': {
|
|
67
|
+
return await (0, client_js_1.apiGet)(`/products/${args.productId}/entities/feature/${args.featureId}`);
|
|
68
|
+
}
|
|
69
|
+
case 'get_task_detail': {
|
|
70
|
+
return await (0, client_js_1.apiGet)(`/products/${args.productId}/entities/task/${args.taskId}`);
|
|
71
|
+
}
|
|
72
|
+
case 'list_features': {
|
|
73
|
+
return await (0, client_js_1.apiGet)(`/products/${args.productId}/features`, {
|
|
74
|
+
status: args.status,
|
|
75
|
+
priority: args.priority,
|
|
76
|
+
limit: args.limit,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
case 'update_status': {
|
|
80
|
+
return await (0, client_js_1.apiPatch)(`/products/${args.productId}/entities/${args.entityType}/${args.entityId}/status`, { status: args.status });
|
|
81
|
+
}
|
|
82
|
+
default:
|
|
83
|
+
throw new Error(`Unknown hierarchy tool: ${name}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=hierarchyTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hierarchyTools.js","sourceRoot":"","sources":["../../src/tools/hierarchyTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: import_hierarchy_csv
|
|
3
|
+
*
|
|
4
|
+
* Accepts a CSV string (or a local file path) and upserts the hierarchy
|
|
5
|
+
* (Module → Feature Group → Feature) into the configured AutoProject product.
|
|
6
|
+
*
|
|
7
|
+
* Supports two call patterns:
|
|
8
|
+
* 1. { csv: "..." } — raw CSV content
|
|
9
|
+
* 2. { filePath: "/path/to/file.csv" } — local file path (resolved by the MCP server process)
|
|
10
|
+
* 3. { filePath: "...", dryRun: true } — validate without writing
|
|
11
|
+
*
|
|
12
|
+
* Expected CSV columns (order doesn't matter, header row required):
|
|
13
|
+
* module_name, module_description,
|
|
14
|
+
* feature_group_name, feature_group_description,
|
|
15
|
+
* feature_name, feature_description,
|
|
16
|
+
* status, priority, value_proposition, notes,
|
|
17
|
+
* feature_type, qualification_status
|
|
18
|
+
*/
|
|
19
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
20
|
+
export declare const importToolDefinitions: Tool[];
|
|
21
|
+
export declare function handleImportTool(name: string, args: Record<string, unknown>): Promise<unknown>;
|
|
22
|
+
//# sourceMappingURL=importTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importTools.d.ts","sourceRoot":"","sources":["../../src/tools/importTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,eAAO,MAAM,qBAAqB,EAAE,IAAI,EA8BvC,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC,CAqElB"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Tool: import_hierarchy_csv
|
|
4
|
+
*
|
|
5
|
+
* Accepts a CSV string (or a local file path) and upserts the hierarchy
|
|
6
|
+
* (Module → Feature Group → Feature) into the configured AutoProject product.
|
|
7
|
+
*
|
|
8
|
+
* Supports two call patterns:
|
|
9
|
+
* 1. { csv: "..." } — raw CSV content
|
|
10
|
+
* 2. { filePath: "/path/to/file.csv" } — local file path (resolved by the MCP server process)
|
|
11
|
+
* 3. { filePath: "...", dryRun: true } — validate without writing
|
|
12
|
+
*
|
|
13
|
+
* Expected CSV columns (order doesn't matter, header row required):
|
|
14
|
+
* module_name, module_description,
|
|
15
|
+
* feature_group_name, feature_group_description,
|
|
16
|
+
* feature_name, feature_description,
|
|
17
|
+
* status, priority, value_proposition, notes,
|
|
18
|
+
* feature_type, qualification_status
|
|
19
|
+
*/
|
|
20
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(o, k2, desc);
|
|
27
|
+
}) : (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
o[k2] = m[k];
|
|
30
|
+
}));
|
|
31
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
32
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
33
|
+
}) : function(o, v) {
|
|
34
|
+
o["default"] = v;
|
|
35
|
+
});
|
|
36
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
37
|
+
var ownKeys = function(o) {
|
|
38
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
39
|
+
var ar = [];
|
|
40
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
41
|
+
return ar;
|
|
42
|
+
};
|
|
43
|
+
return ownKeys(o);
|
|
44
|
+
};
|
|
45
|
+
return function (mod) {
|
|
46
|
+
if (mod && mod.__esModule) return mod;
|
|
47
|
+
var result = {};
|
|
48
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
49
|
+
__setModuleDefault(result, mod);
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
})();
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.importToolDefinitions = void 0;
|
|
55
|
+
exports.handleImportTool = handleImportTool;
|
|
56
|
+
const fs = __importStar(require("fs"));
|
|
57
|
+
const path = __importStar(require("path"));
|
|
58
|
+
const client_js_1 = require("../client.js");
|
|
59
|
+
exports.importToolDefinitions = [
|
|
60
|
+
{
|
|
61
|
+
name: 'import_hierarchy_csv',
|
|
62
|
+
description: `Import or update the product hierarchy (Modules → Feature Groups → Features) from a CSV file or raw CSV text.
|
|
63
|
+
Rows are upserted: existing items are updated, new ones are created. Missing rows are skipped with a reason.
|
|
64
|
+
Provide either a filePath (local path on the machine running this MCP server) or inline csv text.
|
|
65
|
+
Use dryRun: true to validate the CSV and preview counts without making any changes.`,
|
|
66
|
+
inputSchema: {
|
|
67
|
+
type: 'object',
|
|
68
|
+
properties: {
|
|
69
|
+
productId: {
|
|
70
|
+
type: 'string',
|
|
71
|
+
description: 'Product ID to import into. Defaults to AUTOPROJECT_PRODUCT_ID env var.',
|
|
72
|
+
},
|
|
73
|
+
csv: {
|
|
74
|
+
type: 'string',
|
|
75
|
+
description: 'Raw CSV text content. Use this OR filePath.',
|
|
76
|
+
},
|
|
77
|
+
filePath: {
|
|
78
|
+
type: 'string',
|
|
79
|
+
description: 'Absolute or relative path to a CSV file on the local filesystem. Use this OR csv.',
|
|
80
|
+
},
|
|
81
|
+
dryRun: {
|
|
82
|
+
type: 'boolean',
|
|
83
|
+
description: 'If true, validates and counts rows without writing to the database. Defaults to false.',
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
// csv or filePath must be provided — enforced in handler
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
async function handleImportTool(name, args) {
|
|
91
|
+
if (name !== 'import_hierarchy_csv') {
|
|
92
|
+
throw new Error(`Unknown import tool: ${name}`);
|
|
93
|
+
}
|
|
94
|
+
const productId = args.productId
|
|
95
|
+
|| process.env.AUTOPROJECT_PRODUCT_ID;
|
|
96
|
+
if (!productId) {
|
|
97
|
+
return {
|
|
98
|
+
error: 'No productId provided and AUTOPROJECT_PRODUCT_ID is not set.',
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const dryRun = Boolean(args.dryRun ?? false);
|
|
102
|
+
// Resolve CSV text
|
|
103
|
+
let csvText;
|
|
104
|
+
if (args.filePath) {
|
|
105
|
+
const resolved = path.resolve(args.filePath);
|
|
106
|
+
if (!fs.existsSync(resolved)) {
|
|
107
|
+
return { error: `File not found: ${resolved}` };
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
csvText = fs.readFileSync(resolved, 'utf-8');
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
114
|
+
return { error: `Failed to read file: ${msg}` };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else if (args.csv) {
|
|
118
|
+
csvText = args.csv;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return { error: 'Provide either csv (inline text) or filePath.' };
|
|
122
|
+
}
|
|
123
|
+
const dryRunParam = dryRun ? '?dryRun=true' : '';
|
|
124
|
+
const result = await (0, client_js_1.apiPost)(`/products/${productId}/hierarchy/import${dryRunParam}`, { csv: csvText });
|
|
125
|
+
const productName = process.env.AUTOPROJECT_PRODUCT_NAME || productId;
|
|
126
|
+
const lines = [
|
|
127
|
+
`## Hierarchy Import ${dryRun ? '(Dry Run — no changes written)' : 'Complete'}`,
|
|
128
|
+
`**Product:** ${productName}`,
|
|
129
|
+
`**Total rows processed:** ${result.totalRows}`,
|
|
130
|
+
`**Created:** ${result.created}`,
|
|
131
|
+
`**Updated:** ${result.updated}`,
|
|
132
|
+
`**Skipped:** ${result.skipped.length}`,
|
|
133
|
+
];
|
|
134
|
+
if (result.skipped.length > 0) {
|
|
135
|
+
lines.push('', '### Skipped rows');
|
|
136
|
+
result.skipped.slice(0, 20).forEach(s => {
|
|
137
|
+
lines.push(`- Row ${s.row}: ${s.reason}`);
|
|
138
|
+
});
|
|
139
|
+
if (result.skipped.length > 20) {
|
|
140
|
+
lines.push(`- … and ${result.skipped.length - 20} more`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=importTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importTools.js","sourceRoot":"","sources":["../../src/tools/importTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools: Launch Plan (Cutover Plan) Management
|
|
3
|
+
*
|
|
4
|
+
* Provides 9 tools for creating and maintaining launch plans and their activities
|
|
5
|
+
* through the AutoProject Agent API.
|
|
6
|
+
*
|
|
7
|
+
* Plan statuses: DRAFT → PENDING_REVIEW → APPROVED → IN_PROGRESS → COMPLETED | CANCELLED
|
|
8
|
+
* Activity statuses: DRAFT → PENDING_REVIEW → APPROVED → READY → IN_PROGRESS → COMPLETED | BLOCKED | ROLLBACK | CANCELLED
|
|
9
|
+
* Environment types: WEB, MOBILE, CLOUD_INFRA, CUSTOM
|
|
10
|
+
*/
|
|
11
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
12
|
+
export declare const launchPlanToolDefinitions: Tool[];
|
|
13
|
+
export declare function handleLaunchPlanTool(toolName: string, args: Record<string, unknown>): Promise<{
|
|
14
|
+
content: {
|
|
15
|
+
type: string;
|
|
16
|
+
text: string;
|
|
17
|
+
}[];
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=launchPlanTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchPlanTools.d.ts","sourceRoot":"","sources":["../../src/tools/launchPlanTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAO1D,eAAO,MAAM,yBAAyB,EAAE,IAAI,EAgK3C,CAAC;AAIF,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GAkIzF"}
|