@specforge/mcp 2.2.0 → 2.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.
- package/dist/cli/templates/content/sf-create-epics.d.ts +1 -1
- package/dist/cli/templates/content/sf-create-epics.d.ts.map +1 -1
- package/dist/cli/templates/content/sf-create-epics.js +72 -13
- package/dist/cli/templates/content/sf-create-epics.js.map +1 -1
- package/dist/cli/templates/content/sf-create-spec.d.ts +1 -1
- package/dist/cli/templates/content/sf-create-spec.d.ts.map +1 -1
- package/dist/cli/templates/content/sf-create-spec.js +91 -22
- package/dist/cli/templates/content/sf-create-spec.js.map +1 -1
- package/dist/cli/templates/content/sf-create-tickets.d.ts +1 -1
- package/dist/cli/templates/content/sf-create-tickets.d.ts.map +1 -1
- package/dist/cli/templates/content/sf-create-tickets.js +90 -18
- package/dist/cli/templates/content/sf-create-tickets.js.map +1 -1
- package/dist/tools/core/epic.d.ts.map +1 -1
- package/dist/tools/core/epic.js +95 -11
- package/dist/tools/core/epic.js.map +1 -1
- package/dist/tools/core/specification.d.ts.map +1 -1
- package/dist/tools/core/specification.js +98 -9
- package/dist/tools/core/specification.js.map +1 -1
- package/dist/tools/core/ticket.d.ts.map +1 -1
- package/dist/tools/core/ticket.js +48 -11
- package/dist/tools/core/ticket.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Template for creating epics with epic-level patterns from plan phases.
|
|
5
5
|
*/
|
|
6
|
-
export declare const SF_CREATE_EPICS_CONTENT = "# Create Epics (SpecForge)\n\nCreate epics for a specification with
|
|
6
|
+
export declare const SF_CREATE_EPICS_CONTENT = "# Create Epics (SpecForge)\n\nCreate epics for a specification with objectives extracted from plan phases.\n\n## Arguments\n- `$ARGUMENTS` - Required: Specification ID\n\n## Task\n\n### 1. Get Specification\n\n**MCP Calls:**\n```typescript\nspecification({\n operation: 'get',\n specificationId: $ARGUMENTS,\n include: ['epics', 'patterns'] // Get existing epics and inherited patterns\n})\n```\n\n### 2. Read Original Plan\n\n**Logic:**\n- Locate original plan file from specification metadata\n- Parse plan phases/sections\n- Extract epic-level titles, descriptions, and objectives\n- Identify epic-specific technical details\n\n### 3. Create Epics\n\n**MCP Calls:**\n```typescript\n// For each phase/section in plan\nfor (const phase of phases) {\n await epic({\n operation: 'create',\n\n // === REQUIRED ===\n specificationId: $ARGUMENTS,\n title: phase.title,\n description: phase.description,\n objective: phase.objective, // Clear goal statement\n\n // === CORE (recommended) ===\n content: phase.fullContent, // Full markdown content\n scope: phase.scope, // What's in/out of scope\n priority: 'high', // high | medium | low\n tags: ['phase1', 'backend'],\n estimatedHours: 40,\n\n // === PLANNING ===\n goals: ['Implement X', 'Enable Y'],\n acceptanceCriteria: ['Feature X works', 'Tests pass'],\n guardrails: ['Do NOT break existing API'],\n constraints: ['Must be backward compatible'],\n assumptions: ['Database schema is stable'],\n risks: ['May require migration'],\n\n // === TECHNICAL ===\n architecture: 'Service layer with repository pattern',\n fileStructure: 'src/services/\\n user.service.ts\\n auth.service.ts',\n techStack: ['typescript', 'prisma'],\n dependencies: ['zod', '@prisma/client'],\n apiContracts: { endpoints: [{ path: '/api/users', method: 'POST' }] },\n\n // === PATTERN OVERRIDES (override spec-level patterns) ===\n sharedPatterns: {\n errorHandling: 'Custom error handling for this epic',\n validation: 'Use zod schemas'\n },\n additionalImports: [\n \"import { z } from 'zod'\",\n \"import { PrismaClient } from '@prisma/client'\"\n ],\n commonFiles: {\n 'types.ts': 'Shared types for this epic',\n 'utils.ts': 'Epic-specific utilities'\n }\n })\n}\n```\n\n### 4. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nEPICS CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSpecification: {title}\n\nCREATED EPICS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nE1 \u2502 {title} \u2502 {objective}\nE2 \u2502 {title} \u2502 {objective}\nE3 \u2502 {title} \u2502 {objective}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-tickets <epic-id> for each epic\n```\n\n## Field Reference\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| specificationId | \u2705 | Parent specification |\n| title | \u2705 | Epic title |\n| description | \u2705 | Epic description |\n| objective | \u2705 | Clear goal statement |\n| content | | Full markdown content |\n| scope | | In/out of scope |\n| goals | | Epic-specific goals |\n| guardrails | | What NOT to do |\n| architecture | | Epic-level design |\n| sharedPatterns | | Override spec patterns |\n| additionalImports | | Extra imports for tickets |\n\n## Notes\n- specificationId, title, description, and objective are required\n- sharedPatterns override specification-level patterns\n- additionalImports are added to spec-level commonImports\n- Use /sf-create-tickets for each epic after creation\n";
|
|
7
7
|
//# sourceMappingURL=sf-create-epics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sf-create-epics.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"sf-create-epics.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,uBAAuB,upJA0HnC,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export const SF_CREATE_EPICS_CONTENT = `# Create Epics (SpecForge)
|
|
7
7
|
|
|
8
|
-
Create epics for a specification with
|
|
8
|
+
Create epics for a specification with objectives extracted from plan phases.
|
|
9
9
|
|
|
10
10
|
## Arguments
|
|
11
11
|
- \`$ARGUMENTS\` - Required: Specification ID
|
|
@@ -16,7 +16,11 @@ Create epics for a specification with patterns extracted from plan phases.
|
|
|
16
16
|
|
|
17
17
|
**MCP Calls:**
|
|
18
18
|
\`\`\`typescript
|
|
19
|
-
|
|
19
|
+
specification({
|
|
20
|
+
operation: 'get',
|
|
21
|
+
specificationId: $ARGUMENTS,
|
|
22
|
+
include: ['epics', 'patterns'] // Get existing epics and inherited patterns
|
|
23
|
+
})
|
|
20
24
|
\`\`\`
|
|
21
25
|
|
|
22
26
|
### 2. Read Original Plan
|
|
@@ -24,8 +28,8 @@ get_specification($ARGUMENTS)
|
|
|
24
28
|
**Logic:**
|
|
25
29
|
- Locate original plan file from specification metadata
|
|
26
30
|
- Parse plan phases/sections
|
|
27
|
-
- Extract epic-level descriptions
|
|
28
|
-
- Identify
|
|
31
|
+
- Extract epic-level titles, descriptions, and objectives
|
|
32
|
+
- Identify epic-specific technical details
|
|
29
33
|
|
|
30
34
|
### 3. Create Epics
|
|
31
35
|
|
|
@@ -33,12 +37,50 @@ get_specification($ARGUMENTS)
|
|
|
33
37
|
\`\`\`typescript
|
|
34
38
|
// For each phase/section in plan
|
|
35
39
|
for (const phase of phases) {
|
|
36
|
-
await
|
|
40
|
+
await epic({
|
|
41
|
+
operation: 'create',
|
|
42
|
+
|
|
43
|
+
// === REQUIRED ===
|
|
37
44
|
specificationId: $ARGUMENTS,
|
|
38
45
|
title: phase.title,
|
|
39
46
|
description: phase.description,
|
|
40
|
-
|
|
41
|
-
|
|
47
|
+
objective: phase.objective, // Clear goal statement
|
|
48
|
+
|
|
49
|
+
// === CORE (recommended) ===
|
|
50
|
+
content: phase.fullContent, // Full markdown content
|
|
51
|
+
scope: phase.scope, // What's in/out of scope
|
|
52
|
+
priority: 'high', // high | medium | low
|
|
53
|
+
tags: ['phase1', 'backend'],
|
|
54
|
+
estimatedHours: 40,
|
|
55
|
+
|
|
56
|
+
// === PLANNING ===
|
|
57
|
+
goals: ['Implement X', 'Enable Y'],
|
|
58
|
+
acceptanceCriteria: ['Feature X works', 'Tests pass'],
|
|
59
|
+
guardrails: ['Do NOT break existing API'],
|
|
60
|
+
constraints: ['Must be backward compatible'],
|
|
61
|
+
assumptions: ['Database schema is stable'],
|
|
62
|
+
risks: ['May require migration'],
|
|
63
|
+
|
|
64
|
+
// === TECHNICAL ===
|
|
65
|
+
architecture: 'Service layer with repository pattern',
|
|
66
|
+
fileStructure: 'src/services/\\n user.service.ts\\n auth.service.ts',
|
|
67
|
+
techStack: ['typescript', 'prisma'],
|
|
68
|
+
dependencies: ['zod', '@prisma/client'],
|
|
69
|
+
apiContracts: { endpoints: [{ path: '/api/users', method: 'POST' }] },
|
|
70
|
+
|
|
71
|
+
// === PATTERN OVERRIDES (override spec-level patterns) ===
|
|
72
|
+
sharedPatterns: {
|
|
73
|
+
errorHandling: 'Custom error handling for this epic',
|
|
74
|
+
validation: 'Use zod schemas'
|
|
75
|
+
},
|
|
76
|
+
additionalImports: [
|
|
77
|
+
"import { z } from 'zod'",
|
|
78
|
+
"import { PrismaClient } from '@prisma/client'"
|
|
79
|
+
],
|
|
80
|
+
commonFiles: {
|
|
81
|
+
'types.ts': 'Shared types for this epic',
|
|
82
|
+
'utils.ts': 'Epic-specific utilities'
|
|
83
|
+
}
|
|
42
84
|
})
|
|
43
85
|
}
|
|
44
86
|
\`\`\`
|
|
@@ -54,17 +96,34 @@ Specification: {title}
|
|
|
54
96
|
|
|
55
97
|
CREATED EPICS
|
|
56
98
|
─────────────────────────────────────────────────────────────────
|
|
57
|
-
E1 │ {title} │ {
|
|
58
|
-
E2 │ {title} │ {
|
|
59
|
-
E3 │ {title} │ {
|
|
99
|
+
E1 │ {title} │ {objective}
|
|
100
|
+
E2 │ {title} │ {objective}
|
|
101
|
+
E3 │ {title} │ {objective}
|
|
60
102
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
61
103
|
|
|
62
104
|
Next: Run /sf-create-tickets <epic-id> for each epic
|
|
63
105
|
\`\`\`
|
|
64
106
|
|
|
107
|
+
## Field Reference
|
|
108
|
+
|
|
109
|
+
| Field | Required | Description |
|
|
110
|
+
|-------|----------|-------------|
|
|
111
|
+
| specificationId | ✅ | Parent specification |
|
|
112
|
+
| title | ✅ | Epic title |
|
|
113
|
+
| description | ✅ | Epic description |
|
|
114
|
+
| objective | ✅ | Clear goal statement |
|
|
115
|
+
| content | | Full markdown content |
|
|
116
|
+
| scope | | In/out of scope |
|
|
117
|
+
| goals | | Epic-specific goals |
|
|
118
|
+
| guardrails | | What NOT to do |
|
|
119
|
+
| architecture | | Epic-level design |
|
|
120
|
+
| sharedPatterns | | Override spec patterns |
|
|
121
|
+
| additionalImports | | Extra imports for tickets |
|
|
122
|
+
|
|
65
123
|
## Notes
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
124
|
+
- specificationId, title, description, and objective are required
|
|
125
|
+
- sharedPatterns override specification-level patterns
|
|
126
|
+
- additionalImports are added to spec-level commonImports
|
|
127
|
+
- Use /sf-create-tickets for each epic after creation
|
|
69
128
|
`;
|
|
70
129
|
//# sourceMappingURL=sf-create-epics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sf-create-epics.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG
|
|
1
|
+
{"version":3,"file":"sf-create-epics.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HtC,CAAC"}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Template for creating a SpecForge specification with patterns from a plan.
|
|
5
5
|
*/
|
|
6
|
-
export declare const SF_CREATE_SPEC_CONTENT = "# Create Specification (SpecForge)\n\nCreate a SpecForge specification structure with
|
|
6
|
+
export declare const SF_CREATE_SPEC_CONTENT = "# Create Specification (SpecForge)\n\nCreate a SpecForge specification structure with metadata extracted from a plan document.\n\n## Arguments\n- `$ARGUMENTS` - Required: Path to plan markdown file\n\n## Task\n\n### 1. Read and Analyze Plan\n\n**Logic:**\n- Read file at $ARGUMENTS\n- Extract specification title and description\n- Identify priority level (high/medium/low)\n- Parse tags from plan categories/themes\n- Extract goals, requirements, and constraints\n\n### 2. Create Specification\n\n**MCP Calls:**\n```typescript\nspecification({\n operation: 'create',\n\n // === REQUIRED ===\n projectId: currentProjectId,\n title: extractedTitle,\n\n // === CORE (recommended) ===\n description: shortSummary, // 2-3 sentence summary\n content: fullMarkdownContent, // Full markdown content\n background: problemContext, // Why this exists\n scope: scopeDefinition, // What's in/out of scope\n priority: 'high', // high | medium | low\n tags: ['feature', 'api'],\n estimatedHours: 40,\n targetAudience: 'developers',\n\n // === GOALS & REQUIREMENTS ===\n goals: ['Enable X', 'Improve Y'],\n requirements: ['Must do A', 'Must support B'],\n nonFunctionalRequirements: ['< 100ms latency', '99.9% uptime'],\n acceptanceCriteria: ['Users can X', 'System handles Y'],\n successMetrics: ['50% reduction in Z'],\n\n // === GUARDRAILS & RISKS ===\n guardrails: ['Do NOT modify X', 'Avoid pattern Y'],\n constraints: ['Must use existing auth', 'Budget limit'],\n assumptions: ['Users have Node 18+'],\n risks: ['Third-party API may change'],\n\n // === TECHNICAL ===\n architecture: 'Microservices with event-driven communication',\n fileStructure: 'src/\\n components/\\n services/\\n utils/',\n techStack: ['typescript', 'react', 'node'],\n dependencies: ['@aws-sdk/client-s3', 'zod'],\n apiContracts: { endpoints: [{ path: '/api/v1/users', method: 'GET' }] },\n\n // === PATTERN INHERITANCE (for epics/tickets) ===\n codeStandards: {\n errorHandling: 'Use Result<T, E> pattern',\n naming: 'camelCase for functions, PascalCase for types'\n },\n commonImports: [\n \"import { logger } from '@/lib/logger'\",\n \"import { db } from '@/lib/db'\"\n ],\n returnTypes: {\n success: '{ success: true, data: T }',\n error: '{ success: false, error: string }'\n },\n\n // === VALIDATION (for CI/CD) ===\n validationCommands: {\n test: 'npm test',\n lint: 'npm run lint',\n build: 'npm run build',\n typeCheck: 'npm run typecheck'\n },\n workingDirectory: './src',\n outputDirectory: './dist'\n})\n```\n\n### 3. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nSPECIFICATION CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nTitle: {title}\nID: {specificationId}\nPriority: {priority}\n\nDESCRIPTION\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n{description}\n\nTAGS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n{tags}\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nNext: Run /sf-create-epics {specificationId} to create epics\n```\n\n## Field Reference\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| projectId | \u2705 | Project to create spec in |\n| title | \u2705 | Specification title |\n| description | | Short summary |\n| content | | Full markdown content |\n| background | | Problem context |\n| scope | | In/out of scope |\n| goals | | Business objectives |\n| requirements | | Functional requirements |\n| guardrails | | What NOT to do |\n| architecture | | System design |\n| techStack | | Technologies used |\n| codeStandards | | Inherited by epics/tickets |\n\n## Notes\n- Only projectId and title are required\n- codeStandards, commonImports, returnTypes are inherited by child epics/tickets\n- Use /sf-create-epics to add epics after creation\n";
|
|
7
7
|
//# sourceMappingURL=sf-create-spec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sf-create-spec.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"sf-create-spec.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,sBAAsB,wsKAiIlC,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export const SF_CREATE_SPEC_CONTENT = `# Create Specification (SpecForge)
|
|
7
7
|
|
|
8
|
-
Create a SpecForge specification structure with
|
|
8
|
+
Create a SpecForge specification structure with metadata extracted from a plan document.
|
|
9
9
|
|
|
10
10
|
## Arguments
|
|
11
11
|
- \`$ARGUMENTS\` - Required: Path to plan markdown file
|
|
@@ -16,21 +16,75 @@ Create a SpecForge specification structure with patterns extracted from a plan d
|
|
|
16
16
|
|
|
17
17
|
**Logic:**
|
|
18
18
|
- Read file at $ARGUMENTS
|
|
19
|
-
- Extract specification
|
|
20
|
-
- Identify
|
|
21
|
-
- Parse
|
|
22
|
-
- Extract
|
|
19
|
+
- Extract specification title and description
|
|
20
|
+
- Identify priority level (high/medium/low)
|
|
21
|
+
- Parse tags from plan categories/themes
|
|
22
|
+
- Extract goals, requirements, and constraints
|
|
23
23
|
|
|
24
24
|
### 2. Create Specification
|
|
25
25
|
|
|
26
26
|
**MCP Calls:**
|
|
27
27
|
\`\`\`typescript
|
|
28
|
-
|
|
28
|
+
specification({
|
|
29
|
+
operation: 'create',
|
|
30
|
+
|
|
31
|
+
// === REQUIRED ===
|
|
32
|
+
projectId: currentProjectId,
|
|
29
33
|
title: extractedTitle,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
|
|
35
|
+
// === CORE (recommended) ===
|
|
36
|
+
description: shortSummary, // 2-3 sentence summary
|
|
37
|
+
content: fullMarkdownContent, // Full markdown content
|
|
38
|
+
background: problemContext, // Why this exists
|
|
39
|
+
scope: scopeDefinition, // What's in/out of scope
|
|
40
|
+
priority: 'high', // high | medium | low
|
|
41
|
+
tags: ['feature', 'api'],
|
|
42
|
+
estimatedHours: 40,
|
|
43
|
+
targetAudience: 'developers',
|
|
44
|
+
|
|
45
|
+
// === GOALS & REQUIREMENTS ===
|
|
46
|
+
goals: ['Enable X', 'Improve Y'],
|
|
47
|
+
requirements: ['Must do A', 'Must support B'],
|
|
48
|
+
nonFunctionalRequirements: ['< 100ms latency', '99.9% uptime'],
|
|
49
|
+
acceptanceCriteria: ['Users can X', 'System handles Y'],
|
|
50
|
+
successMetrics: ['50% reduction in Z'],
|
|
51
|
+
|
|
52
|
+
// === GUARDRAILS & RISKS ===
|
|
53
|
+
guardrails: ['Do NOT modify X', 'Avoid pattern Y'],
|
|
54
|
+
constraints: ['Must use existing auth', 'Budget limit'],
|
|
55
|
+
assumptions: ['Users have Node 18+'],
|
|
56
|
+
risks: ['Third-party API may change'],
|
|
57
|
+
|
|
58
|
+
// === TECHNICAL ===
|
|
59
|
+
architecture: 'Microservices with event-driven communication',
|
|
60
|
+
fileStructure: 'src/\\n components/\\n services/\\n utils/',
|
|
61
|
+
techStack: ['typescript', 'react', 'node'],
|
|
62
|
+
dependencies: ['@aws-sdk/client-s3', 'zod'],
|
|
63
|
+
apiContracts: { endpoints: [{ path: '/api/v1/users', method: 'GET' }] },
|
|
64
|
+
|
|
65
|
+
// === PATTERN INHERITANCE (for epics/tickets) ===
|
|
66
|
+
codeStandards: {
|
|
67
|
+
errorHandling: 'Use Result<T, E> pattern',
|
|
68
|
+
naming: 'camelCase for functions, PascalCase for types'
|
|
69
|
+
},
|
|
70
|
+
commonImports: [
|
|
71
|
+
"import { logger } from '@/lib/logger'",
|
|
72
|
+
"import { db } from '@/lib/db'"
|
|
73
|
+
],
|
|
74
|
+
returnTypes: {
|
|
75
|
+
success: '{ success: true, data: T }',
|
|
76
|
+
error: '{ success: false, error: string }'
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
// === VALIDATION (for CI/CD) ===
|
|
80
|
+
validationCommands: {
|
|
81
|
+
test: 'npm test',
|
|
82
|
+
lint: 'npm run lint',
|
|
83
|
+
build: 'npm run build',
|
|
84
|
+
typeCheck: 'npm run typecheck'
|
|
85
|
+
},
|
|
86
|
+
workingDirectory: './src',
|
|
87
|
+
outputDirectory: './dist'
|
|
34
88
|
})
|
|
35
89
|
\`\`\`
|
|
36
90
|
|
|
@@ -41,27 +95,42 @@ create_specification({
|
|
|
41
95
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
42
96
|
SPECIFICATION CREATED
|
|
43
97
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
44
|
-
Title:
|
|
45
|
-
ID:
|
|
98
|
+
Title: {title}
|
|
99
|
+
ID: {specificationId}
|
|
100
|
+
Priority: {priority}
|
|
46
101
|
|
|
47
|
-
|
|
102
|
+
DESCRIPTION
|
|
48
103
|
─────────────────────────────────────────────────────────────────
|
|
49
|
-
|
|
50
|
-
• {pattern2}
|
|
51
|
-
• {pattern3}
|
|
104
|
+
{description}
|
|
52
105
|
|
|
53
|
-
|
|
106
|
+
TAGS
|
|
54
107
|
─────────────────────────────────────────────────────────────────
|
|
55
|
-
|
|
56
|
-
• {guardrail2}
|
|
108
|
+
{tags}
|
|
57
109
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
58
110
|
|
|
59
111
|
Next: Run /sf-create-epics {specificationId} to create epics
|
|
60
112
|
\`\`\`
|
|
61
113
|
|
|
114
|
+
## Field Reference
|
|
115
|
+
|
|
116
|
+
| Field | Required | Description |
|
|
117
|
+
|-------|----------|-------------|
|
|
118
|
+
| projectId | ✅ | Project to create spec in |
|
|
119
|
+
| title | ✅ | Specification title |
|
|
120
|
+
| description | | Short summary |
|
|
121
|
+
| content | | Full markdown content |
|
|
122
|
+
| background | | Problem context |
|
|
123
|
+
| scope | | In/out of scope |
|
|
124
|
+
| goals | | Business objectives |
|
|
125
|
+
| requirements | | Functional requirements |
|
|
126
|
+
| guardrails | | What NOT to do |
|
|
127
|
+
| architecture | | System design |
|
|
128
|
+
| techStack | | Technologies used |
|
|
129
|
+
| codeStandards | | Inherited by epics/tickets |
|
|
130
|
+
|
|
62
131
|
## Notes
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
- Use /sf-create-epics to add epics
|
|
132
|
+
- Only projectId and title are required
|
|
133
|
+
- codeStandards, commonImports, returnTypes are inherited by child epics/tickets
|
|
134
|
+
- Use /sf-create-epics to add epics after creation
|
|
66
135
|
`;
|
|
67
136
|
//# sourceMappingURL=sf-create-spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sf-create-spec.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG
|
|
1
|
+
{"version":3,"file":"sf-create-spec.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiIrC,CAAC"}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Template for creating detailed tickets individually with full implementation context.
|
|
5
5
|
*/
|
|
6
|
-
export declare const SF_CREATE_TICKETS_CONTENT = "# Create Tickets (SpecForge)\n\nCreate detailed tickets for an epic with full implementation context.\n\n## Arguments\n- `$ARGUMENTS` - Required: Epic ID\n\n## Task\n\n### 1. Get Epic Context\n\n**MCP Calls:**\n```typescript\
|
|
6
|
+
export declare const SF_CREATE_TICKETS_CONTENT = "# Create Tickets (SpecForge)\n\nCreate detailed tickets for an epic with full implementation context.\n\n## Arguments\n- `$ARGUMENTS` - Required: Epic ID\n\n## Task\n\n### 1. Get Epic Context\n\n**MCP Calls:**\n```typescript\nepic({\n operation: 'get',\n epicId: $ARGUMENTS,\n include: ['tickets', 'specification'] // Get existing tickets and parent spec\n})\n```\n\n### 2. Extract Ticket Definitions\n\n**Logic:**\n- Read epic description and objective\n- Parse task breakdown from epic content\n- Determine complexity and dependencies\n- Extract acceptance criteria for each ticket\n\n### 3. Create Tickets\n\n**MCP Calls:**\n```typescript\n// For each task in epic\nfor (const task of tasks) {\n await ticket({\n operation: 'create',\n\n // === REQUIRED ===\n epicId: $ARGUMENTS,\n title: task.title,\n\n // === CORE (recommended) ===\n description: task.description,\n priority: 'high', // high | medium | low\n complexity: 'medium', // small | medium | large | xlarge\n estimatedHours: 4,\n tags: ['feature', 'api'],\n notes: 'Watch out for edge case X', // Warnings, considerations\n\n // === ACCEPTANCE CRITERIA ===\n acceptanceCriteria: [\n 'Function returns correct result for valid input',\n 'Function throws error for invalid input',\n 'Unit tests cover all branches'\n ],\n\n // === IMPLEMENTATION GUIDANCE ===\n implementation: {\n filesToCreate: ['src/services/user.service.ts'],\n filesToModify: ['src/index.ts'],\n steps: [\n 'Create UserService class',\n 'Implement createUser method',\n 'Add validation with zod',\n 'Write unit tests'\n ],\n testing: 'Use vitest with mocked database'\n },\n technicalDetails: {\n approach: 'Repository pattern with dependency injection',\n stack: ['typescript', 'prisma', 'zod'],\n endpoints: ['/api/users POST'],\n databaseChanges: ['Add users table']\n },\n\n // === CODE REFERENCES ===\n codeReferences: [{\n name: 'createUser',\n language: 'typescript',\n code: `async function createUser(data: CreateUserInput): Promise<User> {\n const validated = createUserSchema.parse(data);\n return await db.user.create({ data: validated });\n}`\n }],\n typeReferences: [{\n name: 'CreateUserInput',\n definition: `interface CreateUserInput {\n email: string;\n name: string;\n role?: 'admin' | 'user';\n}`\n }],\n\n // === DEPENDENCIES ===\n dependsOn: ['ticket-id-1', 'ticket-id-2'] // Must complete these first\n })\n}\n```\n\n### 4. Display Creation Results\n\n**Output:**\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nTICKETS CREATED\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nEpic: E{n} - {epicTitle}\n\nCREATED TICKETS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nE{n}-T1 \u2502 {title} \u2502 {complexity} \u2502 ready\nE{n}-T2 \u2502 {title} \u2502 {complexity} \u2502 pending (depends on T1)\nE{n}-T3 \u2502 {title} \u2502 {complexity} \u2502 ready\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nTotal: {ticketCount} tickets created\n\nNext: Run /sf-status to see overall progress\n```\n\n## Field Reference\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| epicId | \u2705 | Parent epic |\n| title | \u2705 | Ticket title |\n| description | | What to implement |\n| complexity | | small \\| medium \\| large \\| xlarge |\n| acceptanceCriteria | | Success criteria (array of strings) |\n| implementation | | Steps, files to create/modify |\n| technicalDetails | | Approach, stack, endpoints |\n| codeReferences | | Code snippets to guide implementation |\n| typeReferences | | Type definitions to implement |\n| dependsOn | | Ticket IDs that must complete first |\n| notes | | Warnings, edge cases, considerations |\n\n## Notes\n- Only epicId and title are required\n- Tickets with dependsOn start as 'pending', others as 'ready'\n- codeReferences and typeReferences provide implementation guidance\n- Use /sf-next to start working on ready tickets\n";
|
|
7
7
|
//# sourceMappingURL=sf-create-tickets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sf-create-tickets.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-tickets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"sf-create-tickets.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-tickets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,yBAAyB,4kKA6IrC,CAAC"}
|
|
@@ -16,18 +16,20 @@ Create detailed tickets for an epic with full implementation context.
|
|
|
16
16
|
|
|
17
17
|
**MCP Calls:**
|
|
18
18
|
\`\`\`typescript
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
epic({
|
|
20
|
+
operation: 'get',
|
|
21
|
+
epicId: $ARGUMENTS,
|
|
22
|
+
include: ['tickets', 'specification'] // Get existing tickets and parent spec
|
|
23
|
+
})
|
|
21
24
|
\`\`\`
|
|
22
25
|
|
|
23
26
|
### 2. Extract Ticket Definitions
|
|
24
27
|
|
|
25
28
|
**Logic:**
|
|
26
|
-
- Read epic description and
|
|
27
|
-
- Parse task breakdown
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
- Add implementation guidance
|
|
29
|
+
- Read epic description and objective
|
|
30
|
+
- Parse task breakdown from epic content
|
|
31
|
+
- Determine complexity and dependencies
|
|
32
|
+
- Extract acceptance criteria for each ticket
|
|
31
33
|
|
|
32
34
|
### 3. Create Tickets
|
|
33
35
|
|
|
@@ -35,14 +37,67 @@ get_specification(epic.specificationId)
|
|
|
35
37
|
\`\`\`typescript
|
|
36
38
|
// For each task in epic
|
|
37
39
|
for (const task of tasks) {
|
|
38
|
-
await
|
|
40
|
+
await ticket({
|
|
41
|
+
operation: 'create',
|
|
42
|
+
|
|
43
|
+
// === REQUIRED ===
|
|
39
44
|
epicId: $ARGUMENTS,
|
|
40
45
|
title: task.title,
|
|
46
|
+
|
|
47
|
+
// === CORE (recommended) ===
|
|
41
48
|
description: task.description,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
priority: 'high', // high | medium | low
|
|
50
|
+
complexity: 'medium', // small | medium | large | xlarge
|
|
51
|
+
estimatedHours: 4,
|
|
52
|
+
tags: ['feature', 'api'],
|
|
53
|
+
notes: 'Watch out for edge case X', // Warnings, considerations
|
|
54
|
+
|
|
55
|
+
// === ACCEPTANCE CRITERIA ===
|
|
56
|
+
acceptanceCriteria: [
|
|
57
|
+
'Function returns correct result for valid input',
|
|
58
|
+
'Function throws error for invalid input',
|
|
59
|
+
'Unit tests cover all branches'
|
|
60
|
+
],
|
|
61
|
+
|
|
62
|
+
// === IMPLEMENTATION GUIDANCE ===
|
|
63
|
+
implementation: {
|
|
64
|
+
filesToCreate: ['src/services/user.service.ts'],
|
|
65
|
+
filesToModify: ['src/index.ts'],
|
|
66
|
+
steps: [
|
|
67
|
+
'Create UserService class',
|
|
68
|
+
'Implement createUser method',
|
|
69
|
+
'Add validation with zod',
|
|
70
|
+
'Write unit tests'
|
|
71
|
+
],
|
|
72
|
+
testing: 'Use vitest with mocked database'
|
|
73
|
+
},
|
|
74
|
+
technicalDetails: {
|
|
75
|
+
approach: 'Repository pattern with dependency injection',
|
|
76
|
+
stack: ['typescript', 'prisma', 'zod'],
|
|
77
|
+
endpoints: ['/api/users POST'],
|
|
78
|
+
databaseChanges: ['Add users table']
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
// === CODE REFERENCES ===
|
|
82
|
+
codeReferences: [{
|
|
83
|
+
name: 'createUser',
|
|
84
|
+
language: 'typescript',
|
|
85
|
+
code: \`async function createUser(data: CreateUserInput): Promise<User> {
|
|
86
|
+
const validated = createUserSchema.parse(data);
|
|
87
|
+
return await db.user.create({ data: validated });
|
|
88
|
+
}\`
|
|
89
|
+
}],
|
|
90
|
+
typeReferences: [{
|
|
91
|
+
name: 'CreateUserInput',
|
|
92
|
+
definition: \`interface CreateUserInput {
|
|
93
|
+
email: string;
|
|
94
|
+
name: string;
|
|
95
|
+
role?: 'admin' | 'user';
|
|
96
|
+
}\`
|
|
97
|
+
}],
|
|
98
|
+
|
|
99
|
+
// === DEPENDENCIES ===
|
|
100
|
+
dependsOn: ['ticket-id-1', 'ticket-id-2'] // Must complete these first
|
|
46
101
|
})
|
|
47
102
|
}
|
|
48
103
|
\`\`\`
|
|
@@ -58,9 +113,9 @@ Epic: E{n} - {epicTitle}
|
|
|
58
113
|
|
|
59
114
|
CREATED TICKETS
|
|
60
115
|
─────────────────────────────────────────────────────────────────
|
|
61
|
-
E{n}-T1 │ {title} │ {complexity}
|
|
62
|
-
E{n}-T2 │ {title} │ {complexity} │
|
|
63
|
-
E{n}-T3 │ {title} │ {complexity}
|
|
116
|
+
E{n}-T1 │ {title} │ {complexity} │ ready
|
|
117
|
+
E{n}-T2 │ {title} │ {complexity} │ pending (depends on T1)
|
|
118
|
+
E{n}-T3 │ {title} │ {complexity} │ ready
|
|
64
119
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
65
120
|
|
|
66
121
|
Total: {ticketCount} tickets created
|
|
@@ -68,9 +123,26 @@ Total: {ticketCount} tickets created
|
|
|
68
123
|
Next: Run /sf-status to see overall progress
|
|
69
124
|
\`\`\`
|
|
70
125
|
|
|
126
|
+
## Field Reference
|
|
127
|
+
|
|
128
|
+
| Field | Required | Description |
|
|
129
|
+
|-------|----------|-------------|
|
|
130
|
+
| epicId | ✅ | Parent epic |
|
|
131
|
+
| title | ✅ | Ticket title |
|
|
132
|
+
| description | | What to implement |
|
|
133
|
+
| complexity | | small \\| medium \\| large \\| xlarge |
|
|
134
|
+
| acceptanceCriteria | | Success criteria (array of strings) |
|
|
135
|
+
| implementation | | Steps, files to create/modify |
|
|
136
|
+
| technicalDetails | | Approach, stack, endpoints |
|
|
137
|
+
| codeReferences | | Code snippets to guide implementation |
|
|
138
|
+
| typeReferences | | Type definitions to implement |
|
|
139
|
+
| dependsOn | | Ticket IDs that must complete first |
|
|
140
|
+
| notes | | Warnings, edge cases, considerations |
|
|
141
|
+
|
|
71
142
|
## Notes
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
143
|
+
- Only epicId and title are required
|
|
144
|
+
- Tickets with dependsOn start as 'pending', others as 'ready'
|
|
145
|
+
- codeReferences and typeReferences provide implementation guidance
|
|
146
|
+
- Use /sf-next to start working on ready tickets
|
|
75
147
|
`;
|
|
76
148
|
//# sourceMappingURL=sf-create-tickets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sf-create-tickets.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-tickets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG
|
|
1
|
+
{"version":3,"file":"sf-create-tickets.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-create-tickets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6IxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epic.d.ts","sourceRoot":"","sources":["../../../src/tools/core/epic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"epic.d.ts","sourceRoot":"","sources":["../../../src/tools/core/epic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,IAmItB,CAAC;AAUF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAmG3F;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,oEAGrD"}
|
package/dist/tools/core/epic.js
CHANGED
|
@@ -20,14 +20,33 @@ export const epicTool = {
|
|
|
20
20
|
epicId: { type: 'string', description: 'Epic ID' },
|
|
21
21
|
// For create/list/lookup
|
|
22
22
|
specificationId: { type: 'string', description: 'Specification ID' },
|
|
23
|
-
// For create/update
|
|
24
|
-
title: { type: 'string' },
|
|
25
|
-
description: { type: 'string' },
|
|
26
|
-
objective: { type: 'string' },
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
// For create/update - core fields
|
|
24
|
+
title: { type: 'string', description: 'Epic title' },
|
|
25
|
+
description: { type: 'string', description: 'Epic description (required for create)' },
|
|
26
|
+
objective: { type: 'string', description: 'Epic objective/goal (required for create)' },
|
|
27
|
+
content: { type: 'string', description: 'Full epic content (markdown)' },
|
|
28
|
+
scope: { type: 'string', description: "What's in/out of scope for this epic" },
|
|
29
|
+
status: { type: 'string', enum: ['todo', 'in_progress', 'completed'] },
|
|
30
|
+
priority: { type: 'string', enum: ['high', 'medium', 'low'] },
|
|
31
|
+
tags: { type: 'array', items: { type: 'string' }, description: 'Categorization tags' },
|
|
32
|
+
estimatedHours: { type: 'number', description: 'Total estimated hours for epic' },
|
|
33
|
+
// Planning fields
|
|
34
|
+
goals: { type: 'array', items: { type: 'string' }, description: 'Epic-specific goals' },
|
|
35
|
+
acceptanceCriteria: { type: 'array', items: { type: 'string' }, description: 'Epic-level success criteria' },
|
|
36
|
+
guardrails: { type: 'array', items: { type: 'string' }, description: 'What NOT to do' },
|
|
37
|
+
risks: { type: 'array', items: { type: 'string' }, description: 'Risk factors' },
|
|
38
|
+
constraints: { type: 'array', items: { type: 'string' }, description: 'Technical/business constraints' },
|
|
39
|
+
assumptions: { type: 'array', items: { type: 'string' }, description: 'Key assumptions made' },
|
|
40
|
+
// Technical details
|
|
41
|
+
architecture: { type: 'string', description: 'Architectural approach for this epic' },
|
|
42
|
+
fileStructure: { type: 'string', description: 'File/folder organization' },
|
|
43
|
+
techStack: { type: 'array', items: { type: 'string' }, description: 'Technologies used' },
|
|
44
|
+
dependencies: { type: 'array', items: { type: 'string' }, description: 'Required packages/libraries' },
|
|
45
|
+
apiContracts: { type: 'object', description: 'API specifications (if epic defines APIs)' },
|
|
46
|
+
// Pattern Inheritance (F7-003)
|
|
47
|
+
sharedPatterns: { type: 'object', description: 'EpicSharedPatterns - overrides spec patterns' },
|
|
48
|
+
additionalImports: { type: 'array', items: { type: 'string' }, description: 'Additional imports for this epic' },
|
|
49
|
+
commonFiles: { type: 'object', description: 'EpicCommonFiles - shared files across tickets' },
|
|
31
50
|
// For create - inline tickets
|
|
32
51
|
tickets: {
|
|
33
52
|
type: 'array',
|
|
@@ -44,7 +63,7 @@ export const epicTool = {
|
|
|
44
63
|
},
|
|
45
64
|
priority: {
|
|
46
65
|
type: 'string',
|
|
47
|
-
enum: ['
|
|
66
|
+
enum: ['high', 'medium', 'low'],
|
|
48
67
|
description: 'Ticket priority',
|
|
49
68
|
},
|
|
50
69
|
tags: {
|
|
@@ -58,8 +77,34 @@ export const epicTool = {
|
|
|
58
77
|
},
|
|
59
78
|
acceptanceCriteria: {
|
|
60
79
|
type: 'array',
|
|
61
|
-
items: { type: '
|
|
62
|
-
description: 'Acceptance criteria
|
|
80
|
+
items: { type: 'string' },
|
|
81
|
+
description: 'Acceptance criteria strings',
|
|
82
|
+
},
|
|
83
|
+
notes: { type: 'string', description: 'Additional context, warnings, considerations' },
|
|
84
|
+
implementation: { type: 'object', description: 'Detailed implementation steps' },
|
|
85
|
+
technicalDetails: { type: 'object', description: 'Technical details object' },
|
|
86
|
+
codeReferences: {
|
|
87
|
+
type: 'array',
|
|
88
|
+
items: {
|
|
89
|
+
type: 'object',
|
|
90
|
+
properties: {
|
|
91
|
+
name: { type: 'string' },
|
|
92
|
+
code: { type: 'string' },
|
|
93
|
+
language: { type: 'string' },
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
description: 'Code snippets as references',
|
|
97
|
+
},
|
|
98
|
+
typeReferences: {
|
|
99
|
+
type: 'array',
|
|
100
|
+
items: {
|
|
101
|
+
type: 'object',
|
|
102
|
+
properties: {
|
|
103
|
+
name: { type: 'string' },
|
|
104
|
+
definition: { type: 'string' },
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
description: 'Type definitions as references',
|
|
63
108
|
},
|
|
64
109
|
dependsOn: {
|
|
65
110
|
type: 'array',
|
|
@@ -103,9 +148,29 @@ export function createEpicOperations(apiClient) {
|
|
|
103
148
|
title: args.title,
|
|
104
149
|
description: args.description,
|
|
105
150
|
objective: args.objective,
|
|
151
|
+
content: args.content,
|
|
152
|
+
scope: args.scope,
|
|
106
153
|
priority: args.priority,
|
|
107
154
|
tags: args.tags,
|
|
108
155
|
estimatedHours: args.estimatedHours,
|
|
156
|
+
// Planning fields
|
|
157
|
+
goals: args.goals,
|
|
158
|
+
acceptanceCriteria: args.acceptanceCriteria,
|
|
159
|
+
guardrails: args.guardrails,
|
|
160
|
+
risks: args.risks,
|
|
161
|
+
constraints: args.constraints,
|
|
162
|
+
assumptions: args.assumptions,
|
|
163
|
+
// Technical details
|
|
164
|
+
architecture: args.architecture,
|
|
165
|
+
fileStructure: args.fileStructure,
|
|
166
|
+
techStack: args.techStack,
|
|
167
|
+
dependencies: args.dependencies,
|
|
168
|
+
apiContracts: args.apiContracts,
|
|
169
|
+
// Pattern Inheritance
|
|
170
|
+
sharedPatterns: args.sharedPatterns,
|
|
171
|
+
additionalImports: args.additionalImports,
|
|
172
|
+
commonFiles: args.commonFiles,
|
|
173
|
+
// Inline tickets
|
|
109
174
|
tickets: args.tickets,
|
|
110
175
|
});
|
|
111
176
|
},
|
|
@@ -123,10 +188,29 @@ export function createEpicOperations(apiClient) {
|
|
|
123
188
|
title: args.title,
|
|
124
189
|
description: args.description,
|
|
125
190
|
objective: args.objective,
|
|
191
|
+
content: args.content,
|
|
192
|
+
scope: args.scope,
|
|
126
193
|
status: args.status,
|
|
127
194
|
priority: args.priority,
|
|
128
195
|
tags: args.tags,
|
|
129
196
|
estimatedHours: args.estimatedHours,
|
|
197
|
+
// Planning fields
|
|
198
|
+
goals: args.goals,
|
|
199
|
+
acceptanceCriteria: args.acceptanceCriteria,
|
|
200
|
+
guardrails: args.guardrails,
|
|
201
|
+
risks: args.risks,
|
|
202
|
+
constraints: args.constraints,
|
|
203
|
+
assumptions: args.assumptions,
|
|
204
|
+
// Technical details
|
|
205
|
+
architecture: args.architecture,
|
|
206
|
+
fileStructure: args.fileStructure,
|
|
207
|
+
techStack: args.techStack,
|
|
208
|
+
dependencies: args.dependencies,
|
|
209
|
+
apiContracts: args.apiContracts,
|
|
210
|
+
// Pattern Inheritance
|
|
211
|
+
sharedPatterns: args.sharedPatterns,
|
|
212
|
+
additionalImports: args.additionalImports,
|
|
213
|
+
commonFiles: args.commonFiles,
|
|
130
214
|
});
|
|
131
215
|
},
|
|
132
216
|
list: async (args, _userId) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epic.js","sourceRoot":"","sources":["../../../src/tools/core/epic.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAG7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE;;;;;uCAKwB;IACrC,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACnD,WAAW,EAAE,0BAA0B;aACxC;YACD,iBAAiB;YACjB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;YAClD,yBAAyB;YACzB,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACpE,
|
|
1
|
+
{"version":3,"file":"epic.js","sourceRoot":"","sources":["../../../src/tools/core/epic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specification.d.ts","sourceRoot":"","sources":["../../../src/tools/core/specification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"specification.d.ts","sourceRoot":"","sources":["../../../src/tools/core/specification.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,iBAAiB,EAAE,IAuE/B,CAAC;AAUF,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAiHpG;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,oEAG9D"}
|
|
@@ -20,15 +20,43 @@ export const specificationTool = {
|
|
|
20
20
|
specificationId: { type: 'string', description: 'Specification ID' },
|
|
21
21
|
// For create/list/import
|
|
22
22
|
projectId: { type: 'string', description: 'Project ID' },
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
specificationTypeId: { type: 'string', description: 'Specification type ID' },
|
|
24
|
+
// For create/update - core fields
|
|
25
|
+
title: { type: 'string', description: 'Specification title' },
|
|
26
|
+
description: { type: 'string', description: 'Short summary (2-3 sentences)' },
|
|
27
|
+
content: { type: 'string', description: 'Full markdown content' },
|
|
28
|
+
background: { type: 'string', description: 'Problem context and why this exists' },
|
|
29
|
+
scope: { type: 'string', description: "What's in/out of scope" },
|
|
30
|
+
status: { type: 'string', enum: ['draft', 'planning', 'ready', 'in_progress', 'completed'] },
|
|
31
|
+
priority: { type: 'string', enum: ['high', 'medium', 'low'] },
|
|
32
|
+
tags: { type: 'array', items: { type: 'string' }, description: 'Categorization tags' },
|
|
33
|
+
estimatedHours: { type: 'number', description: 'Total estimated effort' },
|
|
34
|
+
targetAudience: { type: 'string', description: 'Who this is for' },
|
|
35
|
+
// Goals & Requirements
|
|
36
|
+
goals: { type: 'array', items: { type: 'string' }, description: 'Business/user/technical objectives' },
|
|
37
|
+
requirements: { type: 'array', items: { type: 'string' }, description: 'Functional requirements' },
|
|
38
|
+
nonFunctionalRequirements: { type: 'array', items: { type: 'string' }, description: 'Performance, security, scalability' },
|
|
39
|
+
acceptanceCriteria: { type: 'array', items: { type: 'string' }, description: 'Success criteria for the spec' },
|
|
40
|
+
successMetrics: { type: 'array', items: { type: 'string' }, description: 'KPIs to measure success' },
|
|
41
|
+
// Guardrails & Constraints
|
|
42
|
+
guardrails: { type: 'array', items: { type: 'string' }, description: 'What NOT to do, anti-patterns' },
|
|
43
|
+
constraints: { type: 'array', items: { type: 'string' }, description: 'Technical/business constraints' },
|
|
44
|
+
assumptions: { type: 'array', items: { type: 'string' }, description: 'Key assumptions made' },
|
|
45
|
+
risks: { type: 'array', items: { type: 'string' }, description: 'Risk factors and mitigations' },
|
|
46
|
+
// Technical Details
|
|
47
|
+
architecture: { type: 'string', description: 'High-level architecture description' },
|
|
48
|
+
fileStructure: { type: 'string', description: 'Expected file/folder structure' },
|
|
49
|
+
techStack: { type: 'array', items: { type: 'string' }, description: 'Technologies to use' },
|
|
50
|
+
dependencies: { type: 'array', items: { type: 'string' }, description: 'External/internal dependencies' },
|
|
51
|
+
apiContracts: { type: 'object', description: 'API specifications (JSON)' },
|
|
52
|
+
// Pattern Inheritance (MI-05)
|
|
53
|
+
codeStandards: { type: 'object', description: 'Code standards: { errorHandling, naming, language, etc. }' },
|
|
54
|
+
commonImports: { type: 'array', items: { type: 'string' }, description: 'Common import statements' },
|
|
55
|
+
returnTypes: { type: 'object', description: 'Standard return type patterns' },
|
|
56
|
+
// Validation & Workflow
|
|
57
|
+
validationCommands: { type: 'object', description: 'Commands: { test, lint, build, typeCheck, custom }' },
|
|
58
|
+
workingDirectory: { type: 'string', description: 'Working directory for commands' },
|
|
59
|
+
outputDirectory: { type: 'string', description: 'Output directory for builds' },
|
|
32
60
|
// For list
|
|
33
61
|
filter: {
|
|
34
62
|
type: 'object',
|
|
@@ -57,10 +85,41 @@ export function createSpecificationOperations(apiClient) {
|
|
|
57
85
|
validateRequired(args, 'projectId', 'title');
|
|
58
86
|
return await apiClient.call('create_specification', {
|
|
59
87
|
projectId: args.projectId,
|
|
88
|
+
specificationTypeId: args.specificationTypeId,
|
|
60
89
|
title: args.title,
|
|
61
90
|
description: args.description,
|
|
91
|
+
content: args.content,
|
|
92
|
+
background: args.background,
|
|
93
|
+
scope: args.scope,
|
|
62
94
|
priority: args.priority,
|
|
63
95
|
tags: args.tags,
|
|
96
|
+
estimatedHours: args.estimatedHours,
|
|
97
|
+
targetAudience: args.targetAudience,
|
|
98
|
+
// Goals & Requirements
|
|
99
|
+
goals: args.goals,
|
|
100
|
+
requirements: args.requirements,
|
|
101
|
+
nonFunctionalRequirements: args.nonFunctionalRequirements,
|
|
102
|
+
acceptanceCriteria: args.acceptanceCriteria,
|
|
103
|
+
successMetrics: args.successMetrics,
|
|
104
|
+
// Guardrails & Constraints
|
|
105
|
+
guardrails: args.guardrails,
|
|
106
|
+
constraints: args.constraints,
|
|
107
|
+
assumptions: args.assumptions,
|
|
108
|
+
risks: args.risks,
|
|
109
|
+
// Technical Details
|
|
110
|
+
architecture: args.architecture,
|
|
111
|
+
fileStructure: args.fileStructure,
|
|
112
|
+
techStack: args.techStack,
|
|
113
|
+
dependencies: args.dependencies,
|
|
114
|
+
apiContracts: args.apiContracts,
|
|
115
|
+
// Pattern Inheritance
|
|
116
|
+
codeStandards: args.codeStandards,
|
|
117
|
+
commonImports: args.commonImports,
|
|
118
|
+
returnTypes: args.returnTypes,
|
|
119
|
+
// Validation & Workflow
|
|
120
|
+
validationCommands: args.validationCommands,
|
|
121
|
+
workingDirectory: args.workingDirectory,
|
|
122
|
+
outputDirectory: args.outputDirectory,
|
|
64
123
|
});
|
|
65
124
|
},
|
|
66
125
|
get: async (args, _userId) => {
|
|
@@ -76,9 +135,39 @@ export function createSpecificationOperations(apiClient) {
|
|
|
76
135
|
specificationId: args.specificationId,
|
|
77
136
|
title: args.title,
|
|
78
137
|
description: args.description,
|
|
138
|
+
content: args.content,
|
|
139
|
+
background: args.background,
|
|
140
|
+
scope: args.scope,
|
|
79
141
|
status: args.status,
|
|
80
142
|
priority: args.priority,
|
|
81
143
|
tags: args.tags,
|
|
144
|
+
estimatedHours: args.estimatedHours,
|
|
145
|
+
targetAudience: args.targetAudience,
|
|
146
|
+
// Goals & Requirements
|
|
147
|
+
goals: args.goals,
|
|
148
|
+
requirements: args.requirements,
|
|
149
|
+
nonFunctionalRequirements: args.nonFunctionalRequirements,
|
|
150
|
+
acceptanceCriteria: args.acceptanceCriteria,
|
|
151
|
+
successMetrics: args.successMetrics,
|
|
152
|
+
// Guardrails & Constraints
|
|
153
|
+
guardrails: args.guardrails,
|
|
154
|
+
constraints: args.constraints,
|
|
155
|
+
assumptions: args.assumptions,
|
|
156
|
+
risks: args.risks,
|
|
157
|
+
// Technical Details
|
|
158
|
+
architecture: args.architecture,
|
|
159
|
+
fileStructure: args.fileStructure,
|
|
160
|
+
techStack: args.techStack,
|
|
161
|
+
dependencies: args.dependencies,
|
|
162
|
+
apiContracts: args.apiContracts,
|
|
163
|
+
// Pattern Inheritance
|
|
164
|
+
codeStandards: args.codeStandards,
|
|
165
|
+
commonImports: args.commonImports,
|
|
166
|
+
returnTypes: args.returnTypes,
|
|
167
|
+
// Validation & Workflow
|
|
168
|
+
validationCommands: args.validationCommands,
|
|
169
|
+
workingDirectory: args.workingDirectory,
|
|
170
|
+
outputDirectory: args.outputDirectory,
|
|
82
171
|
});
|
|
83
172
|
},
|
|
84
173
|
import: async (args, _userId) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specification.js","sourceRoot":"","sources":["../../../src/tools/core/specification.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAGtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE;;;;;4BAKa;IAC1B,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;gBACnD,WAAW,EAAE,0BAA0B;aACxC;YACD,iBAAiB;YACjB,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACpE,yBAAyB;YACzB,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;YACxD,
|
|
1
|
+
{"version":3,"file":"specification.js","sourceRoot":"","sources":["../../../src/tools/core/specification.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket.d.ts","sourceRoot":"","sources":["../../../src/tools/core/ticket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"ticket.d.ts","sourceRoot":"","sources":["../../../src/tools/core/ticket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,IA0IxB,CAAC;AAUF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAqI7F;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,oEAGvD"}
|
|
@@ -22,14 +22,23 @@ export const ticketTool = {
|
|
|
22
22
|
ticketId: { type: 'string', description: 'Ticket ID' },
|
|
23
23
|
// For create
|
|
24
24
|
epicId: { type: 'string', description: 'Epic ID for create' },
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
status: { type: 'string', enum: ['pending', '
|
|
29
|
-
priority: { type: 'string', enum: ['
|
|
30
|
-
complexity: { type: 'string' },
|
|
31
|
-
estimatedHours: { type: 'number' },
|
|
32
|
-
tags: { type: 'array', items: { type: 'string' } },
|
|
25
|
+
// Core fields
|
|
26
|
+
title: { type: 'string', description: 'Ticket title' },
|
|
27
|
+
description: { type: 'string', description: 'Ticket description' },
|
|
28
|
+
status: { type: 'string', enum: ['pending', 'ready', 'active', 'done'] },
|
|
29
|
+
priority: { type: 'string', enum: ['high', 'medium', 'low'] },
|
|
30
|
+
complexity: { type: 'string', enum: ['small', 'medium', 'large', 'xlarge'] },
|
|
31
|
+
estimatedHours: { type: 'number', description: 'Estimated hours to complete' },
|
|
32
|
+
tags: { type: 'array', items: { type: 'string' }, description: 'Categorization tags' },
|
|
33
|
+
notes: { type: 'string', description: 'Additional context, warnings, considerations' },
|
|
34
|
+
// Implementation details
|
|
35
|
+
implementation: { type: 'object', description: 'Detailed implementation steps (JSON)' },
|
|
36
|
+
technicalDetails: { type: 'object', description: 'Technical details (JSON)' },
|
|
37
|
+
acceptanceCriteria: {
|
|
38
|
+
type: 'array',
|
|
39
|
+
items: { type: 'string' },
|
|
40
|
+
description: 'Acceptance criteria strings (will be converted to structured format)',
|
|
41
|
+
},
|
|
33
42
|
// Code and type references
|
|
34
43
|
codeReferences: {
|
|
35
44
|
type: 'array',
|
|
@@ -56,6 +65,16 @@ export const ticketTool = {
|
|
|
56
65
|
},
|
|
57
66
|
description: 'Type definitions as implementation references',
|
|
58
67
|
},
|
|
68
|
+
// Dependencies
|
|
69
|
+
dependsOn: {
|
|
70
|
+
type: 'array',
|
|
71
|
+
items: { type: 'string' },
|
|
72
|
+
description: 'Array of ticket IDs this ticket depends on',
|
|
73
|
+
},
|
|
74
|
+
// Tracking fields (read-only for get, update for status changes)
|
|
75
|
+
blockReason: { type: 'string', description: 'Reason ticket is blocked' },
|
|
76
|
+
actualHours: { type: 'number', description: 'Actual hours spent (for update)' },
|
|
77
|
+
testsPassed: { type: 'boolean', description: 'Whether tests passed (for update)' },
|
|
59
78
|
// For list
|
|
60
79
|
filter: {
|
|
61
80
|
type: 'object',
|
|
@@ -83,9 +102,9 @@ export const ticketTool = {
|
|
|
83
102
|
type: 'boolean',
|
|
84
103
|
description: 'Whether criterion passed validation',
|
|
85
104
|
},
|
|
86
|
-
|
|
105
|
+
validationNotes: {
|
|
87
106
|
type: 'string',
|
|
88
|
-
description: 'Validation notes',
|
|
107
|
+
description: 'Validation notes (for validate operation)',
|
|
89
108
|
},
|
|
90
109
|
validations: {
|
|
91
110
|
type: 'array',
|
|
@@ -140,8 +159,16 @@ export function createTicketOperations(apiClient) {
|
|
|
140
159
|
complexity: args.complexity,
|
|
141
160
|
estimatedHours: args.estimatedHours,
|
|
142
161
|
tags: args.tags,
|
|
162
|
+
notes: args.notes,
|
|
163
|
+
// Implementation details
|
|
164
|
+
implementation: args.implementation,
|
|
165
|
+
technicalDetails: args.technicalDetails,
|
|
166
|
+
acceptanceCriteria: args.acceptanceCriteria,
|
|
167
|
+
// Code and type references
|
|
143
168
|
codeReferences: args.codeReferences,
|
|
144
169
|
typeReferences: args.typeReferences,
|
|
170
|
+
// Dependencies
|
|
171
|
+
dependsOn: args.dependsOn,
|
|
145
172
|
});
|
|
146
173
|
},
|
|
147
174
|
get: async (args, _userId) => {
|
|
@@ -162,8 +189,18 @@ export function createTicketOperations(apiClient) {
|
|
|
162
189
|
complexity: args.complexity,
|
|
163
190
|
estimatedHours: args.estimatedHours,
|
|
164
191
|
tags: args.tags,
|
|
192
|
+
notes: args.notes,
|
|
193
|
+
// Implementation details
|
|
194
|
+
implementation: args.implementation,
|
|
195
|
+
technicalDetails: args.technicalDetails,
|
|
196
|
+
acceptanceCriteria: args.acceptanceCriteria,
|
|
197
|
+
// Code and type references
|
|
165
198
|
codeReferences: args.codeReferences,
|
|
166
199
|
typeReferences: args.typeReferences,
|
|
200
|
+
// Tracking fields
|
|
201
|
+
blockReason: args.blockReason,
|
|
202
|
+
actualHours: args.actualHours,
|
|
203
|
+
testsPassed: args.testsPassed,
|
|
167
204
|
});
|
|
168
205
|
},
|
|
169
206
|
list: async (args, _userId) => {
|
|
@@ -202,7 +239,7 @@ export function createTicketOperations(apiClient) {
|
|
|
202
239
|
ticketId: args.ticketId,
|
|
203
240
|
criterionId: args.criterionId,
|
|
204
241
|
passed: args.passed,
|
|
205
|
-
notes: args.
|
|
242
|
+
notes: args.validationNotes,
|
|
206
243
|
validatedBy: userId,
|
|
207
244
|
});
|
|
208
245
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket.js","sourceRoot":"","sources":["../../../src/tools/core/ticket.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAG/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE;;;;;;;8CAO+B;IAC5C,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC;gBAC/E,WAAW,EAAE,0BAA0B;aACxC;YACD,iBAAiB;YACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE;YACtD,aAAa;YACb,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;YAC7D,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"ticket.js","sourceRoot":"","sources":["../../../src/tools/core/ticket.ts"],"names":[],"mappings":"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"}
|