@mcp-graph-workflow/mcp-graph 5.1.4 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/dist/api/router.d.ts +1 -0
  2. package/dist/api/router.d.ts.map +1 -1
  3. package/dist/api/router.js +3 -2
  4. package/dist/api/router.js.map +1 -1
  5. package/dist/api/routes/folder.d.ts +4 -1
  6. package/dist/api/routes/folder.d.ts.map +1 -1
  7. package/dist/api/routes/folder.js +20 -1
  8. package/dist/api/routes/folder.js.map +1 -1
  9. package/dist/api/routes/gitnexus.d.ts.map +1 -1
  10. package/dist/api/routes/gitnexus.js +3 -1
  11. package/dist/api/routes/gitnexus.js.map +1 -1
  12. package/dist/core/analyzer/ac-parser.d.ts +7 -0
  13. package/dist/core/analyzer/ac-parser.d.ts.map +1 -0
  14. package/dist/core/analyzer/ac-parser.js +67 -0
  15. package/dist/core/analyzer/ac-parser.js.map +1 -0
  16. package/dist/core/analyzer/ac-validator.d.ts +15 -0
  17. package/dist/core/analyzer/ac-validator.d.ts.map +1 -0
  18. package/dist/core/analyzer/ac-validator.js +142 -0
  19. package/dist/core/analyzer/ac-validator.js.map +1 -0
  20. package/dist/core/analyzer/definition-of-ready.d.ts +16 -0
  21. package/dist/core/analyzer/definition-of-ready.d.ts.map +1 -0
  22. package/dist/core/analyzer/definition-of-ready.js +107 -0
  23. package/dist/core/analyzer/definition-of-ready.js.map +1 -0
  24. package/dist/core/analyzer/prd-quality.d.ts +14 -0
  25. package/dist/core/analyzer/prd-quality.d.ts.map +1 -0
  26. package/dist/core/analyzer/prd-quality.js +156 -0
  27. package/dist/core/analyzer/prd-quality.js.map +1 -0
  28. package/dist/core/analyzer/risk-assessment.d.ts +11 -0
  29. package/dist/core/analyzer/risk-assessment.d.ts.map +1 -0
  30. package/dist/core/analyzer/risk-assessment.js +97 -0
  31. package/dist/core/analyzer/risk-assessment.js.map +1 -0
  32. package/dist/core/analyzer/scope-analyzer.d.ts +7 -0
  33. package/dist/core/analyzer/scope-analyzer.d.ts.map +1 -0
  34. package/dist/core/analyzer/scope-analyzer.js +99 -0
  35. package/dist/core/analyzer/scope-analyzer.js.map +1 -0
  36. package/dist/core/config/ai-memory-generator.d.ts.map +1 -1
  37. package/dist/core/config/ai-memory-generator.js +8 -11
  38. package/dist/core/config/ai-memory-generator.js.map +1 -1
  39. package/dist/core/context/context-assembler.d.ts +3 -0
  40. package/dist/core/context/context-assembler.d.ts.map +1 -1
  41. package/dist/core/context/context-assembler.js +5 -2
  42. package/dist/core/context/context-assembler.js.map +1 -1
  43. package/dist/core/context/rag-context.d.ts +4 -2
  44. package/dist/core/context/rag-context.d.ts.map +1 -1
  45. package/dist/core/context/rag-context.js +8 -5
  46. package/dist/core/context/rag-context.js.map +1 -1
  47. package/dist/core/designer/adr-validator.d.ts +8 -0
  48. package/dist/core/designer/adr-validator.d.ts.map +1 -0
  49. package/dist/core/designer/adr-validator.js +61 -0
  50. package/dist/core/designer/adr-validator.js.map +1 -0
  51. package/dist/core/designer/coupling-analyzer.d.ts +7 -0
  52. package/dist/core/designer/coupling-analyzer.d.ts.map +1 -0
  53. package/dist/core/designer/coupling-analyzer.js +59 -0
  54. package/dist/core/designer/coupling-analyzer.js.map +1 -0
  55. package/dist/core/designer/definition-of-ready.d.ts +8 -0
  56. package/dist/core/designer/definition-of-ready.d.ts.map +1 -0
  57. package/dist/core/designer/definition-of-ready.js +146 -0
  58. package/dist/core/designer/definition-of-ready.js.map +1 -0
  59. package/dist/core/designer/interface-checker.d.ts +7 -0
  60. package/dist/core/designer/interface-checker.d.ts.map +1 -0
  61. package/dist/core/designer/interface-checker.js +53 -0
  62. package/dist/core/designer/interface-checker.js.map +1 -0
  63. package/dist/core/designer/tech-risk-assessor.d.ts +7 -0
  64. package/dist/core/designer/tech-risk-assessor.d.ts.map +1 -0
  65. package/dist/core/designer/tech-risk-assessor.js +95 -0
  66. package/dist/core/designer/tech-risk-assessor.js.map +1 -0
  67. package/dist/core/designer/traceability-matrix.d.ts +8 -0
  68. package/dist/core/designer/traceability-matrix.d.ts.map +1 -0
  69. package/dist/core/designer/traceability-matrix.js +67 -0
  70. package/dist/core/designer/traceability-matrix.js.map +1 -0
  71. package/dist/core/events/event-types.d.ts +11 -1
  72. package/dist/core/events/event-types.d.ts.map +1 -1
  73. package/dist/core/handoff/delivery-checklist.d.ts +10 -0
  74. package/dist/core/handoff/delivery-checklist.d.ts.map +1 -0
  75. package/dist/core/handoff/delivery-checklist.js +148 -0
  76. package/dist/core/handoff/delivery-checklist.js.map +1 -0
  77. package/dist/core/handoff/doc-completeness.d.ts +7 -0
  78. package/dist/core/handoff/doc-completeness.d.ts.map +1 -0
  79. package/dist/core/handoff/doc-completeness.js +19 -0
  80. package/dist/core/handoff/doc-completeness.js.map +1 -0
  81. package/dist/core/implementer/definition-of-done.d.ts +11 -0
  82. package/dist/core/implementer/definition-of-done.d.ts.map +1 -0
  83. package/dist/core/implementer/definition-of-done.js +158 -0
  84. package/dist/core/implementer/definition-of-done.js.map +1 -0
  85. package/dist/core/implementer/sprint-progress.d.ts +11 -0
  86. package/dist/core/implementer/sprint-progress.d.ts.map +1 -0
  87. package/dist/core/implementer/sprint-progress.js +80 -0
  88. package/dist/core/implementer/sprint-progress.js.map +1 -0
  89. package/dist/core/implementer/tdd-checker.d.ts +15 -0
  90. package/dist/core/implementer/tdd-checker.d.ts.map +1 -0
  91. package/dist/core/implementer/tdd-checker.js +132 -0
  92. package/dist/core/implementer/tdd-checker.js.map +1 -0
  93. package/dist/core/integrations/gitnexus-launcher.d.ts +5 -0
  94. package/dist/core/integrations/gitnexus-launcher.d.ts.map +1 -1
  95. package/dist/core/integrations/gitnexus-launcher.js +30 -3
  96. package/dist/core/integrations/gitnexus-launcher.js.map +1 -1
  97. package/dist/core/listener/backlog-health.d.ts +7 -0
  98. package/dist/core/listener/backlog-health.d.ts.map +1 -0
  99. package/dist/core/listener/backlog-health.js +64 -0
  100. package/dist/core/listener/backlog-health.js.map +1 -0
  101. package/dist/core/listener/feedback-readiness.d.ts +11 -0
  102. package/dist/core/listener/feedback-readiness.d.ts.map +1 -0
  103. package/dist/core/listener/feedback-readiness.js +124 -0
  104. package/dist/core/listener/feedback-readiness.js.map +1 -0
  105. package/dist/core/planner/lifecycle-phase.d.ts +26 -3
  106. package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
  107. package/dist/core/planner/lifecycle-phase.js +209 -17
  108. package/dist/core/planner/lifecycle-phase.js.map +1 -1
  109. package/dist/core/rag/phase-metadata.d.ts +23 -0
  110. package/dist/core/rag/phase-metadata.d.ts.map +1 -0
  111. package/dist/core/rag/phase-metadata.js +72 -0
  112. package/dist/core/rag/phase-metadata.js.map +1 -0
  113. package/dist/core/rag/phase-summary.d.ts +17 -0
  114. package/dist/core/rag/phase-summary.d.ts.map +1 -0
  115. package/dist/core/rag/phase-summary.js +104 -0
  116. package/dist/core/rag/phase-summary.js.map +1 -0
  117. package/dist/core/rag/prd-indexer.d.ts +16 -0
  118. package/dist/core/rag/prd-indexer.d.ts.map +1 -0
  119. package/dist/core/rag/prd-indexer.js +37 -0
  120. package/dist/core/rag/prd-indexer.js.map +1 -0
  121. package/dist/core/reviewer/review-readiness.d.ts +8 -0
  122. package/dist/core/reviewer/review-readiness.d.ts.map +1 -0
  123. package/dist/core/reviewer/review-readiness.js +159 -0
  124. package/dist/core/reviewer/review-readiness.js.map +1 -0
  125. package/dist/core/store/knowledge-store.d.ts +9 -0
  126. package/dist/core/store/knowledge-store.d.ts.map +1 -1
  127. package/dist/core/store/knowledge-store.js +22 -0
  128. package/dist/core/store/knowledge-store.js.map +1 -1
  129. package/dist/core/utils/errors.d.ts +7 -0
  130. package/dist/core/utils/errors.d.ts.map +1 -1
  131. package/dist/core/utils/errors.js +14 -0
  132. package/dist/core/utils/errors.js.map +1 -1
  133. package/dist/core/validator/definition-of-ready.d.ts +8 -0
  134. package/dist/core/validator/definition-of-ready.d.ts.map +1 -0
  135. package/dist/core/validator/definition-of-ready.js +155 -0
  136. package/dist/core/validator/definition-of-ready.js.map +1 -0
  137. package/dist/core/validator/done-integrity-checker.d.ts +7 -0
  138. package/dist/core/validator/done-integrity-checker.d.ts.map +1 -0
  139. package/dist/core/validator/done-integrity-checker.js +38 -0
  140. package/dist/core/validator/done-integrity-checker.js.map +1 -0
  141. package/dist/core/validator/status-flow-checker.d.ts +7 -0
  142. package/dist/core/validator/status-flow-checker.d.ts.map +1 -0
  143. package/dist/core/validator/status-flow-checker.js +26 -0
  144. package/dist/core/validator/status-flow-checker.js.map +1 -0
  145. package/dist/mcp/app-factory.d.ts +1 -0
  146. package/dist/mcp/app-factory.d.ts.map +1 -1
  147. package/dist/mcp/app-factory.js +2 -2
  148. package/dist/mcp/app-factory.js.map +1 -1
  149. package/dist/mcp/lifecycle-wrapper.d.ts +14 -4
  150. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  151. package/dist/mcp/lifecycle-wrapper.js +104 -5
  152. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  153. package/dist/mcp/server.js +3 -2
  154. package/dist/mcp/server.js.map +1 -1
  155. package/dist/mcp/tools/{stats.d.ts → analyze.d.ts} +2 -2
  156. package/dist/mcp/tools/analyze.d.ts.map +1 -0
  157. package/dist/mcp/tools/analyze.js +272 -0
  158. package/dist/mcp/tools/analyze.js.map +1 -0
  159. package/dist/mcp/tools/import-prd.d.ts.map +1 -1
  160. package/dist/mcp/tools/import-prd.js +15 -1
  161. package/dist/mcp/tools/import-prd.js.map +1 -1
  162. package/dist/mcp/tools/index.d.ts.map +1 -1
  163. package/dist/mcp/tools/index.js +6 -10
  164. package/dist/mcp/tools/index.js.map +1 -1
  165. package/dist/mcp/tools/{velocity.d.ts → metrics.d.ts} +2 -2
  166. package/dist/mcp/tools/metrics.d.ts.map +1 -0
  167. package/dist/mcp/tools/metrics.js +69 -0
  168. package/dist/mcp/tools/metrics.js.map +1 -0
  169. package/dist/mcp/tools/next.d.ts.map +1 -1
  170. package/dist/mcp/tools/next.js +19 -5
  171. package/dist/mcp/tools/next.js.map +1 -1
  172. package/dist/mcp/tools/plan-sprint.d.ts.map +1 -1
  173. package/dist/mcp/tools/plan-sprint.js +20 -0
  174. package/dist/mcp/tools/plan-sprint.js.map +1 -1
  175. package/dist/mcp/tools/rag-context.d.ts.map +1 -1
  176. package/dist/mcp/tools/rag-context.js +20 -5
  177. package/dist/mcp/tools/rag-context.js.map +1 -1
  178. package/dist/mcp/tools/set-phase.d.ts.map +1 -1
  179. package/dist/mcp/tools/set-phase.js +64 -6
  180. package/dist/mcp/tools/set-phase.js.map +1 -1
  181. package/dist/mcp/tools/update-status.d.ts.map +1 -1
  182. package/dist/mcp/tools/update-status.js +21 -6
  183. package/dist/mcp/tools/update-status.js.map +1 -1
  184. package/dist/mcp/tools/{decompose.d.ts → validate-ac.d.ts} +2 -2
  185. package/dist/mcp/tools/validate-ac.d.ts.map +1 -0
  186. package/dist/mcp/tools/validate-ac.js +23 -0
  187. package/dist/mcp/tools/validate-ac.js.map +1 -0
  188. package/dist/schemas/ac-quality-schema.d.ts +90 -0
  189. package/dist/schemas/ac-quality-schema.d.ts.map +1 -0
  190. package/dist/schemas/ac-quality-schema.js +34 -0
  191. package/dist/schemas/ac-quality-schema.js.map +1 -0
  192. package/dist/schemas/analyzer-schema.d.ts +160 -0
  193. package/dist/schemas/analyzer-schema.d.ts.map +1 -0
  194. package/dist/schemas/analyzer-schema.js +74 -0
  195. package/dist/schemas/analyzer-schema.js.map +1 -0
  196. package/dist/schemas/designer-schema.d.ts +259 -0
  197. package/dist/schemas/designer-schema.d.ts.map +1 -0
  198. package/dist/schemas/designer-schema.js +102 -0
  199. package/dist/schemas/designer-schema.js.map +1 -0
  200. package/dist/schemas/handoff-schema.d.ts +49 -0
  201. package/dist/schemas/handoff-schema.d.ts.map +1 -0
  202. package/dist/schemas/handoff-schema.js +28 -0
  203. package/dist/schemas/handoff-schema.js.map +1 -0
  204. package/dist/schemas/implementer-schema.d.ts +187 -0
  205. package/dist/schemas/implementer-schema.d.ts.map +1 -0
  206. package/dist/schemas/implementer-schema.js +80 -0
  207. package/dist/schemas/implementer-schema.js.map +1 -0
  208. package/dist/schemas/knowledge.schema.d.ts +8 -0
  209. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  210. package/dist/schemas/knowledge.schema.js +1 -1
  211. package/dist/schemas/knowledge.schema.js.map +1 -1
  212. package/dist/schemas/listener-schema.d.ts +62 -0
  213. package/dist/schemas/listener-schema.d.ts.map +1 -0
  214. package/dist/schemas/listener-schema.js +35 -0
  215. package/dist/schemas/listener-schema.js.map +1 -0
  216. package/dist/schemas/reviewer-schema.d.ts +34 -0
  217. package/dist/schemas/reviewer-schema.d.ts.map +1 -0
  218. package/dist/schemas/reviewer-schema.js +17 -0
  219. package/dist/schemas/reviewer-schema.js.map +1 -0
  220. package/dist/schemas/validator-schema.d.ts +79 -0
  221. package/dist/schemas/validator-schema.d.ts.map +1 -0
  222. package/dist/schemas/validator-schema.js +43 -0
  223. package/dist/schemas/validator-schema.js.map +1 -0
  224. package/dist/web/dashboard/dist/assets/{benchmark-tab-CuZsNkbP.js → benchmark-tab-DE6hAHVG.js} +1 -1
  225. package/dist/web/dashboard/dist/assets/gitnexus-tab-DsBjJHx8.js +312 -0
  226. package/dist/web/dashboard/dist/assets/graph-tab-C09DzeZ_.js +1 -0
  227. package/dist/web/dashboard/dist/assets/{graph-utils-D5iPoiPD.js → graph-utils-D4LFspTf.js} +5 -5
  228. package/dist/web/dashboard/dist/assets/{index-CN9Wi5mu.js → index-B2fTJ4AS.js} +2 -2
  229. package/dist/web/dashboard/dist/assets/index-CkqEqKiH.css +1 -0
  230. package/dist/web/dashboard/dist/assets/{insights-tab-CLA0OIxd.js → insights-tab-Bm7CDckb.js} +1 -1
  231. package/dist/web/dashboard/dist/assets/{logs-tab-CSYlvuCu.js → logs-tab-Cxpcv_ni.js} +1 -1
  232. package/dist/web/dashboard/dist/assets/{prd-backlog-tab-BBLpErTk.js → prd-backlog-tab-X84Rj-IB.js} +1 -1
  233. package/dist/web/dashboard/dist/assets/{serena-tab-BxYP8nU5.js → serena-tab-BunULNvw.js} +1 -1
  234. package/dist/web/dashboard/dist/index.html +2 -2
  235. package/package.json +1 -1
  236. package/dist/mcp/tools/bulk-update-status.d.ts +0 -4
  237. package/dist/mcp/tools/bulk-update-status.d.ts.map +0 -1
  238. package/dist/mcp/tools/bulk-update-status.js +0 -22
  239. package/dist/mcp/tools/bulk-update-status.js.map +0 -1
  240. package/dist/mcp/tools/decompose.d.ts.map +0 -1
  241. package/dist/mcp/tools/decompose.js +0 -25
  242. package/dist/mcp/tools/decompose.js.map +0 -1
  243. package/dist/mcp/tools/dependencies.d.ts +0 -4
  244. package/dist/mcp/tools/dependencies.d.ts.map +0 -1
  245. package/dist/mcp/tools/dependencies.js +0 -47
  246. package/dist/mcp/tools/dependencies.js.map +0 -1
  247. package/dist/mcp/tools/stats.d.ts.map +0 -1
  248. package/dist/mcp/tools/stats.js +0 -46
  249. package/dist/mcp/tools/stats.js.map +0 -1
  250. package/dist/mcp/tools/velocity.d.ts.map +0 -1
  251. package/dist/mcp/tools/velocity.js +0 -25
  252. package/dist/mcp/tools/velocity.js.map +0 -1
  253. package/dist/web/dashboard/dist/assets/gitnexus-tab-D7If6lxT.js +0 -312
  254. package/dist/web/dashboard/dist/assets/graph-tab-Dp7PfUEJ.js +0 -1
  255. package/dist/web/dashboard/dist/assets/index-BUl7yWBP.css +0 -1
@@ -3,14 +3,29 @@ import { NodeStatusSchema } from "../../schemas/node.schema.js";
3
3
  import { NodeNotFoundError } from "../../core/utils/errors.js";
4
4
  import { logger } from "../../core/utils/logger.js";
5
5
  export function registerUpdateStatus(server, store) {
6
- server.tool("update_status", "Update the status of a node", {
7
- id: z.string().describe("The node ID to update"),
6
+ server.tool("update_status", "Update the status of one or more nodes. Pass a single ID string or an array of IDs for bulk updates.", {
7
+ id: z.union([z.string(), z.array(z.string())]).describe("Node ID (string) or array of node IDs for bulk update"),
8
8
  status: NodeStatusSchema.describe("The new status"),
9
9
  }, async ({ id, status }) => {
10
- logger.debug("tool:update_status", { id, status });
11
- const updated = store.updateNodeStatus(id, status);
10
+ const ids = Array.isArray(id) ? id : [id];
11
+ const isBulk = ids.length > 1;
12
+ logger.debug("tool:update_status", { ids, status, bulk: isBulk });
13
+ if (isBulk) {
14
+ const result = store.bulkUpdateStatus(ids, status);
15
+ logger.info("tool:update_status:ok", { count: ids.length, status, updated: result.updated.length });
16
+ return {
17
+ content: [
18
+ {
19
+ type: "text",
20
+ text: JSON.stringify({ ok: true, ...result }, null, 2),
21
+ },
22
+ ],
23
+ };
24
+ }
25
+ // Single node update
26
+ const updated = store.updateNodeStatus(ids[0], status);
12
27
  if (!updated) {
13
- const err = new NodeNotFoundError(id);
28
+ const err = new NodeNotFoundError(ids[0]);
14
29
  logger.warn("tool:update_status:fail", { error: err.message });
15
30
  return {
16
31
  content: [
@@ -19,7 +34,7 @@ export function registerUpdateStatus(server, store) {
19
34
  isError: true,
20
35
  };
21
36
  }
22
- logger.info("tool:update_status:ok", { id, status });
37
+ logger.info("tool:update_status:ok", { id: ids[0], status });
23
38
  return {
24
39
  content: [
25
40
  {
@@ -1 +1 @@
1
- {"version":3,"file":"update-status.js","sourceRoot":"","sources":["../../../src/mcp/tools/update-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,KAAkB;IACxE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,6BAA6B,EAC7B;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAChD,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACpD,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACvB,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAoB,CAAC,CAAC;QAEjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE;iBACxE;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACrD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC3D;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"update-status.js","sourceRoot":"","sources":["../../../src/mcp/tools/update-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,KAAkB;IACxE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,sGAAsG,EACtG;QACE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;QAChH,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACpD,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QAE9B,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAElE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAoB,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACpG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBACvD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAoB,CAAC,CAAC;QAErE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE;iBACxE;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC3D;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { SqliteStore } from "../../core/store/sqlite-store.js";
3
- export declare function registerDecompose(server: McpServer, store: SqliteStore): void;
4
- //# sourceMappingURL=decompose.d.ts.map
3
+ export declare function registerValidateAc(server: McpServer, store: SqliteStore): void;
4
+ //# sourceMappingURL=validate-ac.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-ac.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/validate-ac.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAIpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAwB9E"}
@@ -0,0 +1,23 @@
1
+ import { z } from "zod/v4";
2
+ import { validateAcQuality } from "../../core/analyzer/ac-validator.js";
3
+ import { logger } from "../../core/utils/logger.js";
4
+ export function registerValidateAc(server, store) {
5
+ server.tool("validate_ac", "Validate acceptance criteria quality using INVEST checks (Independent, Negotiable, Valuable, Estimable, Small, Testable). Detects GWT format (EN/PT), vague terms, and testability.", {
6
+ nodeId: z.string().optional().describe("Validate AC for a specific node"),
7
+ all: z.boolean().optional().describe("Validate all nodes with AC (default: true if no nodeId)"),
8
+ }, async ({ nodeId, all }) => {
9
+ logger.debug("tool:validate_ac", { nodeId, all });
10
+ const doc = store.toGraphDocument();
11
+ const report = validateAcQuality(doc, nodeId, all ?? !nodeId);
12
+ logger.info("tool:validate_ac:ok", { nodes: report.nodes.length, score: report.overallScore });
13
+ return {
14
+ content: [
15
+ {
16
+ type: "text",
17
+ text: JSON.stringify({ ok: true, ...report }, null, 2),
18
+ },
19
+ ],
20
+ };
21
+ });
22
+ }
23
+ //# sourceMappingURL=validate-ac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-ac.js","sourceRoot":"","sources":["../../../src/mcp/tools/validate-ac.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,KAAkB;IACtE,MAAM,CAAC,IAAI,CACT,aAAa,EACb,qLAAqL,EACrL;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACzE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;KAChG,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;QACxB,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9D,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC/F,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvD;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { z } from "zod/v4";
2
+ export declare const AcFormatSchema: z.ZodEnum<{
3
+ gwt: "gwt";
4
+ free_text: "free_text";
5
+ checklist: "checklist";
6
+ }>;
7
+ export declare const GwtStepSchema: z.ZodObject<{
8
+ keyword: z.ZodString;
9
+ text: z.ZodString;
10
+ }, z.core.$strip>;
11
+ export declare const ParsedAcSchema: z.ZodObject<{
12
+ raw: z.ZodString;
13
+ format: z.ZodEnum<{
14
+ gwt: "gwt";
15
+ free_text: "free_text";
16
+ checklist: "checklist";
17
+ }>;
18
+ steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
19
+ keyword: z.ZodString;
20
+ text: z.ZodString;
21
+ }, z.core.$strip>>>;
22
+ isTestable: z.ZodBoolean;
23
+ isMeasurable: z.ZodBoolean;
24
+ }, z.core.$strip>;
25
+ export type ParsedAc = z.infer<typeof ParsedAcSchema>;
26
+ export type GwtStep = z.infer<typeof GwtStepSchema>;
27
+ export type AcFormat = z.infer<typeof AcFormatSchema>;
28
+ export declare const InvestCheckSchema: z.ZodObject<{
29
+ criterion: z.ZodString;
30
+ passed: z.ZodBoolean;
31
+ details: z.ZodString;
32
+ }, z.core.$strip>;
33
+ export declare const AcNodeReportSchema: z.ZodObject<{
34
+ nodeId: z.ZodString;
35
+ title: z.ZodString;
36
+ score: z.ZodNumber;
37
+ parsedAcs: z.ZodArray<z.ZodObject<{
38
+ raw: z.ZodString;
39
+ format: z.ZodEnum<{
40
+ gwt: "gwt";
41
+ free_text: "free_text";
42
+ checklist: "checklist";
43
+ }>;
44
+ steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
45
+ keyword: z.ZodString;
46
+ text: z.ZodString;
47
+ }, z.core.$strip>>>;
48
+ isTestable: z.ZodBoolean;
49
+ isMeasurable: z.ZodBoolean;
50
+ }, z.core.$strip>>;
51
+ investChecks: z.ZodArray<z.ZodObject<{
52
+ criterion: z.ZodString;
53
+ passed: z.ZodBoolean;
54
+ details: z.ZodString;
55
+ }, z.core.$strip>>;
56
+ vagueTerms: z.ZodArray<z.ZodString>;
57
+ }, z.core.$strip>;
58
+ export declare const AcQualityReportSchema: z.ZodObject<{
59
+ nodes: z.ZodArray<z.ZodObject<{
60
+ nodeId: z.ZodString;
61
+ title: z.ZodString;
62
+ score: z.ZodNumber;
63
+ parsedAcs: z.ZodArray<z.ZodObject<{
64
+ raw: z.ZodString;
65
+ format: z.ZodEnum<{
66
+ gwt: "gwt";
67
+ free_text: "free_text";
68
+ checklist: "checklist";
69
+ }>;
70
+ steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
71
+ keyword: z.ZodString;
72
+ text: z.ZodString;
73
+ }, z.core.$strip>>>;
74
+ isTestable: z.ZodBoolean;
75
+ isMeasurable: z.ZodBoolean;
76
+ }, z.core.$strip>>;
77
+ investChecks: z.ZodArray<z.ZodObject<{
78
+ criterion: z.ZodString;
79
+ passed: z.ZodBoolean;
80
+ details: z.ZodString;
81
+ }, z.core.$strip>>;
82
+ vagueTerms: z.ZodArray<z.ZodString>;
83
+ }, z.core.$strip>>;
84
+ overallScore: z.ZodNumber;
85
+ summary: z.ZodString;
86
+ }, z.core.$strip>;
87
+ export type AcQualityReport = z.infer<typeof AcQualityReportSchema>;
88
+ export type AcNodeReport = z.infer<typeof AcNodeReportSchema>;
89
+ export type InvestCheck = z.infer<typeof InvestCheckSchema>;
90
+ //# sourceMappingURL=ac-quality-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ac-quality-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/ac-quality-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,eAAO,MAAM,cAAc;;;;EAA4C,CAAC;AAExE,eAAO,MAAM,aAAa;;;iBAGxB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;iBAMzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAItD,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;iBAO7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { z } from "zod/v4";
2
+ // ── Parsed AC ──
3
+ export const AcFormatSchema = z.enum(["gwt", "free_text", "checklist"]);
4
+ export const GwtStepSchema = z.object({
5
+ keyword: z.string(),
6
+ text: z.string(),
7
+ });
8
+ export const ParsedAcSchema = z.object({
9
+ raw: z.string(),
10
+ format: AcFormatSchema,
11
+ steps: z.array(GwtStepSchema).optional(),
12
+ isTestable: z.boolean(),
13
+ isMeasurable: z.boolean(),
14
+ });
15
+ // ── AC Quality Report ──
16
+ export const InvestCheckSchema = z.object({
17
+ criterion: z.string(),
18
+ passed: z.boolean(),
19
+ details: z.string(),
20
+ });
21
+ export const AcNodeReportSchema = z.object({
22
+ nodeId: z.string(),
23
+ title: z.string(),
24
+ score: z.number().min(0).max(100),
25
+ parsedAcs: z.array(ParsedAcSchema),
26
+ investChecks: z.array(InvestCheckSchema),
27
+ vagueTerms: z.array(z.string()),
28
+ });
29
+ export const AcQualityReportSchema = z.object({
30
+ nodes: z.array(AcNodeReportSchema),
31
+ overallScore: z.number().min(0).max(100),
32
+ summary: z.string(),
33
+ });
34
+ //# sourceMappingURL=ac-quality-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ac-quality-schema.js","sourceRoot":"","sources":["../../src/schemas/ac-quality-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,kBAAkB;AAElB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;IACxC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;CAC1B,CAAC,CAAC;AAMH,0BAA0B;AAE1B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IAClC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACxC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,160 @@
1
+ import { z } from "zod/v4";
2
+ export declare const SectionQualitySchema: z.ZodEnum<{
3
+ adequate: "adequate";
4
+ missing: "missing";
5
+ weak: "weak";
6
+ strong: "strong";
7
+ }>;
8
+ export declare const PrdQualitySectionSchema: z.ZodObject<{
9
+ name: z.ZodString;
10
+ quality: z.ZodEnum<{
11
+ adequate: "adequate";
12
+ missing: "missing";
13
+ weak: "weak";
14
+ strong: "strong";
15
+ }>;
16
+ issues: z.ZodArray<z.ZodString>;
17
+ suggestions: z.ZodArray<z.ZodString>;
18
+ }, z.core.$strip>;
19
+ export declare const PrdQualityGradeSchema: z.ZodEnum<{
20
+ A: "A";
21
+ B: "B";
22
+ C: "C";
23
+ D: "D";
24
+ F: "F";
25
+ }>;
26
+ export declare const PrdQualityReportSchema: z.ZodObject<{
27
+ score: z.ZodNumber;
28
+ grade: z.ZodEnum<{
29
+ A: "A";
30
+ B: "B";
31
+ C: "C";
32
+ D: "D";
33
+ F: "F";
34
+ }>;
35
+ sections: z.ZodArray<z.ZodObject<{
36
+ name: z.ZodString;
37
+ quality: z.ZodEnum<{
38
+ adequate: "adequate";
39
+ missing: "missing";
40
+ weak: "weak";
41
+ strong: "strong";
42
+ }>;
43
+ issues: z.ZodArray<z.ZodString>;
44
+ suggestions: z.ZodArray<z.ZodString>;
45
+ }, z.core.$strip>>;
46
+ readyForDesign: z.ZodBoolean;
47
+ summary: z.ZodString;
48
+ }, z.core.$strip>;
49
+ export type PrdQualityReport = z.infer<typeof PrdQualityReportSchema>;
50
+ export type PrdQualitySection = z.infer<typeof PrdQualitySectionSchema>;
51
+ export type SectionQuality = z.infer<typeof SectionQualitySchema>;
52
+ export type PrdQualityGrade = z.infer<typeof PrdQualityGradeSchema>;
53
+ export declare const OrphanNodeSchema: z.ZodObject<{
54
+ id: z.ZodString;
55
+ title: z.ZodString;
56
+ type: z.ZodString;
57
+ reason: z.ZodString;
58
+ }, z.core.$strip>;
59
+ export declare const CoverageMatrixSchema: z.ZodObject<{
60
+ requirementsToTasks: z.ZodNumber;
61
+ tasksToAc: z.ZodNumber;
62
+ orphanRequirements: z.ZodNumber;
63
+ orphanTasks: z.ZodNumber;
64
+ }, z.core.$strip>;
65
+ export declare const ScopeAnalysisSchema: z.ZodObject<{
66
+ orphans: z.ZodArray<z.ZodObject<{
67
+ id: z.ZodString;
68
+ title: z.ZodString;
69
+ type: z.ZodString;
70
+ reason: z.ZodString;
71
+ }, z.core.$strip>>;
72
+ cycles: z.ZodArray<z.ZodArray<z.ZodString>>;
73
+ coverage: z.ZodObject<{
74
+ requirementsToTasks: z.ZodNumber;
75
+ tasksToAc: z.ZodNumber;
76
+ orphanRequirements: z.ZodNumber;
77
+ orphanTasks: z.ZodNumber;
78
+ }, z.core.$strip>;
79
+ conflicts: z.ZodArray<z.ZodString>;
80
+ summary: z.ZodString;
81
+ }, z.core.$strip>;
82
+ export type ScopeAnalysis = z.infer<typeof ScopeAnalysisSchema>;
83
+ export type OrphanNode = z.infer<typeof OrphanNodeSchema>;
84
+ export type CoverageMatrix = z.infer<typeof CoverageMatrixSchema>;
85
+ export declare const ReadinessCheckSchema: z.ZodObject<{
86
+ name: z.ZodString;
87
+ passed: z.ZodBoolean;
88
+ details: z.ZodString;
89
+ }, z.core.$strip>;
90
+ export declare const ReadinessReportSchema: z.ZodObject<{
91
+ readyForNextPhase: z.ZodBoolean;
92
+ checks: z.ZodArray<z.ZodObject<{
93
+ name: z.ZodString;
94
+ passed: z.ZodBoolean;
95
+ details: z.ZodString;
96
+ }, z.core.$strip>>;
97
+ blockers: z.ZodArray<z.ZodString>;
98
+ warnings: z.ZodArray<z.ZodString>;
99
+ summary: z.ZodString;
100
+ }, z.core.$strip>;
101
+ export type ReadinessReport = z.infer<typeof ReadinessReportSchema>;
102
+ export type ReadinessCheck = z.infer<typeof ReadinessCheckSchema>;
103
+ export declare const RiskLevelSchema: z.ZodEnum<{
104
+ low: "low";
105
+ medium: "medium";
106
+ high: "high";
107
+ critical: "critical";
108
+ }>;
109
+ export declare const RiskEntrySchema: z.ZodObject<{
110
+ nodeId: z.ZodString;
111
+ title: z.ZodString;
112
+ probability: z.ZodNumber;
113
+ impact: z.ZodNumber;
114
+ score: z.ZodNumber;
115
+ level: z.ZodEnum<{
116
+ low: "low";
117
+ medium: "medium";
118
+ high: "high";
119
+ critical: "critical";
120
+ }>;
121
+ mitigationStatus: z.ZodEnum<{
122
+ partial: "partial";
123
+ mitigated: "mitigated";
124
+ unmitigated: "unmitigated";
125
+ }>;
126
+ suggestedMitigation: z.ZodOptional<z.ZodString>;
127
+ }, z.core.$strip>;
128
+ export declare const RiskMatrixSchema: z.ZodObject<{
129
+ risks: z.ZodArray<z.ZodObject<{
130
+ nodeId: z.ZodString;
131
+ title: z.ZodString;
132
+ probability: z.ZodNumber;
133
+ impact: z.ZodNumber;
134
+ score: z.ZodNumber;
135
+ level: z.ZodEnum<{
136
+ low: "low";
137
+ medium: "medium";
138
+ high: "high";
139
+ critical: "critical";
140
+ }>;
141
+ mitigationStatus: z.ZodEnum<{
142
+ partial: "partial";
143
+ mitigated: "mitigated";
144
+ unmitigated: "unmitigated";
145
+ }>;
146
+ suggestedMitigation: z.ZodOptional<z.ZodString>;
147
+ }, z.core.$strip>>;
148
+ summary: z.ZodObject<{
149
+ total: z.ZodNumber;
150
+ critical: z.ZodNumber;
151
+ high: z.ZodNumber;
152
+ medium: z.ZodNumber;
153
+ low: z.ZodNumber;
154
+ mitigated: z.ZodNumber;
155
+ }, z.core.$strip>;
156
+ }, z.core.$strip>;
157
+ export type RiskMatrix = z.infer<typeof RiskMatrixSchema>;
158
+ export type RiskEntry = z.infer<typeof RiskEntrySchema>;
159
+ export type RiskLevel = z.infer<typeof RiskLevelSchema>;
160
+ //# sourceMappingURL=analyzer-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/analyzer-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,eAAO,MAAM,oBAAoB;;;;;EAAoD,CAAC;AAEtF,eAAO,MAAM,uBAAuB;;;;;;;;;;iBAKlC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;EAAoC,CAAC;AAEvE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;iBAMjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAIpE,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;iBAK/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;iBAM9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAMhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE,eAAO,MAAM,eAAe;;;;;EAAgD,CAAC;AAE7E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;iBAS1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAU3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { z } from "zod/v4";
2
+ // ── PRD Quality ──
3
+ export const SectionQualitySchema = z.enum(["missing", "weak", "adequate", "strong"]);
4
+ export const PrdQualitySectionSchema = z.object({
5
+ name: z.string(),
6
+ quality: SectionQualitySchema,
7
+ issues: z.array(z.string()),
8
+ suggestions: z.array(z.string()),
9
+ });
10
+ export const PrdQualityGradeSchema = z.enum(["A", "B", "C", "D", "F"]);
11
+ export const PrdQualityReportSchema = z.object({
12
+ score: z.number().min(0).max(100),
13
+ grade: PrdQualityGradeSchema,
14
+ sections: z.array(PrdQualitySectionSchema),
15
+ readyForDesign: z.boolean(),
16
+ summary: z.string(),
17
+ });
18
+ // ── Scope Analysis ──
19
+ export const OrphanNodeSchema = z.object({
20
+ id: z.string(),
21
+ title: z.string(),
22
+ type: z.string(),
23
+ reason: z.string(),
24
+ });
25
+ export const CoverageMatrixSchema = z.object({
26
+ requirementsToTasks: z.number().min(0).max(100),
27
+ tasksToAc: z.number().min(0).max(100),
28
+ orphanRequirements: z.number(),
29
+ orphanTasks: z.number(),
30
+ });
31
+ export const ScopeAnalysisSchema = z.object({
32
+ orphans: z.array(OrphanNodeSchema),
33
+ cycles: z.array(z.array(z.string())),
34
+ coverage: CoverageMatrixSchema,
35
+ conflicts: z.array(z.string()),
36
+ summary: z.string(),
37
+ });
38
+ // ── Definition of Ready ──
39
+ export const ReadinessCheckSchema = z.object({
40
+ name: z.string(),
41
+ passed: z.boolean(),
42
+ details: z.string(),
43
+ });
44
+ export const ReadinessReportSchema = z.object({
45
+ readyForNextPhase: z.boolean(),
46
+ checks: z.array(ReadinessCheckSchema),
47
+ blockers: z.array(z.string()),
48
+ warnings: z.array(z.string()),
49
+ summary: z.string(),
50
+ });
51
+ // ── Risk Assessment ──
52
+ export const RiskLevelSchema = z.enum(["low", "medium", "high", "critical"]);
53
+ export const RiskEntrySchema = z.object({
54
+ nodeId: z.string(),
55
+ title: z.string(),
56
+ probability: z.number().min(1).max(5),
57
+ impact: z.number().min(1).max(5),
58
+ score: z.number(),
59
+ level: RiskLevelSchema,
60
+ mitigationStatus: z.enum(["mitigated", "partial", "unmitigated"]),
61
+ suggestedMitigation: z.string().optional(),
62
+ });
63
+ export const RiskMatrixSchema = z.object({
64
+ risks: z.array(RiskEntrySchema),
65
+ summary: z.object({
66
+ total: z.number(),
67
+ critical: z.number(),
68
+ high: z.number(),
69
+ medium: z.number(),
70
+ low: z.number(),
71
+ mitigated: z.number(),
72
+ }),
73
+ });
74
+ //# sourceMappingURL=analyzer-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer-schema.js","sourceRoot":"","sources":["../../src/schemas/analyzer-schema.ts"],"names":[],"mappings":"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"}