@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,407 +1,407 @@
1
- import { IAgenticaController } from "@agentica/core";
2
- import {
3
- AutoBeAnalyze,
4
- AutoBeAnalyzeScenarioEvent,
5
- AutoBeAnalyzeWriteModuleEvent,
6
- AutoBeAnalyzeWriteSectionEvent,
7
- AutoBeAnalyzeWriteUnitEvent,
8
- AutoBeEventSource,
9
- AutoBeProgressEventBase,
10
- } from "@autobe/interface";
11
- import { IPointer } from "tstl";
12
- import typia, { ILlmApplication, IValidation } from "typia";
13
- import { v7 } from "uuid";
14
-
15
- import { AutoBeContext } from "../../context/AutoBeContext";
16
- import { validateSectionSectionContent } from "../../utils/validateEnglishOnly";
17
- import { AutoBePreliminaryController } from "../common/AutoBePreliminaryController";
18
- import { transformAnalyzeWriteSectionPatchHistory } from "./histories/transformAnalyzeWriteSectionPatchHistory";
19
- import {
20
- IAutoBeAnalyzeWriteSectionApplication,
21
- IAutoBeAnalyzeWriteSectionApplicationComplete,
22
- IAutoBeAnalyzeWriteSectionApplicationProps,
23
- } from "./structures/IAutoBeAnalyzeWriteSectionApplication";
24
- import { detectTechLockin } from "./utils/buildHardValidators";
25
- import { detectInventedEntities } from "./utils/detectInventedEntities";
26
- import {
27
- isRecord,
28
- parseLooseStructuredString,
29
- tryParseStringAsRecord,
30
- } from "./utils/repairUtils";
31
-
32
- export const orchestrateAnalyzeWriteSectionPatch = async (
33
- ctx: AutoBeContext,
34
- props: {
35
- scenario: AutoBeAnalyzeScenarioEvent;
36
- file: AutoBeAnalyze.IFileScenario;
37
- moduleEvent: AutoBeAnalyzeWriteModuleEvent;
38
- unitEvent: AutoBeAnalyzeWriteUnitEvent;
39
- moduleIndex: number;
40
- unitIndex: number;
41
- previousSectionEvent: AutoBeAnalyzeWriteSectionEvent;
42
- feedback: string;
43
- progress: AutoBeProgressEventBase;
44
- promptCacheKey: string;
45
- retry: number;
46
- scenarioEntityNames?: string[];
47
- sectionIndices?: number[] | null;
48
- },
49
- ): Promise<AutoBeAnalyzeWriteSectionEvent> => {
50
- const preliminary: AutoBePreliminaryController<"previousAnalysisSections"> =
51
- new AutoBePreliminaryController({
52
- application:
53
- typia.json.application<IAutoBeAnalyzeWriteSectionApplication>(),
54
- source: SOURCE,
55
- kinds: ["previousAnalysisSections"],
56
- state: ctx.state(),
57
- });
58
- return await preliminary.orchestrate(ctx, async (out) => {
59
- const pointer: IPointer<IAutoBeAnalyzeWriteSectionApplicationComplete | null> =
60
- {
61
- value: null,
62
- };
63
- const result: AutoBeContext.IResult = await ctx.conversate({
64
- source: SOURCE,
65
- controller: createController({
66
- pointer,
67
- preliminary,
68
- scenarioEntityNames: props.scenarioEntityNames,
69
- }),
70
- enforceFunctionCall: true,
71
- promptCacheKey: props.promptCacheKey,
72
- ...transformAnalyzeWriteSectionPatchHistory(ctx, {
73
- scenario: props.scenario,
74
- file: props.file,
75
- moduleEvent: props.moduleEvent,
76
- unitEvent: props.unitEvent,
77
- moduleIndex: props.moduleIndex,
78
- unitIndex: props.unitIndex,
79
- previousSectionEvent: props.previousSectionEvent,
80
- feedback: props.feedback,
81
- preliminary,
82
- sectionIndices: props.sectionIndices,
83
- }),
84
- });
85
- if (pointer.value === null) return out(result)(null);
86
-
87
- // Section-level merge: preserve originals for non-targeted sections
88
- let finalSectionSections = pointer.value.sectionSections;
89
- if (
90
- props.sectionIndices != null &&
91
- props.sectionIndices.length > 0 &&
92
- props.previousSectionEvent.sectionSections.length ===
93
- pointer.value.sectionSections.length
94
- ) {
95
- const targetSet = new Set(props.sectionIndices);
96
- finalSectionSections = pointer.value.sectionSections.map(
97
- (section, idx) =>
98
- targetSet.has(idx)
99
- ? section
100
- : props.previousSectionEvent.sectionSections[idx]!,
101
- );
102
- }
103
-
104
- const event: AutoBeAnalyzeWriteSectionEvent = {
105
- type: SOURCE,
106
- id: v7(),
107
- moduleIndex: pointer.value.moduleIndex,
108
- unitIndex: pointer.value.unitIndex,
109
- sectionSections: finalSectionSections,
110
- acquisition: preliminary.getAcquisition(),
111
- tokenUsage: result.tokenUsage,
112
- metric: result.metric,
113
- step: (ctx.state().analyze?.step ?? -1) + 1,
114
- total: props.progress.total,
115
- completed: ++props.progress.completed,
116
- retry: props.retry,
117
- created_at: new Date().toISOString(),
118
- };
119
- ctx.dispatch(event);
120
- return out(result)(event);
121
- });
122
- };
123
-
124
- function createController(props: {
125
- pointer: IPointer<IAutoBeAnalyzeWriteSectionApplicationComplete | null>;
126
- preliminary: AutoBePreliminaryController<"previousAnalysisSections">;
127
- scenarioEntityNames?: string[];
128
- }): IAgenticaController.IClass {
129
- const validate = (
130
- input: unknown,
131
- ): IValidation<IAutoBeAnalyzeWriteSectionApplicationProps> => {
132
- input = repairAnalyzeWriteSectionInput(input);
133
- const result: IValidation<IAutoBeAnalyzeWriteSectionApplicationProps> =
134
- typia.validate<IAutoBeAnalyzeWriteSectionApplicationProps>(input);
135
- if (result.success === false) return result;
136
-
137
- // Validate English-only content for complete requests
138
- if (result.data.request.type === "complete") {
139
- const englishValidation = validateSectionSectionContent(
140
- result.data.request.sectionSections,
141
- );
142
- if (!englishValidation.valid) {
143
- return {
144
- success: false,
145
- errors: englishValidation.errors.map((error) => ({
146
- path: "$input.request.sectionSections",
147
- expected: "English-only content (no Chinese, Korean, Japanese)",
148
- value: error,
149
- })),
150
- data: result.data,
151
- };
152
- }
153
-
154
- // Validate no technology lock-in
155
- const techViolations = detectTechLockin(
156
- result.data.request.sectionSections,
157
- );
158
- if (techViolations.length > 0) {
159
- return {
160
- success: false,
161
- errors: techViolations.map((error) => ({
162
- path: "$input.request.sectionSections",
163
- expected:
164
- "Technology-neutral content (no specific DB/framework/infrastructure names)",
165
- value: error,
166
- })),
167
- data: result.data,
168
- };
169
- }
170
-
171
- // Validate no invented entities (P0-B)
172
- if (props.scenarioEntityNames && props.scenarioEntityNames.length > 0) {
173
- const inventionViolations = detectInventedEntities(
174
- result.data.request.sectionSections,
175
- props.scenarioEntityNames,
176
- );
177
- if (inventionViolations.length > 0) {
178
- return {
179
- success: false,
180
- errors: inventionViolations.map((error) => ({
181
- path: "$input.request.sectionSections",
182
- expected: `Only entities from scenario catalog: ${props.scenarioEntityNames!.join(", ")}`,
183
- value: error,
184
- })),
185
- data: result.data,
186
- };
187
- }
188
- }
189
-
190
- return result;
191
- }
192
-
193
- return props.preliminary.validate({
194
- thinking: result.data.thinking ?? "",
195
- request: result.data.request,
196
- });
197
- };
198
- const application: ILlmApplication = props.preliminary.fixApplication(
199
- typia.llm.application<IAutoBeAnalyzeWriteSectionApplication>({
200
- validate: {
201
- process: validate,
202
- },
203
- }),
204
- );
205
- return {
206
- protocol: "class",
207
- name: SOURCE,
208
- application,
209
- execute: {
210
- process: (input) => {
211
- if (input.request.type === "complete")
212
- props.pointer.value = input.request;
213
- },
214
- } satisfies IAutoBeAnalyzeWriteSectionApplication,
215
- };
216
- }
217
-
218
- const SOURCE = "analyzeWriteSection" satisfies AutoBeEventSource;
219
-
220
- // ─────────────────────────────────────────────────────────────────────────────
221
- // REPAIR CHAIN
222
- // Each helper is pure: it returns the input unchanged when it has nothing to do.
223
- // ─────────────────────────────────────────────────────────────────────────────
224
-
225
- /**
226
- * Gap 1 — Flattened payload: LLM emits top-level fields instead of `{ request:
227
- * { type, moduleIndex, unitIndex, sectionSections } }`.
228
- */
229
- const repairFlattenedPayload = (
230
- input: Record<string, unknown>,
231
- ): Record<string, unknown> => {
232
- if (isRecord(input.request)) return input;
233
-
234
- const hasSectionSections =
235
- Array.isArray(input.sectionSections) || Array.isArray(input.sections);
236
- const completeLike =
237
- hasSectionSections &&
238
- (input.type === "complete" ||
239
- input.type === "" ||
240
- input.type === undefined ||
241
- input.type === null);
242
-
243
- if (completeLike) {
244
- const {
245
- thinking,
246
- type,
247
- moduleIndex,
248
- unitIndex,
249
- sectionSections,
250
- sections,
251
- ...rest
252
- } = input;
253
- return {
254
- ...rest,
255
- ...(thinking !== undefined ? { thinking } : {}),
256
- request: {
257
- type: "complete",
258
- moduleIndex,
259
- unitIndex,
260
- sectionSections: sectionSections ?? sections,
261
- },
262
- };
263
- }
264
-
265
- const previousLike =
266
- typeof input.type === "string" &&
267
- input.type === "getPreviousAnalysisSections" &&
268
- input.sectionIds !== undefined;
269
- if (previousLike) {
270
- const { thinking, type, sectionIds, ...rest } = input;
271
- return {
272
- ...rest,
273
- ...(thinking !== undefined ? { thinking } : {}),
274
- request: { type, sectionIds },
275
- };
276
- }
277
-
278
- return input;
279
- };
280
-
281
- /** Gap 2 — Heuristic type detection: fills in missing/wrong `type` field. */
282
- const repairRequestType = (
283
- request: Record<string, unknown>,
284
- ): Record<string, unknown> => {
285
- const t = request.type;
286
- if (t === "complete" || t === "getPreviousAnalysisSections") return request;
287
-
288
- if (
289
- Array.isArray(request.sectionSections) ||
290
- Array.isArray(request.sections)
291
- ) {
292
- return { ...request, type: "complete" };
293
- }
294
-
295
- if (Array.isArray(request.sectionIds) && request.sectionIds.length > 0) {
296
- return { ...request, type: "getPreviousAnalysisSections" };
297
- }
298
-
299
- if (typeof t === "string" || t === null || t === undefined) {
300
- return { ...request, type: "complete" };
301
- }
302
-
303
- return request;
304
- };
305
-
306
- /** Gaps 3, 4, 6 + existing string/alias repairs. */
307
- const normalizeWriteSectionRequest = (
308
- input: Record<string, unknown>,
309
- ): Record<string, unknown> => {
310
- const output: Record<string, unknown> = { ...input };
311
-
312
- if (typeof output.moduleIndex === "string") {
313
- const n = Number(output.moduleIndex);
314
- if (Number.isFinite(n)) output.moduleIndex = n;
315
- }
316
- if (typeof output.unitIndex === "string") {
317
- const n = Number(output.unitIndex);
318
- if (Number.isFinite(n)) output.unitIndex = n;
319
- }
320
-
321
- if (output.sectionSections === undefined && Array.isArray(output.sections)) {
322
- output.sectionSections = output.sections;
323
- }
324
-
325
- // Gap 6: null → undefined
326
- if (output.sectionSections === null) {
327
- output.sectionSections = undefined;
328
- }
329
-
330
- // Gap 3 + 4: JSON-string sectionSections
331
- if (typeof output.sectionSections === "string") {
332
- const parsed = parseLooseStructuredString(output.sectionSections);
333
- if (Array.isArray(parsed)) output.sectionSections = parsed;
334
- }
335
-
336
- return output;
337
- };
338
-
339
- /** Gap 5 + existing per-item repairs (trim, body→content alias). */
340
- const normalizeSectionItems = (sections: unknown[]): unknown[] => {
341
- return sections.map((item): unknown => {
342
- if (isRecord(item)) {
343
- const next = { ...item };
344
- let changed = false;
345
-
346
- if (typeof next.title === "string") {
347
- const trimmed = next.title.trim();
348
- if (trimmed !== next.title) {
349
- next.title = trimmed;
350
- changed = true;
351
- }
352
- }
353
- if (typeof next.content === "string") {
354
- const trimmed = next.content.trim();
355
- if (trimmed !== next.content) {
356
- next.content = trimmed;
357
- changed = true;
358
- }
359
- }
360
- if (next.content === undefined && typeof next.body === "string") {
361
- next.content = (next.body as string).trim();
362
- delete next.body;
363
- changed = true;
364
- }
365
- if (next.content === undefined && typeof next.description === "string") {
366
- next.content = (next.description as string).trim();
367
- delete next.description;
368
- changed = true;
369
- }
370
- return changed ? next : item;
371
- }
372
-
373
- // Gap 5: plain string → { title: "", content: string }
374
- if (typeof item === "string") {
375
- return { title: "", content: item.trim() };
376
- }
377
-
378
- return item;
379
- });
380
- };
381
-
382
- /** Master repair entry-point called from `validate()` before typia.validate. */
383
- const repairAnalyzeWriteSectionInput = (input: unknown): unknown => {
384
- if (isRecord(input) === false) return input;
385
-
386
- // Gap 1: reconstruct { request: {...} } wrapper if missing
387
- const root = repairFlattenedPayload(input);
388
-
389
- // LLMs (e.g. Qwen) sometimes send `request` as a JSON string
390
- root.request = tryParseStringAsRecord(root.request);
391
- if (isRecord(root.request) === false) return root;
392
-
393
- // Gap 2 + 3 + 4 + 6: normalize the request record
394
- let request = normalizeWriteSectionRequest(
395
- repairRequestType(root.request as Record<string, unknown>),
396
- );
397
-
398
- // Gap 5: normalize individual section items
399
- if (Array.isArray(request.sectionSections)) {
400
- request = {
401
- ...request,
402
- sectionSections: normalizeSectionItems(request.sectionSections),
403
- };
404
- }
405
-
406
- return { ...root, request };
407
- };
1
+ import { IAgenticaController } from "@agentica/core";
2
+ import {
3
+ AutoBeAnalyze,
4
+ AutoBeAnalyzeScenarioEvent,
5
+ AutoBeAnalyzeWriteModuleEvent,
6
+ AutoBeAnalyzeWriteSectionEvent,
7
+ AutoBeAnalyzeWriteUnitEvent,
8
+ AutoBeEventSource,
9
+ AutoBeProgressEventBase,
10
+ } from "@autobe/interface";
11
+ import { IPointer } from "tstl";
12
+ import typia, { ILlmApplication, IValidation } from "typia";
13
+ import { v7 } from "uuid";
14
+
15
+ import { AutoBeContext } from "../../context/AutoBeContext";
16
+ import { validateSectionSectionContent } from "../../utils/validateEnglishOnly";
17
+ import { AutoBePreliminaryController } from "../common/AutoBePreliminaryController";
18
+ import { transformAnalyzeWriteSectionPatchHistory } from "./histories/transformAnalyzeWriteSectionPatchHistory";
19
+ import {
20
+ IAutoBeAnalyzeWriteSectionApplication,
21
+ IAutoBeAnalyzeWriteSectionApplicationComplete,
22
+ IAutoBeAnalyzeWriteSectionApplicationProps,
23
+ } from "./structures/IAutoBeAnalyzeWriteSectionApplication";
24
+ import { detectTechLockin } from "./utils/buildHardValidators";
25
+ import { detectInventedEntities } from "./utils/detectInventedEntities";
26
+ import {
27
+ isRecord,
28
+ parseLooseStructuredString,
29
+ tryParseStringAsRecord,
30
+ } from "./utils/repairUtils";
31
+
32
+ export const orchestrateAnalyzeWriteSectionPatch = async (
33
+ ctx: AutoBeContext,
34
+ props: {
35
+ scenario: AutoBeAnalyzeScenarioEvent;
36
+ file: AutoBeAnalyze.IFileScenario;
37
+ moduleEvent: AutoBeAnalyzeWriteModuleEvent;
38
+ unitEvent: AutoBeAnalyzeWriteUnitEvent;
39
+ moduleIndex: number;
40
+ unitIndex: number;
41
+ previousSectionEvent: AutoBeAnalyzeWriteSectionEvent;
42
+ feedback: string;
43
+ progress: AutoBeProgressEventBase;
44
+ promptCacheKey: string;
45
+ retry: number;
46
+ scenarioEntityNames?: string[];
47
+ sectionIndices?: number[] | null;
48
+ },
49
+ ): Promise<AutoBeAnalyzeWriteSectionEvent> => {
50
+ const preliminary: AutoBePreliminaryController<"previousAnalysisSections"> =
51
+ new AutoBePreliminaryController({
52
+ application:
53
+ typia.json.application<IAutoBeAnalyzeWriteSectionApplication>(),
54
+ source: SOURCE,
55
+ kinds: ["previousAnalysisSections"],
56
+ state: ctx.state(),
57
+ });
58
+ return await preliminary.orchestrate(ctx, async (out) => {
59
+ const pointer: IPointer<IAutoBeAnalyzeWriteSectionApplicationComplete | null> =
60
+ {
61
+ value: null,
62
+ };
63
+ const result: AutoBeContext.IResult = await ctx.conversate({
64
+ source: SOURCE,
65
+ controller: createController({
66
+ pointer,
67
+ preliminary,
68
+ scenarioEntityNames: props.scenarioEntityNames,
69
+ }),
70
+ enforceFunctionCall: true,
71
+ promptCacheKey: props.promptCacheKey,
72
+ ...transformAnalyzeWriteSectionPatchHistory(ctx, {
73
+ scenario: props.scenario,
74
+ file: props.file,
75
+ moduleEvent: props.moduleEvent,
76
+ unitEvent: props.unitEvent,
77
+ moduleIndex: props.moduleIndex,
78
+ unitIndex: props.unitIndex,
79
+ previousSectionEvent: props.previousSectionEvent,
80
+ feedback: props.feedback,
81
+ preliminary,
82
+ sectionIndices: props.sectionIndices,
83
+ }),
84
+ });
85
+ if (pointer.value === null) return out(result)(null);
86
+
87
+ // Section-level merge: preserve originals for non-targeted sections
88
+ let finalSectionSections = pointer.value.sectionSections;
89
+ if (
90
+ props.sectionIndices != null &&
91
+ props.sectionIndices.length > 0 &&
92
+ props.previousSectionEvent.sectionSections.length ===
93
+ pointer.value.sectionSections.length
94
+ ) {
95
+ const targetSet = new Set(props.sectionIndices);
96
+ finalSectionSections = pointer.value.sectionSections.map(
97
+ (section, idx) =>
98
+ targetSet.has(idx)
99
+ ? section
100
+ : props.previousSectionEvent.sectionSections[idx]!,
101
+ );
102
+ }
103
+
104
+ const event: AutoBeAnalyzeWriteSectionEvent = {
105
+ type: SOURCE,
106
+ id: v7(),
107
+ moduleIndex: pointer.value.moduleIndex,
108
+ unitIndex: pointer.value.unitIndex,
109
+ sectionSections: finalSectionSections,
110
+ acquisition: preliminary.getAcquisition(),
111
+ tokenUsage: result.tokenUsage,
112
+ metric: result.metric,
113
+ step: (ctx.state().analyze?.step ?? -1) + 1,
114
+ total: props.progress.total,
115
+ completed: ++props.progress.completed,
116
+ retry: props.retry,
117
+ created_at: new Date().toISOString(),
118
+ };
119
+ ctx.dispatch(event);
120
+ return out(result)(event);
121
+ });
122
+ };
123
+
124
+ function createController(props: {
125
+ pointer: IPointer<IAutoBeAnalyzeWriteSectionApplicationComplete | null>;
126
+ preliminary: AutoBePreliminaryController<"previousAnalysisSections">;
127
+ scenarioEntityNames?: string[];
128
+ }): IAgenticaController.IClass {
129
+ const validate = (
130
+ input: unknown,
131
+ ): IValidation<IAutoBeAnalyzeWriteSectionApplicationProps> => {
132
+ input = repairAnalyzeWriteSectionInput(input);
133
+ const result: IValidation<IAutoBeAnalyzeWriteSectionApplicationProps> =
134
+ typia.validate<IAutoBeAnalyzeWriteSectionApplicationProps>(input);
135
+ if (result.success === false) return result;
136
+
137
+ // Validate English-only content for complete requests
138
+ if (result.data.request.type === "complete") {
139
+ const englishValidation = validateSectionSectionContent(
140
+ result.data.request.sectionSections,
141
+ );
142
+ if (!englishValidation.valid) {
143
+ return {
144
+ success: false,
145
+ errors: englishValidation.errors.map((error) => ({
146
+ path: "$input.request.sectionSections",
147
+ expected: "English-only content (no Chinese, Korean, Japanese)",
148
+ value: error,
149
+ })),
150
+ data: result.data,
151
+ };
152
+ }
153
+
154
+ // Validate no technology lock-in
155
+ const techViolations = detectTechLockin(
156
+ result.data.request.sectionSections,
157
+ );
158
+ if (techViolations.length > 0) {
159
+ return {
160
+ success: false,
161
+ errors: techViolations.map((error) => ({
162
+ path: "$input.request.sectionSections",
163
+ expected:
164
+ "Technology-neutral content (no specific DB/framework/infrastructure names)",
165
+ value: error,
166
+ })),
167
+ data: result.data,
168
+ };
169
+ }
170
+
171
+ // Validate no invented entities (P0-B)
172
+ if (props.scenarioEntityNames && props.scenarioEntityNames.length > 0) {
173
+ const inventionViolations = detectInventedEntities(
174
+ result.data.request.sectionSections,
175
+ props.scenarioEntityNames,
176
+ );
177
+ if (inventionViolations.length > 0) {
178
+ return {
179
+ success: false,
180
+ errors: inventionViolations.map((error) => ({
181
+ path: "$input.request.sectionSections",
182
+ expected: `Only entities from scenario catalog: ${props.scenarioEntityNames!.join(", ")}`,
183
+ value: error,
184
+ })),
185
+ data: result.data,
186
+ };
187
+ }
188
+ }
189
+
190
+ return result;
191
+ }
192
+
193
+ return props.preliminary.validate({
194
+ thinking: result.data.thinking ?? "",
195
+ request: result.data.request,
196
+ });
197
+ };
198
+ const application: ILlmApplication = props.preliminary.fixApplication(
199
+ typia.llm.application<IAutoBeAnalyzeWriteSectionApplication>({
200
+ validate: {
201
+ process: validate,
202
+ },
203
+ }),
204
+ );
205
+ return {
206
+ protocol: "class",
207
+ name: SOURCE,
208
+ application,
209
+ execute: {
210
+ process: (input) => {
211
+ if (input.request.type === "complete")
212
+ props.pointer.value = input.request;
213
+ },
214
+ } satisfies IAutoBeAnalyzeWriteSectionApplication,
215
+ };
216
+ }
217
+
218
+ const SOURCE = "analyzeWriteSection" satisfies AutoBeEventSource;
219
+
220
+ // ─────────────────────────────────────────────────────────────────────────────
221
+ // REPAIR CHAIN
222
+ // Each helper is pure: it returns the input unchanged when it has nothing to do.
223
+ // ─────────────────────────────────────────────────────────────────────────────
224
+
225
+ /**
226
+ * Gap 1 — Flattened payload: LLM emits top-level fields instead of `{ request:
227
+ * { type, moduleIndex, unitIndex, sectionSections } }`.
228
+ */
229
+ const repairFlattenedPayload = (
230
+ input: Record<string, unknown>,
231
+ ): Record<string, unknown> => {
232
+ if (isRecord(input.request)) return input;
233
+
234
+ const hasSectionSections =
235
+ Array.isArray(input.sectionSections) || Array.isArray(input.sections);
236
+ const completeLike =
237
+ hasSectionSections &&
238
+ (input.type === "complete" ||
239
+ input.type === "" ||
240
+ input.type === undefined ||
241
+ input.type === null);
242
+
243
+ if (completeLike) {
244
+ const {
245
+ thinking,
246
+ type,
247
+ moduleIndex,
248
+ unitIndex,
249
+ sectionSections,
250
+ sections,
251
+ ...rest
252
+ } = input;
253
+ return {
254
+ ...rest,
255
+ ...(thinking !== undefined ? { thinking } : {}),
256
+ request: {
257
+ type: "complete",
258
+ moduleIndex,
259
+ unitIndex,
260
+ sectionSections: sectionSections ?? sections,
261
+ },
262
+ };
263
+ }
264
+
265
+ const previousLike =
266
+ typeof input.type === "string" &&
267
+ input.type === "getPreviousAnalysisSections" &&
268
+ input.sectionIds !== undefined;
269
+ if (previousLike) {
270
+ const { thinking, type, sectionIds, ...rest } = input;
271
+ return {
272
+ ...rest,
273
+ ...(thinking !== undefined ? { thinking } : {}),
274
+ request: { type, sectionIds },
275
+ };
276
+ }
277
+
278
+ return input;
279
+ };
280
+
281
+ /** Gap 2 — Heuristic type detection: fills in missing/wrong `type` field. */
282
+ const repairRequestType = (
283
+ request: Record<string, unknown>,
284
+ ): Record<string, unknown> => {
285
+ const t = request.type;
286
+ if (t === "complete" || t === "getPreviousAnalysisSections") return request;
287
+
288
+ if (
289
+ Array.isArray(request.sectionSections) ||
290
+ Array.isArray(request.sections)
291
+ ) {
292
+ return { ...request, type: "complete" };
293
+ }
294
+
295
+ if (Array.isArray(request.sectionIds) && request.sectionIds.length > 0) {
296
+ return { ...request, type: "getPreviousAnalysisSections" };
297
+ }
298
+
299
+ if (typeof t === "string" || t === null || t === undefined) {
300
+ return { ...request, type: "complete" };
301
+ }
302
+
303
+ return request;
304
+ };
305
+
306
+ /** Gaps 3, 4, 6 + existing string/alias repairs. */
307
+ const normalizeWriteSectionRequest = (
308
+ input: Record<string, unknown>,
309
+ ): Record<string, unknown> => {
310
+ const output: Record<string, unknown> = { ...input };
311
+
312
+ if (typeof output.moduleIndex === "string") {
313
+ const n = Number(output.moduleIndex);
314
+ if (Number.isFinite(n)) output.moduleIndex = n;
315
+ }
316
+ if (typeof output.unitIndex === "string") {
317
+ const n = Number(output.unitIndex);
318
+ if (Number.isFinite(n)) output.unitIndex = n;
319
+ }
320
+
321
+ if (output.sectionSections === undefined && Array.isArray(output.sections)) {
322
+ output.sectionSections = output.sections;
323
+ }
324
+
325
+ // Gap 6: null → undefined
326
+ if (output.sectionSections === null) {
327
+ output.sectionSections = undefined;
328
+ }
329
+
330
+ // Gap 3 + 4: JSON-string sectionSections
331
+ if (typeof output.sectionSections === "string") {
332
+ const parsed = parseLooseStructuredString(output.sectionSections);
333
+ if (Array.isArray(parsed)) output.sectionSections = parsed;
334
+ }
335
+
336
+ return output;
337
+ };
338
+
339
+ /** Gap 5 + existing per-item repairs (trim, body→content alias). */
340
+ const normalizeSectionItems = (sections: unknown[]): unknown[] => {
341
+ return sections.map((item): unknown => {
342
+ if (isRecord(item)) {
343
+ const next = { ...item };
344
+ let changed = false;
345
+
346
+ if (typeof next.title === "string") {
347
+ const trimmed = next.title.trim();
348
+ if (trimmed !== next.title) {
349
+ next.title = trimmed;
350
+ changed = true;
351
+ }
352
+ }
353
+ if (typeof next.content === "string") {
354
+ const trimmed = next.content.trim();
355
+ if (trimmed !== next.content) {
356
+ next.content = trimmed;
357
+ changed = true;
358
+ }
359
+ }
360
+ if (next.content === undefined && typeof next.body === "string") {
361
+ next.content = (next.body as string).trim();
362
+ delete next.body;
363
+ changed = true;
364
+ }
365
+ if (next.content === undefined && typeof next.description === "string") {
366
+ next.content = (next.description as string).trim();
367
+ delete next.description;
368
+ changed = true;
369
+ }
370
+ return changed ? next : item;
371
+ }
372
+
373
+ // Gap 5: plain string → { title: "", content: string }
374
+ if (typeof item === "string") {
375
+ return { title: "", content: item.trim() };
376
+ }
377
+
378
+ return item;
379
+ });
380
+ };
381
+
382
+ /** Master repair entry-point called from `validate()` before typia.validate. */
383
+ const repairAnalyzeWriteSectionInput = (input: unknown): unknown => {
384
+ if (isRecord(input) === false) return input;
385
+
386
+ // Gap 1: reconstruct { request: {...} } wrapper if missing
387
+ const root = repairFlattenedPayload(input);
388
+
389
+ // LLMs (e.g. Qwen) sometimes send `request` as a JSON string
390
+ root.request = tryParseStringAsRecord(root.request);
391
+ if (isRecord(root.request) === false) return root;
392
+
393
+ // Gap 2 + 3 + 4 + 6: normalize the request record
394
+ let request = normalizeWriteSectionRequest(
395
+ repairRequestType(root.request as Record<string, unknown>),
396
+ );
397
+
398
+ // Gap 5: normalize individual section items
399
+ if (Array.isArray(request.sectionSections)) {
400
+ request = {
401
+ ...request,
402
+ sectionSections: normalizeSectionItems(request.sectionSections),
403
+ };
404
+ }
405
+
406
+ return { ...root, request };
407
+ };