@autobe/agent 0.30.0-dev.20260315 → 0.30.1
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,125 +1,125 @@
|
|
|
1
|
-
import { MicroAgentica, MicroAgenticaHistory } from "@agentica/core";
|
|
2
|
-
import { ConditionVariable, IPointer, Singleton, sleep_for } from "tstl";
|
|
3
|
-
|
|
4
|
-
import { AutoBeTimeoutError } from "./AutoBeTimeoutError";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Wraps LLM conversation with timeout enforcement and discriminated result
|
|
8
|
-
* types.
|
|
9
|
-
*
|
|
10
|
-
* Prevents hanging indefinitely when LLM APIs become unresponsive or requests
|
|
11
|
-
* take excessively long. Uses AbortController to cancel in-flight requests when
|
|
12
|
-
* timeout expires. Returns discriminated union enabling callers to handle
|
|
13
|
-
* success/timeout/error cases separately.
|
|
14
|
-
*
|
|
15
|
-
* @author Samchon
|
|
16
|
-
*/
|
|
17
|
-
export namespace TimedConversation {
|
|
18
|
-
/** Configuration for timed conversation execution. */
|
|
19
|
-
export interface IProps {
|
|
20
|
-
/** MicroAgentica agent to execute conversation */
|
|
21
|
-
agent: MicroAgentica;
|
|
22
|
-
/** User message to send */
|
|
23
|
-
message: string;
|
|
24
|
-
/** Timeout in milliseconds, or null for no timeout */
|
|
25
|
-
timeout: number | null;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** Discriminated union of possible conversation outcomes. */
|
|
29
|
-
export type IResult = ISuccessResult | ITimeoutResult | IErrorResult;
|
|
30
|
-
|
|
31
|
-
/** Successful conversation completion. */
|
|
32
|
-
export interface ISuccessResult {
|
|
33
|
-
type: "success";
|
|
34
|
-
histories: MicroAgenticaHistory[];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/** Conversation exceeded timeout limit. */
|
|
38
|
-
export interface ITimeoutResult {
|
|
39
|
-
type: "timeout";
|
|
40
|
-
error: AutoBeTimeoutError;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/** Conversation failed with error other than timeout. */
|
|
44
|
-
export interface IErrorResult {
|
|
45
|
-
type: "error";
|
|
46
|
-
error: Error;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Executes conversation with optional timeout enforcement.
|
|
51
|
-
*
|
|
52
|
-
* If timeout is null, executes without time limit. Otherwise, sets up timeout
|
|
53
|
-
* handler that aborts the request and returns timeout result. Uses condition
|
|
54
|
-
* variable for synchronization between conversation and timeout threads.
|
|
55
|
-
*
|
|
56
|
-
* @param props Agent, message, and timeout configuration
|
|
57
|
-
* @returns Discriminated result indicating success, timeout, or error
|
|
58
|
-
*/
|
|
59
|
-
export const process = async (props: IProps): Promise<IResult> => {
|
|
60
|
-
if (props.timeout === null)
|
|
61
|
-
try {
|
|
62
|
-
const histories: MicroAgenticaHistory[] = await props.agent.conversate(
|
|
63
|
-
props.message,
|
|
64
|
-
);
|
|
65
|
-
return {
|
|
66
|
-
type: "success",
|
|
67
|
-
histories,
|
|
68
|
-
};
|
|
69
|
-
} catch (error) {
|
|
70
|
-
return {
|
|
71
|
-
type: "error",
|
|
72
|
-
error: error as Error,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// PREPARE TIMEOUT HANDLERS
|
|
77
|
-
const result: IPointer<IResult | null> = {
|
|
78
|
-
value: null,
|
|
79
|
-
};
|
|
80
|
-
const holder: ConditionVariable = new ConditionVariable();
|
|
81
|
-
const abort: AbortController = new AbortController();
|
|
82
|
-
const timeout: Singleton<NodeJS.Timeout> = new Singleton(() =>
|
|
83
|
-
setTimeout(() => {
|
|
84
|
-
if (result.value !== null) return;
|
|
85
|
-
result.value = {
|
|
86
|
-
type: "timeout",
|
|
87
|
-
error: new AutoBeTimeoutError(`Timeout, over ${props.timeout} ms.`),
|
|
88
|
-
};
|
|
89
|
-
abort.abort(`Timeout, over ${props.timeout} ms`);
|
|
90
|
-
void holder.notify_all().catch(() => {});
|
|
91
|
-
}, props.timeout!),
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
// DO CONVERSATE
|
|
95
|
-
props.agent.on("request", () => {
|
|
96
|
-
timeout.get();
|
|
97
|
-
});
|
|
98
|
-
props.agent
|
|
99
|
-
.conversate(props.message, {
|
|
100
|
-
abortSignal: abort.signal,
|
|
101
|
-
})
|
|
102
|
-
.then(
|
|
103
|
-
(v) =>
|
|
104
|
-
(result.value ??= {
|
|
105
|
-
type: "success",
|
|
106
|
-
histories: v,
|
|
107
|
-
}),
|
|
108
|
-
)
|
|
109
|
-
.catch(
|
|
110
|
-
(e) =>
|
|
111
|
-
(result.value ??= {
|
|
112
|
-
type: "error",
|
|
113
|
-
error: e as Error,
|
|
114
|
-
}),
|
|
115
|
-
)
|
|
116
|
-
.finally(() => {
|
|
117
|
-
void holder.notify_all().catch(() => {});
|
|
118
|
-
clearTimeout(timeout.get());
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
await holder.wait();
|
|
122
|
-
await sleep_for(0);
|
|
123
|
-
return result.value!;
|
|
124
|
-
};
|
|
125
|
-
}
|
|
1
|
+
import { MicroAgentica, MicroAgenticaHistory } from "@agentica/core";
|
|
2
|
+
import { ConditionVariable, IPointer, Singleton, sleep_for } from "tstl";
|
|
3
|
+
|
|
4
|
+
import { AutoBeTimeoutError } from "./AutoBeTimeoutError";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Wraps LLM conversation with timeout enforcement and discriminated result
|
|
8
|
+
* types.
|
|
9
|
+
*
|
|
10
|
+
* Prevents hanging indefinitely when LLM APIs become unresponsive or requests
|
|
11
|
+
* take excessively long. Uses AbortController to cancel in-flight requests when
|
|
12
|
+
* timeout expires. Returns discriminated union enabling callers to handle
|
|
13
|
+
* success/timeout/error cases separately.
|
|
14
|
+
*
|
|
15
|
+
* @author Samchon
|
|
16
|
+
*/
|
|
17
|
+
export namespace TimedConversation {
|
|
18
|
+
/** Configuration for timed conversation execution. */
|
|
19
|
+
export interface IProps {
|
|
20
|
+
/** MicroAgentica agent to execute conversation */
|
|
21
|
+
agent: MicroAgentica;
|
|
22
|
+
/** User message to send */
|
|
23
|
+
message: string;
|
|
24
|
+
/** Timeout in milliseconds, or null for no timeout */
|
|
25
|
+
timeout: number | null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Discriminated union of possible conversation outcomes. */
|
|
29
|
+
export type IResult = ISuccessResult | ITimeoutResult | IErrorResult;
|
|
30
|
+
|
|
31
|
+
/** Successful conversation completion. */
|
|
32
|
+
export interface ISuccessResult {
|
|
33
|
+
type: "success";
|
|
34
|
+
histories: MicroAgenticaHistory[];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Conversation exceeded timeout limit. */
|
|
38
|
+
export interface ITimeoutResult {
|
|
39
|
+
type: "timeout";
|
|
40
|
+
error: AutoBeTimeoutError;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Conversation failed with error other than timeout. */
|
|
44
|
+
export interface IErrorResult {
|
|
45
|
+
type: "error";
|
|
46
|
+
error: Error;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Executes conversation with optional timeout enforcement.
|
|
51
|
+
*
|
|
52
|
+
* If timeout is null, executes without time limit. Otherwise, sets up timeout
|
|
53
|
+
* handler that aborts the request and returns timeout result. Uses condition
|
|
54
|
+
* variable for synchronization between conversation and timeout threads.
|
|
55
|
+
*
|
|
56
|
+
* @param props Agent, message, and timeout configuration
|
|
57
|
+
* @returns Discriminated result indicating success, timeout, or error
|
|
58
|
+
*/
|
|
59
|
+
export const process = async (props: IProps): Promise<IResult> => {
|
|
60
|
+
if (props.timeout === null)
|
|
61
|
+
try {
|
|
62
|
+
const histories: MicroAgenticaHistory[] = await props.agent.conversate(
|
|
63
|
+
props.message,
|
|
64
|
+
);
|
|
65
|
+
return {
|
|
66
|
+
type: "success",
|
|
67
|
+
histories,
|
|
68
|
+
};
|
|
69
|
+
} catch (error) {
|
|
70
|
+
return {
|
|
71
|
+
type: "error",
|
|
72
|
+
error: error as Error,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// PREPARE TIMEOUT HANDLERS
|
|
77
|
+
const result: IPointer<IResult | null> = {
|
|
78
|
+
value: null,
|
|
79
|
+
};
|
|
80
|
+
const holder: ConditionVariable = new ConditionVariable();
|
|
81
|
+
const abort: AbortController = new AbortController();
|
|
82
|
+
const timeout: Singleton<NodeJS.Timeout> = new Singleton(() =>
|
|
83
|
+
setTimeout(() => {
|
|
84
|
+
if (result.value !== null) return;
|
|
85
|
+
result.value = {
|
|
86
|
+
type: "timeout",
|
|
87
|
+
error: new AutoBeTimeoutError(`Timeout, over ${props.timeout} ms.`),
|
|
88
|
+
};
|
|
89
|
+
abort.abort(`Timeout, over ${props.timeout} ms`);
|
|
90
|
+
void holder.notify_all().catch(() => {});
|
|
91
|
+
}, props.timeout!),
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
// DO CONVERSATE
|
|
95
|
+
props.agent.on("request", () => {
|
|
96
|
+
timeout.get();
|
|
97
|
+
});
|
|
98
|
+
props.agent
|
|
99
|
+
.conversate(props.message, {
|
|
100
|
+
abortSignal: abort.signal,
|
|
101
|
+
})
|
|
102
|
+
.then(
|
|
103
|
+
(v) =>
|
|
104
|
+
(result.value ??= {
|
|
105
|
+
type: "success",
|
|
106
|
+
histories: v,
|
|
107
|
+
}),
|
|
108
|
+
)
|
|
109
|
+
.catch(
|
|
110
|
+
(e) =>
|
|
111
|
+
(result.value ??= {
|
|
112
|
+
type: "error",
|
|
113
|
+
error: e as Error,
|
|
114
|
+
}),
|
|
115
|
+
)
|
|
116
|
+
.finally(() => {
|
|
117
|
+
void holder.notify_all().catch(() => {});
|
|
118
|
+
clearTimeout(timeout.get());
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
await holder.wait();
|
|
122
|
+
await sleep_for(0);
|
|
123
|
+
return result.value!;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
@@ -1,169 +1,169 @@
|
|
|
1
|
-
/** Configuration options for exponential backoff retry behavior. */
|
|
2
|
-
export interface RetryOptions {
|
|
3
|
-
/** Maximum number of retry attempts (default: 5) */
|
|
4
|
-
maxRetries: number;
|
|
5
|
-
/** Base delay in milliseconds (default: 4000) */
|
|
6
|
-
baseDelay: number;
|
|
7
|
-
/** Maximum delay in milliseconds (default: 60000) */
|
|
8
|
-
maxDelay: number;
|
|
9
|
-
/** Jitter factor for randomization (0-1, default: 0.8) */
|
|
10
|
-
jitter: number;
|
|
11
|
-
/** Function to determine if error should trigger retry (default: isRetryError) */
|
|
12
|
-
handleError: (error: unknown) => boolean;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Retries failed LLM API calls with exponential backoff and jitter.
|
|
17
|
-
*
|
|
18
|
-
* Automatically retries transient failures (rate limits, server errors, network
|
|
19
|
-
* issues) while immediately failing on permanent errors (quota exceeded,
|
|
20
|
-
* invalid requests). Uses exponential backoff with randomized jitter to avoid
|
|
21
|
-
* thundering herd problems when multiple concurrent requests fail
|
|
22
|
-
* simultaneously.
|
|
23
|
-
*
|
|
24
|
-
* The retry logic is critical for production reliability: LLM APIs frequently
|
|
25
|
-
* return temporary 429/5xx errors under heavy load, and network timeouts are
|
|
26
|
-
* common. Without retry, these transient failures would cascade into
|
|
27
|
-
* user-visible errors despite being automatically recoverable.
|
|
28
|
-
*
|
|
29
|
-
* @author Kakasoo
|
|
30
|
-
* @param fn Async function to execute with retry logic
|
|
31
|
-
* @param options Retry configuration (maxRetries, delays, error handler)
|
|
32
|
-
* @returns Promise resolving to function result if successful
|
|
33
|
-
* @throws Last encountered error if all retry attempts exhausted
|
|
34
|
-
*/
|
|
35
|
-
export async function randomBackoffRetry<T>(
|
|
36
|
-
fn: () => Promise<T>,
|
|
37
|
-
options: Partial<RetryOptions> = {},
|
|
38
|
-
): Promise<T> {
|
|
39
|
-
const {
|
|
40
|
-
maxRetries = 5,
|
|
41
|
-
baseDelay = 4_000,
|
|
42
|
-
maxDelay = 60_000,
|
|
43
|
-
jitter = 0.8,
|
|
44
|
-
handleError = isRetryError,
|
|
45
|
-
} = options;
|
|
46
|
-
|
|
47
|
-
let lastError: unknown;
|
|
48
|
-
|
|
49
|
-
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
50
|
-
try {
|
|
51
|
-
return await fn();
|
|
52
|
-
} catch (err) {
|
|
53
|
-
lastError = err;
|
|
54
|
-
|
|
55
|
-
if (attempt === maxRetries - 1) throw err;
|
|
56
|
-
|
|
57
|
-
if (!handleError(err)) throw err;
|
|
58
|
-
|
|
59
|
-
const tempDelay = Math.min(baseDelay * 2 ** attempt, maxDelay);
|
|
60
|
-
const delay = tempDelay * (1 + Math.random() * jitter);
|
|
61
|
-
|
|
62
|
-
await new Promise((res) => setTimeout(res, delay));
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
throw lastError;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Calculates retry delay using exponential backoff with jitter.
|
|
71
|
-
*
|
|
72
|
-
* Throws immediately for non-retryable errors or when retry count exceeds 5.
|
|
73
|
-
* Used by orchestrators that need explicit delay calculation without automatic
|
|
74
|
-
* retry loop execution.
|
|
75
|
-
*
|
|
76
|
-
* @param props Retry count and error to evaluate
|
|
77
|
-
* @returns Calculated delay in milliseconds
|
|
78
|
-
* @throws Original error if non-retryable or max retries exceeded
|
|
79
|
-
*/
|
|
80
|
-
export function randomBackoffStrategy(props: {
|
|
81
|
-
count: number;
|
|
82
|
-
error: unknown;
|
|
83
|
-
}): number {
|
|
84
|
-
const { count, error } = props;
|
|
85
|
-
if (count > 5) {
|
|
86
|
-
throw error;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (isRetryError(error) === false) {
|
|
90
|
-
throw error;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const baseDelay = 4_000;
|
|
94
|
-
const maxDelay = 60_000;
|
|
95
|
-
const jitter = 0.8;
|
|
96
|
-
const tempDelay = Math.min(baseDelay * 2 ** count, maxDelay);
|
|
97
|
-
const delay = tempDelay * (1 + Math.random() * jitter);
|
|
98
|
-
|
|
99
|
-
return delay;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Determines if an error represents a transient failure that should trigger
|
|
104
|
-
* retry.
|
|
105
|
-
*
|
|
106
|
-
* Returns `true` for retryable errors (rate limits, server errors, network
|
|
107
|
-
* issues) and `false` for permanent failures (quota exceeded, invalid
|
|
108
|
-
* requests). This classification prevents wasting resources retrying
|
|
109
|
-
* unrecoverable errors.
|
|
110
|
-
*
|
|
111
|
-
* @param error Error object from LLM API or network layer
|
|
112
|
-
* @returns `true` if error is retryable, `false` otherwise
|
|
113
|
-
*/
|
|
114
|
-
function isRetryError(
|
|
115
|
-
// biome-ignore lint: @todo SunRabbit
|
|
116
|
-
error: any,
|
|
117
|
-
): boolean {
|
|
118
|
-
// 1) Quota exceeded → No retry
|
|
119
|
-
if (
|
|
120
|
-
error?.code === "insufficient_quota" ||
|
|
121
|
-
error?.error?.type === "insufficient_quota"
|
|
122
|
-
) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// 2) 5xx / server_error → Retry
|
|
127
|
-
// Streaming errors from OpenRouter may have status: undefined but code: 502
|
|
128
|
-
if (
|
|
129
|
-
(typeof error?.status === "number" && error.status >= 500) ||
|
|
130
|
-
(typeof error?.code === "number" && error.code >= 500) ||
|
|
131
|
-
error?.error?.type === "server_error"
|
|
132
|
-
) {
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// 3) HTTP 429
|
|
137
|
-
if (error?.status === 429) {
|
|
138
|
-
return true;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// 4) undici / network related
|
|
142
|
-
const code = error?.code || error?.cause?.code;
|
|
143
|
-
if (
|
|
144
|
-
[
|
|
145
|
-
"UND_ERR_SOCKET",
|
|
146
|
-
"UND_ERR_CONNECT_TIMEOUT",
|
|
147
|
-
"ETIMEDOUT",
|
|
148
|
-
"ECONNRESET",
|
|
149
|
-
"EPIPE",
|
|
150
|
-
].includes(code)
|
|
151
|
-
) {
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// 5) fetch abort
|
|
156
|
-
if (error?.message === "terminated" || error?.name === "AbortError") {
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (
|
|
161
|
-
(error?.message as string)?.startsWith(
|
|
162
|
-
`SyntaxError: Expected ',' or '}' after property value in JSON at position`,
|
|
163
|
-
)
|
|
164
|
-
) {
|
|
165
|
-
return true;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
1
|
+
/** Configuration options for exponential backoff retry behavior. */
|
|
2
|
+
export interface RetryOptions {
|
|
3
|
+
/** Maximum number of retry attempts (default: 5) */
|
|
4
|
+
maxRetries: number;
|
|
5
|
+
/** Base delay in milliseconds (default: 4000) */
|
|
6
|
+
baseDelay: number;
|
|
7
|
+
/** Maximum delay in milliseconds (default: 60000) */
|
|
8
|
+
maxDelay: number;
|
|
9
|
+
/** Jitter factor for randomization (0-1, default: 0.8) */
|
|
10
|
+
jitter: number;
|
|
11
|
+
/** Function to determine if error should trigger retry (default: isRetryError) */
|
|
12
|
+
handleError: (error: unknown) => boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Retries failed LLM API calls with exponential backoff and jitter.
|
|
17
|
+
*
|
|
18
|
+
* Automatically retries transient failures (rate limits, server errors, network
|
|
19
|
+
* issues) while immediately failing on permanent errors (quota exceeded,
|
|
20
|
+
* invalid requests). Uses exponential backoff with randomized jitter to avoid
|
|
21
|
+
* thundering herd problems when multiple concurrent requests fail
|
|
22
|
+
* simultaneously.
|
|
23
|
+
*
|
|
24
|
+
* The retry logic is critical for production reliability: LLM APIs frequently
|
|
25
|
+
* return temporary 429/5xx errors under heavy load, and network timeouts are
|
|
26
|
+
* common. Without retry, these transient failures would cascade into
|
|
27
|
+
* user-visible errors despite being automatically recoverable.
|
|
28
|
+
*
|
|
29
|
+
* @author Kakasoo
|
|
30
|
+
* @param fn Async function to execute with retry logic
|
|
31
|
+
* @param options Retry configuration (maxRetries, delays, error handler)
|
|
32
|
+
* @returns Promise resolving to function result if successful
|
|
33
|
+
* @throws Last encountered error if all retry attempts exhausted
|
|
34
|
+
*/
|
|
35
|
+
export async function randomBackoffRetry<T>(
|
|
36
|
+
fn: () => Promise<T>,
|
|
37
|
+
options: Partial<RetryOptions> = {},
|
|
38
|
+
): Promise<T> {
|
|
39
|
+
const {
|
|
40
|
+
maxRetries = 5,
|
|
41
|
+
baseDelay = 4_000,
|
|
42
|
+
maxDelay = 60_000,
|
|
43
|
+
jitter = 0.8,
|
|
44
|
+
handleError = isRetryError,
|
|
45
|
+
} = options;
|
|
46
|
+
|
|
47
|
+
let lastError: unknown;
|
|
48
|
+
|
|
49
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
50
|
+
try {
|
|
51
|
+
return await fn();
|
|
52
|
+
} catch (err) {
|
|
53
|
+
lastError = err;
|
|
54
|
+
|
|
55
|
+
if (attempt === maxRetries - 1) throw err;
|
|
56
|
+
|
|
57
|
+
if (!handleError(err)) throw err;
|
|
58
|
+
|
|
59
|
+
const tempDelay = Math.min(baseDelay * 2 ** attempt, maxDelay);
|
|
60
|
+
const delay = tempDelay * (1 + Math.random() * jitter);
|
|
61
|
+
|
|
62
|
+
await new Promise((res) => setTimeout(res, delay));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
throw lastError;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Calculates retry delay using exponential backoff with jitter.
|
|
71
|
+
*
|
|
72
|
+
* Throws immediately for non-retryable errors or when retry count exceeds 5.
|
|
73
|
+
* Used by orchestrators that need explicit delay calculation without automatic
|
|
74
|
+
* retry loop execution.
|
|
75
|
+
*
|
|
76
|
+
* @param props Retry count and error to evaluate
|
|
77
|
+
* @returns Calculated delay in milliseconds
|
|
78
|
+
* @throws Original error if non-retryable or max retries exceeded
|
|
79
|
+
*/
|
|
80
|
+
export function randomBackoffStrategy(props: {
|
|
81
|
+
count: number;
|
|
82
|
+
error: unknown;
|
|
83
|
+
}): number {
|
|
84
|
+
const { count, error } = props;
|
|
85
|
+
if (count > 5) {
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (isRetryError(error) === false) {
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const baseDelay = 4_000;
|
|
94
|
+
const maxDelay = 60_000;
|
|
95
|
+
const jitter = 0.8;
|
|
96
|
+
const tempDelay = Math.min(baseDelay * 2 ** count, maxDelay);
|
|
97
|
+
const delay = tempDelay * (1 + Math.random() * jitter);
|
|
98
|
+
|
|
99
|
+
return delay;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Determines if an error represents a transient failure that should trigger
|
|
104
|
+
* retry.
|
|
105
|
+
*
|
|
106
|
+
* Returns `true` for retryable errors (rate limits, server errors, network
|
|
107
|
+
* issues) and `false` for permanent failures (quota exceeded, invalid
|
|
108
|
+
* requests). This classification prevents wasting resources retrying
|
|
109
|
+
* unrecoverable errors.
|
|
110
|
+
*
|
|
111
|
+
* @param error Error object from LLM API or network layer
|
|
112
|
+
* @returns `true` if error is retryable, `false` otherwise
|
|
113
|
+
*/
|
|
114
|
+
function isRetryError(
|
|
115
|
+
// biome-ignore lint: @todo SunRabbit
|
|
116
|
+
error: any,
|
|
117
|
+
): boolean {
|
|
118
|
+
// 1) Quota exceeded → No retry
|
|
119
|
+
if (
|
|
120
|
+
error?.code === "insufficient_quota" ||
|
|
121
|
+
error?.error?.type === "insufficient_quota"
|
|
122
|
+
) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// 2) 5xx / server_error → Retry
|
|
127
|
+
// Streaming errors from OpenRouter may have status: undefined but code: 502
|
|
128
|
+
if (
|
|
129
|
+
(typeof error?.status === "number" && error.status >= 500) ||
|
|
130
|
+
(typeof error?.code === "number" && error.code >= 500) ||
|
|
131
|
+
error?.error?.type === "server_error"
|
|
132
|
+
) {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// 3) HTTP 429
|
|
137
|
+
if (error?.status === 429) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// 4) undici / network related
|
|
142
|
+
const code = error?.code || error?.cause?.code;
|
|
143
|
+
if (
|
|
144
|
+
[
|
|
145
|
+
"UND_ERR_SOCKET",
|
|
146
|
+
"UND_ERR_CONNECT_TIMEOUT",
|
|
147
|
+
"ETIMEDOUT",
|
|
148
|
+
"ECONNRESET",
|
|
149
|
+
"EPIPE",
|
|
150
|
+
].includes(code)
|
|
151
|
+
) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// 5) fetch abort
|
|
156
|
+
if (error?.message === "terminated" || error?.name === "AbortError") {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (
|
|
161
|
+
(error?.message as string)?.startsWith(
|
|
162
|
+
`SyntaxError: Expected ',' or '}' after property value in JSON at position`,
|
|
163
|
+
)
|
|
164
|
+
) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return false;
|
|
169
|
+
}
|
package/src/utils/divideArray.ts
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Divides an array into chunks of at most `capacity` elements each for parallel
|
|
3
|
-
* batch processing.
|
|
4
|
-
*
|
|
5
|
-
* Used with `executeCachedBatch` to split large task lists into smaller batches
|
|
6
|
-
* that can be processed concurrently. The `capacity` parameter controls the
|
|
7
|
-
* maximum number of elements per chunk, not the number of chunks. This enables
|
|
8
|
-
* balancing parallelism against prompt cache efficiency.
|
|
9
|
-
*
|
|
10
|
-
* For example, dividing 100 operations with capacity=3 creates 34 chunks of 3
|
|
11
|
-
* operations each (the last chunk may have fewer elements if the array length
|
|
12
|
-
* is not a multiple of capacity). This allows processing 100 operations in 34
|
|
13
|
-
* parallel batches of up to 3 operations each.
|
|
14
|
-
*
|
|
15
|
-
* @param props Object containing the array to divide and the maximum chunk size
|
|
16
|
-
* (`capacity`)
|
|
17
|
-
* @returns Array of chunks with at most `capacity` elements each
|
|
18
|
-
* @throws Error if capacity is non-positive, NaN, or Infinity
|
|
19
|
-
*/
|
|
20
|
-
export function divideArray<T>(props: { array: T[]; capacity: number }): T[][] {
|
|
21
|
-
if (props.capacity <= 0) {
|
|
22
|
-
throw new Error("Capacity must be a positive integer");
|
|
23
|
-
}
|
|
24
|
-
if (Number.isNaN(props.capacity)) {
|
|
25
|
-
throw new TypeError("Capacity must be a positive integer");
|
|
26
|
-
}
|
|
27
|
-
if (props.capacity === Infinity) {
|
|
28
|
-
throw new Error("Capacity must be a positive integer");
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const size: number = Math.ceil(props.array.length / props.capacity);
|
|
32
|
-
const capacity: number = Math.ceil(props.array.length / size);
|
|
33
|
-
const replica: T[] = props.array.slice();
|
|
34
|
-
return Array.from({ length: size }, () => replica.splice(0, capacity));
|
|
35
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Divides an array into chunks of at most `capacity` elements each for parallel
|
|
3
|
+
* batch processing.
|
|
4
|
+
*
|
|
5
|
+
* Used with `executeCachedBatch` to split large task lists into smaller batches
|
|
6
|
+
* that can be processed concurrently. The `capacity` parameter controls the
|
|
7
|
+
* maximum number of elements per chunk, not the number of chunks. This enables
|
|
8
|
+
* balancing parallelism against prompt cache efficiency.
|
|
9
|
+
*
|
|
10
|
+
* For example, dividing 100 operations with capacity=3 creates 34 chunks of 3
|
|
11
|
+
* operations each (the last chunk may have fewer elements if the array length
|
|
12
|
+
* is not a multiple of capacity). This allows processing 100 operations in 34
|
|
13
|
+
* parallel batches of up to 3 operations each.
|
|
14
|
+
*
|
|
15
|
+
* @param props Object containing the array to divide and the maximum chunk size
|
|
16
|
+
* (`capacity`)
|
|
17
|
+
* @returns Array of chunks with at most `capacity` elements each
|
|
18
|
+
* @throws Error if capacity is non-positive, NaN, or Infinity
|
|
19
|
+
*/
|
|
20
|
+
export function divideArray<T>(props: { array: T[]; capacity: number }): T[][] {
|
|
21
|
+
if (props.capacity <= 0) {
|
|
22
|
+
throw new Error("Capacity must be a positive integer");
|
|
23
|
+
}
|
|
24
|
+
if (Number.isNaN(props.capacity)) {
|
|
25
|
+
throw new TypeError("Capacity must be a positive integer");
|
|
26
|
+
}
|
|
27
|
+
if (props.capacity === Infinity) {
|
|
28
|
+
throw new Error("Capacity must be a positive integer");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const size: number = Math.ceil(props.array.length / props.capacity);
|
|
32
|
+
const capacity: number = Math.ceil(props.array.length / size);
|
|
33
|
+
const replica: T[] = props.array.slice();
|
|
34
|
+
return Array.from({ length: size }, () => replica.splice(0, capacity));
|
|
35
|
+
}
|