@specforge/mcp 2.1.6 → 2.2.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/dist/cli/commands/blocked.js +6 -6
- package/dist/cli/commands/blocked.js.map +1 -1
- package/dist/cli/commands/debug/test.d.ts.map +1 -1
- package/dist/cli/commands/debug/test.js +4 -3
- package/dist/cli/commands/debug/test.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +39 -23
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/feedback.d.ts +16 -0
- package/dist/cli/commands/feedback.d.ts.map +1 -0
- package/dist/cli/commands/feedback.js +220 -0
- package/dist/cli/commands/feedback.js.map +1 -0
- package/dist/cli/commands/feedback.types.d.ts +116 -0
- package/dist/cli/commands/feedback.types.d.ts.map +1 -0
- package/dist/cli/commands/feedback.types.js +97 -0
- package/dist/cli/commands/feedback.types.js.map +1 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +7 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/next.js +3 -3
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/review/epic-review.js +2 -2
- package/dist/cli/commands/review/epic-review.js.map +1 -1
- package/dist/cli/commands/review/types.d.ts +1 -1
- package/dist/cli/commands/review/types.d.ts.map +1 -1
- package/dist/cli/commands/scaffold/agent-types.d.ts +49 -0
- package/dist/cli/commands/scaffold/agent-types.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/agent-types.js +37 -0
- package/dist/cli/commands/scaffold/agent-types.js.map +1 -0
- package/dist/cli/commands/scaffold/display.d.ts +31 -2
- package/dist/cli/commands/scaffold/display.d.ts.map +1 -1
- package/dist/cli/commands/scaffold/display.js +176 -14
- package/dist/cli/commands/scaffold/display.js.map +1 -1
- package/dist/cli/commands/scaffold/register.d.ts.map +1 -1
- package/dist/cli/commands/scaffold/register.js +8 -4
- package/dist/cli/commands/scaffold/register.js.map +1 -1
- package/dist/cli/commands/scaffold/scaffold.d.ts +1 -1
- package/dist/cli/commands/scaffold/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/scaffold/scaffold.js +522 -30
- package/dist/cli/commands/scaffold/scaffold.js.map +1 -1
- package/dist/cli/commands/scaffold/targets.d.ts +12 -0
- package/dist/cli/commands/scaffold/targets.d.ts.map +1 -1
- package/dist/cli/commands/scaffold/targets.js +33 -0
- package/dist/cli/commands/scaffold/targets.js.map +1 -1
- package/dist/cli/commands/scaffold/types.d.ts +34 -1
- package/dist/cli/commands/scaffold/types.d.ts.map +1 -1
- package/dist/cli/commands/scaffold/types.js.map +1 -1
- package/dist/cli/commands/scaffold/utils.d.ts +22 -1
- package/dist/cli/commands/scaffold/utils.d.ts.map +1 -1
- package/dist/cli/commands/scaffold/utils.js +106 -0
- package/dist/cli/commands/scaffold/utils.js.map +1 -1
- package/dist/cli/commands/session/start.js +1 -1
- package/dist/cli/commands/session/start.js.map +1 -1
- package/dist/cli/commands/status.types.d.ts +1 -1
- package/dist/cli/commands/status.types.d.ts.map +1 -1
- package/dist/cli/commands/status.types.js +2 -2
- package/dist/cli/commands/status.types.js.map +1 -1
- package/dist/cli/commands/ticket/resolver.js +1 -1
- package/dist/cli/commands/ticket/resolver.js.map +1 -1
- package/dist/cli/commands/tickets.js +1 -1
- package/dist/cli/commands/tickets.js.map +1 -1
- package/dist/cli/commands/tickets.types.d.ts +1 -1
- package/dist/cli/commands/tickets.types.d.ts.map +1 -1
- package/dist/cli/config/writer.d.ts +32 -13
- package/dist/cli/config/writer.d.ts.map +1 -1
- package/dist/cli/config/writer.js +30 -11
- package/dist/cli/config/writer.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +3 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/templates/agents/content/core/sfag-implementer.d.ts +8 -0
- package/dist/cli/templates/agents/content/core/sfag-implementer.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-implementer.js +111 -0
- package/dist/cli/templates/agents/content/core/sfag-implementer.js.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.d.ts +8 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.js +105 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.js.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.d.ts +8 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.js +124 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.js.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.d.ts +8 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.js +130 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.js.map +1 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.d.ts +8 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.js +151 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.js.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-api-implementer.d.ts +8 -0
- package/dist/cli/templates/agents/content/task-type/sfag-api-implementer.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-api-implementer.js +130 -0
- package/dist/cli/templates/agents/content/task-type/sfag-api-implementer.js.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-docs-writer.d.ts +8 -0
- package/dist/cli/templates/agents/content/task-type/sfag-docs-writer.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-docs-writer.js +181 -0
- package/dist/cli/templates/agents/content/task-type/sfag-docs-writer.js.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-frontend-builder.d.ts +8 -0
- package/dist/cli/templates/agents/content/task-type/sfag-frontend-builder.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-frontend-builder.js +139 -0
- package/dist/cli/templates/agents/content/task-type/sfag-frontend-builder.js.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-infra-architect.d.ts +8 -0
- package/dist/cli/templates/agents/content/task-type/sfag-infra-architect.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-infra-architect.js +147 -0
- package/dist/cli/templates/agents/content/task-type/sfag-infra-architect.js.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-schema-designer.d.ts +8 -0
- package/dist/cli/templates/agents/content/task-type/sfag-schema-designer.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-schema-designer.js +130 -0
- package/dist/cli/templates/agents/content/task-type/sfag-schema-designer.js.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-test-writer.d.ts +8 -0
- package/dist/cli/templates/agents/content/task-type/sfag-test-writer.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/task-type/sfag-test-writer.js +169 -0
- package/dist/cli/templates/agents/content/task-type/sfag-test-writer.js.map +1 -0
- package/dist/cli/templates/agents/index.d.ts +23 -0
- package/dist/cli/templates/agents/index.d.ts.map +1 -0
- package/dist/cli/templates/agents/index.js +63 -0
- package/dist/cli/templates/agents/index.js.map +1 -0
- package/dist/cli/templates/index.d.ts +2 -1
- package/dist/cli/templates/index.d.ts.map +1 -1
- package/dist/cli/templates/index.js +4 -1
- package/dist/cli/templates/index.js.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/workflow-definitions.d.ts +41 -0
- package/dist/lib/workflow-definitions.d.ts.map +1 -0
- package/dist/lib/workflow-definitions.js +511 -0
- package/dist/lib/workflow-definitions.js.map +1 -0
- package/dist/tools/core/bulk.d.ts.map +1 -1
- package/dist/tools/core/bulk.js +5 -30
- package/dist/tools/core/bulk.js.map +1 -1
- package/dist/tools/core/feedback.d.ts +110 -0
- package/dist/tools/core/feedback.d.ts.map +1 -0
- package/dist/tools/core/feedback.js +303 -0
- package/dist/tools/core/feedback.js.map +1 -0
- package/dist/tools/core/help.d.ts.map +1 -1
- package/dist/tools/core/help.js +17 -2
- package/dist/tools/core/help.js.map +1 -1
- package/dist/tools/core/index.d.ts +2 -0
- package/dist/tools/core/index.d.ts.map +1 -1
- package/dist/tools/core/index.js +2 -0
- package/dist/tools/core/index.js.map +1 -1
- package/dist/tools/core/workflow-guide.d.ts +13 -0
- package/dist/tools/core/workflow-guide.d.ts.map +1 -0
- package/dist/tools/core/workflow-guide.js +332 -0
- package/dist/tools/core/workflow-guide.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +131 -96
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Templates Module
|
|
3
|
+
*
|
|
4
|
+
* Defines all SpecForge agent templates for scaffolding to AI CLI tools.
|
|
5
|
+
*/
|
|
6
|
+
// Import core agents
|
|
7
|
+
import { SFAG_ORCHESTRATOR } from './content/core/sfag-orchestrator.js';
|
|
8
|
+
import { SFAG_IMPLEMENTER } from './content/core/sfag-implementer.js';
|
|
9
|
+
import { SFAG_SPEC_CREATOR } from './content/core/sfag-spec-creator.js';
|
|
10
|
+
import { SFAG_TICKET_IMPLEMENTER } from './content/core/sfag-ticket-implementer.js';
|
|
11
|
+
// Import task-type agents
|
|
12
|
+
import { SFAG_API_IMPLEMENTER } from './content/task-type/sfag-api-implementer.js';
|
|
13
|
+
import { SFAG_SCHEMA_DESIGNER } from './content/task-type/sfag-schema-designer.js';
|
|
14
|
+
import { SFAG_FRONTEND_BUILDER } from './content/task-type/sfag-frontend-builder.js';
|
|
15
|
+
import { SFAG_INFRA_ARCHITECT } from './content/task-type/sfag-infra-architect.js';
|
|
16
|
+
import { SFAG_TEST_WRITER } from './content/task-type/sfag-test-writer.js';
|
|
17
|
+
import { SFAG_DOCS_WRITER } from './content/task-type/sfag-docs-writer.js';
|
|
18
|
+
// Import research agents
|
|
19
|
+
import { SFAG_PACKAGE_RESEARCHER } from './content/research/sfag-package-researcher.js';
|
|
20
|
+
/**
|
|
21
|
+
* All agent templates
|
|
22
|
+
*/
|
|
23
|
+
const AGENT_TEMPLATES = [
|
|
24
|
+
// Core agents
|
|
25
|
+
SFAG_ORCHESTRATOR,
|
|
26
|
+
SFAG_IMPLEMENTER,
|
|
27
|
+
SFAG_SPEC_CREATOR,
|
|
28
|
+
SFAG_TICKET_IMPLEMENTER,
|
|
29
|
+
// Task-type agents
|
|
30
|
+
SFAG_API_IMPLEMENTER,
|
|
31
|
+
SFAG_SCHEMA_DESIGNER,
|
|
32
|
+
SFAG_FRONTEND_BUILDER,
|
|
33
|
+
SFAG_INFRA_ARCHITECT,
|
|
34
|
+
SFAG_TEST_WRITER,
|
|
35
|
+
SFAG_DOCS_WRITER,
|
|
36
|
+
// Research agents
|
|
37
|
+
SFAG_PACKAGE_RESEARCHER,
|
|
38
|
+
];
|
|
39
|
+
/**
|
|
40
|
+
* Get all agent templates
|
|
41
|
+
*/
|
|
42
|
+
export function getAgentTemplates() {
|
|
43
|
+
return AGENT_TEMPLATES;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get a specific agent template by name
|
|
47
|
+
*/
|
|
48
|
+
export function getAgentTemplate(name) {
|
|
49
|
+
return AGENT_TEMPLATES.find(t => t.name === name);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get agent templates by category
|
|
53
|
+
*/
|
|
54
|
+
export function getAgentsByCategory(category) {
|
|
55
|
+
return AGENT_TEMPLATES.filter(t => t.category === category);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get all agent template names
|
|
59
|
+
*/
|
|
60
|
+
export function getAgentNames() {
|
|
61
|
+
return AGENT_TEMPLATES.map(t => t.name);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/templates/agents/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,0BAA0B;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAE3E,yBAAyB;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF;;GAEG;AACH,MAAM,eAAe,GAAoB;IACvC,cAAc;IACd,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,uBAAuB;IAEvB,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB;IAEhB,kBAAkB;IAClB,uBAAuB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAuB;IACzD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Templates Module
|
|
3
3
|
*
|
|
4
|
-
* Exports all template functions for command scaffolding.
|
|
4
|
+
* Exports all template functions for command and agent scaffolding.
|
|
5
5
|
*/
|
|
6
6
|
export { getCommandTemplates, getCommandTemplate, getCommandsByCategory } from './commands.js';
|
|
7
|
+
export { getAgentTemplates, getAgentTemplate, getAgentsByCategory, getAgentNames, } from './agents/index.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG/F,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GACd,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Templates Module
|
|
3
3
|
*
|
|
4
|
-
* Exports all template functions for command scaffolding.
|
|
4
|
+
* Exports all template functions for command and agent scaffolding.
|
|
5
5
|
*/
|
|
6
|
+
// Command templates
|
|
6
7
|
export { getCommandTemplates, getCommandTemplate, getCommandsByCategory } from './commands.js';
|
|
8
|
+
// Agent templates
|
|
9
|
+
export { getAgentTemplates, getAgentTemplate, getAgentsByCategory, getAgentNames, } from './agents/index.js';
|
|
7
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAoB;AACpB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE/F,kBAAkB;AAClB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GACd,MAAM,mBAAmB,CAAC"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -4,4 +4,5 @@
|
|
|
4
4
|
* Exports shared utility modules for the MCP server.
|
|
5
5
|
*/
|
|
6
6
|
export { type OutputFormat, formatResponse, formatArrayResponse, formatErrorResponse, formatSuccessResponse, isValidFormat, getFormatFromArgs, } from './format.js';
|
|
7
|
+
export { type WorkflowStep, type WorkflowDefinition, type ReviewChecklistItem, type ReviewWorkflowDefinition, type FinalizeWorkflowDefinition, type WorkflowType, CREATION_WORKFLOW, IMPLEMENTATION_WORKFLOW, REVIEW_WORKFLOW, FINALIZE_WORKFLOW, WORKFLOW_TYPES, getWorkflowDefinition, } from './workflow-definitions.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,2BAA2B,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -4,4 +4,5 @@
|
|
|
4
4
|
* Exports shared utility modules for the MCP server.
|
|
5
5
|
*/
|
|
6
6
|
export { formatResponse, formatArrayResponse, formatErrorResponse, formatSuccessResponse, isValidFormat, getFormatFromArgs, } from './format.js';
|
|
7
|
+
export { CREATION_WORKFLOW, IMPLEMENTATION_WORKFLOW, REVIEW_WORKFLOW, FINALIZE_WORKFLOW, WORKFLOW_TYPES, getWorkflowDefinition, } from './workflow-definitions.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAOL,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Definitions
|
|
3
|
+
*
|
|
4
|
+
* Contains the workflow definitions as data structures for guiding AI agents
|
|
5
|
+
* through SpecForge workflows.
|
|
6
|
+
*/
|
|
7
|
+
export interface WorkflowStep {
|
|
8
|
+
step: number;
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
tools: string[];
|
|
12
|
+
tips: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface WorkflowDefinition {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
philosophy: string[];
|
|
18
|
+
steps: WorkflowStep[];
|
|
19
|
+
antiPatterns: string[];
|
|
20
|
+
}
|
|
21
|
+
export interface ReviewChecklistItem {
|
|
22
|
+
name: string;
|
|
23
|
+
description: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ReviewWorkflowDefinition extends WorkflowDefinition {
|
|
26
|
+
checklist: ReviewChecklistItem[];
|
|
27
|
+
}
|
|
28
|
+
export interface FinalizeWorkflowDefinition extends WorkflowDefinition {
|
|
29
|
+
prerequisites: string[];
|
|
30
|
+
}
|
|
31
|
+
export declare const CREATION_WORKFLOW: WorkflowDefinition;
|
|
32
|
+
export declare const IMPLEMENTATION_WORKFLOW: WorkflowDefinition;
|
|
33
|
+
export declare const REVIEW_WORKFLOW: ReviewWorkflowDefinition;
|
|
34
|
+
export declare const FINALIZE_WORKFLOW: FinalizeWorkflowDefinition;
|
|
35
|
+
/**
|
|
36
|
+
* Get a workflow definition by type
|
|
37
|
+
*/
|
|
38
|
+
export declare function getWorkflowDefinition(workflowType: string): WorkflowDefinition | ReviewWorkflowDefinition | FinalizeWorkflowDefinition | null;
|
|
39
|
+
export declare const WORKFLOW_TYPES: readonly ["creation", "implementation", "review", "finalize"];
|
|
40
|
+
export type WorkflowType = (typeof WORKFLOW_TYPES)[number];
|
|
41
|
+
//# sourceMappingURL=workflow-definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-definitions.d.ts","sourceRoot":"","sources":["../../src/lib/workflow-definitions.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAClE,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,EAAE,kBA+G/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAgKrC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,wBAmG7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,0BA+G/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,GACnB,kBAAkB,GAAG,wBAAwB,GAAG,0BAA0B,GAAG,IAAI,CAanF;AAED,eAAO,MAAM,cAAc,+DAAgE,CAAC;AAC5F,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
// mcp/src/lib/workflow-definitions.ts
|
|
2
|
+
/**
|
|
3
|
+
* Workflow Definitions
|
|
4
|
+
*
|
|
5
|
+
* Contains the workflow definitions as data structures for guiding AI agents
|
|
6
|
+
* through SpecForge workflows.
|
|
7
|
+
*/
|
|
8
|
+
export const CREATION_WORKFLOW = {
|
|
9
|
+
name: 'creation',
|
|
10
|
+
description: 'Create specifications, epics, and tickets with rich context',
|
|
11
|
+
philosophy: [
|
|
12
|
+
'One entity at a time - never bulk create',
|
|
13
|
+
'More context = better AI implementation',
|
|
14
|
+
'When in doubt, ask the user',
|
|
15
|
+
'Invest in planning for first-run success',
|
|
16
|
+
],
|
|
17
|
+
steps: [
|
|
18
|
+
{
|
|
19
|
+
step: 1,
|
|
20
|
+
name: 'understand_requirements',
|
|
21
|
+
description: 'Gather comprehensive requirements from user',
|
|
22
|
+
tools: [],
|
|
23
|
+
tips: [
|
|
24
|
+
'Ask about the problem being solved',
|
|
25
|
+
'Understand the target users',
|
|
26
|
+
'Clarify scope boundaries',
|
|
27
|
+
'Identify constraints and risks',
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
step: 2,
|
|
32
|
+
name: 'create_specification',
|
|
33
|
+
description: 'Create specification with full context',
|
|
34
|
+
tools: ['specification.create'],
|
|
35
|
+
tips: [
|
|
36
|
+
'Include background and goals',
|
|
37
|
+
'Define guardrails (what NOT to do)',
|
|
38
|
+
'Set codeStandards for consistency',
|
|
39
|
+
'Add architecture overview',
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
step: 3,
|
|
44
|
+
name: 'plan_epics',
|
|
45
|
+
description: 'Identify logical phases/groupings, discuss with user',
|
|
46
|
+
tools: [],
|
|
47
|
+
tips: [
|
|
48
|
+
'Break work into cohesive units',
|
|
49
|
+
'Consider dependencies between phases',
|
|
50
|
+
'Discuss timeline and priority with user',
|
|
51
|
+
'Keep epic count manageable (3-7 typical)',
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
step: 4,
|
|
56
|
+
name: 'create_epic',
|
|
57
|
+
description: 'Create ONE epic with full context',
|
|
58
|
+
tools: ['epic.create'],
|
|
59
|
+
tips: [
|
|
60
|
+
'Define clear objective',
|
|
61
|
+
'Set scope boundaries',
|
|
62
|
+
'Include sharedPatterns for consistency',
|
|
63
|
+
'Add any epic-specific guardrails',
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
step: 5,
|
|
68
|
+
name: 'plan_tickets',
|
|
69
|
+
description: 'Break epic into tickets, discuss dependencies with user',
|
|
70
|
+
tools: [],
|
|
71
|
+
tips: [
|
|
72
|
+
'Keep tickets small and focused',
|
|
73
|
+
'Identify clear acceptance criteria',
|
|
74
|
+
'Map out dependencies before creating',
|
|
75
|
+
'Discuss complexity with user',
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
step: 6,
|
|
80
|
+
name: 'create_ticket',
|
|
81
|
+
description: 'Create ONE ticket with full details',
|
|
82
|
+
tools: ['ticket.create'],
|
|
83
|
+
tips: [
|
|
84
|
+
'Write detailed acceptanceCriteria',
|
|
85
|
+
'Include implementation hints',
|
|
86
|
+
'Add technicalDetails for complex logic',
|
|
87
|
+
'Specify files to modify if known',
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
step: 7,
|
|
92
|
+
name: 'add_dependencies',
|
|
93
|
+
description: 'Link ticket to its dependencies',
|
|
94
|
+
tools: ['dependency.add'],
|
|
95
|
+
tips: [
|
|
96
|
+
'Only add true blocking dependencies',
|
|
97
|
+
'Avoid circular dependency chains',
|
|
98
|
+
'Keep dependency graph shallow when possible',
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
step: 8,
|
|
103
|
+
name: 'repeat',
|
|
104
|
+
description: 'Continue tickets for current epic, then next epic',
|
|
105
|
+
tools: [],
|
|
106
|
+
tips: [
|
|
107
|
+
'Complete all tickets for an epic before moving on',
|
|
108
|
+
'Review epic completion before starting next',
|
|
109
|
+
'Adjust estimates as you learn more',
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
antiPatterns: [
|
|
114
|
+
'NEVER use bulk creation - always one at a time',
|
|
115
|
+
'NEVER skip asking user when details are unclear',
|
|
116
|
+
'NEVER create tickets without acceptance criteria',
|
|
117
|
+
'NEVER proceed without understanding dependencies',
|
|
118
|
+
],
|
|
119
|
+
};
|
|
120
|
+
export const IMPLEMENTATION_WORKFLOW = {
|
|
121
|
+
name: 'implementation',
|
|
122
|
+
description: 'Implement tickets with session management',
|
|
123
|
+
philosophy: [
|
|
124
|
+
'Always get full context before starting',
|
|
125
|
+
'Start session before making changes',
|
|
126
|
+
'Report progress during implementation',
|
|
127
|
+
'Validate before completing',
|
|
128
|
+
],
|
|
129
|
+
steps: [
|
|
130
|
+
{
|
|
131
|
+
step: 1,
|
|
132
|
+
name: 'get_context',
|
|
133
|
+
description: 'Understand current working context',
|
|
134
|
+
tools: ['context.working'],
|
|
135
|
+
tips: [
|
|
136
|
+
'Check for active sessions',
|
|
137
|
+
'Note the current specification/epic focus',
|
|
138
|
+
'Understand what has already been done',
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
step: 2,
|
|
143
|
+
name: 'check_session',
|
|
144
|
+
description: 'Check if spec has an open session',
|
|
145
|
+
tools: ['context.working'],
|
|
146
|
+
tips: [
|
|
147
|
+
'If session exists, continue with that session ID',
|
|
148
|
+
'If no session, will start new one after selecting ticket',
|
|
149
|
+
'Only ONE session per spec at a time',
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
step: 3,
|
|
154
|
+
name: 'find_work',
|
|
155
|
+
description: 'Find tickets ready to work on',
|
|
156
|
+
tools: ['workflow.next_actionable'],
|
|
157
|
+
tips: [
|
|
158
|
+
'Focus on unblocked tickets',
|
|
159
|
+
'Consider priority and complexity',
|
|
160
|
+
'Check if any tickets are already in progress',
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
step: 4,
|
|
165
|
+
name: 'review_ticket',
|
|
166
|
+
description: 'Get full implementation context',
|
|
167
|
+
tools: ['context.implementation'],
|
|
168
|
+
tips: [
|
|
169
|
+
'Use depth=full for rich context',
|
|
170
|
+
'Read all related patterns',
|
|
171
|
+
'Understand acceptance criteria',
|
|
172
|
+
],
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
step: 5,
|
|
176
|
+
name: 'clarify',
|
|
177
|
+
description: 'Ask user about unclear requirements',
|
|
178
|
+
tools: [],
|
|
179
|
+
tips: [
|
|
180
|
+
'ASK THE USER before proceeding if unclear',
|
|
181
|
+
'Confirm test environment preference',
|
|
182
|
+
'Verify any assumptions',
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
step: 6,
|
|
187
|
+
name: 'start_session',
|
|
188
|
+
description: 'Start or continue implementation session',
|
|
189
|
+
tools: ['session.start'],
|
|
190
|
+
tips: [
|
|
191
|
+
'Session locks the specification',
|
|
192
|
+
'Prevents concurrent work conflicts',
|
|
193
|
+
'Tracks your progress and changes',
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
step: 7,
|
|
198
|
+
name: 'implement',
|
|
199
|
+
description: 'Do the work, report progress',
|
|
200
|
+
tools: ['session.progress'],
|
|
201
|
+
tips: [
|
|
202
|
+
'Follow the patterns from context',
|
|
203
|
+
'Report meaningful progress updates',
|
|
204
|
+
'Commit logically grouped changes',
|
|
205
|
+
],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
step: 8,
|
|
209
|
+
name: 'validate',
|
|
210
|
+
description: 'Run tests, lint, typecheck',
|
|
211
|
+
tools: [],
|
|
212
|
+
tips: [
|
|
213
|
+
'Run validation as specified in ticket',
|
|
214
|
+
'Fix any failing tests before completing',
|
|
215
|
+
'Ensure no regressions',
|
|
216
|
+
],
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
step: 9,
|
|
220
|
+
name: 'complete_ticket',
|
|
221
|
+
description: 'Complete the ticket with summary',
|
|
222
|
+
tools: ['session.complete'],
|
|
223
|
+
tips: [
|
|
224
|
+
'Include summary of what was done',
|
|
225
|
+
'Report validation results',
|
|
226
|
+
'Note any follow-up items',
|
|
227
|
+
],
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
step: 10,
|
|
231
|
+
name: 'repeat_tickets',
|
|
232
|
+
description: 'Continue with next ticket in epic',
|
|
233
|
+
tools: ['workflow.next_actionable'],
|
|
234
|
+
tips: [
|
|
235
|
+
'Check what tickets are now unblocked',
|
|
236
|
+
'Continue until epic is complete',
|
|
237
|
+
'Then proceed to epic completion',
|
|
238
|
+
],
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
step: 11,
|
|
242
|
+
name: 'epic_review',
|
|
243
|
+
description: 'Review all changes made in epic',
|
|
244
|
+
tools: ['epic.get'],
|
|
245
|
+
tips: [
|
|
246
|
+
'Check all tickets are done',
|
|
247
|
+
'Review integration between tickets',
|
|
248
|
+
'Run full test suite for epic scope',
|
|
249
|
+
'Check for regressions',
|
|
250
|
+
],
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
step: 12,
|
|
254
|
+
name: 'epic_commit',
|
|
255
|
+
description: 'Create commit for the epic',
|
|
256
|
+
tools: [],
|
|
257
|
+
tips: [
|
|
258
|
+
'Stage all changes from epic tickets',
|
|
259
|
+
'Write descriptive commit message referencing epic',
|
|
260
|
+
'Include ticket numbers in commit',
|
|
261
|
+
],
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
step: 13,
|
|
265
|
+
name: 'next_epic',
|
|
266
|
+
description: 'Move to next epic',
|
|
267
|
+
tools: ['epic.list', 'workflow.next_actionable'],
|
|
268
|
+
tips: [
|
|
269
|
+
'Find the next epic to work on',
|
|
270
|
+
'Repeat from step 3 (find_work)',
|
|
271
|
+
],
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
antiPatterns: [
|
|
275
|
+
'NEVER implement without reading full ticket context',
|
|
276
|
+
'NEVER skip session.start - it tracks your work',
|
|
277
|
+
'NEVER complete without running validation',
|
|
278
|
+
'NEVER assume - ask the user if unclear',
|
|
279
|
+
],
|
|
280
|
+
};
|
|
281
|
+
export const REVIEW_WORKFLOW = {
|
|
282
|
+
name: 'review',
|
|
283
|
+
description: 'Review tickets for completeness and consistency before implementation',
|
|
284
|
+
philosophy: [
|
|
285
|
+
'Catch issues before implementation, not during',
|
|
286
|
+
'Consistency across all layers (DB, API, types)',
|
|
287
|
+
'Always ask about test environment preference',
|
|
288
|
+
'Document findings in ticket notes',
|
|
289
|
+
],
|
|
290
|
+
checklist: [
|
|
291
|
+
{ name: 'missing_points', description: 'Acceptance criteria complete? Edge cases?' },
|
|
292
|
+
{ name: 'blind_spots', description: 'Security implications? What could go wrong?' },
|
|
293
|
+
{ name: 'auth_patterns', description: 'Token handling? Permission checks?' },
|
|
294
|
+
{ name: 'db_permissions', description: 'Row-level security? Audit requirements?' },
|
|
295
|
+
{ name: 'field_naming', description: 'DB (snake_case) <-> API (camelCase) <-> Types match?' },
|
|
296
|
+
{ name: 'documentation', description: 'API docs? README? Architecture docs need update?' },
|
|
297
|
+
{ name: 'test_environment', description: 'ASK USER: Sandbox or local mocks?' },
|
|
298
|
+
],
|
|
299
|
+
steps: [
|
|
300
|
+
{
|
|
301
|
+
step: 1,
|
|
302
|
+
name: 'select_ticket',
|
|
303
|
+
description: 'Choose ticket to review',
|
|
304
|
+
tools: ['ticket.get', 'workflow.next_actionable'],
|
|
305
|
+
tips: [
|
|
306
|
+
'Review tickets before they are implemented',
|
|
307
|
+
'Can review all pending tickets in an epic',
|
|
308
|
+
],
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
step: 2,
|
|
312
|
+
name: 'load_context',
|
|
313
|
+
description: 'Get full implementation context with patterns',
|
|
314
|
+
tools: ['context.implementation'],
|
|
315
|
+
tips: [
|
|
316
|
+
'Use depth=full for comprehensive review',
|
|
317
|
+
'Understand the broader context',
|
|
318
|
+
],
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
step: 3,
|
|
322
|
+
name: 'run_checklist',
|
|
323
|
+
description: 'Go through each review point systematically',
|
|
324
|
+
tools: [],
|
|
325
|
+
tips: [
|
|
326
|
+
'Check each item in the review checklist',
|
|
327
|
+
'Be thorough - issues found now save time later',
|
|
328
|
+
],
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
step: 4,
|
|
332
|
+
name: 'identify_gaps',
|
|
333
|
+
description: 'List missing items, inconsistencies, concerns',
|
|
334
|
+
tools: [],
|
|
335
|
+
tips: [
|
|
336
|
+
'Document all findings',
|
|
337
|
+
'Prioritize by impact',
|
|
338
|
+
'Note any blocking issues',
|
|
339
|
+
],
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
step: 5,
|
|
343
|
+
name: 'ask_user',
|
|
344
|
+
description: 'Clarify test environment preference',
|
|
345
|
+
tools: [],
|
|
346
|
+
tips: [
|
|
347
|
+
'ALWAYS ask about test environment',
|
|
348
|
+
'Sandbox (real services) vs local mocks',
|
|
349
|
+
'Document the decision',
|
|
350
|
+
],
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
step: 6,
|
|
354
|
+
name: 'update_ticket',
|
|
355
|
+
description: 'Add findings to ticket notes or update acceptance criteria',
|
|
356
|
+
tools: ['ticket.update'],
|
|
357
|
+
tips: [
|
|
358
|
+
'Add findings to notes field',
|
|
359
|
+
'Update acceptance criteria if needed',
|
|
360
|
+
'Mark items that need user input',
|
|
361
|
+
],
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
step: 7,
|
|
365
|
+
name: 'repeat',
|
|
366
|
+
description: 'Review next ticket',
|
|
367
|
+
tools: [],
|
|
368
|
+
tips: [
|
|
369
|
+
'Continue until all relevant tickets reviewed',
|
|
370
|
+
'Consider reviewing related tickets together',
|
|
371
|
+
],
|
|
372
|
+
},
|
|
373
|
+
],
|
|
374
|
+
antiPatterns: [
|
|
375
|
+
'NEVER skip the review checklist',
|
|
376
|
+
'NEVER assume test environment - always ask user',
|
|
377
|
+
'NEVER ignore field naming mismatches',
|
|
378
|
+
'NEVER proceed if auth patterns are unclear',
|
|
379
|
+
],
|
|
380
|
+
};
|
|
381
|
+
export const FINALIZE_WORKFLOW = {
|
|
382
|
+
name: 'finalize',
|
|
383
|
+
description: 'Verify implementation, mark spec done, and create PR',
|
|
384
|
+
philosophy: [
|
|
385
|
+
'All epics must be complete before finalizing',
|
|
386
|
+
'Run full validation suite before PR',
|
|
387
|
+
'PR description should tell the full story',
|
|
388
|
+
'End session cleanly after PR creation',
|
|
389
|
+
],
|
|
390
|
+
prerequisites: [
|
|
391
|
+
'All epics in specification are done',
|
|
392
|
+
'All tickets are completed',
|
|
393
|
+
'All epic commits have been made',
|
|
394
|
+
],
|
|
395
|
+
steps: [
|
|
396
|
+
{
|
|
397
|
+
step: 1,
|
|
398
|
+
name: 'verify_completion',
|
|
399
|
+
description: 'Check all epics and tickets are done',
|
|
400
|
+
tools: ['specification.get', 'epic.list'],
|
|
401
|
+
tips: [
|
|
402
|
+
'Verify all epics are marked done',
|
|
403
|
+
'Check all tickets are completed',
|
|
404
|
+
'Look for any pending dependencies',
|
|
405
|
+
],
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
step: 2,
|
|
409
|
+
name: 'full_validation',
|
|
410
|
+
description: 'Run complete test suite',
|
|
411
|
+
tools: [],
|
|
412
|
+
tips: [
|
|
413
|
+
'Run: npm test (or equivalent)',
|
|
414
|
+
'Run: npm run lint',
|
|
415
|
+
'Run: npm run build',
|
|
416
|
+
'All must pass before proceeding',
|
|
417
|
+
],
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
step: 3,
|
|
421
|
+
name: 'integration_review',
|
|
422
|
+
description: 'Review cross-epic integration',
|
|
423
|
+
tools: [],
|
|
424
|
+
tips: [
|
|
425
|
+
'Check APIs work together',
|
|
426
|
+
'Verify data flows correctly',
|
|
427
|
+
'Look for regressions from epic interactions',
|
|
428
|
+
],
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
step: 4,
|
|
432
|
+
name: 'documentation_check',
|
|
433
|
+
description: 'Verify all docs are updated',
|
|
434
|
+
tools: [],
|
|
435
|
+
tips: [
|
|
436
|
+
'API documentation updated',
|
|
437
|
+
'README changes if needed',
|
|
438
|
+
'Architecture docs if changed',
|
|
439
|
+
],
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
step: 5,
|
|
443
|
+
name: 'final_commit',
|
|
444
|
+
description: 'Commit any cleanup changes',
|
|
445
|
+
tools: [],
|
|
446
|
+
tips: [
|
|
447
|
+
'Stage final changes',
|
|
448
|
+
'Commit with spec reference',
|
|
449
|
+
'Only if cleanup needed',
|
|
450
|
+
],
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
step: 6,
|
|
454
|
+
name: 'mark_spec_done',
|
|
455
|
+
description: 'Update specification status',
|
|
456
|
+
tools: ['specification.update'],
|
|
457
|
+
tips: [
|
|
458
|
+
'Set status to done',
|
|
459
|
+
'This marks the specification complete',
|
|
460
|
+
],
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
step: 7,
|
|
464
|
+
name: 'create_pr',
|
|
465
|
+
description: 'Create pull request with full context',
|
|
466
|
+
tools: ['link.pull_request'],
|
|
467
|
+
tips: [
|
|
468
|
+
'Title references specification',
|
|
469
|
+
'Description includes all epics and key tickets',
|
|
470
|
+
'Link to specification for context',
|
|
471
|
+
'Request reviewers if configured',
|
|
472
|
+
],
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
step: 8,
|
|
476
|
+
name: 'end_session',
|
|
477
|
+
description: 'Close the implementation session',
|
|
478
|
+
tools: ['session.end'],
|
|
479
|
+
tips: [
|
|
480
|
+
'Clean up the session',
|
|
481
|
+
'Session lock is released',
|
|
482
|
+
'Specification is finalized',
|
|
483
|
+
],
|
|
484
|
+
},
|
|
485
|
+
],
|
|
486
|
+
antiPatterns: [
|
|
487
|
+
'NEVER create PR with failing tests',
|
|
488
|
+
'NEVER skip documentation check',
|
|
489
|
+
'NEVER forget to link PR to specification',
|
|
490
|
+
'NEVER leave session open after PR',
|
|
491
|
+
],
|
|
492
|
+
};
|
|
493
|
+
/**
|
|
494
|
+
* Get a workflow definition by type
|
|
495
|
+
*/
|
|
496
|
+
export function getWorkflowDefinition(workflowType) {
|
|
497
|
+
switch (workflowType) {
|
|
498
|
+
case 'creation':
|
|
499
|
+
return CREATION_WORKFLOW;
|
|
500
|
+
case 'implementation':
|
|
501
|
+
return IMPLEMENTATION_WORKFLOW;
|
|
502
|
+
case 'review':
|
|
503
|
+
return REVIEW_WORKFLOW;
|
|
504
|
+
case 'finalize':
|
|
505
|
+
return FINALIZE_WORKFLOW;
|
|
506
|
+
default:
|
|
507
|
+
return null;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
export const WORKFLOW_TYPES = ['creation', 'implementation', 'review', 'finalize'];
|
|
511
|
+
//# sourceMappingURL=workflow-definitions.js.map
|