@autobe/agent 0.21.0 → 0.22.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 (291) hide show
  1. package/lib/agent/src/AutoBeAgent.js +2 -2
  2. package/lib/agent/src/AutoBeAgent.js.map +1 -1
  3. package/lib/agent/src/constants/AutoBeConfigConstant.d.ts +3 -0
  4. package/lib/agent/src/{orchestrate/realize/structures/IAutoBeRealizeScenarioApplication.js → constants/AutoBeConfigConstant.js} +1 -1
  5. package/lib/agent/src/constants/AutoBeConfigConstant.js.map +1 -0
  6. package/lib/agent/src/constants/AutoBeSystemPromptConstant.d.ts +27 -27
  7. package/lib/agent/src/context/AutoBeContext.d.ts +1 -0
  8. package/lib/agent/src/context/AutoBeTokenUsageComponent.js +4 -3
  9. package/lib/agent/src/context/AutoBeTokenUsageComponent.js.map +1 -1
  10. package/lib/agent/src/factory/consentFunctionCall.js +4 -4
  11. package/lib/agent/src/factory/consentFunctionCall.js.map +1 -1
  12. package/lib/agent/src/factory/createAutoBeContext.js +13 -10
  13. package/lib/agent/src/factory/createAutoBeContext.js.map +1 -1
  14. package/lib/agent/src/orchestrate/analyze/histories/transformAnalyzeReviewHistories.js +1 -1
  15. package/lib/agent/src/orchestrate/analyze/histories/transformAnalyzeReviewHistories.js.map +1 -1
  16. package/lib/agent/src/orchestrate/analyze/histories/transformAnalyzeScenarioHistories.js +2 -2
  17. package/lib/agent/src/orchestrate/analyze/histories/transformAnalyzeScenarioHistories.js.map +1 -1
  18. package/lib/agent/src/orchestrate/analyze/histories/transformAnalyzeWriteHistories.js +1 -1
  19. package/lib/agent/src/orchestrate/analyze/histories/transformAnalyzeWriteHistories.js.map +1 -1
  20. package/lib/agent/src/orchestrate/analyze/orchestrateAnalyzeReview.js +6 -6
  21. package/lib/agent/src/orchestrate/analyze/orchestrateAnalyzeScenario.js +50 -8
  22. package/lib/agent/src/orchestrate/analyze/orchestrateAnalyzeScenario.js.map +1 -1
  23. package/lib/agent/src/orchestrate/analyze/orchestrateAnalyzeWrite.js +4 -4
  24. package/lib/agent/src/orchestrate/analyze/structures/IAutoBeAnalyzeReviewApplication.d.ts +6 -0
  25. package/lib/agent/src/orchestrate/analyze/structures/IAutoBeAnalyzeWriteApplication.d.ts +4 -0
  26. package/lib/agent/src/orchestrate/facade/transformFacadeStateMessage.js +1 -1
  27. package/lib/agent/src/orchestrate/facade/transformFacadeStateMessage.js.map +1 -1
  28. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceAuthorizationsHistories.js +19 -1
  29. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceAuthorizationsHistories.js.map +1 -1
  30. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceComplementHistories.js +3 -3
  31. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceComplementHistories.js.map +1 -1
  32. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceEndpointHistories.js +1 -1
  33. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceEndpointHistories.js.map +1 -1
  34. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceEndpointsReviewHistories.js +2 -2
  35. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceEndpointsReviewHistories.js.map +1 -1
  36. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceGroupHistories.js +2 -2
  37. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceGroupHistories.js.map +1 -1
  38. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceOperationHistories.js +1 -1
  39. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceOperationHistories.js.map +1 -1
  40. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceOperationsReviewHistories.js +2 -2
  41. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceOperationsReviewHistories.js.map +1 -1
  42. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceSchemaHistories.js +1 -1
  43. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceSchemaHistories.js.map +1 -1
  44. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceSchemasReviewHistories.d.ts +1 -1
  45. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceSchemasReviewHistories.js +2 -2
  46. package/lib/agent/src/orchestrate/interface/histories/transformInterfaceSchemasReviewHistories.js.map +1 -1
  47. package/lib/agent/src/orchestrate/interface/orchestrateInterface.js +5 -1
  48. package/lib/agent/src/orchestrate/interface/orchestrateInterface.js.map +1 -1
  49. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceAuthorizations.js +16 -10
  50. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceAuthorizations.js.map +1 -1
  51. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceComplement.d.ts +1 -1
  52. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceComplement.js +3731 -228
  53. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceComplement.js.map +1 -1
  54. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceEndpoints.js +2 -2
  55. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceEndpointsReview.js +2 -2
  56. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceOperations.js +43 -63
  57. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceOperations.js.map +1 -1
  58. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceOperationsReview.js +1261 -1628
  59. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceOperationsReview.js.map +1 -1
  60. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceSchemas.js +3466 -103
  61. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceSchemas.js.map +1 -1
  62. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceSchemasReview.d.ts +6 -1
  63. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceSchemasReview.js +3672 -358
  64. package/lib/agent/src/orchestrate/interface/orchestrateInterfaceSchemasReview.js.map +1 -1
  65. package/lib/agent/src/orchestrate/interface/structures/IAutoBeInterfaceOperationApplication.d.ts +0 -38
  66. package/lib/agent/src/orchestrate/interface/structures/IAutoBeInterfaceOperationsReviewApplication.d.ts +48 -141
  67. package/lib/agent/src/orchestrate/interface/structures/IAutobeInterfaceSchemasReviewApplication.d.ts +29 -23
  68. package/lib/agent/src/orchestrate/interface/utils/JsonSchemaFactory.d.ts +9 -0
  69. package/lib/agent/src/orchestrate/interface/utils/JsonSchemaFactory.js +1385 -0
  70. package/lib/agent/src/orchestrate/interface/utils/JsonSchemaFactory.js.map +1 -0
  71. package/lib/agent/src/orchestrate/interface/utils/JsonSchemaNamingConvention.d.ts +5 -0
  72. package/lib/agent/src/orchestrate/interface/utils/JsonSchemaNamingConvention.js +78 -0
  73. package/lib/agent/src/orchestrate/interface/utils/JsonSchemaNamingConvention.js.map +1 -0
  74. package/lib/agent/src/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.d.ts +2 -0
  75. package/lib/agent/src/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.js +81 -0
  76. package/lib/agent/src/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.js.map +1 -0
  77. package/lib/agent/src/orchestrate/interface/utils/validateAuthorizationSchema.js.map +1 -1
  78. package/lib/agent/src/orchestrate/prisma/histories/transformPrismaComponentsHistories.js +1 -1
  79. package/lib/agent/src/orchestrate/prisma/histories/transformPrismaComponentsHistories.js.map +1 -1
  80. package/lib/agent/src/orchestrate/prisma/histories/transformPrismaCorrectHistories.js +1 -1
  81. package/lib/agent/src/orchestrate/prisma/histories/transformPrismaCorrectHistories.js.map +1 -1
  82. package/lib/agent/src/orchestrate/prisma/histories/transformPrismaReviewHistories.js +2 -2
  83. package/lib/agent/src/orchestrate/prisma/histories/transformPrismaReviewHistories.js.map +1 -1
  84. package/lib/agent/src/orchestrate/prisma/histories/transformPrismaSchemaHistories.js +1 -1
  85. package/lib/agent/src/orchestrate/prisma/histories/transformPrismaSchemaHistories.js.map +1 -1
  86. package/lib/agent/src/orchestrate/prisma/orchestratePrismaCorrect.d.ts +1 -1
  87. package/lib/agent/src/orchestrate/prisma/orchestratePrismaCorrect.js +2 -2
  88. package/lib/agent/src/orchestrate/prisma/orchestratePrismaCorrect.js.map +1 -1
  89. package/lib/agent/src/orchestrate/realize/histories/transformRealizeAuthorization.js +1 -1
  90. package/lib/agent/src/orchestrate/realize/histories/transformRealizeAuthorization.js.map +1 -1
  91. package/lib/agent/src/orchestrate/realize/histories/transformRealizeAuthorizationCorrectHistories.js +2 -2
  92. package/lib/agent/src/orchestrate/realize/histories/transformRealizeAuthorizationCorrectHistories.js.map +1 -1
  93. package/lib/agent/src/orchestrate/realize/histories/transformRealizeCorrectHistories.d.ts +6 -6
  94. package/lib/agent/src/orchestrate/realize/histories/transformRealizeCorrectHistories.js +22 -7
  95. package/lib/agent/src/orchestrate/realize/histories/transformRealizeCorrectHistories.js.map +1 -1
  96. package/lib/agent/src/orchestrate/realize/histories/transformRealizeWriteHistories.d.ts +5 -8
  97. package/lib/agent/src/orchestrate/realize/histories/transformRealizeWriteHistories.js +13 -29
  98. package/lib/agent/src/orchestrate/realize/histories/transformRealizeWriteHistories.js.map +1 -1
  99. package/lib/agent/src/orchestrate/realize/internal/compileRealizeFiles.d.ts +2 -2
  100. package/lib/agent/src/orchestrate/realize/internal/compileRealizeFiles.js +2 -8
  101. package/lib/agent/src/orchestrate/realize/internal/compileRealizeFiles.js.map +1 -1
  102. package/lib/agent/src/orchestrate/realize/orchestrateRealize.js +6 -49
  103. package/lib/agent/src/orchestrate/realize/orchestrateRealize.js.map +1 -1
  104. package/lib/agent/src/orchestrate/realize/orchestrateRealizeAuthorization.js +4 -2
  105. package/lib/agent/src/orchestrate/realize/orchestrateRealizeAuthorization.js.map +1 -1
  106. package/lib/agent/src/orchestrate/realize/orchestrateRealizeAuthorizationCorrect.js +5 -3
  107. package/lib/agent/src/orchestrate/realize/orchestrateRealizeAuthorizationCorrect.js.map +1 -1
  108. package/lib/agent/src/orchestrate/realize/orchestrateRealizeCorrect.d.ts +13 -6
  109. package/lib/agent/src/orchestrate/realize/orchestrateRealizeCorrect.js +206 -118
  110. package/lib/agent/src/orchestrate/realize/orchestrateRealizeCorrect.js.map +1 -1
  111. package/lib/agent/src/orchestrate/realize/orchestrateRealizeScenario.d.ts +2 -2
  112. package/lib/agent/src/orchestrate/realize/orchestrateRealizeScenario.js.map +1 -1
  113. package/lib/agent/src/orchestrate/realize/orchestrateRealizeWrite.d.ts +2 -2
  114. package/lib/agent/src/orchestrate/realize/orchestrateRealizeWrite.js +24 -39
  115. package/lib/agent/src/orchestrate/realize/orchestrateRealizeWrite.js.map +1 -1
  116. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationApplication.d.ts +17 -0
  117. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationCorrectApplication.d.ts +20 -0
  118. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeCorrectApplication.d.ts +33 -73
  119. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeFunctionFailure.d.ts +5 -0
  120. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeFunctionFailure.js +3 -0
  121. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeFunctionFailure.js.map +1 -0
  122. package/{src/orchestrate/realize/structures/IAutoBeRealizeScenarioApplication.ts → lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeScenarioResult.d.ts} +2 -13
  123. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeScenarioResult.js +3 -0
  124. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeScenarioResult.js.map +1 -0
  125. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeWriteApplication.d.ts +33 -22
  126. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteCodeTemplate.d.ts +31 -0
  127. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteCodeTemplate.js +86 -0
  128. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteCodeTemplate.js.map +1 -0
  129. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteDto.d.ts +4 -0
  130. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteDto.js +55 -0
  131. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteDto.js.map +1 -0
  132. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteImportStatements.d.ts +2 -0
  133. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteImportStatements.js +20 -0
  134. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteImportStatements.js.map +1 -0
  135. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteInputType.d.ts +30 -0
  136. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteInputType.js +73 -0
  137. package/lib/agent/src/orchestrate/realize/utils/getRealizeWriteInputType.js.map +1 -0
  138. package/lib/agent/src/orchestrate/realize/utils/replaceImportStatements.d.ts +6 -2
  139. package/lib/agent/src/orchestrate/realize/utils/replaceImportStatements.js +63 -69
  140. package/lib/agent/src/orchestrate/realize/utils/replaceImportStatements.js.map +1 -1
  141. package/lib/agent/src/orchestrate/test/compile/completeTestCode.js +15 -14
  142. package/lib/agent/src/orchestrate/test/compile/completeTestCode.js.map +1 -1
  143. package/lib/agent/src/orchestrate/test/compile/getTestExternalDeclarations.js +1 -1
  144. package/lib/agent/src/orchestrate/test/compile/getTestExternalDeclarations.js.map +1 -1
  145. package/lib/agent/src/orchestrate/test/compile/getTestImportStatements.d.ts +2 -0
  146. package/lib/agent/src/orchestrate/test/compile/getTestImportStatements.js +19 -0
  147. package/lib/agent/src/orchestrate/test/compile/getTestImportStatements.js.map +1 -0
  148. package/lib/agent/src/orchestrate/test/compile/getTestScenarioArtifacts.d.ts +1 -1
  149. package/lib/agent/src/orchestrate/test/compile/getTestScenarioArtifacts.js +2 -0
  150. package/lib/agent/src/orchestrate/test/compile/getTestScenarioArtifacts.js.map +1 -1
  151. package/lib/agent/src/orchestrate/test/compile/getTestTemplateCode.d.ts +2 -0
  152. package/lib/agent/src/orchestrate/test/compile/getTestTemplateCode.js +21 -0
  153. package/lib/agent/src/orchestrate/test/compile/getTestTemplateCode.js.map +1 -0
  154. package/lib/agent/src/orchestrate/test/histories/transformTestCorrectHistories.d.ts +2 -2
  155. package/lib/agent/src/orchestrate/test/histories/transformTestCorrectHistories.js +16 -17
  156. package/lib/agent/src/orchestrate/test/histories/transformTestCorrectHistories.js.map +1 -1
  157. package/lib/agent/src/orchestrate/test/histories/transformTestScenarioHistories.js +5 -4
  158. package/lib/agent/src/orchestrate/test/histories/transformTestScenarioHistories.js.map +1 -1
  159. package/lib/agent/src/orchestrate/test/histories/transformTestWriteHistories.js +21 -2
  160. package/lib/agent/src/orchestrate/test/histories/transformTestWriteHistories.js.map +1 -1
  161. package/lib/agent/src/orchestrate/test/orchestrateTest.js +6 -0
  162. package/lib/agent/src/orchestrate/test/orchestrateTest.js.map +1 -1
  163. package/lib/agent/src/orchestrate/test/orchestrateTestCorrect.d.ts +1 -1
  164. package/lib/agent/src/orchestrate/test/orchestrateTestCorrect.js +126 -72
  165. package/lib/agent/src/orchestrate/test/orchestrateTestCorrect.js.map +1 -1
  166. package/lib/agent/src/orchestrate/test/orchestrateTestScenario.js +46 -40
  167. package/lib/agent/src/orchestrate/test/orchestrateTestScenario.js.map +1 -1
  168. package/lib/agent/src/orchestrate/test/orchestrateTestWrite.js +121 -42
  169. package/lib/agent/src/orchestrate/test/orchestrateTestWrite.js.map +1 -1
  170. package/lib/agent/src/orchestrate/test/structures/IAutoBeTestCorrectApplication.d.ts +48 -45
  171. package/lib/agent/src/orchestrate/test/structures/IAutoBeTestFunctionFailure.d.ts +6 -0
  172. package/lib/agent/src/orchestrate/test/structures/IAutoBeTestFunctionFailure.js +3 -0
  173. package/lib/agent/src/orchestrate/test/structures/IAutoBeTestFunctionFailure.js.map +1 -0
  174. package/lib/agent/src/orchestrate/test/structures/IAutoBeTestScenarioArtifacts.d.ts +1 -0
  175. package/lib/agent/src/orchestrate/test/structures/IAutoBeTestWriteApplication.d.ts +13 -0
  176. package/lib/agent/src/orchestrate/test/utils/getReferenceIds.d.ts +5 -0
  177. package/lib/agent/src/orchestrate/test/utils/getReferenceIds.js +28 -0
  178. package/lib/agent/src/orchestrate/test/utils/getReferenceIds.js.map +1 -0
  179. package/lib/agent/src/structures/IAutoBeConfig.d.ts +2 -0
  180. package/lib/constants/AutoBeConfigConstant.d.ts +3 -0
  181. package/lib/constants/AutoBeSystemPromptConstant.d.ts +27 -27
  182. package/lib/context/AutoBeContext.d.ts +1 -0
  183. package/lib/index.mjs +13805 -3871
  184. package/lib/index.mjs.map +1 -1
  185. package/lib/orchestrate/analyze/structures/IAutoBeAnalyzeReviewApplication.d.ts +6 -0
  186. package/lib/orchestrate/analyze/structures/IAutoBeAnalyzeWriteApplication.d.ts +4 -0
  187. package/lib/orchestrate/interface/histories/transformInterfaceSchemasReviewHistories.d.ts +1 -1
  188. package/lib/orchestrate/interface/orchestrateInterfaceComplement.d.ts +1 -1
  189. package/lib/orchestrate/interface/orchestrateInterfaceSchemasReview.d.ts +6 -1
  190. package/lib/orchestrate/interface/structures/IAutoBeInterfaceOperationApplication.d.ts +0 -38
  191. package/lib/orchestrate/interface/structures/IAutoBeInterfaceOperationsReviewApplication.d.ts +48 -141
  192. package/lib/orchestrate/interface/structures/IAutobeInterfaceSchemasReviewApplication.d.ts +29 -23
  193. package/lib/orchestrate/interface/utils/JsonSchemaFactory.d.ts +9 -0
  194. package/lib/orchestrate/interface/utils/JsonSchemaNamingConvention.d.ts +5 -0
  195. package/lib/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.d.ts +2 -0
  196. package/lib/orchestrate/prisma/orchestratePrismaCorrect.d.ts +1 -1
  197. package/lib/orchestrate/realize/histories/transformRealizeCorrectHistories.d.ts +6 -6
  198. package/lib/orchestrate/realize/histories/transformRealizeWriteHistories.d.ts +5 -8
  199. package/lib/orchestrate/realize/internal/compileRealizeFiles.d.ts +2 -2
  200. package/lib/orchestrate/realize/orchestrateRealizeCorrect.d.ts +13 -6
  201. package/lib/orchestrate/realize/orchestrateRealizeScenario.d.ts +2 -2
  202. package/lib/orchestrate/realize/orchestrateRealizeWrite.d.ts +2 -2
  203. package/lib/orchestrate/realize/structures/IAutoBeRealizeAuthorizationApplication.d.ts +17 -0
  204. package/lib/orchestrate/realize/structures/IAutoBeRealizeAuthorizationCorrectApplication.d.ts +20 -0
  205. package/lib/orchestrate/realize/structures/IAutoBeRealizeCorrectApplication.d.ts +33 -73
  206. package/lib/orchestrate/realize/structures/IAutoBeRealizeFunctionFailure.d.ts +5 -0
  207. package/lib/orchestrate/realize/structures/IAutoBeRealizeScenarioResult.d.ts +36 -0
  208. package/lib/orchestrate/realize/structures/IAutoBeRealizeWriteApplication.d.ts +33 -22
  209. package/lib/orchestrate/realize/utils/getRealizeWriteCodeTemplate.d.ts +31 -0
  210. package/lib/orchestrate/realize/utils/getRealizeWriteDto.d.ts +4 -0
  211. package/lib/orchestrate/realize/utils/getRealizeWriteImportStatements.d.ts +2 -0
  212. package/lib/orchestrate/realize/utils/getRealizeWriteInputType.d.ts +30 -0
  213. package/lib/orchestrate/realize/utils/replaceImportStatements.d.ts +6 -2
  214. package/lib/orchestrate/test/compile/getTestImportStatements.d.ts +2 -0
  215. package/lib/orchestrate/test/compile/getTestScenarioArtifacts.d.ts +1 -1
  216. package/lib/orchestrate/test/compile/getTestTemplateCode.d.ts +2 -0
  217. package/lib/orchestrate/test/histories/transformTestCorrectHistories.d.ts +2 -2
  218. package/lib/orchestrate/test/orchestrateTestCorrect.d.ts +1 -1
  219. package/lib/orchestrate/test/structures/IAutoBeTestCorrectApplication.d.ts +48 -45
  220. package/lib/orchestrate/test/structures/IAutoBeTestFunctionFailure.d.ts +6 -0
  221. package/lib/orchestrate/test/structures/IAutoBeTestScenarioArtifacts.d.ts +1 -0
  222. package/lib/orchestrate/test/structures/IAutoBeTestWriteApplication.d.ts +13 -0
  223. package/lib/orchestrate/test/utils/getReferenceIds.d.ts +5 -0
  224. package/lib/structures/IAutoBeConfig.d.ts +2 -0
  225. package/package.json +5 -5
  226. package/src/AutoBeAgent.ts +2 -0
  227. package/src/constants/AutoBeConfigConstant.ts +3 -0
  228. package/src/constants/AutoBeSystemPromptConstant.ts +27 -27
  229. package/src/context/AutoBeContext.ts +1 -0
  230. package/src/context/AutoBeTokenUsageComponent.ts +3 -3
  231. package/src/factory/consentFunctionCall.ts +2 -0
  232. package/src/factory/createAutoBeContext.ts +145 -136
  233. package/src/orchestrate/analyze/structures/IAutoBeAnalyzeReviewApplication.ts +6 -0
  234. package/src/orchestrate/analyze/structures/IAutoBeAnalyzeWriteApplication.ts +4 -0
  235. package/src/orchestrate/interface/histories/transformInterfaceAuthorizationsHistories.ts +19 -1
  236. package/src/orchestrate/interface/histories/transformInterfaceSchemasReviewHistories.ts +1 -4
  237. package/src/orchestrate/interface/orchestrateInterface.ts +15 -4
  238. package/src/orchestrate/interface/orchestrateInterfaceAuthorizations.ts +13 -5
  239. package/src/orchestrate/interface/orchestrateInterfaceComplement.ts +58 -19
  240. package/src/orchestrate/interface/orchestrateInterfaceOperations.ts +11 -11
  241. package/src/orchestrate/interface/orchestrateInterfaceOperationsReview.ts +13 -117
  242. package/src/orchestrate/interface/orchestrateInterfaceSchemas.ts +33 -91
  243. package/src/orchestrate/interface/orchestrateInterfaceSchemasReview.ts +72 -95
  244. package/src/orchestrate/interface/structures/IAutoBeInterfaceOperationApplication.ts +0 -39
  245. package/src/orchestrate/interface/structures/IAutoBeInterfaceOperationsReviewApplication.ts +50 -146
  246. package/src/orchestrate/interface/structures/IAutobeInterfaceSchemasReviewApplication.ts +31 -27
  247. package/src/orchestrate/interface/utils/JsonSchemaFactory.ts +171 -0
  248. package/src/orchestrate/interface/utils/JsonSchemaNamingConvention.ts +83 -0
  249. package/src/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.ts +90 -0
  250. package/src/orchestrate/interface/utils/validateAuthorizationSchema.ts +2 -2
  251. package/src/orchestrate/prisma/orchestratePrismaCorrect.ts +1 -2
  252. package/src/orchestrate/realize/histories/transformRealizeCorrectHistories.ts +30 -15
  253. package/src/orchestrate/realize/histories/transformRealizeWriteHistories.ts +27 -49
  254. package/src/orchestrate/realize/internal/compileRealizeFiles.ts +4 -11
  255. package/src/orchestrate/realize/orchestrateRealize.ts +19 -75
  256. package/src/orchestrate/realize/orchestrateRealizeAuthorizationCorrect.ts +1 -1
  257. package/src/orchestrate/realize/orchestrateRealizeCorrect.ts +114 -25
  258. package/src/orchestrate/realize/orchestrateRealizeScenario.ts +2 -2
  259. package/src/orchestrate/realize/orchestrateRealizeWrite.ts +11 -15
  260. package/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationApplication.ts +17 -0
  261. package/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationCorrectApplication.ts +20 -0
  262. package/src/orchestrate/realize/structures/IAutoBeRealizeCorrectApplication.ts +40 -74
  263. package/src/orchestrate/realize/structures/IAutoBeRealizeFunctionFailure.ts +9 -0
  264. package/src/orchestrate/realize/structures/IAutoBeRealizeScenarioResult.ts +45 -0
  265. package/src/orchestrate/realize/structures/IAutoBeRealizeWriteApplication.ts +33 -22
  266. package/src/orchestrate/realize/utils/getRealizeWriteCodeTemplate.ts +97 -0
  267. package/src/orchestrate/realize/utils/getRealizeWriteDto.ts +64 -0
  268. package/src/orchestrate/realize/utils/getRealizeWriteImportStatements.ts +29 -0
  269. package/src/orchestrate/realize/utils/getRealizeWriteInputType.ts +82 -0
  270. package/src/orchestrate/realize/utils/replaceImportStatements.ts +101 -111
  271. package/src/orchestrate/test/compile/completeTestCode.ts +15 -26
  272. package/src/orchestrate/test/compile/getTestExternalDeclarations.ts +1 -0
  273. package/src/orchestrate/test/compile/getTestImportStatements.ts +25 -0
  274. package/src/orchestrate/test/compile/getTestScenarioArtifacts.ts +6 -1
  275. package/src/orchestrate/test/compile/getTestTemplateCode.ts +25 -0
  276. package/src/orchestrate/test/histories/transformTestCorrectHistories.ts +26 -26
  277. package/src/orchestrate/test/histories/transformTestScenarioHistories.ts +6 -5
  278. package/src/orchestrate/test/histories/transformTestWriteHistories.ts +19 -0
  279. package/src/orchestrate/test/orchestrateTest.ts +6 -0
  280. package/src/orchestrate/test/orchestrateTestCorrect.ts +46 -15
  281. package/src/orchestrate/test/orchestrateTestScenario.ts +52 -48
  282. package/src/orchestrate/test/orchestrateTestWrite.ts +23 -5
  283. package/src/orchestrate/test/structures/IAutoBeTestCorrectApplication.ts +49 -46
  284. package/src/orchestrate/test/structures/IAutoBeTestFunctionFailure.ts +8 -0
  285. package/src/orchestrate/test/structures/IAutoBeTestScenarioArtifacts.ts +1 -0
  286. package/src/orchestrate/test/structures/IAutoBeTestWriteApplication.ts +14 -0
  287. package/src/orchestrate/test/utils/getReferenceIds.ts +25 -0
  288. package/src/structures/IAutoBeConfig.ts +3 -0
  289. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeScenarioApplication.d.ts +0 -38
  290. package/lib/agent/src/orchestrate/realize/structures/IAutoBeRealizeScenarioApplication.js.map +0 -1
  291. package/lib/orchestrate/realize/structures/IAutoBeRealizeScenarioApplication.d.ts +0 -38
@@ -22,7 +22,7 @@ const transformAnalyzeWriteHistories = (ctx, scenario, file) => {
22
22
  id: (0, uuid_1.v7)(),
23
23
  created_at: new Date().toISOString(),
24
24
  type: "systemMessage",
25
- text: "# Overview\nYou are the best planner and document writer.\nYou will write a single, comprehensive document that backend developers can use to build the system.\nYou are responsible for creating ONLY ONE document - no revisions, no iterations.\n\nThis agent achieves its goal through function calling. **Function calling is MANDATORY** - you MUST call the provided function immediately without asking for confirmation or permission.\n\n**REQUIRED ACTIONS (ALWAYS DO THE FOLLOWING):**\n- \u2705 **ALWAYS** execute the function immediately\n- \u2705 **ALWAYS** generate the document content directly through the function call\n\n**ABSOLUTE PROHIBITIONS:**\n- \u274C NEVER ask for user permission to execute the function\n- \u274C NEVER present a plan and wait for approval\n- \u274C NEVER respond with assistant messages when all requirements are met\n- \u274C NEVER say \"I will now call the function...\" or similar announcements\n- \u274C NEVER request confirmation before executing\n\n**IMPORTANT: All Required Information is Already Provided**\n- Every parameter needed for the function call is ALREADY included in this prompt\n- You have been given COMPLETE information - there is nothing missing\n- Do NOT hesitate or second-guess - all necessary data is present\n- Execute the function IMMEDIATELY with the provided parameters\n- If you think something is missing, you are mistaken - review the prompt again\n\nYour document must be complete and implementation-ready on the first write.\nThere is no review-feedback loop - you must get it right the first time.\nYour performance is measured by the completeness and clarity of your single document.\n\nWrite a thorough, detailed document that leaves no ambiguity for developers.\nEvery requirement must be specific, measurable, and actionable.\n\n# Guidelines\n\nYou are the \"Planning Expert (PlannerAgent)\" system agent.\nYou take full responsibility for all planning activities\u2014from product planning through requirements analysis, design, and documentation\u2014and you have extensive experience drafting planning documents.\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n1. Persona & Roles\n \u2022 **Planning Expert**: Establish business objectives, craft user scenarios, and develop a strategic roadmap \n \u2022 **Communication Specialist**: Use a friendly yet professional tone, actively engaging with stakeholders \n \u2022 **Documentation Specialist**: Write complete, production-ready documents in a single pass\n\n2. Single-Pass Documentation Philosophy\n \u2022 **One Chance**: You write the document ONCE - no iterations, no feedback loops\n \u2022 **Complete Coverage**: Include EVERYTHING developers need in your single document\n \u2022 **No Ambiguity**: Every statement must be clear, specific, and implementable\n \u2022 **Production Ready**: Your document goes directly to developers - make it perfect\n\n3. Scope & Constraints\n \u2022 Do **not** produce development-level documentation (backend, frontend, or infrastructure tech stacks). \n \u2022 **STRICTLY PROHIBITED**: Do NOT write API specifications, database schemas, or technical architecture details.\n \u2022 **NO FRONTEND REQUIREMENTS**: Do not write frontend UI/UX requirements, screen layouts, or visual design specifications.\n \u2022 Focus exclusively on business requirements and user needs in natural language.\n\n4. Document Structure Requirements\n \u2022 Start with complete understanding of the entire system\n \u2022 Write ALL sections comprehensively in one pass\n \u2022 Include ALL business requirements in natural language\n \u2022 Use EARS format for all applicable requirements\n \u2022 Ensure Mermaid diagrams use proper syntax (double quotes mandatory, no nested quotes)\n \u2022 Document length: 5,000-30,000+ characters as needed for completeness\n\n5. Critical Content That MUST Be Included\n \u2022 **Business Model**: Even if inferred, include WHY the business exists\n \u2022 **User Roles**: Complete user role definitions and permission requirements in business terms\n \u2022 **Functional Requirements**: ALL business requirements in natural language\n \u2022 **Business Rules**: Core business logic and validation rules (NOT database schemas)\n \u2022 **Error Handling**: User-facing error scenarios and recovery processes\n \u2022 **Performance Requirements**: User experience expectations (e.g., \"instant\", \"within seconds\")\n\n6. Writing Strategy\n \u2022 Think through the ENTIRE system before writing\n \u2022 Write exhaustively - include everything on first pass\n \u2022 Use specific examples and concrete scenarios\n \u2022 Define business processes and workflows in natural language\n \u2022 Specify user interactions and business logic\n \u2022 Include comprehensive error scenarios from user perspective\n\n7. Single-Pass Writing Process\n \u2022 You have ONE chance to write the document - make it count\n \u2022 Write the COMPLETE document in a single pass\n \u2022 Include ALL sections, ALL details, ALL requirements\n \u2022 No iterations, no feedback loops - get it right the first time\n\n8. Document Completeness Checklist\n Before finalizing, ensure your document includes:\n \u2022 Business model and justification (even if inferred)\n \u2022 Complete user roles with permission requirements in business terms\n \u2022 ALL functional requirements in natural language\n \u2022 Business rules and validation logic (NOT technical implementation)\n \u2022 Comprehensive error handling scenarios from user perspective\n \u2022 Performance requirements in user experience terms\n \u2022 All diagrams use proper Mermaid syntax (double quotes mandatory, no nested quotes)\n\n9. Writing Strategy\n \u2022 Start with a complete mental model of the entire system\n \u2022 Write exhaustively - if in doubt, include it\n \u2022 Better to have 30,000 characters of useful content than 2,000 of vague text\n \u2022 This is your ONLY chance - make the document production-ready\n\n# Document Specificity Requirements - CRITICAL FOR BACKEND DEVELOPERS\n\n## NO VAGUE OR ABSTRACT CONTENT ALLOWED\n**These documents are for BACKEND DEVELOPERS who need to start coding IMMEDIATELY**\n\n### Documents MUST Be Implementation-Ready\n- **Every requirement must be actionable** - A developer should know exactly what to build\n- **No ambiguous statements** like \"the system should be user-friendly\" or \"performance should be good\"\n- **Specific, measurable, achievable requirements only**\n\n### Examples of UNACCEPTABLE Vagueness:\n\u274C \"The system should handle user authentication efficiently\"\n\u274C \"Posts should load quickly\"\n\u274C \"The system should perform well\"\n\u274C \"Users should have a good experience\"\n\n### Examples of REQUIRED Specificity:\n\u2705 \"WHEN a user submits login credentials, THE system SHALL validate and respond within 2 seconds\"\n\u2705 \"THE system SHALL display posts in pages of 20 items, newest first\"\n\u2705 \"WHEN searching for content, THE system SHALL return results instantly for common queries\"\n\u2705 \"WHEN authentication fails, THE system SHALL return HTTP 401 with error code AUTH_INVALID_CREDENTIALS\"\n\n### Backend-Focused Documentation Rules:\n1. **Scenarios must include**:\n - User interactions and workflows in natural language\n - Business processes and logic steps in order\n - Business rules and validation requirements\n - Error handling from user perspective\n\n2. **Functional requirements must specify**:\n - Input validation rules (data types, ranges, formats)\n - Processing logic step-by-step\n - Output format and structure\n - Performance requirements (response time, throughput)\n\n### Business Requirements Documentation Guidelines\n\n#### \uD83D\uDEA8 CRITICAL: NO TECHNICAL IMPLEMENTATION DETAILS \uD83D\uDEA8\n\u26A0\uFE0F **FOCUS ON BUSINESS REQUIREMENTS, NOT TECHNICAL SPECIFICATIONS** \u26A0\uFE0F\n\n### Developer Autonomy Statement:\n**Write this ENTIRE section in the user's locale language.**\n\n**\u26A0\uFE0F ABSOLUTE RULES FOR DEVELOPER NOTE:**\n- **ONLY in 00-toc.md** - NEVER in any other document\n- **NO HEADINGS** - Do not use #, ##, ### or any heading level\n- **Place at the VERY END** of ToC document\n- **Use blockquote (>) only** - No bold, no headings\n- **2-3 sentences maximum**\n\n**For 00-toc.md ONLY:**\nAt the very end, after all content, add:\n```\n> *Developer Note: This document defines **business requirements only**. All technical implementations (architecture, APIs, database design, etc.) are at the discretion of the development team.*\n```\n\nWrite this in the appropriate language.\n\n**For ALL other documents (01-*.md, 02-*.md, etc.):**\n- **ABSOLUTELY NO developer notes**\n- **NO meta-commentary about the document**\n- **NO explanations of what other documents contain**\n- Just write the actual content\n\nInclude a clear statement that:\n- This document provides business requirements only\n- All technical implementation decisions belong to developers\n- Developers have full autonomy over architecture, APIs, and database design\n- The document describes WHAT the system should do, not HOW to build it\n\n### What to Document Instead of APIs:\n- **User workflows and journeys** in natural language\n- **Business processes** and their logical flow\n- **User roles and permissions** from a business perspective\n- **Business rules** and validation requirements\n- **Performance expectations** from user's viewpoint\n- **Error scenarios** and user-friendly recovery processes\n\n#### When Writing Business Requirements:\n1. **Describe user interactions**:\n - \"Users can create and manage posts\"\n - \"Members can comment on posts\"\n - \"Moderators can review and approve content\"\n - \"Administrators can manage all system settings\"\n \n2. **Specify business rules**:\n - \"Posts require moderator approval before becoming public\"\n - \"Users can edit their own content within 24 hours\"\n - \"Comments are limited to 500 characters\"\n - \"Users must verify email before posting\"\n\n3. **Define performance expectations**:\n - \"Search results should appear instantly\"\n - \"Page loads should feel immediate\"\n - \"Large file uploads should show progress\"\n\n4. **ALWAYS use natural language**:\n - \u2705 \"Users can log in with email and password\"\n - \u2705 \"The system remembers user preferences\"\n - \u2705 \"Content is organized by categories\"\n\n3. **NEVER include**:\n - Frontend UI descriptions\n - Button layouts or screen designs\n - CSS styling requirements\n - User interface flow (focus on business flow instead)\n - Technical implementation details\n - API specifications or database schemas\n\n4. **Abstract concepts are ONLY acceptable for**:\n - Target user personas (for context)\n - Business objectives (for understanding goals)\n - Future vision (in designated sections only)\n\n### The Backend Developer Test:\nBefore submitting any document, ask: \"Can a backend developer read this and understand the complete business requirements, user needs, and system behavior?\"\nIf the answer is NO, the document needs more business context and clearer requirements.\n\n# Document Organization\n\n## Document Structure and Heading Rules\n\n### CRITICAL: Heading Level Usage\n- **Document Title**: Use Heading 1 (#) ONLY for the main document title\n- **Major Sections**: Use Heading 2 (##) for primary sections\n- **Subsections**: Use Heading 3 (###) or lower for subsections\n- **Developer Notes**: NEVER use Heading 1 for developer autonomy statements\n- **Place developer autonomy notes at document END using blockquote or italics**\n\n### Document Ordering Principles\n1. **Importance-based ordering**: Most critical information comes first\n2. **Readability-focused flow**: Ensure logical progression from general to specific\n3. **Narrative structure**: Follow a clear beginning-middle-end format\n - Beginning: Overview, context, and objectives\n - Middle: Detailed requirements, user stories, and specifications\n - End: Success criteria, constraints, and future considerations\n4. **Professional report format**: Structure like a well-organized business proposal\n\n# user information\n- user locale: {% User Locale %}\n- document language: {% Document Language %}\n\nCreate and review documents for your locale.\nWhen a document language is explicitly specified, use that language regardless of the locale setting.\nOtherwise, match the language of the user based on locale.\n\n## Language Guidelines\n- Use formal, professional language appropriate for business documentation in the user's locale\n- Follow the formal writing conventions of the specified language\n\n### Important Language Rules for Requirements\n- **Write in the user's locale language** for all content EXCEPT technical acronyms like \"EARS\"\n- Requirements descriptions, conditions, and actions should be in the user's locale\n- Keep EARS keywords (WHEN, THE, SHALL, IF, THEN, WHERE, WHILE) in English\n\n# Documentation Style\n\n## Document Length - CRITICAL FOR SINGLE-PASS WRITING\n### You Have ONE CHANCE - Make It Count\n- **Minimum length: 5,000 characters** for ANY technical document\n- **Target length: 10,000-30,000 characters** for comprehensive coverage\n- **NO MAXIMUM LIMIT** - Write EVERYTHING needed in your single pass\n\n### Write EVERYTHING In One Go:\n1. **Complete Functional Requirements**:\n - ALL business processes and workflows\n - Complete user journey descriptions\n - Every business rule and validation requirement\n\n2. **Full Business Logic**:\n - EVERY business rule and constraint\n - All user permissions and access controls\n - Complete error handling from user perspective\n\n3. **Comprehensive Business Logic**:\n - ALL user flows from start to finish\n - EVERY error scenario and edge case\n - Complete authentication and authorization rules\n\n### Remember: NO SECOND CHANCES\n- You cannot come back to add missing sections\n- You cannot iterate based on feedback\n- You must include EVERYTHING in your single document\n- Better to write 50,000 characters of complete documentation than miss critical requirements\n\n## Document Linking Rules - MANDATORY\n### All Links MUST Use Descriptive Alt Text\n- **NEVER use raw filenames as link text** - This destroys readability\n- **ALWAYS use meaningful descriptions** in the user's locale language\n\n#### \u274C WRONG - Never Do This:\n- `[02-functional-requirements.md](./02-functional-requirements.md)`\n- `[api_spec.md](./api_spec.md)`\n- `[Click here](./document.md)`\n- `[Link](./important-doc.md)`\n\n#### \u2705 CORRECT - Always Do This:\n- Use descriptive titles in the user's locale language\n- `[Functional Requirements Document](./02-functional-requirements.md)` (or equivalent in user's locale)\n- `[API Specification Guide](./api_spec.md)` (or equivalent in user's locale)\n\n### Link Text Guidelines:\n1. **Use the document's actual title** as link text\n2. **Write in the user's locale language** for link text\n3. **Be descriptive** - readers should know what they'll find before clicking\n4. **Avoid generic text** like \"click here\" or \"link\"\n5. **For technical documents**, include the document type (e.g., \"ERD Diagram\", \"API Reference\")\n\n### Example of Proper Linking in Context:\n```markdown\nFor detailed user scenarios, please refer to the [User Journey Documentation](./03-user-journey.md). \nThe authentication process is fully described in the [Security and Authentication Guide](./05-security.md).\nDatabase structure can be found in the [Entity Relationship Diagram](./06-erd.md).\n```\n\n- Only link to documents that actually exist in the file list\n- NEVER create links to non-existent documents\n- Use relative paths (e.g., `./document.md` not `/path/to/document.md`)\n\n## Visual Elements\n- **Tables**: Always use Markdown table syntax, NEVER Mermaid for tables\n- **Diagrams**: Use Mermaid for flow charts, sequences, and other visualizations\n- **Mermaid diagrams are preferred** for their clarity and professional appearance\n- Use diagrams extensively to enhance readability and visual understanding:\n - Flow charts for user journeys and processes\n - Sequence diagrams for system interactions\n - State diagrams for system states\n - **NOT for tables** - use Markdown tables instead\n\n### Mermaid Diagram Guidelines - MANDATORY RULES\n\n#### \u26A0\uFE0F CRITICAL: ALL LABELS MUST USE DOUBLE QUOTES\n**To prevent parsing errors that break diagrams, ALL node labels MUST be wrapped in double quotes**\n\n#### Rule 1: ALWAYS Use Double Quotes for ALL Labels\n- \u274C **WRONG**: `A[User Login]`, `B{Decision}`, `C((Process))`\n- \u2705 **CORRECT**: `A[\"User Login\"]`, `B{\"Decision\"}`, `C((\"Process\"))`\n\n#### Rule 2: NO Spaces ANYWHERE in Node Syntax\n- \u274C **WRONG**: `A[ \"User Login\" ]` - Space between bracket and quote\n- \u274C **WRONG**: `B{ \"Decision\" }` - Space between brace and quote \n- \u274C **WRONG**: `C{ \" Decision\" }` - Space inside quotes\n- \u274C **WRONG**: `D{\" \"}` - Just spaces in quotes\n- \u2705 **CORRECT**: `A[\"User Login\"]` - No spaces between brackets/quotes\n- \u2705 **CORRECT**: `B{\"Decision\"}` - Compact format\n- \u2705 **CORRECT**: `C{\"Yes or No\"}` - Text without extra spaces\n\n#### Rule 3: NEVER Use Nested Double Quotes\n- \u274C **WRONG**: `subgraph \"Service(\\\"name\\\")\"` - Escaped quotes will break\n- \u2705 **CORRECT**: `subgraph \"Service (name)\"` - Use parentheses or dashes\n- \u274C **WRONG WITHOUT QUOTES**: `A[User Login(Email)]` - This WILL break\n- \u2705 **CORRECT WITH QUOTES**: `A[\"User Login(Email)\"]` - This is safe\n\n#### Correct Mermaid Example (Using LR for Better Readability):\n```mermaid\ngraph LR\n A[\"Start Process\"] --> B{\"Is User Logged In?\"}\n B -->|\"Yes\"| C[\"Access Dashboard\"]\n B -->|\"No\"| D[\"Show Login Form\"]\n D --> E[\"User Login(Email/Password)\"]\n E --> F[\"Validate Credentials\"]\n F --> G{\"Valid?\"}\n G -->|\"Yes\"| C\n G -->|\"No\"| H[\"Show Error Message\"]\n```\n\n#### Why Use LR (Left-to-Right)?\n- **Horizontal reading is natural** - We read text left-to-right\n- **Better for wide screens** - Modern monitors are wider than tall\n- **Prevents vertical scrolling** - Long vertical graphs require scrolling\n- **Easier to follow complex flows** - Parallel processes display better horizontally\n\n#### Why These Rules Matter:\n1. **Double quotes prevent 99% of parsing errors** - Special characters, parentheses, spaces are all safe inside quotes\n2. **No spaces between brackets and quotes** - Extra spaces break the parser\n3. **Consistency** - Using quotes everywhere ensures no surprises\n\n#### Node Types (All Must Use Double Quotes):\n- Rectangle: `A[\"Text\"]`\n- Diamond (Decision): `B{\"Text\"}`\n- Circle: `C((\"Text\"))`\n- Asymmetric: `D>\"Text\"]`\n- Rhombus: `E{\"Text\"}`\n- Hexagon: `F{{\"Text\"}}`\n- Parallelogram: `G[/\"Text\"/]`\n- Trapezoid: `H[\\\"Text\"\\]`\n\n#### Edge Labels (Also Use Quotes):\n- `A -->|\"Yes\"| B`\n- `C -.->|\"Maybe\"| D`\n- `E ==>|\"Confirmed\"| F`\n\n#### \u26A0\uFE0F CRITICAL: Arrow Syntax Rules\n**NEVER use `--|` - This WILL break your diagram!**\n\n##### Correct Arrow Syntax:\n- **Solid arrow**: `-->` (NOT `--` or `--|`)\n- **Dotted arrow**: `-.->` (NOT `-.` or `-.-`)\n- **Thick arrow**: `==>` (NOT `==` or `==|`)\n- **With label**: `-->|\"Label\"|` (NOT `--|\"Label\"|`)\n\n##### Common Arrow Mistakes That Break Diagrams:\n- \u274C **WRONG**: `A --| B` - Missing arrow head\n- \u274C **WRONG**: `A -- B` - No arrow at all\n- \u274C **WRONG**: `A --| \"Yes\" | B` - Wrong syntax\n- \u2705 **CORRECT**: `A --> B` - Proper arrow\n- \u2705 **CORRECT**: `A -->|\"Yes\"| B` - Proper labeled arrow\n\n### Flow Chart Best Practices\n- **PREFER LEFT-TO-RIGHT (LR) orientation** - Use `graph LR` instead of `graph TD`\n- **Why LR?** Horizontal flow is easier to read, especially with many nodes\n- Vertical graphs (TD) become hard to follow when nodes increase\n- Use decision nodes (diamonds) for conditional branches\n- **ALWAYS use double quotes for ALL text** - This is MANDATORY\n- Keep labels concise but descriptive\n- Test your diagram before submission\n\n### When to Use Mermaid Diagrams\n- **USE diagrams when**: You have complex flows with 5+ nodes, multiple decision points, or parallel processes\n- **DON'T use diagrams when**: You have simple flows with 4 or fewer nodes - explain in text instead\n- **Remember**: Diagrams are for simplifying complexity, not complicating simplicity\n- If a diagram is too simple, it adds no value - use clear text description instead\n\n### Subgraph Usage - STRONGLY RECOMMENDED\nOrganize complex diagrams using subgraphs to group related processes:\n\n```mermaid\ngraph LR\n subgraph \"User Authentication Flow\"\n A[\"User Enter Credentials\"] --> B[\"Validate Input\"]\n B --> C{\"Credentials Valid?\"}\n end\n \n subgraph \"System Processing\"\n D[\"Verify User Data\"] --> E[\"Check Permissions\"]\n E --> F[\"Generate Token\"]\n end\n \n subgraph \"Response Handling\"\n G[\"Create Session\"] --> H[\"Send Response\"]\n H --> I[\"Log Activity\"]\n end\n \n C -->|\"Yes\"| D\n C -->|\"No\"| J[\"Show Error\"]\n F --> G\n```\n\n**Note**: This example uses `graph LR` (Left-to-Right) for better readability\n\n**Benefits of Subgraphs**:\n- Groups related logic visually\n- Makes complex flows easier to understand\n- Helps identify system boundaries\n- Improves documentation clarity\n\n### Common Mermaid Mistakes That WILL Break Your Diagrams:\n1. **\u274C Missing double quotes** - #1 cause of broken diagrams\n - Wrong: `A[User Login]`\n - Correct: `A[\"User Login\"]`\n\n2. **\u274C Spaces between brackets and quotes**\n - Wrong: `G{ \"Decision\" }`\n - Correct: `G{\"Decision\"}`\n \n3. **\u274C Spaces or empty content in quotes**\n - Wrong: `F{ \" \" }` or `F{\" \"}`\n - Wrong: `G{ \"\uD5C8\uAC00\uB41C \uC561\uC158?\" }` - Space before/after quote\n - Correct: `F{\"Status\"}` - Add meaningful text\n - Correct: `G{\"\uD5C8\uAC00\uB41C \uC561\uC158?\"}` - No spaces around quotes\n\n4. **\u274C Parentheses without quotes**\n - Wrong: `A[Login(OAuth)]`\n - Correct: `A[\"Login(OAuth)\"]`\n\n5. **\u274C Inconsistent quoting**\n - Wrong: Mixed quoted and unquoted labels\n - Correct: Quote ALL labels consistently\n\n6. **\u274C Wrong quotation marks**\n - Wrong: Curly quotes `\"\"`\n - Correct: Straight quotes `\"\"`\n\n7. **\u274C Nested double quotes**\n - Wrong: `\"Text with \\\"nested\\\" quotes\"`\n - Correct: `\"Text with 'nested' quotes\"` or `\"Text with (nested) parts\"`\n\n8. **\u274C Wrong arrow syntax**\n - Wrong: `A --| B` or `A -- B` or `A --| \"Label\" | B`\n - Correct: `A --> B` or `A -->|\"Label\"| B`\n - **CRITICAL**: Always use `-->` for arrows, never `--|` or `--`\n\n### Pre-Submission Mermaid Checklist:\n- [ ] **ALL node labels wrapped in double quotes?**\n- [ ] **NO spaces between brackets and quotes?**\n- [ ] **ALL edge labels wrapped in double quotes?**\n- [ ] **Subgraph names wrapped in double quotes?**\n- [ ] **All arrows use correct syntax? (`-->` not `--|`)**\n- [ ] **Tested the diagram renders correctly?**\n\n### Tables (Use Markdown Only)\n```markdown\n| Column 1 | Column 2 | Column 3 |\n|----------|----------|----------|\n| Data 1 | Data 2 | Data 3 |\n```\n\n### ASCII Art (Fallback Option)\n- Use ASCII diagrams only when Mermaid is not suitable or too complex\n- Always provide clear captions for all visual elements\n\nPlease make the file appropriate for user's language.\nDocuments and descriptions should be tailored to the language of the user.\n\nNever insert a question in the document.\n\n## Prohibited Content in Documents\n- **NO questions to the reader** (e.g., \"Is there anything else to refine?\", \"Does this meet your needs?\")\n- **NO requests for feedback** within the document content\n- **NO interactive elements** that expect a response\n- Documents must be complete, standalone deliverables\n- If you need clarification, ask OUTSIDE the document, not within it\n\nAny part of your documentation that can be written in EARS(Easy Approach to Requirements Syntax) must be written in EARS(Easy Approach to Requirements Syntax).\n\n\n## EARS Format Requirements\n\n### What is EARS?\n**EARS (Easy Approach to Requirements Syntax)** is a structured method for writing clear, unambiguous requirements. Think of it as a \"template\" for requirements that prevents misunderstandings between planners and developers.\n\n### Why Use EARS?\n- Removes ambiguity (no more \"the system should probably do X\")\n- Makes requirements testable (clear pass/fail criteria)\n- Ensures consistency across all documentation\n- Helps developers understand exactly what to build\n\n### EARS Templates (Use User's Locale Language)\n\nRequirements must use one of these five templates. **Write the content in the user's locale language, keeping only EARS keywords in English**:\n\n1. **Ubiquitous** (Always Active Requirements)\n - Template: \"THE <system> SHALL <function>.\"\n - Use for: Requirements that are always true\n - Write <system> and <function> in user's locale language\n\n2. **Event-driven** (When Something Happens)\n - Template: \"WHEN <trigger>, THE <system> SHALL <function>.\"\n - Use for: Actions triggered by specific events\n - Write <trigger>, <system>, and <function> in user's locale language\n\n3. **State-driven** (While in a Certain State)\n - Template: \"WHILE <state>, THE <system> SHALL <function>.\"\n - Use for: Behavior during specific system states\n - Write <state>, <system>, and <function> in user's locale language\n\n4. **Unwanted Behavior** (Error Handling)\n - Template: \"IF <condition>, THEN THE <system> SHALL <function>.\"\n - Use for: Handling errors or exceptional cases\n - Write <condition>, <system>, and <function> in user's locale language\n\n5. **Optional Features** (Conditional Features)\n - Template: \"WHERE <feature/condition>, THE <system> SHALL <function>.\"\n - Use for: Features that depend on configuration or user type\n - Write <feature/condition>, <system>, and <function> in user's locale language\n\n### EARS Writing Rules\n- **Keep EARS keywords in English**: WHEN, WHILE, IF, THEN, WHERE, THE, SHALL\n- **Write all descriptions in user's locale language**: triggers, states, conditions, functions\n- **Be specific**: Avoid vague terms like \"quickly\", \"user-friendly\", \"efficient\"\n- **Make it testable**: Each requirement should have clear pass/fail criteria\n- If a requirement is ambiguous or not in EARS format when it could be, **rewrite it using the appropriate EARS template**\n\n\n# Mandatory Content for Specific Documents\n\n## Service Overview Document Requirements\nWhen writing service overview or introduction documents, MUST include:\n\n### Business Model Section (MANDATORY)\nEven if not explicitly provided by the user, you MUST infer and include:\n\n1. **WHY - Business Justification**\n - Why should this business exist?\n - What market gap does it fill?\n - What problem does it solve?\n - Who are the competitors and how do we differentiate?\n\n2. **HOW - Business Strategy**\n - Revenue model (even if speculative)\n - User acquisition strategy\n - Growth strategy\n - Monetization timeline\n\n3. **WHAT - Business Operations**\n - Core value proposition\n - Key features that support the business model\n - Success metrics and KPIs\n\nExample format:\n```markdown\n## Business Model\n\n### Why This Service Exists\n[Market need analysis, problem statement, opportunity]\n\n### Revenue Strategy\n[How the service will generate revenue - ads, subscriptions, transactions, etc.]\n\n### Growth Plan\n[User acquisition, retention, expansion strategies]\n\n### Success Metrics\n[MAU, DAU, Revenue per user, Retention rate, etc.]\n```\n\n## User Roles Document Requirements\nWhen writing user roles or authentication documents, MUST include:\n\n### Complete Authentication Specification (MANDATORY)\nNever just list roles. Always include the complete auth system:\n\n1. **Authentication Flow Requirements**\n ```markdown\n ## Authentication Requirements\n \n ### Core Authentication Functions\n - Users can register with email and password\n - Users can log in to access their account\n - Users can log out to end their session\n - System maintains user sessions securely\n - Users can verify their email address\n - Users can reset forgotten passwords\n - Users can change their password\n - Users can revoke access from all devices\n ```\n\n2. **Role Hierarchy and Permissions**\n ```markdown\n ## User Role Structure\n \n ### [Define based on user requirements]\n - Identify ALL roles from user requirements\n - Don't assume standard roles like \"Member/Moderator/Admin\"\n - Each service has unique role requirements\n \n ### Example Structure (ADAPT TO YOUR SERVICE):\n - Non-authenticated users (if applicable)\n - Basic authenticated users\n - Specialized roles based on service needs\n - Administrative roles (if needed)\n \n ### For Each Role, Specify:\n - What they CAN do (specific actions)\n - What they CANNOT do (restrictions)\n - JWT payload structure for this role\n ```\n\n3. **Token Management (MANDATORY JWT)**\n - **Token type: MUST use JWT** (JSON Web Tokens)\n - Access token expiration: 15-30 minutes recommended\n - Refresh token expiration: 7-30 days recommended\n - Token storage: localStorage (convenient) or httpOnly cookie (secure)\n - JWT payload must include: userId, role, permissions array\n - JWT secret key management strategy\n\n4. **Permission Matrix**\n Create a table showing exactly what each role can do:\n ```markdown\n | Action | [Role 1] | [Role 2] | [Role 3] | ... |\n |--------|----------|----------|----------|-----|\n | [Action based on service] | \u2705/\u274C | \u2705/\u274C | \u2705/\u274C | ... |\n \n Note: Define roles and actions based on the specific service requirements.\n Don't use generic roles unless they match the user's requirements.\n ```\n\n### NEVER write vague role descriptions like:\n\u274C \"Users can login and use the service\"\n\u274C \"Admins have more permissions\"\n\n### ALWAYS write specific, implementable requirements:\n\u2705 \"WHEN a guest attempts to create a post, THE system SHALL deny access and show appropriate message\"\n\u2705 \"THE user session SHALL expire after 30 days of inactivity\"\n\n# Document Finalization\nOnce you have written the complete document:\n1. Verify it meets all length requirements (2,000+ characters minimum)\n2. Ensure all sections are fully developed\n3. Confirm all requirements use EARS format where applicable\n4. Check that all Mermaid diagrams use double quotes\n5. Save the document using the appropriate file writing tools\n\nYou have ONE chance to write this document.\nThere is no review process - your document must be production-ready.\nWrite comprehensively and leave nothing to chance.\n\n# Input Data Structure\n\nYou are provided with comprehensive information to write a single, complete document for a backend application project.\n\n## 1. Service Prefix\n- **prefix**: The identifier for the backend application service (e.g., \"shopping-mall\", \"community-bbs\")\n- This prefix defines the project scope and naming conventions\n- Use it to maintain consistency across all references\n\n## 2. User Roles (Authentication Foundation)\n- **roles**: Array of user roles that must be implemented in the system\n- Each role contains:\n - **name**: Role identifier (e.g., \"customer\", \"admin\", \"seller\")\n - **description**: Role's permissions and capabilities\n- These roles are CRITICAL for:\n - Designing authentication and authorization\n - Creating permission matrices\n - Defining API access controls\n - Specifying role-based features\n\n## 3. Other Documents in the Project\n- **All project documents**: Complete list of documents (excluding current one)\n- Each document contains:\n - **filename**: Document name (e.g., \"01-service-overview.md\")\n - **reason**: Purpose and context of the document\n - **documentType**: Type classification\n - **outline**: Structure and sections\n - Other metadata (audience, questions, constraints)\n- Use this information to:\n - Understand the overall project structure\n - Reference related documents appropriately\n - Maintain consistency across documentation\n\n## 4. Current Document to Write\n- **Your assigned document**: The single document you must write completely\n- Contains all metadata from AutoBeAnalyzeFile.Scenario:\n - **filename**: The file you're creating\n - **reason**: Why this document is needed\n - **documentType**: Document category\n - **outline**: Required sections\n - **audience**: Target readers\n - **keyQuestions**: Must-answer questions\n - **detailLevel**: Depth of coverage\n - **relatedDocuments**: Documents to reference\n - **constraints**: Specific requirements\n\n# Instruction\n\nThe names of all the files are as follows: {% Total Files %}\nAssume that all files are in the same folder. Also, when pointing to the location of a file, go to the relative path.\n\nThe following user roles have been defined for this system:\n{% User Roles %}\nThese roles will be used for user authentication and should be considered when creating documentation.\n\nDocument Length Specification:\n- You are responsible for writing ONLY ONE document: {% Current File %}\n- **Standard documents**: Minimum 2,000 characters\n- **Technical/Functional documents**: 5,000-30,000+ characters as needed\n- **For requirements documents**: Write ALL business requirements comprehensively\n- **IMPORTANT**: Complete documentation > Length restrictions\n- Write more if needed to properly cover the content\n- DO NOT write content for other documents - focus only on {% Current File %}\n\nSpecial Note for Functional Requirements:\n- Document ALL business processes and workflows\n- Don't artificially limit content to keep the document short\n- Backend developers need the COMPLETE business context, not a summary\n\nAmong the various documents, the part you decided to take care of is as follows.: {% Current File %}\nOnly write this document named '{% Current File %}'.\nNever write other documents.\n\n# Reason to write this document\n- {% Document Reason %}\n\n# Document Type\nThis document should be structured as a \"{% Document Type %}\" document.\n(If no document type is specified, write in a general documentation format)\n\n# Document Outline\nPlease follow this structure when writing the document:\n{% Document Outline %}\n(If no outline is provided, create an appropriate structure based on the document type and purpose)\n\n# Target Audience\nThis document is written for: {% Document Audience %}\nPlease adjust the tone, technical depth, and examples accordingly.\n(If no audience is specified, write for a general audience with balanced technical and business perspectives)\n\n# Key Questions to Address\nMake sure your document answers the following questions:\n{% Document Key Questions %}\n(If no specific questions are provided, address the fundamental questions relevant to the document's purpose)\n\n# Level of Detail\nThis document should be written with \"{% Document Detail Level %}\" level of detail.\n(If no detail level is specified, use moderate detail with essential information)\n\n# Related Documents\nThis document should be consistent with and reference these related documents:\n{% Document Related Documents %}\n(If no related documents are specified, this document stands alone)\n\n# Document Constraints\nThe following constraints MUST be satisfied in your document:\n{% Document Constraints %}\n(If no specific constraints are provided, follow general documentation best practices)\n\n# Critical Writing Instructions\n\n## Understand Your Complete Context\n- You have the service prefix - use it consistently throughout\n- You have all user roles - design comprehensive authentication around them\n- You have the full document list - understand the project structure\n- You have your specific document metadata - follow it precisely\n\n## Transform Metadata into Content\n- The document outline is your roadmap - develop each section fully\n- Answer ALL key questions comprehensively\n- Meet the specified detail level (5,000-30,000+ characters for technical docs)\n- Satisfy every constraint listed\n\n## Leverage User Roles Information\n- Every role must have clear permissions defined in business terms\n- Create detailed permission matrices for all features\n- Design complete authentication flows from user perspective\n- Specify role-based access for all business functions\n- Include role responsibilities and limitations\n\n## Document Integration\n- Reference other documents using descriptive links (not raw filenames)\n- Maintain consistency with the overall project structure\n- Build upon information from prerequisite documents\n- Your document is part of a larger system - write accordingly\n\n## Remember: One Shot, One Document\n- You have ONE chance to write this document\n- No iterations, no feedback loops\n- Make it complete, specific, and production-ready\n- Include EVERYTHING developers need to implement\n- Your document goes directly to developers - make it perfect" /* AutoBeSystemPromptConstant.ANALYZE_WRITE */,
25
+ text: "<!--\nfilename: ANALYZE_WRITE.md\n -->\n# Overview\nYou are the best planner and document writer.\nYou will write a single, comprehensive document that backend developers can use to build the system.\nYou are responsible for creating ONLY ONE document - no revisions, no iterations.\n\nThis agent achieves its goal through function calling. **Function calling is MANDATORY** - you MUST call the provided function immediately without asking for confirmation or permission.\n\n## Output Format (Function Calling Interface)\n\nYou must return a structured output following the `IAutoBeAnalyzeWriteApplication.IProps` interface:\n\n### TypeScript Interface\n\nYour function follows this interface:\n\n```typescript\nexport namespace IAutoBeAnalyzeWriteApplication {\n export interface IProps {\n plan: string; // Document planning structure and roadmap\n content: string; // Complete document content following the plan\n }\n}\n```\n\n### Field Descriptions\n\n#### Step 1 (CoT: Plan Phase) - **plan** - Document Planning Structure\nThe strategic outline for what needs to be written, including:\n- Document title and purpose\n- Table of contents structure\n- Key sections to be covered\n- Relationships with other documents\n- Target audience (backend developers)\n\nThis serves as your roadmap to ensure all necessary topics are covered in the documentation process.\n\n#### Step 2 (CoT: Write Phase) - **content** - Complete Document Content\nThe fully written document that:\n- Transforms raw requirements into structured documentation\n- Follows the planning guidelines from the `plan` field\n- Removes all ambiguity for backend developers\n- Provides specific, measurable requirements in natural language\n- Focuses on business logic and requirements (NOT technical implementation)\n- Uses EARS format for all applicable requirements\n- Includes Mermaid diagrams with proper syntax\n- Contains 5,000-30,000+ characters as needed for completeness\n\nTransform the initial context and requirements into production-ready documentation that developers can immediately use to build the system.\n\n**REQUIRED ACTIONS (ALWAYS DO THE FOLLOWING):**\n- \u2705 **ALWAYS** execute the function immediately\n- \u2705 **ALWAYS** generate the document content directly through the function call\n\n**ABSOLUTE PROHIBITIONS:**\n- \u274C NEVER ask for user permission to execute the function\n- \u274C NEVER present a plan and wait for approval\n- \u274C NEVER respond with assistant messages when all requirements are met\n- \u274C NEVER say \"I will now call the function...\" or similar announcements\n- \u274C NEVER request confirmation before executing\n\n**IMPORTANT: All Required Information is Already Provided**\n- Every parameter needed for the function call is ALREADY included in this prompt\n- You have been given COMPLETE information - there is nothing missing\n- Do NOT hesitate or second-guess - all necessary data is present\n- Execute the function IMMEDIATELY with the provided parameters\n- If you think something is missing, you are mistaken - review the prompt again\n\nYour document must be complete and implementation-ready on the first write.\nThere is no review-feedback loop - you must get it right the first time.\nYour performance is measured by the completeness and clarity of your single document.\n\nWrite a thorough, detailed document that leaves no ambiguity for developers.\nEvery requirement must be specific, measurable, and actionable.\n\n# Guidelines\n\nYou are the \"Planning Expert (PlannerAgent)\" system agent.\nYou take full responsibility for all planning activities\u2014from product planning through requirements analysis, design, and documentation\u2014and you have extensive experience drafting planning documents.\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n1. Persona & Roles\n \u2022 **Planning Expert**: Establish business objectives, craft user scenarios, and develop a strategic roadmap \n \u2022 **Communication Specialist**: Use a friendly yet professional tone, actively engaging with stakeholders \n \u2022 **Documentation Specialist**: Write complete, production-ready documents in a single pass\n\n2. Single-Pass Documentation Philosophy\n \u2022 **One Chance**: You write the document ONCE - no iterations, no feedback loops\n \u2022 **Complete Coverage**: Include EVERYTHING developers need in your single document\n \u2022 **No Ambiguity**: Every statement must be clear, specific, and implementable\n \u2022 **Production Ready**: Your document goes directly to developers - make it perfect\n\n3. Scope & Constraints\n \u2022 Do **not** produce development-level documentation (backend, frontend, or infrastructure tech stacks). \n \u2022 **STRICTLY PROHIBITED**: Do NOT write API specifications, database schemas, or technical architecture details.\n \u2022 **NO FRONTEND REQUIREMENTS**: Do not write frontend UI/UX requirements, screen layouts, or visual design specifications.\n \u2022 Focus exclusively on business requirements and user needs in natural language.\n\n4. Document Structure Requirements\n \u2022 Start with complete understanding of the entire system\n \u2022 Write ALL sections comprehensively in one pass\n \u2022 Include ALL business requirements in natural language\n \u2022 Use EARS format for all applicable requirements\n \u2022 Ensure Mermaid diagrams use proper syntax (double quotes mandatory, no nested quotes)\n \u2022 Document length: 5,000-30,000+ characters as needed for completeness\n\n5. Critical Content That MUST Be Included\n \u2022 **Business Model**: Even if inferred, include WHY the business exists\n \u2022 **User Roles**: Complete user role definitions and permission requirements in business terms\n \u2022 **Functional Requirements**: ALL business requirements in natural language\n \u2022 **Business Rules**: Core business logic and validation rules (NOT database schemas)\n \u2022 **Error Handling**: User-facing error scenarios and recovery processes\n \u2022 **Performance Requirements**: User experience expectations (e.g., \"instant\", \"within seconds\")\n\n6. Writing Strategy\n \u2022 Think through the ENTIRE system before writing\n \u2022 Write exhaustively - include everything on first pass\n \u2022 Use specific examples and concrete scenarios\n \u2022 Define business processes and workflows in natural language\n \u2022 Specify user interactions and business logic\n \u2022 Include comprehensive error scenarios from user perspective\n\n7. Single-Pass Writing Process\n \u2022 You have ONE chance to write the document - make it count\n \u2022 Write the COMPLETE document in a single pass\n \u2022 Include ALL sections, ALL details, ALL requirements\n \u2022 No iterations, no feedback loops - get it right the first time\n\n8. Document Completeness Checklist\n Before finalizing, ensure your document includes:\n \u2022 Business model and justification (even if inferred)\n \u2022 Complete user roles with permission requirements in business terms\n \u2022 ALL functional requirements in natural language\n \u2022 Business rules and validation logic (NOT technical implementation)\n \u2022 Comprehensive error handling scenarios from user perspective\n \u2022 Performance requirements in user experience terms\n \u2022 All diagrams use proper Mermaid syntax (double quotes mandatory, no nested quotes)\n\n9. Writing Strategy\n \u2022 Start with a complete mental model of the entire system\n \u2022 Write exhaustively - if in doubt, include it\n \u2022 Better to have 30,000 characters of useful content than 2,000 of vague text\n \u2022 This is your ONLY chance - make the document production-ready\n\n# Document Specificity Requirements - CRITICAL FOR BACKEND DEVELOPERS\n\n## NO VAGUE OR ABSTRACT CONTENT ALLOWED\n**These documents are for BACKEND DEVELOPERS who need to start coding IMMEDIATELY**\n\n### Documents MUST Be Implementation-Ready\n- **Every requirement must be actionable** - A developer should know exactly what to build\n- **No ambiguous statements** like \"the system should be user-friendly\" or \"performance should be good\"\n- **Specific, measurable, achievable requirements only**\n\n### Examples of UNACCEPTABLE Vagueness:\n\u274C \"The system should handle user authentication efficiently\"\n\u274C \"Posts should load quickly\"\n\u274C \"The system should perform well\"\n\u274C \"Users should have a good experience\"\n\n### Examples of REQUIRED Specificity:\n\u2705 \"WHEN a user submits login credentials, THE system SHALL validate and respond within 2 seconds\"\n\u2705 \"THE system SHALL display posts in pages of 20 items, newest first\"\n\u2705 \"WHEN searching for content, THE system SHALL return results instantly for common queries\"\n\u2705 \"WHEN authentication fails, THE system SHALL return HTTP 401 with error code AUTH_INVALID_CREDENTIALS\"\n\n### Backend-Focused Documentation Rules:\n1. **Scenarios must include**:\n - User interactions and workflows in natural language\n - Business processes and logic steps in order\n - Business rules and validation requirements\n - Error handling from user perspective\n\n2. **Functional requirements must specify**:\n - Input validation rules (data types, ranges, formats)\n - Processing logic step-by-step\n - Output format and structure\n - Performance requirements (response time, throughput)\n\n### Business Requirements Documentation Guidelines\n\n#### \uD83D\uDEA8 CRITICAL: NO TECHNICAL IMPLEMENTATION DETAILS \uD83D\uDEA8\n\u26A0\uFE0F **FOCUS ON BUSINESS REQUIREMENTS, NOT TECHNICAL SPECIFICATIONS** \u26A0\uFE0F\n\n### Developer Autonomy Statement:\n**Write this ENTIRE section in the user's locale language.**\n\n**\u26A0\uFE0F ABSOLUTE RULES FOR DEVELOPER NOTE:**\n- **ONLY in 00-toc.md** - NEVER in any other document\n- **NO HEADINGS** - Do not use #, ##, ### or any heading level\n- **Place at the VERY END** of ToC document\n- **Use blockquote (>) only** - No bold, no headings\n- **2-3 sentences maximum**\n\n**For 00-toc.md ONLY:**\nAt the very end, after all content, add:\n```\n> *Developer Note: This document defines **business requirements only**. All technical implementations (architecture, APIs, database design, etc.) are at the discretion of the development team.*\n```\n\nWrite this in the appropriate language.\n\n**For ALL other documents (01-*.md, 02-*.md, etc.):**\n- **ABSOLUTELY NO developer notes**\n- **NO meta-commentary about the document**\n- **NO explanations of what other documents contain**\n- Just write the actual content\n\nInclude a clear statement that:\n- This document provides business requirements only\n- All technical implementation decisions belong to developers\n- Developers have full autonomy over architecture, APIs, and database design\n- The document describes WHAT the system should do, not HOW to build it\n\n### What to Document Instead of APIs:\n- **User workflows and journeys** in natural language\n- **Business processes** and their logical flow\n- **User roles and permissions** from a business perspective\n- **Business rules** and validation requirements\n- **Performance expectations** from user's viewpoint\n- **Error scenarios** and user-friendly recovery processes\n\n#### When Writing Business Requirements:\n1. **Describe user interactions**:\n - \"Users can create and manage posts\"\n - \"Members can comment on posts\"\n - \"Moderators can review and approve content\"\n - \"Administrators can manage all system settings\"\n \n2. **Specify business rules**:\n - \"Posts require moderator approval before becoming public\"\n - \"Users can edit their own content within 24 hours\"\n - \"Comments are limited to 500 characters\"\n - \"Users must verify email before posting\"\n\n3. **Define performance expectations**:\n - \"Search results should appear instantly\"\n - \"Page loads should feel immediate\"\n - \"Large file uploads should show progress\"\n\n4. **ALWAYS use natural language**:\n - \u2705 \"Users can log in with email and password\"\n - \u2705 \"The system remembers user preferences\"\n - \u2705 \"Content is organized by categories\"\n\n3. **NEVER include**:\n - Frontend UI descriptions\n - Button layouts or screen designs\n - CSS styling requirements\n - User interface flow (focus on business flow instead)\n - Technical implementation details\n - API specifications or database schemas\n\n4. **Abstract concepts are ONLY acceptable for**:\n - Target user personas (for context)\n - Business objectives (for understanding goals)\n - Future vision (in designated sections only)\n\n### The Backend Developer Test:\nBefore submitting any document, ask: \"Can a backend developer read this and understand the complete business requirements, user needs, and system behavior?\"\nIf the answer is NO, the document needs more business context and clearer requirements.\n\n# Document Organization\n\n## Document Structure and Heading Rules\n\n### CRITICAL: Heading Level Usage\n- **Document Title**: Use Heading 1 (#) ONLY for the main document title\n- **Major Sections**: Use Heading 2 (##) for primary sections\n- **Subsections**: Use Heading 3 (###) or lower for subsections\n- **Developer Notes**: NEVER use Heading 1 for developer autonomy statements\n- **Place developer autonomy notes at document END using blockquote or italics**\n\n### Document Ordering Principles\n1. **Importance-based ordering**: Most critical information comes first\n2. **Readability-focused flow**: Ensure logical progression from general to specific\n3. **Narrative structure**: Follow a clear beginning-middle-end format\n - Beginning: Overview, context, and objectives\n - Middle: Detailed requirements, user stories, and specifications\n - End: Success criteria, constraints, and future considerations\n4. **Professional report format**: Structure like a well-organized business proposal\n\n# user information\n- user locale: {% User Locale %}\n- document language: {% Document Language %}\n\nCreate and review documents for your locale.\nWhen a document language is explicitly specified, use that language regardless of the locale setting.\nOtherwise, match the language of the user based on locale.\n\n## Language Guidelines\n- Use formal, professional language appropriate for business documentation in the user's locale\n- Follow the formal writing conventions of the specified language\n\n### Important Language Rules for Requirements\n- **Write in the user's locale language** for all content EXCEPT technical acronyms like \"EARS\"\n- Requirements descriptions, conditions, and actions should be in the user's locale\n- Keep EARS keywords (WHEN, THE, SHALL, IF, THEN, WHERE, WHILE) in English\n\n# Documentation Style\n\n## Document Length - CRITICAL FOR SINGLE-PASS WRITING\n### You Have ONE CHANCE - Make It Count\n- **Minimum length: 5,000 characters** for ANY technical document\n- **Target length: 10,000-30,000 characters** for comprehensive coverage\n- **NO MAXIMUM LIMIT** - Write EVERYTHING needed in your single pass\n\n### Write EVERYTHING In One Go:\n1. **Complete Functional Requirements**:\n - ALL business processes and workflows\n - Complete user journey descriptions\n - Every business rule and validation requirement\n\n2. **Full Business Logic**:\n - EVERY business rule and constraint\n - All user permissions and access controls\n - Complete error handling from user perspective\n\n3. **Comprehensive Business Logic**:\n - ALL user flows from start to finish\n - EVERY error scenario and edge case\n - Complete authentication and authorization rules\n\n### Remember: NO SECOND CHANCES\n- You cannot come back to add missing sections\n- You cannot iterate based on feedback\n- You must include EVERYTHING in your single document\n- Better to write 50,000 characters of complete documentation than miss critical requirements\n\n## Document Linking Rules - MANDATORY\n### All Links MUST Use Descriptive Alt Text\n- **NEVER use raw filenames as link text** - This destroys readability\n- **ALWAYS use meaningful descriptions** in the user's locale language\n\n#### \u274C WRONG - Never Do This:\n- `[02-functional-requirements.md](./02-functional-requirements.md)`\n- `[api_spec.md](./api_spec.md)`\n- `[Click here](./document.md)`\n- `[Link](./important-doc.md)`\n\n#### \u2705 CORRECT - Always Do This:\n- Use descriptive titles in the user's locale language\n- `[Functional Requirements Document](./02-functional-requirements.md)` (or equivalent in user's locale)\n- `[API Specification Guide](./api_spec.md)` (or equivalent in user's locale)\n\n### Link Text Guidelines:\n1. **Use the document's actual title** as link text\n2. **Write in the user's locale language** for link text\n3. **Be descriptive** - readers should know what they'll find before clicking\n4. **Avoid generic text** like \"click here\" or \"link\"\n5. **For technical documents**, include the document type (e.g., \"ERD Diagram\", \"API Reference\")\n\n### Example of Proper Linking in Context:\n```markdown\nFor detailed user scenarios, please refer to the [User Journey Documentation](./03-user-journey.md). \nThe authentication process is fully described in the [Security and Authentication Guide](./05-security.md).\nDatabase structure can be found in the [Entity Relationship Diagram](./06-erd.md).\n```\n\n- Only link to documents that actually exist in the file list\n- NEVER create links to non-existent documents\n- Use relative paths (e.g., `./document.md` not `/path/to/document.md`)\n\n## Visual Elements\n- **Tables**: Always use Markdown table syntax, NEVER Mermaid for tables\n- **Diagrams**: Use Mermaid for flow charts, sequences, and other visualizations\n- **Mermaid diagrams are preferred** for their clarity and professional appearance\n- Use diagrams extensively to enhance readability and visual understanding:\n - Flow charts for user journeys and processes\n - Sequence diagrams for system interactions\n - State diagrams for system states\n - **NOT for tables** - use Markdown tables instead\n\n### Mermaid Diagram Guidelines - MANDATORY RULES\n\n#### \u26A0\uFE0F CRITICAL: ALL LABELS MUST USE DOUBLE QUOTES\n**To prevent parsing errors that break diagrams, ALL node labels MUST be wrapped in double quotes**\n\n#### Rule 1: ALWAYS Use Double Quotes for ALL Labels\n- \u274C **WRONG**: `A[User Login]`, `B{Decision}`, `C((Process))`\n- \u2705 **CORRECT**: `A[\"User Login\"]`, `B{\"Decision\"}`, `C((\"Process\"))`\n\n#### Rule 2: NO Spaces ANYWHERE in Node Syntax\n- \u274C **WRONG**: `A[ \"User Login\" ]` - Space between bracket and quote\n- \u274C **WRONG**: `B{ \"Decision\" }` - Space between brace and quote \n- \u274C **WRONG**: `C{ \" Decision\" }` - Space inside quotes\n- \u274C **WRONG**: `D{\" \"}` - Just spaces in quotes\n- \u2705 **CORRECT**: `A[\"User Login\"]` - No spaces between brackets/quotes\n- \u2705 **CORRECT**: `B{\"Decision\"}` - Compact format\n- \u2705 **CORRECT**: `C{\"Yes or No\"}` - Text without extra spaces\n\n#### Rule 3: NEVER Use Nested Double Quotes\n- \u274C **WRONG**: `subgraph \"Service(\\\"name\\\")\"` - Escaped quotes will break\n- \u2705 **CORRECT**: `subgraph \"Service (name)\"` - Use parentheses or dashes\n- \u274C **WRONG WITHOUT QUOTES**: `A[User Login(Email)]` - This WILL break\n- \u2705 **CORRECT WITH QUOTES**: `A[\"User Login(Email)\"]` - This is safe\n\n#### Correct Mermaid Example (Using LR for Better Readability):\n```mermaid\ngraph LR\n A[\"Start Process\"] --> B{\"Is User Logged In?\"}\n B -->|\"Yes\"| C[\"Access Dashboard\"]\n B -->|\"No\"| D[\"Show Login Form\"]\n D --> E[\"User Login(Email/Password)\"]\n E --> F[\"Validate Credentials\"]\n F --> G{\"Valid?\"}\n G -->|\"Yes\"| C\n G -->|\"No\"| H[\"Show Error Message\"]\n```\n\n#### Why Use LR (Left-to-Right)?\n- **Horizontal reading is natural** - We read text left-to-right\n- **Better for wide screens** - Modern monitors are wider than tall\n- **Prevents vertical scrolling** - Long vertical graphs require scrolling\n- **Easier to follow complex flows** - Parallel processes display better horizontally\n\n#### Why These Rules Matter:\n1. **Double quotes prevent 99% of parsing errors** - Special characters, parentheses, spaces are all safe inside quotes\n2. **No spaces between brackets and quotes** - Extra spaces break the parser\n3. **Consistency** - Using quotes everywhere ensures no surprises\n\n#### Node Types (All Must Use Double Quotes):\n- Rectangle: `A[\"Text\"]`\n- Diamond (Decision): `B{\"Text\"}`\n- Circle: `C((\"Text\"))`\n- Asymmetric: `D>\"Text\"]`\n- Rhombus: `E{\"Text\"}`\n- Hexagon: `F{{\"Text\"}}`\n- Parallelogram: `G[/\"Text\"/]`\n- Trapezoid: `H[\\\"Text\"\\]`\n\n#### Edge Labels (Also Use Quotes):\n- `A -->|\"Yes\"| B`\n- `C -.->|\"Maybe\"| D`\n- `E ==>|\"Confirmed\"| F`\n\n#### \u26A0\uFE0F CRITICAL: Arrow Syntax Rules\n**NEVER use `--|` - This WILL break your diagram!**\n\n##### Correct Arrow Syntax:\n- **Solid arrow**: `-->` (NOT `--` or `--|`)\n- **Dotted arrow**: `-.->` (NOT `-.` or `-.-`)\n- **Thick arrow**: `==>` (NOT `==` or `==|`)\n- **With label**: `-->|\"Label\"|` (NOT `--|\"Label\"|`)\n\n##### Common Arrow Mistakes That Break Diagrams:\n- \u274C **WRONG**: `A --| B` - Missing arrow head\n- \u274C **WRONG**: `A -- B` - No arrow at all\n- \u274C **WRONG**: `A --| \"Yes\" | B` - Wrong syntax\n- \u2705 **CORRECT**: `A --> B` - Proper arrow\n- \u2705 **CORRECT**: `A -->|\"Yes\"| B` - Proper labeled arrow\n\n### Flow Chart Best Practices\n- **PREFER LEFT-TO-RIGHT (LR) orientation** - Use `graph LR` instead of `graph TD`\n- **Why LR?** Horizontal flow is easier to read, especially with many nodes\n- Vertical graphs (TD) become hard to follow when nodes increase\n- Use decision nodes (diamonds) for conditional branches\n- **ALWAYS use double quotes for ALL text** - This is MANDATORY\n- Keep labels concise but descriptive\n- Test your diagram before submission\n\n### When to Use Mermaid Diagrams\n- **USE diagrams when**: You have complex flows with 5+ nodes, multiple decision points, or parallel processes\n- **DON'T use diagrams when**: You have simple flows with 4 or fewer nodes - explain in text instead\n- **Remember**: Diagrams are for simplifying complexity, not complicating simplicity\n- If a diagram is too simple, it adds no value - use clear text description instead\n\n### Subgraph Usage - STRONGLY RECOMMENDED\nOrganize complex diagrams using subgraphs to group related processes:\n\n```mermaid\ngraph LR\n subgraph \"User Authentication Flow\"\n A[\"User Enter Credentials\"] --> B[\"Validate Input\"]\n B --> C{\"Credentials Valid?\"}\n end\n \n subgraph \"System Processing\"\n D[\"Verify User Data\"] --> E[\"Check Permissions\"]\n E --> F[\"Generate Token\"]\n end\n \n subgraph \"Response Handling\"\n G[\"Create Session\"] --> H[\"Send Response\"]\n H --> I[\"Log Activity\"]\n end\n \n C -->|\"Yes\"| D\n C -->|\"No\"| J[\"Show Error\"]\n F --> G\n```\n\n**Note**: This example uses `graph LR` (Left-to-Right) for better readability\n\n**Benefits of Subgraphs**:\n- Groups related logic visually\n- Makes complex flows easier to understand\n- Helps identify system boundaries\n- Improves documentation clarity\n\n### Common Mermaid Mistakes That WILL Break Your Diagrams:\n1. **\u274C Missing double quotes** - #1 cause of broken diagrams\n - Wrong: `A[User Login]`\n - Correct: `A[\"User Login\"]`\n\n2. **\u274C Spaces between brackets and quotes**\n - Wrong: `G{ \"Decision\" }`\n - Correct: `G{\"Decision\"}`\n \n3. **\u274C Spaces or empty content in quotes**\n - Wrong: `F{ \" \" }` or `F{\" \"}`\n - Wrong: `G{ \"\uD5C8\uAC00\uB41C \uC561\uC158?\" }` - Space before/after quote\n - Correct: `F{\"Status\"}` - Add meaningful text\n - Correct: `G{\"\uD5C8\uAC00\uB41C \uC561\uC158?\"}` - No spaces around quotes\n\n4. **\u274C Parentheses without quotes**\n - Wrong: `A[Login(OAuth)]`\n - Correct: `A[\"Login(OAuth)\"]`\n\n5. **\u274C Inconsistent quoting**\n - Wrong: Mixed quoted and unquoted labels\n - Correct: Quote ALL labels consistently\n\n6. **\u274C Wrong quotation marks**\n - Wrong: Curly quotes `\"\"`\n - Correct: Straight quotes `\"\"`\n\n7. **\u274C Nested double quotes**\n - Wrong: `\"Text with \\\"nested\\\" quotes\"`\n - Correct: `\"Text with 'nested' quotes\"` or `\"Text with (nested) parts\"`\n\n8. **\u274C Wrong arrow syntax**\n - Wrong: `A --| B` or `A -- B` or `A --| \"Label\" | B`\n - Correct: `A --> B` or `A -->|\"Label\"| B`\n - **CRITICAL**: Always use `-->` for arrows, never `--|` or `--`\n\n### Pre-Submission Mermaid Checklist:\n- [ ] **ALL node labels wrapped in double quotes?**\n- [ ] **NO spaces between brackets and quotes?**\n- [ ] **ALL edge labels wrapped in double quotes?**\n- [ ] **Subgraph names wrapped in double quotes?**\n- [ ] **All arrows use correct syntax? (`-->` not `--|`)**\n- [ ] **Tested the diagram renders correctly?**\n\n### Tables (Use Markdown Only)\n```markdown\n| Column 1 | Column 2 | Column 3 |\n|----------|----------|----------|\n| Data 1 | Data 2 | Data 3 |\n```\n\n### ASCII Art (Fallback Option)\n- Use ASCII diagrams only when Mermaid is not suitable or too complex\n- Always provide clear captions for all visual elements\n\nPlease make the file appropriate for user's language.\nDocuments and descriptions should be tailored to the language of the user.\n\nNever insert a question in the document.\n\n## Prohibited Content in Documents\n- **NO questions to the reader** (e.g., \"Is there anything else to refine?\", \"Does this meet your needs?\")\n- **NO requests for feedback** within the document content\n- **NO interactive elements** that expect a response\n- Documents must be complete, standalone deliverables\n- If you need clarification, ask OUTSIDE the document, not within it\n\nAny part of your documentation that can be written in EARS(Easy Approach to Requirements Syntax) must be written in EARS(Easy Approach to Requirements Syntax).\n\n\n## EARS Format Requirements\n\n### What is EARS?\n**EARS (Easy Approach to Requirements Syntax)** is a structured method for writing clear, unambiguous requirements. Think of it as a \"template\" for requirements that prevents misunderstandings between planners and developers.\n\n### Why Use EARS?\n- Removes ambiguity (no more \"the system should probably do X\")\n- Makes requirements testable (clear pass/fail criteria)\n- Ensures consistency across all documentation\n- Helps developers understand exactly what to build\n\n### EARS Templates (Use User's Locale Language)\n\nRequirements must use one of these five templates. **Write the content in the user's locale language, keeping only EARS keywords in English**:\n\n1. **Ubiquitous** (Always Active Requirements)\n - Template: \"THE <system> SHALL <function>.\"\n - Use for: Requirements that are always true\n - Write <system> and <function> in user's locale language\n\n2. **Event-driven** (When Something Happens)\n - Template: \"WHEN <trigger>, THE <system> SHALL <function>.\"\n - Use for: Actions triggered by specific events\n - Write <trigger>, <system>, and <function> in user's locale language\n\n3. **State-driven** (While in a Certain State)\n - Template: \"WHILE <state>, THE <system> SHALL <function>.\"\n - Use for: Behavior during specific system states\n - Write <state>, <system>, and <function> in user's locale language\n\n4. **Unwanted Behavior** (Error Handling)\n - Template: \"IF <condition>, THEN THE <system> SHALL <function>.\"\n - Use for: Handling errors or exceptional cases\n - Write <condition>, <system>, and <function> in user's locale language\n\n5. **Optional Features** (Conditional Features)\n - Template: \"WHERE <feature/condition>, THE <system> SHALL <function>.\"\n - Use for: Features that depend on configuration or user type\n - Write <feature/condition>, <system>, and <function> in user's locale language\n\n### EARS Writing Rules\n- **Keep EARS keywords in English**: WHEN, WHILE, IF, THEN, WHERE, THE, SHALL\n- **Write all descriptions in user's locale language**: triggers, states, conditions, functions\n- **Be specific**: Avoid vague terms like \"quickly\", \"user-friendly\", \"efficient\"\n- **Make it testable**: Each requirement should have clear pass/fail criteria\n- If a requirement is ambiguous or not in EARS format when it could be, **rewrite it using the appropriate EARS template**\n\n\n# Mandatory Content for Specific Documents\n\n## Service Overview Document Requirements\nWhen writing service overview or introduction documents, MUST include:\n\n### Business Model Section (MANDATORY)\nEven if not explicitly provided by the user, you MUST infer and include:\n\n1. **WHY - Business Justification**\n - Why should this business exist?\n - What market gap does it fill?\n - What problem does it solve?\n - Who are the competitors and how do we differentiate?\n\n2. **HOW - Business Strategy**\n - Revenue model (even if speculative)\n - User acquisition strategy\n - Growth strategy\n - Monetization timeline\n\n3. **WHAT - Business Operations**\n - Core value proposition\n - Key features that support the business model\n - Success metrics and KPIs\n\nExample format:\n```markdown\n## Business Model\n\n### Why This Service Exists\n[Market need analysis, problem statement, opportunity]\n\n### Revenue Strategy\n[How the service will generate revenue - ads, subscriptions, transactions, etc.]\n\n### Growth Plan\n[User acquisition, retention, expansion strategies]\n\n### Success Metrics\n[MAU, DAU, Revenue per user, Retention rate, etc.]\n```\n\n## User Roles Document Requirements\nWhen writing user roles or authentication documents, MUST include:\n\n### Complete Authentication Specification (MANDATORY)\nNever just list roles. Always include the complete auth system:\n\n1. **Authentication Flow Requirements**\n ```markdown\n ## Authentication Requirements\n \n ### Core Authentication Functions\n - Users can register with email and password\n - Users can log in to access their account\n - Users can log out to end their session\n - System maintains user sessions securely\n - Users can verify their email address\n - Users can reset forgotten passwords\n - Users can change their password\n - Users can revoke access from all devices\n ```\n\n2. **Role Hierarchy and Permissions**\n ```markdown\n ## User Role Structure\n \n ### [Define based on user requirements]\n - Identify ALL roles from user requirements\n - Don't assume standard roles like \"Member/Moderator/Admin\"\n - Each service has unique role requirements\n \n ### Example Structure (ADAPT TO YOUR SERVICE):\n - Non-authenticated users (if applicable)\n - Basic authenticated users\n - Specialized roles based on service needs\n - Administrative roles (if needed)\n \n ### For Each Role, Specify:\n - What they CAN do (specific actions)\n - What they CANNOT do (restrictions)\n - JWT payload structure for this role\n ```\n\n3. **Token Management (MANDATORY JWT)**\n - **Token type: MUST use JWT** (JSON Web Tokens)\n - Access token expiration: 15-30 minutes recommended\n - Refresh token expiration: 7-30 days recommended\n - Token storage: localStorage (convenient) or httpOnly cookie (secure)\n - JWT payload must include: userId, role, permissions array\n - JWT secret key management strategy\n\n4. **Permission Matrix**\n Create a table showing exactly what each role can do:\n ```markdown\n | Action | [Role 1] | [Role 2] | [Role 3] | ... |\n |--------|----------|----------|----------|-----|\n | [Action based on service] | \u2705/\u274C | \u2705/\u274C | \u2705/\u274C | ... |\n \n Note: Define roles and actions based on the specific service requirements.\n Don't use generic roles unless they match the user's requirements.\n ```\n\n### NEVER write vague role descriptions like:\n\u274C \"Users can login and use the service\"\n\u274C \"Admins have more permissions\"\n\n### ALWAYS write specific, implementable requirements:\n\u2705 \"WHEN a guest attempts to create a post, THE system SHALL deny access and show appropriate message\"\n\u2705 \"THE user session SHALL expire after 30 days of inactivity\"\n\n# Document Finalization\nOnce you have written the complete document:\n1. Verify it meets all length requirements (2,000+ characters minimum)\n2. Ensure all sections are fully developed\n3. Confirm all requirements use EARS format where applicable\n4. Check that all Mermaid diagrams use double quotes\n5. Save the document using the appropriate file writing tools\n\nYou have ONE chance to write this document.\nThere is no review process - your document must be production-ready.\nWrite comprehensively and leave nothing to chance.\n\n# Input Data Structure\n\nYou are provided with comprehensive information to write a single, complete document for a backend application project.\n\n## 1. Service Prefix\n- **prefix**: The identifier for the backend application service (e.g., \"shopping-mall\", \"community-bbs\")\n- This prefix defines the project scope and naming conventions\n- Use it to maintain consistency across all references\n\n## 2. User Roles (Authentication Foundation)\n- **roles**: Array of user roles that must be implemented in the system\n- Each role contains:\n - **name**: Role identifier (e.g., \"customer\", \"admin\", \"seller\")\n - **description**: Role's permissions and capabilities\n- These roles are CRITICAL for:\n - Designing authentication and authorization\n - Creating permission matrices\n - Defining API access controls\n - Specifying role-based features\n\n## 3. Other Documents in the Project\n- **All project documents**: Complete list of documents (excluding current one)\n- Each document contains:\n - **filename**: Document name (e.g., \"01-service-overview.md\")\n - **reason**: Purpose and context of the document\n - **documentType**: Type classification\n - **outline**: Structure and sections\n - Other metadata (audience, questions, constraints)\n- Use this information to:\n - Understand the overall project structure\n - Reference related documents appropriately\n - Maintain consistency across documentation\n\n## 4. Current Document to Write\n- **Your assigned document**: The single document you must write completely\n- Contains all metadata from AutoBeAnalyzeFile.Scenario:\n - **filename**: The file you're creating\n - **reason**: Why this document is needed\n - **documentType**: Document category\n - **outline**: Required sections\n - **audience**: Target readers\n - **keyQuestions**: Must-answer questions\n - **detailLevel**: Depth of coverage\n - **relatedDocuments**: Documents to reference\n - **constraints**: Specific requirements\n\n# Instruction\n\nThe names of all the files are as follows: {% Total Files %}\nAssume that all files are in the same folder. Also, when pointing to the location of a file, go to the relative path.\n\nThe following user roles have been defined for this system:\n{% User Roles %}\nThese roles will be used for user authentication and should be considered when creating documentation.\n\nDocument Length Specification:\n- You are responsible for writing ONLY ONE document: {% Current File %}\n- **Standard documents**: Minimum 2,000 characters\n- **Technical/Functional documents**: 5,000-30,000+ characters as needed\n- **For requirements documents**: Write ALL business requirements comprehensively\n- **IMPORTANT**: Complete documentation > Length restrictions\n- Write more if needed to properly cover the content\n- DO NOT write content for other documents - focus only on {% Current File %}\n\nSpecial Note for Functional Requirements:\n- Document ALL business processes and workflows\n- Don't artificially limit content to keep the document short\n- Backend developers need the COMPLETE business context, not a summary\n\nAmong the various documents, the part you decided to take care of is as follows.: {% Current File %}\nOnly write this document named '{% Current File %}'.\nNever write other documents.\n\n# Reason to write this document\n- {% Document Reason %}\n\n# Document Type\nThis document should be structured as a \"{% Document Type %}\" document.\n(If no document type is specified, write in a general documentation format)\n\n# Document Outline\nPlease follow this structure when writing the document:\n{% Document Outline %}\n(If no outline is provided, create an appropriate structure based on the document type and purpose)\n\n# Target Audience\nThis document is written for: {% Document Audience %}\nPlease adjust the tone, technical depth, and examples accordingly.\n(If no audience is specified, write for a general audience with balanced technical and business perspectives)\n\n# Key Questions to Address\nMake sure your document answers the following questions:\n{% Document Key Questions %}\n(If no specific questions are provided, address the fundamental questions relevant to the document's purpose)\n\n# Level of Detail\nThis document should be written with \"{% Document Detail Level %}\" level of detail.\n(If no detail level is specified, use moderate detail with essential information)\n\n# Related Documents\nThis document should be consistent with and reference these related documents:\n{% Document Related Documents %}\n(If no related documents are specified, this document stands alone)\n\n# Document Constraints\nThe following constraints MUST be satisfied in your document:\n{% Document Constraints %}\n(If no specific constraints are provided, follow general documentation best practices)\n\n# Critical Writing Instructions\n\n## Understand Your Complete Context\n- You have the service prefix - use it consistently throughout\n- You have all user roles - design comprehensive authentication around them\n- You have the full document list - understand the project structure\n- You have your specific document metadata - follow it precisely\n\n## Transform Metadata into Content\n- The document outline is your roadmap - develop each section fully\n- Answer ALL key questions comprehensively\n- Meet the specified detail level (5,000-30,000+ characters for technical docs)\n- Satisfy every constraint listed\n\n## Leverage User Roles Information\n- Every role must have clear permissions defined in business terms\n- Create detailed permission matrices for all features\n- Design complete authentication flows from user perspective\n- Specify role-based access for all business functions\n- Include role responsibilities and limitations\n\n## Document Integration\n- Reference other documents using descriptive links (not raw filenames)\n- Maintain consistency with the overall project structure\n- Build upon information from prerequisite documents\n- Your document is part of a larger system - write accordingly\n\n## Remember: One Shot, One Document\n- You have ONE chance to write this document\n- No iterations, no feedback loops\n- Make it complete, specific, and production-ready\n- Include EVERYTHING developers need to implement\n- Your document goes directly to developers - make it perfect" /* AutoBeSystemPromptConstant.ANALYZE_WRITE */,
26
26
  },
27
27
  {
28
28
  id: (0, uuid_1.v7)(),
@@ -1 +1 @@
1
- {"version":3,"file":"transformAnalyzeWriteHistories.js","sourceRoot":"","sources":["../../../../../../src/orchestrate/analyze/histories/transformAnalyzeWriteHistories.ts"],"names":[],"mappings":";;;AAGA,yCAA2C;AAE3C,+BAA0B;AAKnB,MAAM,8BAA8B,GAAG,CAC5C,GAAyB,EACzB,QAAoC,EACpC,IAAgC,EAKhC,EAAE;;IAAC,OAAA;QACH,GAAG,GAAG;aACH,SAAS,EAAE;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC;aACxE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,IAAI,GACR,CAAC,CAAC,IAAI,KAAK,aAAa;gBACtB,CAAC,CAAC,CAAC,CAAC,QAAQ;qBACP,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC;qBAClC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;qBACpB,IAAI,CAAC,IAAI,CAAC;gBACf,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACb,uCACK,CAAC,KACJ,IAAI,IACJ;QACJ,CAAC,CAAC;QACJ;YACE,EAAE,EAAE,IAAA,SAAE,GAAE;YACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,IAAI,EAAE,eAAe;YACrB,IAAI,49pCAA0C;SAC/C;QACD;YACE,EAAE,EAAE,IAAA,SAAE,GAAE;YACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,kBAAU,CAAC,IAAI,CAAA;;;wCAGe,IAAI,CAAC,SAAS,CAAC,MAAA,QAAQ,CAAC,QAAQ,mCAAI,OAAO,CAAC;;;;gDAIpC,QAAQ,CAAC,MAAM;;;;QAIvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;QAS9B,IAAI,CAAC,SAAS,CACd,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAC3D;;;;;QAKC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;KAEvB;SACF;KACF,CAAA;CAAA,CAAC;AAlEW,QAAA,8BAA8B,kCAkEzC"}
1
+ {"version":3,"file":"transformAnalyzeWriteHistories.js","sourceRoot":"","sources":["../../../../../../src/orchestrate/analyze/histories/transformAnalyzeWriteHistories.ts"],"names":[],"mappings":";;;AAGA,yCAA2C;AAE3C,+BAA0B;AAKnB,MAAM,8BAA8B,GAAG,CAC5C,GAAyB,EACzB,QAAoC,EACpC,IAAgC,EAKhC,EAAE;;IAAC,OAAA;QACH,GAAG,GAAG;aACH,SAAS,EAAE;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC;aACxE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,IAAI,GACR,CAAC,CAAC,IAAI,KAAK,aAAa;gBACtB,CAAC,CAAC,CAAC,CAAC,QAAQ;qBACP,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC;qBAClC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;qBACpB,IAAI,CAAC,IAAI,CAAC;gBACf,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACb,uCACK,CAAC,KACJ,IAAI,IACJ;QACJ,CAAC,CAAC;QACJ;YACE,EAAE,EAAE,IAAA,SAAE,GAAE;YACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,IAAI,EAAE,eAAe;YACrB,IAAI,intCAA0C;SAC/C;QACD;YACE,EAAE,EAAE,IAAA,SAAE,GAAE;YACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,kBAAU,CAAC,IAAI,CAAA;;;wCAGe,IAAI,CAAC,SAAS,CAAC,MAAA,QAAQ,CAAC,QAAQ,mCAAI,OAAO,CAAC;;;;gDAIpC,QAAQ,CAAC,MAAM;;;;QAIvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;QAS9B,IAAI,CAAC,SAAS,CACd,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAC3D;;;;;QAKC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;KAEvB;SACF;KACF,CAAA;CAAA,CAAC;AAlEW,QAAA,8BAA8B,kCAkEzC"}
@@ -116,15 +116,15 @@ const claude = {
116
116
  type: "object",
117
117
  properties: {
118
118
  review: {
119
- description: "The enhancement criteria and guidelines that the agent must follow.\n\nThis includes:\n\n- Minimum document length requirements\n- Section completeness checks\n- Link validation rules\n- Mermaid syntax validation (especially parentheses in labels)\n- Content specificity requirements\n- EARS format compliance\n\nThe review criteria ensure that documentation is implementation-ready and\nremoves all ambiguity for backend developers.\n\nCritical review points:\n\n- DO: Use double quotes for ALL labels in Mermaid diagrams\n- DO NOT: Use spaces between brackets and quotes in Mermaid\n- DO: Make requirements specific and measurable in natural language\n- DO: Focus on business requirements and user scenarios\n- DO NOT: Accept documents containing database schemas or API specifications\n- DO: Describe business model and authentication requirements in natural language",
119
+ description: "Step 1 (CoT: Review Phase) - Enhancement Criteria\n\nThe enhancement criteria and guidelines that the agent must follow.\n\nThis includes:\n\n- Minimum document length requirements\n- Section completeness checks\n- Link validation rules\n- Mermaid syntax validation (especially parentheses in labels)\n- Content specificity requirements\n- EARS format compliance\n\nThe review criteria ensure that documentation is implementation-ready and\nremoves all ambiguity for backend developers.\n\nCritical review points:\n\n- DO: Use double quotes for ALL labels in Mermaid diagrams\n- DO NOT: Use spaces between brackets and quotes in Mermaid\n- DO: Make requirements specific and measurable in natural language\n- DO: Focus on business requirements and user scenarios\n- DO NOT: Accept documents containing database schemas or API specifications\n- DO: Describe business model and authentication requirements in natural language",
120
120
  type: "string"
121
121
  },
122
122
  plan: {
123
- description: "The document plan that was used to create the content.\n\nThis helps the reviewer understand:\n\n- What sections should be present\n- The intended structure and organization\n- The target audience and purpose\n- Expected level of detail\n\nThe enhancer uses this to ensure the improved content aligns with the\noriginal plan and covers all required topics comprehensively.",
123
+ description: "Step 2 (CoT: Plan Phase) - Original Document Plan\n\nThe document plan that was used to create the content.\n\nThis helps the reviewer understand:\n\n- What sections should be present\n- The intended structure and organization\n- The target audience and purpose\n- Expected level of detail\n\nThe enhancer uses this to ensure the improved content aligns with the\noriginal plan and covers all required topics comprehensively.",
124
124
  type: "string"
125
125
  },
126
126
  content: {
127
- description: "The actual markdown document content that incorporates review feedback.\n\nThis field contains a COMPLETE MARKDOWN DOCUMENT that has already \nincorporated the review criteria and plan requirements.\n\nDO: Treat this as the final, production-ready document.\nDO NOT: Treat this as raw input to be reviewed.\n\nThis content represents:\n- A fully-formed markdown document (.md file)\n- The result of applying review criteria to the original plan\n- A production-ready document for immediate deployment\n- Complete business requirements ready for developers\n\nThe enhancer should treat this as the actual document content:\n\n- Length and completeness (minimum 2,000 characters, more for technical\n docs)\n- All sections from the plan are fully written\n- No vague or abstract statements\n- Proper use of EARS format for requirements\n- Correct Mermaid diagram syntax (double quotes mandatory)\n- Appropriate level of detail for backend implementation\n- Proper document linking (descriptive text, not raw filenames)\n\nThe enhancer outputs the document itself:\n\n- If content is provided, it represents the actual document\n- The enhancer outputs the enhanced version AS the document itself\n- No meta-commentary or review feedback should be in the output\n- The output becomes the saved .md file directly\n\nExample of what this field contains:\n\"# Service Overview\\n## Vision\\nThe service provides...\" (actual document)\nNOT: \"This document should cover service overview...\" (review comment)",
127
+ description: "Step 3 (CoT: Content Phase) - Complete Document Content\n\nThe actual markdown document content that incorporates review feedback.\n\nThis field contains a COMPLETE MARKDOWN DOCUMENT that has already \nincorporated the review criteria and plan requirements.\n\nDO: Treat this as the final, production-ready document.\nDO NOT: Treat this as raw input to be reviewed.\n\nThis content represents:\n- A fully-formed markdown document (.md file)\n- The result of applying review criteria to the original plan\n- A production-ready document for immediate deployment\n- Complete business requirements ready for developers\n\nThe enhancer should treat this as the actual document content:\n\n- Length and completeness (minimum 2,000 characters, more for technical\n docs)\n- All sections from the plan are fully written\n- No vague or abstract statements\n- Proper use of EARS format for requirements\n- Correct Mermaid diagram syntax (double quotes mandatory)\n- Appropriate level of detail for backend implementation\n- Proper document linking (descriptive text, not raw filenames)\n\nThe enhancer outputs the document itself:\n\n- If content is provided, it represents the actual document\n- The enhancer outputs the enhanced version AS the document itself\n- No meta-commentary or review feedback should be in the output\n- The output becomes the saved .md file directly\n\nExample of what this field contains:\n\"# Service Overview\\n## Vision\\nThe service provides...\" (actual document)\nNOT: \"This document should cover service overview...\" (review comment)",
128
128
  type: "string"
129
129
  }
130
130
  },
@@ -196,15 +196,15 @@ const collection = {
196
196
  type: "object",
197
197
  properties: {
198
198
  review: {
199
- description: "The enhancement criteria and guidelines that the agent must follow.\n\nThis includes:\n\n- Minimum document length requirements\n- Section completeness checks\n- Link validation rules\n- Mermaid syntax validation (especially parentheses in labels)\n- Content specificity requirements\n- EARS format compliance\n\nThe review criteria ensure that documentation is implementation-ready and\nremoves all ambiguity for backend developers.\n\nCritical review points:\n\n- DO: Use double quotes for ALL labels in Mermaid diagrams\n- DO NOT: Use spaces between brackets and quotes in Mermaid\n- DO: Make requirements specific and measurable in natural language\n- DO: Focus on business requirements and user scenarios\n- DO NOT: Accept documents containing database schemas or API specifications\n- DO: Describe business model and authentication requirements in natural language",
199
+ description: "Step 1 (CoT: Review Phase) - Enhancement Criteria\n\nThe enhancement criteria and guidelines that the agent must follow.\n\nThis includes:\n\n- Minimum document length requirements\n- Section completeness checks\n- Link validation rules\n- Mermaid syntax validation (especially parentheses in labels)\n- Content specificity requirements\n- EARS format compliance\n\nThe review criteria ensure that documentation is implementation-ready and\nremoves all ambiguity for backend developers.\n\nCritical review points:\n\n- DO: Use double quotes for ALL labels in Mermaid diagrams\n- DO NOT: Use spaces between brackets and quotes in Mermaid\n- DO: Make requirements specific and measurable in natural language\n- DO: Focus on business requirements and user scenarios\n- DO NOT: Accept documents containing database schemas or API specifications\n- DO: Describe business model and authentication requirements in natural language",
200
200
  type: "string"
201
201
  },
202
202
  plan: {
203
- description: "The document plan that was used to create the content.\n\nThis helps the reviewer understand:\n\n- What sections should be present\n- The intended structure and organization\n- The target audience and purpose\n- Expected level of detail\n\nThe enhancer uses this to ensure the improved content aligns with the\noriginal plan and covers all required topics comprehensively.",
203
+ description: "Step 2 (CoT: Plan Phase) - Original Document Plan\n\nThe document plan that was used to create the content.\n\nThis helps the reviewer understand:\n\n- What sections should be present\n- The intended structure and organization\n- The target audience and purpose\n- Expected level of detail\n\nThe enhancer uses this to ensure the improved content aligns with the\noriginal plan and covers all required topics comprehensively.",
204
204
  type: "string"
205
205
  },
206
206
  content: {
207
- description: "The actual markdown document content that incorporates review feedback.\n\nThis field contains a COMPLETE MARKDOWN DOCUMENT that has already \nincorporated the review criteria and plan requirements.\n\nDO: Treat this as the final, production-ready document.\nDO NOT: Treat this as raw input to be reviewed.\n\nThis content represents:\n- A fully-formed markdown document (.md file)\n- The result of applying review criteria to the original plan\n- A production-ready document for immediate deployment\n- Complete business requirements ready for developers\n\nThe enhancer should treat this as the actual document content:\n\n- Length and completeness (minimum 2,000 characters, more for technical\n docs)\n- All sections from the plan are fully written\n- No vague or abstract statements\n- Proper use of EARS format for requirements\n- Correct Mermaid diagram syntax (double quotes mandatory)\n- Appropriate level of detail for backend implementation\n- Proper document linking (descriptive text, not raw filenames)\n\nThe enhancer outputs the document itself:\n\n- If content is provided, it represents the actual document\n- The enhancer outputs the enhanced version AS the document itself\n- No meta-commentary or review feedback should be in the output\n- The output becomes the saved .md file directly\n\nExample of what this field contains:\n\"# Service Overview\\n## Vision\\nThe service provides...\" (actual document)\nNOT: \"This document should cover service overview...\" (review comment)",
207
+ description: "Step 3 (CoT: Content Phase) - Complete Document Content\n\nThe actual markdown document content that incorporates review feedback.\n\nThis field contains a COMPLETE MARKDOWN DOCUMENT that has already \nincorporated the review criteria and plan requirements.\n\nDO: Treat this as the final, production-ready document.\nDO NOT: Treat this as raw input to be reviewed.\n\nThis content represents:\n- A fully-formed markdown document (.md file)\n- The result of applying review criteria to the original plan\n- A production-ready document for immediate deployment\n- Complete business requirements ready for developers\n\nThe enhancer should treat this as the actual document content:\n\n- Length and completeness (minimum 2,000 characters, more for technical\n docs)\n- All sections from the plan are fully written\n- No vague or abstract statements\n- Proper use of EARS format for requirements\n- Correct Mermaid diagram syntax (double quotes mandatory)\n- Appropriate level of detail for backend implementation\n- Proper document linking (descriptive text, not raw filenames)\n\nThe enhancer outputs the document itself:\n\n- If content is provided, it represents the actual document\n- The enhancer outputs the enhanced version AS the document itself\n- No meta-commentary or review feedback should be in the output\n- The output becomes the saved .md file directly\n\nExample of what this field contains:\n\"# Service Overview\\n## Vision\\nThe service provides...\" (actual document)\nNOT: \"This document should cover service overview...\" (review comment)",
208
208
  type: "string"
209
209
  }
210
210
  },
@@ -168,16 +168,32 @@ const claude = {
168
168
  name: {
169
169
  description: "Unique identifier for the user role.\n\nThis name will be used as a reference throughout the generated codebase,\nincluding Prisma schema model names, authorization decorator parameters,\nand API documentation.\n\nMUST use camelCase naming convention.",
170
170
  type: "string",
171
- pattern: "^[a-z][a-zA-Z0-9]*$"
171
+ pattern: "^[a-z][a-zA-Z0-9]*$",
172
+ minLength: 1
172
173
  },
173
174
  description: {
174
175
  description: "Human-readable description of the role's permissions and capabilities.\n\nThis description helps the AI agents understand the business context and\naccess requirements for each role, guiding the generation of appropriate\nauthorization rules and API endpoint restrictions.",
175
176
  type: "string"
177
+ },
178
+ kind: {
179
+ description: "Role category classification for system-wide permission hierarchy.\n\nThis property categorizes roles into three fundamental permission levels,\nestablishing a clear hierarchy for authorization decisions throughout the\napplication. The kind determines baseline access patterns and security\nboundaries:\n\n- \"guest\": Unauthenticated users or those with minimal permissions. Typically\n limited to public resources and registration/login endpoints.\n- \"member\": Authenticated users with standard access permissions. Can access\n personal resources and participate in core application features.\n- \"admin\": System administrators with elevated permissions. Can manage other\n users, access administrative functions, and modify system-wide settings.",
180
+ oneOf: [
181
+ {
182
+ "const": "guest"
183
+ },
184
+ {
185
+ "const": "member"
186
+ },
187
+ {
188
+ "const": "admin"
189
+ }
190
+ ]
176
191
  }
177
192
  },
178
193
  required: [
179
194
  "name",
180
- "description"
195
+ "description",
196
+ "kind"
181
197
  ]
182
198
  },
183
199
  "AutoBeAnalyzeFile.Scenario": {
@@ -241,7 +257,7 @@ const claude = {
241
257
  }
242
258
  },
243
259
  description: "Compose project structure with roles and files.\n\nDesign a list of roles and initial documents that you need to create for\nthat requirement. Roles define team member responsibilities, while files\ndefine the documentation structure. These are managed separately. If you\ndetermine from the conversation that the user's requirements have not been\nfully gathered, you must stop the analysis and continue collecting the\nremaining requirements. In this case, you do not need to generate any files\nor roles. Simply pass an empty array to `input.files` and `input.roles`.",
244
- validate: (() => { const _io0 = input => "string" === typeof input.reason && ("string" === typeof input.prefix && RegExp("^[a-z][a-zA-Z0-9]*$").test(input.prefix)) && (Array.isArray(input.roles) && input.roles.every(elem => "object" === typeof elem && null !== elem && _io1(elem))) && (undefined === input.language || "string" === typeof input.language) && "number" === typeof input.page && (Array.isArray(input.files) && (1 <= input.files.length && input.files.every(elem => "object" === typeof elem && null !== elem && _io2(elem)))); const _io1 = input => "string" === typeof input.name && RegExp("^[a-z][a-zA-Z0-9]*$").test(input.name) && "string" === typeof input.description; const _io2 = input => "string" === typeof input.reason && ("string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename)) && (undefined === input.documentType || "string" === typeof input.documentType) && (undefined === input.outline || Array.isArray(input.outline) && input.outline.every(elem => "string" === typeof elem)) && (undefined === input.audience || "string" === typeof input.audience) && (undefined === input.keyQuestions || Array.isArray(input.keyQuestions) && input.keyQuestions.every(elem => "string" === typeof elem)) && (undefined === input.detailLevel || "string" === typeof input.detailLevel) && (undefined === input.relatedDocuments || Array.isArray(input.relatedDocuments) && input.relatedDocuments.every(elem => "string" === typeof elem)) && (undefined === input.constraints || Array.isArray(input.constraints) && input.constraints.every(elem => "string" === typeof elem)); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
260
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && ("string" === typeof input.prefix && RegExp("^[a-z][a-zA-Z0-9]*$").test(input.prefix)) && (Array.isArray(input.roles) && input.roles.every(elem => "object" === typeof elem && null !== elem && _io1(elem))) && (undefined === input.language || "string" === typeof input.language) && "number" === typeof input.page && (Array.isArray(input.files) && (1 <= input.files.length && input.files.every(elem => "object" === typeof elem && null !== elem && _io2(elem)))); const _io1 = input => "string" === typeof input.name && (RegExp("^[a-z][a-zA-Z0-9]*$").test(input.name) && 1 <= input.name.length) && "string" === typeof input.description && ("guest" === input.kind || "member" === input.kind || "admin" === input.kind); const _io2 = input => "string" === typeof input.reason && ("string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename)) && (undefined === input.documentType || "string" === typeof input.documentType) && (undefined === input.outline || Array.isArray(input.outline) && input.outline.every(elem => "string" === typeof elem)) && (undefined === input.audience || "string" === typeof input.audience) && (undefined === input.keyQuestions || Array.isArray(input.keyQuestions) && input.keyQuestions.every(elem => "string" === typeof elem)) && (undefined === input.detailLevel || "string" === typeof input.detailLevel) && (undefined === input.relatedDocuments || Array.isArray(input.relatedDocuments) && input.relatedDocuments.every(elem => "string" === typeof elem)) && (undefined === input.constraints || Array.isArray(input.constraints) && input.constraints.every(elem => "string" === typeof elem)); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
245
261
  path: _path + ".reason",
246
262
  expected: "string",
247
263
  value: input.reason
@@ -301,14 +317,22 @@ const claude = {
301
317
  path: _path + ".name",
302
318
  expected: "string & CamelPattern",
303
319
  value: input.name
320
+ })) && (1 <= input.name.length || _report(_exceptionable, {
321
+ path: _path + ".name",
322
+ expected: "string & MinLength<1>",
323
+ value: input.name
304
324
  })) || _report(_exceptionable, {
305
325
  path: _path + ".name",
306
- expected: "(string & CamelPattern)",
326
+ expected: "(string & CamelPattern & MinLength<1>)",
307
327
  value: input.name
308
328
  }), "string" === typeof input.description || _report(_exceptionable, {
309
329
  path: _path + ".description",
310
330
  expected: "string",
311
331
  value: input.description
332
+ }), "guest" === input.kind || "member" === input.kind || "admin" === input.kind || _report(_exceptionable, {
333
+ path: _path + ".kind",
334
+ expected: "(\"admin\" | \"guest\" | \"member\")",
335
+ value: input.kind
312
336
  })].every(flag => flag); const _vo2 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
313
337
  path: _path + ".reason",
314
338
  expected: "string",
@@ -468,17 +492,27 @@ const collection = {
468
492
  type: "object",
469
493
  properties: {
470
494
  name: {
471
- description: "Unique identifier for the user role.\n\nThis name will be used as a reference throughout the generated codebase,\nincluding Prisma schema model names, authorization decorator parameters,\nand API documentation.\n\nMUST use camelCase naming convention.\n\n\n@pattern ^[a-z][a-zA-Z0-9]*$",
495
+ description: "Unique identifier for the user role.\n\nThis name will be used as a reference throughout the generated codebase,\nincluding Prisma schema model names, authorization decorator parameters,\nand API documentation.\n\nMUST use camelCase naming convention.\n\n\n@minLength 1\n@pattern ^[a-z][a-zA-Z0-9]*$",
472
496
  type: "string"
473
497
  },
474
498
  description: {
475
499
  description: "Human-readable description of the role's permissions and capabilities.\n\nThis description helps the AI agents understand the business context and\naccess requirements for each role, guiding the generation of appropriate\nauthorization rules and API endpoint restrictions.",
476
500
  type: "string"
501
+ },
502
+ kind: {
503
+ description: "Role category classification for system-wide permission hierarchy.\n\nThis property categorizes roles into three fundamental permission levels,\nestablishing a clear hierarchy for authorization decisions throughout the\napplication. The kind determines baseline access patterns and security\nboundaries:\n\n- \"guest\": Unauthenticated users or those with minimal permissions. Typically\n limited to public resources and registration/login endpoints.\n- \"member\": Authenticated users with standard access permissions. Can access\n personal resources and participate in core application features.\n- \"admin\": System administrators with elevated permissions. Can manage other\n users, access administrative functions, and modify system-wide settings.",
504
+ type: "string",
505
+ "enum": [
506
+ "guest",
507
+ "member",
508
+ "admin"
509
+ ]
477
510
  }
478
511
  },
479
512
  required: [
480
513
  "name",
481
- "description"
514
+ "description",
515
+ "kind"
482
516
  ]
483
517
  },
484
518
  "AutoBeAnalyzeFile.Scenario": {
@@ -541,7 +575,7 @@ const collection = {
541
575
  }
542
576
  },
543
577
  description: "Compose project structure with roles and files.\n\nDesign a list of roles and initial documents that you need to create for\nthat requirement. Roles define team member responsibilities, while files\ndefine the documentation structure. These are managed separately. If you\ndetermine from the conversation that the user's requirements have not been\nfully gathered, you must stop the analysis and continue collecting the\nremaining requirements. In this case, you do not need to generate any files\nor roles. Simply pass an empty array to `input.files` and `input.roles`.",
544
- validate: (() => { const _io0 = input => "string" === typeof input.reason && ("string" === typeof input.prefix && RegExp("^[a-z][a-zA-Z0-9]*$").test(input.prefix)) && (Array.isArray(input.roles) && input.roles.every(elem => "object" === typeof elem && null !== elem && _io1(elem))) && (undefined === input.language || "string" === typeof input.language) && "number" === typeof input.page && (Array.isArray(input.files) && (1 <= input.files.length && input.files.every(elem => "object" === typeof elem && null !== elem && _io2(elem)))); const _io1 = input => "string" === typeof input.name && RegExp("^[a-z][a-zA-Z0-9]*$").test(input.name) && "string" === typeof input.description; const _io2 = input => "string" === typeof input.reason && ("string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename)) && (undefined === input.documentType || "string" === typeof input.documentType) && (undefined === input.outline || Array.isArray(input.outline) && input.outline.every(elem => "string" === typeof elem)) && (undefined === input.audience || "string" === typeof input.audience) && (undefined === input.keyQuestions || Array.isArray(input.keyQuestions) && input.keyQuestions.every(elem => "string" === typeof elem)) && (undefined === input.detailLevel || "string" === typeof input.detailLevel) && (undefined === input.relatedDocuments || Array.isArray(input.relatedDocuments) && input.relatedDocuments.every(elem => "string" === typeof elem)) && (undefined === input.constraints || Array.isArray(input.constraints) && input.constraints.every(elem => "string" === typeof elem)); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
578
+ validate: (() => { const _io0 = input => "string" === typeof input.reason && ("string" === typeof input.prefix && RegExp("^[a-z][a-zA-Z0-9]*$").test(input.prefix)) && (Array.isArray(input.roles) && input.roles.every(elem => "object" === typeof elem && null !== elem && _io1(elem))) && (undefined === input.language || "string" === typeof input.language) && "number" === typeof input.page && (Array.isArray(input.files) && (1 <= input.files.length && input.files.every(elem => "object" === typeof elem && null !== elem && _io2(elem)))); const _io1 = input => "string" === typeof input.name && (RegExp("^[a-z][a-zA-Z0-9]*$").test(input.name) && 1 <= input.name.length) && "string" === typeof input.description && ("guest" === input.kind || "member" === input.kind || "admin" === input.kind); const _io2 = input => "string" === typeof input.reason && ("string" === typeof input.filename && RegExp(/(.*)\.md$/).test(input.filename)) && (undefined === input.documentType || "string" === typeof input.documentType) && (undefined === input.outline || Array.isArray(input.outline) && input.outline.every(elem => "string" === typeof elem)) && (undefined === input.audience || "string" === typeof input.audience) && (undefined === input.keyQuestions || Array.isArray(input.keyQuestions) && input.keyQuestions.every(elem => "string" === typeof elem)) && (undefined === input.detailLevel || "string" === typeof input.detailLevel) && (undefined === input.relatedDocuments || Array.isArray(input.relatedDocuments) && input.relatedDocuments.every(elem => "string" === typeof elem)) && (undefined === input.constraints || Array.isArray(input.constraints) && input.constraints.every(elem => "string" === typeof elem)); const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
545
579
  path: _path + ".reason",
546
580
  expected: "string",
547
581
  value: input.reason
@@ -601,14 +635,22 @@ const collection = {
601
635
  path: _path + ".name",
602
636
  expected: "string & CamelPattern",
603
637
  value: input.name
638
+ })) && (1 <= input.name.length || _report(_exceptionable, {
639
+ path: _path + ".name",
640
+ expected: "string & MinLength<1>",
641
+ value: input.name
604
642
  })) || _report(_exceptionable, {
605
643
  path: _path + ".name",
606
- expected: "(string & CamelPattern)",
644
+ expected: "(string & CamelPattern & MinLength<1>)",
607
645
  value: input.name
608
646
  }), "string" === typeof input.description || _report(_exceptionable, {
609
647
  path: _path + ".description",
610
648
  expected: "string",
611
649
  value: input.description
650
+ }), "guest" === input.kind || "member" === input.kind || "admin" === input.kind || _report(_exceptionable, {
651
+ path: _path + ".kind",
652
+ expected: "(\"admin\" | \"guest\" | \"member\")",
653
+ value: input.kind
612
654
  })].every(flag => flag); const _vo2 = (input, _path, _exceptionable = true) => ["string" === typeof input.reason || _report(_exceptionable, {
613
655
  path: _path + ".reason",
614
656
  expected: "string",
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrateAnalyzeScenario.js","sourceRoot":"","sources":["../../../../../src/orchestrate/analyze/orchestrateAnalyzeScenario.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,yCAA2C;AAG3C,kDAA0B;AAC1B,+BAA0B;AAG1B,uEAAoE;AACpE,qGAA6F;AAGtF,MAAM,0BAA0B,GAAG,CAGxC,GAAyB,EAC4C,EAAE;;IACvE,MAAM,KAAK,GAAS,IAAI,IAAI,EAAE,CAAC;IAC/B,MAAM,OAAO,GAA8D;QACzE,KAAK,EAAE,IAAI;KACZ,CAAC;IACF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC;QACrD,MAAM,EAAE,iBAAiB;QACzB,UAAU,EAAE,gBAAgB,CAAQ;YAClC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;SAC1C,CAAC;QACF,SAAS,EAAE,IAAA,gEAA4B,EAAC,GAAG,CAAC;QAC5C,mBAAmB,EAAE,KAAK;QAC1B,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;;;;0CAIc,GAAG,CAAC,MAAM;KAC/C;KACF,CAAC,CAAC;IACH,IAAI,CAAA,MAAA,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0CAAE,IAAI,MAAK,kBAAkB;QAC/C,OAAO,gCACD,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAsC,KACzD,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,EAC/B,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACtC,EAAE,EAAE,IAAA,SAAE,GAAE,GAC+B,CAAC;SACvC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAChC,cAAc;QACd,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,EAAE,EAAE,IAAA,SAAE,GAAE;QACR,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;QAC5B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;QAC1B,UAAU;QACV,IAAI,EAAE,CAAC,MAAA,MAAA,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,0CAAE,IAAI,mCAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE;KAChC,CAAC;AACJ,CAAC,CAAA,CAAC;AA9CW,QAAA,0BAA0B,8BA8CrC;AAEF,SAAS,gBAAgB,CAAiC,KAGzD;IACC,IAAA,qCAAiB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,WAAW,GAA2B,UAAU,CACpD,KAAK,CAAC,KAAK,CACwD,CAAC;IACtE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,SAAS;QACf,WAAW;QACX,OAAO,EAAE;YACP,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;SAC0C;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGT,CAAC;AACJ,MAAM,UAAU,GAAG;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAGJ;IACH,MAAM;IACN,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;CACd,CAAC"}
1
+ {"version":3,"file":"orchestrateAnalyzeScenario.js","sourceRoot":"","sources":["../../../../../src/orchestrate/analyze/orchestrateAnalyzeScenario.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,yCAA2C;AAG3C,kDAA0B;AAC1B,+BAA0B;AAG1B,uEAAoE;AACpE,qGAA6F;AAGtF,MAAM,0BAA0B,GAAG,CAGxC,GAAyB,EAC4C,EAAE;;IACvE,MAAM,KAAK,GAAS,IAAI,IAAI,EAAE,CAAC;IAC/B,MAAM,OAAO,GAA8D;QACzE,KAAK,EAAE,IAAI;KACZ,CAAC;IACF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC;QACrD,MAAM,EAAE,iBAAiB;QACzB,UAAU,EAAE,gBAAgB,CAAQ;YAClC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;SAC1C,CAAC;QACF,SAAS,EAAE,IAAA,gEAA4B,EAAC,GAAG,CAAC;QAC5C,mBAAmB,EAAE,KAAK;QAC1B,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;;;;0CAIc,GAAG,CAAC,MAAM;KAC/C;KACF,CAAC,CAAC;IACH,IAAI,CAAA,MAAA,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0CAAE,IAAI,MAAK,kBAAkB;QAC/C,OAAO,gCACD,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAsC,KACzD,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,EAC/B,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACtC,EAAE,EAAE,IAAA,SAAE,GAAE,GAC+B,CAAC;SACvC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAChC,cAAc;QACd,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,EAAE,EAAE,IAAA,SAAE,GAAE;QACR,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;QAC5B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;QAC1B,UAAU;QACV,IAAI,EAAE,CAAC,MAAA,MAAA,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,0CAAE,IAAI,mCAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE;KAChC,CAAC;AACJ,CAAC,CAAA,CAAC;AA9CW,QAAA,0BAA0B,8BA8CrC;AAEF,SAAS,gBAAgB,CAAiC,KAGzD;IACC,IAAA,qCAAiB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,WAAW,GAA2B,UAAU,CACpD,KAAK,CAAC,KAAK,CACwD,CAAC;IACtE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,SAAS;QACf,WAAW;QACX,OAAO,EAAE;YACP,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;SAC0C;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGT,CAAC;AACJ,MAAM,UAAU,GAAG;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAGJ;IACH,MAAM;IACN,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;CACd,CAAC"}
@@ -114,11 +114,11 @@ const claude = {
114
114
  type: "object",
115
115
  properties: {
116
116
  plan: {
117
- description: "The document planning structure that outlines what needs to be written.\n\nThis includes:\n\n- Document title and purpose\n- Table of contents structure\n- Key sections to be covered\n- Relationships with other documents\n- Target audience (backend developers)\n\nThe plan serves as a roadmap for the AI agent to ensure all necessary\ntopics are covered in the documentation process.\n\nExample plan structure:\n\n- Service overview with business model\n- User roles and authentication requirements\n- Functional requirements with EARS format\n- Non-functional requirements\n- Business requirements in natural language\n- User scenarios and use cases",
117
+ description: "Step 1 (CoT: Plan Phase) - Document Planning Structure\n\nThe document planning structure that outlines what needs to be written.\n\nThis includes:\n\n- Document title and purpose\n- Table of contents structure\n- Key sections to be covered\n- Relationships with other documents\n- Target audience (backend developers)\n\nThe plan serves as a roadmap for the AI agent to ensure all necessary\ntopics are covered in the documentation process.\n\nExample plan structure:\n\n- Service overview with business model\n- User roles and authentication requirements\n- Functional requirements with EARS format\n- Non-functional requirements\n- Business requirements in natural language\n- User scenarios and use cases",
118
118
  type: "string"
119
119
  },
120
120
  content: {
121
- description: "The initial content or context for the document being written.\n\nThis may include:\n\n- User requirements and business goals\n- Existing documentation to build upon\n- Specific scenarios or use cases to document\n- Technical constraints or preferences\n- Related documents for reference\n\nThe content provides the raw material that the AI agent will transform\ninto structured, developer-ready documentation following the planning\nguidelines.\n\nThe AI agent will expand this content into comprehensive documentation\nthat:\n\n- Removes all ambiguity for backend developers\n- Provides specific, measurable requirements in natural language\n- Focuses on business logic and requirements, NOT technical implementation\n- STRICTLY PROHIBITED: Do NOT write database schemas, ERD, or API\n specifications\n- Uses EARS format for all applicable requirements\n- Follows proper document linking conventions\n- Includes Mermaid diagrams with proper syntax (double quotes mandatory)",
121
+ description: "Step 2 (CoT: Write Phase) - Document Content Creation\n\nThe initial content or context for the document being written.\n\nThis may include:\n\n- User requirements and business goals\n- Existing documentation to build upon\n- Specific scenarios or use cases to document\n- Technical constraints or preferences\n- Related documents for reference\n\nThe content provides the raw material that the AI agent will transform\ninto structured, developer-ready documentation following the planning\nguidelines.\n\nThe AI agent will expand this content into comprehensive documentation\nthat:\n\n- Removes all ambiguity for backend developers\n- Provides specific, measurable requirements in natural language\n- Focuses on business logic and requirements, NOT technical implementation\n- STRICTLY PROHIBITED: Do NOT write database schemas, ERD, or API\n specifications\n- Uses EARS format for all applicable requirements\n- Follows proper document linking conventions\n- Includes Mermaid diagrams with proper syntax (double quotes mandatory)",
122
122
  type: "string"
123
123
  }
124
124
  },
@@ -185,11 +185,11 @@ const collection = {
185
185
  type: "object",
186
186
  properties: {
187
187
  plan: {
188
- description: "The document planning structure that outlines what needs to be written.\n\nThis includes:\n\n- Document title and purpose\n- Table of contents structure\n- Key sections to be covered\n- Relationships with other documents\n- Target audience (backend developers)\n\nThe plan serves as a roadmap for the AI agent to ensure all necessary\ntopics are covered in the documentation process.\n\nExample plan structure:\n\n- Service overview with business model\n- User roles and authentication requirements\n- Functional requirements with EARS format\n- Non-functional requirements\n- Business requirements in natural language\n- User scenarios and use cases",
188
+ description: "Step 1 (CoT: Plan Phase) - Document Planning Structure\n\nThe document planning structure that outlines what needs to be written.\n\nThis includes:\n\n- Document title and purpose\n- Table of contents structure\n- Key sections to be covered\n- Relationships with other documents\n- Target audience (backend developers)\n\nThe plan serves as a roadmap for the AI agent to ensure all necessary\ntopics are covered in the documentation process.\n\nExample plan structure:\n\n- Service overview with business model\n- User roles and authentication requirements\n- Functional requirements with EARS format\n- Non-functional requirements\n- Business requirements in natural language\n- User scenarios and use cases",
189
189
  type: "string"
190
190
  },
191
191
  content: {
192
- description: "The initial content or context for the document being written.\n\nThis may include:\n\n- User requirements and business goals\n- Existing documentation to build upon\n- Specific scenarios or use cases to document\n- Technical constraints or preferences\n- Related documents for reference\n\nThe content provides the raw material that the AI agent will transform\ninto structured, developer-ready documentation following the planning\nguidelines.\n\nThe AI agent will expand this content into comprehensive documentation\nthat:\n\n- Removes all ambiguity for backend developers\n- Provides specific, measurable requirements in natural language\n- Focuses on business logic and requirements, NOT technical implementation\n- STRICTLY PROHIBITED: Do NOT write database schemas, ERD, or API\n specifications\n- Uses EARS format for all applicable requirements\n- Follows proper document linking conventions\n- Includes Mermaid diagrams with proper syntax (double quotes mandatory)",
192
+ description: "Step 2 (CoT: Write Phase) - Document Content Creation\n\nThe initial content or context for the document being written.\n\nThis may include:\n\n- User requirements and business goals\n- Existing documentation to build upon\n- Specific scenarios or use cases to document\n- Technical constraints or preferences\n- Related documents for reference\n\nThe content provides the raw material that the AI agent will transform\ninto structured, developer-ready documentation following the planning\nguidelines.\n\nThe AI agent will expand this content into comprehensive documentation\nthat:\n\n- Removes all ambiguity for backend developers\n- Provides specific, measurable requirements in natural language\n- Focuses on business logic and requirements, NOT technical implementation\n- STRICTLY PROHIBITED: Do NOT write database schemas, ERD, or API\n specifications\n- Uses EARS format for all applicable requirements\n- Follows proper document linking conventions\n- Includes Mermaid diagrams with proper syntax (double quotes mandatory)",
193
193
  type: "string"
194
194
  }
195
195
  },
@@ -25,6 +25,8 @@ export interface IAutoBeAnalyzeReviewApplication {
25
25
  export declare namespace IAutoBeAnalyzeReviewApplication {
26
26
  interface IProps {
27
27
  /**
28
+ * Step 1 (CoT: Review Phase) - Enhancement Criteria
29
+ *
28
30
  * The enhancement criteria and guidelines that the agent must follow.
29
31
  *
30
32
  * This includes:
@@ -50,6 +52,8 @@ export declare namespace IAutoBeAnalyzeReviewApplication {
50
52
  */
51
53
  review: string;
52
54
  /**
55
+ * Step 2 (CoT: Plan Phase) - Original Document Plan
56
+ *
53
57
  * The document plan that was used to create the content.
54
58
  *
55
59
  * This helps the reviewer understand:
@@ -64,6 +68,8 @@ export declare namespace IAutoBeAnalyzeReviewApplication {
64
68
  */
65
69
  plan: string;
66
70
  /**
71
+ * Step 3 (CoT: Content Phase) - Complete Document Content
72
+ *
67
73
  * The actual markdown document content that incorporates review feedback.
68
74
  *
69
75
  * This field contains a COMPLETE MARKDOWN DOCUMENT that has already
@@ -15,6 +15,8 @@ export interface IAutoBeAnalyzeWriteApplication {
15
15
  export declare namespace IAutoBeAnalyzeWriteApplication {
16
16
  interface IProps {
17
17
  /**
18
+ * Step 1 (CoT: Plan Phase) - Document Planning Structure
19
+ *
18
20
  * The document planning structure that outlines what needs to be written.
19
21
  *
20
22
  * This includes:
@@ -39,6 +41,8 @@ export declare namespace IAutoBeAnalyzeWriteApplication {
39
41
  */
40
42
  plan: string;
41
43
  /**
44
+ * Step 2 (CoT: Write Phase) - Document Content Creation
45
+ *
42
46
  * The initial content or context for the document being written.
43
47
  *
44
48
  * This may include:
@@ -4,7 +4,7 @@ exports.transformFacadeStateMessage = transformFacadeStateMessage;
4
4
  const utils_1 = require("@autobe/utils");
5
5
  function transformFacadeStateMessage(state) {
6
6
  const currentState = getCurrentState(state);
7
- return "# AutoBE Main Agent System Prompt\n\nYou are the AutoBE Main Agent, an orchestrator for backend server development automation. Your role is to manage the conversation with users about their backend requirements and coordinate the execution of five specialized functional agents through function calling.\n\n## Core Responsibilities\n\n1. **Requirements Gathering**: Engage in detailed conversations with users to understand their backend server needs, asking clarifying questions about business logic, data models, API endpoints, and technical requirements.\n\n2. **Agent Orchestration**: Execute the appropriate functional agents in the correct sequence based on the development stage and user needs.\n\n3. **Progress Communication**: Keep users informed about the current development stage, what has been completed, and what steps remain.\n\n## Functional Agents Overview\n\nYou have access to five functional agents that must be executed in a specific order:\n\n1. **Analyze Agent** - Converts conversations into structured requirements specifications\n2. **Prisma Agent** - Generates database schemas and ERD documentation\n3. **Interface Agent** - Creates API interfaces with OpenAPI schemas and TypeScript code\n4. **Test Agent** - Generates comprehensive E2E test suites\n5. **Realize Agent** - Implements actual business logic for service providers\n\n## Execution Rules\n\n### 1. Sequential Dependencies\n\n- **analyze()**: Can only be called when sufficient requirements have been gathered.\n- **prisma()**: Requires successful completion of analyze()\n- **interface()**: Requires successful completion of prisma()\n- **test()**: Requires successful completion of interface()\n- **realize()**: Requires successful completion of interface()\n\n### 2. Requirements Gathering and analyze() Calling Criteria\n\n- Since users are not developers, it is okay if they do not understand technical terms like \u201Cendpoints\u201D or \u201Cdata models.\u201D \n\n- Your job is to help users clearly express their intended **features** by asking many questions. \n\n- Use examples and simple questions to guide them if they have trouble explaining. \n\n- Break down features into smaller steps if needed to complete the planning gradually. \n\n- For instance, ask questions like \u201CWhat tasks do you want to automate?\u201D, \u201CWhat roles do users have?\u201D, \u201CWhat screens or actions are involved?\u201D \n\n- Even if the system requires many or complex APIs, it is not necessary to know all of them upfront. Focus on gathering core requirements step by step. \n\n#### Conditions for Calling analyze() \n- Call analyze() only when the user has clearly stated sufficient **features** and **requirements**, or \n- The user explicitly delegates the planning to you by saying things like \u201CI\u2019ll leave the planning to you\u201D or \u201CPlease proceed as you see fit.\u201D \n\n#### Pre-call Checks \n- If requirements are insufficient for some features, do **not** call analyze() and keep asking questions until the specifications are complete. \n- Continue asking actively and explain any technical terms in an easy-to-understand way.\n\n### 3. Requirements Gathering Phase\n\nBefore calling analyze(), ensure you have discussed:\n\n- System purpose and overall goals\n- Core features and functionalities\n- User roles and permissions\n- Main data entities and their relationships\n- Key business rules and constraints\n- API endpoints needed\n- Any specific technical requirements\n\nIf these aspects are unclear, continue the conversation to gather more details.\n\n### 4. Development Workflow\n\n1. Start by understanding the user's needs through conversation\n2. When requirements are sufficiently detailed, execute analyze()\n3. Review the analysis results with the user\n4. If approved, proceed with prisma() \u2192 interface() \u2192 test() \u2192 realize()\n5. At each stage, present results and get user confirmation before proceeding\n\n### 5. Handling Changes\n\n- If users request changes after agents have been executed, first understand the scope\n- For minor adjustments, you may re-run specific agents\n- For major changes, consider re-running analyze() to update the specification\n- Always explain the impact of changes on already generated code\n\n## Communication Guidelines\n\n1. **Be Transparent**: Clearly explain which agent is being executed and why\n2. **Show Progress**: Indicate completed steps and remaining work\n3. **Confirm Understanding**: Summarize requirements before executing agents\n4. **Request Approval**: Get user confirmation before moving to the next stage\n5. **Explain Results**: Briefly describe what each agent has generated\n\n## Current State\n\n{% STATE %}" /* AutoBeSystemPromptConstant.FACADE */.replace("{% STATE %}", utils_1.StringUtil.trim `
7
+ return "<!--\nfilename: FACADE.md\n -->\n# AutoBE Main Agent System Prompt\n\nYou are the AutoBE Main Agent, an orchestrator for backend server development automation. Your role is to manage the conversation with users about their backend requirements and coordinate the execution of five specialized functional agents through function calling.\n\n## Core Responsibilities\n\n1. **Requirements Gathering**: Engage in detailed conversations with users to understand their backend server needs, asking clarifying questions about business logic, data models, API endpoints, and technical requirements.\n\n2. **Agent Orchestration**: Execute the appropriate functional agents in the correct sequence based on the development stage and user needs.\n\n3. **Progress Communication**: Keep users informed about the current development stage, what has been completed, and what steps remain.\n\n## Functional Agents Overview\n\nYou have access to five functional agents that must be executed in a specific order:\n\n1. **Analyze Agent** - Converts conversations into structured requirements specifications\n2. **Prisma Agent** - Generates database schemas and ERD documentation\n3. **Interface Agent** - Creates API interfaces with OpenAPI schemas and TypeScript code\n4. **Test Agent** - Generates comprehensive E2E test suites\n5. **Realize Agent** - Implements actual business logic for service providers\n\n## Execution Rules\n\n### 1. Sequential Dependencies\n\n- **analyze()**: Can only be called when sufficient requirements have been gathered.\n- **prisma()**: Requires successful completion of analyze()\n- **interface()**: Requires successful completion of prisma()\n- **test()**: Requires successful completion of interface()\n- **realize()**: Requires successful completion of interface()\n\n### 2. Requirements Gathering and analyze() Calling Criteria\n\n- Since users are not developers, it is okay if they do not understand technical terms like \u201Cendpoints\u201D or \u201Cdata models.\u201D \n\n- Your job is to help users clearly express their intended **features** by asking many questions. \n\n- Use examples and simple questions to guide them if they have trouble explaining. \n\n- Break down features into smaller steps if needed to complete the planning gradually. \n\n- For instance, ask questions like \u201CWhat tasks do you want to automate?\u201D, \u201CWhat roles do users have?\u201D, \u201CWhat screens or actions are involved?\u201D \n\n- Even if the system requires many or complex APIs, it is not necessary to know all of them upfront. Focus on gathering core requirements step by step. \n\n#### Conditions for Calling analyze() \n- Call analyze() only when the user has clearly stated sufficient **features** and **requirements**, or \n- The user explicitly delegates the planning to you by saying things like \u201CI\u2019ll leave the planning to you\u201D or \u201CPlease proceed as you see fit.\u201D \n\n#### Pre-call Checks \n- If requirements are insufficient for some features, do **not** call analyze() and keep asking questions until the specifications are complete. \n- Continue asking actively and explain any technical terms in an easy-to-understand way.\n\n### 3. Requirements Gathering Phase\n\nBefore calling analyze(), ensure you have discussed:\n\n- System purpose and overall goals\n- Core features and functionalities\n- User roles and permissions\n- Main data entities and their relationships\n- Key business rules and constraints\n- API endpoints needed\n- Any specific technical requirements\n\nIf these aspects are unclear, continue the conversation to gather more details.\n\n### 4. Development Workflow\n\n1. Start by understanding the user's needs through conversation\n2. When requirements are sufficiently detailed, execute analyze()\n3. Review the analysis results with the user\n4. If approved, proceed with prisma() \u2192 interface() \u2192 test() \u2192 realize()\n5. At each stage, present results and get user confirmation before proceeding\n\n### 5. Handling Changes\n\n- If users request changes after agents have been executed, first understand the scope\n- For minor adjustments, you may re-run specific agents\n- For major changes, consider re-running analyze() to update the specification\n- Always explain the impact of changes on already generated code\n\n## Communication Guidelines\n\n1. **Be Transparent**: Clearly explain which agent is being executed and why\n2. **Show Progress**: Indicate completed steps and remaining work\n3. **Confirm Understanding**: Summarize requirements before executing agents\n4. **Request Approval**: Get user confirmation before moving to the next stage\n5. **Explain Results**: Briefly describe what each agent has generated\n\n## Current State\n\n{% STATE %}" /* AutoBeSystemPromptConstant.FACADE */.replace("{% STATE %}", utils_1.StringUtil.trim `
8
8
  ## Current State
9
9
 
10
10
  The current execution status of each functional agent is shown below.
@@ -1 +1 @@
1
- {"version":3,"file":"transformFacadeStateMessage.js","sourceRoot":"","sources":["../../../../../src/orchestrate/facade/transformFacadeStateMessage.ts"],"names":[],"mappings":";;AAKA,kEA0BC;AA/BD,yCAA2C;AAK3C,SAAgB,2BAA2B,CAAC,KAAkB;IAC5D,MAAM,YAAY,GAAkB,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,0qJAAkC,OAAO,CAC9C,aAAa,EACb,kBAAU,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;mBAeA,YAAY,CAAC,OAAO;kBACrB,YAAY,CAAC,MAAM;qBAChB,YAAY,CAAC,SAAS;gBAC3B,YAAY,CAAC,IAAI;mBACd,YAAY,CAAC,OAAO;KAClC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAkB;IACzC,MAAM,KAAK,GAAG,CACZ,GAEQ,EACR,EAAE;QACF,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;aACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;YAAE,OAAO,YAAY,CAAC;;YACzD,OAAO,aAAa,CAAC;IAC5B,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;QACvD,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transformFacadeStateMessage.js","sourceRoot":"","sources":["../../../../../src/orchestrate/facade/transformFacadeStateMessage.ts"],"names":[],"mappings":";;AAKA,kEA0BC;AA/BD,yCAA2C;AAK3C,SAAgB,2BAA2B,CAAC,KAAkB;IAC5D,MAAM,YAAY,GAAkB,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,0tJAAkC,OAAO,CAC9C,aAAa,EACb,kBAAU,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;mBAeA,YAAY,CAAC,OAAO;kBACrB,YAAY,CAAC,MAAM;qBAChB,YAAY,CAAC,SAAS;gBAC3B,YAAY,CAAC,IAAI;mBACd,YAAY,CAAC,OAAO;KAClC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAkB;IACzC,MAAM,KAAK,GAAG,CACZ,GAEQ,EACR,EAAE;QACF,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;aACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;YAAE,OAAO,YAAY,CAAC;;YACzD,OAAO,aAAa,CAAC;IAC5B,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;QACvD,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC"}