@maestro-ai/mcp-server 5.5.2 → 5.6.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 (164) hide show
  1. package/dist/constants.d.ts +1 -1
  2. package/dist/constants.js +1 -1
  3. package/dist/content/skills/specialist-prototipagem-stitch/SKILL.md +12 -6
  4. package/dist/content/skills/specialist-ux-design/SKILL.md +9 -30
  5. package/dist/content/skills/specialist-ux-design/resources/checklists/ux-validation.md +1 -4
  6. package/dist/content/skills/specialist-ux-design/resources/reference/ux-guide.md +2 -2
  7. package/dist/errors/index.js +2 -2
  8. package/dist/errors/index.js.map +1 -1
  9. package/dist/flows/onboarding-orchestrator.js +1 -1
  10. package/dist/flows/onboarding-orchestrator.js.map +1 -1
  11. package/dist/handlers/field-normalizer.d.ts +31 -0
  12. package/dist/handlers/field-normalizer.d.ts.map +1 -0
  13. package/dist/handlers/field-normalizer.js +70 -0
  14. package/dist/handlers/field-normalizer.js.map +1 -0
  15. package/dist/handlers/prd-scorer.d.ts +60 -0
  16. package/dist/handlers/prd-scorer.d.ts.map +1 -0
  17. package/dist/handlers/prd-scorer.js +157 -0
  18. package/dist/handlers/prd-scorer.js.map +1 -0
  19. package/dist/handlers/prototype-phase-handler.js.map +1 -1
  20. package/dist/handlers/shared-prompt-handler.js +3 -1
  21. package/dist/handlers/shared-prompt-handler.js.map +1 -1
  22. package/dist/handlers/specialist-formatters.d.ts +42 -0
  23. package/dist/handlers/specialist-formatters.d.ts.map +1 -0
  24. package/dist/handlers/specialist-formatters.js +272 -0
  25. package/dist/handlers/specialist-formatters.js.map +1 -0
  26. package/dist/handlers/specialist-phase-handler.d.ts +1 -10
  27. package/dist/handlers/specialist-phase-handler.d.ts.map +1 -1
  28. package/dist/handlers/specialist-phase-handler.js +11 -501
  29. package/dist/handlers/specialist-phase-handler.js.map +1 -1
  30. package/dist/legacy-tools.d.ts +21 -0
  31. package/dist/legacy-tools.d.ts.map +1 -0
  32. package/dist/legacy-tools.js +377 -0
  33. package/dist/legacy-tools.js.map +1 -0
  34. package/dist/router.d.ts +2 -2
  35. package/dist/router.d.ts.map +1 -1
  36. package/dist/router.js +6 -378
  37. package/dist/router.js.map +1 -1
  38. package/dist/server.d.ts +18 -4
  39. package/dist/server.d.ts.map +1 -1
  40. package/dist/server.js +70 -1
  41. package/dist/server.js.map +1 -1
  42. package/dist/services/flow-engine.d.ts.map +1 -1
  43. package/dist/services/flow-engine.js +1 -2
  44. package/dist/services/flow-engine.js.map +1 -1
  45. package/dist/services/onboarding.service.js.map +1 -1
  46. package/dist/services/scoring-config.d.ts +47 -0
  47. package/dist/services/scoring-config.d.ts.map +1 -0
  48. package/dist/services/scoring-config.js +88 -0
  49. package/dist/services/scoring-config.js.map +1 -0
  50. package/dist/services/state.service.d.ts.map +1 -1
  51. package/dist/services/state.service.js +3 -9
  52. package/dist/services/state.service.js.map +1 -1
  53. package/dist/services/static-validator.service.d.ts +28 -0
  54. package/dist/services/static-validator.service.d.ts.map +1 -0
  55. package/dist/services/static-validator.service.js +55 -0
  56. package/dist/services/static-validator.service.js.map +1 -0
  57. package/dist/services/task-decomposer.service.d.ts +59 -0
  58. package/dist/services/task-decomposer.service.d.ts.map +1 -0
  59. package/dist/services/task-decomposer.service.js +162 -0
  60. package/dist/services/task-decomposer.service.js.map +1 -0
  61. package/dist/services/test-stub-generator.service.d.ts +32 -0
  62. package/dist/services/test-stub-generator.service.d.ts.map +1 -0
  63. package/dist/services/test-stub-generator.service.js +71 -0
  64. package/dist/services/test-stub-generator.service.js.map +1 -0
  65. package/dist/stdio.js +7 -71
  66. package/dist/stdio.js.map +1 -1
  67. package/dist/tools/brainstorm.js.map +1 -1
  68. package/dist/tools/consolidated/avancar.d.ts.map +1 -1
  69. package/dist/tools/consolidated/avancar.js +27 -19
  70. package/dist/tools/consolidated/avancar.js.map +1 -1
  71. package/dist/tools/discovery.js.map +1 -1
  72. package/dist/tools/iniciar-projeto.js.map +1 -1
  73. package/dist/tools/maestro-tool.d.ts.map +1 -1
  74. package/dist/tools/maestro-tool.js +23 -14
  75. package/dist/tools/maestro-tool.js.map +1 -1
  76. package/dist/tools/next-steps-dashboard.js.map +1 -1
  77. package/dist/tools/prd-writer.js.map +1 -1
  78. package/dist/tools/proximo.d.ts.map +1 -1
  79. package/dist/tools/proximo.js +34 -6
  80. package/dist/tools/proximo.js.map +1 -1
  81. package/dist/types/index.d.ts +1 -1
  82. package/dist/types/index.d.ts.map +1 -1
  83. package/dist/utils/ide-paths.d.ts +2 -1
  84. package/dist/utils/ide-paths.d.ts.map +1 -1
  85. package/dist/utils/ide-paths.js +48 -9
  86. package/dist/utils/ide-paths.js.map +1 -1
  87. package/dist/utils/instructions.d.ts.map +1 -1
  88. package/dist/utils/instructions.js +4 -3
  89. package/dist/utils/instructions.js.map +1 -1
  90. package/package.json +3 -2
  91. package/dist/content/skills/specialist-ux-design/resources/templates/jornada-usuario.md +0 -126
  92. package/dist/content/skills/specialist-ux-design/resources/templates/wireframes.md +0 -155
  93. package/dist/gates/tiers.test.d.ts +0 -2
  94. package/dist/gates/tiers.test.d.ts.map +0 -1
  95. package/dist/gates/tiers.test.js +0 -86
  96. package/dist/gates/tiers.test.js.map +0 -1
  97. package/dist/index.d.ts +0 -3
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/index.js +0 -343
  100. package/dist/index.js.map +0 -1
  101. package/dist/tests/aprovar-gate.test.d.ts +0 -2
  102. package/dist/tests/aprovar-gate.test.d.ts.map +0 -1
  103. package/dist/tests/aprovar-gate.test.js +0 -113
  104. package/dist/tests/aprovar-gate.test.js.map +0 -1
  105. package/dist/tests/brainstorm-prd.test.d.ts +0 -5
  106. package/dist/tests/brainstorm-prd.test.d.ts.map +0 -1
  107. package/dist/tests/brainstorm-prd.test.js +0 -291
  108. package/dist/tests/brainstorm-prd.test.js.map +0 -1
  109. package/dist/tests/classificacao-progressiva.test.d.ts +0 -5
  110. package/dist/tests/classificacao-progressiva.test.d.ts.map +0 -1
  111. package/dist/tests/classificacao-progressiva.test.js +0 -372
  112. package/dist/tests/classificacao-progressiva.test.js.map +0 -1
  113. package/dist/tests/content-resolver.test.d.ts +0 -5
  114. package/dist/tests/content-resolver.test.d.ts.map +0 -1
  115. package/dist/tests/content-resolver.test.js +0 -157
  116. package/dist/tests/content-resolver.test.js.map +0 -1
  117. package/dist/tests/deliverable-validator.test.d.ts +0 -12
  118. package/dist/tests/deliverable-validator.test.d.ts.map +0 -1
  119. package/dist/tests/deliverable-validator.test.js +0 -214
  120. package/dist/tests/deliverable-validator.test.js.map +0 -1
  121. package/dist/tests/flow-engine.test.d.ts +0 -2
  122. package/dist/tests/flow-engine.test.d.ts.map +0 -1
  123. package/dist/tests/flow-engine.test.js +0 -85
  124. package/dist/tests/flow-engine.test.js.map +0 -1
  125. package/dist/tests/gate-orientation.test.d.ts +0 -2
  126. package/dist/tests/gate-orientation.test.d.ts.map +0 -1
  127. package/dist/tests/gate-orientation.test.js +0 -59
  128. package/dist/tests/gate-orientation.test.js.map +0 -1
  129. package/dist/tests/middleware.test.d.ts +0 -5
  130. package/dist/tests/middleware.test.d.ts.map +0 -1
  131. package/dist/tests/middleware.test.js +0 -254
  132. package/dist/tests/middleware.test.js.map +0 -1
  133. package/dist/tests/migracao-skills.test.d.ts +0 -2
  134. package/dist/tests/migracao-skills.test.d.ts.map +0 -1
  135. package/dist/tests/migracao-skills.test.js +0 -208
  136. package/dist/tests/migracao-skills.test.js.map +0 -1
  137. package/dist/tests/onboarding-flow.test.d.ts +0 -5
  138. package/dist/tests/onboarding-flow.test.d.ts.map +0 -1
  139. package/dist/tests/onboarding-flow.test.js +0 -231
  140. package/dist/tests/onboarding-flow.test.js.map +0 -1
  141. package/dist/tests/prd-validation.test.d.ts +0 -6
  142. package/dist/tests/prd-validation.test.d.ts.map +0 -1
  143. package/dist/tests/prd-validation.test.js +0 -164
  144. package/dist/tests/prd-validation.test.js.map +0 -1
  145. package/dist/tests/readiness-dashboard.test.d.ts +0 -5
  146. package/dist/tests/readiness-dashboard.test.d.ts.map +0 -1
  147. package/dist/tests/readiness-dashboard.test.js +0 -252
  148. package/dist/tests/readiness-dashboard.test.js.map +0 -1
  149. package/dist/tests/skill-loader.test.d.ts +0 -5
  150. package/dist/tests/skill-loader.test.d.ts.map +0 -1
  151. package/dist/tests/skill-loader.test.js +0 -244
  152. package/dist/tests/skill-loader.test.js.map +0 -1
  153. package/dist/tests/v52-integration.test.d.ts +0 -14
  154. package/dist/tests/v52-integration.test.d.ts.map +0 -1
  155. package/dist/tests/v52-integration.test.js +0 -225
  156. package/dist/tests/v52-integration.test.js.map +0 -1
  157. package/dist/tests/watcher.service.test.d.ts +0 -2
  158. package/dist/tests/watcher.service.test.d.ts.map +0 -1
  159. package/dist/tests/watcher.service.test.js +0 -119
  160. package/dist/tests/watcher.service.test.js.map +0 -1
  161. package/dist/utils/__tests__/prompt-mapper.test.d.ts +0 -2
  162. package/dist/utils/__tests__/prompt-mapper.test.d.ts.map +0 -1
  163. package/dist/utils/__tests__/prompt-mapper.test.js +0 -184
  164. package/dist/utils/__tests__/prompt-mapper.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.service.js","sourceRoot":"","sources":["../../src/services/onboarding.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE;;GAEG;AACH,MAAM,UAAU,4BAA4B,CACxC,SAAiB,EACjB,IAAwC;IAExC,MAAM,eAAe,GAAG,oBAAoB,CAAC;QACzC,IAAI,EAAE,IAAI;QACV,mBAAmB,EAAE,KAAK;QAC1B,gBAAgB,EAAE,IAAI;QACtB,eAAe,EAAE,IAAI;KACxB,CAAC,CAAC;IAEH,OAAO;QACH,SAAS;QACT,KAAK,EAAE,WAAW;QAClB,eAAe,EAAE,aAAa;QAC9B,eAAe,EAAE,eAAe;QAChC,kBAAkB,EAAE,EAAE;QACtB,kBAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5C,gBAAgB,EAAE,SAAS;QAC3B,kBAAkB,EAAE,EAAE;QACtB,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC9C,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAqB;IACvD,OAAQ,MAAc,CAAC,UAAU,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oCAAoC,CAChD,SAAiB,EACjB,IAAwC,EACxC,YAAoB,2BAA2B;IAE/C,MAAM,eAAe,GAAyB;QAC1C,SAAS;QACT,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,CAAC;QACnB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACxC,CAAC;IAEF,OAAO;QACH,SAAS;QACT,KAAK,EAAE,mBAAmB;QAC1B,eAAe;QACf,oDAAoD;QACpD,eAAe,EAAE,SAAS;QAC1B,eAAe,EAAE,EAAE;QACnB,kBAAkB,EAAE,EAAE;QACtB,gBAAgB,EAAE,SAAS;QAC3B,kBAAkB,EAAE,EAAE;QACtB,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC9C,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAqB,EAAE,UAA2B;IACrF,OAAO;QACH,GAAG,MAAM;QACT,UAAU,EAAE,UAAiB;QAC7B,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC1C,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"onboarding.service.js","sourceRoot":"","sources":["../../src/services/onboarding.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE;;GAEG;AACH,MAAM,UAAU,4BAA4B,CACxC,SAAiB,EACjB,IAAwC;IAExC,MAAM,eAAe,GAAG,oBAAoB,CAAC;QACzC,IAAI,EAAE,IAAI;QACV,mBAAmB,EAAE,KAAK;QAC1B,gBAAgB,EAAE,IAAI;QACtB,eAAe,EAAE,IAAI;KACxB,CAAC,CAAC;IAEH,OAAO;QACH,SAAS;QACT,KAAK,EAAE,WAAW;QAClB,eAAe,EAAE,aAAa;QAC9B,eAAe,EAAE,eAAe;QAChC,kBAAkB,EAAE,EAAE;QACtB,kBAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5C,gBAAgB,EAAE,SAAS;QAC3B,kBAAkB,EAAE,EAAE;QACtB,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC9C,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAqB;IACvD,OAAO,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oCAAoC,CAChD,SAAiB,EACjB,IAAwC,EACxC,YAAoB,2BAA2B;IAE/C,MAAM,eAAe,GAAyB;QAC1C,SAAS;QACT,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,CAAC;QACnB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACxC,CAAC;IAEF,OAAO;QACH,SAAS;QACT,KAAK,EAAE,mBAAmB;QAC1B,eAAe;QACf,oDAAoD;QACpD,eAAe,EAAE,SAAS;QAC1B,eAAe,EAAE,EAAE;QACnB,kBAAkB,EAAE,EAAE;QACtB,gBAAgB,EAAE,SAAS;QAC3B,kBAAkB,EAAE,EAAE;QACtB,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC9C,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAqB,EAAE,UAA2B;IACrF,OAAO;QACH,GAAG,MAAM;QACT,UAAU,EAAE,UAAiB;QAC7B,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC1C,CAAC;AACN,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Configuração de scoring contextual por tipo de fase.
3
+ *
4
+ * Fases de documento (PRD, Requisitos) têm critérios diferentes de
5
+ * fases de código (Backend, Frontend).
6
+ *
7
+ * @since v6.5
8
+ */
9
+ export interface ScoreWeights {
10
+ estrutura: number;
11
+ checklist: number;
12
+ qualidade: number;
13
+ threshold: number;
14
+ }
15
+ export type PhaseCategory = 'documento' | 'design' | 'codigo';
16
+ /**
17
+ * Pesos de scoring por categoria de fase.
18
+ *
19
+ * - documento: PRD, Requisitos — foco em checklist e qualidade de conteúdo
20
+ * - design: UX, Arquitetura — foco em estrutura e consistência
21
+ * - codigo: Backend, Frontend, Testes — foco em qualidade (testes, tipos)
22
+ */
23
+ export declare const SCORE_WEIGHTS: Record<PhaseCategory, ScoreWeights>;
24
+ /**
25
+ * Determina a categoria de uma fase pelo nome.
26
+ */
27
+ export declare function getPhaseCategory(faseName: string): PhaseCategory;
28
+ /**
29
+ * Retorna os pesos de scoring para uma fase específica.
30
+ */
31
+ export declare function getScoreWeights(faseName: string): ScoreWeights;
32
+ /**
33
+ * Calcula score de qualidade usando pesos contextuais.
34
+ *
35
+ * @param estruturaScore - Score de estrutura (0-100)
36
+ * @param checklistScore - Score de checklist (0-100)
37
+ * @param qualidadeScore - Score de qualidade/tamanho (0-100)
38
+ * @param faseName - Nome da fase para determinar pesos
39
+ * @returns Score final (0-100) e se está aprovado
40
+ */
41
+ export declare function calcularScoreContextual(estruturaScore: number, checklistScore: number, qualidadeScore: number, faseName: string): {
42
+ score: number;
43
+ approved: boolean;
44
+ weights: ScoreWeights;
45
+ category: PhaseCategory;
46
+ };
47
+ //# sourceMappingURL=scoring-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring-config.d.ts","sourceRoot":"","sources":["../../src/services/scoring-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY,CAI7D,CAAC;AA6BF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAUhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAG9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACnC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACjB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,CAgBtF"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Configuração de scoring contextual por tipo de fase.
3
+ *
4
+ * Fases de documento (PRD, Requisitos) têm critérios diferentes de
5
+ * fases de código (Backend, Frontend).
6
+ *
7
+ * @since v6.5
8
+ */
9
+ /**
10
+ * Pesos de scoring por categoria de fase.
11
+ *
12
+ * - documento: PRD, Requisitos — foco em checklist e qualidade de conteúdo
13
+ * - design: UX, Arquitetura — foco em estrutura e consistência
14
+ * - codigo: Backend, Frontend, Testes — foco em qualidade (testes, tipos)
15
+ */
16
+ export const SCORE_WEIGHTS = {
17
+ documento: { estrutura: 0.20, checklist: 0.40, qualidade: 0.40, threshold: 65 },
18
+ design: { estrutura: 0.30, checklist: 0.30, qualidade: 0.40, threshold: 70 },
19
+ codigo: { estrutura: 0.10, checklist: 0.30, qualidade: 0.60, threshold: 75 },
20
+ };
21
+ /**
22
+ * Mapeamento de nomes de fase para categorias.
23
+ * Se a fase não for encontrada, usa 'documento' como default.
24
+ */
25
+ const PHASE_CATEGORY_MAP = {
26
+ // Documentos
27
+ 'Produto': 'documento',
28
+ 'PRD': 'documento',
29
+ 'Requisitos': 'documento',
30
+ 'Requisitos Técnicos': 'documento',
31
+ // Design
32
+ 'UX/UI': 'design',
33
+ 'Design': 'design',
34
+ 'Arquitetura': 'design',
35
+ 'Arquitetura Técnica': 'design',
36
+ 'Prototipagem': 'design',
37
+ // Código
38
+ 'Backend': 'codigo',
39
+ 'Frontend': 'codigo',
40
+ 'Integração': 'codigo',
41
+ 'Testes': 'codigo',
42
+ 'Deploy': 'codigo',
43
+ 'Implementação': 'codigo',
44
+ };
45
+ /**
46
+ * Determina a categoria de uma fase pelo nome.
47
+ */
48
+ export function getPhaseCategory(faseName) {
49
+ // Busca exata
50
+ if (PHASE_CATEGORY_MAP[faseName])
51
+ return PHASE_CATEGORY_MAP[faseName];
52
+ // Busca parcial (contém)
53
+ for (const [key, category] of Object.entries(PHASE_CATEGORY_MAP)) {
54
+ if (faseName.toLowerCase().includes(key.toLowerCase()))
55
+ return category;
56
+ }
57
+ return 'documento'; // Default
58
+ }
59
+ /**
60
+ * Retorna os pesos de scoring para uma fase específica.
61
+ */
62
+ export function getScoreWeights(faseName) {
63
+ const category = getPhaseCategory(faseName);
64
+ return SCORE_WEIGHTS[category];
65
+ }
66
+ /**
67
+ * Calcula score de qualidade usando pesos contextuais.
68
+ *
69
+ * @param estruturaScore - Score de estrutura (0-100)
70
+ * @param checklistScore - Score de checklist (0-100)
71
+ * @param qualidadeScore - Score de qualidade/tamanho (0-100)
72
+ * @param faseName - Nome da fase para determinar pesos
73
+ * @returns Score final (0-100) e se está aprovado
74
+ */
75
+ export function calcularScoreContextual(estruturaScore, checklistScore, qualidadeScore, faseName) {
76
+ const weights = getScoreWeights(faseName);
77
+ const category = getPhaseCategory(faseName);
78
+ const score = Math.round((estruturaScore * weights.estrutura) +
79
+ (checklistScore * weights.checklist) +
80
+ (qualidadeScore * weights.qualidade));
81
+ return {
82
+ score,
83
+ approved: score >= weights.threshold,
84
+ weights,
85
+ category,
86
+ };
87
+ }
88
+ //# sourceMappingURL=scoring-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring-config.js","sourceRoot":"","sources":["../../src/services/scoring-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAwC;IAC9D,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;IAC/E,MAAM,EAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;IAC/E,MAAM,EAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;CAClF,CAAC;AAEF;;;GAGG;AACH,MAAM,kBAAkB,GAAkC;IACtD,aAAa;IACb,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,WAAW;IAClB,YAAY,EAAE,WAAW;IACzB,qBAAqB,EAAE,WAAW;IAElC,SAAS;IACT,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,QAAQ;IACvB,qBAAqB,EAAE,QAAQ;IAC/B,cAAc,EAAE,QAAQ;IAExB,SAAS;IACT,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,eAAe,EAAE,QAAQ;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC7C,cAAc;IACd,IAAI,kBAAkB,CAAC,QAAQ,CAAC;QAAE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEtE,yBAAyB;IACzB,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC/D,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,QAAQ,CAAC;IAC5E,CAAC;IAED,OAAO,WAAW,CAAC,CAAC,UAAU;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC5C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACnC,cAAsB,EACtB,cAAsB,EACtB,cAAsB,EACtB,QAAgB;IAEhB,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACpB,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CACvC,CAAC;IAEF,OAAO;QACH,KAAK;QACL,QAAQ,EAAE,KAAK,IAAI,OAAO,CAAC,SAAS;QACpC,OAAO;QACP,QAAQ;KACX,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.service.d.ts","sourceRoot":"","sources":["../../src/services/state.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,qBAAa,YAAY;IAIT,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEP,SAAS,EAAE,MAAM;IAQrC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAU3C;;;;OAIG;IACG,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAanD;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAS3E;;;OAGG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAevE;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBjF;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,QAAQ,IAAI,OAAO;CAGtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAElE"}
1
+ {"version":3,"file":"state.service.d.ts","sourceRoot":"","sources":["../../src/services/state.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,qBAAa,YAAY;IAIT,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEP,SAAS,EAAE,MAAM;IAQrC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAU3C;;;;OAIG;IACG,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAanD;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAS3E;;;OAGG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYvE;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBjF;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,QAAQ,IAAI,OAAO;CAGtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAElE"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { readFile, writeFile, mkdir } from "fs/promises";
11
11
  import { existsSync } from "fs";
12
- import { join } from "path";
12
+ import { join, dirname } from "path";
13
13
  import { parsearEstado, serializarEstado } from "../state/storage.js";
14
14
  import { resolveProjectPath } from "../utils/files.js";
15
15
  export class StateService {
@@ -76,10 +76,7 @@ export class StateService {
76
76
  async saveFile(relativePath, content) {
77
77
  try {
78
78
  const fullPath = join(this.diretorio, relativePath);
79
- const dir = fullPath.substring(0, fullPath.lastIndexOf("/")).replace(/\\/g, "/");
80
- // Normalize for Windows
81
- const dirNormalized = dir.replace(/\//g, join("a", "b").includes("\\") ? "\\" : "/");
82
- await mkdir(fullPath.substring(0, fullPath.replace(/\\/g, "/").lastIndexOf("/")), { recursive: true });
79
+ await mkdir(dirname(fullPath), { recursive: true });
83
80
  await writeFile(fullPath, content, "utf-8");
84
81
  return true;
85
82
  }
@@ -95,14 +92,11 @@ export class StateService {
95
92
  async saveFiles(files) {
96
93
  let saved = 0;
97
94
  for (const file of files) {
98
- // Se path é absoluto, usar diretamente; se relativo, usar join
99
95
  const fullPath = file.path.startsWith(this.diretorio)
100
96
  ? file.path
101
97
  : join(this.diretorio, file.path);
102
98
  try {
103
- const dirPart = fullPath.replace(/\\/g, "/");
104
- const dirOnly = dirPart.substring(0, dirPart.lastIndexOf("/"));
105
- await mkdir(dirOnly, { recursive: true });
99
+ await mkdir(dirname(fullPath), { recursive: true });
106
100
  await writeFile(fullPath, file.content, "utf-8");
107
101
  saved++;
108
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"state.service.js","sourceRoot":"","sources":["../../src/services/state.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.service.js","sourceRoot":"","sources":["../../src/services/state.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * StaticValidator — Validação estática de código TypeScript
3
+ *
4
+ * Usa a TypeScript Compiler API para verificar sintaxe sem executar tsc.
5
+ * Best-effort: se typescript não estiver disponível, retorna resultado vazio.
6
+ *
7
+ * @since v6.5
8
+ */
9
+ export interface StaticValidationResult {
10
+ valid: boolean;
11
+ errors: Array<{
12
+ line: number;
13
+ message: string;
14
+ severity: 'error' | 'warning';
15
+ }>;
16
+ stats: {
17
+ totalLines: number;
18
+ imports: number;
19
+ exports: number;
20
+ anyCount: number;
21
+ };
22
+ }
23
+ /**
24
+ * Valida código TypeScript estaticamente.
25
+ * Retorna erros de sintaxe e estatísticas básicas.
26
+ */
27
+ export declare function validateTypeScript(code: string, fileName?: string): Promise<StaticValidationResult>;
28
+ //# sourceMappingURL=static-validator.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-validator.service.d.ts","sourceRoot":"","sources":["../../src/services/static-validator.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IAChF,KAAK,EAAE;QACH,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;CACL;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkDpH"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * StaticValidator — Validação estática de código TypeScript
3
+ *
4
+ * Usa a TypeScript Compiler API para verificar sintaxe sem executar tsc.
5
+ * Best-effort: se typescript não estiver disponível, retorna resultado vazio.
6
+ *
7
+ * @since v6.5
8
+ */
9
+ /**
10
+ * Valida código TypeScript estaticamente.
11
+ * Retorna erros de sintaxe e estatísticas básicas.
12
+ */
13
+ export async function validateTypeScript(code, fileName = 'file.ts') {
14
+ try {
15
+ // Tentar importar typescript dinamicamente
16
+ const ts = await import('typescript');
17
+ const sourceFile = ts.createSourceFile(fileName, code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
18
+ const errors = [];
19
+ // Estatísticas básicas
20
+ let imports = 0;
21
+ let exports = 0;
22
+ let anyCount = 0;
23
+ function visit(node) {
24
+ if (ts.isImportDeclaration(node))
25
+ imports++;
26
+ if (ts.isExportDeclaration(node) || ts.isExportAssignment(node))
27
+ exports++;
28
+ // Contar 'any' type annotations
29
+ if (node.kind === ts.SyntaxKind.AnyKeyword)
30
+ anyCount++;
31
+ ts.forEachChild(node, visit);
32
+ }
33
+ visit(sourceFile);
34
+ const totalLines = code.split('\n').length;
35
+ return {
36
+ valid: errors.length === 0,
37
+ errors,
38
+ stats: { totalLines, imports, exports, anyCount },
39
+ };
40
+ }
41
+ catch {
42
+ // typescript não disponível — retorna resultado vazio (best-effort)
43
+ return {
44
+ valid: true, // Não bloqueia se não puder validar
45
+ errors: [],
46
+ stats: {
47
+ totalLines: code.split('\n').length,
48
+ imports: 0,
49
+ exports: 0,
50
+ anyCount: 0,
51
+ },
52
+ };
53
+ }
54
+ }
55
+ //# sourceMappingURL=static-validator.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-validator.service.js","sourceRoot":"","sources":["../../src/services/static-validator.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,WAAmB,SAAS;IAC/E,IAAI,CAAC;QACD,2CAA2C;QAC3C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAEtC,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAClC,QAAQ,EACR,IAAI,EACJ,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACnB,CAAC;QAEF,MAAM,MAAM,GAAqC,EAAE,CAAC;QAEpD,uBAAuB;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,SAAS,KAAK,CAAC,IAAS;YACpB,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC5C,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC3E,gCAAgC;YAChC,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU;gBAAE,QAAQ,EAAE,CAAC;YACvD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAE3C,OAAO;YACH,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC1B,MAAM;YACN,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;SACpD,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACL,oEAAoE;QACpE,OAAO;YACH,KAAK,EAAE,IAAI,EAAE,oCAAoC;YACjD,MAAM,EAAE,EAAE;YACV,KAAK,EAAE;gBACH,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;gBACnC,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,CAAC;aACd;SACJ,CAAC;IACN,CAAC;AACL,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * TaskDecomposer — Decompõe entregável de arquitetura em tasks executáveis
3
+ *
4
+ * Recebe o documento de arquitetura e gera uma hierarquia de tasks:
5
+ * - Epics: módulos principais (ex: "API Auth", "API Users")
6
+ * - Stories: funcionalidades dentro do módulo (ex: "Login endpoint")
7
+ * - Tasks: unidades de trabalho (ex: "Criar route handler", "Criar testes")
8
+ *
9
+ * @since v6.5
10
+ */
11
+ export interface TaskItem {
12
+ id: string;
13
+ type: 'epic' | 'feature' | 'story' | 'task' | 'subtask';
14
+ title: string;
15
+ description: string;
16
+ status: 'todo' | 'in_progress' | 'blocked' | 'review' | 'done';
17
+ priority: 'critical' | 'high' | 'medium' | 'low';
18
+ parent_id?: string;
19
+ children_ids: string[];
20
+ dependencies: string[];
21
+ phase?: number;
22
+ estimate_hours?: number;
23
+ created_at: string;
24
+ updated_at: string;
25
+ tags: string[];
26
+ metadata?: {
27
+ files?: string[];
28
+ tests?: string[];
29
+ acceptance_criteria?: string[];
30
+ };
31
+ }
32
+ /**
33
+ * Gera uma estrutura de tasks a partir do entregável de arquitetura.
34
+ *
35
+ * A IA fornece o documento de arquitetura como texto. Este serviço extrai:
36
+ * - Seções com ## ou ### como potenciais epics/stories
37
+ * - Listas de itens como tasks
38
+ * - Referências a arquivos como metadata.files
39
+ *
40
+ * @param arquiteturaContent - Conteúdo do documento de arquitetura (Markdown)
41
+ * @param faseNumero - Número da fase de código (ex: 5 para Backend, 6 para Frontend)
42
+ * @returns Array de TaskItem hierárquicas
43
+ */
44
+ export declare function decomposeArchitectureToTasks(arquiteturaContent: string, faseNumero: number): TaskItem[];
45
+ /**
46
+ * Retorna a próxima task a ser executada (status=todo, sem dependências bloqueadas).
47
+ */
48
+ export declare function getNextTask(tasks: TaskItem[]): TaskItem | null;
49
+ /**
50
+ * Calcula progresso das tasks para uma fase específica.
51
+ */
52
+ export declare function getTaskProgress(tasks: TaskItem[], phase: number): {
53
+ total: number;
54
+ done: number;
55
+ inProgress: number;
56
+ blocked: number;
57
+ percentage: number;
58
+ };
59
+ //# sourceMappingURL=task-decomposer.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-decomposer.service.d.ts","sourceRoot":"","sources":["../../src/services/task-decomposer.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/D,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;KAClC,CAAC;CACL;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CACxC,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,GACnB,QAAQ,EAAE,CA2EZ;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG,IAAI,CAS9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB,CAaA"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * TaskDecomposer — Decompõe entregável de arquitetura em tasks executáveis
3
+ *
4
+ * Recebe o documento de arquitetura e gera uma hierarquia de tasks:
5
+ * - Epics: módulos principais (ex: "API Auth", "API Users")
6
+ * - Stories: funcionalidades dentro do módulo (ex: "Login endpoint")
7
+ * - Tasks: unidades de trabalho (ex: "Criar route handler", "Criar testes")
8
+ *
9
+ * @since v6.5
10
+ */
11
+ import { randomUUID } from "crypto";
12
+ /**
13
+ * Gera uma estrutura de tasks a partir do entregável de arquitetura.
14
+ *
15
+ * A IA fornece o documento de arquitetura como texto. Este serviço extrai:
16
+ * - Seções com ## ou ### como potenciais epics/stories
17
+ * - Listas de itens como tasks
18
+ * - Referências a arquivos como metadata.files
19
+ *
20
+ * @param arquiteturaContent - Conteúdo do documento de arquitetura (Markdown)
21
+ * @param faseNumero - Número da fase de código (ex: 5 para Backend, 6 para Frontend)
22
+ * @returns Array de TaskItem hierárquicas
23
+ */
24
+ export function decomposeArchitectureToTasks(arquiteturaContent, faseNumero) {
25
+ const tasks = [];
26
+ // Extrair seções H2 como epics
27
+ const epicSections = extractSections(arquiteturaContent, 2);
28
+ for (const section of epicSections) {
29
+ const epicId = generateId();
30
+ const childIds = [];
31
+ // Extrair subsections H3 como stories
32
+ const storySections = extractSections(section.content, 3);
33
+ for (const story of storySections) {
34
+ const storyId = generateId();
35
+ childIds.push(storyId);
36
+ // Gerar tasks padrão para cada story
37
+ const taskIds = [];
38
+ // Task: implementação
39
+ const implTaskId = generateId();
40
+ taskIds.push(implTaskId);
41
+ tasks.push(createTask({
42
+ id: implTaskId,
43
+ type: 'task',
44
+ title: `Implementar: ${story.title}`,
45
+ description: `Implementar a funcionalidade "${story.title}" conforme especificado na arquitetura.`,
46
+ parent_id: storyId,
47
+ phase: faseNumero,
48
+ tags: ['implementation'],
49
+ metadata: { acceptance_criteria: extractListItems(story.content) },
50
+ }));
51
+ // Task: testes
52
+ const testTaskId = generateId();
53
+ taskIds.push(testTaskId);
54
+ tasks.push(createTask({
55
+ id: testTaskId,
56
+ type: 'task',
57
+ title: `Testes: ${story.title}`,
58
+ description: `Criar testes unitários e de integração para "${story.title}".`,
59
+ parent_id: storyId,
60
+ phase: faseNumero,
61
+ dependencies: [implTaskId],
62
+ tags: ['testing'],
63
+ }));
64
+ // Story
65
+ tasks.push(createTask({
66
+ id: storyId,
67
+ type: 'story',
68
+ title: story.title,
69
+ description: story.content.substring(0, 200),
70
+ parent_id: epicId,
71
+ children_ids: taskIds,
72
+ phase: faseNumero,
73
+ tags: ['story'],
74
+ }));
75
+ }
76
+ // Epic
77
+ tasks.push(createTask({
78
+ id: epicId,
79
+ type: 'epic',
80
+ title: section.title,
81
+ description: `Epic: ${section.title}`,
82
+ children_ids: childIds,
83
+ phase: faseNumero,
84
+ priority: 'high',
85
+ tags: ['epic'],
86
+ }));
87
+ }
88
+ return tasks;
89
+ }
90
+ /**
91
+ * Retorna a próxima task a ser executada (status=todo, sem dependências bloqueadas).
92
+ */
93
+ export function getNextTask(tasks) {
94
+ const doneTasks = new Set(tasks.filter(t => t.status === 'done').map(t => t.id));
95
+ return tasks.find(t => {
96
+ if (t.type !== 'task' && t.type !== 'subtask')
97
+ return false;
98
+ if (t.status !== 'todo')
99
+ return false;
100
+ // Verificar se todas as dependências estão done
101
+ return t.dependencies.every(dep => doneTasks.has(dep));
102
+ }) || null;
103
+ }
104
+ /**
105
+ * Calcula progresso das tasks para uma fase específica.
106
+ */
107
+ export function getTaskProgress(tasks, phase) {
108
+ const phaseTasks = tasks.filter(t => t.phase === phase && (t.type === 'task' || t.type === 'subtask'));
109
+ const done = phaseTasks.filter(t => t.status === 'done').length;
110
+ const inProgress = phaseTasks.filter(t => t.status === 'in_progress').length;
111
+ const blocked = phaseTasks.filter(t => t.status === 'blocked').length;
112
+ return {
113
+ total: phaseTasks.length,
114
+ done,
115
+ inProgress,
116
+ blocked,
117
+ percentage: phaseTasks.length > 0 ? Math.round((done / phaseTasks.length) * 100) : 0,
118
+ };
119
+ }
120
+ // === HELPERS ===
121
+ function generateId() {
122
+ return `task-${randomUUID().substring(0, 8)}`;
123
+ }
124
+ function extractSections(markdown, level) {
125
+ const prefix = '#'.repeat(level) + ' ';
126
+ const lines = markdown.split('\n');
127
+ const sections = [];
128
+ let current = null;
129
+ for (const line of lines) {
130
+ if (line.startsWith(prefix)) {
131
+ if (current)
132
+ sections.push(current);
133
+ current = { title: line.substring(prefix.length).trim(), content: '' };
134
+ }
135
+ else if (current) {
136
+ current.content += line + '\n';
137
+ }
138
+ }
139
+ if (current)
140
+ sections.push(current);
141
+ return sections;
142
+ }
143
+ function extractListItems(content) {
144
+ return content.split('\n')
145
+ .filter(line => line.trim().startsWith('- ') || line.trim().startsWith('* '))
146
+ .map(line => line.trim().replace(/^[-*]\s+/, ''));
147
+ }
148
+ function createTask(partial) {
149
+ const now = new Date().toISOString();
150
+ return {
151
+ description: '',
152
+ status: 'todo',
153
+ priority: 'medium',
154
+ children_ids: [],
155
+ dependencies: [],
156
+ tags: [],
157
+ created_at: now,
158
+ updated_at: now,
159
+ ...partial,
160
+ };
161
+ }
162
+ //# sourceMappingURL=task-decomposer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-decomposer.service.js","sourceRoot":"","sources":["../../src/services/task-decomposer.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * TestStubGenerator — Gera stubs de teste a partir de tasks
3
+ *
4
+ * Para cada task de implementação, gera um arquivo .test.ts com
5
+ * describe/it blocks baseados nos acceptance criteria e na descrição.
6
+ *
7
+ * Os testes são gerados com `it.todo()` para que a IA preencha.
8
+ *
9
+ * @since v6.5
10
+ */
11
+ import type { TaskItem } from "./task-decomposer.service.js";
12
+ /**
13
+ * Gera conteúdo de arquivo de teste stub para uma task.
14
+ *
15
+ * @param task - Task de implementação
16
+ * @param framework - Framework de teste ('vitest' | 'jest')
17
+ * @returns Conteúdo do arquivo .test.ts
18
+ */
19
+ export declare function generateTestStub(task: TaskItem, framework?: 'vitest' | 'jest'): string;
20
+ /**
21
+ * Gera stubs de teste para todas as tasks de implementação de uma fase.
22
+ *
23
+ * @param tasks - Todas as tasks do projeto
24
+ * @param phase - Número da fase
25
+ * @param testDir - Diretório base para os arquivos de teste
26
+ * @returns Array de { path, content } para cada arquivo de teste
27
+ */
28
+ export declare function generatePhaseTestStubs(tasks: TaskItem[], phase: number, testDir?: string): Array<{
29
+ path: string;
30
+ content: string;
31
+ }>;
32
+ //# sourceMappingURL=test-stub-generator.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-stub-generator.service.d.ts","sourceRoot":"","sources":["../../src/services/test-stub-generator.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,QAAQ,EACd,SAAS,GAAE,QAAQ,GAAG,MAAiB,GACxC,MAAM,CAyBR;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,QAAQ,EAAE,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,MAAoB,GAC9B,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAY1C"}