@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,742 +1,742 @@
1
- import {
2
- IAgenticaHistoryJson,
3
- IMicroAgenticaHistoryJson,
4
- } from "@agentica/core";
5
- import {
6
- AutoBeAnalyzeHistory,
7
- AutoBeDatabase,
8
- AutoBeEventSource,
9
- AutoBeOpenApi,
10
- AutoBePreliminaryKind,
11
- AutoBeRealizeCollectorFunction,
12
- AutoBeRealizeTransformerFunction,
13
- } from "@autobe/interface";
14
- import {
15
- AutoBeOpenApiEndpointComparator,
16
- StringUtil,
17
- writePrismaApplication,
18
- } from "@autobe/utils";
19
- import { HashSet } from "tstl";
20
- import { v7 } from "uuid";
21
-
22
- import { AutoBeConfigConstant } from "../../../constants/AutoBeConfigConstant";
23
- import { AutoBeSystemPromptConstant } from "../../../constants/AutoBeSystemPromptConstant";
24
- import { AutoBeState } from "../../../context/AutoBeState";
25
- import { AutoBeInterfaceSchemaProgrammer } from "../../interface/programmers/AutoBeInterfaceSchemaProgrammer";
26
- import { AutoBePreliminaryController } from "../AutoBePreliminaryController";
27
- import { IAutoBePreliminaryRequest } from "../structures/AutoBePreliminaryRequest";
28
- import { IAnalysisSectionEntry } from "../structures/IAnalysisSectionEntry";
29
- import { IAutoBePreliminaryCollection } from "../structures/IAutoBePreliminaryCollection";
30
-
31
- export const transformPreliminaryHistory = <Kind extends AutoBePreliminaryKind>(
32
- preliminary: AutoBePreliminaryController<Kind>,
33
- ): IMicroAgenticaHistoryJson[] => {
34
- const histories: IMicroAgenticaHistoryJson[] = preliminary
35
- .getKinds()
36
- .map((key): IMicroAgenticaHistoryJson[] => {
37
- const newKey: string = key.startsWith("previous")
38
- ? key.replace("previous", "")
39
- : key;
40
- const type: Exclude<AutoBePreliminaryKind, `previous${string}`> = (newKey
41
- .slice(0, 1)
42
- .toLowerCase() + newKey.slice(1)) as Exclude<
43
- AutoBePreliminaryKind,
44
- `previous${string}`
45
- >;
46
- return PreliminaryTransformer[type]({
47
- source: preliminary.getSource(),
48
- state: preliminary.getState(),
49
- all: preliminary.getAll() as IAutoBePreliminaryCollection,
50
- local: preliminary.getLocal() as IAutoBePreliminaryCollection,
51
- // biome-ignore lint: intended
52
- config: preliminary.getConfig() as any,
53
- previous: key.startsWith("previous"),
54
- analysisPageOffset: preliminary.getAnalysisPageOffset(),
55
- });
56
- })
57
- .flat();
58
- const systems = histories.filter((h) => h.type === "systemMessage");
59
- const others = histories.filter((h) => h.type !== "systemMessage");
60
- return [...systems, ...others];
61
- };
62
-
63
- namespace PreliminaryTransformer {
64
- export interface IProps<Kind extends AutoBePreliminaryKind> {
65
- source: Exclude<AutoBeEventSource, "facade" | "preliminary">;
66
- state: AutoBeState;
67
- all: Pick<IAutoBePreliminaryCollection, Kind>;
68
- local: Pick<IAutoBePreliminaryCollection, Kind>;
69
- config: AutoBePreliminaryController.IConfig<Kind>;
70
- previous: boolean;
71
- analysisPageOffset: number;
72
- }
73
-
74
- export const analysisSections = (
75
- props: IProps<"analysisSections" | "previousAnalysisSections">,
76
- ): IMicroAgenticaHistoryJson[] => {
77
- const kind: "analysisSections" | "previousAnalysisSections" = props.previous
78
- ? "previousAnalysisSections"
79
- : "analysisSections";
80
- const oldbie: Map<number, IAnalysisSectionEntry> = new Map(
81
- props.local[kind]
82
- .map((s) => [s.id, s] as const)
83
- .sort(([a], [b]) => a - b),
84
- );
85
- const newbie: IAnalysisSectionEntry[] = props.all[kind]
86
- .filter((s) => oldbie.has(s.id) === false)
87
- .sort((a, b) => a.id - b.id);
88
-
89
- const analyze: AutoBeAnalyzeHistory | null = props.previous
90
- ? props.state.previousAnalyze
91
- : props.state.analyze;
92
- const assistant: IAgenticaHistoryJson.IAssistantMessage =
93
- createAssistantMessage({
94
- prompt:
95
- AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION_LOADED.replace(
96
- "{{PREFIX}}",
97
- analyze?.prefix ?? "",
98
- ).replace(
99
- "{{ACTORS}}",
100
- analyze?.actors ? toJsonBlock(analyze.actors) : "",
101
- ),
102
- previous:
103
- AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION_PREVIOUS,
104
- content: Array.from(oldbie.values())
105
- .map(
106
- (s) =>
107
- `### [ID: ${s.id}] ${s.filename} > ${s.unitTitle} > ${s.sectionTitle}\n\n${s.content}`,
108
- )
109
- .join("\n\n---\n\n"),
110
- replace: props.previous
111
- ? { from: "getAnalysisSections", to: "getPreviousAnalysisSections" }
112
- : null,
113
- });
114
- const pageSize: number = AutoBeConfigConstant.ANALYSIS_PAGE_SIZE;
115
- const pageStart: number = props.analysisPageOffset;
116
- const page: IAnalysisSectionEntry[] = newbie.slice(
117
- pageStart,
118
- pageStart + pageSize,
119
- );
120
- const totalAvailable: number = newbie.length;
121
- const paginationNote: string =
122
- totalAvailable > pageStart + pageSize
123
- ? `\n\n(Showing ${page.length} of ${totalAvailable} available sections, starting from offset ${pageStart}. More sections will appear after you request some of the above.)`
124
- : "";
125
- const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
126
- prompt: AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION,
127
- previous:
128
- AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION_PREVIOUS,
129
- available: formatCompactSectionIndex(page) + paginationNote,
130
- loaded: Array.from(oldbie.values())
131
- .map((s) => `- [${s.id}] ${s.sectionTitle}`)
132
- .join("\n"),
133
- exhausted:
134
- page.length === 0
135
- ? AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION_EXHAUSTED
136
- : "",
137
- replace: props.previous
138
- ? {
139
- from: "getAnalysisSections",
140
- to: "getPreviousAnalysisSections",
141
- }
142
- : null,
143
- });
144
- return props.local[kind].length === 0
145
- ? [assistant, system]
146
- : [
147
- createFunctionCallingMessage({
148
- controller: props.source,
149
- kind,
150
- arguments: {
151
- thinking: "analysis sections for detailed requirements' analyses",
152
- request: {
153
- type: props.previous
154
- ? "getPreviousAnalysisSections"
155
- : "getAnalysisSections",
156
- sectionIds: props.local[kind].map((s) => s.id),
157
- },
158
- },
159
- }),
160
- assistant,
161
- system,
162
- ];
163
- };
164
-
165
- export const databaseSchemas = (
166
- props: IProps<"databaseSchemas" | "previousDatabaseSchemas">,
167
- ): IMicroAgenticaHistoryJson[] => {
168
- const kind: "databaseSchemas" | "previousDatabaseSchemas" = props.previous
169
- ? "previousDatabaseSchemas"
170
- : "databaseSchemas";
171
- const oldbie: Record<string, AutoBeDatabase.IModel> = Object.fromEntries(
172
- props.local[kind]
173
- .map((s) => [s.name, s] as const)
174
- .sort(([a], [b]) => a.localeCompare(b)),
175
- );
176
- const newbie: AutoBeDatabase.IModel[] = props.all[kind]
177
- .filter((s) => oldbie[s.name] === undefined)
178
- .sort((a, b) => a.name.localeCompare(b.name));
179
-
180
- const assistant: IAgenticaHistoryJson.IAssistantMessage =
181
- createAssistantMessage({
182
- prompt: AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA_LOADED,
183
- previous:
184
- AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA_PREVIOUS,
185
- content:
186
- props.config.database === "ast"
187
- ? StringUtil.trim`
188
- ## Database AST Data
189
-
190
- ${toJsonBlock(oldbie)}
191
- `
192
- : StringUtil.trim`
193
- ## Database Schema Files
194
-
195
- \`\`\`prisma
196
- ${
197
- writePrismaApplication({
198
- dbms: "postgres",
199
- application: {
200
- files: [
201
- {
202
- filename: "all.prisma",
203
- namespace: "All",
204
- models: Object.values(oldbie),
205
- },
206
- ],
207
- },
208
- })["all.prisma"]
209
- }
210
- \`\`\
211
- `,
212
- replace: props.previous
213
- ? {
214
- from: "getDatabaseSchemas",
215
- to: "getPreviousDatabaseSchemas",
216
- }
217
- : null,
218
- });
219
- if (props.config.databaseProperty === true)
220
- assistant.text +=
221
- "\n\n" +
222
- StringUtil.trim`
223
- ### Database Schema Properties
224
-
225
- \`\`\`json
226
- ${JSON.stringify(
227
- Object.fromEntries(
228
- Object.entries(oldbie).map(([k, v]) => [
229
- k,
230
- AutoBeInterfaceSchemaProgrammer.getDatabaseSchemaProperties({
231
- everyModels: props.all.databaseSchemas,
232
- model: v,
233
- }).map((p) => p.key),
234
- ]),
235
- ),
236
- )}
237
- \`\`\`
238
- `;
239
-
240
- const db: AutoBeDatabase.IApplication | undefined = props.previous
241
- ? props.state.previousDatabase?.result.data
242
- : props.state.database?.result.data;
243
- const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
244
- prompt: AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA,
245
- previous: AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA_PREVIOUS,
246
- available: StringUtil.trim`
247
- Name | Belonged Group | Stance | Summary
248
- -----|----------------|--------|---------
249
- ${newbie
250
- .map((m) =>
251
- [
252
- m.name,
253
- db?.files.find((f) => f.models.some((md) => md.name === m.name))
254
- ?.namespace ?? "-",
255
- m.stance,
256
- StringUtil.summary(m.description),
257
- ].join(" | "),
258
- )
259
- .join("\n")}
260
- `,
261
- loaded: props.local[kind].map((s) => `- ${s.name}`).join("\n"),
262
- exhausted:
263
- newbie.length === 0
264
- ? AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA_EXHAUSTED
265
- : "",
266
- replace: props.previous
267
- ? {
268
- from: "getDatabaseSchemas",
269
- to: "getPreviousDatabaseSchemas",
270
- }
271
- : null,
272
- });
273
- return props.local[kind].length === 0
274
- ? [assistant, system]
275
- : [
276
- createFunctionCallingMessage({
277
- controller: props.source,
278
- kind,
279
- arguments: {
280
- thinking: "database schemas for DB schema information",
281
- request: {
282
- type: props.previous
283
- ? "getPreviousDatabaseSchemas"
284
- : "getDatabaseSchemas",
285
- schemaNames: props.local[kind].map((s) => s.name),
286
- },
287
- },
288
- }),
289
- assistant,
290
- system,
291
- ];
292
- };
293
-
294
- export const interfaceOperations = (
295
- props: IProps<"interfaceOperations" | "previousInterfaceOperations">,
296
- ): IMicroAgenticaHistoryJson[] => {
297
- const kind: "interfaceOperations" | "previousInterfaceOperations" =
298
- props.previous ? "previousInterfaceOperations" : "interfaceOperations";
299
- const oldbie: HashSet<AutoBeOpenApi.IEndpoint> = new HashSet(
300
- props.local[kind]
301
- .map((o) => ({
302
- method: o.method,
303
- path: o.path,
304
- }))
305
- .sort(AutoBeOpenApiEndpointComparator.compare),
306
- AutoBeOpenApiEndpointComparator.hashCode,
307
- AutoBeOpenApiEndpointComparator.equals,
308
- );
309
- const newbie: AutoBeOpenApi.IOperation[] = props.all[kind]
310
- .filter(
311
- (o) =>
312
- oldbie.has({
313
- method: o.method,
314
- path: o.path,
315
- }) === false,
316
- )
317
- .sort(AutoBeOpenApiEndpointComparator.compare);
318
-
319
- const assistant: IAgenticaHistoryJson.IAssistantMessage =
320
- createAssistantMessage({
321
- prompt:
322
- AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION_LOADED,
323
- previous:
324
- AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION_PREVIOUS,
325
- content: toJsonBlock(props.local[kind]),
326
- replace: props.previous
327
- ? {
328
- from: "getInterfaceOperations",
329
- to: "getPreviousInterfaceOperations",
330
- }
331
- : null,
332
- });
333
- const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
334
- prompt: AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION,
335
- previous:
336
- AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION_PREVIOUS,
337
- available: StringUtil.trim`
338
- Method | Path | Actor? | Authorization? | Summary
339
- -------|------|--------|----------------|---------
340
- ${newbie
341
- .map((o) =>
342
- [
343
- o.method,
344
- o.path,
345
- o.authorizationActor ?? "-",
346
- o.authorizationType ?? "-",
347
- StringUtil.summary(o.description),
348
- ].join(" | "),
349
- )
350
- .join("\n")}
351
- `,
352
- loaded: StringUtil.trim`
353
- Method | Path
354
- -------|-------
355
- ${oldbie
356
- .toJSON()
357
- .map((e) => [e.method, e.path].join(" | "))
358
- .join("\n")}
359
- `,
360
- exhausted:
361
- newbie.length === 0
362
- ? AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION_EXHAUSTED
363
- : "",
364
- replace: props.previous
365
- ? {
366
- from: "getInterfaceOperations",
367
- to: "getPreviousInterfaceOperations",
368
- }
369
- : null,
370
- });
371
- return props.local[kind].length === 0
372
- ? [assistant, system]
373
- : [
374
- createFunctionCallingMessage({
375
- controller: props.source,
376
- kind,
377
- arguments: {
378
- thinking:
379
- "interface operations for detailed endpoint information",
380
- request: {
381
- type: props.previous
382
- ? "getPreviousInterfaceOperations"
383
- : "getInterfaceOperations",
384
- endpoints: oldbie.toJSON(),
385
- },
386
- },
387
- }),
388
- assistant,
389
- system,
390
- ];
391
- };
392
-
393
- export const interfaceSchemas = (
394
- props: IProps<"interfaceSchemas" | "previousInterfaceSchemas">,
395
- ): IMicroAgenticaHistoryJson[] => {
396
- const kind: "interfaceSchemas" | "previousInterfaceSchemas" = props.previous
397
- ? "previousInterfaceSchemas"
398
- : "interfaceSchemas";
399
- const newbie: Record<string, AutoBeOpenApi.IJsonSchemaDescriptive> = {};
400
- for (const [k, v] of Object.entries(props.all[kind]).sort(([a], [b]) =>
401
- a.localeCompare(b),
402
- ))
403
- if (props.local[kind][k] === undefined) newbie[k] = v;
404
-
405
- const assistant: IAgenticaHistoryJson.IAssistantMessage =
406
- createAssistantMessage({
407
- prompt: AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA_LOADED,
408
- previous:
409
- AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA_PREVIOUS,
410
- content: toJsonBlock(props.local[kind]),
411
- replace: props.previous
412
- ? {
413
- from: "getInterfaceSchemas",
414
- to: "getPreviousInterfaceSchemas",
415
- }
416
- : null,
417
- });
418
- const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
419
- prompt: AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA,
420
- previous:
421
- AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA_PREVIOUS,
422
- available: StringUtil.trim`
423
- Name | Summary
424
- -----|---------
425
- ${Object.entries(newbie)
426
- .map(([name, schema]) =>
427
- [name, StringUtil.summary(schema.description)].join(" | "),
428
- )
429
- .join("\n")}
430
- `,
431
- loaded: Object.keys(props.local[kind])
432
- .sort()
433
- .map((k) => `- ${k}`)
434
- .join("\n"),
435
- exhausted:
436
- Object.keys(newbie).length === 0
437
- ? AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA_EXHAUSTED
438
- : "",
439
- replace: props.previous
440
- ? {
441
- from: "getInterfaceSchemas",
442
- to: "getPreviousInterfaceSchemas",
443
- }
444
- : null,
445
- });
446
- return Object.keys(props.local[kind]).length === 0
447
- ? [assistant, system]
448
- : [
449
- createFunctionCallingMessage({
450
- controller: props.source,
451
- kind,
452
- arguments: {
453
- thinking: "interface schemas for detailed schema information",
454
- request: {
455
- type: props.previous
456
- ? "getPreviousInterfaceSchemas"
457
- : "getInterfaceSchemas",
458
- typeNames: Object.keys(props.local[kind]),
459
- },
460
- },
461
- }),
462
- assistant,
463
- system,
464
- ];
465
- };
466
-
467
- export const realizeCollectors = (
468
- props: IProps<"realizeCollectors">,
469
- ): IMicroAgenticaHistoryJson[] => {
470
- const oldbie: Record<string, AutoBeRealizeCollectorFunction> =
471
- Object.fromEntries(
472
- props.local.realizeCollectors
473
- .map((c) => [c.plan.dtoTypeName, c] as const)
474
- .sort(([a], [b]) => a.localeCompare(b)),
475
- );
476
- const newbie: AutoBeRealizeCollectorFunction[] = props.all.realizeCollectors
477
- .filter((c) => oldbie[c.plan.dtoTypeName] === undefined)
478
- .sort((a, b) => a.plan.dtoTypeName.localeCompare(b.plan.dtoTypeName));
479
-
480
- const assistant: IAgenticaHistoryJson.IAssistantMessage =
481
- createAssistantMessage({
482
- prompt: AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_COLLECTOR_LOADED,
483
- content: toJsonBlock(oldbie),
484
- replace: null,
485
- previous: null,
486
- });
487
- const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
488
- prompt: AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_COLLECTOR,
489
- available: StringUtil.trim`
490
- DTO Type Name | Database Table | References | Neighbor Collectors
491
- --------------|----------------|------------|--------------------
492
- ${newbie
493
- .map((c) =>
494
- [
495
- c.plan.dtoTypeName,
496
- c.plan.databaseSchemaName,
497
- c.plan.references.length > 0
498
- ? `(${c.plan.references.map((r) => r.source).join(", ")})`
499
- : "-",
500
- `(${c.neighbors.join(", ")})`,
501
- ].join(" | "),
502
- )
503
- .join("\n")}
504
- `,
505
- loaded: props.local.realizeCollectors
506
- .map((c) => `- ${c.plan.dtoTypeName}`)
507
- .join("\n"),
508
- exhausted:
509
- newbie.length === 0
510
- ? AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_COLLECTOR_EXHAUSTED
511
- : "",
512
- replace: null,
513
- previous: null,
514
- });
515
- return props.local.realizeCollectors.length === 0
516
- ? [assistant, system]
517
- : [
518
- createFunctionCallingMessage({
519
- controller: props.source,
520
- kind: "realizeCollectors",
521
- arguments: {
522
- thinking: "realize collectors for Create DTO transformation",
523
- request: {
524
- type: "getRealizeCollectors",
525
- dtoTypeNames: props.local.realizeCollectors.map(
526
- (c) => c.plan.dtoTypeName,
527
- ),
528
- },
529
- },
530
- }),
531
- assistant,
532
- system,
533
- ];
534
- };
535
-
536
- export const realizeTransformers = (
537
- props: IProps<"realizeTransformers">,
538
- ): IMicroAgenticaHistoryJson[] => {
539
- const oldbie: Record<string, AutoBeRealizeTransformerFunction> =
540
- Object.fromEntries(
541
- props.local.realizeTransformers
542
- .map((t) => [t.plan.dtoTypeName, t] as const)
543
- .sort(([a], [b]) => a.localeCompare(b)),
544
- );
545
- const newbie: AutoBeRealizeTransformerFunction[] =
546
- props.all.realizeTransformers
547
- .filter((t) => oldbie[t.plan.dtoTypeName] === undefined)
548
- .sort((a, b) => a.plan.dtoTypeName.localeCompare(b.plan.dtoTypeName));
549
-
550
- const assistant: IAgenticaHistoryJson.IAssistantMessage =
551
- createAssistantMessage({
552
- prompt:
553
- AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_TRANSFORMER_LOADED,
554
- content: toJsonBlock(oldbie),
555
- replace: null,
556
- previous: null,
557
- });
558
- const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
559
- prompt: AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_TRANSFORMER,
560
- available: StringUtil.trim`
561
- DTO Type Name | Database Table | Neighbor Transformers
562
- --------------|----------------|----------------------
563
- ${newbie
564
- .map((t) =>
565
- [
566
- t.plan.dtoTypeName,
567
- t.plan.databaseSchemaName,
568
- `(${t.neighbors.join(", ")})`,
569
- ].join(" | "),
570
- )
571
- .join("\n")}
572
- `,
573
- loaded: props.local.realizeTransformers
574
- .map((t) => `- ${t.plan.dtoTypeName}`)
575
- .join("\n"),
576
- exhausted:
577
- newbie.length === 0
578
- ? AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_TRANSFORMER_EXHAUSTED
579
- : "",
580
- replace: null,
581
- previous: null,
582
- });
583
- return props.local.realizeTransformers.length === 0
584
- ? [assistant, system]
585
- : [
586
- createFunctionCallingMessage({
587
- controller: props.source,
588
- kind: "realizeTransformers",
589
- arguments: {
590
- thinking: "realize transformers for response DTO construction",
591
- request: {
592
- type: "getRealizeTransformers",
593
- dtoTypeNames: props.local.realizeTransformers.map(
594
- (t) => t.plan.dtoTypeName,
595
- ),
596
- },
597
- },
598
- }),
599
- assistant,
600
- system,
601
- ];
602
- };
603
- }
604
-
605
- interface IPromptReplace {
606
- from: Exclude<
607
- // biome-ignore lint: intended
608
- IAutoBePreliminaryRequest<any>["request"]["type"],
609
- `getPrevious${string}`
610
- >;
611
- to: Extract<
612
- // biome-ignore lint: intended
613
- IAutoBePreliminaryRequest<any>["request"]["type"],
614
- `getPrevious${string}`
615
- >;
616
- }
617
-
618
- const createAssistantMessage = (props: {
619
- prompt: string;
620
- content: string;
621
- replace: IPromptReplace | null;
622
- previous: string | null;
623
- }): IAgenticaHistoryJson.IAssistantMessage => {
624
- let text = props.prompt
625
- .replaceAll("{{CONTENT}}", props.content)
626
- .replaceAll(
627
- "{{PREVIOUS}}",
628
- props.replace !== null && props.previous !== null ? props.previous : "",
629
- );
630
- if (props.replace !== null)
631
- text = text.replaceAll(props.replace.from, props.replace.to);
632
- return {
633
- id: v7(),
634
- type: "assistantMessage",
635
- text,
636
- created_at: new Date().toISOString(),
637
- };
638
- };
639
-
640
- const createSystemMessage = (props: {
641
- prompt: string;
642
- available: string;
643
- loaded: string;
644
- exhausted: string;
645
- replace: IPromptReplace | null;
646
- previous: string | null;
647
- }): IAgenticaHistoryJson.ISystemMessage => {
648
- let text = props.prompt
649
- .replaceAll("{{AVAILABLE}}", props.available)
650
- .replaceAll("{{LOADED}}", props.loaded)
651
- .replaceAll("{{EXHAUSTED}}", props.exhausted)
652
- .replaceAll(
653
- "{{PREVIOUS}}",
654
- props.replace !== null && props.previous !== null ? props.previous : "",
655
- );
656
- if (props.replace !== null)
657
- text = text.replaceAll(props.replace.from, props.replace.to);
658
- return {
659
- id: v7(),
660
- type: "systemMessage",
661
- text,
662
- created_at: new Date().toISOString(),
663
- };
664
- };
665
-
666
- const toJsonBlock = (obj: unknown): string =>
667
- StringUtil.trim`
668
- \`\`\`json
669
- ${JSON.stringify(obj)}
670
- \`\`\`
671
- `;
672
-
673
- const formatCompactSectionIndex = (
674
- sections: IAnalysisSectionEntry[],
675
- ): string => {
676
- let result = "";
677
- let lastFile = "";
678
- let lastUnit = "";
679
- let unitSections: string[] = [];
680
- const flushUnit = () => {
681
- if (unitSections.length > 0) {
682
- result += " " + lastUnit + ": " + unitSections.join(", ") + "\n";
683
- unitSections = [];
684
- }
685
- };
686
- for (const s of sections) {
687
- if (s.filename !== lastFile) {
688
- flushUnit();
689
- result += "\n[" + s.filename + "]\n";
690
- lastFile = s.filename;
691
- lastUnit = "";
692
- }
693
- if (s.unitTitle !== lastUnit) {
694
- flushUnit();
695
- lastUnit = s.unitTitle;
696
- }
697
- unitSections.push(s.id + "." + s.sectionTitle);
698
- }
699
- flushUnit();
700
- return result.trim();
701
- };
702
-
703
- // experimenting between assistantMessage and execute types
704
- const createFunctionCallingMessage = <
705
- Kind extends AutoBePreliminaryKind,
706
- >(props: {
707
- controller: Exclude<AutoBeEventSource, "facade" | "preliminary">;
708
- kind: Kind;
709
- arguments: IAutoBePreliminaryRequest<Kind>;
710
- }): IAgenticaHistoryJson.IAssistantMessage | IAgenticaHistoryJson.IExecute => ({
711
- type: "execute",
712
- id: v7(),
713
- operation: {
714
- protocol: "class",
715
- controller: props.controller,
716
- function: "process",
717
- name: "process",
718
- },
719
- // biome-ignore lint: intended
720
- arguments: props.arguments as Record<string, any>,
721
- value: undefined,
722
- success: true,
723
- created_at: new Date().toISOString(),
724
- // type: "assistantMessage",
725
- // id: v7(),
726
- // text: StringUtil.trim`
727
- // # Function Calling History
728
-
729
- // Function "${props.function}()" has been called.
730
-
731
- // Here is the arguments.
732
-
733
- // Note that, never call the same items again.
734
- // As they are loaded onto the memory, you never have to
735
- // request none of them again.
736
-
737
- // \`\`\`json
738
- // ${JSON.stringify(props.argument)}
739
- // \`\`\`
740
- // `,
741
- // created_at: new Date().toISOString(),
742
- });
1
+ import {
2
+ IAgenticaHistoryJson,
3
+ IMicroAgenticaHistoryJson,
4
+ } from "@agentica/core";
5
+ import {
6
+ AutoBeAnalyzeHistory,
7
+ AutoBeDatabase,
8
+ AutoBeEventSource,
9
+ AutoBeOpenApi,
10
+ AutoBePreliminaryKind,
11
+ AutoBeRealizeCollectorFunction,
12
+ AutoBeRealizeTransformerFunction,
13
+ } from "@autobe/interface";
14
+ import {
15
+ AutoBeOpenApiEndpointComparator,
16
+ StringUtil,
17
+ writePrismaApplication,
18
+ } from "@autobe/utils";
19
+ import { HashSet } from "tstl";
20
+ import { v7 } from "uuid";
21
+
22
+ import { AutoBeConfigConstant } from "../../../constants/AutoBeConfigConstant";
23
+ import { AutoBeSystemPromptConstant } from "../../../constants/AutoBeSystemPromptConstant";
24
+ import { AutoBeState } from "../../../context/AutoBeState";
25
+ import { AutoBeInterfaceSchemaProgrammer } from "../../interface/programmers/AutoBeInterfaceSchemaProgrammer";
26
+ import { AutoBePreliminaryController } from "../AutoBePreliminaryController";
27
+ import { IAutoBePreliminaryRequest } from "../structures/AutoBePreliminaryRequest";
28
+ import { IAnalysisSectionEntry } from "../structures/IAnalysisSectionEntry";
29
+ import { IAutoBePreliminaryCollection } from "../structures/IAutoBePreliminaryCollection";
30
+
31
+ export const transformPreliminaryHistory = <Kind extends AutoBePreliminaryKind>(
32
+ preliminary: AutoBePreliminaryController<Kind>,
33
+ ): IMicroAgenticaHistoryJson[] => {
34
+ const histories: IMicroAgenticaHistoryJson[] = preliminary
35
+ .getKinds()
36
+ .map((key): IMicroAgenticaHistoryJson[] => {
37
+ const newKey: string = key.startsWith("previous")
38
+ ? key.replace("previous", "")
39
+ : key;
40
+ const type: Exclude<AutoBePreliminaryKind, `previous${string}`> = (newKey
41
+ .slice(0, 1)
42
+ .toLowerCase() + newKey.slice(1)) as Exclude<
43
+ AutoBePreliminaryKind,
44
+ `previous${string}`
45
+ >;
46
+ return PreliminaryTransformer[type]({
47
+ source: preliminary.getSource(),
48
+ state: preliminary.getState(),
49
+ all: preliminary.getAll() as IAutoBePreliminaryCollection,
50
+ local: preliminary.getLocal() as IAutoBePreliminaryCollection,
51
+ // biome-ignore lint: intended
52
+ config: preliminary.getConfig() as any,
53
+ previous: key.startsWith("previous"),
54
+ analysisPageOffset: preliminary.getAnalysisPageOffset(),
55
+ });
56
+ })
57
+ .flat();
58
+ const systems = histories.filter((h) => h.type === "systemMessage");
59
+ const others = histories.filter((h) => h.type !== "systemMessage");
60
+ return [...systems, ...others];
61
+ };
62
+
63
+ namespace PreliminaryTransformer {
64
+ export interface IProps<Kind extends AutoBePreliminaryKind> {
65
+ source: Exclude<AutoBeEventSource, "facade" | "preliminary">;
66
+ state: AutoBeState;
67
+ all: Pick<IAutoBePreliminaryCollection, Kind>;
68
+ local: Pick<IAutoBePreliminaryCollection, Kind>;
69
+ config: AutoBePreliminaryController.IConfig<Kind>;
70
+ previous: boolean;
71
+ analysisPageOffset: number;
72
+ }
73
+
74
+ export const analysisSections = (
75
+ props: IProps<"analysisSections" | "previousAnalysisSections">,
76
+ ): IMicroAgenticaHistoryJson[] => {
77
+ const kind: "analysisSections" | "previousAnalysisSections" = props.previous
78
+ ? "previousAnalysisSections"
79
+ : "analysisSections";
80
+ const oldbie: Map<number, IAnalysisSectionEntry> = new Map(
81
+ props.local[kind]
82
+ .map((s) => [s.id, s] as const)
83
+ .sort(([a], [b]) => a - b),
84
+ );
85
+ const newbie: IAnalysisSectionEntry[] = props.all[kind]
86
+ .filter((s) => oldbie.has(s.id) === false)
87
+ .sort((a, b) => a.id - b.id);
88
+
89
+ const analyze: AutoBeAnalyzeHistory | null = props.previous
90
+ ? props.state.previousAnalyze
91
+ : props.state.analyze;
92
+ const assistant: IAgenticaHistoryJson.IAssistantMessage =
93
+ createAssistantMessage({
94
+ prompt:
95
+ AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION_LOADED.replace(
96
+ "{{PREFIX}}",
97
+ analyze?.prefix ?? "",
98
+ ).replace(
99
+ "{{ACTORS}}",
100
+ analyze?.actors ? toJsonBlock(analyze.actors) : "",
101
+ ),
102
+ previous:
103
+ AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION_PREVIOUS,
104
+ content: Array.from(oldbie.values())
105
+ .map(
106
+ (s) =>
107
+ `### [ID: ${s.id}] ${s.filename} > ${s.unitTitle} > ${s.sectionTitle}\n\n${s.content}`,
108
+ )
109
+ .join("\n\n---\n\n"),
110
+ replace: props.previous
111
+ ? { from: "getAnalysisSections", to: "getPreviousAnalysisSections" }
112
+ : null,
113
+ });
114
+ const pageSize: number = AutoBeConfigConstant.ANALYSIS_PAGE_SIZE;
115
+ const pageStart: number = props.analysisPageOffset;
116
+ const page: IAnalysisSectionEntry[] = newbie.slice(
117
+ pageStart,
118
+ pageStart + pageSize,
119
+ );
120
+ const totalAvailable: number = newbie.length;
121
+ const paginationNote: string =
122
+ totalAvailable > pageStart + pageSize
123
+ ? `\n\n(Showing ${page.length} of ${totalAvailable} available sections, starting from offset ${pageStart}. More sections will appear after you request some of the above.)`
124
+ : "";
125
+ const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
126
+ prompt: AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION,
127
+ previous:
128
+ AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION_PREVIOUS,
129
+ available: formatCompactSectionIndex(page) + paginationNote,
130
+ loaded: Array.from(oldbie.values())
131
+ .map((s) => `- [${s.id}] ${s.sectionTitle}`)
132
+ .join("\n"),
133
+ exhausted:
134
+ page.length === 0
135
+ ? AutoBeSystemPromptConstant.PRELIMINARY_ANALYSIS_SECTION_EXHAUSTED
136
+ : "",
137
+ replace: props.previous
138
+ ? {
139
+ from: "getAnalysisSections",
140
+ to: "getPreviousAnalysisSections",
141
+ }
142
+ : null,
143
+ });
144
+ return props.local[kind].length === 0
145
+ ? [assistant, system]
146
+ : [
147
+ createFunctionCallingMessage({
148
+ controller: props.source,
149
+ kind,
150
+ arguments: {
151
+ thinking: "analysis sections for detailed requirements' analyses",
152
+ request: {
153
+ type: props.previous
154
+ ? "getPreviousAnalysisSections"
155
+ : "getAnalysisSections",
156
+ sectionIds: props.local[kind].map((s) => s.id),
157
+ },
158
+ },
159
+ }),
160
+ assistant,
161
+ system,
162
+ ];
163
+ };
164
+
165
+ export const databaseSchemas = (
166
+ props: IProps<"databaseSchemas" | "previousDatabaseSchemas">,
167
+ ): IMicroAgenticaHistoryJson[] => {
168
+ const kind: "databaseSchemas" | "previousDatabaseSchemas" = props.previous
169
+ ? "previousDatabaseSchemas"
170
+ : "databaseSchemas";
171
+ const oldbie: Record<string, AutoBeDatabase.IModel> = Object.fromEntries(
172
+ props.local[kind]
173
+ .map((s) => [s.name, s] as const)
174
+ .sort(([a], [b]) => a.localeCompare(b)),
175
+ );
176
+ const newbie: AutoBeDatabase.IModel[] = props.all[kind]
177
+ .filter((s) => oldbie[s.name] === undefined)
178
+ .sort((a, b) => a.name.localeCompare(b.name));
179
+
180
+ const assistant: IAgenticaHistoryJson.IAssistantMessage =
181
+ createAssistantMessage({
182
+ prompt: AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA_LOADED,
183
+ previous:
184
+ AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA_PREVIOUS,
185
+ content:
186
+ props.config.database === "ast"
187
+ ? StringUtil.trim`
188
+ ## Database AST Data
189
+
190
+ ${toJsonBlock(oldbie)}
191
+ `
192
+ : StringUtil.trim`
193
+ ## Database Schema Files
194
+
195
+ \`\`\`prisma
196
+ ${
197
+ writePrismaApplication({
198
+ dbms: "postgres",
199
+ application: {
200
+ files: [
201
+ {
202
+ filename: "all.prisma",
203
+ namespace: "All",
204
+ models: Object.values(oldbie),
205
+ },
206
+ ],
207
+ },
208
+ })["all.prisma"]
209
+ }
210
+ \`\`\
211
+ `,
212
+ replace: props.previous
213
+ ? {
214
+ from: "getDatabaseSchemas",
215
+ to: "getPreviousDatabaseSchemas",
216
+ }
217
+ : null,
218
+ });
219
+ if (props.config.databaseProperty === true)
220
+ assistant.text +=
221
+ "\n\n" +
222
+ StringUtil.trim`
223
+ ### Database Schema Properties
224
+
225
+ \`\`\`json
226
+ ${JSON.stringify(
227
+ Object.fromEntries(
228
+ Object.entries(oldbie).map(([k, v]) => [
229
+ k,
230
+ AutoBeInterfaceSchemaProgrammer.getDatabaseSchemaProperties({
231
+ everyModels: props.all.databaseSchemas,
232
+ model: v,
233
+ }).map((p) => p.key),
234
+ ]),
235
+ ),
236
+ )}
237
+ \`\`\`
238
+ `;
239
+
240
+ const db: AutoBeDatabase.IApplication | undefined = props.previous
241
+ ? props.state.previousDatabase?.result.data
242
+ : props.state.database?.result.data;
243
+ const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
244
+ prompt: AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA,
245
+ previous: AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA_PREVIOUS,
246
+ available: StringUtil.trim`
247
+ Name | Belonged Group | Stance | Summary
248
+ -----|----------------|--------|---------
249
+ ${newbie
250
+ .map((m) =>
251
+ [
252
+ m.name,
253
+ db?.files.find((f) => f.models.some((md) => md.name === m.name))
254
+ ?.namespace ?? "-",
255
+ m.stance,
256
+ StringUtil.summary(m.description),
257
+ ].join(" | "),
258
+ )
259
+ .join("\n")}
260
+ `,
261
+ loaded: props.local[kind].map((s) => `- ${s.name}`).join("\n"),
262
+ exhausted:
263
+ newbie.length === 0
264
+ ? AutoBeSystemPromptConstant.PRELIMINARY_DATABASE_SCHEMA_EXHAUSTED
265
+ : "",
266
+ replace: props.previous
267
+ ? {
268
+ from: "getDatabaseSchemas",
269
+ to: "getPreviousDatabaseSchemas",
270
+ }
271
+ : null,
272
+ });
273
+ return props.local[kind].length === 0
274
+ ? [assistant, system]
275
+ : [
276
+ createFunctionCallingMessage({
277
+ controller: props.source,
278
+ kind,
279
+ arguments: {
280
+ thinking: "database schemas for DB schema information",
281
+ request: {
282
+ type: props.previous
283
+ ? "getPreviousDatabaseSchemas"
284
+ : "getDatabaseSchemas",
285
+ schemaNames: props.local[kind].map((s) => s.name),
286
+ },
287
+ },
288
+ }),
289
+ assistant,
290
+ system,
291
+ ];
292
+ };
293
+
294
+ export const interfaceOperations = (
295
+ props: IProps<"interfaceOperations" | "previousInterfaceOperations">,
296
+ ): IMicroAgenticaHistoryJson[] => {
297
+ const kind: "interfaceOperations" | "previousInterfaceOperations" =
298
+ props.previous ? "previousInterfaceOperations" : "interfaceOperations";
299
+ const oldbie: HashSet<AutoBeOpenApi.IEndpoint> = new HashSet(
300
+ props.local[kind]
301
+ .map((o) => ({
302
+ method: o.method,
303
+ path: o.path,
304
+ }))
305
+ .sort(AutoBeOpenApiEndpointComparator.compare),
306
+ AutoBeOpenApiEndpointComparator.hashCode,
307
+ AutoBeOpenApiEndpointComparator.equals,
308
+ );
309
+ const newbie: AutoBeOpenApi.IOperation[] = props.all[kind]
310
+ .filter(
311
+ (o) =>
312
+ oldbie.has({
313
+ method: o.method,
314
+ path: o.path,
315
+ }) === false,
316
+ )
317
+ .sort(AutoBeOpenApiEndpointComparator.compare);
318
+
319
+ const assistant: IAgenticaHistoryJson.IAssistantMessage =
320
+ createAssistantMessage({
321
+ prompt:
322
+ AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION_LOADED,
323
+ previous:
324
+ AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION_PREVIOUS,
325
+ content: toJsonBlock(props.local[kind]),
326
+ replace: props.previous
327
+ ? {
328
+ from: "getInterfaceOperations",
329
+ to: "getPreviousInterfaceOperations",
330
+ }
331
+ : null,
332
+ });
333
+ const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
334
+ prompt: AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION,
335
+ previous:
336
+ AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION_PREVIOUS,
337
+ available: StringUtil.trim`
338
+ Method | Path | Actor? | Authorization? | Summary
339
+ -------|------|--------|----------------|---------
340
+ ${newbie
341
+ .map((o) =>
342
+ [
343
+ o.method,
344
+ o.path,
345
+ o.authorizationActor ?? "-",
346
+ o.authorizationType ?? "-",
347
+ StringUtil.summary(o.description),
348
+ ].join(" | "),
349
+ )
350
+ .join("\n")}
351
+ `,
352
+ loaded: StringUtil.trim`
353
+ Method | Path
354
+ -------|-------
355
+ ${oldbie
356
+ .toJSON()
357
+ .map((e) => [e.method, e.path].join(" | "))
358
+ .join("\n")}
359
+ `,
360
+ exhausted:
361
+ newbie.length === 0
362
+ ? AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_OPERATION_EXHAUSTED
363
+ : "",
364
+ replace: props.previous
365
+ ? {
366
+ from: "getInterfaceOperations",
367
+ to: "getPreviousInterfaceOperations",
368
+ }
369
+ : null,
370
+ });
371
+ return props.local[kind].length === 0
372
+ ? [assistant, system]
373
+ : [
374
+ createFunctionCallingMessage({
375
+ controller: props.source,
376
+ kind,
377
+ arguments: {
378
+ thinking:
379
+ "interface operations for detailed endpoint information",
380
+ request: {
381
+ type: props.previous
382
+ ? "getPreviousInterfaceOperations"
383
+ : "getInterfaceOperations",
384
+ endpoints: oldbie.toJSON(),
385
+ },
386
+ },
387
+ }),
388
+ assistant,
389
+ system,
390
+ ];
391
+ };
392
+
393
+ export const interfaceSchemas = (
394
+ props: IProps<"interfaceSchemas" | "previousInterfaceSchemas">,
395
+ ): IMicroAgenticaHistoryJson[] => {
396
+ const kind: "interfaceSchemas" | "previousInterfaceSchemas" = props.previous
397
+ ? "previousInterfaceSchemas"
398
+ : "interfaceSchemas";
399
+ const newbie: Record<string, AutoBeOpenApi.IJsonSchemaDescriptive> = {};
400
+ for (const [k, v] of Object.entries(props.all[kind]).sort(([a], [b]) =>
401
+ a.localeCompare(b),
402
+ ))
403
+ if (props.local[kind][k] === undefined) newbie[k] = v;
404
+
405
+ const assistant: IAgenticaHistoryJson.IAssistantMessage =
406
+ createAssistantMessage({
407
+ prompt: AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA_LOADED,
408
+ previous:
409
+ AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA_PREVIOUS,
410
+ content: toJsonBlock(props.local[kind]),
411
+ replace: props.previous
412
+ ? {
413
+ from: "getInterfaceSchemas",
414
+ to: "getPreviousInterfaceSchemas",
415
+ }
416
+ : null,
417
+ });
418
+ const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
419
+ prompt: AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA,
420
+ previous:
421
+ AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA_PREVIOUS,
422
+ available: StringUtil.trim`
423
+ Name | Summary
424
+ -----|---------
425
+ ${Object.entries(newbie)
426
+ .map(([name, schema]) =>
427
+ [name, StringUtil.summary(schema.description)].join(" | "),
428
+ )
429
+ .join("\n")}
430
+ `,
431
+ loaded: Object.keys(props.local[kind])
432
+ .sort()
433
+ .map((k) => `- ${k}`)
434
+ .join("\n"),
435
+ exhausted:
436
+ Object.keys(newbie).length === 0
437
+ ? AutoBeSystemPromptConstant.PRELIMINARY_INTERFACE_SCHEMA_EXHAUSTED
438
+ : "",
439
+ replace: props.previous
440
+ ? {
441
+ from: "getInterfaceSchemas",
442
+ to: "getPreviousInterfaceSchemas",
443
+ }
444
+ : null,
445
+ });
446
+ return Object.keys(props.local[kind]).length === 0
447
+ ? [assistant, system]
448
+ : [
449
+ createFunctionCallingMessage({
450
+ controller: props.source,
451
+ kind,
452
+ arguments: {
453
+ thinking: "interface schemas for detailed schema information",
454
+ request: {
455
+ type: props.previous
456
+ ? "getPreviousInterfaceSchemas"
457
+ : "getInterfaceSchemas",
458
+ typeNames: Object.keys(props.local[kind]),
459
+ },
460
+ },
461
+ }),
462
+ assistant,
463
+ system,
464
+ ];
465
+ };
466
+
467
+ export const realizeCollectors = (
468
+ props: IProps<"realizeCollectors">,
469
+ ): IMicroAgenticaHistoryJson[] => {
470
+ const oldbie: Record<string, AutoBeRealizeCollectorFunction> =
471
+ Object.fromEntries(
472
+ props.local.realizeCollectors
473
+ .map((c) => [c.plan.dtoTypeName, c] as const)
474
+ .sort(([a], [b]) => a.localeCompare(b)),
475
+ );
476
+ const newbie: AutoBeRealizeCollectorFunction[] = props.all.realizeCollectors
477
+ .filter((c) => oldbie[c.plan.dtoTypeName] === undefined)
478
+ .sort((a, b) => a.plan.dtoTypeName.localeCompare(b.plan.dtoTypeName));
479
+
480
+ const assistant: IAgenticaHistoryJson.IAssistantMessage =
481
+ createAssistantMessage({
482
+ prompt: AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_COLLECTOR_LOADED,
483
+ content: toJsonBlock(oldbie),
484
+ replace: null,
485
+ previous: null,
486
+ });
487
+ const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
488
+ prompt: AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_COLLECTOR,
489
+ available: StringUtil.trim`
490
+ DTO Type Name | Database Table | References | Neighbor Collectors
491
+ --------------|----------------|------------|--------------------
492
+ ${newbie
493
+ .map((c) =>
494
+ [
495
+ c.plan.dtoTypeName,
496
+ c.plan.databaseSchemaName,
497
+ c.plan.references.length > 0
498
+ ? `(${c.plan.references.map((r) => r.source).join(", ")})`
499
+ : "-",
500
+ `(${c.neighbors.join(", ")})`,
501
+ ].join(" | "),
502
+ )
503
+ .join("\n")}
504
+ `,
505
+ loaded: props.local.realizeCollectors
506
+ .map((c) => `- ${c.plan.dtoTypeName}`)
507
+ .join("\n"),
508
+ exhausted:
509
+ newbie.length === 0
510
+ ? AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_COLLECTOR_EXHAUSTED
511
+ : "",
512
+ replace: null,
513
+ previous: null,
514
+ });
515
+ return props.local.realizeCollectors.length === 0
516
+ ? [assistant, system]
517
+ : [
518
+ createFunctionCallingMessage({
519
+ controller: props.source,
520
+ kind: "realizeCollectors",
521
+ arguments: {
522
+ thinking: "realize collectors for Create DTO transformation",
523
+ request: {
524
+ type: "getRealizeCollectors",
525
+ dtoTypeNames: props.local.realizeCollectors.map(
526
+ (c) => c.plan.dtoTypeName,
527
+ ),
528
+ },
529
+ },
530
+ }),
531
+ assistant,
532
+ system,
533
+ ];
534
+ };
535
+
536
+ export const realizeTransformers = (
537
+ props: IProps<"realizeTransformers">,
538
+ ): IMicroAgenticaHistoryJson[] => {
539
+ const oldbie: Record<string, AutoBeRealizeTransformerFunction> =
540
+ Object.fromEntries(
541
+ props.local.realizeTransformers
542
+ .map((t) => [t.plan.dtoTypeName, t] as const)
543
+ .sort(([a], [b]) => a.localeCompare(b)),
544
+ );
545
+ const newbie: AutoBeRealizeTransformerFunction[] =
546
+ props.all.realizeTransformers
547
+ .filter((t) => oldbie[t.plan.dtoTypeName] === undefined)
548
+ .sort((a, b) => a.plan.dtoTypeName.localeCompare(b.plan.dtoTypeName));
549
+
550
+ const assistant: IAgenticaHistoryJson.IAssistantMessage =
551
+ createAssistantMessage({
552
+ prompt:
553
+ AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_TRANSFORMER_LOADED,
554
+ content: toJsonBlock(oldbie),
555
+ replace: null,
556
+ previous: null,
557
+ });
558
+ const system: IAgenticaHistoryJson.ISystemMessage = createSystemMessage({
559
+ prompt: AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_TRANSFORMER,
560
+ available: StringUtil.trim`
561
+ DTO Type Name | Database Table | Neighbor Transformers
562
+ --------------|----------------|----------------------
563
+ ${newbie
564
+ .map((t) =>
565
+ [
566
+ t.plan.dtoTypeName,
567
+ t.plan.databaseSchemaName,
568
+ `(${t.neighbors.join(", ")})`,
569
+ ].join(" | "),
570
+ )
571
+ .join("\n")}
572
+ `,
573
+ loaded: props.local.realizeTransformers
574
+ .map((t) => `- ${t.plan.dtoTypeName}`)
575
+ .join("\n"),
576
+ exhausted:
577
+ newbie.length === 0
578
+ ? AutoBeSystemPromptConstant.PRELIMINARY_REALIZE_TRANSFORMER_EXHAUSTED
579
+ : "",
580
+ replace: null,
581
+ previous: null,
582
+ });
583
+ return props.local.realizeTransformers.length === 0
584
+ ? [assistant, system]
585
+ : [
586
+ createFunctionCallingMessage({
587
+ controller: props.source,
588
+ kind: "realizeTransformers",
589
+ arguments: {
590
+ thinking: "realize transformers for response DTO construction",
591
+ request: {
592
+ type: "getRealizeTransformers",
593
+ dtoTypeNames: props.local.realizeTransformers.map(
594
+ (t) => t.plan.dtoTypeName,
595
+ ),
596
+ },
597
+ },
598
+ }),
599
+ assistant,
600
+ system,
601
+ ];
602
+ };
603
+ }
604
+
605
+ interface IPromptReplace {
606
+ from: Exclude<
607
+ // biome-ignore lint: intended
608
+ IAutoBePreliminaryRequest<any>["request"]["type"],
609
+ `getPrevious${string}`
610
+ >;
611
+ to: Extract<
612
+ // biome-ignore lint: intended
613
+ IAutoBePreliminaryRequest<any>["request"]["type"],
614
+ `getPrevious${string}`
615
+ >;
616
+ }
617
+
618
+ const createAssistantMessage = (props: {
619
+ prompt: string;
620
+ content: string;
621
+ replace: IPromptReplace | null;
622
+ previous: string | null;
623
+ }): IAgenticaHistoryJson.IAssistantMessage => {
624
+ let text = props.prompt
625
+ .replaceAll("{{CONTENT}}", props.content)
626
+ .replaceAll(
627
+ "{{PREVIOUS}}",
628
+ props.replace !== null && props.previous !== null ? props.previous : "",
629
+ );
630
+ if (props.replace !== null)
631
+ text = text.replaceAll(props.replace.from, props.replace.to);
632
+ return {
633
+ id: v7(),
634
+ type: "assistantMessage",
635
+ text,
636
+ created_at: new Date().toISOString(),
637
+ };
638
+ };
639
+
640
+ const createSystemMessage = (props: {
641
+ prompt: string;
642
+ available: string;
643
+ loaded: string;
644
+ exhausted: string;
645
+ replace: IPromptReplace | null;
646
+ previous: string | null;
647
+ }): IAgenticaHistoryJson.ISystemMessage => {
648
+ let text = props.prompt
649
+ .replaceAll("{{AVAILABLE}}", props.available)
650
+ .replaceAll("{{LOADED}}", props.loaded)
651
+ .replaceAll("{{EXHAUSTED}}", props.exhausted)
652
+ .replaceAll(
653
+ "{{PREVIOUS}}",
654
+ props.replace !== null && props.previous !== null ? props.previous : "",
655
+ );
656
+ if (props.replace !== null)
657
+ text = text.replaceAll(props.replace.from, props.replace.to);
658
+ return {
659
+ id: v7(),
660
+ type: "systemMessage",
661
+ text,
662
+ created_at: new Date().toISOString(),
663
+ };
664
+ };
665
+
666
+ const toJsonBlock = (obj: unknown): string =>
667
+ StringUtil.trim`
668
+ \`\`\`json
669
+ ${JSON.stringify(obj)}
670
+ \`\`\`
671
+ `;
672
+
673
+ const formatCompactSectionIndex = (
674
+ sections: IAnalysisSectionEntry[],
675
+ ): string => {
676
+ let result = "";
677
+ let lastFile = "";
678
+ let lastUnit = "";
679
+ let unitSections: string[] = [];
680
+ const flushUnit = () => {
681
+ if (unitSections.length > 0) {
682
+ result += " " + lastUnit + ": " + unitSections.join(", ") + "\n";
683
+ unitSections = [];
684
+ }
685
+ };
686
+ for (const s of sections) {
687
+ if (s.filename !== lastFile) {
688
+ flushUnit();
689
+ result += "\n[" + s.filename + "]\n";
690
+ lastFile = s.filename;
691
+ lastUnit = "";
692
+ }
693
+ if (s.unitTitle !== lastUnit) {
694
+ flushUnit();
695
+ lastUnit = s.unitTitle;
696
+ }
697
+ unitSections.push(s.id + "." + s.sectionTitle);
698
+ }
699
+ flushUnit();
700
+ return result.trim();
701
+ };
702
+
703
+ // experimenting between assistantMessage and execute types
704
+ const createFunctionCallingMessage = <
705
+ Kind extends AutoBePreliminaryKind,
706
+ >(props: {
707
+ controller: Exclude<AutoBeEventSource, "facade" | "preliminary">;
708
+ kind: Kind;
709
+ arguments: IAutoBePreliminaryRequest<Kind>;
710
+ }): IAgenticaHistoryJson.IAssistantMessage | IAgenticaHistoryJson.IExecute => ({
711
+ type: "execute",
712
+ id: v7(),
713
+ operation: {
714
+ protocol: "class",
715
+ controller: props.controller,
716
+ function: "process",
717
+ name: "process",
718
+ },
719
+ // biome-ignore lint: intended
720
+ arguments: props.arguments as Record<string, any>,
721
+ value: undefined,
722
+ success: true,
723
+ created_at: new Date().toISOString(),
724
+ // type: "assistantMessage",
725
+ // id: v7(),
726
+ // text: StringUtil.trim`
727
+ // # Function Calling History
728
+
729
+ // Function "${props.function}()" has been called.
730
+
731
+ // Here is the arguments.
732
+
733
+ // Note that, never call the same items again.
734
+ // As they are loaded onto the memory, you never have to
735
+ // request none of them again.
736
+
737
+ // \`\`\`json
738
+ // ${JSON.stringify(props.argument)}
739
+ // \`\`\`
740
+ // `,
741
+ // created_at: new Date().toISOString(),
742
+ });