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,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Resources: Expose AutoProject data as readable resources.
|
|
4
|
+
*
|
|
5
|
+
* 5 resources:
|
|
6
|
+
* 1. autoproject://product/{productId}/context - Context bundle
|
|
7
|
+
* 2. autoproject://product/{productId}/features - Feature list
|
|
8
|
+
* 3. autoproject://product/{productId}/defects - Defect list
|
|
9
|
+
* 4. autoproject://product/{productId}/hierarchy - Full hierarchy tree
|
|
10
|
+
* 5. autoproject://product/{productId}/work-items - Work item list
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.resourceTemplates = void 0;
|
|
14
|
+
exports.handleResourceRead = handleResourceRead;
|
|
15
|
+
const client_js_1 = require("../client.js");
|
|
16
|
+
// Template URIs for listing
|
|
17
|
+
exports.resourceTemplates = [
|
|
18
|
+
{
|
|
19
|
+
uriTemplate: 'autoproject://product/{productId}/context',
|
|
20
|
+
name: 'Product Context Bundle',
|
|
21
|
+
description: 'LLM-optimised context bundle for a product. Use at session start.',
|
|
22
|
+
mimeType: 'application/json',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
uriTemplate: 'autoproject://product/{productId}/features',
|
|
26
|
+
name: 'Product Features',
|
|
27
|
+
description: 'Open features list with status and priority.',
|
|
28
|
+
mimeType: 'application/json',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
uriTemplate: 'autoproject://product/{productId}/defects',
|
|
32
|
+
name: 'Product Defects',
|
|
33
|
+
description: 'Active defects for a product.',
|
|
34
|
+
mimeType: 'application/json',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
uriTemplate: 'autoproject://product/{productId}/hierarchy',
|
|
38
|
+
name: 'Product Hierarchy',
|
|
39
|
+
description: 'Full module/feature-group/feature hierarchy tree.',
|
|
40
|
+
mimeType: 'application/json',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
uriTemplate: 'autoproject://product/{productId}/work-items',
|
|
44
|
+
name: 'Available Work Items',
|
|
45
|
+
description: 'Work items available for agents to claim.',
|
|
46
|
+
mimeType: 'application/json',
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
async function handleResourceRead(uri) {
|
|
50
|
+
const url = new URL(uri);
|
|
51
|
+
// Expected: autoproject://product/{productId}/{resource}
|
|
52
|
+
const parts = url.pathname.replace(/^\/\//, '').split('/');
|
|
53
|
+
// hostname = product, pathname = /{productId}/{resource}
|
|
54
|
+
const productId = url.hostname === 'product' ? parts[1] : parts[0];
|
|
55
|
+
const resourceName = url.hostname === 'product' ? parts[2] : parts[1];
|
|
56
|
+
let data;
|
|
57
|
+
switch (resourceName) {
|
|
58
|
+
case 'context':
|
|
59
|
+
data = await (0, client_js_1.apiGet)(`/products/${productId}/context-bundle`);
|
|
60
|
+
break;
|
|
61
|
+
case 'features':
|
|
62
|
+
data = await (0, client_js_1.apiGet)(`/products/${productId}/features`, { limit: 100 });
|
|
63
|
+
break;
|
|
64
|
+
case 'defects':
|
|
65
|
+
data = await (0, client_js_1.apiGet)(`/products/${productId}/defects`, { limit: 50 });
|
|
66
|
+
break;
|
|
67
|
+
case 'hierarchy':
|
|
68
|
+
data = await (0, client_js_1.apiGet)(`/products/${productId}/hierarchy`);
|
|
69
|
+
break;
|
|
70
|
+
case 'work-items':
|
|
71
|
+
data = await (0, client_js_1.apiGet)(`/products/${productId}/work-items`, { leaseState: 'available' });
|
|
72
|
+
break;
|
|
73
|
+
default:
|
|
74
|
+
throw new Error(`Unknown resource: ${resourceName}`);
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
content: JSON.stringify(data, null, 2),
|
|
78
|
+
mimeType: 'application/json',
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAuCH,gDAiCC;AArED,4CAAsC;AAEtC,4BAA4B;AACf,QAAA,iBAAiB,GAAG;IAC/B;QACE,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,mEAAmE;QAChF,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,WAAW,EAAE,4CAA4C;QACzD,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8CAA8C;QAC3D,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,+BAA+B;QAC5C,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,mDAAmD;QAChE,QAAQ,EAAE,kBAAkB;KAC7B;IACD;QACE,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE,kBAAkB;KAC7B;CACF,CAAC;AAEK,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,yDAAyD;IACzD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3D,yDAAyD;IACzD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtE,IAAI,IAAa,CAAC;IAClB,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,IAAI,GAAG,MAAM,IAAA,kBAAM,EAAC,aAAa,SAAS,iBAAiB,CAAC,CAAC;YAC7D,MAAM;QACR,KAAK,UAAU;YACb,IAAI,GAAG,MAAM,IAAA,kBAAM,EAAC,aAAa,SAAS,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACvE,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,GAAG,MAAM,IAAA,kBAAM,EAAC,aAAa,SAAS,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACrE,MAAM;QACR,KAAK,WAAW;YACd,IAAI,GAAG,MAAM,IAAA,kBAAM,EAAC,aAAa,SAAS,YAAY,CAAC,CAAC;YACxD,MAAM;QACR,KAAK,YAAY;YACf,IAAI,GAAG,MAAM,IAAA,kBAAM,EAAC,aAAa,SAAS,aAAa,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YACtF,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,QAAQ,EAAE,kBAAkB;KAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools: Application listing and feature/sub-feature application-link management.
|
|
3
|
+
*
|
|
4
|
+
* IDE agents use these tools to:
|
|
5
|
+
* 1. Discover what applications exist in a product.
|
|
6
|
+
* 2. Read which applications a feature or sub-feature is currently linked to.
|
|
7
|
+
* 3. Replace the application links for a feature or sub-feature.
|
|
8
|
+
*
|
|
9
|
+
* Terminology (aligned with AGENTS.md):
|
|
10
|
+
* "feature" = FeatureGroup (Feature Group in UI)
|
|
11
|
+
* "sub-feature" = Feature (Feature in UI)
|
|
12
|
+
*
|
|
13
|
+
* Link operations are replace-semantics (idempotent PUT):
|
|
14
|
+
* Providing an empty applicationIds array removes all links.
|
|
15
|
+
*/
|
|
16
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
17
|
+
export declare const applicationToolDefinitions: Tool[];
|
|
18
|
+
export declare function handleApplicationTool(toolName: string, args: Record<string, unknown>): Promise<{
|
|
19
|
+
content: {
|
|
20
|
+
type: string;
|
|
21
|
+
text: string;
|
|
22
|
+
}[];
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=applicationTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applicationTools.d.ts","sourceRoot":"","sources":["../../src/tools/applicationTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK1D,eAAO,MAAM,0BAA0B,EAAE,IAAI,EAmF5C,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GAwE1F"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Tools: Application listing and feature/sub-feature application-link management.
|
|
4
|
+
*
|
|
5
|
+
* IDE agents use these tools to:
|
|
6
|
+
* 1. Discover what applications exist in a product.
|
|
7
|
+
* 2. Read which applications a feature or sub-feature is currently linked to.
|
|
8
|
+
* 3. Replace the application links for a feature or sub-feature.
|
|
9
|
+
*
|
|
10
|
+
* Terminology (aligned with AGENTS.md):
|
|
11
|
+
* "feature" = FeatureGroup (Feature Group in UI)
|
|
12
|
+
* "sub-feature" = Feature (Feature in UI)
|
|
13
|
+
*
|
|
14
|
+
* Link operations are replace-semantics (idempotent PUT):
|
|
15
|
+
* Providing an empty applicationIds array removes all links.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.applicationToolDefinitions = void 0;
|
|
19
|
+
exports.handleApplicationTool = handleApplicationTool;
|
|
20
|
+
const client_js_1 = require("../client.js");
|
|
21
|
+
const DEFAULT_PRODUCT_ID = process.env.AUTOPROJECT_PRODUCT_ID ?? '';
|
|
22
|
+
exports.applicationToolDefinitions = [
|
|
23
|
+
{
|
|
24
|
+
name: 'list_applications',
|
|
25
|
+
description: 'List all applications (services, frontends, APIs, etc.) defined for a product. ' +
|
|
26
|
+
'Returns application id, name, applicationType, platform, and architecture pattern. ' +
|
|
27
|
+
'Use this first to discover valid applicationIds before calling set_feature_applications or set_subfeature_applications.',
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: 'object',
|
|
30
|
+
properties: {
|
|
31
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
32
|
+
},
|
|
33
|
+
required: [],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'get_feature_applications',
|
|
38
|
+
description: 'Get the list of applications currently linked to a feature (Feature Group). ' +
|
|
39
|
+
'Returns the same application objects as list_applications but filtered to only those linked.',
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: 'object',
|
|
42
|
+
properties: {
|
|
43
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
44
|
+
featureId: { type: 'string', description: 'Feature (FeatureGroup) UUID.' },
|
|
45
|
+
},
|
|
46
|
+
required: ['featureId'],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'set_feature_applications',
|
|
51
|
+
description: 'Replace the full set of application links for a feature (Feature Group). ' +
|
|
52
|
+
'This is a replace operation — provide the complete desired list of applicationIds. ' +
|
|
53
|
+
'Pass an empty array to remove all links. Call list_applications first to get valid applicationIds.',
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
58
|
+
featureId: { type: 'string', description: 'Feature (FeatureGroup) UUID.' },
|
|
59
|
+
applicationIds: {
|
|
60
|
+
type: 'array',
|
|
61
|
+
items: { type: 'string' },
|
|
62
|
+
description: 'Complete list of application UUIDs to link. Replaces any existing links.',
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
required: ['featureId', 'applicationIds'],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'get_subfeature_applications',
|
|
70
|
+
description: 'Get the list of applications currently linked to a sub-feature (Feature in UI). ' +
|
|
71
|
+
'Returns application objects filtered to only those linked to the given sub-feature.',
|
|
72
|
+
inputSchema: {
|
|
73
|
+
type: 'object',
|
|
74
|
+
properties: {
|
|
75
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
76
|
+
subFeatureId: { type: 'string', description: 'Sub-feature (Feature) UUID.' },
|
|
77
|
+
},
|
|
78
|
+
required: ['subFeatureId'],
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'set_subfeature_applications',
|
|
83
|
+
description: 'Replace the full set of application links for a sub-feature (Feature in UI). ' +
|
|
84
|
+
'This is a replace operation — provide the complete desired list of applicationIds. ' +
|
|
85
|
+
'Pass an empty array to remove all links. Call list_applications first to get valid applicationIds.',
|
|
86
|
+
inputSchema: {
|
|
87
|
+
type: 'object',
|
|
88
|
+
properties: {
|
|
89
|
+
productId: { type: 'string', description: 'Product UUID. Defaults to AUTOPROJECT_PRODUCT_ID env.' },
|
|
90
|
+
subFeatureId: { type: 'string', description: 'Sub-feature (Feature) UUID.' },
|
|
91
|
+
applicationIds: {
|
|
92
|
+
type: 'array',
|
|
93
|
+
items: { type: 'string' },
|
|
94
|
+
description: 'Complete list of application UUIDs to link. Replaces any existing links.',
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
required: ['subFeatureId', 'applicationIds'],
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
async function handleApplicationTool(toolName, args) {
|
|
102
|
+
const productId = args.productId || DEFAULT_PRODUCT_ID;
|
|
103
|
+
if (!productId) {
|
|
104
|
+
return { content: [{ type: 'text', text: 'Error: productId is required (or set AUTOPROJECT_PRODUCT_ID env).' }] };
|
|
105
|
+
}
|
|
106
|
+
switch (toolName) {
|
|
107
|
+
case 'list_applications': {
|
|
108
|
+
const data = await (0, client_js_1.apiGet)(`/products/${productId}/applications`, {});
|
|
109
|
+
const apps = data?.items ?? [];
|
|
110
|
+
if (apps.length === 0) {
|
|
111
|
+
return { content: [{ type: 'text', text: 'No applications found for this product.' }] };
|
|
112
|
+
}
|
|
113
|
+
const lines = apps.map((a) => `[${a.id}] ${a.name}\n Type: ${a.applicationType ?? 'N/A'} | Platform: ${a.platform ?? 'N/A'} | Architecture: ${a.architecturePattern ?? 'N/A'}${a.description ? `\n ${a.description}` : ''}`);
|
|
114
|
+
return { content: [{ type: 'text', text: `Applications (${apps.length}):\n\n${lines.join('\n\n')}` }] };
|
|
115
|
+
}
|
|
116
|
+
case 'get_feature_applications': {
|
|
117
|
+
const featureId = args.featureId;
|
|
118
|
+
if (!featureId)
|
|
119
|
+
return { content: [{ type: 'text', text: 'Error: featureId is required.' }] };
|
|
120
|
+
const data = await (0, client_js_1.apiGet)(`/products/${productId}/features/${featureId}/applications`, {});
|
|
121
|
+
const apps = data?.items ?? [];
|
|
122
|
+
if (apps.length === 0) {
|
|
123
|
+
return { content: [{ type: 'text', text: 'No applications linked to this feature.' }] };
|
|
124
|
+
}
|
|
125
|
+
const lines = apps.map((a) => `[${a.id}] ${a.name} (${a.applicationType ?? 'N/A'})`);
|
|
126
|
+
return { content: [{ type: 'text', text: `Linked applications (${apps.length}):\n${lines.join('\n')}` }] };
|
|
127
|
+
}
|
|
128
|
+
case 'set_feature_applications': {
|
|
129
|
+
const featureId = args.featureId;
|
|
130
|
+
if (!featureId)
|
|
131
|
+
return { content: [{ type: 'text', text: 'Error: featureId is required.' }] };
|
|
132
|
+
const applicationIds = args.applicationIds;
|
|
133
|
+
await (0, client_js_1.apiPut)(`/products/${productId}/features/${featureId}/applications`, { applicationIds });
|
|
134
|
+
return { content: [{ type: 'text', text: `Feature application links updated.\nLinked ${applicationIds.length} application(s) to feature ${featureId}.` }] };
|
|
135
|
+
}
|
|
136
|
+
case 'get_subfeature_applications': {
|
|
137
|
+
const subFeatureId = args.subFeatureId;
|
|
138
|
+
if (!subFeatureId)
|
|
139
|
+
return { content: [{ type: 'text', text: 'Error: subFeatureId is required.' }] };
|
|
140
|
+
const data = await (0, client_js_1.apiGet)(`/products/${productId}/sub-features/${subFeatureId}/applications`, {});
|
|
141
|
+
const apps = data?.items ?? [];
|
|
142
|
+
if (apps.length === 0) {
|
|
143
|
+
return { content: [{ type: 'text', text: 'No applications linked to this sub-feature.' }] };
|
|
144
|
+
}
|
|
145
|
+
const lines = apps.map((a) => `[${a.id}] ${a.name} (${a.applicationType ?? 'N/A'})`);
|
|
146
|
+
return { content: [{ type: 'text', text: `Linked applications (${apps.length}):\n${lines.join('\n')}` }] };
|
|
147
|
+
}
|
|
148
|
+
case 'set_subfeature_applications': {
|
|
149
|
+
const subFeatureId = args.subFeatureId;
|
|
150
|
+
if (!subFeatureId)
|
|
151
|
+
return { content: [{ type: 'text', text: 'Error: subFeatureId is required.' }] };
|
|
152
|
+
const applicationIds = args.applicationIds;
|
|
153
|
+
await (0, client_js_1.apiPut)(`/products/${productId}/sub-features/${subFeatureId}/applications`, { applicationIds });
|
|
154
|
+
return { content: [{ type: 'text', text: `Sub-feature application links updated.\nLinked ${applicationIds.length} application(s) to sub-feature ${subFeatureId}.` }] };
|
|
155
|
+
}
|
|
156
|
+
default:
|
|
157
|
+
return { content: [{ type: 'text', text: `Unknown application tool: ${toolName}` }] };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=applicationTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applicationTools.js","sourceRoot":"","sources":["../../src/tools/applicationTools.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AA4FH,sDAwEC;AAjKD,4CAA8C;AAE9C,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC;AAEvD,QAAA,0BAA0B,GAAW;IAChD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,iFAAiF;YACjF,qFAAqF;YACrF,yHAAyH;QAC3H,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;aACpG;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,8EAA8E;YAC9E,8FAA8F;QAChG,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;gBACnG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;aAC3E;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,2EAA2E;YAC3E,qFAAqF;YACrF,oGAAoG;QACtG,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;gBACnG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBAC1E,cAAc,EAAE;oBACd,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,0EAA0E;iBACxF;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;SAC1C;KACF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EACT,kFAAkF;YAClF,qFAAqF;QACvF,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;gBACnG,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;aAC7E;YACD,QAAQ,EAAE,CAAC,cAAc,CAAC;SAC3B;KACF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EACT,+EAA+E;YAC/E,qFAAqF;YACrF,oGAAoG;QACtG,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;gBACnG,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;gBAC5E,cAAc,EAAE;oBACd,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,0EAA0E;iBACxF;aACF;YACD,QAAQ,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;SAC7C;KACF;CACF,CAAC;AAEK,KAAK,UAAU,qBAAqB,CAAC,QAAgB,EAAE,IAA6B;IACzF,MAAM,SAAS,GAAI,IAAI,CAAC,SAAgC,IAAI,kBAAkB,CAAC;IAC/E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mEAAmE,EAAE,CAAC,EAAE,CAAC;IACpH,CAAC;IAED,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,IAAA,kBAAM,EAAM,aAAa,SAAS,eAAe,EAAE,EAAE,CAAC,CAAC;YAC1E,MAAM,IAAI,GAA8B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAE1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC,EAAE,CAAC;YAC1F,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3B,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,eAAe,IAAI,KAAK,gBAAgB,CAAC,CAAC,QAAQ,IAAI,KAAK,oBAAoB,CAAC,CAAC,mBAAmB,IAAI,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChM,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC,MAAM,SAAS,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1G,CAAC;QAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;YACvD,IAAI,CAAC,SAAS;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,EAAE,CAAC;YAE9F,MAAM,IAAI,GAAG,MAAM,IAAA,kBAAM,EAAM,aAAa,SAAS,aAAa,SAAS,eAAe,EAAE,EAAE,CAAC,CAAC;YAChG,MAAM,IAAI,GAA8B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAE1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC,EAAE,CAAC;YAC1F,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,IAAI,KAAK,GAAG,CAAC,CAAC;YACrF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC7G,CAAC;QAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;YACvD,IAAI,CAAC,SAAS;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,EAAE,CAAC;YAE9F,MAAM,cAAc,GAAG,IAAI,CAAC,cAA0B,CAAC;YACvD,MAAM,IAAA,kBAAM,EAAM,aAAa,SAAS,aAAa,SAAS,eAAe,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YACnG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8CAA8C,cAAc,CAAC,MAAM,8BAA8B,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC;QAC9J,CAAC;QAED,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAkC,CAAC;YAC7D,IAAI,CAAC,YAAY;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC,EAAE,CAAC;YAEpG,MAAM,IAAI,GAAG,MAAM,IAAA,kBAAM,EAAM,aAAa,SAAS,iBAAiB,YAAY,eAAe,EAAE,EAAE,CAAC,CAAC;YACvG,MAAM,IAAI,GAA8B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAE1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6CAA6C,EAAE,CAAC,EAAE,CAAC;YAC9F,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,IAAI,KAAK,GAAG,CAAC,CAAC;YACrF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC7G,CAAC;QAED,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAkC,CAAC;YAC7D,IAAI,CAAC,YAAY;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC,EAAE,CAAC;YAEpG,MAAM,cAAc,GAAG,IAAI,CAAC,cAA0B,CAAC;YACvD,MAAM,IAAA,kBAAM,EAAM,aAAa,SAAS,iBAAiB,YAAY,eAAe,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YAC1G,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kDAAkD,cAAc,CAAC,MAAM,kCAAkC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC;QACzK,CAAC;QAED;YACE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;IAC1F,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools: Copilot task queue and operation polling
|
|
3
|
+
* Tools: submit_copilot_task, poll_operation
|
|
4
|
+
*/
|
|
5
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
export declare const copilotToolDefinitions: Tool[];
|
|
7
|
+
export declare function handleCopilotTool(name: string, args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
//# sourceMappingURL=copilotTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilotTools.d.ts","sourceRoot":"","sources":["../../src/tools/copilotTools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,eAAO,MAAM,sBAAsB,EAAE,IAAI,EA2BxC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,oBAgBlF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Tools: Copilot task queue and operation polling
|
|
4
|
+
* Tools: submit_copilot_task, poll_operation
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.copilotToolDefinitions = void 0;
|
|
8
|
+
exports.handleCopilotTool = handleCopilotTool;
|
|
9
|
+
const client_js_1 = require("../client.js");
|
|
10
|
+
exports.copilotToolDefinitions = [
|
|
11
|
+
{
|
|
12
|
+
name: 'submit_copilot_task',
|
|
13
|
+
description: 'Submit a Copilot task for autonomous code generation on a feature or task. High-risk: may require admin approval depending on org policy.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
18
|
+
entityType: { type: 'string', enum: ['feature', 'task', 'micro-task'], description: 'Entity type' },
|
|
19
|
+
entityId: { type: 'string', description: 'Feature or task ID to generate code for' },
|
|
20
|
+
customPrompt: { type: 'string', description: 'Custom instructions for the code generation' },
|
|
21
|
+
gitBaseBranch: { type: 'string', description: 'Git branch to base changes on' },
|
|
22
|
+
},
|
|
23
|
+
required: ['productId', 'entityType', 'entityId'],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'poll_operation',
|
|
28
|
+
description: 'Poll the status of an async operation (e.g. pending approval or queued Copilot task).',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
operationId: { type: 'string', description: 'Operation ID returned by submit_copilot_task' },
|
|
33
|
+
},
|
|
34
|
+
required: ['operationId'],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
async function handleCopilotTool(name, args) {
|
|
39
|
+
switch (name) {
|
|
40
|
+
case 'submit_copilot_task': {
|
|
41
|
+
return await (0, client_js_1.apiPost)(`/products/${args.productId}/copilot/tasks`, {
|
|
42
|
+
entityType: args.entityType,
|
|
43
|
+
entityId: args.entityId,
|
|
44
|
+
customPrompt: args.customPrompt,
|
|
45
|
+
gitBaseBranch: args.gitBaseBranch,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
case 'poll_operation': {
|
|
49
|
+
return await (0, client_js_1.apiGet)(`/operations/${args.operationId}`);
|
|
50
|
+
}
|
|
51
|
+
default:
|
|
52
|
+
throw new Error(`Unknown copilot tool: ${name}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=copilotTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilotTools.js","sourceRoot":"","sources":["../../src/tools/copilotTools.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkCH,8CAgBC;AA/CD,4CAA+C;AAElC,QAAA,sBAAsB,GAAW;IAC5C;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,2IAA2I;QACxJ,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,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE;gBACnG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBACpF,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;gBAC5F,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;aAChF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC;SAClD;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,uFAAuF;QACpG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;aAC7F;YACD,QAAQ,EAAE,CAAC,aAAa,CAAC;SAC1B;KACF;CACF,CAAC;AAEK,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAA6B;IACjF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,OAAO,MAAM,IAAA,mBAAO,EAAC,aAAa,IAAI,CAAC,SAAS,gBAAgB,EAAE;gBAChE,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,OAAO,MAAM,IAAA,kBAAM,EAAC,eAAe,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools: Defect management
|
|
3
|
+
* Tools: list_defects, get_defect_detail, get_defect_attachments, create_defect, update_defect, update_defect_status
|
|
4
|
+
*/
|
|
5
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
export declare const defectToolDefinitions: Tool[];
|
|
7
|
+
export declare function handleDefectTool(name: string, args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
//# sourceMappingURL=defectTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defectTools.d.ts","sourceRoot":"","sources":["../../src/tools/defectTools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,eAAO,MAAM,qBAAqB,EAAE,IAAI,EAsGvC,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,oBA8BjF"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Tools: Defect management
|
|
4
|
+
* Tools: list_defects, get_defect_detail, get_defect_attachments, create_defect, update_defect, update_defect_status
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.defectToolDefinitions = void 0;
|
|
8
|
+
exports.handleDefectTool = handleDefectTool;
|
|
9
|
+
const client_js_1 = require("../client.js");
|
|
10
|
+
exports.defectToolDefinitions = [
|
|
11
|
+
{
|
|
12
|
+
name: 'list_defects',
|
|
13
|
+
description: 'List defects within a product, with optional status and severity filters.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
18
|
+
status: { type: 'string', description: 'Filter by status' },
|
|
19
|
+
severity: { type: 'string', description: 'Filter by severity (CRITICAL, HIGH, MEDIUM, LOW)' },
|
|
20
|
+
limit: { type: 'number', description: 'Max results' },
|
|
21
|
+
},
|
|
22
|
+
required: ['productId'],
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'get_defect_detail',
|
|
27
|
+
description: 'Get full TEXT detail of a defect (description, steps to reproduce, expected/actual '
|
|
28
|
+
+ 'behavior, page, resolution note). Always call this FIRST. It is fast and does not include '
|
|
29
|
+
+ 'images. Only if the text is not enough to understand the issue (e.g. a visual/UI bug or '
|
|
30
|
+
+ 'unclear repro) follow up with get_defect_attachments to pull screenshots and other media.',
|
|
31
|
+
inputSchema: {
|
|
32
|
+
type: 'object',
|
|
33
|
+
properties: {
|
|
34
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
35
|
+
defectId: { type: 'string', description: 'Defect ID' },
|
|
36
|
+
},
|
|
37
|
+
required: ['productId', 'defectId'],
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'get_defect_attachments',
|
|
42
|
+
description: 'Get a defect\'s media attachments (screenshots, recordings, voice notes, files) as '
|
|
43
|
+
+ 'short-lived signed URLs. Call this ONLY when get_defect_detail\'s text is not enough to '
|
|
44
|
+
+ 'understand the defect — e.g. a visual bug, layout issue, or ambiguous reproduction. Returns '
|
|
45
|
+
+ 'an empty list if the defect has no attachments. URLs expire, so fetch them just before use.',
|
|
46
|
+
inputSchema: {
|
|
47
|
+
type: 'object',
|
|
48
|
+
properties: {
|
|
49
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
50
|
+
defectId: { type: 'string', description: 'Defect ID' },
|
|
51
|
+
},
|
|
52
|
+
required: ['productId', 'defectId'],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'create_defect',
|
|
57
|
+
description: 'Create a new defect report for a discovered bug.',
|
|
58
|
+
inputSchema: {
|
|
59
|
+
type: 'object',
|
|
60
|
+
properties: {
|
|
61
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
62
|
+
title: { type: 'string', description: 'Defect title' },
|
|
63
|
+
description: { type: 'string', description: 'Detailed description of the bug' },
|
|
64
|
+
severity: { type: 'string', enum: ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW'], description: 'Bug severity' },
|
|
65
|
+
affectedEntityId: { type: 'string', description: 'ID of the feature or task this affects' },
|
|
66
|
+
stepsToReproduce: { type: 'string', description: 'Steps to reproduce the bug' },
|
|
67
|
+
expectedBehavior: { type: 'string', description: 'What should happen' },
|
|
68
|
+
actualBehavior: { type: 'string', description: 'What actually happens' },
|
|
69
|
+
},
|
|
70
|
+
required: ['productId', 'title', 'description', 'severity', 'affectedEntityId'],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'update_defect',
|
|
75
|
+
description: 'Update an existing defect — fields and/or status in one call. '
|
|
76
|
+
+ 'Status changes are validated against the defect workflow '
|
|
77
|
+
+ '(OPEN → IN_PROGRESS → FIXED → VERIFIED → CLOSED, plus REOPENED / WONT_FIX). '
|
|
78
|
+
+ 'Only provided fields are changed. To retire a defect, set status to CLOSED or WONT_FIX '
|
|
79
|
+
+ '(there is no hard delete via the agent API).',
|
|
80
|
+
inputSchema: {
|
|
81
|
+
type: 'object',
|
|
82
|
+
properties: {
|
|
83
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
84
|
+
defectId: { type: 'string', description: 'Defect ID' },
|
|
85
|
+
title: { type: 'string', description: 'New title' },
|
|
86
|
+
description: { type: 'string', description: 'New description' },
|
|
87
|
+
severity: { type: 'string', enum: ['COSMETIC', 'LOW', 'MEDIUM', 'HIGH', 'CRITICAL'], description: 'New severity' },
|
|
88
|
+
priority: { type: 'string', enum: ['LOW', 'MEDIUM', 'HIGH', 'CRITICAL'], description: 'New priority' },
|
|
89
|
+
status: { type: 'string', enum: ['OPEN', 'IN_PROGRESS', 'FIXED', 'VERIFIED', 'CLOSED', 'REOPENED', 'WONT_FIX'], description: 'New status' },
|
|
90
|
+
stepsToReproduce: { type: 'string', description: 'Updated steps to reproduce' },
|
|
91
|
+
expectedBehavior: { type: 'string', description: 'Updated expected behavior' },
|
|
92
|
+
actualBehavior: { type: 'string', description: 'Updated actual behavior' },
|
|
93
|
+
resolutionNote: { type: 'string', description: 'Resolution note (set when fixing/closing)' },
|
|
94
|
+
statusChangeComment: { type: 'string', description: 'Optional comment recorded on a status change' },
|
|
95
|
+
},
|
|
96
|
+
required: ['productId', 'defectId'],
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: 'update_defect_status',
|
|
101
|
+
description: 'Update only the status of an existing defect (shorthand for update_defect with just a status).',
|
|
102
|
+
inputSchema: {
|
|
103
|
+
type: 'object',
|
|
104
|
+
properties: {
|
|
105
|
+
productId: { type: 'string', description: 'Product ID' },
|
|
106
|
+
defectId: { type: 'string', description: 'Defect ID' },
|
|
107
|
+
status: { type: 'string', description: 'New status' },
|
|
108
|
+
},
|
|
109
|
+
required: ['productId', 'defectId', 'status'],
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
];
|
|
113
|
+
async function handleDefectTool(name, args) {
|
|
114
|
+
switch (name) {
|
|
115
|
+
case 'list_defects': {
|
|
116
|
+
return await (0, client_js_1.apiGet)(`/products/${args.productId}/defects`, {
|
|
117
|
+
status: args.status,
|
|
118
|
+
severity: args.severity,
|
|
119
|
+
limit: args.limit,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
case 'get_defect_detail': {
|
|
123
|
+
return await (0, client_js_1.apiGet)(`/products/${args.productId}/defects/${args.defectId}`);
|
|
124
|
+
}
|
|
125
|
+
case 'get_defect_attachments': {
|
|
126
|
+
return await (0, client_js_1.apiGet)(`/products/${args.productId}/defects/${args.defectId}/attachments`);
|
|
127
|
+
}
|
|
128
|
+
case 'create_defect': {
|
|
129
|
+
return await (0, client_js_1.apiPost)(`/products/${args.productId}/defects`, args);
|
|
130
|
+
}
|
|
131
|
+
case 'update_defect': {
|
|
132
|
+
const { productId, defectId, ...fields } = args;
|
|
133
|
+
return await (0, client_js_1.apiPatch)(`/products/${productId}/defects/${defectId}`, fields);
|
|
134
|
+
}
|
|
135
|
+
case 'update_defect_status': {
|
|
136
|
+
return await (0, client_js_1.apiPatch)(`/products/${args.productId}/defects/${args.defectId}/status`, {
|
|
137
|
+
status: args.status,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
default:
|
|
141
|
+
throw new Error(`Unknown defect tool: ${name}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=defectTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defectTools.js","sourceRoot":"","sources":["../../src/tools/defectTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools: Product Document Management
|
|
3
|
+
*
|
|
4
|
+
* Provides 4 read-only tools for browsing and searching all document types
|
|
5
|
+
* within a product via the AutoProject Agent API.
|
|
6
|
+
*
|
|
7
|
+
* Common documentTypeCode values (system-defined): PRD, BRD, TRD, SRS, FSD,
|
|
8
|
+
* ARCHITECTURE, USER_GUIDE, RELEASE_NOTES, MEETING_NOTES, TEST_PLAN, etc.
|
|
9
|
+
*/
|
|
10
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
11
|
+
export declare const documentToolDefinitions: Tool[];
|
|
12
|
+
export declare function handleDocumentTool(toolName: string, args: Record<string, unknown>): Promise<{
|
|
13
|
+
content: {
|
|
14
|
+
type: string;
|
|
15
|
+
text: string;
|
|
16
|
+
}[];
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=documentTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentTools.d.ts","sourceRoot":"","sources":["../../src/tools/documentTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK1D,eAAO,MAAM,uBAAuB,EAAE,IAAI,EA2DzC,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GA6FvF"}
|