autoproject-mcp 1.1.1 → 1.3.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.
@@ -2,11 +2,15 @@
2
2
  /**
3
3
  * MCP Tools: Product Document Management
4
4
  *
5
- * Provides 4 read-only tools for browsing and searching all document types
6
- * within a product via the AutoProject Agent API.
5
+ * Read + write tools for product content documents (PRD, BRD, ARCHITECTURE, etc.).
7
6
  *
8
- * Common documentTypeCode values (system-defined): PRD, BRD, TRD, SRS, FSD,
9
- * ARCHITECTURE, USER_GUIDE, RELEASE_NOTES, MEETING_NOTES, TEST_PLAN, etc.
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 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.',
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 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.',
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. Useful for navigating large documents.',
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 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.',
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 document section content or titles.' },
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
- 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).' }] };
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
- 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')}` }] };
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
- 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 }] };
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
- 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')}` }] };
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
- 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}".` }] };
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
- 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')}` }] };
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
- return { content: [{ type: 'text', text: `Unknown document tool: ${toolName}` }] };
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":"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"}
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: get_feature_detail, get_task_detail, list_features, update_status
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;;;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"}
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: get_feature_detail, get_task_detail, list_features, update_status
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: 'get_feature_detail',
13
- description: 'Get full details of a feature (SubFeature) by ID, including acceptance criteria.',
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', 'featureId'],
24
+ required: ['productId'],
21
25
  },
22
26
  },
23
27
  {
24
- name: 'get_task_detail',
25
- description: 'Get details of a task, including description and current status.',
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
- taskId: { type: 'string', description: 'Task ID' },
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', 'taskId'],
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 (SubFeatures) within a product, with optional status/priority filter.',
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
- limit: { type: 'number', description: 'Max results' },
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: { type: 'string', enum: ['feature', 'task', 'micro-task', 'feature-group'], description: 'Type of entity' },
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":"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"}
1
+ {"version":3,"file":"hierarchyTools.js","sourceRoot":"","sources":["../../src/tools/hierarchyTools.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA+GH,kDA0CC;AAtJD,4CAAgD;AAEnC,QAAA,wBAAwB,GAAW;IAC9C;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,sEAAsE;YACtE,8FAA8F;QAChG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;aACzD;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,iFAAiF;YACjF,qCAAqC;QACvC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACxD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;gBAChG,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;aAC5E;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,iFAAiF;QACnF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBACvE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBACzE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;aAC5E;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,0DAA0D;YAC1D,mGAAmG;QACrG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACxD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;gBAC5F,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBAC3E,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBACvE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;gBACpF,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;aAC5E;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACxD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;aACzD;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;SACrC;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,kEAAkE;QAC/E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACxD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;aACnD;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;SAClC;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,qGAAqG;QAClH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACxD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC;oBACxD,WAAW,EAAE,gBAAgB;iBAC9B;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE;gBACtD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;aAC5D;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC;SAC5D;KACF;CACF,CAAC;AAEK,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAA6B;IACnF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,OAAO,MAAM,IAAA,kBAAM,EAAC,aAAa,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC;QAC/D,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,OAAO,MAAM,IAAA,kBAAM,EAAC,aAAa,IAAI,CAAC,SAAS,UAAU,EAAE;gBACzD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,OAAO,MAAM,IAAA,kBAAM,EAAC,aAAa,IAAI,CAAC,SAAS,iBAAiB,EAAE;gBAChE,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,OAAO,MAAM,IAAA,kBAAM,EAAC,aAAa,IAAI,CAAC,SAAS,qBAAqB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,OAAO,MAAM,IAAA,kBAAM,EAAC,aAAa,IAAI,CAAC,SAAS,kBAAkB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,OAAO,MAAM,IAAA,kBAAM,EAAC,aAAa,IAAI,CAAC,SAAS,WAAW,EAAE;gBAC1D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,OAAO,MAAM,IAAA,oBAAQ,EACnB,aAAa,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,SAAS,EACjF,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAC;QACJ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
@@ -1,14 +1,14 @@
1
1
  /**
2
- * MCP Tools: Release cycle linking for feature groups and sub-features.
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 (existing tool) to discover available cycles and their IDs.
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 "features" (Feature Group in UI)
11
- * "feature" = DB SubFeature / API "sub-features" (Feature in UI)
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,EAgEjD,CAAC;AAEF,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GAqG/F"}
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"}