@planu/cli 0.42.1 → 0.43.1

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 (262) hide show
  1. package/dist/config/license-plans.json +2 -1
  2. package/dist/engine/actuals/consolidator.d.ts +3 -3
  3. package/dist/engine/actuals/consolidator.d.ts.map +1 -1
  4. package/dist/engine/actuals/consolidator.js +24 -2
  5. package/dist/engine/actuals/consolidator.js.map +1 -1
  6. package/dist/engine/actuals/index.d.ts +1 -0
  7. package/dist/engine/actuals/index.d.ts.map +1 -1
  8. package/dist/engine/actuals/index.js +1 -0
  9. package/dist/engine/actuals/index.js.map +1 -1
  10. package/dist/engine/actuals/progress-parser.d.ts +11 -0
  11. package/dist/engine/actuals/progress-parser.d.ts.map +1 -0
  12. package/dist/engine/actuals/progress-parser.js +84 -0
  13. package/dist/engine/actuals/progress-parser.js.map +1 -0
  14. package/dist/engine/actuals/wip-tracker.d.ts +2 -2
  15. package/dist/engine/actuals/wip-tracker.d.ts.map +1 -1
  16. package/dist/engine/actuals/wip-tracker.js +5 -6
  17. package/dist/engine/actuals/wip-tracker.js.map +1 -1
  18. package/dist/engine/analytics-detector/events.d.ts.map +1 -1
  19. package/dist/engine/analytics-detector/events.js +3 -4
  20. package/dist/engine/analytics-detector/events.js.map +1 -1
  21. package/dist/engine/ci-generator/planu-steps.js +1 -1
  22. package/dist/engine/ci-generator/planu-steps.js.map +1 -1
  23. package/dist/engine/docs-site-generator/spec-renderer.d.ts.map +1 -1
  24. package/dist/engine/docs-site-generator/spec-renderer.js +2 -1
  25. package/dist/engine/docs-site-generator/spec-renderer.js.map +1 -1
  26. package/dist/engine/execution-plan/agent-execution-plan.d.ts.map +1 -1
  27. package/dist/engine/execution-plan/agent-execution-plan.js +2 -0
  28. package/dist/engine/execution-plan/agent-execution-plan.js.map +1 -1
  29. package/dist/engine/living-spec-analyzer.d.ts +7 -0
  30. package/dist/engine/living-spec-analyzer.d.ts.map +1 -0
  31. package/dist/engine/living-spec-analyzer.js +362 -0
  32. package/dist/engine/living-spec-analyzer.js.map +1 -0
  33. package/dist/engine/llm-providers/cost-tracker.d.ts.map +1 -1
  34. package/dist/engine/llm-providers/cost-tracker.js +1 -0
  35. package/dist/engine/llm-providers/cost-tracker.js.map +1 -1
  36. package/dist/engine/llm-providers/load-balancer.d.ts.map +1 -1
  37. package/dist/engine/llm-providers/load-balancer.js +3 -0
  38. package/dist/engine/llm-providers/load-balancer.js.map +1 -1
  39. package/dist/engine/plugins/extensions/tool-extension.d.ts.map +1 -1
  40. package/dist/engine/plugins/extensions/tool-extension.js +1 -0
  41. package/dist/engine/plugins/extensions/tool-extension.js.map +1 -1
  42. package/dist/engine/plugins/lifecycle.d.ts.map +1 -1
  43. package/dist/engine/plugins/lifecycle.js +3 -4
  44. package/dist/engine/plugins/lifecycle.js.map +1 -1
  45. package/dist/engine/plugins/loader.d.ts.map +1 -1
  46. package/dist/engine/plugins/loader.js +3 -0
  47. package/dist/engine/plugins/loader.js.map +1 -1
  48. package/dist/engine/plugins/sandbox.d.ts.map +1 -1
  49. package/dist/engine/plugins/sandbox.js +3 -3
  50. package/dist/engine/plugins/sandbox.js.map +1 -1
  51. package/dist/engine/registry-updater.d.ts.map +1 -1
  52. package/dist/engine/registry-updater.js +3 -3
  53. package/dist/engine/registry-updater.js.map +1 -1
  54. package/dist/engine/safety/health-monitor.d.ts.map +1 -1
  55. package/dist/engine/safety/health-monitor.js +3 -0
  56. package/dist/engine/safety/health-monitor.js.map +1 -1
  57. package/dist/engine/safety/transaction.d.ts.map +1 -1
  58. package/dist/engine/safety/transaction.js +3 -0
  59. package/dist/engine/safety/transaction.js.map +1 -1
  60. package/dist/engine/source-resolver.d.ts +38 -0
  61. package/dist/engine/source-resolver.d.ts.map +1 -0
  62. package/dist/engine/source-resolver.js +179 -0
  63. package/dist/engine/source-resolver.js.map +1 -0
  64. package/dist/engine/spec-dependency-graph.d.ts +33 -0
  65. package/dist/engine/spec-dependency-graph.d.ts.map +1 -0
  66. package/dist/engine/spec-dependency-graph.js +243 -0
  67. package/dist/engine/spec-dependency-graph.js.map +1 -0
  68. package/dist/engine/spec-templates/custom-loader.d.ts.map +1 -1
  69. package/dist/engine/spec-templates/custom-loader.js +1 -0
  70. package/dist/engine/spec-templates/custom-loader.js.map +1 -1
  71. package/dist/i18n/index.d.ts +1 -1
  72. package/dist/i18n/index.d.ts.map +1 -1
  73. package/dist/i18n/index.js +1 -35
  74. package/dist/i18n/index.js.map +1 -1
  75. package/dist/index.js +6 -4
  76. package/dist/index.js.map +1 -1
  77. package/dist/prompts/index.d.ts +6 -0
  78. package/dist/prompts/index.d.ts.map +1 -0
  79. package/dist/prompts/index.js +121 -0
  80. package/dist/prompts/index.js.map +1 -0
  81. package/dist/resources/specs.d.ts.map +1 -1
  82. package/dist/resources/specs.js +11 -6
  83. package/dist/resources/specs.js.map +1 -1
  84. package/dist/storage/checkpoint-store.d.ts.map +1 -1
  85. package/dist/storage/checkpoint-store.js +3 -2
  86. package/dist/storage/checkpoint-store.js.map +1 -1
  87. package/dist/storage/file-mutex.d.ts +14 -0
  88. package/dist/storage/file-mutex.d.ts.map +1 -0
  89. package/dist/storage/file-mutex.js +39 -0
  90. package/dist/storage/file-mutex.js.map +1 -0
  91. package/dist/storage/spec-store.d.ts.map +1 -1
  92. package/dist/storage/spec-store.js +48 -39
  93. package/dist/storage/spec-store.js.map +1 -1
  94. package/dist/tools/activate-license.d.ts.map +1 -1
  95. package/dist/tools/activate-license.js +27 -18
  96. package/dist/tools/activate-license.js.map +1 -1
  97. package/dist/tools/analyze-spec-dependencies.d.ts +6 -0
  98. package/dist/tools/analyze-spec-dependencies.d.ts.map +1 -0
  99. package/dist/tools/analyze-spec-dependencies.js +72 -0
  100. package/dist/tools/analyze-spec-dependencies.js.map +1 -0
  101. package/dist/tools/check-readiness.d.ts.map +1 -1
  102. package/dist/tools/check-readiness.js +8 -0
  103. package/dist/tools/check-readiness.js.map +1 -1
  104. package/dist/tools/configure-llm-providers-handler.d.ts.map +1 -1
  105. package/dist/tools/configure-llm-providers-handler.js +25 -18
  106. package/dist/tools/configure-llm-providers-handler.js.map +1 -1
  107. package/dist/tools/context-budget.d.ts.map +1 -1
  108. package/dist/tools/context-budget.js +41 -14
  109. package/dist/tools/context-budget.js.map +1 -1
  110. package/dist/tools/create-spec/spec-builder.d.ts.map +1 -1
  111. package/dist/tools/create-spec/spec-builder.js +3 -2
  112. package/dist/tools/create-spec/spec-builder.js.map +1 -1
  113. package/dist/tools/delete-project.d.ts.map +1 -1
  114. package/dist/tools/delete-project.js +4 -3
  115. package/dist/tools/delete-project.js.map +1 -1
  116. package/dist/tools/delete-spec.d.ts.map +1 -1
  117. package/dist/tools/delete-spec.js +4 -3
  118. package/dist/tools/delete-spec.js.map +1 -1
  119. package/dist/tools/estimate.d.ts.map +1 -1
  120. package/dist/tools/estimate.js +1 -0
  121. package/dist/tools/estimate.js.map +1 -1
  122. package/dist/tools/event-contracts/handlers.d.ts.map +1 -1
  123. package/dist/tools/event-contracts/handlers.js +5 -7
  124. package/dist/tools/event-contracts/handlers.js.map +1 -1
  125. package/dist/tools/export-spec.js +1 -1
  126. package/dist/tools/export-spec.js.map +1 -1
  127. package/dist/tools/license-status.d.ts.map +1 -1
  128. package/dist/tools/license-status.js +33 -1
  129. package/dist/tools/license-status.js.map +1 -1
  130. package/dist/tools/list-specs.d.ts.map +1 -1
  131. package/dist/tools/list-specs.js +1 -0
  132. package/dist/tools/list-specs.js.map +1 -1
  133. package/dist/tools/llm-provider-status-handler.d.ts.map +1 -1
  134. package/dist/tools/llm-provider-status-handler.js +13 -8
  135. package/dist/tools/llm-provider-status-handler.js.map +1 -1
  136. package/dist/tools/manage-context/store.d.ts.map +1 -1
  137. package/dist/tools/manage-context/store.js +4 -5
  138. package/dist/tools/manage-context/store.js.map +1 -1
  139. package/dist/tools/manage-plugins-handler.d.ts.map +1 -1
  140. package/dist/tools/manage-plugins-handler.js +38 -12
  141. package/dist/tools/manage-plugins-handler.js.map +1 -1
  142. package/dist/tools/manage-trash.d.ts.map +1 -1
  143. package/dist/tools/manage-trash.js +9 -5
  144. package/dist/tools/manage-trash.js.map +1 -1
  145. package/dist/tools/reconcile-spec.d.ts.map +1 -1
  146. package/dist/tools/reconcile-spec.js +11 -1
  147. package/dist/tools/reconcile-spec.js.map +1 -1
  148. package/dist/tools/register-context-tools.d.ts.map +1 -1
  149. package/dist/tools/register-context-tools.js +2 -0
  150. package/dist/tools/register-context-tools.js.map +1 -1
  151. package/dist/tools/register-event-tools.d.ts.map +1 -1
  152. package/dist/tools/register-event-tools.js +1 -0
  153. package/dist/tools/register-event-tools.js.map +1 -1
  154. package/dist/tools/register-export-tools.d.ts.map +1 -1
  155. package/dist/tools/register-export-tools.js +1 -0
  156. package/dist/tools/register-export-tools.js.map +1 -1
  157. package/dist/tools/register-governance-tools.d.ts.map +1 -1
  158. package/dist/tools/register-governance-tools.js +1 -0
  159. package/dist/tools/register-governance-tools.js.map +1 -1
  160. package/dist/tools/register-learning-tools.d.ts.map +1 -1
  161. package/dist/tools/register-learning-tools.js +1 -0
  162. package/dist/tools/register-learning-tools.js.map +1 -1
  163. package/dist/tools/register-license-tools.d.ts.map +1 -1
  164. package/dist/tools/register-license-tools.js +2 -0
  165. package/dist/tools/register-license-tools.js.map +1 -1
  166. package/dist/tools/register-memory-tools.d.ts.map +1 -1
  167. package/dist/tools/register-memory-tools.js +2 -0
  168. package/dist/tools/register-memory-tools.js.map +1 -1
  169. package/dist/tools/register-migration-tools.d.ts.map +1 -1
  170. package/dist/tools/register-migration-tools.js +1 -0
  171. package/dist/tools/register-migration-tools.js.map +1 -1
  172. package/dist/tools/register-platform-tools/design-stack-tools.d.ts.map +1 -1
  173. package/dist/tools/register-platform-tools/design-stack-tools.js +12 -0
  174. package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -1
  175. package/dist/tools/register-platform-tools/lifecycle-infra-tools.d.ts.map +1 -1
  176. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +7 -0
  177. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js.map +1 -1
  178. package/dist/tools/register-readiness-tools.d.ts.map +1 -1
  179. package/dist/tools/register-readiness-tools.js +2 -0
  180. package/dist/tools/register-readiness-tools.js.map +1 -1
  181. package/dist/tools/register-security-tools.d.ts.map +1 -1
  182. package/dist/tools/register-security-tools.js +1 -0
  183. package/dist/tools/register-security-tools.js.map +1 -1
  184. package/dist/tools/register-spec-tools/analysis-tools.d.ts.map +1 -1
  185. package/dist/tools/register-spec-tools/analysis-tools.js +18 -0
  186. package/dist/tools/register-spec-tools/analysis-tools.js.map +1 -1
  187. package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
  188. package/dist/tools/register-spec-tools/core-spec-tools.js +4 -1
  189. package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
  190. package/dist/tools/register-stack-tools.d.ts.map +1 -1
  191. package/dist/tools/register-stack-tools.js +3 -0
  192. package/dist/tools/register-stack-tools.js.map +1 -1
  193. package/dist/tools/safe-handler.d.ts +2 -1
  194. package/dist/tools/safe-handler.d.ts.map +1 -1
  195. package/dist/tools/safe-handler.js +51 -3
  196. package/dist/tools/safe-handler.js.map +1 -1
  197. package/dist/tools/sanitize-path.d.ts +13 -0
  198. package/dist/tools/sanitize-path.d.ts.map +1 -0
  199. package/dist/tools/sanitize-path.js +60 -0
  200. package/dist/tools/sanitize-path.js.map +1 -0
  201. package/dist/tools/schemas/index.d.ts +1 -0
  202. package/dist/tools/schemas/index.d.ts.map +1 -1
  203. package/dist/tools/schemas/index.js +1 -0
  204. package/dist/tools/schemas/index.js.map +1 -1
  205. package/dist/tools/schemas/output-schemas.d.ts +168 -0
  206. package/dist/tools/schemas/output-schemas.d.ts.map +1 -0
  207. package/dist/tools/schemas/output-schemas.js +182 -0
  208. package/dist/tools/schemas/output-schemas.js.map +1 -0
  209. package/dist/tools/schemas/spec.d.ts.map +1 -1
  210. package/dist/tools/schemas/spec.js +9 -1
  211. package/dist/tools/schemas/spec.js.map +1 -1
  212. package/dist/tools/spec-templates.d.ts.map +1 -1
  213. package/dist/tools/spec-templates.js +36 -26
  214. package/dist/tools/spec-templates.js.map +1 -1
  215. package/dist/tools/suggest-tooling/catalog-loader.d.ts.map +1 -1
  216. package/dist/tools/suggest-tooling/catalog-loader.js +1 -0
  217. package/dist/tools/suggest-tooling/catalog-loader.js.map +1 -1
  218. package/dist/tools/tool-group-handler.d.ts.map +1 -1
  219. package/dist/tools/tool-group-handler.js +16 -13
  220. package/dist/tools/tool-group-handler.js.map +1 -1
  221. package/dist/tools/tool-registry.d.ts +14 -0
  222. package/dist/tools/tool-registry.d.ts.map +1 -0
  223. package/dist/tools/tool-registry.js +36 -0
  224. package/dist/tools/tool-registry.js.map +1 -0
  225. package/dist/tools/update-status-actions.d.ts +6 -0
  226. package/dist/tools/update-status-actions.d.ts.map +1 -1
  227. package/dist/tools/update-status-actions.js +19 -2
  228. package/dist/tools/update-status-actions.js.map +1 -1
  229. package/dist/tools/update-status.d.ts.map +1 -1
  230. package/dist/tools/update-status.js +6 -1
  231. package/dist/tools/update-status.js.map +1 -1
  232. package/dist/tools/validate.d.ts.map +1 -1
  233. package/dist/tools/validate.js +1 -0
  234. package/dist/tools/validate.js.map +1 -1
  235. package/dist/transports/http-rate-limiter.d.ts +22 -0
  236. package/dist/transports/http-rate-limiter.d.ts.map +1 -0
  237. package/dist/transports/http-rate-limiter.js +42 -0
  238. package/dist/transports/http-rate-limiter.js.map +1 -0
  239. package/dist/transports/http-transport.d.ts.map +1 -1
  240. package/dist/transports/http-transport.js +21 -1
  241. package/dist/transports/http-transport.js.map +1 -1
  242. package/dist/types/actuals-tracking.d.ts +9 -1
  243. package/dist/types/actuals-tracking.d.ts.map +1 -1
  244. package/dist/types/common/primitives.d.ts +1 -0
  245. package/dist/types/common/primitives.d.ts.map +1 -1
  246. package/dist/types/index.d.ts +1 -0
  247. package/dist/types/index.d.ts.map +1 -1
  248. package/dist/types/index.js +1 -0
  249. package/dist/types/index.js.map +1 -1
  250. package/dist/types/source-resolution.d.ts +49 -0
  251. package/dist/types/source-resolution.d.ts.map +1 -0
  252. package/dist/types/source-resolution.js +10 -0
  253. package/dist/types/source-resolution.js.map +1 -0
  254. package/dist/types/spec/core.d.ts +48 -0
  255. package/dist/types/spec/core.d.ts.map +1 -1
  256. package/dist/types/spec/inputs.d.ts +1 -0
  257. package/dist/types/spec/inputs.d.ts.map +1 -1
  258. package/package.json +1 -1
  259. package/src/config/license-plans.json +2 -1
  260. package/src/i18n/messages/en.json +177 -4
  261. package/src/i18n/messages/es.json +177 -4
  262. package/src/i18n/messages/pt.json +177 -4
@@ -0,0 +1,182 @@
1
+ // schemas/output-schemas.ts — Zod output schemas for MCP tools with structured output.
2
+ // Used with registerTool({ outputSchema }) to declare tool output structure.
3
+ // See: https://spec.modelcontextprotocol.io/specification/draft/server/tools/#structured-content
4
+ import { z } from 'zod';
5
+ // ── list_specs ──────────────────────────────────────────────────────────────
6
+ export const ListSpecsOutputSchema = {
7
+ projectId: z.string(),
8
+ filters: z.object({
9
+ status: z.string(),
10
+ type: z.string(),
11
+ }),
12
+ count: z.number(),
13
+ totalCount: z.number(),
14
+ specs: z.array(z.object({
15
+ id: z.string(),
16
+ title: z.string(),
17
+ type: z.string(),
18
+ scope: z.string(),
19
+ status: z.string(),
20
+ difficulty: z.string(),
21
+ risk: z.string(),
22
+ target: z.string(),
23
+ tags: z.array(z.string()),
24
+ gitBranch: z.string().optional(),
25
+ estimation: z.object({
26
+ devHours: z.number(),
27
+ totalCostUsd: z.number(),
28
+ }),
29
+ createdAt: z.string(),
30
+ updatedAt: z.string(),
31
+ lastModified: z.string(),
32
+ })),
33
+ summary: z.object({
34
+ byStatus: z.record(z.string(), z.number()),
35
+ byType: z.record(z.string(), z.number()),
36
+ totalDevHours: z.number(),
37
+ totalReviewHours: z.number(),
38
+ totalCostUsd: z.number(),
39
+ }),
40
+ teamSuggestion: z
41
+ .object({
42
+ recommended: z.boolean(),
43
+ reason: z.string(),
44
+ templateId: z.string(),
45
+ teamSize: z.number(),
46
+ specs: z.array(z.string()),
47
+ toolCalls: z.array(z.string()),
48
+ })
49
+ .nullable(),
50
+ message: z.string(),
51
+ };
52
+ // ── estimate ────────────────────────────────────────────────────────────────
53
+ export const EstimateOutputSchema = {
54
+ specId: z.string(),
55
+ difficulty: z.string(),
56
+ confidence: z.string(),
57
+ estimation: z.object({
58
+ devHours: z.number(),
59
+ reviewHours: z.number(),
60
+ totalHours: z.number(),
61
+ recommendedModel: z.string(),
62
+ tokensOpus: z.number(),
63
+ tokensSonnet: z.number(),
64
+ apiCostUsd: z.number(),
65
+ humanCostUsd: z.number(),
66
+ totalCostUsd: z.number(),
67
+ tokenOptimization: z.object({
68
+ estimatedSavings: z.number(),
69
+ suggestions: z.array(z.string()),
70
+ }),
71
+ }),
72
+ tokenStrategy: z.object({
73
+ operationMode: z.string(),
74
+ suggestedAiModel: z.string(),
75
+ modelRationale: z.string(),
76
+ }),
77
+ reasoning: z.array(z.string()),
78
+ similarSpecs: z.array(z.object({
79
+ specId: z.string(),
80
+ similarity: z.number(),
81
+ })),
82
+ historyUsed: z.boolean(),
83
+ };
84
+ // ── validate ────────────────────────────────────────────────────────────────
85
+ export const ValidateOutputSchema = {
86
+ specId: z.string(),
87
+ title: z.string(),
88
+ score: z.number(),
89
+ fieldsImplemented: z.number(),
90
+ fieldsTotal: z.number(),
91
+ matches: z.array(z.string()),
92
+ missing: z.array(z.string()),
93
+ extra: z.array(z.string()),
94
+ qualityIssues: z.array(z.object({
95
+ file: z.string(),
96
+ line: z.number(),
97
+ severity: z.string(),
98
+ rule: z.string(),
99
+ message: z.string(),
100
+ suggestion: z.string().optional(),
101
+ })),
102
+ implementationQualityScore: z.object({
103
+ overall: z.number(),
104
+ gradeLetter: z.string(),
105
+ filesAudited: z.number(),
106
+ categories: z.array(z.object({
107
+ category: z.string(),
108
+ score: z.number(),
109
+ weight: z.number(),
110
+ issueCount: z.number(),
111
+ worstSeverity: z.string(),
112
+ })),
113
+ }),
114
+ definitionOfReady: z.object({
115
+ isReady: z.boolean(),
116
+ passed: z.number(),
117
+ required: z.number(),
118
+ items: z.array(z.object({
119
+ id: z.string(),
120
+ description: z.string(),
121
+ status: z.string(),
122
+ })),
123
+ }),
124
+ definitionOfDone: z.object({
125
+ isDone: z.boolean(),
126
+ passed: z.number(),
127
+ required: z.number(),
128
+ items: z.array(z.object({
129
+ id: z.string(),
130
+ description: z.string(),
131
+ status: z.string(),
132
+ })),
133
+ }),
134
+ suggestions: z.array(z.string()).optional(),
135
+ };
136
+ // ── check_readiness ─────────────────────────────────────────────────────────
137
+ export const CheckReadinessOutputSchema = {
138
+ specId: z.string(),
139
+ score: z.number(),
140
+ ready: z.boolean(),
141
+ mode: z.string(),
142
+ issues: z.object({
143
+ blockers: z.array(z.string()),
144
+ warnings: z.array(z.string()),
145
+ breakdown: z.object({
146
+ hu: z.number().optional(),
147
+ criteria: z.number().optional(),
148
+ files: z.number().optional(),
149
+ dependencies: z.number().optional(),
150
+ }),
151
+ }),
152
+ recommendations: z.array(z.string()),
153
+ };
154
+ // ── license_status ──────────────────────────────────────────────────────────
155
+ export const LicenseStatusOutputSchema = {
156
+ version: z.string(),
157
+ plan: z.string(),
158
+ toolsAvailable: z.number(),
159
+ toolsTotal: z.number(),
160
+ limits: z.object({
161
+ maxProjects: z.number(),
162
+ currentProjects: z.number(),
163
+ maxActiveSpecs: z.number(),
164
+ }),
165
+ customer: z
166
+ .object({
167
+ name: z.string(),
168
+ email: z.string(),
169
+ variant: z.string(),
170
+ activatedAt: z.string(),
171
+ lastValidatedAt: z.string(),
172
+ })
173
+ .optional(),
174
+ activationSlots: z
175
+ .object({
176
+ used: z.number(),
177
+ total: z.number(),
178
+ })
179
+ .optional(),
180
+ upgradeUrl: z.string().optional(),
181
+ };
182
+ //# sourceMappingURL=output-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-schemas.js","sourceRoot":"","sources":["../../../src/tools/schemas/output-schemas.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;EAA+D,CAAC;AAChG,eAAO,MAAM,cAAc;;;;;;EAEgD,CAAC;AAE5E,eAAO,MAAM,YAAY;;;;;;;;;EAEyE,CAAC;AACnG,eAAO,MAAM,aAAa;;;;;EAEiD,CAAC;AAC5E,eAAO,MAAM,cAAc;;;;;;;;;EAaxB,CAAC;AACJ,eAAO,MAAM,mBAAmB;;;;EAEkC,CAAC"}
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;EAA+D,CAAC;AAChG,eAAO,MAAM,cAAc;;;;;;EAEgD,CAAC;AAE5E,eAAO,MAAM,YAAY;;;;;;;;;EAYtB,CAAC;AACJ,eAAO,MAAM,aAAa;;;;;EAEiD,CAAC;AAC5E,eAAO,MAAM,cAAc;;;;;;;;;EAaxB,CAAC;AACJ,eAAO,MAAM,mBAAmB;;;;EAEkC,CAAC"}
@@ -7,7 +7,15 @@ export const SpecStatusEnum = z
7
7
  // SPEC-016a: added 'agent'; SPEC-027: added 'tech-debt'
8
8
  export const SpecTypeEnum = z
9
9
  .enum(['feature', 'refactor', 'bugfix', 'infra', 'docs', 'project', 'agent', 'tech-debt'])
10
- .describe('Spec type: feature | refactor | bugfix | infra | docs | project | agent | tech-debt');
10
+ .describe('Spec type: ' +
11
+ 'feature (new functionality or capability) | ' +
12
+ 'refactor (restructure existing code without changing behavior) | ' +
13
+ 'bugfix (fix a defect or incorrect behavior) | ' +
14
+ 'infra (infrastructure, CI/CD, build, deployment changes) | ' +
15
+ 'docs (documentation-only changes) | ' +
16
+ 'project (cross-cutting project-wide initiative) | ' +
17
+ 'agent (AI agent or automation workflow) | ' +
18
+ 'tech-debt (address accumulated technical debt)');
11
19
  export const SpecScopeEnum = z
12
20
  .enum(['trivial', 'feature', 'cross-module', 'architectural'])
13
21
  .describe('Spec scope: trivial | feature | cross-module | architectural');
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/tools/schemas/spec.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAChG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;KAC7D,QAAQ,CAAC,8DAA8D,CAAC,CAAC;AAC5E,wDAAwD;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;KACzF,QAAQ,CAAC,qFAAqF,CAAC,CAAC;AACnG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;KAC7D,QAAQ,CAAC,8DAA8D,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,IAAI,CAAC;IACJ,UAAU;IACV,SAAS;IACT,QAAQ;IACR,WAAW;IACX,gBAAgB;IAChB,UAAU;IACV,KAAK;IACL,SAAS;CACV,CAAC;KACD,QAAQ,CACP,kGAAkG,CACnG,CAAC;AACJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;KAC5C,QAAQ,CAAC,qDAAqD,CAAC,CAAC"}
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/tools/schemas/spec.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAChG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;KAC7D,QAAQ,CAAC,8DAA8D,CAAC,CAAC;AAC5E,wDAAwD;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;KACzF,QAAQ,CACP,aAAa;IACX,8CAA8C;IAC9C,mEAAmE;IACnE,gDAAgD;IAChD,6DAA6D;IAC7D,sCAAsC;IACtC,oDAAoD;IACpD,4CAA4C;IAC5C,gDAAgD,CACnD,CAAC;AACJ,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;KAC7D,QAAQ,CAAC,8DAA8D,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,IAAI,CAAC;IACJ,UAAU;IACV,SAAS;IACT,QAAQ;IACR,WAAW;IACX,gBAAgB;IAChB,UAAU;IACV,KAAK;IACL,SAAS;CACV,CAAC;KACD,QAAQ,CACP,kGAAkG,CACnG,CAAC;AACJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;KAC5C,QAAQ,CAAC,qDAAqD,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec-templates.d.ts","sourceRoot":"","sources":["../../src/tools/spec-templates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAElB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAQ3B;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CA0DvF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkEvF"}
1
+ {"version":3,"file":"spec-templates.d.ts","sourceRoot":"","sources":["../../src/tools/spec-templates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAElB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAS3B;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAiEvF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkEvF"}
@@ -2,43 +2,51 @@
2
2
  import { mkdir, writeFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import { listTemplates, findTemplateWithCustom, renderTemplate, findMissingRequired, } from '../engine/spec-templates/index.js';
5
+ import { t, ti } from '../i18n/index.js';
5
6
  /**
6
7
  * Returns the list of available spec templates, optionally filtered.
7
8
  */
8
9
  export async function handleListTemplates(args) {
9
10
  try {
10
11
  const { result, warnings } = await listTemplates(args.category, args.search, args.complexityScore);
12
+ const filterText = result.filteredBy !== undefined
13
+ ? ` (${ti('tools.spec_templates.filteredBy', { filter: result.filteredBy })})`
14
+ : '';
11
15
  const lines = [
12
- '# Available Spec Templates',
16
+ `# ${t('tools.spec_templates.listTitle')}`,
13
17
  '',
14
- `Found **${result.total}** template${result.total === 1 ? '' : 's'}${result.filteredBy !== undefined ? ` (filtered by: ${result.filteredBy})` : ''}.`,
18
+ ti('tools.spec_templates.found', {
19
+ count: String(result.total),
20
+ plural: result.total === 1 ? '' : 's',
21
+ filter: filterText,
22
+ }),
15
23
  '',
16
24
  ];
17
25
  if (result.templates.length === 0) {
18
- lines.push('No templates match the given filters. Try removing filters to see all templates.');
26
+ lines.push(t('tools.spec_templates.noMatch'));
19
27
  }
20
28
  else {
21
- for (const t of result.templates) {
22
- lines.push(`## ${t.name} (\`${t.id}\`)`);
23
- lines.push(`- **Category:** ${t.category}${t.subcategory !== undefined ? ` (${t.subcategory})` : ''}`);
24
- lines.push(`- **Complexity:** ${t.complexityScore}`);
25
- lines.push(`- **Criteria:** ${t.criteriaCount}`);
26
- lines.push(`- **Description:** ${t.description}`);
27
- lines.push(`- **Tags:** ${t.tags.join(', ')}`);
28
- lines.push(`- **Variables:** ${t.variableCount} total, ${t.requiredVariableCount} required`);
29
+ for (const tpl of result.templates) {
30
+ lines.push(`## ${tpl.name} (\`${tpl.id}\`)`);
31
+ lines.push(`- **${t('tools.spec_templates.category')}** ${tpl.category}${tpl.subcategory !== undefined ? ` (${tpl.subcategory})` : ''}`);
32
+ lines.push(`- **${t('tools.spec_templates.complexity')}** ${tpl.complexityScore}`);
33
+ lines.push(`- **${t('tools.spec_templates.criteria')}** ${tpl.criteriaCount}`);
34
+ lines.push(`- **${t('tools.spec_templates.templateDescription')}** ${tpl.description}`);
35
+ lines.push(`- **${t('tools.spec_templates.tags')}** ${tpl.tags.join(', ')}`);
36
+ lines.push(`- **${t('tools.spec_templates.variables')}** ${ti('tools.spec_templates.variablesDetail', { total: String(tpl.variableCount), required: String(tpl.requiredVariableCount) })}`);
29
37
  lines.push('');
30
38
  }
31
39
  }
32
40
  if (warnings.length > 0) {
33
- lines.push('### Custom Template Warnings');
41
+ lines.push(`### ${t('tools.spec_templates.customWarnings')}`);
34
42
  for (const w of warnings) {
35
43
  lines.push(`- **${w.file}**: ${w.error}`);
36
44
  }
37
45
  lines.push('');
38
46
  }
39
47
  lines.push('---');
40
- lines.push('Use `apply_template` with a template `id` to create a spec from a template.');
41
- lines.push('Custom templates: place JSON files in `data/global/spec-templates/custom/`.');
48
+ lines.push(t('tools.spec_templates.useApply'));
49
+ lines.push(t('tools.spec_templates.customLocation'));
42
50
  return {
43
51
  content: [{ type: 'text', text: lines.join('\n') }],
44
52
  };
@@ -46,7 +54,7 @@ export async function handleListTemplates(args) {
46
54
  catch (error) {
47
55
  const message = error instanceof Error ? error.message : String(error);
48
56
  return {
49
- content: [{ type: 'text', text: `Error listing templates: ${message}` }],
57
+ content: [{ type: 'text', text: ti('tools.spec_templates.listError', { message }) }],
50
58
  isError: true,
51
59
  };
52
60
  }
@@ -62,7 +70,7 @@ export async function handleApplyTemplate(args) {
62
70
  content: [
63
71
  {
64
72
  type: 'text',
65
- text: `Template not found: "${args.templateId}". Use list_templates to see available templates.`,
73
+ text: ti('tools.spec_templates.templateNotFound', { id: args.templateId }),
66
74
  },
67
75
  ],
68
76
  isError: true,
@@ -110,7 +118,7 @@ export async function handleApplyTemplate(args) {
110
118
  catch (error) {
111
119
  const message = error instanceof Error ? error.message : String(error);
112
120
  return {
113
- content: [{ type: 'text', text: `Error applying template: ${message}` }],
121
+ content: [{ type: 'text', text: ti('tools.spec_templates.applyError', { message }) }],
114
122
  isError: true,
115
123
  };
116
124
  }
@@ -139,30 +147,32 @@ function slugify(text) {
139
147
  * Builds a user-friendly error message for missing required variables.
140
148
  */
141
149
  function buildMissingVariablesMessage(missingKeys, definitions) {
142
- const lines = ['Missing required template variables:', ''];
150
+ const lines = [t('tools.spec_templates.missingVarsTitle'), ''];
143
151
  for (const key of missingKeys) {
144
152
  const def = definitions.find((d) => d.key === key);
145
153
  if (def !== undefined) {
146
154
  lines.push(`- **${def.label}** (key: \`${key}\`): ${def.description}`);
147
- lines.push(` Example: "${def.example}"`);
155
+ lines.push(` ${ti('tools.spec_templates.missingVarExample', { example: def.example })}`);
148
156
  }
149
157
  else {
150
158
  lines.push(`- \`${key}\``);
151
159
  }
152
160
  }
153
161
  lines.push('');
154
- lines.push('Provide all required variables in the `variables` array and try again.');
162
+ lines.push(t('tools.spec_templates.missingVarsHint'));
155
163
  return lines.join('\n');
156
164
  }
157
165
  /**
158
166
  * Builds the success message after a template is applied.
159
167
  */
160
168
  function buildSuccessMessage(templateName, outputDir) {
161
- return (`Template "${templateName}" applied successfully.\n` +
162
- `Files created in: ${outputDir}\n` +
163
- 'Next steps:\n' +
164
- '1. Review and customize HU.md acceptance criteria\n' +
165
- '2. Update FICHA-TECNICA.md with project-specific details\n' +
166
- '3. Run create_spec or update_status once the spec is approved');
169
+ return [
170
+ ti('tools.spec_templates.applySuccess', { name: templateName }),
171
+ ti('tools.spec_templates.filesCreated', { dir: outputDir }),
172
+ t('tools.spec_templates.nextSteps'),
173
+ t('tools.spec_templates.step1'),
174
+ t('tools.spec_templates.step2'),
175
+ t('tools.spec_templates.step3'),
176
+ ].join('\n');
167
177
  }
168
178
  //# sourceMappingURL=spec-templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-templates.js","sourceRoot":"","sources":["../../src/tools/spec-templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-templates.js","sourceRoot":"","sources":["../../src/tools/spec-templates.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/suggest-tooling/catalog-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,wBAAsB,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAehE"}
1
+ {"version":3,"file":"catalog-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/suggest-tooling/catalog-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,wBAAsB,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAgBhE"}
@@ -2,6 +2,7 @@
2
2
  import { readFile } from 'node:fs/promises';
3
3
  let catalogCache = null;
4
4
  export async function loadCatalog() {
5
+ /* v8 ignore next 3 -- cache hit path, depends on module-level state between test runs */
5
6
  if (catalogCache) {
6
7
  return catalogCache;
7
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-loader.js","sourceRoot":"","sources":["../../../src/tools/suggest-tooling/catalog-loader.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,IAAI,YAAY,GAA+B,IAAI,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;QAC3D,0BAA0B;QAC1B,OAAO,GAAG,CAAC,YAAY,CAAC;QACxB,YAAY,GAAG,GAA0B,CAAC;QAC1C,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"catalog-loader.js","sourceRoot":"","sources":["../../../src/tools/suggest-tooling/catalog-loader.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,IAAI,YAAY,GAA+B,IAAI,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,yFAAyF;IACzF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;QAC3D,0BAA0B;QAC1B,OAAO,GAAG,CAAC,YAAY,CAAC;QACxB,YAAY,GAAG,GAA0B,CAAC;QAC1C,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-group-handler.d.ts","sourceRoot":"","sources":["../../src/tools/tool-group-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAM3E,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAE3D;AAGD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;CACzC,GAAG,OAAO,CAAC,UAAU,CAAC,CAmDtB;AAGD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CA6B5D"}
1
+ {"version":3,"file":"tool-group-handler.d.ts","sourceRoot":"","sources":["../../src/tools/tool-group-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAO3E,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAE3D;AAGD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;CACzC,GAAG,OAAO,CAAC,UAAU,CAAC,CAyDtB;AAGD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CA2B5D"}
@@ -1,4 +1,5 @@
1
1
  // tools/tool-group-handler.ts — Handlers for tool group management (SPEC-074)
2
+ import { t, ti } from '../i18n/index.js';
2
3
  import { analyzeContext } from '../engine/tool-groups/context-analyzer.js';
3
4
  // Singleton reference set from register-tool-groups.ts
4
5
  let groupManager = null;
@@ -9,9 +10,7 @@ export function setGroupManager(manager) {
9
10
  export async function handleActivateGroup(args) {
10
11
  if (!groupManager) {
11
12
  return {
12
- content: [
13
- { type: 'text', text: 'Error: Tool groups not initialized. Call init_project first.' },
14
- ],
13
+ content: [{ type: 'text', text: t('tools.tool_groups.notInitialized') }],
15
14
  isError: true,
16
15
  };
17
16
  }
@@ -32,17 +31,23 @@ export async function handleActivateGroup(args) {
32
31
  const enabledGroups = new Set(result.allGroups.filter((g) => g.enabled).map((g) => g.id));
33
32
  const suggestions = analyzeContext(args.group, enabledGroups);
34
33
  const lines = [
35
- `Group "${args.group}" ${result.newState ? 'enabled' : 'disabled'} successfully.`,
34
+ ti('tools.tool_groups.groupToggled', {
35
+ group: args.group,
36
+ state: result.newState ? 'enabled' : 'disabled',
37
+ }),
36
38
  '',
37
- `Active tools: ${String(result.totalActiveTools)}/${String(result.totalTools)}`,
39
+ ti('tools.tool_groups.activeTools', {
40
+ active: String(result.totalActiveTools),
41
+ total: String(result.totalTools),
42
+ }),
38
43
  '',
39
- '## Group Status',
44
+ t('tools.tool_groups.groupStatusHeading'),
40
45
  ...result.allGroups.map((g) => `- ${g.enabled ? '✅' : '⬜'} **${g.name}** (${String(g.toolCount)} tools)`),
41
46
  ];
42
47
  if (suggestions.length > 0) {
43
- lines.push('', '## Suggestions');
48
+ lines.push('', t('tools.tool_groups.suggestionsHeading'));
44
49
  for (const s of suggestions) {
45
- lines.push(`- Consider activating **${s.suggestedGroup}**: ${s.reason}`);
50
+ lines.push(`- ${ti('tools.tool_groups.suggestActivating', { group: s.suggestedGroup, reason: s.reason })}`);
46
51
  }
47
52
  }
48
53
  return { content: [{ type: 'text', text: lines.join('\n') }] };
@@ -56,9 +61,7 @@ export async function handleActivateGroup(args) {
56
61
  export async function handleListGroups() {
57
62
  if (!groupManager) {
58
63
  return {
59
- content: [
60
- { type: 'text', text: 'Error: Tool groups not initialized. Call init_project first.' },
61
- ],
64
+ content: [{ type: 'text', text: t('tools.tool_groups.notInitialized') }],
62
65
  isError: true,
63
66
  };
64
67
  }
@@ -66,7 +69,7 @@ export async function handleListGroups() {
66
69
  const activeCount = groupManager.getActiveToolCount();
67
70
  const totalCount = groupManager.getTotalToolCount();
68
71
  const lines = [
69
- `# Tool Groups (${String(activeCount)}/${String(totalCount)} tools active)`,
72
+ ti('tools.tool_groups.listHeading', { active: String(activeCount), total: String(totalCount) }),
70
73
  '',
71
74
  ];
72
75
  for (const g of groups) {
@@ -74,7 +77,7 @@ export async function handleListGroups() {
74
77
  lines.push(`## ${icon} ${g.name} (${String(g.toolCount)} tools)`);
75
78
  lines.push(g.description);
76
79
  lines.push('');
77
- lines.push(`Tools: ${g.tools.join(', ')}`);
80
+ lines.push(ti('tools.tool_groups.toolsLabel', { tools: g.tools.join(', ') }));
78
81
  lines.push('');
79
82
  }
80
83
  return { content: [{ type: 'text', text: lines.join('\n') }] };
@@ -1 +1 @@
1
- {"version":3,"file":"tool-group-handler.js","sourceRoot":"","sources":["../../src/tools/tool-group-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-group-handler.js","sourceRoot":"","sources":["../../src/tools/tool-group-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ToolSlot } from '../types/index.js';
3
+ /**
4
+ * Returns the map of all registered tools captured via `withToolTracking()`.
5
+ * Each entry maps tool name -> { enable(), disable(), enabled }.
6
+ */
7
+ export declare function getRegisteredTools(): Map<string, ToolSlot>;
8
+ /**
9
+ * Wraps an McpServer instance with a Proxy that intercepts `registerTool` and
10
+ * `tool` calls to capture the returned RegisteredTool into the local registry.
11
+ * The returned server behaves identically to the original for all other operations.
12
+ */
13
+ export declare function withToolTracking(server: McpServer): McpServer;
14
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/tools/tool-registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKlD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAmB7D"}
@@ -0,0 +1,36 @@
1
+ // tools/tool-registry.ts — Local registry that tracks registered MCP tools.
2
+ // Replaces fragile access to SDK-internal `_registeredTools` property.
3
+ // Uses a Proxy to transparently intercept registerTool/tool calls on McpServer.
4
+ /** Module-level store of tool name -> RegisteredTool (ToolSlot interface). */
5
+ const registeredTools = new Map();
6
+ /**
7
+ * Returns the map of all registered tools captured via `withToolTracking()`.
8
+ * Each entry maps tool name -> { enable(), disable(), enabled }.
9
+ */
10
+ export function getRegisteredTools() {
11
+ return registeredTools;
12
+ }
13
+ /**
14
+ * Wraps an McpServer instance with a Proxy that intercepts `registerTool` and
15
+ * `tool` calls to capture the returned RegisteredTool into the local registry.
16
+ * The returned server behaves identically to the original for all other operations.
17
+ */
18
+ export function withToolTracking(server) {
19
+ return new Proxy(server, {
20
+ get(target, prop, receiver) {
21
+ if (prop === 'registerTool' || prop === 'tool') {
22
+ // Return a wrapper function that calls the original method and captures the result
23
+ return (...args) => {
24
+ const name = args[0];
25
+ const originalMethod = Reflect.get(target, prop, receiver);
26
+ const registered = originalMethod.apply(target, args);
27
+ registeredTools.set(name, registered);
28
+ return registered;
29
+ };
30
+ }
31
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
32
+ return Reflect.get(target, prop, receiver);
33
+ },
34
+ });
35
+ }
36
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/tools/tool-registry.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,uEAAuE;AACvE,gFAAgF;AAKhF,8EAA8E;AAC9E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC/C,mFAAmF;gBACnF,OAAO,CAAC,GAAG,IAAe,EAAY,EAAE;oBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;oBAC/B,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAE5C,CAAC;oBACd,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBACtD,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBACtC,OAAO,UAAU,CAAC;gBACpB,CAAC,CAAC;YACJ,CAAC;YACD,+DAA+D;YAC/D,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ConstitutionViolation } from '../types/index.js';
1
2
  export declare function runImplementingActions(projectId: string, specId: string): Promise<{
2
3
  autoBranch: string | undefined;
3
4
  protectedBranchWarning: string | null;
@@ -11,4 +12,9 @@ export declare function runDoneActions(projectId: string, specId: string, gitBra
11
12
  } | null;
12
13
  validationWarning: string | null;
13
14
  }>;
15
+ /**
16
+ * Best-effort constitution compliance check for status transitions.
17
+ * Returns warnings (never blocks the transition).
18
+ */
19
+ export declare function checkConstitutionOnTransition(projectId: string, title: string, tags: string[]): Promise<ConstitutionViolation[]>;
14
20
  //# sourceMappingURL=update-status-actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-status-actions.d.ts","sourceRoot":"","sources":["../../src/tools/update-status-actions.ts"],"names":[],"mappings":"AAMA,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC,CA0CD;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC;IACT,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC,CAgDD"}
1
+ {"version":3,"file":"update-status-actions.d.ts","sourceRoot":"","sources":["../../src/tools/update-status-actions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAO/D,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC,CA0CD;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC;IACT,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC,CAgDD;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAWlC"}