@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,113 +1,113 @@
|
|
|
1
|
-
import OpenAI from "openai";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Interface representing AI vendor configuration for the AutoBeAgent.
|
|
5
|
-
*
|
|
6
|
-
* Defines the connection parameters and settings required to integrate with AI
|
|
7
|
-
* service providers that power the vibe coding pipeline. While utilizing the
|
|
8
|
-
* OpenAI SDK as the connection interface, this configuration supports various
|
|
9
|
-
* LLM vendors beyond OpenAI through flexible endpoint and authentication
|
|
10
|
-
* configuration, enabling integration with Claude, DeepSeek, Meta Llama, and
|
|
11
|
-
* other providers that follow OpenAI-compatible API patterns.
|
|
12
|
-
*
|
|
13
|
-
* The vendor configuration determines the AI capabilities available throughout
|
|
14
|
-
* the entire automated development workflow, from requirements analysis and
|
|
15
|
-
* database design through API specification, testing, and final implementation.
|
|
16
|
-
* Different vendors may offer varying performance characteristics, cost
|
|
17
|
-
* structures, and feature support that can be optimized for specific vibe
|
|
18
|
-
* coding needs.
|
|
19
|
-
*
|
|
20
|
-
* Concurrent request management is built-in to prevent API rate limiting and
|
|
21
|
-
* optimize resource utilization across multiple development phases and parallel
|
|
22
|
-
* operations within the vibe coding pipeline.
|
|
23
|
-
*
|
|
24
|
-
* @author Samchon
|
|
25
|
-
*/
|
|
26
|
-
export interface IAutoBeVendor {
|
|
27
|
-
/**
|
|
28
|
-
* OpenAI SDK instance configured for the target AI vendor.
|
|
29
|
-
*
|
|
30
|
-
* Provides the API connection interface used by the AutoBeAgent to
|
|
31
|
-
* communicate with AI services. While this uses the OpenAI SDK, it can be
|
|
32
|
-
* configured to connect with various LLM providers by setting the appropriate
|
|
33
|
-
* `baseURL` and authentication credentials. The SDK serves as a universal
|
|
34
|
-
* connector that abstracts the underlying API communication protocols.
|
|
35
|
-
*
|
|
36
|
-
* For non-OpenAI vendors, configure the SDK with the vendor's API endpoint
|
|
37
|
-
* and authentication requirements to enable seamless integration with the
|
|
38
|
-
* vibe coding system.
|
|
39
|
-
*/
|
|
40
|
-
api: OpenAI;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Specific model identifier to use for AI operations.
|
|
44
|
-
*
|
|
45
|
-
* Specifies the exact model name or identifier that should be used for vibe
|
|
46
|
-
* coding tasks. Supports both official OpenAI chat models and custom model
|
|
47
|
-
* identifiers for third-party hosting services, cloud providers, or
|
|
48
|
-
* alternative LLM vendors. The model choice significantly impacts the
|
|
49
|
-
* quality, performance, and cost of the automated development process.
|
|
50
|
-
*
|
|
51
|
-
* Examples include "gpt-4", "gpt-3.5-turbo" for OpenAI, or vendor-specific
|
|
52
|
-
* identifiers like "claude-3-sonnet", "deepseek-chat-v3", "llama3.3-70b" when
|
|
53
|
-
* using alternative providers through compatible APIs.
|
|
54
|
-
*/
|
|
55
|
-
model: OpenAI.ChatModel | ({} & string);
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Optional request configuration for API calls.
|
|
59
|
-
*
|
|
60
|
-
* Additional request options that will be applied to all API calls made
|
|
61
|
-
* through the OpenAI SDK. This can include custom headers, timeouts, retry
|
|
62
|
-
* policies, or other HTTP client configuration that may be required for
|
|
63
|
-
* specific vendor integrations or enterprise environments.
|
|
64
|
-
*
|
|
65
|
-
* These options provide fine-grained control over the API communication
|
|
66
|
-
* behavior and can be used to optimize performance or meet specific
|
|
67
|
-
* infrastructure requirements.
|
|
68
|
-
*/
|
|
69
|
-
options?: OpenAI.RequestOptions | undefined;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Maximum number of concurrent API requests allowed.
|
|
73
|
-
*
|
|
74
|
-
* Controls the concurrency level for AI API calls to prevent rate limiting,
|
|
75
|
-
* manage resource consumption, and optimize system performance. The vibe
|
|
76
|
-
* coding pipeline may make multiple parallel requests during development
|
|
77
|
-
* phases, and this setting ensures controlled resource utilization.
|
|
78
|
-
*
|
|
79
|
-
* A reasonable default provides balanced performance while respecting typical
|
|
80
|
-
* API rate limits. Lower values reduce resource consumption but may slow
|
|
81
|
-
* development progress, while higher values can improve performance but risk
|
|
82
|
-
* hitting rate limits or overwhelming the AI service.
|
|
83
|
-
*
|
|
84
|
-
* Set to undefined to disable concurrency limiting, allowing unlimited
|
|
85
|
-
* parallel requests (use with caution based on your API limits and
|
|
86
|
-
* infrastructure capacity).
|
|
87
|
-
*
|
|
88
|
-
* @default 16
|
|
89
|
-
*/
|
|
90
|
-
semaphore?: number | undefined;
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Indicates whether this vendor/model supports explicit tool choice control.
|
|
94
|
-
*
|
|
95
|
-
* When set to `true`, the agent may pass the `tool_choice` parameter with a
|
|
96
|
-
* value of `"required"` (or other explicit values) for models that implement
|
|
97
|
-
* OpenAI-style tool calling. This allows the agent to force the model to call
|
|
98
|
-
* one of the provided tools when appropriate.
|
|
99
|
-
*
|
|
100
|
-
* When set to `false`, the agent will avoid sending `tool_choice` in a way
|
|
101
|
-
* that forces tool invocation, and will instead rely on the model's default
|
|
102
|
-
* behavior or omit tool-choice configuration entirely. This should be used
|
|
103
|
-
* for vendors or models that do not understand, partially implement, or are
|
|
104
|
-
* unstable with the `tool_choice` parameter.
|
|
105
|
-
*
|
|
106
|
-
* This flag is necessary so that a single agent implementation can work
|
|
107
|
-
* across multiple vendors and models with differing levels of tool-calling
|
|
108
|
-
* support, without causing API errors or unexpected behavior.
|
|
109
|
-
*
|
|
110
|
-
* @default true
|
|
111
|
-
*/
|
|
112
|
-
useToolChoice?: boolean;
|
|
113
|
-
}
|
|
1
|
+
import OpenAI from "openai";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Interface representing AI vendor configuration for the AutoBeAgent.
|
|
5
|
+
*
|
|
6
|
+
* Defines the connection parameters and settings required to integrate with AI
|
|
7
|
+
* service providers that power the vibe coding pipeline. While utilizing the
|
|
8
|
+
* OpenAI SDK as the connection interface, this configuration supports various
|
|
9
|
+
* LLM vendors beyond OpenAI through flexible endpoint and authentication
|
|
10
|
+
* configuration, enabling integration with Claude, DeepSeek, Meta Llama, and
|
|
11
|
+
* other providers that follow OpenAI-compatible API patterns.
|
|
12
|
+
*
|
|
13
|
+
* The vendor configuration determines the AI capabilities available throughout
|
|
14
|
+
* the entire automated development workflow, from requirements analysis and
|
|
15
|
+
* database design through API specification, testing, and final implementation.
|
|
16
|
+
* Different vendors may offer varying performance characteristics, cost
|
|
17
|
+
* structures, and feature support that can be optimized for specific vibe
|
|
18
|
+
* coding needs.
|
|
19
|
+
*
|
|
20
|
+
* Concurrent request management is built-in to prevent API rate limiting and
|
|
21
|
+
* optimize resource utilization across multiple development phases and parallel
|
|
22
|
+
* operations within the vibe coding pipeline.
|
|
23
|
+
*
|
|
24
|
+
* @author Samchon
|
|
25
|
+
*/
|
|
26
|
+
export interface IAutoBeVendor {
|
|
27
|
+
/**
|
|
28
|
+
* OpenAI SDK instance configured for the target AI vendor.
|
|
29
|
+
*
|
|
30
|
+
* Provides the API connection interface used by the AutoBeAgent to
|
|
31
|
+
* communicate with AI services. While this uses the OpenAI SDK, it can be
|
|
32
|
+
* configured to connect with various LLM providers by setting the appropriate
|
|
33
|
+
* `baseURL` and authentication credentials. The SDK serves as a universal
|
|
34
|
+
* connector that abstracts the underlying API communication protocols.
|
|
35
|
+
*
|
|
36
|
+
* For non-OpenAI vendors, configure the SDK with the vendor's API endpoint
|
|
37
|
+
* and authentication requirements to enable seamless integration with the
|
|
38
|
+
* vibe coding system.
|
|
39
|
+
*/
|
|
40
|
+
api: OpenAI;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Specific model identifier to use for AI operations.
|
|
44
|
+
*
|
|
45
|
+
* Specifies the exact model name or identifier that should be used for vibe
|
|
46
|
+
* coding tasks. Supports both official OpenAI chat models and custom model
|
|
47
|
+
* identifiers for third-party hosting services, cloud providers, or
|
|
48
|
+
* alternative LLM vendors. The model choice significantly impacts the
|
|
49
|
+
* quality, performance, and cost of the automated development process.
|
|
50
|
+
*
|
|
51
|
+
* Examples include "gpt-4", "gpt-3.5-turbo" for OpenAI, or vendor-specific
|
|
52
|
+
* identifiers like "claude-3-sonnet", "deepseek-chat-v3", "llama3.3-70b" when
|
|
53
|
+
* using alternative providers through compatible APIs.
|
|
54
|
+
*/
|
|
55
|
+
model: OpenAI.ChatModel | ({} & string);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Optional request configuration for API calls.
|
|
59
|
+
*
|
|
60
|
+
* Additional request options that will be applied to all API calls made
|
|
61
|
+
* through the OpenAI SDK. This can include custom headers, timeouts, retry
|
|
62
|
+
* policies, or other HTTP client configuration that may be required for
|
|
63
|
+
* specific vendor integrations or enterprise environments.
|
|
64
|
+
*
|
|
65
|
+
* These options provide fine-grained control over the API communication
|
|
66
|
+
* behavior and can be used to optimize performance or meet specific
|
|
67
|
+
* infrastructure requirements.
|
|
68
|
+
*/
|
|
69
|
+
options?: OpenAI.RequestOptions | undefined;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Maximum number of concurrent API requests allowed.
|
|
73
|
+
*
|
|
74
|
+
* Controls the concurrency level for AI API calls to prevent rate limiting,
|
|
75
|
+
* manage resource consumption, and optimize system performance. The vibe
|
|
76
|
+
* coding pipeline may make multiple parallel requests during development
|
|
77
|
+
* phases, and this setting ensures controlled resource utilization.
|
|
78
|
+
*
|
|
79
|
+
* A reasonable default provides balanced performance while respecting typical
|
|
80
|
+
* API rate limits. Lower values reduce resource consumption but may slow
|
|
81
|
+
* development progress, while higher values can improve performance but risk
|
|
82
|
+
* hitting rate limits or overwhelming the AI service.
|
|
83
|
+
*
|
|
84
|
+
* Set to undefined to disable concurrency limiting, allowing unlimited
|
|
85
|
+
* parallel requests (use with caution based on your API limits and
|
|
86
|
+
* infrastructure capacity).
|
|
87
|
+
*
|
|
88
|
+
* @default 16
|
|
89
|
+
*/
|
|
90
|
+
semaphore?: number | undefined;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Indicates whether this vendor/model supports explicit tool choice control.
|
|
94
|
+
*
|
|
95
|
+
* When set to `true`, the agent may pass the `tool_choice` parameter with a
|
|
96
|
+
* value of `"required"` (or other explicit values) for models that implement
|
|
97
|
+
* OpenAI-style tool calling. This allows the agent to force the model to call
|
|
98
|
+
* one of the provided tools when appropriate.
|
|
99
|
+
*
|
|
100
|
+
* When set to `false`, the agent will avoid sending `tool_choice` in a way
|
|
101
|
+
* that forces tool invocation, and will instead rely on the model's default
|
|
102
|
+
* behavior or omit tool-choice configuration entirely. This should be used
|
|
103
|
+
* for vendors or models that do not understand, partially implement, or are
|
|
104
|
+
* unstable with the `tool_choice` parameter.
|
|
105
|
+
*
|
|
106
|
+
* This flag is necessary so that a single agent implementation can work
|
|
107
|
+
* across multiple vendors and models with differing levels of tool-calling
|
|
108
|
+
* support, without causing API errors or unexpected behavior.
|
|
109
|
+
*
|
|
110
|
+
* @default true
|
|
111
|
+
*/
|
|
112
|
+
useToolChoice?: boolean;
|
|
113
|
+
}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Custom error indicating RAG loop exhausted all retry attempts.
|
|
3
|
-
*
|
|
4
|
-
* Thrown by `AutoBePreliminaryController.orchestrate()` when the LLM repeatedly
|
|
5
|
-
* requests more data without ever calling `complete`, exceeding
|
|
6
|
-
* `AutoBeConfigConstant.RAG_LIMIT` iterations.
|
|
7
|
-
*
|
|
8
|
-
* Caught alongside `AutoBeTimeoutError` in orchestration pipelines to trigger
|
|
9
|
-
* force-pass behavior instead of crashing the entire process.
|
|
10
|
-
*
|
|
11
|
-
* @author Samchon
|
|
12
|
-
*/
|
|
13
|
-
export class AutoBePreliminaryExhaustedError extends Error {
|
|
14
|
-
public constructor(message?: string) {
|
|
15
|
-
super(
|
|
16
|
-
message ?? "Preliminary process exceeded the maximum number of retries.",
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
const proto = new.target.prototype;
|
|
20
|
-
if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
|
|
21
|
-
else {
|
|
22
|
-
// biome-ignore lint: intended
|
|
23
|
-
(this as any).__proto__ = proto;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public get name(): string {
|
|
28
|
-
return this.constructor.name;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Custom error indicating RAG loop exhausted all retry attempts.
|
|
3
|
+
*
|
|
4
|
+
* Thrown by `AutoBePreliminaryController.orchestrate()` when the LLM repeatedly
|
|
5
|
+
* requests more data without ever calling `complete`, exceeding
|
|
6
|
+
* `AutoBeConfigConstant.RAG_LIMIT` iterations.
|
|
7
|
+
*
|
|
8
|
+
* Caught alongside `AutoBeTimeoutError` in orchestration pipelines to trigger
|
|
9
|
+
* force-pass behavior instead of crashing the entire process.
|
|
10
|
+
*
|
|
11
|
+
* @author Samchon
|
|
12
|
+
*/
|
|
13
|
+
export class AutoBePreliminaryExhaustedError extends Error {
|
|
14
|
+
public constructor(message?: string) {
|
|
15
|
+
super(
|
|
16
|
+
message ?? "Preliminary process exceeded the maximum number of retries.",
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const proto = new.target.prototype;
|
|
20
|
+
if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
|
|
21
|
+
else {
|
|
22
|
+
// biome-ignore lint: intended
|
|
23
|
+
(this as any).__proto__ = proto;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public get name(): string {
|
|
28
|
+
return this.constructor.name;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Custom error indicating LLM conversation exceeded configured timeout limit.
|
|
3
|
-
*
|
|
4
|
-
* Used by `TimedConversation` to wrap conversation operations with timeout
|
|
5
|
-
* enforcement. When LLM response takes too long, this error is thrown to
|
|
6
|
-
* distinguish timeout failures from other error types.
|
|
7
|
-
*
|
|
8
|
-
* The distinction is critical for retry logic: timeout errors are NOT retried
|
|
9
|
-
* (immediate failure) while other errors can be retried. This prevents wasting
|
|
10
|
-
* resources on conversations that are fundamentally too slow.
|
|
11
|
-
*
|
|
12
|
-
* @author Samchon
|
|
13
|
-
*/
|
|
14
|
-
export class AutoBeTimeoutError extends Error {
|
|
15
|
-
/**
|
|
16
|
-
* Creates timeout error with descriptive message.
|
|
17
|
-
*
|
|
18
|
-
* @param message Error description including timeout duration
|
|
19
|
-
*/
|
|
20
|
-
public constructor(message: string) {
|
|
21
|
-
super(message);
|
|
22
|
-
|
|
23
|
-
const proto = new.target.prototype;
|
|
24
|
-
if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
|
|
25
|
-
else {
|
|
26
|
-
// biome-ignore lint: intended
|
|
27
|
-
(this as any).__proto__ = proto;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** Returns error class name for identification. */
|
|
32
|
-
public get name(): string {
|
|
33
|
-
return this.constructor.name;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Custom error indicating LLM conversation exceeded configured timeout limit.
|
|
3
|
+
*
|
|
4
|
+
* Used by `TimedConversation` to wrap conversation operations with timeout
|
|
5
|
+
* enforcement. When LLM response takes too long, this error is thrown to
|
|
6
|
+
* distinguish timeout failures from other error types.
|
|
7
|
+
*
|
|
8
|
+
* The distinction is critical for retry logic: timeout errors are NOT retried
|
|
9
|
+
* (immediate failure) while other errors can be retried. This prevents wasting
|
|
10
|
+
* resources on conversations that are fundamentally too slow.
|
|
11
|
+
*
|
|
12
|
+
* @author Samchon
|
|
13
|
+
*/
|
|
14
|
+
export class AutoBeTimeoutError extends Error {
|
|
15
|
+
/**
|
|
16
|
+
* Creates timeout error with descriptive message.
|
|
17
|
+
*
|
|
18
|
+
* @param message Error description including timeout duration
|
|
19
|
+
*/
|
|
20
|
+
public constructor(message: string) {
|
|
21
|
+
super(message);
|
|
22
|
+
|
|
23
|
+
const proto = new.target.prototype;
|
|
24
|
+
if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
|
|
25
|
+
else {
|
|
26
|
+
// biome-ignore lint: intended
|
|
27
|
+
(this as any).__proto__ = proto;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Returns error class name for identification. */
|
|
32
|
+
public get name(): string {
|
|
33
|
+
return this.constructor.name;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface EmbeddingProvider {
|
|
2
|
-
embed(texts: string[]): Promise<number[][]>;
|
|
3
|
-
dim?: number;
|
|
4
|
-
}
|
|
1
|
+
export interface EmbeddingProvider {
|
|
2
|
+
embed(texts: string[]): Promise<number[][]>;
|
|
3
|
+
dim?: number;
|
|
4
|
+
}
|
|
@@ -1,145 +1,145 @@
|
|
|
1
|
-
import { TransformersEnvironment } from "@huggingface/transformers/types/env";
|
|
2
|
-
import { createHash } from "node:crypto";
|
|
3
|
-
import typia from "typia";
|
|
4
|
-
|
|
5
|
-
import type { EmbeddingProvider } from "./EmbeddingProvider";
|
|
6
|
-
|
|
7
|
-
interface TensorLike {
|
|
8
|
-
tolist?: () => unknown;
|
|
9
|
-
data?: ArrayLike<number>;
|
|
10
|
-
dims?: number[];
|
|
11
|
-
shape?: number[];
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
type FeatureExtractionPipeline = (
|
|
15
|
-
inputs: string[] | string,
|
|
16
|
-
options?: {
|
|
17
|
-
pooling?: "none" | "mean" | "max";
|
|
18
|
-
normalize?: boolean;
|
|
19
|
-
},
|
|
20
|
-
) => Promise<unknown>;
|
|
21
|
-
|
|
22
|
-
export class LocalEmbeddingProvider implements EmbeddingProvider {
|
|
23
|
-
public dim?: number;
|
|
24
|
-
|
|
25
|
-
private extractorPromise: Promise<FeatureExtractionPipeline>;
|
|
26
|
-
private cache = new Map<string, number[]>();
|
|
27
|
-
|
|
28
|
-
constructor(
|
|
29
|
-
private readonly options: {
|
|
30
|
-
modelIdOrPath: string;
|
|
31
|
-
|
|
32
|
-
cacheDir?: string;
|
|
33
|
-
|
|
34
|
-
quantized?: boolean;
|
|
35
|
-
|
|
36
|
-
batchSize?: number;
|
|
37
|
-
|
|
38
|
-
enableCache?: boolean;
|
|
39
|
-
},
|
|
40
|
-
) {
|
|
41
|
-
this.extractorPromise = this.init();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
async embed(texts: string[]): Promise<number[][]> {
|
|
45
|
-
if (texts.length === 0) return [];
|
|
46
|
-
|
|
47
|
-
const extractor = await this.extractorPromise;
|
|
48
|
-
const batchSize = this.options.batchSize ?? 32;
|
|
49
|
-
const useCache = this.options.enableCache ?? true;
|
|
50
|
-
|
|
51
|
-
const out: number[][] = new Array(texts.length);
|
|
52
|
-
const misses: { idx: number; text: string; key: string }[] = [];
|
|
53
|
-
|
|
54
|
-
for (let i = 0; i < texts.length; i++) {
|
|
55
|
-
const t = texts[i] ?? "";
|
|
56
|
-
const key = hashText(t);
|
|
57
|
-
const hit = useCache ? this.cache.get(key) : undefined;
|
|
58
|
-
if (hit) out[i] = hit;
|
|
59
|
-
else misses.push({ idx: i, text: t, key });
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
for (let i = 0; i < misses.length; i += batchSize) {
|
|
63
|
-
const chunk = misses.slice(i, i + batchSize);
|
|
64
|
-
const chunkTexts = chunk.map((c) => c.text);
|
|
65
|
-
|
|
66
|
-
const result = await extractor(chunkTexts, {
|
|
67
|
-
pooling: "mean",
|
|
68
|
-
normalize: true,
|
|
69
|
-
});
|
|
70
|
-
const vecs = toVectors(result);
|
|
71
|
-
|
|
72
|
-
if (vecs.length !== chunk.length) {
|
|
73
|
-
throw new Error(
|
|
74
|
-
`[LocalEmbeddingProvider] batch mismatch: in=${chunk.length}, out=${vecs.length}`,
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (!this.dim && vecs[0]) this.dim = vecs[0].length;
|
|
79
|
-
|
|
80
|
-
for (let j = 0; j < chunk.length; j++) {
|
|
81
|
-
const v = vecs[j]!;
|
|
82
|
-
const { idx, key } = chunk[j]!;
|
|
83
|
-
out[idx] = v;
|
|
84
|
-
if (useCache) this.cache.set(key, v);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
for (let i = 0; i < out.length; i++) {
|
|
89
|
-
if (!out[i])
|
|
90
|
-
throw new Error(`[LocalEmbeddingProvider] missing vector at i=${i}`);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return out;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
private async init(): Promise<FeatureExtractionPipeline> {
|
|
97
|
-
const t = await import("@huggingface/transformers");
|
|
98
|
-
const env: TransformersEnvironment = t.env;
|
|
99
|
-
if (env && this.options.cacheDir) env.cacheDir = this.options.cacheDir;
|
|
100
|
-
|
|
101
|
-
const pipeline = await t.pipeline(
|
|
102
|
-
"feature-extraction",
|
|
103
|
-
this.options.modelIdOrPath,
|
|
104
|
-
{
|
|
105
|
-
dtype: this.options.quantized === false ? "fp32" : "q8",
|
|
106
|
-
},
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
return pipeline as FeatureExtractionPipeline;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function hashText(text: string): string {
|
|
114
|
-
return createHash("sha256").update(text).digest("hex");
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function toVectors(result: unknown): number[][] {
|
|
118
|
-
if (typia.is<number[][]>(result)) {
|
|
119
|
-
return result;
|
|
120
|
-
}
|
|
121
|
-
if (typia.is<number[]>(result)) {
|
|
122
|
-
return [result];
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
if (typia.is<TensorLike>(result)) {
|
|
126
|
-
if (typeof result.tolist === "function") {
|
|
127
|
-
const arr = result.tolist();
|
|
128
|
-
if (typia.is<number[][]>(arr)) return arr;
|
|
129
|
-
if (typia.is<number[]>(arr)) return [arr];
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const data: number[] = Array.from(result.data ?? []);
|
|
133
|
-
const dims: number[] = Array.from(result.dims ?? result.shape ?? []);
|
|
134
|
-
|
|
135
|
-
if (dims.length === 2) {
|
|
136
|
-
const [B, D] = dims;
|
|
137
|
-
const out: number[][] = [];
|
|
138
|
-
for (let b = 0; b < B; b++) out.push(data.slice(b * D, (b + 1) * D));
|
|
139
|
-
return out;
|
|
140
|
-
}
|
|
141
|
-
if (dims.length === 1) return [data];
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
throw new Error("[LocalEmbeddingProvider] unsupported embedding output");
|
|
145
|
-
}
|
|
1
|
+
import { TransformersEnvironment } from "@huggingface/transformers/types/env";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import typia from "typia";
|
|
4
|
+
|
|
5
|
+
import type { EmbeddingProvider } from "./EmbeddingProvider";
|
|
6
|
+
|
|
7
|
+
interface TensorLike {
|
|
8
|
+
tolist?: () => unknown;
|
|
9
|
+
data?: ArrayLike<number>;
|
|
10
|
+
dims?: number[];
|
|
11
|
+
shape?: number[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type FeatureExtractionPipeline = (
|
|
15
|
+
inputs: string[] | string,
|
|
16
|
+
options?: {
|
|
17
|
+
pooling?: "none" | "mean" | "max";
|
|
18
|
+
normalize?: boolean;
|
|
19
|
+
},
|
|
20
|
+
) => Promise<unknown>;
|
|
21
|
+
|
|
22
|
+
export class LocalEmbeddingProvider implements EmbeddingProvider {
|
|
23
|
+
public dim?: number;
|
|
24
|
+
|
|
25
|
+
private extractorPromise: Promise<FeatureExtractionPipeline>;
|
|
26
|
+
private cache = new Map<string, number[]>();
|
|
27
|
+
|
|
28
|
+
constructor(
|
|
29
|
+
private readonly options: {
|
|
30
|
+
modelIdOrPath: string;
|
|
31
|
+
|
|
32
|
+
cacheDir?: string;
|
|
33
|
+
|
|
34
|
+
quantized?: boolean;
|
|
35
|
+
|
|
36
|
+
batchSize?: number;
|
|
37
|
+
|
|
38
|
+
enableCache?: boolean;
|
|
39
|
+
},
|
|
40
|
+
) {
|
|
41
|
+
this.extractorPromise = this.init();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async embed(texts: string[]): Promise<number[][]> {
|
|
45
|
+
if (texts.length === 0) return [];
|
|
46
|
+
|
|
47
|
+
const extractor = await this.extractorPromise;
|
|
48
|
+
const batchSize = this.options.batchSize ?? 32;
|
|
49
|
+
const useCache = this.options.enableCache ?? true;
|
|
50
|
+
|
|
51
|
+
const out: number[][] = new Array(texts.length);
|
|
52
|
+
const misses: { idx: number; text: string; key: string }[] = [];
|
|
53
|
+
|
|
54
|
+
for (let i = 0; i < texts.length; i++) {
|
|
55
|
+
const t = texts[i] ?? "";
|
|
56
|
+
const key = hashText(t);
|
|
57
|
+
const hit = useCache ? this.cache.get(key) : undefined;
|
|
58
|
+
if (hit) out[i] = hit;
|
|
59
|
+
else misses.push({ idx: i, text: t, key });
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
for (let i = 0; i < misses.length; i += batchSize) {
|
|
63
|
+
const chunk = misses.slice(i, i + batchSize);
|
|
64
|
+
const chunkTexts = chunk.map((c) => c.text);
|
|
65
|
+
|
|
66
|
+
const result = await extractor(chunkTexts, {
|
|
67
|
+
pooling: "mean",
|
|
68
|
+
normalize: true,
|
|
69
|
+
});
|
|
70
|
+
const vecs = toVectors(result);
|
|
71
|
+
|
|
72
|
+
if (vecs.length !== chunk.length) {
|
|
73
|
+
throw new Error(
|
|
74
|
+
`[LocalEmbeddingProvider] batch mismatch: in=${chunk.length}, out=${vecs.length}`,
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (!this.dim && vecs[0]) this.dim = vecs[0].length;
|
|
79
|
+
|
|
80
|
+
for (let j = 0; j < chunk.length; j++) {
|
|
81
|
+
const v = vecs[j]!;
|
|
82
|
+
const { idx, key } = chunk[j]!;
|
|
83
|
+
out[idx] = v;
|
|
84
|
+
if (useCache) this.cache.set(key, v);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
for (let i = 0; i < out.length; i++) {
|
|
89
|
+
if (!out[i])
|
|
90
|
+
throw new Error(`[LocalEmbeddingProvider] missing vector at i=${i}`);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
private async init(): Promise<FeatureExtractionPipeline> {
|
|
97
|
+
const t = await import("@huggingface/transformers");
|
|
98
|
+
const env: TransformersEnvironment = t.env;
|
|
99
|
+
if (env && this.options.cacheDir) env.cacheDir = this.options.cacheDir;
|
|
100
|
+
|
|
101
|
+
const pipeline = await t.pipeline(
|
|
102
|
+
"feature-extraction",
|
|
103
|
+
this.options.modelIdOrPath,
|
|
104
|
+
{
|
|
105
|
+
dtype: this.options.quantized === false ? "fp32" : "q8",
|
|
106
|
+
},
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
return pipeline as FeatureExtractionPipeline;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function hashText(text: string): string {
|
|
114
|
+
return createHash("sha256").update(text).digest("hex");
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function toVectors(result: unknown): number[][] {
|
|
118
|
+
if (typia.is<number[][]>(result)) {
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
if (typia.is<number[]>(result)) {
|
|
122
|
+
return [result];
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (typia.is<TensorLike>(result)) {
|
|
126
|
+
if (typeof result.tolist === "function") {
|
|
127
|
+
const arr = result.tolist();
|
|
128
|
+
if (typia.is<number[][]>(arr)) return arr;
|
|
129
|
+
if (typia.is<number[]>(arr)) return [arr];
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const data: number[] = Array.from(result.data ?? []);
|
|
133
|
+
const dims: number[] = Array.from(result.dims ?? result.shape ?? []);
|
|
134
|
+
|
|
135
|
+
if (dims.length === 2) {
|
|
136
|
+
const [B, D] = dims;
|
|
137
|
+
const out: number[][] = [];
|
|
138
|
+
for (let b = 0; b < B; b++) out.push(data.slice(b * D, (b + 1) * D));
|
|
139
|
+
return out;
|
|
140
|
+
}
|
|
141
|
+
if (dims.length === 1) return [data];
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
throw new Error("[LocalEmbeddingProvider] unsupported embedding output");
|
|
145
|
+
}
|