@autobe/agent 0.30.0-dev.20260315 → 0.30.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 (466) hide show
  1. package/LICENSE +661 -661
  2. package/lib/constants/AutoBeTemplateFileConstant.d.ts +1 -1
  3. package/lib/factory/consentFunctionCall.js +4 -4
  4. package/lib/factory/createAutoBeContext.js +24 -24
  5. package/lib/factory/createAutoBeMessageContent.js +6 -6
  6. package/lib/index.mjs +41 -41
  7. package/lib/orchestrate/analyze/histories/transformAnalyzeScenarioHistory.js +18 -18
  8. package/lib/orchestrate/analyze/histories/transformAnalyzeScenarioReviewHistory.js +13 -13
  9. package/lib/orchestrate/analyze/histories/transformAnalyzeSectionCrossFileReviewHistory.js +47 -47
  10. package/lib/orchestrate/analyze/histories/transformAnalyzeSectionReviewHistory.js +66 -66
  11. package/lib/orchestrate/analyze/histories/transformAnalyzeWriteSectionHistory.js +91 -91
  12. package/lib/orchestrate/analyze/histories/transformAnalyzeWriteSectionPatchHistory.js +46 -46
  13. package/lib/orchestrate/analyze/histories/transformAnalyzeWriteUnitHistory.js +72 -72
  14. package/lib/orchestrate/analyze/orchestrateAnalyzeScenario.js +1 -1
  15. package/lib/orchestrate/analyze/orchestrateAnalyzeSectionCrossFileReview.js +1 -1
  16. package/lib/orchestrate/analyze/orchestrateAnalyzeSectionReview.js +1 -1
  17. package/lib/orchestrate/analyze/orchestrateAnalyzeWriteSection.js +1 -1
  18. package/lib/orchestrate/analyze/orchestrateAnalyzeWriteSectionPatch.js +1 -1
  19. package/lib/orchestrate/analyze/orchestrateAnalyzeWriteUnit.js +1 -1
  20. package/lib/orchestrate/common/histories/transformCommonCorrectCastingHistory.js +5 -5
  21. package/lib/orchestrate/common/histories/transformPreliminaryHistory.js +44 -44
  22. package/lib/orchestrate/common/histories/transformPreviousAndLatestCorrectHistory.js +44 -44
  23. package/lib/orchestrate/common/internal/fixPrelminaryApplication.js +22 -22
  24. package/lib/orchestrate/common/internal/validatePreliminary.js +116 -116
  25. package/lib/orchestrate/facade/createAutoBeFacadeController.js +3 -3
  26. package/lib/orchestrate/facade/structures/transformFacadeStateMessage.js +20 -20
  27. package/lib/orchestrate/interface/histories/transformInterfaceActionEndpointReviewHistory.js +34 -34
  28. package/lib/orchestrate/interface/histories/transformInterfaceActionEndpointWriteHistory.js +37 -37
  29. package/lib/orchestrate/interface/histories/transformInterfaceAuthorizationHistory.js +56 -56
  30. package/lib/orchestrate/interface/histories/transformInterfaceBaseEndpointReviewHistory.js +26 -26
  31. package/lib/orchestrate/interface/histories/transformInterfaceBaseEndpointWriteHistory.js +28 -28
  32. package/lib/orchestrate/interface/histories/transformInterfaceEndpointAuthorizationSection.js +11 -11
  33. package/lib/orchestrate/interface/histories/transformInterfaceGroupHistory.js +38 -38
  34. package/lib/orchestrate/interface/histories/transformInterfaceOperationHistory.js +29 -29
  35. package/lib/orchestrate/interface/histories/transformInterfaceOperationParameterHistory.js +15 -15
  36. package/lib/orchestrate/interface/histories/transformInterfaceOperationReviewHistory.js +6 -6
  37. package/lib/orchestrate/interface/histories/transformInterfacePrerequisiteHistory.js +25 -25
  38. package/lib/orchestrate/interface/histories/transformInterfaceSchemaCastingHistory.js +67 -67
  39. package/lib/orchestrate/interface/histories/transformInterfaceSchemaComplementHistory.js +60 -60
  40. package/lib/orchestrate/interface/histories/transformInterfaceSchemaRefineHistory.js +83 -83
  41. package/lib/orchestrate/interface/histories/transformInterfaceSchemaRenameHistory.js +29 -29
  42. package/lib/orchestrate/interface/histories/transformInterfaceSchemaReviewHistory.js +74 -74
  43. package/lib/orchestrate/interface/histories/transformInterfaceSchemaWriteHistory.js +46 -46
  44. package/lib/orchestrate/interface/orchestrateInterfaceAuthorization.js +1 -1
  45. package/lib/orchestrate/interface/orchestrateInterfaceEndpointReview.js +1 -1
  46. package/lib/orchestrate/interface/orchestrateInterfaceEndpointWrite.js +1 -1
  47. package/lib/orchestrate/interface/orchestrateInterfaceGroup.js +9 -9
  48. package/lib/orchestrate/interface/orchestrateInterfaceOperation.js +1 -1
  49. package/lib/orchestrate/interface/orchestrateInterfaceOperationReview.js +1 -1
  50. package/lib/orchestrate/interface/orchestrateInterfacePrerequisite.js +4 -4
  51. package/lib/orchestrate/interface/orchestrateInterfaceSchemaCasting.js +1 -1
  52. package/lib/orchestrate/interface/orchestrateInterfaceSchemaComplement.js +5 -5
  53. package/lib/orchestrate/interface/orchestrateInterfaceSchemaRefine.js +1 -1
  54. package/lib/orchestrate/interface/orchestrateInterfaceSchemaReview.js +1 -1
  55. package/lib/orchestrate/interface/orchestrateInterfaceSchemaWrite.js +1 -1
  56. package/lib/orchestrate/interface/programmers/AutoBeInterfaceAuthorizationProgrammer.js +90 -90
  57. package/lib/orchestrate/interface/programmers/AutoBeInterfaceEndpointProgrammer.js +6 -6
  58. package/lib/orchestrate/interface/programmers/AutoBeInterfaceEndpointReviewProgrammer.js +25 -25
  59. package/lib/orchestrate/interface/programmers/AutoBeInterfaceOperationProgrammer.js +71 -71
  60. package/lib/orchestrate/interface/programmers/AutoBeInterfacePrerequisiteProgrammer.js +162 -162
  61. package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaProgrammer.js +11 -11
  62. package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaPropertyReviseProgrammer.js +73 -73
  63. package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaRefineProgrammer.js +35 -35
  64. package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaReviewProgrammer.js +11 -11
  65. package/lib/orchestrate/interface/utils/AutoBeJsonSchemaFactory.js +4 -4
  66. package/lib/orchestrate/interface/utils/AutoBeJsonSchemaValidator.js +283 -283
  67. package/lib/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.js +76 -76
  68. package/lib/orchestrate/prisma/histories/transformPrismaAuthorizationHistory.js +76 -76
  69. package/lib/orchestrate/prisma/histories/transformPrismaAuthorizationReviewHistory.js +51 -51
  70. package/lib/orchestrate/prisma/histories/transformPrismaComponentReviewHistory.js +54 -54
  71. package/lib/orchestrate/prisma/histories/transformPrismaComponentsHistory.js +83 -83
  72. package/lib/orchestrate/prisma/histories/transformPrismaCorrectHistory.js +6 -6
  73. package/lib/orchestrate/prisma/histories/transformPrismaGroupHistory.js +22 -22
  74. package/lib/orchestrate/prisma/histories/transformPrismaGroupReviewHistory.js +41 -41
  75. package/lib/orchestrate/prisma/histories/transformPrismaSchemaHistory.js +39 -39
  76. package/lib/orchestrate/prisma/histories/transformPrismaSchemaReviewHistory.js +41 -41
  77. package/lib/orchestrate/prisma/orchestratePrismaAuthorization.js +1 -1
  78. package/lib/orchestrate/prisma/orchestratePrismaAuthorizationReview.js +1 -1
  79. package/lib/orchestrate/prisma/orchestratePrismaComponent.js +1 -1
  80. package/lib/orchestrate/prisma/orchestratePrismaComponentReview.js +1 -1
  81. package/lib/orchestrate/prisma/orchestratePrismaCorrect.js +1 -1
  82. package/lib/orchestrate/prisma/orchestratePrismaGroup.js +1 -1
  83. package/lib/orchestrate/prisma/orchestratePrismaGroupReview.js +1 -1
  84. package/lib/orchestrate/prisma/orchestratePrismaSchema.js +1 -1
  85. package/lib/orchestrate/prisma/orchestratePrismaSchemaReview.js +1 -1
  86. package/lib/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationProgrammer.js +23 -23
  87. package/lib/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationReviewProgrammer.js +7 -7
  88. package/lib/orchestrate/prisma/programmers/AutoBeDatabaseComponentProgrammer.js +5 -5
  89. package/lib/orchestrate/prisma/programmers/AutoBeDatabaseComponentReviewProgrammer.js +20 -20
  90. package/lib/orchestrate/prisma/programmers/AutoBeDatabaseGroupProgrammer.js +13 -13
  91. package/lib/orchestrate/prisma/programmers/AutoBeDatabaseGroupReviewProgrammer.js +51 -51
  92. package/lib/orchestrate/prisma/programmers/AutoBeDatabaseSchemaProgrammer.js +25 -25
  93. package/lib/orchestrate/realize/histories/transformRealizeAuthorizationCorrectHistory.js +28 -28
  94. package/lib/orchestrate/realize/histories/transformRealizeAuthorizationWriteHistory.js +14 -14
  95. package/lib/orchestrate/realize/histories/transformRealizeCollectorCorrectHistory.js +42 -42
  96. package/lib/orchestrate/realize/histories/transformRealizeCollectorPlanHistory.js +27 -27
  97. package/lib/orchestrate/realize/histories/transformRealizeCollectorWriteHistory.js +57 -57
  98. package/lib/orchestrate/realize/histories/transformRealizeCorrectCastingHistory.js +35 -35
  99. package/lib/orchestrate/realize/histories/transformRealizeOperationCorrectHistory.js +14 -14
  100. package/lib/orchestrate/realize/histories/transformRealizeOperationWriteHistory.js +37 -37
  101. package/lib/orchestrate/realize/histories/transformRealizeOperationWriteHistory.js.map +1 -1
  102. package/lib/orchestrate/realize/histories/transformRealizeTransformerCorrectHistory.js +47 -47
  103. package/lib/orchestrate/realize/histories/transformRealizeTransformerPlanHistory.js +27 -27
  104. package/lib/orchestrate/realize/histories/transformRealizeTransformerWriteHistory.js +51 -51
  105. package/lib/orchestrate/realize/orchestrateRealizeAuthorizationCorrect.js +1 -1
  106. package/lib/orchestrate/realize/orchestrateRealizeAuthorizationWrite.js +1 -1
  107. package/lib/orchestrate/realize/orchestrateRealizeCollectorCorrectOverall.js +1 -1
  108. package/lib/orchestrate/realize/orchestrateRealizeCollectorPlan.js +11 -11
  109. package/lib/orchestrate/realize/orchestrateRealizeCollectorWrite.js +1 -1
  110. package/lib/orchestrate/realize/orchestrateRealizeOperationCorrectOverall.js +1 -1
  111. package/lib/orchestrate/realize/orchestrateRealizeOperationWrite.js +1 -1
  112. package/lib/orchestrate/realize/orchestrateRealizeTransformerCorrectOverall.js +1 -1
  113. package/lib/orchestrate/realize/orchestrateRealizeTransformerPlan.js +11 -11
  114. package/lib/orchestrate/realize/orchestrateRealizeTransformerWrite.js +1 -1
  115. package/lib/orchestrate/realize/programmers/AutoBeRealizeCollectorProgrammer.js +41 -41
  116. package/lib/orchestrate/realize/programmers/AutoBeRealizeOperationProgrammer.js +21 -21
  117. package/lib/orchestrate/realize/programmers/AutoBeRealizeTransformerProgrammer.js +57 -57
  118. package/lib/orchestrate/realize/utils/getRealizeWriteInputType.js +3 -3
  119. package/lib/orchestrate/realize/utils/printErrorHints.js +5 -5
  120. package/lib/orchestrate/test/compile/getTestImportStatements.js +9 -9
  121. package/lib/orchestrate/test/histories/transformTestAuthorizeWriteHistory.js +38 -38
  122. package/lib/orchestrate/test/histories/transformTestGenerationWriteHistory.js +79 -79
  123. package/lib/orchestrate/test/histories/transformTestOperationWriteHistory.js +162 -162
  124. package/lib/orchestrate/test/histories/transformTestPrepareWriteHistory.js +54 -54
  125. package/lib/orchestrate/test/histories/transformTestScenarioHistory.js +31 -31
  126. package/lib/orchestrate/test/histories/transformTestScenarioReviewHistory.js +27 -27
  127. package/lib/orchestrate/test/orchestrateTestScenario.js +1 -1
  128. package/lib/orchestrate/test/orchestrateTestScenarioReview.js +1 -1
  129. package/lib/orchestrate/test/programmers/AutoBeTestAuthorizeProgrammer.js +31 -31
  130. package/lib/orchestrate/test/programmers/AutoBeTestGenerateProgrammer.js +23 -23
  131. package/lib/orchestrate/test/programmers/AutoBeTestOperationProgrammer.js +6 -6
  132. package/lib/orchestrate/test/programmers/AutoBeTestPrepareProgrammer.js +34 -34
  133. package/lib/orchestrate/test/programmers/AutoBeTestScenarioProgrammer.js +39 -39
  134. package/lib/utils/predicateStateMessage.js +19 -19
  135. package/lib/utils/validateEmptyCode.js +16 -16
  136. package/package.json +5 -5
  137. package/src/AutoBeAgent.ts +374 -374
  138. package/src/AutoBeAgentBase.ts +126 -126
  139. package/src/AutoBeMockAgent.ts +254 -254
  140. package/src/constants/AutoBeConfigConstant.ts +173 -173
  141. package/src/constants/AutoBeTemplateFileConstant.ts +1 -1
  142. package/src/context/AutoBeContext.ts +107 -107
  143. package/src/context/AutoBeState.ts +66 -66
  144. package/src/context/AutoBeTokenUsage.ts +307 -307
  145. package/src/context/AutoBeTokenUsageComponent.ts +227 -227
  146. package/src/describe/describe.ts +47 -47
  147. package/src/describe/image/histories/transformImageDescribeDraftHistories.ts +16 -16
  148. package/src/describe/image/orchestrateImageDescribeDraft.ts +200 -200
  149. package/src/describe/image/structures/IAutoBeImageDescribeDraftApplication.ts +92 -92
  150. package/src/describe/imageDescribe.ts +64 -64
  151. package/src/factory/consentFunctionCall.ts +141 -141
  152. package/src/factory/createAgenticaHistory.ts +71 -71
  153. package/src/factory/createAutoBeContext.ts +584 -584
  154. package/src/factory/createAutoBeMessageContent.ts +36 -36
  155. package/src/factory/createAutoBeState.ts +20 -20
  156. package/src/factory/getAutoBeGenerated.ts +317 -317
  157. package/src/factory/getAutoBeRealizeGenerated.ts +31 -31
  158. package/src/factory/getCriticalCompiler.ts +52 -52
  159. package/src/factory/index.ts +1 -1
  160. package/src/factory/mergeSystemMessages.ts +60 -60
  161. package/src/factory/supportFunctionCallFallback.ts +214 -214
  162. package/src/factory/supportMistral.ts +138 -138
  163. package/src/index.ts +16 -16
  164. package/src/orchestrate/analyze/fillTocDeterministic.ts +280 -280
  165. package/src/orchestrate/analyze/histories/transformAnalyzeScenarioHistory.ts +55 -55
  166. package/src/orchestrate/analyze/histories/transformAnalyzeScenarioReviewHistory.ts +74 -74
  167. package/src/orchestrate/analyze/histories/transformAnalyzeSectionCrossFileReviewHistory.ts +179 -179
  168. package/src/orchestrate/analyze/histories/transformAnalyzeSectionReviewHistory.ts +163 -163
  169. package/src/orchestrate/analyze/histories/transformAnalyzeWriteSectionHistory.ts +191 -191
  170. package/src/orchestrate/analyze/histories/transformAnalyzeWriteSectionPatchHistory.ts +122 -122
  171. package/src/orchestrate/analyze/histories/transformAnalyzeWriteUnitHistory.ts +161 -161
  172. package/src/orchestrate/analyze/index.ts +7 -7
  173. package/src/orchestrate/analyze/orchestrateAnalyze.ts +1693 -1693
  174. package/src/orchestrate/analyze/orchestrateAnalyzeScenario.ts +267 -267
  175. package/src/orchestrate/analyze/orchestrateAnalyzeScenarioReview.ts +122 -122
  176. package/src/orchestrate/analyze/orchestrateAnalyzeSectionCrossFileReview.ts +146 -146
  177. package/src/orchestrate/analyze/orchestrateAnalyzeSectionReview.ts +154 -154
  178. package/src/orchestrate/analyze/orchestrateAnalyzeWriteSection.ts +388 -388
  179. package/src/orchestrate/analyze/orchestrateAnalyzeWriteSectionPatch.ts +407 -407
  180. package/src/orchestrate/analyze/orchestrateAnalyzeWriteUnit.ts +348 -348
  181. package/src/orchestrate/analyze/programmers/AutoBeAnalyzeProgrammer.ts +149 -149
  182. package/src/orchestrate/analyze/structures/FixedAnalyzeTemplate.ts +961 -961
  183. package/src/orchestrate/analyze/structures/IAutoBeAnalyzeScenarioApplication.ts +141 -141
  184. package/src/orchestrate/analyze/structures/IAutoBeAnalyzeScenarioReviewApplication.ts +96 -96
  185. package/src/orchestrate/analyze/structures/IAutoBeAnalyzeSectionCrossFileReviewApplication.ts +160 -160
  186. package/src/orchestrate/analyze/structures/IAutoBeAnalyzeSectionReviewApplication.ts +192 -192
  187. package/src/orchestrate/analyze/structures/IAutoBeAnalyzeWriteSectionApplication.ts +142 -142
  188. package/src/orchestrate/analyze/structures/IAutoBeAnalyzeWriteUnitApplication.ts +123 -123
  189. package/src/orchestrate/analyze/utils/buildConstraintConsistencyReport.ts +813 -813
  190. package/src/orchestrate/analyze/utils/buildErrorCodeRegistry.ts +324 -324
  191. package/src/orchestrate/analyze/utils/buildHardValidators.ts +88 -88
  192. package/src/orchestrate/analyze/utils/detectInventedEntities.ts +87 -87
  193. package/src/orchestrate/analyze/utils/detectProseConstraintConflicts.ts +319 -319
  194. package/src/orchestrate/analyze/utils/repairSectionReviewUtils.ts +181 -181
  195. package/src/orchestrate/analyze/utils/repairUtils.ts +60 -60
  196. package/src/orchestrate/analyze/utils/validateScenarioBasics.ts +104 -104
  197. package/src/orchestrate/common/AutoBePreliminaryController.ts +400 -400
  198. package/src/orchestrate/common/histories/transformCommonCorrectCastingHistory.ts +32 -32
  199. package/src/orchestrate/common/histories/transformPreliminaryHistory.ts +742 -742
  200. package/src/orchestrate/common/histories/transformPreviousAndLatestCorrectHistory.ts +77 -77
  201. package/src/orchestrate/common/internal/complementPreliminaryCollection.ts +263 -263
  202. package/src/orchestrate/common/internal/convertToSectionEntries.ts +57 -57
  203. package/src/orchestrate/common/internal/createPreliminaryCollection.ts +76 -76
  204. package/src/orchestrate/common/internal/fixPrelminaryApplication.ts +346 -346
  205. package/src/orchestrate/common/internal/validatePreliminary.ts +671 -671
  206. package/src/orchestrate/common/orchestrateCommonCorrectCasting.ts +223 -223
  207. package/src/orchestrate/common/orchestratePreliminary.ts +610 -610
  208. package/src/orchestrate/common/structures/AutoBePreliminaryRequest.ts +42 -42
  209. package/src/orchestrate/common/structures/IAnalysisSectionEntry.ts +35 -35
  210. package/src/orchestrate/common/structures/IAutoBeCommonCorrectCastingApplication.ts +72 -72
  211. package/src/orchestrate/common/structures/IAutoBeOrchestrateResult.ts +28 -28
  212. package/src/orchestrate/common/structures/IAutoBePreliminaryCollection.ts +52 -52
  213. package/src/orchestrate/common/structures/IAutoBePreliminaryGetAnalysisSections.ts +34 -34
  214. package/src/orchestrate/common/structures/IAutoBePreliminaryGetDatabaseSchemas.ts +31 -31
  215. package/src/orchestrate/common/structures/IAutoBePreliminaryGetInterfaceOperations.ts +32 -32
  216. package/src/orchestrate/common/structures/IAutoBePreliminaryGetInterfaceSchemas.ts +31 -31
  217. package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousAnalysisSections.ts +28 -28
  218. package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousDatabaseSchemas.ts +88 -88
  219. package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousInterfaceOperations.ts +102 -102
  220. package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousInterfaceSchemas.ts +105 -105
  221. package/src/orchestrate/common/structures/IAutoBePreliminaryGetRealizeCollectors.ts +32 -32
  222. package/src/orchestrate/common/structures/IAutoBePreliminaryGetRealizeTransformers.ts +32 -32
  223. package/src/orchestrate/facade/createAutoBeFacadeController.ts +118 -118
  224. package/src/orchestrate/facade/histories/IAutoBeFacadeApplication.ts +139 -139
  225. package/src/orchestrate/facade/histories/IAutoBeFacadeApplicationProps.ts +8 -8
  226. package/src/orchestrate/facade/histories/IAutoBeFacadeApplicationResult.ts +9 -9
  227. package/src/orchestrate/facade/structures/transformFacadeStateMessage.ts +59 -59
  228. package/src/orchestrate/index.ts +5 -5
  229. package/src/orchestrate/interface/histories/transformInterfaceActionEndpointReviewHistory.ts +83 -83
  230. package/src/orchestrate/interface/histories/transformInterfaceActionEndpointWriteHistory.ts +78 -78
  231. package/src/orchestrate/interface/histories/transformInterfaceAuthorizationHistory.ts +129 -129
  232. package/src/orchestrate/interface/histories/transformInterfaceBaseEndpointReviewHistory.ts +74 -74
  233. package/src/orchestrate/interface/histories/transformInterfaceBaseEndpointWriteHistory.ts +68 -68
  234. package/src/orchestrate/interface/histories/transformInterfaceCommonHistory.ts +64 -64
  235. package/src/orchestrate/interface/histories/transformInterfaceEndpointAuthorizationSection.ts +42 -42
  236. package/src/orchestrate/interface/histories/transformInterfaceGroupHistory.ts +103 -103
  237. package/src/orchestrate/interface/histories/transformInterfaceOperationHistory.ts +81 -81
  238. package/src/orchestrate/interface/histories/transformInterfaceOperationParameterHistory.ts +53 -53
  239. package/src/orchestrate/interface/histories/transformInterfaceOperationReviewHistory.ts +49 -49
  240. package/src/orchestrate/interface/histories/transformInterfacePrerequisiteHistory.ts +94 -94
  241. package/src/orchestrate/interface/histories/transformInterfaceSchemaCastingHistory.ts +122 -122
  242. package/src/orchestrate/interface/histories/transformInterfaceSchemaComplementHistory.ts +192 -192
  243. package/src/orchestrate/interface/histories/transformInterfaceSchemaRefineHistory.ts +189 -189
  244. package/src/orchestrate/interface/histories/transformInterfaceSchemaRenameHistory.ts +63 -63
  245. package/src/orchestrate/interface/histories/transformInterfaceSchemaReviewHistory.ts +173 -173
  246. package/src/orchestrate/interface/histories/transformInterfaceSchemaWriteHistory.ts +88 -88
  247. package/src/orchestrate/interface/index.ts +6 -6
  248. package/src/orchestrate/interface/orchestrateInterface.ts +118 -118
  249. package/src/orchestrate/interface/orchestrateInterfaceActionEndpoint.ts +58 -58
  250. package/src/orchestrate/interface/orchestrateInterfaceAuthorization.ts +208 -208
  251. package/src/orchestrate/interface/orchestrateInterfaceBaseEndpoint.ts +55 -55
  252. package/src/orchestrate/interface/orchestrateInterfaceEndpoint.ts +67 -67
  253. package/src/orchestrate/interface/orchestrateInterfaceEndpointOverall.ts +80 -80
  254. package/src/orchestrate/interface/orchestrateInterfaceEndpointReview.ts +212 -212
  255. package/src/orchestrate/interface/orchestrateInterfaceEndpointWrite.ts +236 -236
  256. package/src/orchestrate/interface/orchestrateInterfaceGroup.ts +166 -166
  257. package/src/orchestrate/interface/orchestrateInterfaceOperation.ts +322 -322
  258. package/src/orchestrate/interface/orchestrateInterfaceOperationReview.ts +245 -245
  259. package/src/orchestrate/interface/orchestrateInterfacePrerequisite.ts +240 -240
  260. package/src/orchestrate/interface/orchestrateInterfaceSchema.ts +191 -191
  261. package/src/orchestrate/interface/orchestrateInterfaceSchemaCasting.ts +274 -274
  262. package/src/orchestrate/interface/orchestrateInterfaceSchemaComplement.ts +329 -329
  263. package/src/orchestrate/interface/orchestrateInterfaceSchemaRefine.ts +292 -292
  264. package/src/orchestrate/interface/orchestrateInterfaceSchemaRename.ts +266 -266
  265. package/src/orchestrate/interface/orchestrateInterfaceSchemaReview.ts +310 -310
  266. package/src/orchestrate/interface/orchestrateInterfaceSchemaWrite.ts +283 -283
  267. package/src/orchestrate/interface/programmers/AutoBeInterfaceAuthorizationProgrammer.ts +260 -260
  268. package/src/orchestrate/interface/programmers/AutoBeInterfaceEndpointProgrammer.ts +155 -155
  269. package/src/orchestrate/interface/programmers/AutoBeInterfaceEndpointReviewProgrammer.ts +139 -139
  270. package/src/orchestrate/interface/programmers/AutoBeInterfaceOperationProgrammer.ts +277 -277
  271. package/src/orchestrate/interface/programmers/AutoBeInterfacePrerequisiteProgrammer.ts +259 -259
  272. package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaProgrammer.ts +152 -152
  273. package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaPropertyReviseProgrammer.ts +347 -347
  274. package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaRefineProgrammer.ts +183 -183
  275. package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaReviewProgrammer.ts +263 -263
  276. package/src/orchestrate/interface/structures/IAutoBeInterfaceAuthorizationApplication.ts +135 -135
  277. package/src/orchestrate/interface/structures/IAutoBeInterfaceEndpointReviewApplication.ts +128 -128
  278. package/src/orchestrate/interface/structures/IAutoBeInterfaceEndpointWriteApplication.ts +133 -133
  279. package/src/orchestrate/interface/structures/IAutoBeInterfaceGroupApplication.ts +122 -122
  280. package/src/orchestrate/interface/structures/IAutoBeInterfaceOperationApplication.ts +178 -178
  281. package/src/orchestrate/interface/structures/IAutoBeInterfaceOperationReviewApplication.ts +175 -175
  282. package/src/orchestrate/interface/structures/IAutoBeInterfacePrerequisiteApplication.ts +130 -130
  283. package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaApplication.ts +121 -121
  284. package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaCastingApplication.ts +153 -153
  285. package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaComplementApplication.ts +123 -123
  286. package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaRefineApplication.ts +181 -181
  287. package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaRenameApplication.ts +45 -45
  288. package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaReviewApplication.ts +108 -108
  289. package/src/orchestrate/interface/utils/AutoBeJsonSchemaCollection.ts +42 -42
  290. package/src/orchestrate/interface/utils/AutoBeJsonSchemaFactory.ts +714 -714
  291. package/src/orchestrate/interface/utils/AutoBeJsonSchemaNamingConvention.ts +86 -86
  292. package/src/orchestrate/interface/utils/AutoBeJsonSchemaValidator.ts +725 -725
  293. package/src/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.ts +219 -219
  294. package/src/orchestrate/prisma/histories/transformPrismaAuthorizationHistory.ts +144 -144
  295. package/src/orchestrate/prisma/histories/transformPrismaAuthorizationReviewHistory.ts +104 -104
  296. package/src/orchestrate/prisma/histories/transformPrismaComponentReviewHistory.ts +97 -97
  297. package/src/orchestrate/prisma/histories/transformPrismaComponentsHistory.ts +136 -136
  298. package/src/orchestrate/prisma/histories/transformPrismaCorrectHistory.ts +41 -41
  299. package/src/orchestrate/prisma/histories/transformPrismaGroupHistory.ts +63 -63
  300. package/src/orchestrate/prisma/histories/transformPrismaGroupReviewHistory.ts +79 -79
  301. package/src/orchestrate/prisma/histories/transformPrismaSchemaHistory.ts +97 -97
  302. package/src/orchestrate/prisma/histories/transformPrismaSchemaReviewHistory.ts +126 -126
  303. package/src/orchestrate/prisma/index.ts +7 -7
  304. package/src/orchestrate/prisma/orchestratePrisma.ts +296 -296
  305. package/src/orchestrate/prisma/orchestratePrismaAuthorization.ts +173 -173
  306. package/src/orchestrate/prisma/orchestratePrismaAuthorizationReview.ts +183 -183
  307. package/src/orchestrate/prisma/orchestratePrismaComponent.ts +205 -205
  308. package/src/orchestrate/prisma/orchestratePrismaComponentReview.ts +205 -205
  309. package/src/orchestrate/prisma/orchestratePrismaCorrect.ts +265 -265
  310. package/src/orchestrate/prisma/orchestratePrismaGroup.ts +121 -121
  311. package/src/orchestrate/prisma/orchestratePrismaGroupReview.ts +141 -141
  312. package/src/orchestrate/prisma/orchestratePrismaSchema.ts +218 -218
  313. package/src/orchestrate/prisma/orchestratePrismaSchemaReview.ts +220 -220
  314. package/src/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationProgrammer.ts +86 -86
  315. package/src/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationReviewProgrammer.ts +103 -103
  316. package/src/orchestrate/prisma/programmers/AutoBeDatabaseComponentProgrammer.ts +80 -80
  317. package/src/orchestrate/prisma/programmers/AutoBeDatabaseComponentReviewProgrammer.ts +168 -168
  318. package/src/orchestrate/prisma/programmers/AutoBeDatabaseGroupProgrammer.ts +63 -63
  319. package/src/orchestrate/prisma/programmers/AutoBeDatabaseGroupReviewProgrammer.ts +210 -210
  320. package/src/orchestrate/prisma/programmers/AutoBeDatabaseModelProgrammer.ts +57 -57
  321. package/src/orchestrate/prisma/programmers/AutoBeDatabaseSchemaProgrammer.ts +92 -92
  322. package/src/orchestrate/prisma/structures/IAutoBeDatabaseAuthorizationApplication.ts +147 -147
  323. package/src/orchestrate/prisma/structures/IAutoBeDatabaseAuthorizationReviewApplication.ts +153 -153
  324. package/src/orchestrate/prisma/structures/IAutoBeDatabaseComponentApplication.ts +142 -142
  325. package/src/orchestrate/prisma/structures/IAutoBeDatabaseComponentReviewApplication.ts +151 -151
  326. package/src/orchestrate/prisma/structures/IAutoBeDatabaseCorrectApplication.ts +157 -157
  327. package/src/orchestrate/prisma/structures/IAutoBeDatabaseGroupApplication.ts +117 -117
  328. package/src/orchestrate/prisma/structures/IAutoBeDatabaseGroupReviewApplication.ts +154 -154
  329. package/src/orchestrate/prisma/structures/IAutoBeDatabaseSchemaApplication.ts +144 -144
  330. package/src/orchestrate/prisma/structures/IAutoBeDatabaseSchemaReviewApplication.ts +138 -138
  331. package/src/orchestrate/realize/histories/transformRealizeAuthorizationCorrectHistory.ts +89 -89
  332. package/src/orchestrate/realize/histories/transformRealizeAuthorizationWriteHistory.ts +45 -45
  333. package/src/orchestrate/realize/histories/transformRealizeCollectorCorrectHistory.ts +137 -137
  334. package/src/orchestrate/realize/histories/transformRealizeCollectorPlanHistory.ts +64 -64
  335. package/src/orchestrate/realize/histories/transformRealizeCollectorWriteHistory.ts +147 -147
  336. package/src/orchestrate/realize/histories/transformRealizeCorrectCastingHistory.ts +69 -69
  337. package/src/orchestrate/realize/histories/transformRealizeOperationCorrectHistory.ts +94 -94
  338. package/src/orchestrate/realize/histories/transformRealizeOperationWriteHistory.ts +127 -127
  339. package/src/orchestrate/realize/histories/transformRealizeTransformerCorrectHistory.ts +147 -147
  340. package/src/orchestrate/realize/histories/transformRealizeTransformerPlanHistory.ts +61 -61
  341. package/src/orchestrate/realize/histories/transformRealizeTransformerWriteHistory.ts +133 -133
  342. package/src/orchestrate/realize/histories/transformRealizeWriteMembershipHistory.ts +30 -30
  343. package/src/orchestrate/realize/index.ts +3 -3
  344. package/src/orchestrate/realize/internal/orchestrateRealizeCorrectCasting.ts +444 -444
  345. package/src/orchestrate/realize/internal/orchestrateRealizeCorrectOverall.ts +449 -449
  346. package/src/orchestrate/realize/orchestrateRealize.ts +143 -143
  347. package/src/orchestrate/realize/orchestrateRealizeAuthorizationCorrect.ts +207 -207
  348. package/src/orchestrate/realize/orchestrateRealizeAuthorizationWrite.ts +209 -209
  349. package/src/orchestrate/realize/orchestrateRealizeCollector.ts +41 -41
  350. package/src/orchestrate/realize/orchestrateRealizeCollectorCorrectCasting.ts +43 -43
  351. package/src/orchestrate/realize/orchestrateRealizeCollectorCorrectOverall.ts +157 -157
  352. package/src/orchestrate/realize/orchestrateRealizeCollectorPlan.ts +264 -264
  353. package/src/orchestrate/realize/orchestrateRealizeCollectorWrite.ts +225 -225
  354. package/src/orchestrate/realize/orchestrateRealizeOperation.ts +48 -48
  355. package/src/orchestrate/realize/orchestrateRealizeOperationCorrectCasting.ts +69 -69
  356. package/src/orchestrate/realize/orchestrateRealizeOperationCorrectOverall.ts +173 -173
  357. package/src/orchestrate/realize/orchestrateRealizeOperationWrite.ts +262 -262
  358. package/src/orchestrate/realize/orchestrateRealizeTransformer.ts +41 -41
  359. package/src/orchestrate/realize/orchestrateRealizeTransformerCorrectCasting.ts +38 -38
  360. package/src/orchestrate/realize/orchestrateRealizeTransformerCorrectOverall.ts +160 -160
  361. package/src/orchestrate/realize/orchestrateRealizeTransformerPlan.ts +254 -254
  362. package/src/orchestrate/realize/orchestrateRealizeTransformerWrite.ts +226 -226
  363. package/src/orchestrate/realize/programmers/AutoBeRealizeCollectorProgrammer.ts +424 -424
  364. package/src/orchestrate/realize/programmers/AutoBeRealizeOperationProgrammer.ts +409 -409
  365. package/src/orchestrate/realize/programmers/AutoBeRealizeTransformerProgrammer.ts +451 -451
  366. package/src/orchestrate/realize/programmers/compileRealizeFiles.ts +65 -65
  367. package/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationCorrectApplication.ts +119 -119
  368. package/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationWriteApplication.ts +167 -167
  369. package/src/orchestrate/realize/structures/IAutoBeRealizeCollectorCorrectApplication.ts +191 -191
  370. package/src/orchestrate/realize/structures/IAutoBeRealizeCollectorPlanApplication.ts +177 -177
  371. package/src/orchestrate/realize/structures/IAutoBeRealizeCollectorWriteApplication.ts +207 -207
  372. package/src/orchestrate/realize/structures/IAutoBeRealizeFunctionFailure.ts +11 -11
  373. package/src/orchestrate/realize/structures/IAutoBeRealizeOperationCorrectApplication.ts +134 -134
  374. package/src/orchestrate/realize/structures/IAutoBeRealizeOperationWriteApplication.ts +138 -138
  375. package/src/orchestrate/realize/structures/IAutoBeRealizeScenarioResult.ts +32 -32
  376. package/src/orchestrate/realize/structures/IAutoBeRealizeTransformerCorrectApplication.ts +248 -248
  377. package/src/orchestrate/realize/structures/IAutoBeRealizeTransformerPlanApplication.ts +150 -150
  378. package/src/orchestrate/realize/structures/IAutoBeRealizeTransformerWriteApplication.ts +278 -278
  379. package/src/orchestrate/realize/utils/AuthorizationFileSystem.ts +10 -10
  380. package/src/orchestrate/realize/utils/AutoBeRealizeAuthorizationFileSystem.ts +9 -9
  381. package/src/orchestrate/realize/utils/AutoBeRealizeAuthorizationReplaceImport.ts +62 -62
  382. package/src/orchestrate/realize/utils/InternalFileSystem.ts +12 -12
  383. package/src/orchestrate/realize/utils/ProviderFileSystem.ts +4 -4
  384. package/src/orchestrate/realize/utils/filterDiagnostics.ts +25 -25
  385. package/src/orchestrate/realize/utils/generateTS2339Hints.ts +54 -54
  386. package/src/orchestrate/realize/utils/getRealizeWriteImportStatements.ts +42 -42
  387. package/src/orchestrate/realize/utils/getRealizeWriteInputType.ts +88 -88
  388. package/src/orchestrate/realize/utils/printErrorHints.ts +54 -54
  389. package/src/orchestrate/test/compile/getTestArtifacts.ts +124 -124
  390. package/src/orchestrate/test/compile/getTestExternalDeclarations.ts +39 -39
  391. package/src/orchestrate/test/compile/getTestImportStatements.ts +27 -27
  392. package/src/orchestrate/test/experimental/orchestrateTestCorrect.ast +237 -237
  393. package/src/orchestrate/test/experimental/orchestrateTestWrite.ast +322 -322
  394. package/src/orchestrate/test/experimental/transformTestCorrectHistories.ast +52 -52
  395. package/src/orchestrate/test/histories/transformTestAuthorizeWriteHistory.ts +80 -80
  396. package/src/orchestrate/test/histories/transformTestCorrectOverallHistory.ts +116 -116
  397. package/src/orchestrate/test/histories/transformTestGenerationWriteHistory.ts +118 -118
  398. package/src/orchestrate/test/histories/transformTestOperationWriteHistory.ts +287 -287
  399. package/src/orchestrate/test/histories/transformTestPrepareWriteHistory.ts +95 -95
  400. package/src/orchestrate/test/histories/transformTestScenarioHistory.ts +120 -120
  401. package/src/orchestrate/test/histories/transformTestScenarioReviewHistory.ts +99 -99
  402. package/src/orchestrate/test/histories/transformTestValidateEvent.ts +11 -11
  403. package/src/orchestrate/test/index.ts +5 -5
  404. package/src/orchestrate/test/internal/orchestrateTestCorrectCasting.ts +96 -96
  405. package/src/orchestrate/test/internal/orchestrateTestCorrectOverall.ts +219 -219
  406. package/src/orchestrate/test/internal/orchestrateTestCorrectRequest.ts +206 -206
  407. package/src/orchestrate/test/orchestrateTest.ts +161 -161
  408. package/src/orchestrate/test/orchestrateTestAuthorize.ts +125 -125
  409. package/src/orchestrate/test/orchestrateTestAuthorizeWrite.ts +263 -263
  410. package/src/orchestrate/test/orchestrateTestGenerate.ts +121 -121
  411. package/src/orchestrate/test/orchestrateTestGenerateWrite.ts +211 -211
  412. package/src/orchestrate/test/orchestrateTestOperation.ts +133 -133
  413. package/src/orchestrate/test/orchestrateTestOperationWrite.ts +221 -221
  414. package/src/orchestrate/test/orchestrateTestPrepare.ts +117 -117
  415. package/src/orchestrate/test/orchestrateTestPrepareWrite.ts +264 -264
  416. package/src/orchestrate/test/orchestrateTestScenario.ts +290 -290
  417. package/src/orchestrate/test/orchestrateTestScenarioReview.ts +262 -262
  418. package/src/orchestrate/test/programmers/AutoBeTestAuthorizeProgrammer.ts +149 -149
  419. package/src/orchestrate/test/programmers/AutoBeTestFunctionProgrammer.ts +90 -90
  420. package/src/orchestrate/test/programmers/AutoBeTestGenerateProgrammer.ts +170 -170
  421. package/src/orchestrate/test/programmers/AutoBeTestOperationProgrammer.ts +168 -168
  422. package/src/orchestrate/test/programmers/AutoBeTestPrepareProgrammer.ts +261 -261
  423. package/src/orchestrate/test/programmers/AutoBeTestScenarioProgrammer.ts +316 -316
  424. package/src/orchestrate/test/structures/IAutoBeTestArtifacts.ts +8 -8
  425. package/src/orchestrate/test/structures/IAutoBeTestAuthorizationWriteApplication.ts +113 -113
  426. package/src/orchestrate/test/structures/IAutoBeTestAuthorizeWriteResult.ts +10 -10
  427. package/src/orchestrate/test/structures/IAutoBeTestCorrectOverallApplication.ts +134 -134
  428. package/src/orchestrate/test/structures/IAutoBeTestCorrectRequestApplication.ts +152 -152
  429. package/src/orchestrate/test/structures/IAutoBeTestFunction.ts +10 -10
  430. package/src/orchestrate/test/structures/IAutoBeTestFunctionFailure.ts +10 -10
  431. package/src/orchestrate/test/structures/IAutoBeTestGenerateProcedure.ts +15 -15
  432. package/src/orchestrate/test/structures/IAutoBeTestGenerationWriteApplication.ts +145 -145
  433. package/src/orchestrate/test/structures/IAutoBeTestOperationProcedure.ts +17 -17
  434. package/src/orchestrate/test/structures/IAutoBeTestOperationWriteApplication.ts +162 -162
  435. package/src/orchestrate/test/structures/IAutoBeTestPrepareCorrectOverallApplication.ts +194 -194
  436. package/src/orchestrate/test/structures/IAutoBeTestPrepareProcedure.ts +8 -8
  437. package/src/orchestrate/test/structures/IAutoBeTestPrepareWriteApplication.ts +147 -147
  438. package/src/orchestrate/test/structures/IAutoBeTestProcedure.ts +10 -10
  439. package/src/orchestrate/test/structures/IAutoBeTestScenarioApplication.ts +105 -105
  440. package/src/orchestrate/test/structures/IAutoBeTestScenarioArtifacts.ts +8 -8
  441. package/src/orchestrate/test/structures/IAutoBeTestScenarioAuthorizationActor.ts +7 -7
  442. package/src/orchestrate/test/structures/IAutoBeTestScenarioReviewApplication.ts +133 -133
  443. package/src/orchestrate/test/utils/getPrerequisites.ts +51 -51
  444. package/src/orchestrate/test/utils/getReferenceIds.ts +26 -26
  445. package/src/orchestrate/test/utils/insertScriptToTestResult.ts +14 -14
  446. package/src/structures/IAutoBeConfig.ts +110 -110
  447. package/src/structures/IAutoBeOrchestrateHistory.ts +44 -44
  448. package/src/structures/IAutoBeProps.ts +102 -102
  449. package/src/structures/IAutoBeVendor.ts +113 -113
  450. package/src/utils/AutoBePreliminaryExhaustedError.ts +30 -30
  451. package/src/utils/AutoBeTimeoutError.ts +35 -35
  452. package/src/utils/EmbeddingProvider.ts +4 -4
  453. package/src/utils/LocalEmbeddingProvider.ts +145 -145
  454. package/src/utils/RAGRetrieval.ts +411 -411
  455. package/src/utils/TimedConversation.ts +125 -125
  456. package/src/utils/backoffRetry.ts +169 -169
  457. package/src/utils/divideArray.ts +35 -35
  458. package/src/utils/emplaceMap.ts +31 -31
  459. package/src/utils/executeCachedBatch.ts +67 -67
  460. package/src/utils/forceRetry.ts +15 -15
  461. package/src/utils/getEmbedder.ts +16 -16
  462. package/src/utils/parseTextFunctionCall.ts +437 -437
  463. package/src/utils/predicateStateMessage.ts +131 -131
  464. package/src/utils/validateEmptyCode.ts +73 -73
  465. package/src/utils/validateEnglishOnly.ts +224 -224
  466. package/README.md +0 -261
@@ -1,319 +1,319 @@
1
- import {
2
- AutoBeAnalyze,
3
- AutoBeAnalyzeWriteSectionEvent,
4
- } from "@autobe/interface";
5
- import YAML from "yaml";
6
-
7
- // ─── Types ───
8
-
9
- export interface IProseConstraintConflict {
10
- entityAttr: string;
11
- canonicalValues: number[];
12
- proseValues: number[];
13
- file: string;
14
- sectionTitle: string;
15
- context: string;
16
- }
17
-
18
- type FileSectionInput = Array<{
19
- file: AutoBeAnalyze.IFileScenario;
20
- sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
21
- }>;
22
-
23
- // ─── Constants ───
24
-
25
- const YAML_CODE_BLOCK_REGEX = /```yaml\n[\s\S]*?```/g;
26
- const CANONICAL_FILENAME = "02-domain-model.md";
27
-
28
- /**
29
- * Numeric constraint patterns found in prose text. Matches: "300 characters",
30
- * "1-50 characters", "1–150 characters", "up to 2000 characters", "maximum 500
31
- * chars", "minimum 8 characters", "exceeds 300 characters", "at least 1
32
- * character", "at most 200 characters".
33
- */
34
- const NUMERIC_PATTERNS: RegExp[] = [
35
- // Range: "1-50 characters", "1–150 characters", "0–300 characters"
36
- /(\d+)\s*[–\-]\s*(\d+)\s*(?:characters|chars?|unicode characters)/gi,
37
- // Single number with unit: "300 characters", "2000 characters"
38
- /(?:up to|maximum|max|at most|no more than|exceeds?|at least|minimum|min|no less than)\s+(\d+)\s*(?:characters|chars?|unicode characters)/gi,
39
- // Plain: "N characters" (when preceded by constraint-like context)
40
- /(?:limited to|restricted to|capped at|allow(?:s|ed)?)\s+(\d+)\s*(?:characters|chars?|unicode characters)/gi,
41
- ];
42
-
43
- // ─── Helpers ───
44
-
45
- function escapeRegExp(str: string): string {
46
- return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
47
- }
48
-
49
- // ─── Canonical Registry ───
50
-
51
- /**
52
- * Build a map of Entity.attribute → canonical numeric values from
53
- * 02-domain-model YAML blocks.
54
- */
55
- function buildCanonicalNumericRegistry(
56
- canonicalFile: FileSectionInput[number],
57
- ): Map<string, number[]> {
58
- const registry: Map<string, number[]> = new Map();
59
-
60
- for (const sectionsForModule of canonicalFile.sectionEvents) {
61
- for (const sectionEvent of sectionsForModule) {
62
- for (const section of sectionEvent.sectionSections) {
63
- const yamlMatches = section.content.matchAll(/```yaml\n([\s\S]*?)```/g);
64
- for (const match of yamlMatches) {
65
- const yamlContent = match[1] ?? "";
66
- try {
67
- const parsed = YAML.parse(yamlContent);
68
- if (
69
- !parsed ||
70
- typeof parsed !== "object" ||
71
- typeof parsed.entity !== "string" ||
72
- !Array.isArray(parsed.attributes)
73
- )
74
- continue;
75
-
76
- for (const attr of parsed.attributes) {
77
- if (!attr || typeof attr.name !== "string") continue;
78
- const constraintStr = String(attr.constraints ?? "");
79
- const numbers = extractAllNumbers(constraintStr);
80
- if (numbers.length === 0) continue;
81
- const key = `${parsed.entity}.${attr.name}`;
82
- registry.set(key, numbers);
83
- }
84
- } catch {
85
- // skip parse errors
86
- }
87
- }
88
- }
89
- }
90
- }
91
-
92
- return registry;
93
- }
94
-
95
- /**
96
- * Build a reverse index: attribute name → list of Entity.attribute keys. e.g.,
97
- * "bio" → ["User.bio"], "title" → ["Article.title", "Todo.title"]
98
- */
99
- function buildAttributeNameIndex(
100
- registry: Map<string, number[]>,
101
- ): Map<string, string[]> {
102
- const index: Map<string, string[]> = new Map();
103
- for (const key of registry.keys()) {
104
- const dotIdx = key.indexOf(".");
105
- if (dotIdx < 0) continue;
106
- const attrName = key.slice(dotIdx + 1);
107
- if (!index.has(attrName)) index.set(attrName, []);
108
- index.get(attrName)!.push(key);
109
- }
110
- return index;
111
- }
112
-
113
- /**
114
- * Extract all integer numbers from a constraint string. "1-50, required" → [1,
115
- * 50] "optional, maximum 2000 characters, may be null" → [2000]
116
- */
117
- function extractAllNumbers(value: string): number[] {
118
- const nums: Set<number> = new Set();
119
- const matches = value.matchAll(/\d+/g);
120
- for (const m of matches) {
121
- const n = parseInt(m[0], 10);
122
- if (!isNaN(n)) nums.add(n);
123
- }
124
- return [...nums];
125
- }
126
-
127
- // ─── Prose Constraint Extraction (Value-Driven) ───
128
-
129
- interface IProseMention {
130
- entityAttr: string;
131
- numbers: number[];
132
- context: string;
133
- }
134
-
135
- /**
136
- * Value-driven prose constraint extraction.
137
- *
138
- * Instead of finding backtick references first, this approach:
139
- *
140
- * 1. Finds lines with numeric constraint patterns ("N characters", etc.)
141
- * 2. Checks if any canonical attribute name appears on that line
142
- * 3. Compares the numbers against canonical values
143
- *
144
- * This catches all patterns regardless of backtick usage:
145
- *
146
- * - `User.bio`: 0-300 characters
147
- * - `bio` (0-500 chars)
148
- * - Bio text limited to 300 characters
149
- * - | bio | 0-300 chars |
150
- */
151
- function extractProseConstraintMentions(
152
- proseContent: string,
153
- attrNameIndex: Map<string, string[]>,
154
- registry: Map<string, number[]>,
155
- ): IProseMention[] {
156
- const results: IProseMention[] = [];
157
- const lines = proseContent.split("\n");
158
-
159
- for (const line of lines) {
160
- // Step 1: Extract constraint-like numbers from this line
161
- const numbers = extractConstraintNumbers(line);
162
- if (numbers.length === 0) continue;
163
-
164
- // Step 2: Check if any canonical attribute name appears on this line
165
- for (const [attrName, entityAttrs] of attrNameIndex) {
166
- const attrPattern = new RegExp(`\\b${escapeRegExp(attrName)}\\b`, "i");
167
- if (!attrPattern.test(line)) continue;
168
-
169
- // Step 3: Union all canonical values for all possible Entity.attr matches
170
- const allCanonical: Set<number> = new Set();
171
- for (const ea of entityAttrs) {
172
- const vals = registry.get(ea);
173
- if (vals) for (const v of vals) allCanonical.add(v);
174
- }
175
-
176
- // Step 4: Find numbers that don't match any canonical value
177
- const conflicting = numbers.filter(
178
- (n) => !allCanonical.has(n) && n !== 0,
179
- );
180
- if (conflicting.length === 0) continue;
181
-
182
- results.push({
183
- entityAttr: entityAttrs[0]!,
184
- numbers,
185
- context: line.trim().slice(0, 200),
186
- });
187
- }
188
- }
189
-
190
- // Deduplicate: same entityAttr + same numbers → keep first
191
- const seen: Map<string, IProseMention> = new Map();
192
- for (const mention of results) {
193
- const key = `${mention.entityAttr}:${mention.numbers.sort((a, b) => a - b).join(",")}`;
194
- if (!seen.has(key)) seen.set(key, mention);
195
- }
196
-
197
- return [...seen.values()];
198
- }
199
-
200
- /**
201
- * Extract numbers from constraint-like patterns in text. Only extracts numbers
202
- * that appear in constraint context (near "characters", etc.).
203
- */
204
- function extractConstraintNumbers(text: string): number[] {
205
- const numbers: Set<number> = new Set();
206
-
207
- for (const pattern of NUMERIC_PATTERNS) {
208
- pattern.lastIndex = 0;
209
- const matches = text.matchAll(pattern);
210
- for (const m of matches) {
211
- if (m[1]) {
212
- const n = parseInt(m[1], 10);
213
- if (!isNaN(n)) numbers.add(n);
214
- }
215
- if (m[2]) {
216
- const n = parseInt(m[2], 10);
217
- if (!isNaN(n)) numbers.add(n);
218
- }
219
- }
220
- }
221
-
222
- return [...numbers];
223
- }
224
-
225
- // ─── Main Detection ───
226
-
227
- /**
228
- * Detect prose-level constraint value conflicts between non-canonical files and
229
- * the canonical 02-domain-model.
230
- *
231
- * Uses a value-driven approach: builds a reverse index of canonical attribute
232
- * names, then scans prose text for those names near numeric constraint
233
- * patterns. Catches all patterns regardless of backtick usage.
234
- */
235
- export const detectProseConstraintConflicts = (props: {
236
- files: FileSectionInput;
237
- }): IProseConstraintConflict[] => {
238
- // Find canonical file (02-domain-model.md)
239
- const canonicalFile = props.files.find(
240
- (f) => f.file.filename === CANONICAL_FILENAME,
241
- );
242
- if (!canonicalFile) return [];
243
-
244
- const registry = buildCanonicalNumericRegistry(canonicalFile);
245
- if (registry.size === 0) return [];
246
-
247
- const attrNameIndex = buildAttributeNameIndex(registry);
248
-
249
- const conflicts: IProseConstraintConflict[] = [];
250
-
251
- for (const { file, sectionEvents } of props.files) {
252
- // Skip canonical file itself
253
- if (file.filename === CANONICAL_FILENAME) continue;
254
-
255
- for (const sectionsForModule of sectionEvents) {
256
- for (const sectionEvent of sectionsForModule) {
257
- for (const section of sectionEvent.sectionSections) {
258
- // Strip YAML code blocks — those are handled by existing validators
259
- const proseContent = section.content.replace(
260
- YAML_CODE_BLOCK_REGEX,
261
- "",
262
- );
263
-
264
- const mentions = extractProseConstraintMentions(
265
- proseContent,
266
- attrNameIndex,
267
- registry,
268
- );
269
-
270
- for (const mention of mentions) {
271
- const canonicalValues = registry.get(mention.entityAttr);
272
- if (!canonicalValues) continue;
273
-
274
- // Check if prose values conflict with canonical
275
- const conflictingValues = mention.numbers.filter(
276
- (n) => !canonicalValues.includes(n) && n !== 0,
277
- );
278
-
279
- if (conflictingValues.length === 0) continue;
280
-
281
- conflicts.push({
282
- entityAttr: mention.entityAttr,
283
- canonicalValues,
284
- proseValues: mention.numbers,
285
- file: file.filename,
286
- sectionTitle: section.title,
287
- context: mention.context,
288
- });
289
- }
290
- }
291
- }
292
- }
293
- }
294
-
295
- return conflicts;
296
- };
297
-
298
- /**
299
- * Build a map from filename → list of prose conflict feedback strings. Only
300
- * non-canonical files appear in the map.
301
- */
302
- export const buildFileProseConflictMap = (
303
- conflicts: IProseConstraintConflict[],
304
- ): Map<string, string[]> => {
305
- const map: Map<string, string[]> = new Map();
306
-
307
- for (const conflict of conflicts) {
308
- const feedback =
309
- `Prose constraint conflict: ${conflict.entityAttr} — ` +
310
- `canonical values [${conflict.canonicalValues.join(", ")}] (from ${CANONICAL_FILENAME}) vs ` +
311
- `prose values [${conflict.proseValues.join(", ")}] in "${conflict.sectionTitle}". ` +
312
- `Remove the restated value and use a backtick reference to ${CANONICAL_FILENAME} instead.`;
313
-
314
- if (!map.has(conflict.file)) map.set(conflict.file, []);
315
- map.get(conflict.file)!.push(feedback);
316
- }
317
-
318
- return map;
319
- };
1
+ import {
2
+ AutoBeAnalyze,
3
+ AutoBeAnalyzeWriteSectionEvent,
4
+ } from "@autobe/interface";
5
+ import YAML from "yaml";
6
+
7
+ // ─── Types ───
8
+
9
+ export interface IProseConstraintConflict {
10
+ entityAttr: string;
11
+ canonicalValues: number[];
12
+ proseValues: number[];
13
+ file: string;
14
+ sectionTitle: string;
15
+ context: string;
16
+ }
17
+
18
+ type FileSectionInput = Array<{
19
+ file: AutoBeAnalyze.IFileScenario;
20
+ sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
21
+ }>;
22
+
23
+ // ─── Constants ───
24
+
25
+ const YAML_CODE_BLOCK_REGEX = /```yaml\n[\s\S]*?```/g;
26
+ const CANONICAL_FILENAME = "02-domain-model.md";
27
+
28
+ /**
29
+ * Numeric constraint patterns found in prose text. Matches: "300 characters",
30
+ * "1-50 characters", "1–150 characters", "up to 2000 characters", "maximum 500
31
+ * chars", "minimum 8 characters", "exceeds 300 characters", "at least 1
32
+ * character", "at most 200 characters".
33
+ */
34
+ const NUMERIC_PATTERNS: RegExp[] = [
35
+ // Range: "1-50 characters", "1–150 characters", "0–300 characters"
36
+ /(\d+)\s*[–\-]\s*(\d+)\s*(?:characters|chars?|unicode characters)/gi,
37
+ // Single number with unit: "300 characters", "2000 characters"
38
+ /(?:up to|maximum|max|at most|no more than|exceeds?|at least|minimum|min|no less than)\s+(\d+)\s*(?:characters|chars?|unicode characters)/gi,
39
+ // Plain: "N characters" (when preceded by constraint-like context)
40
+ /(?:limited to|restricted to|capped at|allow(?:s|ed)?)\s+(\d+)\s*(?:characters|chars?|unicode characters)/gi,
41
+ ];
42
+
43
+ // ─── Helpers ───
44
+
45
+ function escapeRegExp(str: string): string {
46
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
47
+ }
48
+
49
+ // ─── Canonical Registry ───
50
+
51
+ /**
52
+ * Build a map of Entity.attribute → canonical numeric values from
53
+ * 02-domain-model YAML blocks.
54
+ */
55
+ function buildCanonicalNumericRegistry(
56
+ canonicalFile: FileSectionInput[number],
57
+ ): Map<string, number[]> {
58
+ const registry: Map<string, number[]> = new Map();
59
+
60
+ for (const sectionsForModule of canonicalFile.sectionEvents) {
61
+ for (const sectionEvent of sectionsForModule) {
62
+ for (const section of sectionEvent.sectionSections) {
63
+ const yamlMatches = section.content.matchAll(/```yaml\n([\s\S]*?)```/g);
64
+ for (const match of yamlMatches) {
65
+ const yamlContent = match[1] ?? "";
66
+ try {
67
+ const parsed = YAML.parse(yamlContent);
68
+ if (
69
+ !parsed ||
70
+ typeof parsed !== "object" ||
71
+ typeof parsed.entity !== "string" ||
72
+ !Array.isArray(parsed.attributes)
73
+ )
74
+ continue;
75
+
76
+ for (const attr of parsed.attributes) {
77
+ if (!attr || typeof attr.name !== "string") continue;
78
+ const constraintStr = String(attr.constraints ?? "");
79
+ const numbers = extractAllNumbers(constraintStr);
80
+ if (numbers.length === 0) continue;
81
+ const key = `${parsed.entity}.${attr.name}`;
82
+ registry.set(key, numbers);
83
+ }
84
+ } catch {
85
+ // skip parse errors
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
91
+
92
+ return registry;
93
+ }
94
+
95
+ /**
96
+ * Build a reverse index: attribute name → list of Entity.attribute keys. e.g.,
97
+ * "bio" → ["User.bio"], "title" → ["Article.title", "Todo.title"]
98
+ */
99
+ function buildAttributeNameIndex(
100
+ registry: Map<string, number[]>,
101
+ ): Map<string, string[]> {
102
+ const index: Map<string, string[]> = new Map();
103
+ for (const key of registry.keys()) {
104
+ const dotIdx = key.indexOf(".");
105
+ if (dotIdx < 0) continue;
106
+ const attrName = key.slice(dotIdx + 1);
107
+ if (!index.has(attrName)) index.set(attrName, []);
108
+ index.get(attrName)!.push(key);
109
+ }
110
+ return index;
111
+ }
112
+
113
+ /**
114
+ * Extract all integer numbers from a constraint string. "1-50, required" → [1,
115
+ * 50] "optional, maximum 2000 characters, may be null" → [2000]
116
+ */
117
+ function extractAllNumbers(value: string): number[] {
118
+ const nums: Set<number> = new Set();
119
+ const matches = value.matchAll(/\d+/g);
120
+ for (const m of matches) {
121
+ const n = parseInt(m[0], 10);
122
+ if (!isNaN(n)) nums.add(n);
123
+ }
124
+ return [...nums];
125
+ }
126
+
127
+ // ─── Prose Constraint Extraction (Value-Driven) ───
128
+
129
+ interface IProseMention {
130
+ entityAttr: string;
131
+ numbers: number[];
132
+ context: string;
133
+ }
134
+
135
+ /**
136
+ * Value-driven prose constraint extraction.
137
+ *
138
+ * Instead of finding backtick references first, this approach:
139
+ *
140
+ * 1. Finds lines with numeric constraint patterns ("N characters", etc.)
141
+ * 2. Checks if any canonical attribute name appears on that line
142
+ * 3. Compares the numbers against canonical values
143
+ *
144
+ * This catches all patterns regardless of backtick usage:
145
+ *
146
+ * - `User.bio`: 0-300 characters
147
+ * - `bio` (0-500 chars)
148
+ * - Bio text limited to 300 characters
149
+ * - | bio | 0-300 chars |
150
+ */
151
+ function extractProseConstraintMentions(
152
+ proseContent: string,
153
+ attrNameIndex: Map<string, string[]>,
154
+ registry: Map<string, number[]>,
155
+ ): IProseMention[] {
156
+ const results: IProseMention[] = [];
157
+ const lines = proseContent.split("\n");
158
+
159
+ for (const line of lines) {
160
+ // Step 1: Extract constraint-like numbers from this line
161
+ const numbers = extractConstraintNumbers(line);
162
+ if (numbers.length === 0) continue;
163
+
164
+ // Step 2: Check if any canonical attribute name appears on this line
165
+ for (const [attrName, entityAttrs] of attrNameIndex) {
166
+ const attrPattern = new RegExp(`\\b${escapeRegExp(attrName)}\\b`, "i");
167
+ if (!attrPattern.test(line)) continue;
168
+
169
+ // Step 3: Union all canonical values for all possible Entity.attr matches
170
+ const allCanonical: Set<number> = new Set();
171
+ for (const ea of entityAttrs) {
172
+ const vals = registry.get(ea);
173
+ if (vals) for (const v of vals) allCanonical.add(v);
174
+ }
175
+
176
+ // Step 4: Find numbers that don't match any canonical value
177
+ const conflicting = numbers.filter(
178
+ (n) => !allCanonical.has(n) && n !== 0,
179
+ );
180
+ if (conflicting.length === 0) continue;
181
+
182
+ results.push({
183
+ entityAttr: entityAttrs[0]!,
184
+ numbers,
185
+ context: line.trim().slice(0, 200),
186
+ });
187
+ }
188
+ }
189
+
190
+ // Deduplicate: same entityAttr + same numbers → keep first
191
+ const seen: Map<string, IProseMention> = new Map();
192
+ for (const mention of results) {
193
+ const key = `${mention.entityAttr}:${mention.numbers.sort((a, b) => a - b).join(",")}`;
194
+ if (!seen.has(key)) seen.set(key, mention);
195
+ }
196
+
197
+ return [...seen.values()];
198
+ }
199
+
200
+ /**
201
+ * Extract numbers from constraint-like patterns in text. Only extracts numbers
202
+ * that appear in constraint context (near "characters", etc.).
203
+ */
204
+ function extractConstraintNumbers(text: string): number[] {
205
+ const numbers: Set<number> = new Set();
206
+
207
+ for (const pattern of NUMERIC_PATTERNS) {
208
+ pattern.lastIndex = 0;
209
+ const matches = text.matchAll(pattern);
210
+ for (const m of matches) {
211
+ if (m[1]) {
212
+ const n = parseInt(m[1], 10);
213
+ if (!isNaN(n)) numbers.add(n);
214
+ }
215
+ if (m[2]) {
216
+ const n = parseInt(m[2], 10);
217
+ if (!isNaN(n)) numbers.add(n);
218
+ }
219
+ }
220
+ }
221
+
222
+ return [...numbers];
223
+ }
224
+
225
+ // ─── Main Detection ───
226
+
227
+ /**
228
+ * Detect prose-level constraint value conflicts between non-canonical files and
229
+ * the canonical 02-domain-model.
230
+ *
231
+ * Uses a value-driven approach: builds a reverse index of canonical attribute
232
+ * names, then scans prose text for those names near numeric constraint
233
+ * patterns. Catches all patterns regardless of backtick usage.
234
+ */
235
+ export const detectProseConstraintConflicts = (props: {
236
+ files: FileSectionInput;
237
+ }): IProseConstraintConflict[] => {
238
+ // Find canonical file (02-domain-model.md)
239
+ const canonicalFile = props.files.find(
240
+ (f) => f.file.filename === CANONICAL_FILENAME,
241
+ );
242
+ if (!canonicalFile) return [];
243
+
244
+ const registry = buildCanonicalNumericRegistry(canonicalFile);
245
+ if (registry.size === 0) return [];
246
+
247
+ const attrNameIndex = buildAttributeNameIndex(registry);
248
+
249
+ const conflicts: IProseConstraintConflict[] = [];
250
+
251
+ for (const { file, sectionEvents } of props.files) {
252
+ // Skip canonical file itself
253
+ if (file.filename === CANONICAL_FILENAME) continue;
254
+
255
+ for (const sectionsForModule of sectionEvents) {
256
+ for (const sectionEvent of sectionsForModule) {
257
+ for (const section of sectionEvent.sectionSections) {
258
+ // Strip YAML code blocks — those are handled by existing validators
259
+ const proseContent = section.content.replace(
260
+ YAML_CODE_BLOCK_REGEX,
261
+ "",
262
+ );
263
+
264
+ const mentions = extractProseConstraintMentions(
265
+ proseContent,
266
+ attrNameIndex,
267
+ registry,
268
+ );
269
+
270
+ for (const mention of mentions) {
271
+ const canonicalValues = registry.get(mention.entityAttr);
272
+ if (!canonicalValues) continue;
273
+
274
+ // Check if prose values conflict with canonical
275
+ const conflictingValues = mention.numbers.filter(
276
+ (n) => !canonicalValues.includes(n) && n !== 0,
277
+ );
278
+
279
+ if (conflictingValues.length === 0) continue;
280
+
281
+ conflicts.push({
282
+ entityAttr: mention.entityAttr,
283
+ canonicalValues,
284
+ proseValues: mention.numbers,
285
+ file: file.filename,
286
+ sectionTitle: section.title,
287
+ context: mention.context,
288
+ });
289
+ }
290
+ }
291
+ }
292
+ }
293
+ }
294
+
295
+ return conflicts;
296
+ };
297
+
298
+ /**
299
+ * Build a map from filename → list of prose conflict feedback strings. Only
300
+ * non-canonical files appear in the map.
301
+ */
302
+ export const buildFileProseConflictMap = (
303
+ conflicts: IProseConstraintConflict[],
304
+ ): Map<string, string[]> => {
305
+ const map: Map<string, string[]> = new Map();
306
+
307
+ for (const conflict of conflicts) {
308
+ const feedback =
309
+ `Prose constraint conflict: ${conflict.entityAttr} — ` +
310
+ `canonical values [${conflict.canonicalValues.join(", ")}] (from ${CANONICAL_FILENAME}) vs ` +
311
+ `prose values [${conflict.proseValues.join(", ")}] in "${conflict.sectionTitle}". ` +
312
+ `Remove the restated value and use a backtick reference to ${CANONICAL_FILENAME} instead.`;
313
+
314
+ if (!map.has(conflict.file)) map.set(conflict.file, []);
315
+ map.get(conflict.file)!.push(feedback);
316
+ }
317
+
318
+ return map;
319
+ };