smart-spec-kit-mcp 2.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 +262 -0
- package/dist/engine/sessionManager.d.ts +137 -0
- package/dist/engine/sessionManager.d.ts.map +1 -0
- package/dist/engine/sessionManager.js +128 -0
- package/dist/engine/sessionManager.js.map +1 -0
- package/dist/engine/workflowEngine.d.ts +57 -0
- package/dist/engine/workflowEngine.d.ts.map +1 -0
- package/dist/engine/workflowEngine.js +400 -0
- package/dist/engine/workflowEngine.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/agents.d.ts +61 -0
- package/dist/prompts/agents.d.ts.map +1 -0
- package/dist/prompts/agents.js +236 -0
- package/dist/prompts/agents.js.map +1 -0
- package/dist/schemas/workflowSchema.d.ts +70 -0
- package/dist/schemas/workflowSchema.d.ts.map +1 -0
- package/dist/schemas/workflowSchema.js +42 -0
- package/dist/schemas/workflowSchema.js.map +1 -0
- package/dist/tools/agentTools.d.ts +11 -0
- package/dist/tools/agentTools.d.ts.map +1 -0
- package/dist/tools/agentTools.js +119 -0
- package/dist/tools/agentTools.js.map +1 -0
- package/dist/tools/orchestrationTools.d.ts +12 -0
- package/dist/tools/orchestrationTools.d.ts.map +1 -0
- package/dist/tools/orchestrationTools.js +375 -0
- package/dist/tools/orchestrationTools.js.map +1 -0
- package/dist/tools/workflowTools.d.ts +11 -0
- package/dist/tools/workflowTools.d.ts.map +1 -0
- package/dist/tools/workflowTools.js +236 -0
- package/dist/tools/workflowTools.js.map +1 -0
- package/dist/utils/markdownGenerator.d.ts +70 -0
- package/dist/utils/markdownGenerator.d.ts.map +1 -0
- package/dist/utils/markdownGenerator.js +206 -0
- package/dist/utils/markdownGenerator.js.map +1 -0
- package/dist/utils/vsCodeConfigGenerator.d.ts +32 -0
- package/dist/utils/vsCodeConfigGenerator.d.ts.map +1 -0
- package/dist/utils/vsCodeConfigGenerator.js +88 -0
- package/dist/utils/vsCodeConfigGenerator.js.map +1 -0
- package/dist/utils/workflowLoader.d.ts +99 -0
- package/dist/utils/workflowLoader.d.ts.map +1 -0
- package/dist/utils/workflowLoader.js +281 -0
- package/dist/utils/workflowLoader.js.map +1 -0
- package/package.json +61 -0
- package/templates/bugfix-report.md +184 -0
- package/templates/functional-spec.md +191 -0
- package/workflows/bugfix.yaml +99 -0
- package/workflows/feature-full.yaml +344 -0
- package/workflows/feature-standard.yaml +92 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Generator
|
|
3
|
+
*
|
|
4
|
+
* Utilities for generating and filling Markdown templates with data
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Work item data from Azure DevOps
|
|
8
|
+
*/
|
|
9
|
+
export interface WorkItemData {
|
|
10
|
+
id: number | string;
|
|
11
|
+
title: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
acceptanceCriteria?: string;
|
|
14
|
+
type?: string;
|
|
15
|
+
state?: string;
|
|
16
|
+
assignedTo?: string;
|
|
17
|
+
tags?: string[];
|
|
18
|
+
parentId?: number;
|
|
19
|
+
childIds?: number[];
|
|
20
|
+
links?: Array<{
|
|
21
|
+
rel: string;
|
|
22
|
+
url: string;
|
|
23
|
+
}>;
|
|
24
|
+
customFields?: Record<string, unknown>;
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Template fill options
|
|
29
|
+
*/
|
|
30
|
+
export interface FillOptions {
|
|
31
|
+
/** Keep [TO FILL] placeholders for sections without data */
|
|
32
|
+
keepPlaceholders?: boolean;
|
|
33
|
+
/** Add a marker when data is auto-filled vs placeholder */
|
|
34
|
+
markAutoFilled?: boolean;
|
|
35
|
+
/** Custom date format */
|
|
36
|
+
dateFormat?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Fill a template with work item data
|
|
40
|
+
*
|
|
41
|
+
* @param template - The Markdown template string
|
|
42
|
+
* @param workItem - Data from Azure DevOps work item
|
|
43
|
+
* @param options - Fill options
|
|
44
|
+
* @returns Filled template string
|
|
45
|
+
*/
|
|
46
|
+
export declare function fillTemplate(template: string, workItem: WorkItemData, options?: Partial<FillOptions>): string;
|
|
47
|
+
/**
|
|
48
|
+
* Extract all placeholders from a template
|
|
49
|
+
*/
|
|
50
|
+
export declare function extractPlaceholders(template: string): Array<{
|
|
51
|
+
type: string;
|
|
52
|
+
value: string;
|
|
53
|
+
description?: string;
|
|
54
|
+
}>;
|
|
55
|
+
/**
|
|
56
|
+
* Generate frontmatter YAML from work item data
|
|
57
|
+
*/
|
|
58
|
+
export declare function generateFrontmatter(workItem: WorkItemData): string;
|
|
59
|
+
/**
|
|
60
|
+
* Create a specification document from template and work item
|
|
61
|
+
*/
|
|
62
|
+
export declare function createSpecification(template: string, workItem: WorkItemData, options?: Partial<FillOptions>): string;
|
|
63
|
+
/**
|
|
64
|
+
* Summary of unfilled placeholders
|
|
65
|
+
*/
|
|
66
|
+
export declare function getUnfilledSummary(content: string): {
|
|
67
|
+
count: number;
|
|
68
|
+
items: string[];
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=markdownGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/markdownGenerator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8ED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,OAAO,CAAC,WAAW,CAAM,GACjC,MAAM,CAiCR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBlH;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CA+BlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,OAAO,CAAC,WAAW,CAAM,GACjC,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAUtF"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Generator
|
|
3
|
+
*
|
|
4
|
+
* Utilities for generating and filling Markdown templates with data
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Placeholder pattern for template variables
|
|
8
|
+
* Matches: [TO FILL], [TO FILL: description], {variable_name}
|
|
9
|
+
*/
|
|
10
|
+
const PLACEHOLDER_PATTERNS = {
|
|
11
|
+
toFill: /\[TO FILL(?::\s*([^\]]+))?\]/g,
|
|
12
|
+
variable: /\{(\w+)\}/g,
|
|
13
|
+
};
|
|
14
|
+
const DEFAULT_OPTIONS = {
|
|
15
|
+
keepPlaceholders: true,
|
|
16
|
+
markAutoFilled: false,
|
|
17
|
+
dateFormat: "YYYY-MM-DD",
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Format a date according to the specified format
|
|
21
|
+
*/
|
|
22
|
+
function formatDate(date, format) {
|
|
23
|
+
const year = date.getFullYear();
|
|
24
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
25
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
26
|
+
return format
|
|
27
|
+
.replace("YYYY", String(year))
|
|
28
|
+
.replace("MM", month)
|
|
29
|
+
.replace("DD", day);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Extract a safe string value from potentially complex data
|
|
33
|
+
*/
|
|
34
|
+
function safeString(value) {
|
|
35
|
+
if (value === null || value === undefined) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
if (typeof value === "string") {
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
42
|
+
return String(value);
|
|
43
|
+
}
|
|
44
|
+
if (Array.isArray(value)) {
|
|
45
|
+
return value.map(safeString).join(", ");
|
|
46
|
+
}
|
|
47
|
+
// For any other object type
|
|
48
|
+
return JSON.stringify(value);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Build a data map from work item for template filling
|
|
52
|
+
*/
|
|
53
|
+
function buildDataMap(workItem, options) {
|
|
54
|
+
const now = new Date();
|
|
55
|
+
const dateStr = formatDate(now, options.dateFormat ?? "YYYY-MM-DD");
|
|
56
|
+
return {
|
|
57
|
+
// Work item fields
|
|
58
|
+
workitem_id: safeString(workItem.id),
|
|
59
|
+
id: safeString(workItem.id),
|
|
60
|
+
title: safeString(workItem.title),
|
|
61
|
+
"Feature Title": safeString(workItem.title),
|
|
62
|
+
description: safeString(workItem.description),
|
|
63
|
+
acceptance_criteria: safeString(workItem.acceptanceCriteria),
|
|
64
|
+
type: safeString(workItem.type),
|
|
65
|
+
state: safeString(workItem.state),
|
|
66
|
+
assigned_to: safeString(workItem.assignedTo),
|
|
67
|
+
tags: safeString(workItem.tags),
|
|
68
|
+
// Metadata
|
|
69
|
+
Date: dateStr,
|
|
70
|
+
date: dateStr,
|
|
71
|
+
created: dateStr,
|
|
72
|
+
last_updated: dateStr,
|
|
73
|
+
// Azure DevOps link
|
|
74
|
+
azure_devops_link: workItem.id
|
|
75
|
+
? `[ADO #${workItem.id}](https://dev.azure.com/_workitems/edit/${workItem.id})`
|
|
76
|
+
: "[TO FILL: Link to ADO Work Item]",
|
|
77
|
+
// Context
|
|
78
|
+
context_id: safeString(workItem.id),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Fill a template with work item data
|
|
83
|
+
*
|
|
84
|
+
* @param template - The Markdown template string
|
|
85
|
+
* @param workItem - Data from Azure DevOps work item
|
|
86
|
+
* @param options - Fill options
|
|
87
|
+
* @returns Filled template string
|
|
88
|
+
*/
|
|
89
|
+
export function fillTemplate(template, workItem, options = {}) {
|
|
90
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
91
|
+
const dataMap = buildDataMap(workItem, opts);
|
|
92
|
+
let result = template;
|
|
93
|
+
// Replace {variable} placeholders
|
|
94
|
+
result = result.replaceAll(PLACEHOLDER_PATTERNS.variable, (match, varName) => {
|
|
95
|
+
const value = dataMap[varName];
|
|
96
|
+
if (value !== undefined && value !== "") {
|
|
97
|
+
return opts.markAutoFilled ? `${value} <!--auto-filled-->` : value;
|
|
98
|
+
}
|
|
99
|
+
return opts.keepPlaceholders ? match : "";
|
|
100
|
+
});
|
|
101
|
+
// Replace [TO FILL: description] placeholders with matching data
|
|
102
|
+
result = result.replaceAll(PLACEHOLDER_PATTERNS.toFill, (match, description) => {
|
|
103
|
+
if (!description) {
|
|
104
|
+
return opts.keepPlaceholders ? match : "";
|
|
105
|
+
}
|
|
106
|
+
// Try to match description to data map keys
|
|
107
|
+
const normalizedDesc = description.toLowerCase().replaceAll(/\s+/g, "_");
|
|
108
|
+
const value = dataMap[normalizedDesc] ?? dataMap[description];
|
|
109
|
+
if (value !== undefined && value !== "") {
|
|
110
|
+
return opts.markAutoFilled ? `${value} <!--auto-filled-->` : value;
|
|
111
|
+
}
|
|
112
|
+
return opts.keepPlaceholders ? match : "";
|
|
113
|
+
});
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Extract all placeholders from a template
|
|
118
|
+
*/
|
|
119
|
+
export function extractPlaceholders(template) {
|
|
120
|
+
const placeholders = [];
|
|
121
|
+
// Find [TO FILL] placeholders
|
|
122
|
+
let match;
|
|
123
|
+
const toFillRegex = new RegExp(PLACEHOLDER_PATTERNS.toFill.source, "g");
|
|
124
|
+
while ((match = toFillRegex.exec(template)) !== null) {
|
|
125
|
+
placeholders.push({
|
|
126
|
+
type: "toFill",
|
|
127
|
+
value: match[0],
|
|
128
|
+
description: match[1],
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
// Find {variable} placeholders
|
|
132
|
+
const varRegex = new RegExp(PLACEHOLDER_PATTERNS.variable.source, "g");
|
|
133
|
+
while ((match = varRegex.exec(template)) !== null) {
|
|
134
|
+
placeholders.push({
|
|
135
|
+
type: "variable",
|
|
136
|
+
value: match[0],
|
|
137
|
+
description: match[1],
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
return placeholders;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Generate frontmatter YAML from work item data
|
|
144
|
+
*/
|
|
145
|
+
export function generateFrontmatter(workItem) {
|
|
146
|
+
const now = new Date();
|
|
147
|
+
const dateStr = formatDate(now, "YYYY-MM-DD");
|
|
148
|
+
const frontmatter = {
|
|
149
|
+
title: workItem.title,
|
|
150
|
+
workitem_id: workItem.id,
|
|
151
|
+
type: workItem.type ?? "Specification",
|
|
152
|
+
version: "1.0",
|
|
153
|
+
status: "Draft",
|
|
154
|
+
author: workItem.assignedTo ?? "[TO FILL]",
|
|
155
|
+
created: dateStr,
|
|
156
|
+
last_updated: dateStr,
|
|
157
|
+
azure_devops_link: `https://dev.azure.com/_workitems/edit/${workItem.id}`,
|
|
158
|
+
tags: workItem.tags ?? [],
|
|
159
|
+
};
|
|
160
|
+
const lines = ["---"];
|
|
161
|
+
for (const [key, value] of Object.entries(frontmatter)) {
|
|
162
|
+
if (Array.isArray(value)) {
|
|
163
|
+
lines.push(`${key}:`);
|
|
164
|
+
for (const item of value) {
|
|
165
|
+
lines.push(` - ${item}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
lines.push(`${key}: "${value}"`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
lines.push("---");
|
|
173
|
+
return lines.join("\n");
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Create a specification document from template and work item
|
|
177
|
+
*/
|
|
178
|
+
export function createSpecification(template, workItem, options = {}) {
|
|
179
|
+
// Update frontmatter if present
|
|
180
|
+
const hasFrontmatter = template.startsWith("---");
|
|
181
|
+
if (hasFrontmatter) {
|
|
182
|
+
// Replace existing frontmatter
|
|
183
|
+
const endIndex = template.indexOf("---", 3);
|
|
184
|
+
if (endIndex !== -1) {
|
|
185
|
+
const newFrontmatter = generateFrontmatter(workItem);
|
|
186
|
+
const body = template.slice(endIndex + 3);
|
|
187
|
+
return newFrontmatter + fillTemplate(body, workItem, options);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// No frontmatter, just fill the template
|
|
191
|
+
return fillTemplate(template, workItem, options);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Summary of unfilled placeholders
|
|
195
|
+
*/
|
|
196
|
+
export function getUnfilledSummary(content) {
|
|
197
|
+
const placeholders = extractPlaceholders(content);
|
|
198
|
+
const toFillItems = placeholders
|
|
199
|
+
.filter((p) => p.type === "toFill")
|
|
200
|
+
.map((p) => p.description ?? "Unspecified");
|
|
201
|
+
return {
|
|
202
|
+
count: toFillItems.length,
|
|
203
|
+
items: [...new Set(toFillItems)], // Deduplicate
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=markdownGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownGenerator.js","sourceRoot":"","sources":["../../src/utils/markdownGenerator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,MAAM,EAAE,+BAA+B;IACvC,QAAQ,EAAE,YAAY;CACvB,CAAC;AAiCF,MAAM,eAAe,GAAgB;IACnC,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,KAAK;IACrB,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF;;GAEG;AACH,SAAS,UAAU,CAAC,IAAU,EAAE,MAAc;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEpD,OAAO,MAAM;SACV,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;SAC7B,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,4BAA4B;IAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,QAAsB,EAAE,OAAoB;IAChE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC;IAEpE,OAAO;QACL,mBAAmB;QACnB,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjC,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7C,mBAAmB,EAAE,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC5D,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5C,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE/B,WAAW;QACX,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,OAAO;QAErB,oBAAoB;QACpB,iBAAiB,EAAE,QAAQ,CAAC,EAAE;YAC5B,CAAC,CAAC,SAAS,QAAQ,CAAC,EAAE,2CAA2C,QAAQ,CAAC,EAAE,GAAG;YAC/E,CAAC,CAAC,kCAAkC;QAEtC,UAAU;QACV,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,QAAsB,EACtB,UAAgC,EAAE;IAElC,MAAM,IAAI,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE7C,IAAI,MAAM,GAAG,QAAQ,CAAC;IAEtB,kCAAkC;IAClC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QACnF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,iEAAiE;IACjE,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAoB,EAAE,EAAE;QACtF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,CAAC;QAED,4CAA4C;QAC5C,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;QAE9D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,YAAY,GAAiE,EAAE,CAAC;IAEtF,8BAA8B;IAC9B,IAAI,KAAK,CAAC;IACV,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxE,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;SACtB,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACf,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,WAAW,EAAE,QAAQ,CAAC,EAAE;QACxB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,eAAe;QACtC,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ,CAAC,UAAU,IAAI,WAAW;QAC1C,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,OAAO;QACrB,iBAAiB,EAAE,yCAAyC,QAAQ,CAAC,EAAE,EAAE;QACzE,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;KAC1B,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,QAAsB,EACtB,UAAgC,EAAE;IAElC,gCAAgC;IAChC,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAElD,IAAI,cAAc,EAAE,CAAC;QACnB,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAC1C,OAAO,cAAc,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,OAAO,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,YAAY;SAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC;IAE9C,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,MAAM;QACzB,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,cAAc;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VS Code Configuration Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates the MCP server configuration for VS Code settings.json
|
|
5
|
+
*/
|
|
6
|
+
interface McpServerConfig {
|
|
7
|
+
command: string;
|
|
8
|
+
args: string[];
|
|
9
|
+
env?: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
interface VsCodeMcpConfig {
|
|
12
|
+
"mcp": {
|
|
13
|
+
servers: Record<string, McpServerConfig>;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generate the VS Code MCP configuration for Spec-Kit server
|
|
18
|
+
* @param projectPath - Absolute path to the spec-kit-mcp project
|
|
19
|
+
* @returns Configuration object for VS Code settings.json
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateSpecKitConfig(projectPath: string): VsCodeMcpConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Generate configuration snippet as a formatted JSON string
|
|
24
|
+
* Ready to be merged into VS Code settings.json
|
|
25
|
+
*/
|
|
26
|
+
export declare function generateConfigSnippet(projectPath: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Print configuration instructions to console
|
|
29
|
+
*/
|
|
30
|
+
export declare function printSetupInstructions(projectPath: string): void;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=vsCodeConfigGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vsCodeConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/vsCodeConfigGenerator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,UAAU,eAAe;IACvB,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;KAC1C,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAa1E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA+ChE"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VS Code Configuration Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates the MCP server configuration for VS Code settings.json
|
|
5
|
+
*/
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
/**
|
|
8
|
+
* Generate the VS Code MCP configuration for Spec-Kit server
|
|
9
|
+
* @param projectPath - Absolute path to the spec-kit-mcp project
|
|
10
|
+
* @returns Configuration object for VS Code settings.json
|
|
11
|
+
*/
|
|
12
|
+
export function generateSpecKitConfig(projectPath) {
|
|
13
|
+
const normalizedPath = path.resolve(projectPath);
|
|
14
|
+
return {
|
|
15
|
+
"mcp": {
|
|
16
|
+
servers: {
|
|
17
|
+
"spec-kit": {
|
|
18
|
+
command: "node",
|
|
19
|
+
args: [path.join(normalizedPath, "dist", "index.js")],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Generate configuration snippet as a formatted JSON string
|
|
27
|
+
* Ready to be merged into VS Code settings.json
|
|
28
|
+
*/
|
|
29
|
+
export function generateConfigSnippet(projectPath) {
|
|
30
|
+
const config = generateSpecKitConfig(projectPath);
|
|
31
|
+
return JSON.stringify(config, null, 2);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Print configuration instructions to console
|
|
35
|
+
*/
|
|
36
|
+
export function printSetupInstructions(projectPath) {
|
|
37
|
+
const normalizedPath = path.resolve(projectPath);
|
|
38
|
+
console.log(`
|
|
39
|
+
╔══════════════════════════════════════════════════════════════════╗
|
|
40
|
+
║ SPEC-KIT MCP SERVER - VS CODE CONFIGURATION ║
|
|
41
|
+
╚══════════════════════════════════════════════════════════════════╝
|
|
42
|
+
|
|
43
|
+
Add the following to your VS Code settings.json (User or Workspace):
|
|
44
|
+
|
|
45
|
+
─────────────────────────────────────────────────────────────────────
|
|
46
|
+
{
|
|
47
|
+
"mcp": {
|
|
48
|
+
"servers": {
|
|
49
|
+
"spec-kit": {
|
|
50
|
+
"command": "node",
|
|
51
|
+
"args": ["${normalizedPath.replaceAll("\\", "\\\\")}\\\\dist\\\\index.js"]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
─────────────────────────────────────────────────────────────────────
|
|
57
|
+
|
|
58
|
+
📋 Quick Setup Steps:
|
|
59
|
+
1. Build the project: npm run build
|
|
60
|
+
2. Open VS Code Settings (Ctrl+Shift+P → "Preferences: Open User Settings (JSON)")
|
|
61
|
+
3. Add the "spec-kit" server config to your existing "mcp.servers" object
|
|
62
|
+
4. Reload VS Code window (Ctrl+Shift+P → "Developer: Reload Window")
|
|
63
|
+
5. Test in Copilot Chat: Ask to use the "ping" tool
|
|
64
|
+
|
|
65
|
+
💡 If you already have Azure DevOps MCP configured, your final config should look like:
|
|
66
|
+
|
|
67
|
+
{
|
|
68
|
+
"mcp": {
|
|
69
|
+
"servers": {
|
|
70
|
+
"azure-devops": {
|
|
71
|
+
// ... your existing Azure DevOps config ...
|
|
72
|
+
},
|
|
73
|
+
"spec-kit": {
|
|
74
|
+
"command": "node",
|
|
75
|
+
"args": ["${normalizedPath.replaceAll("\\", "\\\\")}\\\\dist\\\\index.js"]
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
`);
|
|
82
|
+
}
|
|
83
|
+
// CLI execution
|
|
84
|
+
if (process.argv[1]?.includes("vsCodeConfigGenerator")) {
|
|
85
|
+
const projectPath = process.argv[2] || process.cwd();
|
|
86
|
+
printSetupInstructions(projectPath);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=vsCodeConfigGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vsCodeConfigGenerator.js","sourceRoot":"","sources":["../../src/utils/vsCodeConfigGenerator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAclC;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEjD,OAAO;QACL,KAAK,EAAE;YACL,OAAO,EAAE;gBACP,UAAU,EAAE;oBACV,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;iBACtD;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;oBAaM,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;oBAwBvC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;;;;;;CAM1D,CAAC,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACrD,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Loader v2
|
|
3
|
+
*
|
|
4
|
+
* Loads workflows and templates with local override support.
|
|
5
|
+
*
|
|
6
|
+
* Resolution order:
|
|
7
|
+
* 1. Local project: .spec-kit/workflows/ and .spec-kit/templates/
|
|
8
|
+
* 2. Package defaults: /workflows and /templates
|
|
9
|
+
*
|
|
10
|
+
* This allows any project to customize workflows while using defaults.
|
|
11
|
+
*/
|
|
12
|
+
import { type Workflow } from "../schemas/workflowSchema.js";
|
|
13
|
+
export type { Workflow } from "../schemas/workflowSchema.js";
|
|
14
|
+
/**
|
|
15
|
+
* List all available workflows (local + package defaults)
|
|
16
|
+
*/
|
|
17
|
+
export declare function listWorkflows(): Promise<string[]>;
|
|
18
|
+
/**
|
|
19
|
+
* List workflows with source information
|
|
20
|
+
*/
|
|
21
|
+
export declare function listWorkflowsDetailed(): Promise<{
|
|
22
|
+
name: string;
|
|
23
|
+
source: "local" | "package";
|
|
24
|
+
path: string;
|
|
25
|
+
}[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Load and validate a workflow by name
|
|
28
|
+
*/
|
|
29
|
+
export declare function loadWorkflow(workflowName: string): Promise<Workflow>;
|
|
30
|
+
/**
|
|
31
|
+
* Load a template file by name
|
|
32
|
+
*/
|
|
33
|
+
export declare function loadTemplate(templateName: string): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* List all available templates (local + package defaults)
|
|
36
|
+
*/
|
|
37
|
+
export declare function listTemplates(): Promise<string[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Load a workflow with its associated template
|
|
40
|
+
*/
|
|
41
|
+
export declare function loadWorkflowWithTemplate(workflowName: string): Promise<{
|
|
42
|
+
workflow: Workflow;
|
|
43
|
+
template: string;
|
|
44
|
+
}>;
|
|
45
|
+
/**
|
|
46
|
+
* Get workflow step by ID
|
|
47
|
+
*/
|
|
48
|
+
export declare function getWorkflowStep(workflow: Workflow, stepId: string): {
|
|
49
|
+
id: string;
|
|
50
|
+
name: string;
|
|
51
|
+
action: "fetch_ado" | "generate_content" | "review" | "create_file" | "call_agent";
|
|
52
|
+
description: string;
|
|
53
|
+
agent?: string | undefined;
|
|
54
|
+
inputs?: Record<string, string> | undefined;
|
|
55
|
+
outputs?: string[] | undefined;
|
|
56
|
+
next?: string | undefined;
|
|
57
|
+
} | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Get the first step of a workflow
|
|
60
|
+
*/
|
|
61
|
+
export declare function getFirstStep(workflow: Workflow): {
|
|
62
|
+
id: string;
|
|
63
|
+
name: string;
|
|
64
|
+
action: "fetch_ado" | "generate_content" | "review" | "create_file" | "call_agent";
|
|
65
|
+
description: string;
|
|
66
|
+
agent?: string | undefined;
|
|
67
|
+
inputs?: Record<string, string> | undefined;
|
|
68
|
+
outputs?: string[] | undefined;
|
|
69
|
+
next?: string | undefined;
|
|
70
|
+
} | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Get the next step in a workflow
|
|
73
|
+
*/
|
|
74
|
+
export declare function getNextStep(workflow: Workflow, currentStepId: string): {
|
|
75
|
+
id: string;
|
|
76
|
+
name: string;
|
|
77
|
+
action: "fetch_ado" | "generate_content" | "review" | "create_file" | "call_agent";
|
|
78
|
+
description: string;
|
|
79
|
+
agent?: string | undefined;
|
|
80
|
+
inputs?: Record<string, string> | undefined;
|
|
81
|
+
outputs?: string[] | undefined;
|
|
82
|
+
next?: string | undefined;
|
|
83
|
+
} | null | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Initialize local spec-kit directory with example files
|
|
86
|
+
*/
|
|
87
|
+
export declare function initLocalConfig(): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Get configuration info for debugging
|
|
90
|
+
*/
|
|
91
|
+
export declare function getConfigInfo(): {
|
|
92
|
+
packageRoot: string;
|
|
93
|
+
projectRoot: string;
|
|
94
|
+
searchPaths: {
|
|
95
|
+
workflows: string[];
|
|
96
|
+
templates: string[];
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=workflowLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflowLoader.d.ts","sourceRoot":"","sources":["../../src/utils/workflowLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAG7E,YAAY,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAmH7D;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGvD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CACpD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAC9D,CAEA;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CA8B1E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAaxE;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGvD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAKnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;;;;;;;;;cAEjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;cAE9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM;;;;;;;;;qBAepE;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAiErD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC3D,CASA"}
|