@specforge/mcp 3.3.5 → 3.3.8

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.
Files changed (91) hide show
  1. package/dist/autopilot/cli/index.js +1 -1
  2. package/dist/autopilot/cli/index.js.map +1 -1
  3. package/dist/tools/core/epic.d.ts.map +1 -1
  4. package/dist/tools/core/epic.js +1 -0
  5. package/dist/tools/core/epic.js.map +1 -1
  6. package/dist/tools/core/specification.d.ts.map +1 -1
  7. package/dist/tools/core/specification.js +1 -0
  8. package/dist/tools/core/specification.js.map +1 -1
  9. package/dist/tools/core/ticket.d.ts.map +1 -1
  10. package/dist/tools/core/ticket.js +1 -0
  11. package/dist/tools/core/ticket.js.map +1 -1
  12. package/dist/tools/index.d.ts.map +1 -1
  13. package/dist/tools/index.js +84 -0
  14. package/dist/tools/index.js.map +1 -1
  15. package/package.json +1 -1
  16. package/dist/cli/templates/agents/content/core/sfag-implementer.d.ts +0 -8
  17. package/dist/cli/templates/agents/content/core/sfag-implementer.d.ts.map +0 -1
  18. package/dist/cli/templates/agents/content/core/sfag-implementer.js +0 -111
  19. package/dist/cli/templates/agents/content/core/sfag-implementer.js.map +0 -1
  20. package/dist/cli/templates/agents/content/task-type/sfag-api-implementer.d.ts +0 -8
  21. package/dist/cli/templates/agents/content/task-type/sfag-api-implementer.d.ts.map +0 -1
  22. package/dist/cli/templates/agents/content/task-type/sfag-api-implementer.js +0 -130
  23. package/dist/cli/templates/agents/content/task-type/sfag-api-implementer.js.map +0 -1
  24. package/dist/cli/templates/agents/content/task-type/sfag-docs-writer.d.ts +0 -8
  25. package/dist/cli/templates/agents/content/task-type/sfag-docs-writer.d.ts.map +0 -1
  26. package/dist/cli/templates/agents/content/task-type/sfag-docs-writer.js +0 -181
  27. package/dist/cli/templates/agents/content/task-type/sfag-docs-writer.js.map +0 -1
  28. package/dist/cli/templates/agents/content/task-type/sfag-frontend-builder.d.ts +0 -8
  29. package/dist/cli/templates/agents/content/task-type/sfag-frontend-builder.d.ts.map +0 -1
  30. package/dist/cli/templates/agents/content/task-type/sfag-frontend-builder.js +0 -139
  31. package/dist/cli/templates/agents/content/task-type/sfag-frontend-builder.js.map +0 -1
  32. package/dist/cli/templates/agents/content/task-type/sfag-infra-architect.d.ts +0 -8
  33. package/dist/cli/templates/agents/content/task-type/sfag-infra-architect.d.ts.map +0 -1
  34. package/dist/cli/templates/agents/content/task-type/sfag-infra-architect.js +0 -147
  35. package/dist/cli/templates/agents/content/task-type/sfag-infra-architect.js.map +0 -1
  36. package/dist/cli/templates/agents/content/task-type/sfag-schema-designer.d.ts +0 -8
  37. package/dist/cli/templates/agents/content/task-type/sfag-schema-designer.d.ts.map +0 -1
  38. package/dist/cli/templates/agents/content/task-type/sfag-schema-designer.js +0 -130
  39. package/dist/cli/templates/agents/content/task-type/sfag-schema-designer.js.map +0 -1
  40. package/dist/cli/templates/agents/content/task-type/sfag-test-writer.d.ts +0 -8
  41. package/dist/cli/templates/agents/content/task-type/sfag-test-writer.d.ts.map +0 -1
  42. package/dist/cli/templates/agents/content/task-type/sfag-test-writer.js +0 -169
  43. package/dist/cli/templates/agents/content/task-type/sfag-test-writer.js.map +0 -1
  44. package/dist/cli/templates/content/sf-autonomous.d.ts +0 -7
  45. package/dist/cli/templates/content/sf-autonomous.d.ts.map +0 -1
  46. package/dist/cli/templates/content/sf-autonomous.js +0 -78
  47. package/dist/cli/templates/content/sf-autonomous.js.map +0 -1
  48. package/dist/cli/templates/content/sf-create-epics.d.ts +0 -7
  49. package/dist/cli/templates/content/sf-create-epics.d.ts.map +0 -1
  50. package/dist/cli/templates/content/sf-create-epics.js +0 -129
  51. package/dist/cli/templates/content/sf-create-epics.js.map +0 -1
  52. package/dist/cli/templates/content/sf-create-spec.d.ts +0 -7
  53. package/dist/cli/templates/content/sf-create-spec.d.ts.map +0 -1
  54. package/dist/cli/templates/content/sf-create-spec.js +0 -136
  55. package/dist/cli/templates/content/sf-create-spec.js.map +0 -1
  56. package/dist/cli/templates/content/sf-create-tickets.d.ts +0 -7
  57. package/dist/cli/templates/content/sf-create-tickets.d.ts.map +0 -1
  58. package/dist/cli/templates/content/sf-create-tickets.js +0 -148
  59. package/dist/cli/templates/content/sf-create-tickets.js.map +0 -1
  60. package/dist/cli/templates/content/sf-epic.d.ts +0 -7
  61. package/dist/cli/templates/content/sf-epic.d.ts.map +0 -1
  62. package/dist/cli/templates/content/sf-epic.js +0 -69
  63. package/dist/cli/templates/content/sf-epic.js.map +0 -1
  64. package/dist/cli/templates/content/sf-import.d.ts +0 -7
  65. package/dist/cli/templates/content/sf-import.d.ts.map +0 -1
  66. package/dist/cli/templates/content/sf-import.js +0 -88
  67. package/dist/cli/templates/content/sf-import.js.map +0 -1
  68. package/dist/cli/templates/content/sf-next.d.ts +0 -7
  69. package/dist/cli/templates/content/sf-next.d.ts.map +0 -1
  70. package/dist/cli/templates/content/sf-next.js +0 -67
  71. package/dist/cli/templates/content/sf-next.js.map +0 -1
  72. package/dist/cli/templates/content/sf-review.d.ts +0 -7
  73. package/dist/cli/templates/content/sf-review.d.ts.map +0 -1
  74. package/dist/cli/templates/content/sf-review.js +0 -67
  75. package/dist/cli/templates/content/sf-review.js.map +0 -1
  76. package/dist/cli/templates/content/sf-ticket.d.ts +0 -7
  77. package/dist/cli/templates/content/sf-ticket.d.ts.map +0 -1
  78. package/dist/cli/templates/content/sf-ticket.js +0 -76
  79. package/dist/cli/templates/content/sf-ticket.js.map +0 -1
  80. package/dist/cli/templates/content/sf-validate.d.ts +0 -7
  81. package/dist/cli/templates/content/sf-validate.d.ts.map +0 -1
  82. package/dist/cli/templates/content/sf-validate.js +0 -78
  83. package/dist/cli/templates/content/sf-validate.js.map +0 -1
  84. package/dist/tools/core/context.d.ts +0 -7
  85. package/dist/tools/core/context.d.ts.map +0 -1
  86. package/dist/tools/core/context.js +0 -75
  87. package/dist/tools/core/context.js.map +0 -1
  88. package/dist/tools/core/job.d.ts +0 -7
  89. package/dist/tools/core/job.d.ts.map +0 -1
  90. package/dist/tools/core/job.js +0 -50
  91. package/dist/tools/core/job.js.map +0 -1
@@ -1,67 +0,0 @@
1
- /**
2
- * SF-Review Command Template
3
- *
4
- * Template for reviewing accomplishments and progress analysis.
5
- */
6
- export const SF_REVIEW_CONTENT = `# Review Accomplishments (SpecForge)
7
-
8
- Comprehensive review of implementation progress and accomplishments.
9
-
10
- ## Arguments
11
- - \`$ARGUMENTS\` - Optional: Specification ID to review
12
-
13
- ## Task
14
-
15
- ### 1. Get Specification Context
16
-
17
- **MCP Calls:**
18
- \`\`\`typescript
19
- get_working_context()
20
-
21
- if ($ARGUMENTS) {
22
- set_working_context({ specificationId: "$ARGUMENTS" })
23
- }
24
-
25
- get_specification(specificationId)
26
- \`\`\`
27
-
28
- ### 2. Load Implementation Data
29
-
30
- **MCP Calls:**
31
- \`\`\`typescript
32
- list_epics({ specificationId })
33
- list_tickets({ specificationId })
34
- \`\`\`
35
-
36
- ### 3. Display Review Summary
37
-
38
- **Output:**
39
- \`\`\`
40
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
41
- IMPLEMENTATION REVIEW
42
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
43
- Specification: {title}
44
- Overall: {done}/{total} ({percentage}%)
45
-
46
- PROGRESS BY EPIC
47
- ─────────────────────────────────────────────────────────────────
48
- E{n} │ {title} │ {ticketsDone}/{ticketsTotal} ({pct}%)
49
-
50
- RECENTLY COMPLETED
51
- ─────────────────────────────────────────────────────────────────
52
- ✓ E{n}-T{m} │ {title} │ {completedDate}
53
-
54
- VELOCITY
55
- ─────────────────────────────────────────────────────────────────
56
- Last 7 days: {ticketsCompleted} tickets
57
- Average: {avgPerDay} tickets/day
58
- Remaining: ~{estimatedDays} days
59
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
60
- \`\`\`
61
-
62
- ## Notes
63
- - Shows completed tickets and velocity metrics
64
- - Provides estimated completion timeline
65
- - Use /sf-status for current state
66
- `;
67
- //# sourceMappingURL=sf-review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sf-review.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-review.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DhC,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * SF-Ticket-Implementation Command Template
3
- *
4
- * Template for implementing a specific ticket with streamlined workflow.
5
- */
6
- export declare const SF_TICKET_IMPLEMENTATION_CONTENT = "# Implement Ticket (SpecForge)\n\nImplement a specific ticket with full context and streamlined workflow.\n\n## Arguments\n- `$ARGUMENTS` - Optional: Ticket ID to implement (e.g., E1-T3)\n\n## Task\n\n### 1. Select Ticket\n\n**MCP Calls:**\n```typescript\n// If no arguments, prompt user\nif (!$ARGUMENTS) {\n list_tickets({\n specificationId,\n status: 'ready'\n })\n // Display selection menu\n}\n\n// Get ticket details\nget_ticket($ARGUMENTS || selectedId)\n```\n\n### 2. Verify Dependencies\n\n**MCP Calls:**\n```typescript\n// Check all dependencies are completed\nfor (const depId of ticket.dependencies) {\n get_ticket(depId)\n // Verify status is 'done'\n}\n```\n\n### 3. Set Context and Start\n\n**MCP Calls:**\n```typescript\nset_working_context({ ticketId: ticket.id })\nupdate_ticket({\n ticketId: ticket.id,\n status: 'in_progress'\n})\n```\n\n### 4. Display Implementation View\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\nIMPLEMENTING: E{n}-T{m}\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{title}\n\n{fullDescription}\n{implementationGuidance}\n{acceptanceCriteria}\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\nBegin implementation\n```\n\n## Notes\n- Verifies all dependencies are completed\n- Provides full ticket context for implementation\n- Use /sf-commit when complete\n";
7
- //# sourceMappingURL=sf-ticket.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sf-ticket.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-ticket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,gCAAgC,4jEAqE5C,CAAC"}
@@ -1,76 +0,0 @@
1
- /**
2
- * SF-Ticket-Implementation Command Template
3
- *
4
- * Template for implementing a specific ticket with streamlined workflow.
5
- */
6
- export const SF_TICKET_IMPLEMENTATION_CONTENT = `# Implement Ticket (SpecForge)
7
-
8
- Implement a specific ticket with full context and streamlined workflow.
9
-
10
- ## Arguments
11
- - \`$ARGUMENTS\` - Optional: Ticket ID to implement (e.g., E1-T3)
12
-
13
- ## Task
14
-
15
- ### 1. Select Ticket
16
-
17
- **MCP Calls:**
18
- \`\`\`typescript
19
- // If no arguments, prompt user
20
- if (!$ARGUMENTS) {
21
- list_tickets({
22
- specificationId,
23
- status: 'ready'
24
- })
25
- // Display selection menu
26
- }
27
-
28
- // Get ticket details
29
- get_ticket($ARGUMENTS || selectedId)
30
- \`\`\`
31
-
32
- ### 2. Verify Dependencies
33
-
34
- **MCP Calls:**
35
- \`\`\`typescript
36
- // Check all dependencies are completed
37
- for (const depId of ticket.dependencies) {
38
- get_ticket(depId)
39
- // Verify status is 'done'
40
- }
41
- \`\`\`
42
-
43
- ### 3. Set Context and Start
44
-
45
- **MCP Calls:**
46
- \`\`\`typescript
47
- set_working_context({ ticketId: ticket.id })
48
- update_ticket({
49
- ticketId: ticket.id,
50
- status: 'in_progress'
51
- })
52
- \`\`\`
53
-
54
- ### 4. Display Implementation View
55
-
56
- **Output:**
57
- \`\`\`
58
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
59
- IMPLEMENTING: E{n}-T{m}
60
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
61
- {title}
62
-
63
- {fullDescription}
64
- {implementationGuidance}
65
- {acceptanceCriteria}
66
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
67
-
68
- Begin implementation
69
- \`\`\`
70
-
71
- ## Notes
72
- - Verifies all dependencies are completed
73
- - Provides full ticket context for implementation
74
- - Use /sf-commit when complete
75
- `;
76
- //# sourceMappingURL=sf-ticket.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sf-ticket.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-ticket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqE/C,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * SF-Validate Command Template
3
- *
4
- * Template for validating ticket system health.
5
- */
6
- export declare const SF_VALIDATE_CONTENT = "# Validate Ticket System (SpecForge)\n\nRun comprehensive health checks on the ticket system.\n\n## Arguments\n- `$ARGUMENTS` - Optional: Specification ID to validate\n\n## Task\n\n### 1. Get Specification Context\n\n**MCP Calls:**\n```typescript\nget_working_context()\n\nif ($ARGUMENTS) {\n set_working_context({ specificationId: \"$ARGUMENTS\" })\n}\n\nget_specification(specificationId)\n```\n\n### 2. Load and Validate Data\n\n**MCP Calls:**\n```typescript\nlist_epics({ specificationId })\nlist_tickets({ specificationId })\n\n// Validate each ticket\nfor (const ticket of tickets) {\n get_ticket(ticket.id)\n // Check dependencies, status, fields\n}\n```\n\n### 3. Display Validation 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\nSYSTEM VALIDATION\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\nCHECKS\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\u2713 All epics have valid structure\n\u2713 All tickets have required fields\n\u2713 Dependency graph is acyclic\n\u2713 Status transitions are valid\n\u2713 No orphaned tickets\n\nWARNINGS\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\u26A0 E{n}-T{m}: Missing acceptance criteria\n\u26A0 E{n}-T{m}: Long dependency chain (depth {n})\n\nERRORS\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\u2717 E{n}-T{m}: Circular dependency detected\n\u2717 E{n}-T{m}: Invalid dependency reference\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\nStatus: {errors ? 'FAILED' : 'PASSED'}\n```\n\n## Notes\n- Checks dependency graph integrity\n- Validates ticket structure and fields\n- Reports warnings and errors\n";
7
- //# sourceMappingURL=sf-validate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sf-validate.d.ts","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,mBAAmB,s2GAuE/B,CAAC"}
@@ -1,78 +0,0 @@
1
- /**
2
- * SF-Validate Command Template
3
- *
4
- * Template for validating ticket system health.
5
- */
6
- export const SF_VALIDATE_CONTENT = `# Validate Ticket System (SpecForge)
7
-
8
- Run comprehensive health checks on the ticket system.
9
-
10
- ## Arguments
11
- - \`$ARGUMENTS\` - Optional: Specification ID to validate
12
-
13
- ## Task
14
-
15
- ### 1. Get Specification Context
16
-
17
- **MCP Calls:**
18
- \`\`\`typescript
19
- get_working_context()
20
-
21
- if ($ARGUMENTS) {
22
- set_working_context({ specificationId: "$ARGUMENTS" })
23
- }
24
-
25
- get_specification(specificationId)
26
- \`\`\`
27
-
28
- ### 2. Load and Validate Data
29
-
30
- **MCP Calls:**
31
- \`\`\`typescript
32
- list_epics({ specificationId })
33
- list_tickets({ specificationId })
34
-
35
- // Validate each ticket
36
- for (const ticket of tickets) {
37
- get_ticket(ticket.id)
38
- // Check dependencies, status, fields
39
- }
40
- \`\`\`
41
-
42
- ### 3. Display Validation Results
43
-
44
- **Output:**
45
- \`\`\`
46
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
47
- SYSTEM VALIDATION
48
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
49
- Specification: {title}
50
-
51
- CHECKS
52
- ─────────────────────────────────────────────────────────────────
53
- ✓ All epics have valid structure
54
- ✓ All tickets have required fields
55
- ✓ Dependency graph is acyclic
56
- ✓ Status transitions are valid
57
- ✓ No orphaned tickets
58
-
59
- WARNINGS
60
- ─────────────────────────────────────────────────────────────────
61
- ⚠ E{n}-T{m}: Missing acceptance criteria
62
- ⚠ E{n}-T{m}: Long dependency chain (depth {n})
63
-
64
- ERRORS
65
- ─────────────────────────────────────────────────────────────────
66
- ✗ E{n}-T{m}: Circular dependency detected
67
- ✗ E{n}-T{m}: Invalid dependency reference
68
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
69
-
70
- Status: {errors ? 'FAILED' : 'PASSED'}
71
- \`\`\`
72
-
73
- ## Notes
74
- - Checks dependency graph integrity
75
- - Validates ticket structure and fields
76
- - Reports warnings and errors
77
- `;
78
- //# sourceMappingURL=sf-validate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sf-validate.js","sourceRoot":"","sources":["../../../../src/cli/templates/content/sf-validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuElC,CAAC"}
@@ -1,7 +0,0 @@
1
- import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
- import { ConsolidatedToolArgs, OperationHandler } from './types.js';
3
- import { ApiClient } from '../../client/api-client.js';
4
- export declare const contextTool: Tool;
5
- export declare function createContextOperations(apiClient: ApiClient): Record<string, OperationHandler>;
6
- export declare function createContextHandler(apiClient: ApiClient): (args: ConsolidatedToolArgs, userId: string) => Promise<unknown>;
7
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/tools/core/context.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,WAAW,EAAE,IA+BzB,CAAC;AAUF,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAgC9F;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,oEAGxD"}
@@ -1,75 +0,0 @@
1
- // mcp/src/tools/core/context.ts
2
- import { createOperationRouter } from './router.js';
3
- export const contextTool = {
4
- name: 'context',
5
- description: `Get and manage context. Operations:
6
- - working: Get current working context (project scope)
7
- - implementation: Get implementation context for a ticket
8
- - set: Set/update current working context`,
9
- inputSchema: {
10
- type: 'object',
11
- properties: {
12
- operation: {
13
- type: 'string',
14
- enum: ['working', 'implementation', 'set'],
15
- description: 'The operation to perform',
16
- },
17
- // For set working context
18
- projectId: { type: 'string', description: 'Project ID' },
19
- specificationId: { type: 'string', description: 'Specification ID' },
20
- epicId: { type: 'string', description: 'Epic ID' },
21
- // For implementation context
22
- ticketId: { type: 'string', description: 'Ticket ID for implementation context' },
23
- depth: {
24
- type: 'string',
25
- enum: ['minimal', 'standard', 'full'],
26
- description: 'Context depth level',
27
- },
28
- // Response options
29
- format: { type: 'string', enum: ['json', 'toon'] },
30
- responseMode: { type: 'string', enum: ['full', 'minimal', 'summary', 'id-only'] },
31
- },
32
- required: ['operation'],
33
- },
34
- };
35
- function validateRequired(args, ...fields) {
36
- for (const field of fields) {
37
- if (args[field] === undefined || args[field] === null || args[field] === '') {
38
- throw new Error(`${field} is required`);
39
- }
40
- }
41
- }
42
- export function createContextOperations(apiClient) {
43
- return {
44
- working: async (_args, _userId) => {
45
- // Note: In actual implementation, this uses client.getSessionId()
46
- // For the consolidated tool, we pass through to the API
47
- return await apiClient.call('get_working_context', {});
48
- },
49
- implementation: async (args, _userId) => {
50
- validateRequired(args, 'ticketId');
51
- const depth = args.depth || 'standard';
52
- return await apiClient.call('get_implementation_context', {
53
- ticketId: args.ticketId,
54
- depth,
55
- });
56
- },
57
- set: async (args, _userId) => {
58
- // At least one context field should be provided
59
- if (!args.projectId && !args.specificationId && !args.epicId && !args.ticketId) {
60
- throw new Error('At least one of projectId, specificationId, epicId, or ticketId is required');
61
- }
62
- return await apiClient.call('set_working_context', {
63
- projectId: args.projectId,
64
- specificationId: args.specificationId,
65
- epicId: args.epicId,
66
- ticketId: args.ticketId,
67
- });
68
- },
69
- };
70
- }
71
- export function createContextHandler(apiClient) {
72
- const operations = createContextOperations(apiClient);
73
- return createOperationRouter('context', operations);
74
- }
75
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/tools/core/context.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
- import { ConsolidatedToolArgs, OperationHandler } from './types.js';
3
- import { ApiClient } from '../../client/api-client.js';
4
- export declare const jobTool: Tool;
5
- export declare function createJobOperations(apiClient: ApiClient): Record<string, OperationHandler>;
6
- export declare function createJobHandler(apiClient: ApiClient): (args: ConsolidatedToolArgs, userId: string) => Promise<unknown>;
7
- //# sourceMappingURL=job.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/tools/core/job.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,OAAO,EAAE,IAmBrB,CAAC;AAUF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAgB1F;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,oEAGpD"}
@@ -1,50 +0,0 @@
1
- // mcp/src/tools/core/job.ts
2
- import { createOperationRouter } from './router.js';
3
- export const jobTool = {
4
- name: 'job',
5
- description: `Manage async jobs. Operations:
6
- - status: Get job status
7
- - cancel: Cancel a running job`,
8
- inputSchema: {
9
- type: 'object',
10
- properties: {
11
- operation: {
12
- type: 'string',
13
- enum: ['status', 'cancel'],
14
- description: 'The operation to perform',
15
- },
16
- jobId: { type: 'string', description: 'Job ID' },
17
- // Response options
18
- format: { type: 'string', enum: ['json', 'toon'] },
19
- },
20
- required: ['operation'],
21
- },
22
- };
23
- function validateRequired(args, ...fields) {
24
- for (const field of fields) {
25
- if (args[field] === undefined || args[field] === null || args[field] === '') {
26
- throw new Error(`${field} is required`);
27
- }
28
- }
29
- }
30
- export function createJobOperations(apiClient) {
31
- return {
32
- status: async (args, _userId) => {
33
- validateRequired(args, 'jobId');
34
- return await apiClient.call('get_job_status', {
35
- jobId: args.jobId,
36
- });
37
- },
38
- cancel: async (args, _userId) => {
39
- validateRequired(args, 'jobId');
40
- return await apiClient.call('cancel_job', {
41
- jobId: args.jobId,
42
- });
43
- },
44
- };
45
- }
46
- export function createJobHandler(apiClient) {
47
- const operations = createJobOperations(apiClient);
48
- return createOperationRouter('job', operations);
49
- }
50
- //# sourceMappingURL=job.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/tools/core/job.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAG5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,CAAC,MAAM,OAAO,GAAS;IAC3B,IAAI,EAAE,KAAK;IACX,WAAW,EAAE;;+BAEgB;IAC7B,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAC1B,WAAW,EAAE,0BAA0B;aACxC;YACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;YAChD,mBAAmB;YACnB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;SACnD;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,IAA0B,EAAE,GAAG,MAAgB;IACvE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,IAA0B,EAAE,OAAe,EAAE,EAAE;YAC5D,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChC,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,IAA0B,EAAE,OAAe,EAAE,EAAE;YAC5D,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChC,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE;gBACxC,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAoB;IACnD,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC"}