@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.
- package/LICENSE +661 -661
- package/lib/constants/AutoBeTemplateFileConstant.d.ts +1 -1
- package/lib/factory/consentFunctionCall.js +4 -4
- package/lib/factory/createAutoBeContext.js +24 -24
- package/lib/factory/createAutoBeMessageContent.js +6 -6
- package/lib/index.mjs +41 -41
- package/lib/orchestrate/analyze/histories/transformAnalyzeScenarioHistory.js +18 -18
- package/lib/orchestrate/analyze/histories/transformAnalyzeScenarioReviewHistory.js +13 -13
- package/lib/orchestrate/analyze/histories/transformAnalyzeSectionCrossFileReviewHistory.js +47 -47
- package/lib/orchestrate/analyze/histories/transformAnalyzeSectionReviewHistory.js +66 -66
- package/lib/orchestrate/analyze/histories/transformAnalyzeWriteSectionHistory.js +91 -91
- package/lib/orchestrate/analyze/histories/transformAnalyzeWriteSectionPatchHistory.js +46 -46
- package/lib/orchestrate/analyze/histories/transformAnalyzeWriteUnitHistory.js +72 -72
- package/lib/orchestrate/analyze/orchestrateAnalyzeScenario.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeSectionCrossFileReview.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeSectionReview.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeWriteSection.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeWriteSectionPatch.js +1 -1
- package/lib/orchestrate/analyze/orchestrateAnalyzeWriteUnit.js +1 -1
- package/lib/orchestrate/common/histories/transformCommonCorrectCastingHistory.js +5 -5
- package/lib/orchestrate/common/histories/transformPreliminaryHistory.js +44 -44
- package/lib/orchestrate/common/histories/transformPreviousAndLatestCorrectHistory.js +44 -44
- package/lib/orchestrate/common/internal/fixPrelminaryApplication.js +22 -22
- package/lib/orchestrate/common/internal/validatePreliminary.js +116 -116
- package/lib/orchestrate/facade/createAutoBeFacadeController.js +3 -3
- package/lib/orchestrate/facade/structures/transformFacadeStateMessage.js +20 -20
- package/lib/orchestrate/interface/histories/transformInterfaceActionEndpointReviewHistory.js +34 -34
- package/lib/orchestrate/interface/histories/transformInterfaceActionEndpointWriteHistory.js +37 -37
- package/lib/orchestrate/interface/histories/transformInterfaceAuthorizationHistory.js +56 -56
- package/lib/orchestrate/interface/histories/transformInterfaceBaseEndpointReviewHistory.js +26 -26
- package/lib/orchestrate/interface/histories/transformInterfaceBaseEndpointWriteHistory.js +28 -28
- package/lib/orchestrate/interface/histories/transformInterfaceEndpointAuthorizationSection.js +11 -11
- package/lib/orchestrate/interface/histories/transformInterfaceGroupHistory.js +38 -38
- package/lib/orchestrate/interface/histories/transformInterfaceOperationHistory.js +29 -29
- package/lib/orchestrate/interface/histories/transformInterfaceOperationParameterHistory.js +15 -15
- package/lib/orchestrate/interface/histories/transformInterfaceOperationReviewHistory.js +6 -6
- package/lib/orchestrate/interface/histories/transformInterfacePrerequisiteHistory.js +25 -25
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaCastingHistory.js +67 -67
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaComplementHistory.js +60 -60
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaRefineHistory.js +83 -83
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaRenameHistory.js +29 -29
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaReviewHistory.js +74 -74
- package/lib/orchestrate/interface/histories/transformInterfaceSchemaWriteHistory.js +46 -46
- package/lib/orchestrate/interface/orchestrateInterfaceAuthorization.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceEndpointReview.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceEndpointWrite.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceGroup.js +9 -9
- package/lib/orchestrate/interface/orchestrateInterfaceOperation.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceOperationReview.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfacePrerequisite.js +4 -4
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaCasting.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaComplement.js +5 -5
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaRefine.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaReview.js +1 -1
- package/lib/orchestrate/interface/orchestrateInterfaceSchemaWrite.js +1 -1
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceAuthorizationProgrammer.js +90 -90
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceEndpointProgrammer.js +6 -6
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceEndpointReviewProgrammer.js +25 -25
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceOperationProgrammer.js +71 -71
- package/lib/orchestrate/interface/programmers/AutoBeInterfacePrerequisiteProgrammer.js +162 -162
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaProgrammer.js +11 -11
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaPropertyReviseProgrammer.js +73 -73
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaRefineProgrammer.js +35 -35
- package/lib/orchestrate/interface/programmers/AutoBeInterfaceSchemaReviewProgrammer.js +11 -11
- package/lib/orchestrate/interface/utils/AutoBeJsonSchemaFactory.js +4 -4
- package/lib/orchestrate/interface/utils/AutoBeJsonSchemaValidator.js +283 -283
- package/lib/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.js +76 -76
- package/lib/orchestrate/prisma/histories/transformPrismaAuthorizationHistory.js +76 -76
- package/lib/orchestrate/prisma/histories/transformPrismaAuthorizationReviewHistory.js +51 -51
- package/lib/orchestrate/prisma/histories/transformPrismaComponentReviewHistory.js +54 -54
- package/lib/orchestrate/prisma/histories/transformPrismaComponentsHistory.js +83 -83
- package/lib/orchestrate/prisma/histories/transformPrismaCorrectHistory.js +6 -6
- package/lib/orchestrate/prisma/histories/transformPrismaGroupHistory.js +22 -22
- package/lib/orchestrate/prisma/histories/transformPrismaGroupReviewHistory.js +41 -41
- package/lib/orchestrate/prisma/histories/transformPrismaSchemaHistory.js +39 -39
- package/lib/orchestrate/prisma/histories/transformPrismaSchemaReviewHistory.js +41 -41
- package/lib/orchestrate/prisma/orchestratePrismaAuthorization.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaAuthorizationReview.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaComponent.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaComponentReview.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaCorrect.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaGroup.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaGroupReview.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaSchema.js +1 -1
- package/lib/orchestrate/prisma/orchestratePrismaSchemaReview.js +1 -1
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationProgrammer.js +23 -23
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationReviewProgrammer.js +7 -7
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseComponentProgrammer.js +5 -5
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseComponentReviewProgrammer.js +20 -20
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseGroupProgrammer.js +13 -13
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseGroupReviewProgrammer.js +51 -51
- package/lib/orchestrate/prisma/programmers/AutoBeDatabaseSchemaProgrammer.js +25 -25
- package/lib/orchestrate/realize/histories/transformRealizeAuthorizationCorrectHistory.js +28 -28
- package/lib/orchestrate/realize/histories/transformRealizeAuthorizationWriteHistory.js +14 -14
- package/lib/orchestrate/realize/histories/transformRealizeCollectorCorrectHistory.js +42 -42
- package/lib/orchestrate/realize/histories/transformRealizeCollectorPlanHistory.js +27 -27
- package/lib/orchestrate/realize/histories/transformRealizeCollectorWriteHistory.js +57 -57
- package/lib/orchestrate/realize/histories/transformRealizeCorrectCastingHistory.js +35 -35
- package/lib/orchestrate/realize/histories/transformRealizeOperationCorrectHistory.js +14 -14
- package/lib/orchestrate/realize/histories/transformRealizeOperationWriteHistory.js +37 -37
- package/lib/orchestrate/realize/histories/transformRealizeOperationWriteHistory.js.map +1 -1
- package/lib/orchestrate/realize/histories/transformRealizeTransformerCorrectHistory.js +47 -47
- package/lib/orchestrate/realize/histories/transformRealizeTransformerPlanHistory.js +27 -27
- package/lib/orchestrate/realize/histories/transformRealizeTransformerWriteHistory.js +51 -51
- package/lib/orchestrate/realize/orchestrateRealizeAuthorizationCorrect.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeAuthorizationWrite.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeCollectorCorrectOverall.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeCollectorPlan.js +11 -11
- package/lib/orchestrate/realize/orchestrateRealizeCollectorWrite.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeOperationCorrectOverall.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeOperationWrite.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeTransformerCorrectOverall.js +1 -1
- package/lib/orchestrate/realize/orchestrateRealizeTransformerPlan.js +11 -11
- package/lib/orchestrate/realize/orchestrateRealizeTransformerWrite.js +1 -1
- package/lib/orchestrate/realize/programmers/AutoBeRealizeCollectorProgrammer.js +41 -41
- package/lib/orchestrate/realize/programmers/AutoBeRealizeOperationProgrammer.js +21 -21
- package/lib/orchestrate/realize/programmers/AutoBeRealizeTransformerProgrammer.js +57 -57
- package/lib/orchestrate/realize/utils/getRealizeWriteInputType.js +3 -3
- package/lib/orchestrate/realize/utils/printErrorHints.js +5 -5
- package/lib/orchestrate/test/compile/getTestImportStatements.js +9 -9
- package/lib/orchestrate/test/histories/transformTestAuthorizeWriteHistory.js +38 -38
- package/lib/orchestrate/test/histories/transformTestGenerationWriteHistory.js +79 -79
- package/lib/orchestrate/test/histories/transformTestOperationWriteHistory.js +162 -162
- package/lib/orchestrate/test/histories/transformTestPrepareWriteHistory.js +54 -54
- package/lib/orchestrate/test/histories/transformTestScenarioHistory.js +31 -31
- package/lib/orchestrate/test/histories/transformTestScenarioReviewHistory.js +27 -27
- package/lib/orchestrate/test/orchestrateTestScenario.js +1 -1
- package/lib/orchestrate/test/orchestrateTestScenarioReview.js +1 -1
- package/lib/orchestrate/test/programmers/AutoBeTestAuthorizeProgrammer.js +31 -31
- package/lib/orchestrate/test/programmers/AutoBeTestGenerateProgrammer.js +23 -23
- package/lib/orchestrate/test/programmers/AutoBeTestOperationProgrammer.js +6 -6
- package/lib/orchestrate/test/programmers/AutoBeTestPrepareProgrammer.js +34 -34
- package/lib/orchestrate/test/programmers/AutoBeTestScenarioProgrammer.js +39 -39
- package/lib/utils/predicateStateMessage.js +19 -19
- package/lib/utils/validateEmptyCode.js +16 -16
- package/package.json +5 -5
- package/src/AutoBeAgent.ts +374 -374
- package/src/AutoBeAgentBase.ts +126 -126
- package/src/AutoBeMockAgent.ts +254 -254
- package/src/constants/AutoBeConfigConstant.ts +173 -173
- package/src/constants/AutoBeTemplateFileConstant.ts +1 -1
- package/src/context/AutoBeContext.ts +107 -107
- package/src/context/AutoBeState.ts +66 -66
- package/src/context/AutoBeTokenUsage.ts +307 -307
- package/src/context/AutoBeTokenUsageComponent.ts +227 -227
- package/src/describe/describe.ts +47 -47
- package/src/describe/image/histories/transformImageDescribeDraftHistories.ts +16 -16
- package/src/describe/image/orchestrateImageDescribeDraft.ts +200 -200
- package/src/describe/image/structures/IAutoBeImageDescribeDraftApplication.ts +92 -92
- package/src/describe/imageDescribe.ts +64 -64
- package/src/factory/consentFunctionCall.ts +141 -141
- package/src/factory/createAgenticaHistory.ts +71 -71
- package/src/factory/createAutoBeContext.ts +584 -584
- package/src/factory/createAutoBeMessageContent.ts +36 -36
- package/src/factory/createAutoBeState.ts +20 -20
- package/src/factory/getAutoBeGenerated.ts +317 -317
- package/src/factory/getAutoBeRealizeGenerated.ts +31 -31
- package/src/factory/getCriticalCompiler.ts +52 -52
- package/src/factory/index.ts +1 -1
- package/src/factory/mergeSystemMessages.ts +60 -60
- package/src/factory/supportFunctionCallFallback.ts +214 -214
- package/src/factory/supportMistral.ts +138 -138
- package/src/index.ts +16 -16
- package/src/orchestrate/analyze/fillTocDeterministic.ts +280 -280
- package/src/orchestrate/analyze/histories/transformAnalyzeScenarioHistory.ts +55 -55
- package/src/orchestrate/analyze/histories/transformAnalyzeScenarioReviewHistory.ts +74 -74
- package/src/orchestrate/analyze/histories/transformAnalyzeSectionCrossFileReviewHistory.ts +179 -179
- package/src/orchestrate/analyze/histories/transformAnalyzeSectionReviewHistory.ts +163 -163
- package/src/orchestrate/analyze/histories/transformAnalyzeWriteSectionHistory.ts +191 -191
- package/src/orchestrate/analyze/histories/transformAnalyzeWriteSectionPatchHistory.ts +122 -122
- package/src/orchestrate/analyze/histories/transformAnalyzeWriteUnitHistory.ts +161 -161
- package/src/orchestrate/analyze/index.ts +7 -7
- package/src/orchestrate/analyze/orchestrateAnalyze.ts +1693 -1693
- package/src/orchestrate/analyze/orchestrateAnalyzeScenario.ts +267 -267
- package/src/orchestrate/analyze/orchestrateAnalyzeScenarioReview.ts +122 -122
- package/src/orchestrate/analyze/orchestrateAnalyzeSectionCrossFileReview.ts +146 -146
- package/src/orchestrate/analyze/orchestrateAnalyzeSectionReview.ts +154 -154
- package/src/orchestrate/analyze/orchestrateAnalyzeWriteSection.ts +388 -388
- package/src/orchestrate/analyze/orchestrateAnalyzeWriteSectionPatch.ts +407 -407
- package/src/orchestrate/analyze/orchestrateAnalyzeWriteUnit.ts +348 -348
- package/src/orchestrate/analyze/programmers/AutoBeAnalyzeProgrammer.ts +149 -149
- package/src/orchestrate/analyze/structures/FixedAnalyzeTemplate.ts +961 -961
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeScenarioApplication.ts +141 -141
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeScenarioReviewApplication.ts +96 -96
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeSectionCrossFileReviewApplication.ts +160 -160
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeSectionReviewApplication.ts +192 -192
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeWriteSectionApplication.ts +142 -142
- package/src/orchestrate/analyze/structures/IAutoBeAnalyzeWriteUnitApplication.ts +123 -123
- package/src/orchestrate/analyze/utils/buildConstraintConsistencyReport.ts +813 -813
- package/src/orchestrate/analyze/utils/buildErrorCodeRegistry.ts +324 -324
- package/src/orchestrate/analyze/utils/buildHardValidators.ts +88 -88
- package/src/orchestrate/analyze/utils/detectInventedEntities.ts +87 -87
- package/src/orchestrate/analyze/utils/detectProseConstraintConflicts.ts +319 -319
- package/src/orchestrate/analyze/utils/repairSectionReviewUtils.ts +181 -181
- package/src/orchestrate/analyze/utils/repairUtils.ts +60 -60
- package/src/orchestrate/analyze/utils/validateScenarioBasics.ts +104 -104
- package/src/orchestrate/common/AutoBePreliminaryController.ts +400 -400
- package/src/orchestrate/common/histories/transformCommonCorrectCastingHistory.ts +32 -32
- package/src/orchestrate/common/histories/transformPreliminaryHistory.ts +742 -742
- package/src/orchestrate/common/histories/transformPreviousAndLatestCorrectHistory.ts +77 -77
- package/src/orchestrate/common/internal/complementPreliminaryCollection.ts +263 -263
- package/src/orchestrate/common/internal/convertToSectionEntries.ts +57 -57
- package/src/orchestrate/common/internal/createPreliminaryCollection.ts +76 -76
- package/src/orchestrate/common/internal/fixPrelminaryApplication.ts +346 -346
- package/src/orchestrate/common/internal/validatePreliminary.ts +671 -671
- package/src/orchestrate/common/orchestrateCommonCorrectCasting.ts +223 -223
- package/src/orchestrate/common/orchestratePreliminary.ts +610 -610
- package/src/orchestrate/common/structures/AutoBePreliminaryRequest.ts +42 -42
- package/src/orchestrate/common/structures/IAnalysisSectionEntry.ts +35 -35
- package/src/orchestrate/common/structures/IAutoBeCommonCorrectCastingApplication.ts +72 -72
- package/src/orchestrate/common/structures/IAutoBeOrchestrateResult.ts +28 -28
- package/src/orchestrate/common/structures/IAutoBePreliminaryCollection.ts +52 -52
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetAnalysisSections.ts +34 -34
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetDatabaseSchemas.ts +31 -31
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetInterfaceOperations.ts +32 -32
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetInterfaceSchemas.ts +31 -31
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousAnalysisSections.ts +28 -28
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousDatabaseSchemas.ts +88 -88
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousInterfaceOperations.ts +102 -102
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetPreviousInterfaceSchemas.ts +105 -105
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetRealizeCollectors.ts +32 -32
- package/src/orchestrate/common/structures/IAutoBePreliminaryGetRealizeTransformers.ts +32 -32
- package/src/orchestrate/facade/createAutoBeFacadeController.ts +118 -118
- package/src/orchestrate/facade/histories/IAutoBeFacadeApplication.ts +139 -139
- package/src/orchestrate/facade/histories/IAutoBeFacadeApplicationProps.ts +8 -8
- package/src/orchestrate/facade/histories/IAutoBeFacadeApplicationResult.ts +9 -9
- package/src/orchestrate/facade/structures/transformFacadeStateMessage.ts +59 -59
- package/src/orchestrate/index.ts +5 -5
- package/src/orchestrate/interface/histories/transformInterfaceActionEndpointReviewHistory.ts +83 -83
- package/src/orchestrate/interface/histories/transformInterfaceActionEndpointWriteHistory.ts +78 -78
- package/src/orchestrate/interface/histories/transformInterfaceAuthorizationHistory.ts +129 -129
- package/src/orchestrate/interface/histories/transformInterfaceBaseEndpointReviewHistory.ts +74 -74
- package/src/orchestrate/interface/histories/transformInterfaceBaseEndpointWriteHistory.ts +68 -68
- package/src/orchestrate/interface/histories/transformInterfaceCommonHistory.ts +64 -64
- package/src/orchestrate/interface/histories/transformInterfaceEndpointAuthorizationSection.ts +42 -42
- package/src/orchestrate/interface/histories/transformInterfaceGroupHistory.ts +103 -103
- package/src/orchestrate/interface/histories/transformInterfaceOperationHistory.ts +81 -81
- package/src/orchestrate/interface/histories/transformInterfaceOperationParameterHistory.ts +53 -53
- package/src/orchestrate/interface/histories/transformInterfaceOperationReviewHistory.ts +49 -49
- package/src/orchestrate/interface/histories/transformInterfacePrerequisiteHistory.ts +94 -94
- package/src/orchestrate/interface/histories/transformInterfaceSchemaCastingHistory.ts +122 -122
- package/src/orchestrate/interface/histories/transformInterfaceSchemaComplementHistory.ts +192 -192
- package/src/orchestrate/interface/histories/transformInterfaceSchemaRefineHistory.ts +189 -189
- package/src/orchestrate/interface/histories/transformInterfaceSchemaRenameHistory.ts +63 -63
- package/src/orchestrate/interface/histories/transformInterfaceSchemaReviewHistory.ts +173 -173
- package/src/orchestrate/interface/histories/transformInterfaceSchemaWriteHistory.ts +88 -88
- package/src/orchestrate/interface/index.ts +6 -6
- package/src/orchestrate/interface/orchestrateInterface.ts +118 -118
- package/src/orchestrate/interface/orchestrateInterfaceActionEndpoint.ts +58 -58
- package/src/orchestrate/interface/orchestrateInterfaceAuthorization.ts +208 -208
- package/src/orchestrate/interface/orchestrateInterfaceBaseEndpoint.ts +55 -55
- package/src/orchestrate/interface/orchestrateInterfaceEndpoint.ts +67 -67
- package/src/orchestrate/interface/orchestrateInterfaceEndpointOverall.ts +80 -80
- package/src/orchestrate/interface/orchestrateInterfaceEndpointReview.ts +212 -212
- package/src/orchestrate/interface/orchestrateInterfaceEndpointWrite.ts +236 -236
- package/src/orchestrate/interface/orchestrateInterfaceGroup.ts +166 -166
- package/src/orchestrate/interface/orchestrateInterfaceOperation.ts +322 -322
- package/src/orchestrate/interface/orchestrateInterfaceOperationReview.ts +245 -245
- package/src/orchestrate/interface/orchestrateInterfacePrerequisite.ts +240 -240
- package/src/orchestrate/interface/orchestrateInterfaceSchema.ts +191 -191
- package/src/orchestrate/interface/orchestrateInterfaceSchemaCasting.ts +274 -274
- package/src/orchestrate/interface/orchestrateInterfaceSchemaComplement.ts +329 -329
- package/src/orchestrate/interface/orchestrateInterfaceSchemaRefine.ts +292 -292
- package/src/orchestrate/interface/orchestrateInterfaceSchemaRename.ts +266 -266
- package/src/orchestrate/interface/orchestrateInterfaceSchemaReview.ts +310 -310
- package/src/orchestrate/interface/orchestrateInterfaceSchemaWrite.ts +283 -283
- package/src/orchestrate/interface/programmers/AutoBeInterfaceAuthorizationProgrammer.ts +260 -260
- package/src/orchestrate/interface/programmers/AutoBeInterfaceEndpointProgrammer.ts +155 -155
- package/src/orchestrate/interface/programmers/AutoBeInterfaceEndpointReviewProgrammer.ts +139 -139
- package/src/orchestrate/interface/programmers/AutoBeInterfaceOperationProgrammer.ts +277 -277
- package/src/orchestrate/interface/programmers/AutoBeInterfacePrerequisiteProgrammer.ts +259 -259
- package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaProgrammer.ts +152 -152
- package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaPropertyReviseProgrammer.ts +347 -347
- package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaRefineProgrammer.ts +183 -183
- package/src/orchestrate/interface/programmers/AutoBeInterfaceSchemaReviewProgrammer.ts +263 -263
- package/src/orchestrate/interface/structures/IAutoBeInterfaceAuthorizationApplication.ts +135 -135
- package/src/orchestrate/interface/structures/IAutoBeInterfaceEndpointReviewApplication.ts +128 -128
- package/src/orchestrate/interface/structures/IAutoBeInterfaceEndpointWriteApplication.ts +133 -133
- package/src/orchestrate/interface/structures/IAutoBeInterfaceGroupApplication.ts +122 -122
- package/src/orchestrate/interface/structures/IAutoBeInterfaceOperationApplication.ts +178 -178
- package/src/orchestrate/interface/structures/IAutoBeInterfaceOperationReviewApplication.ts +175 -175
- package/src/orchestrate/interface/structures/IAutoBeInterfacePrerequisiteApplication.ts +130 -130
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaApplication.ts +121 -121
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaCastingApplication.ts +153 -153
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaComplementApplication.ts +123 -123
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaRefineApplication.ts +181 -181
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaRenameApplication.ts +45 -45
- package/src/orchestrate/interface/structures/IAutoBeInterfaceSchemaReviewApplication.ts +108 -108
- package/src/orchestrate/interface/utils/AutoBeJsonSchemaCollection.ts +42 -42
- package/src/orchestrate/interface/utils/AutoBeJsonSchemaFactory.ts +714 -714
- package/src/orchestrate/interface/utils/AutoBeJsonSchemaNamingConvention.ts +86 -86
- package/src/orchestrate/interface/utils/AutoBeJsonSchemaValidator.ts +725 -725
- package/src/orchestrate/interface/utils/fulfillJsonSchemaErrorMessages.ts +219 -219
- package/src/orchestrate/prisma/histories/transformPrismaAuthorizationHistory.ts +144 -144
- package/src/orchestrate/prisma/histories/transformPrismaAuthorizationReviewHistory.ts +104 -104
- package/src/orchestrate/prisma/histories/transformPrismaComponentReviewHistory.ts +97 -97
- package/src/orchestrate/prisma/histories/transformPrismaComponentsHistory.ts +136 -136
- package/src/orchestrate/prisma/histories/transformPrismaCorrectHistory.ts +41 -41
- package/src/orchestrate/prisma/histories/transformPrismaGroupHistory.ts +63 -63
- package/src/orchestrate/prisma/histories/transformPrismaGroupReviewHistory.ts +79 -79
- package/src/orchestrate/prisma/histories/transformPrismaSchemaHistory.ts +97 -97
- package/src/orchestrate/prisma/histories/transformPrismaSchemaReviewHistory.ts +126 -126
- package/src/orchestrate/prisma/index.ts +7 -7
- package/src/orchestrate/prisma/orchestratePrisma.ts +296 -296
- package/src/orchestrate/prisma/orchestratePrismaAuthorization.ts +173 -173
- package/src/orchestrate/prisma/orchestratePrismaAuthorizationReview.ts +183 -183
- package/src/orchestrate/prisma/orchestratePrismaComponent.ts +205 -205
- package/src/orchestrate/prisma/orchestratePrismaComponentReview.ts +205 -205
- package/src/orchestrate/prisma/orchestratePrismaCorrect.ts +265 -265
- package/src/orchestrate/prisma/orchestratePrismaGroup.ts +121 -121
- package/src/orchestrate/prisma/orchestratePrismaGroupReview.ts +141 -141
- package/src/orchestrate/prisma/orchestratePrismaSchema.ts +218 -218
- package/src/orchestrate/prisma/orchestratePrismaSchemaReview.ts +220 -220
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationProgrammer.ts +86 -86
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseAuthorizationReviewProgrammer.ts +103 -103
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseComponentProgrammer.ts +80 -80
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseComponentReviewProgrammer.ts +168 -168
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseGroupProgrammer.ts +63 -63
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseGroupReviewProgrammer.ts +210 -210
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseModelProgrammer.ts +57 -57
- package/src/orchestrate/prisma/programmers/AutoBeDatabaseSchemaProgrammer.ts +92 -92
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseAuthorizationApplication.ts +147 -147
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseAuthorizationReviewApplication.ts +153 -153
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseComponentApplication.ts +142 -142
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseComponentReviewApplication.ts +151 -151
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseCorrectApplication.ts +157 -157
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseGroupApplication.ts +117 -117
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseGroupReviewApplication.ts +154 -154
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseSchemaApplication.ts +144 -144
- package/src/orchestrate/prisma/structures/IAutoBeDatabaseSchemaReviewApplication.ts +138 -138
- package/src/orchestrate/realize/histories/transformRealizeAuthorizationCorrectHistory.ts +89 -89
- package/src/orchestrate/realize/histories/transformRealizeAuthorizationWriteHistory.ts +45 -45
- package/src/orchestrate/realize/histories/transformRealizeCollectorCorrectHistory.ts +137 -137
- package/src/orchestrate/realize/histories/transformRealizeCollectorPlanHistory.ts +64 -64
- package/src/orchestrate/realize/histories/transformRealizeCollectorWriteHistory.ts +147 -147
- package/src/orchestrate/realize/histories/transformRealizeCorrectCastingHistory.ts +69 -69
- package/src/orchestrate/realize/histories/transformRealizeOperationCorrectHistory.ts +94 -94
- package/src/orchestrate/realize/histories/transformRealizeOperationWriteHistory.ts +127 -127
- package/src/orchestrate/realize/histories/transformRealizeTransformerCorrectHistory.ts +147 -147
- package/src/orchestrate/realize/histories/transformRealizeTransformerPlanHistory.ts +61 -61
- package/src/orchestrate/realize/histories/transformRealizeTransformerWriteHistory.ts +133 -133
- package/src/orchestrate/realize/histories/transformRealizeWriteMembershipHistory.ts +30 -30
- package/src/orchestrate/realize/index.ts +3 -3
- package/src/orchestrate/realize/internal/orchestrateRealizeCorrectCasting.ts +444 -444
- package/src/orchestrate/realize/internal/orchestrateRealizeCorrectOverall.ts +449 -449
- package/src/orchestrate/realize/orchestrateRealize.ts +143 -143
- package/src/orchestrate/realize/orchestrateRealizeAuthorizationCorrect.ts +207 -207
- package/src/orchestrate/realize/orchestrateRealizeAuthorizationWrite.ts +209 -209
- package/src/orchestrate/realize/orchestrateRealizeCollector.ts +41 -41
- package/src/orchestrate/realize/orchestrateRealizeCollectorCorrectCasting.ts +43 -43
- package/src/orchestrate/realize/orchestrateRealizeCollectorCorrectOverall.ts +157 -157
- package/src/orchestrate/realize/orchestrateRealizeCollectorPlan.ts +264 -264
- package/src/orchestrate/realize/orchestrateRealizeCollectorWrite.ts +225 -225
- package/src/orchestrate/realize/orchestrateRealizeOperation.ts +48 -48
- package/src/orchestrate/realize/orchestrateRealizeOperationCorrectCasting.ts +69 -69
- package/src/orchestrate/realize/orchestrateRealizeOperationCorrectOverall.ts +173 -173
- package/src/orchestrate/realize/orchestrateRealizeOperationWrite.ts +262 -262
- package/src/orchestrate/realize/orchestrateRealizeTransformer.ts +41 -41
- package/src/orchestrate/realize/orchestrateRealizeTransformerCorrectCasting.ts +38 -38
- package/src/orchestrate/realize/orchestrateRealizeTransformerCorrectOverall.ts +160 -160
- package/src/orchestrate/realize/orchestrateRealizeTransformerPlan.ts +254 -254
- package/src/orchestrate/realize/orchestrateRealizeTransformerWrite.ts +226 -226
- package/src/orchestrate/realize/programmers/AutoBeRealizeCollectorProgrammer.ts +424 -424
- package/src/orchestrate/realize/programmers/AutoBeRealizeOperationProgrammer.ts +409 -409
- package/src/orchestrate/realize/programmers/AutoBeRealizeTransformerProgrammer.ts +451 -451
- package/src/orchestrate/realize/programmers/compileRealizeFiles.ts +65 -65
- package/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationCorrectApplication.ts +119 -119
- package/src/orchestrate/realize/structures/IAutoBeRealizeAuthorizationWriteApplication.ts +167 -167
- package/src/orchestrate/realize/structures/IAutoBeRealizeCollectorCorrectApplication.ts +191 -191
- package/src/orchestrate/realize/structures/IAutoBeRealizeCollectorPlanApplication.ts +177 -177
- package/src/orchestrate/realize/structures/IAutoBeRealizeCollectorWriteApplication.ts +207 -207
- package/src/orchestrate/realize/structures/IAutoBeRealizeFunctionFailure.ts +11 -11
- package/src/orchestrate/realize/structures/IAutoBeRealizeOperationCorrectApplication.ts +134 -134
- package/src/orchestrate/realize/structures/IAutoBeRealizeOperationWriteApplication.ts +138 -138
- package/src/orchestrate/realize/structures/IAutoBeRealizeScenarioResult.ts +32 -32
- package/src/orchestrate/realize/structures/IAutoBeRealizeTransformerCorrectApplication.ts +248 -248
- package/src/orchestrate/realize/structures/IAutoBeRealizeTransformerPlanApplication.ts +150 -150
- package/src/orchestrate/realize/structures/IAutoBeRealizeTransformerWriteApplication.ts +278 -278
- package/src/orchestrate/realize/utils/AuthorizationFileSystem.ts +10 -10
- package/src/orchestrate/realize/utils/AutoBeRealizeAuthorizationFileSystem.ts +9 -9
- package/src/orchestrate/realize/utils/AutoBeRealizeAuthorizationReplaceImport.ts +62 -62
- package/src/orchestrate/realize/utils/InternalFileSystem.ts +12 -12
- package/src/orchestrate/realize/utils/ProviderFileSystem.ts +4 -4
- package/src/orchestrate/realize/utils/filterDiagnostics.ts +25 -25
- package/src/orchestrate/realize/utils/generateTS2339Hints.ts +54 -54
- package/src/orchestrate/realize/utils/getRealizeWriteImportStatements.ts +42 -42
- package/src/orchestrate/realize/utils/getRealizeWriteInputType.ts +88 -88
- package/src/orchestrate/realize/utils/printErrorHints.ts +54 -54
- package/src/orchestrate/test/compile/getTestArtifacts.ts +124 -124
- package/src/orchestrate/test/compile/getTestExternalDeclarations.ts +39 -39
- package/src/orchestrate/test/compile/getTestImportStatements.ts +27 -27
- package/src/orchestrate/test/experimental/orchestrateTestCorrect.ast +237 -237
- package/src/orchestrate/test/experimental/orchestrateTestWrite.ast +322 -322
- package/src/orchestrate/test/experimental/transformTestCorrectHistories.ast +52 -52
- package/src/orchestrate/test/histories/transformTestAuthorizeWriteHistory.ts +80 -80
- package/src/orchestrate/test/histories/transformTestCorrectOverallHistory.ts +116 -116
- package/src/orchestrate/test/histories/transformTestGenerationWriteHistory.ts +118 -118
- package/src/orchestrate/test/histories/transformTestOperationWriteHistory.ts +287 -287
- package/src/orchestrate/test/histories/transformTestPrepareWriteHistory.ts +95 -95
- package/src/orchestrate/test/histories/transformTestScenarioHistory.ts +120 -120
- package/src/orchestrate/test/histories/transformTestScenarioReviewHistory.ts +99 -99
- package/src/orchestrate/test/histories/transformTestValidateEvent.ts +11 -11
- package/src/orchestrate/test/index.ts +5 -5
- package/src/orchestrate/test/internal/orchestrateTestCorrectCasting.ts +96 -96
- package/src/orchestrate/test/internal/orchestrateTestCorrectOverall.ts +219 -219
- package/src/orchestrate/test/internal/orchestrateTestCorrectRequest.ts +206 -206
- package/src/orchestrate/test/orchestrateTest.ts +161 -161
- package/src/orchestrate/test/orchestrateTestAuthorize.ts +125 -125
- package/src/orchestrate/test/orchestrateTestAuthorizeWrite.ts +263 -263
- package/src/orchestrate/test/orchestrateTestGenerate.ts +121 -121
- package/src/orchestrate/test/orchestrateTestGenerateWrite.ts +211 -211
- package/src/orchestrate/test/orchestrateTestOperation.ts +133 -133
- package/src/orchestrate/test/orchestrateTestOperationWrite.ts +221 -221
- package/src/orchestrate/test/orchestrateTestPrepare.ts +117 -117
- package/src/orchestrate/test/orchestrateTestPrepareWrite.ts +264 -264
- package/src/orchestrate/test/orchestrateTestScenario.ts +290 -290
- package/src/orchestrate/test/orchestrateTestScenarioReview.ts +262 -262
- package/src/orchestrate/test/programmers/AutoBeTestAuthorizeProgrammer.ts +149 -149
- package/src/orchestrate/test/programmers/AutoBeTestFunctionProgrammer.ts +90 -90
- package/src/orchestrate/test/programmers/AutoBeTestGenerateProgrammer.ts +170 -170
- package/src/orchestrate/test/programmers/AutoBeTestOperationProgrammer.ts +168 -168
- package/src/orchestrate/test/programmers/AutoBeTestPrepareProgrammer.ts +261 -261
- package/src/orchestrate/test/programmers/AutoBeTestScenarioProgrammer.ts +316 -316
- package/src/orchestrate/test/structures/IAutoBeTestArtifacts.ts +8 -8
- package/src/orchestrate/test/structures/IAutoBeTestAuthorizationWriteApplication.ts +113 -113
- package/src/orchestrate/test/structures/IAutoBeTestAuthorizeWriteResult.ts +10 -10
- package/src/orchestrate/test/structures/IAutoBeTestCorrectOverallApplication.ts +134 -134
- package/src/orchestrate/test/structures/IAutoBeTestCorrectRequestApplication.ts +152 -152
- package/src/orchestrate/test/structures/IAutoBeTestFunction.ts +10 -10
- package/src/orchestrate/test/structures/IAutoBeTestFunctionFailure.ts +10 -10
- package/src/orchestrate/test/structures/IAutoBeTestGenerateProcedure.ts +15 -15
- package/src/orchestrate/test/structures/IAutoBeTestGenerationWriteApplication.ts +145 -145
- package/src/orchestrate/test/structures/IAutoBeTestOperationProcedure.ts +17 -17
- package/src/orchestrate/test/structures/IAutoBeTestOperationWriteApplication.ts +162 -162
- package/src/orchestrate/test/structures/IAutoBeTestPrepareCorrectOverallApplication.ts +194 -194
- package/src/orchestrate/test/structures/IAutoBeTestPrepareProcedure.ts +8 -8
- package/src/orchestrate/test/structures/IAutoBeTestPrepareWriteApplication.ts +147 -147
- package/src/orchestrate/test/structures/IAutoBeTestProcedure.ts +10 -10
- package/src/orchestrate/test/structures/IAutoBeTestScenarioApplication.ts +105 -105
- package/src/orchestrate/test/structures/IAutoBeTestScenarioArtifacts.ts +8 -8
- package/src/orchestrate/test/structures/IAutoBeTestScenarioAuthorizationActor.ts +7 -7
- package/src/orchestrate/test/structures/IAutoBeTestScenarioReviewApplication.ts +133 -133
- package/src/orchestrate/test/utils/getPrerequisites.ts +51 -51
- package/src/orchestrate/test/utils/getReferenceIds.ts +26 -26
- package/src/orchestrate/test/utils/insertScriptToTestResult.ts +14 -14
- package/src/structures/IAutoBeConfig.ts +110 -110
- package/src/structures/IAutoBeOrchestrateHistory.ts +44 -44
- package/src/structures/IAutoBeProps.ts +102 -102
- package/src/structures/IAutoBeVendor.ts +113 -113
- package/src/utils/AutoBePreliminaryExhaustedError.ts +30 -30
- package/src/utils/AutoBeTimeoutError.ts +35 -35
- package/src/utils/EmbeddingProvider.ts +4 -4
- package/src/utils/LocalEmbeddingProvider.ts +145 -145
- package/src/utils/RAGRetrieval.ts +411 -411
- package/src/utils/TimedConversation.ts +125 -125
- package/src/utils/backoffRetry.ts +169 -169
- package/src/utils/divideArray.ts +35 -35
- package/src/utils/emplaceMap.ts +31 -31
- package/src/utils/executeCachedBatch.ts +67 -67
- package/src/utils/forceRetry.ts +15 -15
- package/src/utils/getEmbedder.ts +16 -16
- package/src/utils/parseTextFunctionCall.ts +437 -437
- package/src/utils/predicateStateMessage.ts +131 -131
- package/src/utils/validateEmptyCode.ts +73 -73
- package/src/utils/validateEnglishOnly.ts +224 -224
- package/README.md +0 -261
|
@@ -1,324 +1,324 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AutoBeAnalyze,
|
|
3
|
-
AutoBeAnalyzeWriteSectionEvent,
|
|
4
|
-
} from "@autobe/interface";
|
|
5
|
-
import YAML from "yaml";
|
|
6
|
-
|
|
7
|
-
// ─── YAML-based Error Code Canonical Registry ───
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* A single canonical error code entry extracted from a YAML spec block in
|
|
11
|
-
* 04-business-rules.
|
|
12
|
-
*/
|
|
13
|
-
export interface IErrorCodeRegistryEntry {
|
|
14
|
-
/** Error code, e.g. "TODO_NOT_FOUND" */
|
|
15
|
-
code: string;
|
|
16
|
-
/** HTTP status code, e.g. 404 */
|
|
17
|
-
http: number;
|
|
18
|
-
/** Condition description */
|
|
19
|
-
condition: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* A reference to an error code found via backtick pattern in non-canonical
|
|
24
|
-
* files.
|
|
25
|
-
*/
|
|
26
|
-
export interface IErrorCodeReference {
|
|
27
|
-
code: string;
|
|
28
|
-
fileIndex: number;
|
|
29
|
-
sectionTitle: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** Result of comparing canonical error code definitions to backtick references. */
|
|
33
|
-
export interface IErrorCodeValidationResult {
|
|
34
|
-
/** All canonical error codes from 04-business-rules YAML blocks */
|
|
35
|
-
canonical: IErrorCodeRegistryEntry[];
|
|
36
|
-
/** All backtick error code references in other files */
|
|
37
|
-
references: IErrorCodeReference[];
|
|
38
|
-
/** References that don't match any canonical definition */
|
|
39
|
-
undefinedReferences: IErrorCodeReference[];
|
|
40
|
-
/** YAML parse errors */
|
|
41
|
-
parseErrors: Array<{
|
|
42
|
-
fileIndex: number;
|
|
43
|
-
sectionTitle: string;
|
|
44
|
-
error: string;
|
|
45
|
-
}>;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export interface IErrorCodeConflict {
|
|
49
|
-
/** Normalized condition key */
|
|
50
|
-
conditionKey: string;
|
|
51
|
-
/** Different error codes for the same condition */
|
|
52
|
-
codes: Array<{
|
|
53
|
-
errorCode: string;
|
|
54
|
-
httpStatus: number;
|
|
55
|
-
files: string[];
|
|
56
|
-
}>;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// ─── YAML Block Extraction ───
|
|
60
|
-
|
|
61
|
-
const YAML_CODE_BLOCK_REGEX = /```yaml\n([\s\S]*?)```/g;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Extract canonical error codes from 04-business-rules YAML spec blocks.
|
|
65
|
-
*
|
|
66
|
-
* Expects YAML blocks with structure:
|
|
67
|
-
*
|
|
68
|
-
* ```yaml
|
|
69
|
-
* errors:
|
|
70
|
-
* - code: TODO_NOT_FOUND
|
|
71
|
-
* http: 404
|
|
72
|
-
* condition: "requested todo does not exist"
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
const extractCanonicalErrorCodes = (
|
|
76
|
-
fileIndex: number,
|
|
77
|
-
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][],
|
|
78
|
-
): {
|
|
79
|
-
entries: IErrorCodeRegistryEntry[];
|
|
80
|
-
errors: Array<{ fileIndex: number; sectionTitle: string; error: string }>;
|
|
81
|
-
} => {
|
|
82
|
-
const entries: IErrorCodeRegistryEntry[] = [];
|
|
83
|
-
const errors: Array<{
|
|
84
|
-
fileIndex: number;
|
|
85
|
-
sectionTitle: string;
|
|
86
|
-
error: string;
|
|
87
|
-
}> = [];
|
|
88
|
-
|
|
89
|
-
for (const sectionsForModule of sectionEvents) {
|
|
90
|
-
for (const sectionEvent of sectionsForModule) {
|
|
91
|
-
for (const section of sectionEvent.sectionSections) {
|
|
92
|
-
const yamlMatches = section.content.matchAll(YAML_CODE_BLOCK_REGEX);
|
|
93
|
-
for (const match of yamlMatches) {
|
|
94
|
-
const yamlContent = match[1] ?? "";
|
|
95
|
-
try {
|
|
96
|
-
const parsed = YAML.parse(yamlContent);
|
|
97
|
-
if (
|
|
98
|
-
parsed &&
|
|
99
|
-
typeof parsed === "object" &&
|
|
100
|
-
Array.isArray(parsed.errors)
|
|
101
|
-
) {
|
|
102
|
-
for (const err of parsed.errors) {
|
|
103
|
-
if (err && typeof err.code === "string") {
|
|
104
|
-
entries.push({
|
|
105
|
-
code: err.code,
|
|
106
|
-
http: typeof err.http === "number" ? err.http : 400,
|
|
107
|
-
condition: String(err.condition ?? ""),
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
} catch (e) {
|
|
113
|
-
errors.push({
|
|
114
|
-
fileIndex,
|
|
115
|
-
sectionTitle: section.title,
|
|
116
|
-
error: `YAML parse error: ${e instanceof Error ? e.message : String(e)}`,
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return { entries, errors };
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
// ─── Backtick Reference Extraction ───
|
|
128
|
-
|
|
129
|
-
/** Match backtick `UPPER_SNAKE_CASE` patterns (error codes) */
|
|
130
|
-
const BACKTICK_ERROR_CODE_REGEX = /`([A-Z][A-Z0-9_]+)`/g;
|
|
131
|
-
|
|
132
|
-
/** Extract backtick `ERROR_CODE` references from section content. */
|
|
133
|
-
const extractBacktickErrorCodeReferences = (
|
|
134
|
-
fileIndex: number,
|
|
135
|
-
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][],
|
|
136
|
-
): IErrorCodeReference[] => {
|
|
137
|
-
const refs: IErrorCodeReference[] = [];
|
|
138
|
-
|
|
139
|
-
for (const sectionsForModule of sectionEvents) {
|
|
140
|
-
for (const sectionEvent of sectionsForModule) {
|
|
141
|
-
for (const section of sectionEvent.sectionSections) {
|
|
142
|
-
const matches = section.content.matchAll(BACKTICK_ERROR_CODE_REGEX);
|
|
143
|
-
for (const match of matches) {
|
|
144
|
-
// Skip common non-error-code patterns (HTTP methods, etc.)
|
|
145
|
-
const code = match[1]!;
|
|
146
|
-
if (
|
|
147
|
-
code === "GET" ||
|
|
148
|
-
code === "POST" ||
|
|
149
|
-
code === "PUT" ||
|
|
150
|
-
code === "PATCH" ||
|
|
151
|
-
code === "DELETE" ||
|
|
152
|
-
code === "HEAD" ||
|
|
153
|
-
code === "OPTIONS"
|
|
154
|
-
)
|
|
155
|
-
continue;
|
|
156
|
-
refs.push({
|
|
157
|
-
code,
|
|
158
|
-
fileIndex,
|
|
159
|
-
sectionTitle: section.title,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
return refs;
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
// ─── Main Validation Function ───
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Validate error code references across files using YAML canonical definitions.
|
|
173
|
-
*
|
|
174
|
-
* 1. Extracts canonical error codes from 04-business-rules YAML blocks
|
|
175
|
-
* 2. Extracts backtick `ERROR_CODE` references from 03-functional-requirements
|
|
176
|
-
* 3. Reports undefined references
|
|
177
|
-
*/
|
|
178
|
-
export const validateErrorCodes = (props: {
|
|
179
|
-
files: Array<{
|
|
180
|
-
file: AutoBeAnalyze.IFileScenario;
|
|
181
|
-
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
|
|
182
|
-
}>;
|
|
183
|
-
}): IErrorCodeValidationResult => {
|
|
184
|
-
let canonical: IErrorCodeRegistryEntry[] = [];
|
|
185
|
-
const parseErrors: IErrorCodeValidationResult["parseErrors"] = [];
|
|
186
|
-
|
|
187
|
-
// Extract canonical from 04-business-rules
|
|
188
|
-
const businessRulesIndex = props.files.findIndex(
|
|
189
|
-
(f) => f.file.filename === "04-business-rules.md",
|
|
190
|
-
);
|
|
191
|
-
|
|
192
|
-
if (businessRulesIndex >= 0) {
|
|
193
|
-
const result = extractCanonicalErrorCodes(
|
|
194
|
-
businessRulesIndex,
|
|
195
|
-
props.files[businessRulesIndex]!.sectionEvents,
|
|
196
|
-
);
|
|
197
|
-
canonical = result.entries;
|
|
198
|
-
parseErrors.push(...result.errors);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Build canonical lookup set
|
|
202
|
-
const canonicalSet = new Set(canonical.map((e) => e.code));
|
|
203
|
-
|
|
204
|
-
// Extract references from 03-functional-requirements
|
|
205
|
-
const references: IErrorCodeReference[] = [];
|
|
206
|
-
for (let i = 0; i < props.files.length; i++) {
|
|
207
|
-
const filename = props.files[i]!.file.filename;
|
|
208
|
-
if (filename === "03-functional-requirements.md") {
|
|
209
|
-
references.push(
|
|
210
|
-
...extractBacktickErrorCodeReferences(i, props.files[i]!.sectionEvents),
|
|
211
|
-
);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
const undefinedReferences = references.filter(
|
|
216
|
-
(ref) => !canonicalSet.has(ref.code),
|
|
217
|
-
);
|
|
218
|
-
|
|
219
|
-
return { canonical, references, undefinedReferences, parseErrors };
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
// ─── Legacy exports (kept for backward compatibility) ───
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Detect error code conflicts across files.
|
|
226
|
-
*
|
|
227
|
-
* Now operates on YAML-extracted data. A conflict occurs when the same error
|
|
228
|
-
* code appears with different HTTP statuses across YAML blocks.
|
|
229
|
-
*/
|
|
230
|
-
export const detectErrorCodeConflicts = (props: {
|
|
231
|
-
files: Array<{
|
|
232
|
-
file: AutoBeAnalyze.IFileScenario;
|
|
233
|
-
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
|
|
234
|
-
}>;
|
|
235
|
-
}): IErrorCodeConflict[] => {
|
|
236
|
-
// code → { http → Set<filename> }
|
|
237
|
-
const codeMap: Map<string, Map<number, Set<string>>> = new Map();
|
|
238
|
-
|
|
239
|
-
for (const { file, sectionEvents } of props.files) {
|
|
240
|
-
for (const sectionsForModule of sectionEvents) {
|
|
241
|
-
for (const sectionEvent of sectionsForModule) {
|
|
242
|
-
for (const section of sectionEvent.sectionSections) {
|
|
243
|
-
const yamlMatches = section.content.matchAll(YAML_CODE_BLOCK_REGEX);
|
|
244
|
-
for (const match of yamlMatches) {
|
|
245
|
-
const yamlContent = match[1] ?? "";
|
|
246
|
-
try {
|
|
247
|
-
const parsed = YAML.parse(yamlContent);
|
|
248
|
-
if (
|
|
249
|
-
parsed &&
|
|
250
|
-
typeof parsed === "object" &&
|
|
251
|
-
Array.isArray(parsed.errors)
|
|
252
|
-
) {
|
|
253
|
-
for (const err of parsed.errors) {
|
|
254
|
-
if (!err || typeof err.code !== "string") continue;
|
|
255
|
-
const code = err.code;
|
|
256
|
-
const http = typeof err.http === "number" ? err.http : 400;
|
|
257
|
-
if (!codeMap.has(code)) codeMap.set(code, new Map());
|
|
258
|
-
const httpMap = codeMap.get(code)!;
|
|
259
|
-
if (!httpMap.has(http)) httpMap.set(http, new Set());
|
|
260
|
-
httpMap.get(http)!.add(file.filename);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
} catch {
|
|
264
|
-
// skip parse errors
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
return [...codeMap.entries()]
|
|
273
|
-
.filter(([, httpMap]) => httpMap.size > 1)
|
|
274
|
-
.map(([code, httpMap]) => ({
|
|
275
|
-
conditionKey: code,
|
|
276
|
-
codes: [...httpMap.entries()].map(([http, files]) => ({
|
|
277
|
-
errorCode: code,
|
|
278
|
-
httpStatus: http,
|
|
279
|
-
files: [...files],
|
|
280
|
-
})),
|
|
281
|
-
}));
|
|
282
|
-
};
|
|
283
|
-
|
|
284
|
-
/** Build a map from filename → list of error code conflict feedback strings. */
|
|
285
|
-
export const buildFileErrorCodeConflictMap = (
|
|
286
|
-
conflicts: IErrorCodeConflict[],
|
|
287
|
-
): Map<string, string[]> => {
|
|
288
|
-
const map: Map<string, string[]> = new Map();
|
|
289
|
-
|
|
290
|
-
for (const conflict of conflicts) {
|
|
291
|
-
const allFiles = new Set(conflict.codes.flatMap((c) => c.files));
|
|
292
|
-
const feedback =
|
|
293
|
-
`Error code conflict for "${conflict.conditionKey}": ` +
|
|
294
|
-
conflict.codes
|
|
295
|
-
.map((c) => `HTTP ${c.httpStatus} in [${c.files.join(", ")}]`)
|
|
296
|
-
.join(" vs ") +
|
|
297
|
-
`. Use ONE canonical HTTP status.`;
|
|
298
|
-
|
|
299
|
-
for (const filename of allFiles) {
|
|
300
|
-
if (!map.has(filename)) map.set(filename, []);
|
|
301
|
-
map.get(filename)!.push(feedback);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
return map;
|
|
306
|
-
};
|
|
307
|
-
|
|
308
|
-
/** @deprecated Bridge block registry removed. Use validateErrorCodes() instead. */
|
|
309
|
-
export const buildErrorCodeRegistry = (props: {
|
|
310
|
-
files: Array<{
|
|
311
|
-
file: AutoBeAnalyze.IFileScenario;
|
|
312
|
-
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
|
|
313
|
-
}>;
|
|
314
|
-
}): IErrorCodeRegistryEntry[] => {
|
|
315
|
-
const result = validateErrorCodes(props);
|
|
316
|
-
return result.canonical;
|
|
317
|
-
};
|
|
318
|
-
|
|
319
|
-
/** @deprecated Bridge block injection removed. */
|
|
320
|
-
export const formatErrorCodeRegistryForPrompt = (
|
|
321
|
-
_registry: IErrorCodeRegistryEntry[],
|
|
322
|
-
): string => {
|
|
323
|
-
return "";
|
|
324
|
-
};
|
|
1
|
+
import {
|
|
2
|
+
AutoBeAnalyze,
|
|
3
|
+
AutoBeAnalyzeWriteSectionEvent,
|
|
4
|
+
} from "@autobe/interface";
|
|
5
|
+
import YAML from "yaml";
|
|
6
|
+
|
|
7
|
+
// ─── YAML-based Error Code Canonical Registry ───
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A single canonical error code entry extracted from a YAML spec block in
|
|
11
|
+
* 04-business-rules.
|
|
12
|
+
*/
|
|
13
|
+
export interface IErrorCodeRegistryEntry {
|
|
14
|
+
/** Error code, e.g. "TODO_NOT_FOUND" */
|
|
15
|
+
code: string;
|
|
16
|
+
/** HTTP status code, e.g. 404 */
|
|
17
|
+
http: number;
|
|
18
|
+
/** Condition description */
|
|
19
|
+
condition: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* A reference to an error code found via backtick pattern in non-canonical
|
|
24
|
+
* files.
|
|
25
|
+
*/
|
|
26
|
+
export interface IErrorCodeReference {
|
|
27
|
+
code: string;
|
|
28
|
+
fileIndex: number;
|
|
29
|
+
sectionTitle: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Result of comparing canonical error code definitions to backtick references. */
|
|
33
|
+
export interface IErrorCodeValidationResult {
|
|
34
|
+
/** All canonical error codes from 04-business-rules YAML blocks */
|
|
35
|
+
canonical: IErrorCodeRegistryEntry[];
|
|
36
|
+
/** All backtick error code references in other files */
|
|
37
|
+
references: IErrorCodeReference[];
|
|
38
|
+
/** References that don't match any canonical definition */
|
|
39
|
+
undefinedReferences: IErrorCodeReference[];
|
|
40
|
+
/** YAML parse errors */
|
|
41
|
+
parseErrors: Array<{
|
|
42
|
+
fileIndex: number;
|
|
43
|
+
sectionTitle: string;
|
|
44
|
+
error: string;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface IErrorCodeConflict {
|
|
49
|
+
/** Normalized condition key */
|
|
50
|
+
conditionKey: string;
|
|
51
|
+
/** Different error codes for the same condition */
|
|
52
|
+
codes: Array<{
|
|
53
|
+
errorCode: string;
|
|
54
|
+
httpStatus: number;
|
|
55
|
+
files: string[];
|
|
56
|
+
}>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ─── YAML Block Extraction ───
|
|
60
|
+
|
|
61
|
+
const YAML_CODE_BLOCK_REGEX = /```yaml\n([\s\S]*?)```/g;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Extract canonical error codes from 04-business-rules YAML spec blocks.
|
|
65
|
+
*
|
|
66
|
+
* Expects YAML blocks with structure:
|
|
67
|
+
*
|
|
68
|
+
* ```yaml
|
|
69
|
+
* errors:
|
|
70
|
+
* - code: TODO_NOT_FOUND
|
|
71
|
+
* http: 404
|
|
72
|
+
* condition: "requested todo does not exist"
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
const extractCanonicalErrorCodes = (
|
|
76
|
+
fileIndex: number,
|
|
77
|
+
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][],
|
|
78
|
+
): {
|
|
79
|
+
entries: IErrorCodeRegistryEntry[];
|
|
80
|
+
errors: Array<{ fileIndex: number; sectionTitle: string; error: string }>;
|
|
81
|
+
} => {
|
|
82
|
+
const entries: IErrorCodeRegistryEntry[] = [];
|
|
83
|
+
const errors: Array<{
|
|
84
|
+
fileIndex: number;
|
|
85
|
+
sectionTitle: string;
|
|
86
|
+
error: string;
|
|
87
|
+
}> = [];
|
|
88
|
+
|
|
89
|
+
for (const sectionsForModule of sectionEvents) {
|
|
90
|
+
for (const sectionEvent of sectionsForModule) {
|
|
91
|
+
for (const section of sectionEvent.sectionSections) {
|
|
92
|
+
const yamlMatches = section.content.matchAll(YAML_CODE_BLOCK_REGEX);
|
|
93
|
+
for (const match of yamlMatches) {
|
|
94
|
+
const yamlContent = match[1] ?? "";
|
|
95
|
+
try {
|
|
96
|
+
const parsed = YAML.parse(yamlContent);
|
|
97
|
+
if (
|
|
98
|
+
parsed &&
|
|
99
|
+
typeof parsed === "object" &&
|
|
100
|
+
Array.isArray(parsed.errors)
|
|
101
|
+
) {
|
|
102
|
+
for (const err of parsed.errors) {
|
|
103
|
+
if (err && typeof err.code === "string") {
|
|
104
|
+
entries.push({
|
|
105
|
+
code: err.code,
|
|
106
|
+
http: typeof err.http === "number" ? err.http : 400,
|
|
107
|
+
condition: String(err.condition ?? ""),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
} catch (e) {
|
|
113
|
+
errors.push({
|
|
114
|
+
fileIndex,
|
|
115
|
+
sectionTitle: section.title,
|
|
116
|
+
error: `YAML parse error: ${e instanceof Error ? e.message : String(e)}`,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return { entries, errors };
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// ─── Backtick Reference Extraction ───
|
|
128
|
+
|
|
129
|
+
/** Match backtick `UPPER_SNAKE_CASE` patterns (error codes) */
|
|
130
|
+
const BACKTICK_ERROR_CODE_REGEX = /`([A-Z][A-Z0-9_]+)`/g;
|
|
131
|
+
|
|
132
|
+
/** Extract backtick `ERROR_CODE` references from section content. */
|
|
133
|
+
const extractBacktickErrorCodeReferences = (
|
|
134
|
+
fileIndex: number,
|
|
135
|
+
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][],
|
|
136
|
+
): IErrorCodeReference[] => {
|
|
137
|
+
const refs: IErrorCodeReference[] = [];
|
|
138
|
+
|
|
139
|
+
for (const sectionsForModule of sectionEvents) {
|
|
140
|
+
for (const sectionEvent of sectionsForModule) {
|
|
141
|
+
for (const section of sectionEvent.sectionSections) {
|
|
142
|
+
const matches = section.content.matchAll(BACKTICK_ERROR_CODE_REGEX);
|
|
143
|
+
for (const match of matches) {
|
|
144
|
+
// Skip common non-error-code patterns (HTTP methods, etc.)
|
|
145
|
+
const code = match[1]!;
|
|
146
|
+
if (
|
|
147
|
+
code === "GET" ||
|
|
148
|
+
code === "POST" ||
|
|
149
|
+
code === "PUT" ||
|
|
150
|
+
code === "PATCH" ||
|
|
151
|
+
code === "DELETE" ||
|
|
152
|
+
code === "HEAD" ||
|
|
153
|
+
code === "OPTIONS"
|
|
154
|
+
)
|
|
155
|
+
continue;
|
|
156
|
+
refs.push({
|
|
157
|
+
code,
|
|
158
|
+
fileIndex,
|
|
159
|
+
sectionTitle: section.title,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return refs;
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// ─── Main Validation Function ───
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Validate error code references across files using YAML canonical definitions.
|
|
173
|
+
*
|
|
174
|
+
* 1. Extracts canonical error codes from 04-business-rules YAML blocks
|
|
175
|
+
* 2. Extracts backtick `ERROR_CODE` references from 03-functional-requirements
|
|
176
|
+
* 3. Reports undefined references
|
|
177
|
+
*/
|
|
178
|
+
export const validateErrorCodes = (props: {
|
|
179
|
+
files: Array<{
|
|
180
|
+
file: AutoBeAnalyze.IFileScenario;
|
|
181
|
+
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
|
|
182
|
+
}>;
|
|
183
|
+
}): IErrorCodeValidationResult => {
|
|
184
|
+
let canonical: IErrorCodeRegistryEntry[] = [];
|
|
185
|
+
const parseErrors: IErrorCodeValidationResult["parseErrors"] = [];
|
|
186
|
+
|
|
187
|
+
// Extract canonical from 04-business-rules
|
|
188
|
+
const businessRulesIndex = props.files.findIndex(
|
|
189
|
+
(f) => f.file.filename === "04-business-rules.md",
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
if (businessRulesIndex >= 0) {
|
|
193
|
+
const result = extractCanonicalErrorCodes(
|
|
194
|
+
businessRulesIndex,
|
|
195
|
+
props.files[businessRulesIndex]!.sectionEvents,
|
|
196
|
+
);
|
|
197
|
+
canonical = result.entries;
|
|
198
|
+
parseErrors.push(...result.errors);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Build canonical lookup set
|
|
202
|
+
const canonicalSet = new Set(canonical.map((e) => e.code));
|
|
203
|
+
|
|
204
|
+
// Extract references from 03-functional-requirements
|
|
205
|
+
const references: IErrorCodeReference[] = [];
|
|
206
|
+
for (let i = 0; i < props.files.length; i++) {
|
|
207
|
+
const filename = props.files[i]!.file.filename;
|
|
208
|
+
if (filename === "03-functional-requirements.md") {
|
|
209
|
+
references.push(
|
|
210
|
+
...extractBacktickErrorCodeReferences(i, props.files[i]!.sectionEvents),
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const undefinedReferences = references.filter(
|
|
216
|
+
(ref) => !canonicalSet.has(ref.code),
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
return { canonical, references, undefinedReferences, parseErrors };
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
// ─── Legacy exports (kept for backward compatibility) ───
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Detect error code conflicts across files.
|
|
226
|
+
*
|
|
227
|
+
* Now operates on YAML-extracted data. A conflict occurs when the same error
|
|
228
|
+
* code appears with different HTTP statuses across YAML blocks.
|
|
229
|
+
*/
|
|
230
|
+
export const detectErrorCodeConflicts = (props: {
|
|
231
|
+
files: Array<{
|
|
232
|
+
file: AutoBeAnalyze.IFileScenario;
|
|
233
|
+
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
|
|
234
|
+
}>;
|
|
235
|
+
}): IErrorCodeConflict[] => {
|
|
236
|
+
// code → { http → Set<filename> }
|
|
237
|
+
const codeMap: Map<string, Map<number, Set<string>>> = new Map();
|
|
238
|
+
|
|
239
|
+
for (const { file, sectionEvents } of props.files) {
|
|
240
|
+
for (const sectionsForModule of sectionEvents) {
|
|
241
|
+
for (const sectionEvent of sectionsForModule) {
|
|
242
|
+
for (const section of sectionEvent.sectionSections) {
|
|
243
|
+
const yamlMatches = section.content.matchAll(YAML_CODE_BLOCK_REGEX);
|
|
244
|
+
for (const match of yamlMatches) {
|
|
245
|
+
const yamlContent = match[1] ?? "";
|
|
246
|
+
try {
|
|
247
|
+
const parsed = YAML.parse(yamlContent);
|
|
248
|
+
if (
|
|
249
|
+
parsed &&
|
|
250
|
+
typeof parsed === "object" &&
|
|
251
|
+
Array.isArray(parsed.errors)
|
|
252
|
+
) {
|
|
253
|
+
for (const err of parsed.errors) {
|
|
254
|
+
if (!err || typeof err.code !== "string") continue;
|
|
255
|
+
const code = err.code;
|
|
256
|
+
const http = typeof err.http === "number" ? err.http : 400;
|
|
257
|
+
if (!codeMap.has(code)) codeMap.set(code, new Map());
|
|
258
|
+
const httpMap = codeMap.get(code)!;
|
|
259
|
+
if (!httpMap.has(http)) httpMap.set(http, new Set());
|
|
260
|
+
httpMap.get(http)!.add(file.filename);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
} catch {
|
|
264
|
+
// skip parse errors
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return [...codeMap.entries()]
|
|
273
|
+
.filter(([, httpMap]) => httpMap.size > 1)
|
|
274
|
+
.map(([code, httpMap]) => ({
|
|
275
|
+
conditionKey: code,
|
|
276
|
+
codes: [...httpMap.entries()].map(([http, files]) => ({
|
|
277
|
+
errorCode: code,
|
|
278
|
+
httpStatus: http,
|
|
279
|
+
files: [...files],
|
|
280
|
+
})),
|
|
281
|
+
}));
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
/** Build a map from filename → list of error code conflict feedback strings. */
|
|
285
|
+
export const buildFileErrorCodeConflictMap = (
|
|
286
|
+
conflicts: IErrorCodeConflict[],
|
|
287
|
+
): Map<string, string[]> => {
|
|
288
|
+
const map: Map<string, string[]> = new Map();
|
|
289
|
+
|
|
290
|
+
for (const conflict of conflicts) {
|
|
291
|
+
const allFiles = new Set(conflict.codes.flatMap((c) => c.files));
|
|
292
|
+
const feedback =
|
|
293
|
+
`Error code conflict for "${conflict.conditionKey}": ` +
|
|
294
|
+
conflict.codes
|
|
295
|
+
.map((c) => `HTTP ${c.httpStatus} in [${c.files.join(", ")}]`)
|
|
296
|
+
.join(" vs ") +
|
|
297
|
+
`. Use ONE canonical HTTP status.`;
|
|
298
|
+
|
|
299
|
+
for (const filename of allFiles) {
|
|
300
|
+
if (!map.has(filename)) map.set(filename, []);
|
|
301
|
+
map.get(filename)!.push(feedback);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return map;
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
/** @deprecated Bridge block registry removed. Use validateErrorCodes() instead. */
|
|
309
|
+
export const buildErrorCodeRegistry = (props: {
|
|
310
|
+
files: Array<{
|
|
311
|
+
file: AutoBeAnalyze.IFileScenario;
|
|
312
|
+
sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
|
|
313
|
+
}>;
|
|
314
|
+
}): IErrorCodeRegistryEntry[] => {
|
|
315
|
+
const result = validateErrorCodes(props);
|
|
316
|
+
return result.canonical;
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
/** @deprecated Bridge block injection removed. */
|
|
320
|
+
export const formatErrorCodeRegistryForPrompt = (
|
|
321
|
+
_registry: IErrorCodeRegistryEntry[],
|
|
322
|
+
): string => {
|
|
323
|
+
return "";
|
|
324
|
+
};
|