@codemation/core 0.0.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/README.md +30 -0
- package/dist/EngineExecutionLimitsPolicy-8MEFIYx1.d.cts +160 -0
- package/dist/EngineExecutionLimitsPolicy-BWAXW9D6.d.cts +160 -0
- package/dist/EngineExecutionLimitsPolicy-Bp8PS1Ss.d.cts +159 -0
- package/dist/EngineExecutionLimitsPolicy-CLxcN-D2.d.ts +159 -0
- package/dist/EngineExecutionLimitsPolicy-DZXuix51.d.ts +160 -0
- package/dist/EngineExecutionLimitsPolicy-Gfz6ngFd.d.ts +160 -0
- package/dist/EngineFactory-CBnntY3J.cjs +3152 -0
- package/dist/EngineFactory-CBnntY3J.cjs.map +1 -0
- package/dist/EngineFactory-Cwn3R2YA.js +3087 -0
- package/dist/EngineFactory-Cwn3R2YA.js.map +1 -0
- package/dist/EngineFactory-DWCnNocp.js +3063 -0
- package/dist/EngineFactory-DWCnNocp.js.map +1 -0
- package/dist/EngineFactory-DhPFou4p.cjs +3188 -0
- package/dist/EngineFactory-DhPFou4p.cjs.map +1 -0
- package/dist/EngineFactory-l_9xmBtv.cjs +3190 -0
- package/dist/EngineFactory-l_9xmBtv.cjs.map +1 -0
- package/dist/EngineFactory-w-aOWuqh.js +3089 -0
- package/dist/EngineFactory-w-aOWuqh.js.map +1 -0
- package/dist/InMemoryLiveWorkflowRepository-1J9MHN_I.js +18 -0
- package/dist/InMemoryLiveWorkflowRepository-1J9MHN_I.js.map +1 -0
- package/dist/InMemoryLiveWorkflowRepository-BTzHpQ6e.cjs +151 -0
- package/dist/InMemoryLiveWorkflowRepository-BTzHpQ6e.cjs.map +1 -0
- package/dist/InMemoryLiveWorkflowRepository-BoLNnVLg.js +139 -0
- package/dist/InMemoryLiveWorkflowRepository-BoLNnVLg.js.map +1 -0
- package/dist/InMemoryLiveWorkflowRepository-CULNqv96.d.ts +1300 -0
- package/dist/InMemoryLiveWorkflowRepository-D6eiiXxF.d.cts +1168 -0
- package/dist/InMemoryLiveWorkflowRepository-D7l8cjdZ.d.cts +1130 -0
- package/dist/InMemoryLiveWorkflowRepository-DL7LmC9S.d.ts +1340 -0
- package/dist/InMemoryLiveWorkflowRepository-jnv-OnOP.d.ts +1300 -0
- package/dist/InMemoryLiveWorkflowRepository-xny1_Z6i.cjs +24 -0
- package/dist/InMemoryLiveWorkflowRepository-xny1_Z6i.cjs.map +1 -0
- package/dist/InMemoryLiveWorkflowRepository-xr7b4kvi.d.ts +1338 -0
- package/dist/InMemoryWorkflowCatalog-BIdFpwbK.d.ts +1205 -0
- package/dist/InMemoryWorkflowCatalog-BW00_3N3.d.cts +12 -0
- package/dist/InMemoryWorkflowCatalog-BiYHGoPw.cjs +24 -0
- package/dist/InMemoryWorkflowCatalog-BiYHGoPw.cjs.map +1 -0
- package/dist/InMemoryWorkflowCatalog-BrG0ApMO.d.cts +1115 -0
- package/dist/InMemoryWorkflowCatalog-BzrAr--Y.js +139 -0
- package/dist/InMemoryWorkflowCatalog-BzrAr--Y.js.map +1 -0
- package/dist/InMemoryWorkflowCatalog-C-EJlJ7y.d.cts +1120 -0
- package/dist/InMemoryWorkflowCatalog-C4482bpw.cjs +24 -0
- package/dist/InMemoryWorkflowCatalog-C4482bpw.cjs.map +1 -0
- package/dist/InMemoryWorkflowCatalog-CZ0kZpOv.d.ts +1289 -0
- package/dist/InMemoryWorkflowCatalog-C_ACeLyW.d.cts +1119 -0
- package/dist/InMemoryWorkflowCatalog-CiHWIu5E.d.cts +12 -0
- package/dist/InMemoryWorkflowCatalog-CkH7gkya.js +18 -0
- package/dist/InMemoryWorkflowCatalog-CkH7gkya.js.map +1 -0
- package/dist/InMemoryWorkflowCatalog-CnpZVJM9.d.ts +1205 -0
- package/dist/InMemoryWorkflowCatalog-Cu68S8YR.js +18 -0
- package/dist/InMemoryWorkflowCatalog-Cu68S8YR.js.map +1 -0
- package/dist/InMemoryWorkflowCatalog-D2w9nMj2.cjs +151 -0
- package/dist/InMemoryWorkflowCatalog-D2w9nMj2.cjs.map +1 -0
- package/dist/InMemoryWorkflowCatalog-D5eMxEf7.js +18 -0
- package/dist/InMemoryWorkflowCatalog-D5eMxEf7.js.map +1 -0
- package/dist/InMemoryWorkflowCatalog-D5nCp2yZ.d.ts +1267 -0
- package/dist/InMemoryWorkflowCatalog-DIq0bjqN.d.ts +12 -0
- package/dist/InMemoryWorkflowCatalog-DLgaEaw_.d.ts +1288 -0
- package/dist/InMemoryWorkflowCatalog-DNBFdK-x.d.cts +1120 -0
- package/dist/InMemoryWorkflowCatalog-DQBkCzb7.cjs +24 -0
- package/dist/InMemoryWorkflowCatalog-DQBkCzb7.cjs.map +1 -0
- package/dist/InMemoryWorkflowCatalog-DS4-eX6i.d.cts +1118 -0
- package/dist/InMemoryWorkflowCatalog-DdVfy8MY.d.ts +12 -0
- package/dist/InMemoryWorkflowCatalog-DeVZu3g8.d.ts +12 -0
- package/dist/InMemoryWorkflowCatalog-GxkQjvt5.d.ts +1200 -0
- package/dist/InMemoryWorkflowCatalog-qaVRn1Lc.d.cts +1115 -0
- package/dist/InMemoryWorkflowCatalog-z1aIT4TC.d.cts +12 -0
- package/dist/InMemoryWorkflowRegistry-BBuOovLL.d.ts +1007 -0
- package/dist/InMemoryWorkflowRegistry-BIFnSl3k.d.ts +1201 -0
- package/dist/InMemoryWorkflowRegistry-BnGilthz.d.ts +1137 -0
- package/dist/InMemoryWorkflowRegistry-CEp5I8No.d.ts +1146 -0
- package/dist/InMemoryWorkflowRegistry-CHyMB9jW.d.cts +976 -0
- package/dist/InMemoryWorkflowRegistry-CUN7K86m.d.cts +1061 -0
- package/dist/InMemoryWorkflowRegistry-CVfHyELh.d.cts +971 -0
- package/dist/InMemoryWorkflowRegistry-CXXJrwAr.d.cts +1052 -0
- package/dist/InMemoryWorkflowRegistry-DDGfPTJy.d.ts +1013 -0
- package/dist/InMemoryWorkflowRegistry-DnYSOoT5.d.ts +1120 -0
- package/dist/InMemoryWorkflowRegistry-Dp5GiFF2.d.cts +1035 -0
- package/dist/InMemoryWorkflowRegistry-DypDBeOw.d.cts +1116 -0
- package/dist/InMemoryWorkflowRegistry-SzwJCAxT.d.ts +1012 -0
- package/dist/InMemoryWorkflowRegistry-jupvqyGc.d.cts +977 -0
- package/dist/InMemoryWorkflowRegistry-rAdKVWYT.d.ts +1117 -0
- package/dist/InProcessRetryRunner-BBNPkXjy.d.cts +292 -0
- package/dist/PersistedWorkflowSnapshotFactory-7RkOL3Kg.d.ts +14 -0
- package/dist/PersistedWorkflowSnapshotFactory-BmANa46W.cjs +141 -0
- package/dist/PersistedWorkflowSnapshotFactory-BmANa46W.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-Bwb_etSt.js +118 -0
- package/dist/PersistedWorkflowSnapshotFactory-Bwb_etSt.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-CRkKGNV6.js +123 -0
- package/dist/PersistedWorkflowSnapshotFactory-CRkKGNV6.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-CZolnGy5.js +101 -0
- package/dist/PersistedWorkflowSnapshotFactory-CZolnGy5.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-Ca_oysOv.cjs +131 -0
- package/dist/PersistedWorkflowSnapshotFactory-Ca_oysOv.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-CqIcShnX.js +103 -0
- package/dist/PersistedWorkflowSnapshotFactory-CqIcShnX.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-D-tBk4_G.js +119 -0
- package/dist/PersistedWorkflowSnapshotFactory-D-tBk4_G.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-D4cXl2e2.cjs +131 -0
- package/dist/PersistedWorkflowSnapshotFactory-D4cXl2e2.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-DINoP12r.cjs +131 -0
- package/dist/PersistedWorkflowSnapshotFactory-DINoP12r.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-DJAwSuHU.js +103 -0
- package/dist/PersistedWorkflowSnapshotFactory-DJAwSuHU.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-DSUjVCcf.cjs +131 -0
- package/dist/PersistedWorkflowSnapshotFactory-DSUjVCcf.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-DdHuhkDb.cjs +107 -0
- package/dist/PersistedWorkflowSnapshotFactory-DdHuhkDb.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-Dqc6NHis.js +119 -0
- package/dist/PersistedWorkflowSnapshotFactory-Dqc6NHis.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-Dxa2dSrw.cjs +130 -0
- package/dist/PersistedWorkflowSnapshotFactory-Dxa2dSrw.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-Ep79Ah1G.js +123 -0
- package/dist/PersistedWorkflowSnapshotFactory-Ep79Ah1G.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-GyLfRuiJ.js +119 -0
- package/dist/PersistedWorkflowSnapshotFactory-GyLfRuiJ.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-HTpBsBzn.js +102 -0
- package/dist/PersistedWorkflowSnapshotFactory-HTpBsBzn.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-LVmaaf3t.cjs +141 -0
- package/dist/PersistedWorkflowSnapshotFactory-LVmaaf3t.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-PZCpo2ZS.js +119 -0
- package/dist/PersistedWorkflowSnapshotFactory-PZCpo2ZS.js.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-UjQ1SJev.cjs +109 -0
- package/dist/PersistedWorkflowSnapshotFactory-UjQ1SJev.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-Y8kCrhcy.cjs +109 -0
- package/dist/PersistedWorkflowSnapshotFactory-Y8kCrhcy.cjs.map +1 -0
- package/dist/PersistedWorkflowSnapshotFactory-Z_nB-fmB.cjs +108 -0
- package/dist/PersistedWorkflowSnapshotFactory-Z_nB-fmB.cjs.map +1 -0
- package/dist/RunIntentService-1EE6N8ZL.cjs +963 -0
- package/dist/RunIntentService-1EE6N8ZL.cjs.map +1 -0
- package/dist/RunIntentService-2ivFmNQh.cjs +3462 -0
- package/dist/RunIntentService-2ivFmNQh.cjs.map +1 -0
- package/dist/RunIntentService-B0sUL5q-.js +761 -0
- package/dist/RunIntentService-B0sUL5q-.js.map +1 -0
- package/dist/RunIntentService-BFVbsOcg.js +3131 -0
- package/dist/RunIntentService-BFVbsOcg.js.map +1 -0
- package/dist/RunIntentService-BsBOwpVN.cjs +1051 -0
- package/dist/RunIntentService-BsBOwpVN.cjs.map +1 -0
- package/dist/RunIntentService-CSk3ETyn.js +858 -0
- package/dist/RunIntentService-CSk3ETyn.js.map +1 -0
- package/dist/RunIntentService-Ckn3u3tA.d.cts +326 -0
- package/dist/RunIntentService-DEo6GTTo.d.cts +289 -0
- package/dist/RunIntentService-DKrGtL0B.js +782 -0
- package/dist/RunIntentService-DKrGtL0B.js.map +1 -0
- package/dist/RunIntentService-DNOJc1R7.cjs +942 -0
- package/dist/RunIntentService-DNOJc1R7.cjs.map +1 -0
- package/dist/RunIntentService-Dq3pV53j.d.cts +289 -0
- package/dist/RunIntentService-NKobsfMQ.d.cts +274 -0
- package/dist/WorkflowSnapshotCodec-C3fuuS_R.d.cts +22 -0
- package/dist/WorkflowSnapshotCodec-CUudUo6f.js +123 -0
- package/dist/WorkflowSnapshotCodec-CUudUo6f.js.map +1 -0
- package/dist/WorkflowSnapshotCodec-CuCPQZTc.cjs +129 -0
- package/dist/WorkflowSnapshotCodec-CuCPQZTc.cjs.map +1 -0
- package/dist/WorkflowSnapshotCodec-DLiXQNvV.d.cts +22 -0
- package/dist/WorkflowSnapshotCodec-DNtdrZ7l.d.cts +22 -0
- package/dist/WorkflowSnapshotCodec-DTdWkoW_.d.cts +22 -0
- package/dist/bootstrap/index.cjs +1028 -0
- package/dist/bootstrap/index.cjs.map +1 -0
- package/dist/bootstrap/index.d.cts +311 -0
- package/dist/bootstrap/index.d.ts +83 -0
- package/dist/bootstrap/index.js +994 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/credentialTypes-B5h3dI7r.d.cts +1107 -0
- package/dist/credentialTypes-B9okPCVo.d.cts +963 -0
- package/dist/credentialTypes-BFL70rgZ.d.cts +964 -0
- package/dist/credentialTypes-BGkh1O07.d.ts +1010 -0
- package/dist/credentialTypes-BNLi4Q7u.d.ts +1030 -0
- package/dist/credentialTypes-CeSoZGj3.d.cts +994 -0
- package/dist/credentialTypes-CpHc32Ig.d.cts +984 -0
- package/dist/credentialTypes-D0m7MQQl.d.cts +1107 -0
- package/dist/credentialTypes-D4nL2sUd.d.ts +1000 -0
- package/dist/credentialTypes-DBYK2Qbu.d.ts +999 -0
- package/dist/credentialTypes-DMJVy0r1.d.ts +1000 -0
- package/dist/credentialTypes-DhUAjYQp.d.ts +1020 -0
- package/dist/credentialTypes-gGITj5KL.d.cts +964 -0
- package/dist/credentialTypes-r3KVBJBE.d.cts +974 -0
- package/dist/diTokens-ClO27tjK.cjs +34 -0
- package/dist/diTokens-ClO27tjK.cjs.map +1 -0
- package/dist/diTokens-CoHBkwG6.js +28 -0
- package/dist/diTokens-CoHBkwG6.js.map +1 -0
- package/dist/index-6Doxmfnd.d.ts +857 -0
- package/dist/index-9g6Pfe9Z.d.ts +689 -0
- package/dist/index-AZ72Ej-K.d.ts +920 -0
- package/dist/index-BEk9V-q-.d.ts +667 -0
- package/dist/index-Bjt7_7oS.d.ts +1192 -0
- package/dist/index-CFGxsYXy.d.ts +708 -0
- package/dist/index-C_u8xFgn.d.ts +690 -0
- package/dist/index-CpbfsvOJ.d.ts +1192 -0
- package/dist/index-CsReNJN_.d.ts +859 -0
- package/dist/index-D5iNnXaW.d.ts +667 -0
- package/dist/index-DD_Eft1q.d.ts +708 -0
- package/dist/index-DiSYUe0G.d.ts +1192 -0
- package/dist/index-gIcH60sp.d.ts +674 -0
- package/dist/index.cjs +520 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +345 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +412 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime-BIvd-1JA.cjs +4112 -0
- package/dist/runtime-BIvd-1JA.cjs.map +1 -0
- package/dist/runtime-D3eWKSQK.cjs +3986 -0
- package/dist/runtime-D3eWKSQK.cjs.map +1 -0
- package/dist/runtime-Dvp4xAjg.js +3799 -0
- package/dist/runtime-Dvp4xAjg.js.map +1 -0
- package/dist/runtime-vc76SSAa.js +3685 -0
- package/dist/runtime-vc76SSAa.js.map +1 -0
- package/dist/runtimeTypes-BK0b8SaG.d.cts +884 -0
- package/dist/runtimeTypes-CoYZkYQq.d.cts +851 -0
- package/dist/runtimeTypes-D-Pm0Uas.d.cts +849 -0
- package/dist/testing.cjs +18 -0
- package/dist/testing.cjs.map +1 -0
- package/dist/testing.d.cts +19 -0
- package/dist/testing.d.ts +18 -0
- package/dist/testing.js +16 -0
- package/dist/testing.js.map +1 -0
- package/dist/types-Cb5UK7Y6.d.ts +857 -0
- package/package.json +66 -0
- package/src/ai/AiHost.ts +115 -0
- package/src/binaries/DefaultExecutionBinaryServiceFactory.ts +37 -0
- package/src/binaries/DefaultNodeBinaryAttachmentServiceFactory.ts +120 -0
- package/src/binaries/UnavailableBinaryStorage.ts +19 -0
- package/src/binaries/index.ts +2 -0
- package/src/bootstrap/index.ts +46 -0
- package/src/bootstrap/runtime/EngineRuntimeRegistrar.ts +180 -0
- package/src/bootstrap/runtime/EngineRuntimeRegistration.types.ts +43 -0
- package/src/bootstrap/runtime/index.ts +6 -0
- package/src/browser.ts +8 -0
- package/src/contracts/Clock.ts +10 -0
- package/src/contracts/ExpRetryPolicy.ts +23 -0
- package/src/contracts/NoRetryPolicy.ts +5 -0
- package/src/contracts/RetryPolicy.ts +23 -0
- package/src/contracts/credentialTypes.ts +194 -0
- package/src/contracts/index.ts +6 -0
- package/src/contracts/retryPolicySpec.types.ts +30 -0
- package/src/contracts/runFinishedAtFactory.ts +19 -0
- package/src/contracts/runTypes.ts +314 -0
- package/src/contracts/runtimeTypes.ts +373 -0
- package/src/contracts/webhookTypes.ts +49 -0
- package/src/contracts/workflowActivationPolicy.ts +16 -0
- package/src/contracts/workflowTypes.ts +280 -0
- package/src/di/CoreTokens.ts +60 -0
- package/src/di/index.ts +24 -0
- package/src/events/EventPublishingWorkflowExecutionRepository.ts +67 -0
- package/src/events/InMemoryRunEventBusRegistry.ts +37 -0
- package/src/events/InMemoryRunEventSubscription.ts +9 -0
- package/src/events/NodeEventPublisher.ts +22 -0
- package/src/events/index.ts +4 -0
- package/src/events/runEvents.ts +54 -0
- package/src/execution/ActivationEnqueueService.ts +125 -0
- package/src/execution/CredentialResolverFactory.ts +39 -0
- package/src/execution/DefaultAsyncSleeper.ts +9 -0
- package/src/execution/DefaultExecutionContextFactory.ts +48 -0
- package/src/execution/InProcessRetryRunner.ts +115 -0
- package/src/execution/InProcessRetryRunnerFactory.ts +8 -0
- package/src/execution/NodeActivationRequestComposer.ts +113 -0
- package/src/execution/NodeExecutionSnapshotFactory.ts +152 -0
- package/src/execution/NodeExecutor.ts +43 -0
- package/src/execution/NodeExecutorFactory.ts +10 -0
- package/src/execution/NodeInputsByPortFactory.ts +14 -0
- package/src/execution/NodeInstanceFactory.ts +32 -0
- package/src/execution/NodeInstanceFactoryFactory.ts +9 -0
- package/src/execution/NodeRunStateWriter.ts +185 -0
- package/src/execution/NodeRunStateWriterFactory.ts +29 -0
- package/src/execution/PersistedRunStateTerminalBuilder.ts +25 -0
- package/src/execution/RunStateSemantics.ts +158 -0
- package/src/execution/WorkflowRunExecutionContextFactory.ts +45 -0
- package/src/execution/asyncSleeper.types.ts +3 -0
- package/src/execution/index.ts +26 -0
- package/src/index.ts +18 -0
- package/src/orchestration/Engine.ts +229 -0
- package/src/orchestration/EngineWaiters.ts +37 -0
- package/src/orchestration/RunContinuationService.ts +810 -0
- package/src/orchestration/RunStartService.ts +449 -0
- package/src/orchestration/TriggerRuntimeService.ts +260 -0
- package/src/orchestration/index.ts +5 -0
- package/src/planning/CurrentStateFrontierPlanner.ts +400 -0
- package/src/planning/EngineWorkflowPlanningFactory.ts +63 -0
- package/src/planning/RunQueuePlanner.ts +302 -0
- package/src/planning/WorkflowTopologyPlanner.ts +77 -0
- package/src/planning/index.ts +4 -0
- package/src/policies/WorkflowPolicyErrorServices.ts +38 -0
- package/src/policies/executionLimits/EngineExecutionLimitsPolicy.ts +66 -0
- package/src/policies/executionLimits/EngineExecutionLimitsPolicyFactory.ts +14 -0
- package/src/policies/index.ts +10 -0
- package/src/policies/storage/RunPolicySnapshotFactory.ts +23 -0
- package/src/policies/storage/RunTerminalPersistenceCoordinator.ts +29 -0
- package/src/policies/storage/WorkflowStoragePolicyEvaluator.ts +39 -0
- package/src/runStorage/BinaryBodyBufferReader.ts +57 -0
- package/src/runStorage/BinaryBodyReadableStreamFactory.ts +21 -0
- package/src/runStorage/InMemoryBinaryStorageRegistry.ts +53 -0
- package/src/runStorage/InMemoryRunData.ts +33 -0
- package/src/runStorage/InMemoryRunDataFactory.ts +8 -0
- package/src/runStorage/InMemoryWorkflowExecutionRepository.ts +95 -0
- package/src/runStorage/RunSummaryMapper.ts +17 -0
- package/src/runStorage/index.ts +7 -0
- package/src/runtime/EngineFactory.ts +151 -0
- package/src/runtime/EngineWorkflowRunnerService.ts +39 -0
- package/src/runtime/EngineWorkflowRunnerServiceFactory.ts +11 -0
- package/src/runtime/InMemoryLiveWorkflowRepository.ts +20 -0
- package/src/runtime/RunIntentService.ts +175 -0
- package/src/runtime/RunIntentServiceFactory.ts +11 -0
- package/src/runtime/WorkflowRepositoryWebhookTriggerMatcher.ts +144 -0
- package/src/runtime/WorkflowRepositoryWebhookTriggerMatcherFactory.ts +13 -0
- package/src/runtime/index.ts +9 -0
- package/src/runtime-types/InjectableRuntimeDecoratorComposerRegistry.ts +25 -0
- package/src/runtime-types/PersistedRuntimeTypeMetadataStoreRegistry.ts +46 -0
- package/src/runtime-types/PersistedRuntimeTypeNameResolver.ts +14 -0
- package/src/runtime-types/StackTraceCallSitePathResolver.ts +25 -0
- package/src/runtime-types/persistedRuntimeTypeModelRegistry.ts +33 -0
- package/src/runtime-types/runtimeTypeDecorators.types.ts +46 -0
- package/src/scheduler/ConfigDrivenOffloadPolicy.ts +28 -0
- package/src/scheduler/DefaultDrivingScheduler.ts +100 -0
- package/src/scheduler/HintOnlyOffloadPolicy.ts +9 -0
- package/src/scheduler/InlineDrivingScheduler.ts +145 -0
- package/src/scheduler/InlineDrivingSchedulerFactory.ts +9 -0
- package/src/scheduler/LocalOnlyScheduler.ts +7 -0
- package/src/serialization/ItemsInputNormalizer.ts +36 -0
- package/src/testing/RejectingCredentialSessionService.ts +15 -0
- package/src/testing.ts +6 -0
- package/src/types/index.ts +12 -0
- package/src/workflow/definition/ConnectionInvocationIdFactory.ts +17 -0
- package/src/workflow/definition/ConnectionNodeIdFactory.ts +42 -0
- package/src/workflow/definition/WorkflowExecutableNodeClassifier.ts +71 -0
- package/src/workflow/definition/WorkflowExecutableNodeClassifierFactory.ts +9 -0
- package/src/workflow/dsl/ChainCursorResolver.ts +103 -0
- package/src/workflow/dsl/WhenBuilder.ts +57 -0
- package/src/workflow/dsl/WorkflowBuilder.ts +55 -0
- package/src/workflow/dsl/workflowBuilderTypes.ts +63 -0
- package/src/workflow/graph/DefaultWorkflowGraphFactory.ts +8 -0
- package/src/workflow/graph/ExecutableGraph.ts +24 -0
- package/src/workflow/index.ts +11 -0
- package/src/workflowSnapshots/MissingRuntimeExecutionMarker.ts +5 -0
- package/src/workflowSnapshots/MissingRuntimeFallbacksFactory.ts +27 -0
- package/src/workflowSnapshots/MissingRuntimeNode.ts +12 -0
- package/src/workflowSnapshots/MissingRuntimeNodeConfig.ts +14 -0
- package/src/workflowSnapshots/MissingRuntimeNodeToken.ts +1 -0
- package/src/workflowSnapshots/MissingRuntimeTrigger.ts +16 -0
- package/src/workflowSnapshots/MissingRuntimeTriggerConfig.ts +14 -0
- package/src/workflowSnapshots/MissingRuntimeTriggerToken.ts +1 -0
- package/src/workflowSnapshots/PersistedRuntimeTypeIdFactory.ts +19 -0
- package/src/workflowSnapshots/PersistedWorkflowTokenRegistry.ts +89 -0
- package/src/workflowSnapshots/PersistedWorkflowTokenRegistryFactory.ts +2 -0
- package/src/workflowSnapshots/WorkflowSnapshotCodec.ts +177 -0
- package/src/workflowSnapshots/WorkflowSnapshotResolver.ts +102 -0
- package/src/workflowSnapshots/index.ts +12 -0
- package/tsconfig.json +9 -0
- package/tsdown.config.ts +10 -0
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@codemation/core",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"author": "Made Relevant B.V.",
|
|
8
|
+
"homepage": "https://www.maderelevant.com",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"main": "./dist/index.cjs",
|
|
11
|
+
"module": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"development": {
|
|
17
|
+
"import": "./src/index.ts",
|
|
18
|
+
"require": "./dist/index.cjs"
|
|
19
|
+
},
|
|
20
|
+
"import": "./dist/index.js",
|
|
21
|
+
"require": "./dist/index.cjs"
|
|
22
|
+
},
|
|
23
|
+
"./browser": {
|
|
24
|
+
"types": "./src/browser.ts",
|
|
25
|
+
"import": "./src/browser.ts"
|
|
26
|
+
},
|
|
27
|
+
"./testing": {
|
|
28
|
+
"types": "./dist/testing.d.ts",
|
|
29
|
+
"development": {
|
|
30
|
+
"import": "./src/testing.ts",
|
|
31
|
+
"require": "./dist/testing.cjs"
|
|
32
|
+
},
|
|
33
|
+
"import": "./dist/testing.js",
|
|
34
|
+
"require": "./dist/testing.cjs"
|
|
35
|
+
},
|
|
36
|
+
"./bootstrap": {
|
|
37
|
+
"types": "./dist/bootstrap/index.d.ts",
|
|
38
|
+
"development": {
|
|
39
|
+
"import": "./src/bootstrap/index.ts",
|
|
40
|
+
"require": "./dist/bootstrap/index.cjs"
|
|
41
|
+
},
|
|
42
|
+
"import": "./dist/bootstrap/index.js",
|
|
43
|
+
"require": "./dist/bootstrap/index.cjs"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^25.3.5",
|
|
48
|
+
"eslint": "^10.0.3",
|
|
49
|
+
"tsdown": "^0.15.5",
|
|
50
|
+
"tsx": "^4.21.0",
|
|
51
|
+
"typescript": "^5.9.3",
|
|
52
|
+
"vitest": "4.0.18"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"reflect-metadata": "^0.2.2",
|
|
56
|
+
"tsyringe": "^4.10.0",
|
|
57
|
+
"zod": "^4.3.6"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"dev": "tsdown --watch",
|
|
61
|
+
"build": "tsdown",
|
|
62
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
63
|
+
"lint": "eslint .",
|
|
64
|
+
"test": "pnpm build && vitest run"
|
|
65
|
+
}
|
|
66
|
+
}
|
package/src/ai/AiHost.ts
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { TypeToken } from "../di";
|
|
2
|
+
|
|
3
|
+
import type { CredentialRequirement } from "../contracts/credentialTypes";
|
|
4
|
+
|
|
5
|
+
import type { Item, Items, NodeConfigBase, NodeExecutionContext, RunnableNodeConfig } from "../types";
|
|
6
|
+
|
|
7
|
+
import type { input as ZodInput, output as ZodOutput, ZodType } from "zod";
|
|
8
|
+
|
|
9
|
+
export interface AgentCanvasPresentation<TIcon extends string = string> {
|
|
10
|
+
readonly label?: string;
|
|
11
|
+
readonly icon?: TIcon;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type ZodSchemaAny = ZodType<any, any, any>;
|
|
15
|
+
|
|
16
|
+
export interface ToolConfig {
|
|
17
|
+
readonly type: TypeToken<Tool<ToolConfig, ZodSchemaAny, ZodSchemaAny>>;
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly description?: string;
|
|
20
|
+
readonly presentation?: AgentCanvasPresentation;
|
|
21
|
+
getCredentialRequirements?(): ReadonlyArray<CredentialRequirement>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type ToolExecuteArgs<TConfig extends ToolConfig = ToolConfig, TInput = unknown> = Readonly<{
|
|
25
|
+
config: TConfig;
|
|
26
|
+
input: TInput;
|
|
27
|
+
ctx: NodeExecutionContext<any>;
|
|
28
|
+
item: Item;
|
|
29
|
+
itemIndex: number;
|
|
30
|
+
items: Items;
|
|
31
|
+
}>;
|
|
32
|
+
|
|
33
|
+
export interface Tool<
|
|
34
|
+
TConfig extends ToolConfig = ToolConfig,
|
|
35
|
+
TInputSchema extends ZodSchemaAny = ZodSchemaAny,
|
|
36
|
+
TOutputSchema extends ZodSchemaAny = ZodSchemaAny,
|
|
37
|
+
> {
|
|
38
|
+
readonly defaultDescription: string;
|
|
39
|
+
readonly inputSchema: TInputSchema;
|
|
40
|
+
readonly outputSchema: TOutputSchema;
|
|
41
|
+
execute(
|
|
42
|
+
args: ToolExecuteArgs<TConfig, ZodInput<TInputSchema>>,
|
|
43
|
+
): Promise<ZodOutput<TOutputSchema>> | ZodOutput<TOutputSchema>;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export type AgentTool<
|
|
47
|
+
TInputSchema extends ZodSchemaAny = ZodSchemaAny,
|
|
48
|
+
TOutputSchema extends ZodSchemaAny = ZodSchemaAny,
|
|
49
|
+
> = Tool<ToolConfig, TInputSchema, TOutputSchema>;
|
|
50
|
+
|
|
51
|
+
export type AgentToolExecuteArgs<TInput = unknown> = ToolExecuteArgs<ToolConfig, TInput>;
|
|
52
|
+
|
|
53
|
+
export type AgentToolToken = TypeToken<Tool<ToolConfig, ZodSchemaAny, ZodSchemaAny>>;
|
|
54
|
+
|
|
55
|
+
export interface AgentToolDefinition {
|
|
56
|
+
readonly name: string;
|
|
57
|
+
readonly description: string;
|
|
58
|
+
readonly inputSchema: ZodSchemaAny;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export type AgentToolCall = Readonly<{ id?: string; name: string; input: unknown }>;
|
|
62
|
+
|
|
63
|
+
export type AgentToolCallPlanner<_TNodeConfig = unknown> = (
|
|
64
|
+
item: Item,
|
|
65
|
+
index: number,
|
|
66
|
+
items: Items,
|
|
67
|
+
ctx: NodeExecutionContext<any>,
|
|
68
|
+
) => ReadonlyArray<AgentToolCall>;
|
|
69
|
+
|
|
70
|
+
export interface ChatModelConfig {
|
|
71
|
+
readonly type: TypeToken<ChatModelFactory<ChatModelConfig>>;
|
|
72
|
+
readonly name: string;
|
|
73
|
+
readonly presentation?: AgentCanvasPresentation;
|
|
74
|
+
getCredentialRequirements?(): ReadonlyArray<CredentialRequirement>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface LangChainChatModelLike {
|
|
78
|
+
invoke(input: unknown, options?: unknown): Promise<unknown>;
|
|
79
|
+
bindTools?(tools: ReadonlyArray<unknown>): LangChainChatModelLike;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface ChatModelFactory<TConfig extends ChatModelConfig = ChatModelConfig> {
|
|
83
|
+
create(
|
|
84
|
+
args: Readonly<{ config: TConfig; ctx: NodeExecutionContext<any> }>,
|
|
85
|
+
): Promise<LangChainChatModelLike> | LangChainChatModelLike;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface AgentNodeConfig<TInputJson = unknown, TOutputJson = unknown> extends RunnableNodeConfig<
|
|
89
|
+
TInputJson,
|
|
90
|
+
TOutputJson
|
|
91
|
+
> {
|
|
92
|
+
readonly systemMessage: string;
|
|
93
|
+
readonly userMessageFormatter: (
|
|
94
|
+
item: Item<TInputJson>,
|
|
95
|
+
index: number,
|
|
96
|
+
items: Items<TInputJson>,
|
|
97
|
+
ctx: NodeExecutionContext<any>,
|
|
98
|
+
) => string;
|
|
99
|
+
readonly chatModel: ChatModelConfig;
|
|
100
|
+
readonly tools?: ReadonlyArray<ToolConfig>;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export class AgentConfigInspector {
|
|
104
|
+
static isAgentNodeConfig(config: NodeConfigBase | undefined): config is AgentNodeConfig<any, any> {
|
|
105
|
+
if (!config) return false;
|
|
106
|
+
const candidate = config as Partial<AgentNodeConfig<any, any>>;
|
|
107
|
+
return (
|
|
108
|
+
typeof candidate.systemMessage === "string" &&
|
|
109
|
+
typeof candidate.userMessageFormatter === "function" &&
|
|
110
|
+
!!candidate.chatModel
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export type AgentAttachmentRole = "languageModel" | "tool";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { BinaryAttachment, NodeActivationId, NodeId, RunId, WorkflowId } from "../types";
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
BinaryStorage,
|
|
5
|
+
BinaryStorageReadResult,
|
|
6
|
+
ExecutionBinaryService,
|
|
7
|
+
NodeBinaryAttachmentService,
|
|
8
|
+
} from "../types";
|
|
9
|
+
|
|
10
|
+
import { DefaultNodeBinaryAttachmentService } from "./DefaultNodeBinaryAttachmentServiceFactory";
|
|
11
|
+
|
|
12
|
+
export class DefaultExecutionBinaryService implements ExecutionBinaryService {
|
|
13
|
+
constructor(
|
|
14
|
+
private readonly storage: BinaryStorage,
|
|
15
|
+
private readonly workflowId: WorkflowId,
|
|
16
|
+
private readonly runId: RunId,
|
|
17
|
+
private readonly now: () => Date,
|
|
18
|
+
) {}
|
|
19
|
+
|
|
20
|
+
forNode(args: { nodeId: NodeId; activationId: NodeActivationId }): NodeBinaryAttachmentService {
|
|
21
|
+
return new DefaultNodeBinaryAttachmentService(
|
|
22
|
+
this.storage,
|
|
23
|
+
this.workflowId,
|
|
24
|
+
this.runId,
|
|
25
|
+
args.nodeId,
|
|
26
|
+
args.activationId,
|
|
27
|
+
this.now,
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async openReadStream(attachment: BinaryAttachment): Promise<BinaryStorageReadResult | undefined> {
|
|
32
|
+
return await this.storage.openReadStream(attachment.storageKey);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { DefaultNodeBinaryAttachmentService } from "./DefaultNodeBinaryAttachmentServiceFactory";
|
|
37
|
+
export { UnavailableBinaryStorage } from "./UnavailableBinaryStorage";
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { BinaryAttachment, BinaryPreviewKind, Item, NodeActivationId, NodeId, RunId, WorkflowId } from "../types";
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
BinaryAttachmentCreateRequest,
|
|
5
|
+
BinaryStorage,
|
|
6
|
+
BinaryStorageReadResult,
|
|
7
|
+
NodeBinaryAttachmentService,
|
|
8
|
+
} from "../types";
|
|
9
|
+
|
|
10
|
+
export class DefaultNodeBinaryAttachmentService implements NodeBinaryAttachmentService {
|
|
11
|
+
constructor(
|
|
12
|
+
private readonly storage: BinaryStorage,
|
|
13
|
+
private readonly workflowId: WorkflowId,
|
|
14
|
+
private readonly runId: RunId,
|
|
15
|
+
private readonly nodeId: NodeId,
|
|
16
|
+
private readonly activationId: NodeActivationId,
|
|
17
|
+
private readonly now: () => Date,
|
|
18
|
+
) {}
|
|
19
|
+
|
|
20
|
+
async attach(args: BinaryAttachmentCreateRequest): Promise<BinaryAttachment> {
|
|
21
|
+
const attachmentId = this.createAttachmentId();
|
|
22
|
+
const createdAt = this.now().toISOString();
|
|
23
|
+
const storageKey = this.createStorageKey(args, attachmentId);
|
|
24
|
+
const stored = await this.storage.write({
|
|
25
|
+
storageKey,
|
|
26
|
+
body: args.body,
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
id: attachmentId,
|
|
30
|
+
storageKey: stored.storageKey,
|
|
31
|
+
mimeType: args.mimeType,
|
|
32
|
+
size: stored.size,
|
|
33
|
+
storageDriver: this.storage.driverName,
|
|
34
|
+
previewKind: args.previewKind ?? this.resolvePreviewKind(args.mimeType),
|
|
35
|
+
createdAt,
|
|
36
|
+
runId: this.runId,
|
|
37
|
+
workflowId: this.workflowId,
|
|
38
|
+
nodeId: this.nodeId,
|
|
39
|
+
activationId: this.activationId,
|
|
40
|
+
filename: args.filename,
|
|
41
|
+
sha256: stored.sha256,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
withAttachment<TJson>(item: Item<TJson>, name: string, attachment: BinaryAttachment): Item<TJson> {
|
|
46
|
+
return {
|
|
47
|
+
...item,
|
|
48
|
+
binary: {
|
|
49
|
+
...(item.binary ?? {}),
|
|
50
|
+
[name]: attachment,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
forNode(args: { nodeId: NodeId; activationId: NodeActivationId }): NodeBinaryAttachmentService {
|
|
56
|
+
return new DefaultNodeBinaryAttachmentService(
|
|
57
|
+
this.storage,
|
|
58
|
+
this.workflowId,
|
|
59
|
+
this.runId,
|
|
60
|
+
args.nodeId,
|
|
61
|
+
args.activationId,
|
|
62
|
+
this.now,
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async openReadStream(attachment: BinaryAttachment): Promise<BinaryStorageReadResult | undefined> {
|
|
67
|
+
return await this.storage.openReadStream(attachment.storageKey);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
private createAttachmentId(): string {
|
|
71
|
+
return DefaultNodeBinaryAttachmentService.createAttachmentIdValue(`${this.activationId}-${this.now().getTime()}`);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
private static createAttachmentIdValue(fallbackValue: string): string {
|
|
75
|
+
const cryptoObject = globalThis.crypto;
|
|
76
|
+
if (cryptoObject && typeof cryptoObject.randomUUID === "function") {
|
|
77
|
+
return cryptoObject.randomUUID();
|
|
78
|
+
}
|
|
79
|
+
return fallbackValue;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
private createStorageKey(args: BinaryAttachmentCreateRequest, attachmentId: string): string {
|
|
83
|
+
const safeName = this.sanitizeSegment(args.name);
|
|
84
|
+
const safeFilename = this.sanitizeFilename(args.filename);
|
|
85
|
+
const filenameSuffix = safeFilename ? `-${safeFilename}` : "";
|
|
86
|
+
return `${this.sanitizeSegment(this.workflowId)}/${this.sanitizeSegment(this.runId)}/${this.sanitizeSegment(this.nodeId)}/${this.sanitizeSegment(this.activationId)}/${attachmentId}-${safeName}${filenameSuffix}`;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
private sanitizeSegment(value: string): string {
|
|
90
|
+
const normalized = value.trim();
|
|
91
|
+
if (!normalized) {
|
|
92
|
+
return "item";
|
|
93
|
+
}
|
|
94
|
+
return normalized.replace(/[^a-zA-Z0-9._-]+/g, "_");
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
private sanitizeFilename(value: string | undefined): string | undefined {
|
|
98
|
+
if (!value) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
const normalized = value.trim().split("/").at(-1)?.split("\\").at(-1) ?? value.trim();
|
|
102
|
+
if (!normalized) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
return normalized.replace(/[^a-zA-Z0-9._-]+/g, "_");
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
private resolvePreviewKind(mimeType: string): BinaryPreviewKind {
|
|
109
|
+
if (mimeType.startsWith("image/")) {
|
|
110
|
+
return "image";
|
|
111
|
+
}
|
|
112
|
+
if (mimeType.startsWith("audio/")) {
|
|
113
|
+
return "audio";
|
|
114
|
+
}
|
|
115
|
+
if (mimeType.startsWith("video/")) {
|
|
116
|
+
return "video";
|
|
117
|
+
}
|
|
118
|
+
return "download";
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BinaryStorage } from "../types";
|
|
2
|
+
|
|
3
|
+
export class UnavailableBinaryStorage implements BinaryStorage {
|
|
4
|
+
readonly driverName = "unavailable";
|
|
5
|
+
|
|
6
|
+
async write(): Promise<never> {
|
|
7
|
+
throw new Error("Binary storage is not configured for this runtime.");
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
async openReadStream(): Promise<undefined> {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async stat(): Promise<{ exists: false }> {
|
|
15
|
+
return { exists: false };
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async delete(): Promise<void> {}
|
|
19
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Composition-root engine graph and advanced runtime wiring. Not part of the main `@codemation/core` barrel. */
|
|
2
|
+
export { Engine } from "../orchestration/Engine";
|
|
3
|
+
export { EngineFactory, type EngineCompositionDeps } from "../runtime/EngineFactory";
|
|
4
|
+
export {
|
|
5
|
+
EngineRuntimeRegistrar,
|
|
6
|
+
type EngineRuntimeRegistrationOptions,
|
|
7
|
+
type TriggerRuntimeDiagnosticsProvider,
|
|
8
|
+
type WebhookTriggerMatcherProvider,
|
|
9
|
+
} from "./runtime";
|
|
10
|
+
export {
|
|
11
|
+
ConfigDrivenOffloadPolicy,
|
|
12
|
+
DefaultAsyncSleeper,
|
|
13
|
+
DefaultDrivingScheduler,
|
|
14
|
+
HintOnlyOffloadPolicy,
|
|
15
|
+
InProcessRetryRunner,
|
|
16
|
+
InlineDrivingScheduler,
|
|
17
|
+
LocalOnlyScheduler,
|
|
18
|
+
NodeInstanceFactory,
|
|
19
|
+
NodeExecutor,
|
|
20
|
+
type AsyncSleeper,
|
|
21
|
+
} from "../execution";
|
|
22
|
+
export {
|
|
23
|
+
EngineWorkflowRunnerService,
|
|
24
|
+
InMemoryLiveWorkflowRepository,
|
|
25
|
+
RunIntentService,
|
|
26
|
+
WorkflowRepositoryWebhookTriggerMatcher,
|
|
27
|
+
} from "../runtime";
|
|
28
|
+
export { DefaultExecutionBinaryService, UnavailableBinaryStorage } from "../binaries";
|
|
29
|
+
export { DefaultExecutionContextFactory, CredentialResolverFactory } from "../execution";
|
|
30
|
+
export {
|
|
31
|
+
InMemoryBinaryStorage,
|
|
32
|
+
InMemoryRunDataFactory,
|
|
33
|
+
InMemoryWorkflowExecutionRepository,
|
|
34
|
+
RunSummaryMapper,
|
|
35
|
+
} from "../runStorage";
|
|
36
|
+
export {
|
|
37
|
+
ENGINE_EXECUTION_LIMITS_DEFAULTS,
|
|
38
|
+
EngineExecutionLimitsPolicy,
|
|
39
|
+
EngineExecutionLimitsPolicyFactory,
|
|
40
|
+
RunPolicySnapshotFactory,
|
|
41
|
+
RunTerminalPersistenceCoordinator,
|
|
42
|
+
WorkflowPolicyErrorServices,
|
|
43
|
+
WorkflowStoragePolicyEvaluator,
|
|
44
|
+
type EngineExecutionLimitsPolicyConfig,
|
|
45
|
+
} from "../policies";
|
|
46
|
+
export { MissingRuntimeTriggerToken, PersistedWorkflowTokenRegistry } from "../workflowSnapshots";
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { instanceCachingFactory, type DependencyContainer } from "../../di";
|
|
2
|
+
import { CoreTokens } from "../../di";
|
|
3
|
+
import { EngineExecutionLimitsPolicyFactory } from "../../policies/executionLimits/EngineExecutionLimitsPolicyFactory";
|
|
4
|
+
import {
|
|
5
|
+
DefaultAsyncSleeper,
|
|
6
|
+
InProcessRetryRunnerFactory,
|
|
7
|
+
NodeExecutor,
|
|
8
|
+
NodeExecutorFactory,
|
|
9
|
+
NodeInstanceFactoryFactory,
|
|
10
|
+
} from "../../execution";
|
|
11
|
+
import {
|
|
12
|
+
EngineFactory,
|
|
13
|
+
EngineWorkflowRunnerServiceFactory,
|
|
14
|
+
RunIntentServiceFactory,
|
|
15
|
+
RunIntentService,
|
|
16
|
+
WorkflowRepositoryWebhookTriggerMatcherFactory,
|
|
17
|
+
} from "../../runtime";
|
|
18
|
+
import { InlineDrivingScheduler } from "../../scheduler/InlineDrivingScheduler";
|
|
19
|
+
import { InlineDrivingSchedulerFactory } from "../../scheduler/InlineDrivingSchedulerFactory";
|
|
20
|
+
import { Engine } from "../../orchestration/Engine";
|
|
21
|
+
import type { EngineRuntimeRegistrationOptions } from "./EngineRuntimeRegistration.types";
|
|
22
|
+
import type { WebhookTriggerMatcherProvider } from "./EngineRuntimeRegistration.types";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Container-first entry: call on a host/test container **after** workflow, run, node, and credential
|
|
26
|
+
* ports are registered. The registrar owns the default inline scheduler, engine binding,
|
|
27
|
+
* and intent-surface wiring so hosts only override the seams they actually replace.
|
|
28
|
+
*/
|
|
29
|
+
export class EngineRuntimeRegistrar {
|
|
30
|
+
register(container: DependencyContainer, options?: EngineRuntimeRegistrationOptions): void {
|
|
31
|
+
this.registerSupportFactories(container);
|
|
32
|
+
this.registerExecutionLimitsPolicy(container, options);
|
|
33
|
+
this.ensureWorkflowNodeInstanceFactory(container);
|
|
34
|
+
this.registerDefaultActivationScheduler(container);
|
|
35
|
+
this.registerEngine(container, options);
|
|
36
|
+
this.registerIntentServices(container);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private registerSupportFactories(container: DependencyContainer): void {
|
|
40
|
+
container.register(EngineExecutionLimitsPolicyFactory, { useClass: EngineExecutionLimitsPolicyFactory });
|
|
41
|
+
container.register(NodeInstanceFactoryFactory, { useClass: NodeInstanceFactoryFactory });
|
|
42
|
+
container.register(DefaultAsyncSleeper, { useClass: DefaultAsyncSleeper });
|
|
43
|
+
container.register(InProcessRetryRunnerFactory, { useClass: InProcessRetryRunnerFactory });
|
|
44
|
+
container.register(NodeExecutorFactory, { useClass: NodeExecutorFactory });
|
|
45
|
+
container.register(InlineDrivingSchedulerFactory, { useClass: InlineDrivingSchedulerFactory });
|
|
46
|
+
container.register(RunIntentServiceFactory, { useClass: RunIntentServiceFactory });
|
|
47
|
+
container.register(EngineWorkflowRunnerServiceFactory, {
|
|
48
|
+
useClass: EngineWorkflowRunnerServiceFactory,
|
|
49
|
+
});
|
|
50
|
+
container.register(WorkflowRepositoryWebhookTriggerMatcherFactory, {
|
|
51
|
+
useClass: WorkflowRepositoryWebhookTriggerMatcherFactory,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
private registerExecutionLimitsPolicy(
|
|
56
|
+
container: DependencyContainer,
|
|
57
|
+
options: EngineRuntimeRegistrationOptions | undefined,
|
|
58
|
+
): void {
|
|
59
|
+
if (container.isRegistered(CoreTokens.EngineExecutionLimitsPolicy, true)) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
container.register(CoreTokens.EngineExecutionLimitsPolicy, {
|
|
63
|
+
useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
64
|
+
const fromResolver = options?.resolveEngineExecutionLimits?.();
|
|
65
|
+
const merged = fromResolver ?? options?.engineExecutionLimits;
|
|
66
|
+
return dependencyContainer.resolve(EngineExecutionLimitsPolicyFactory).create(merged);
|
|
67
|
+
}),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
private ensureWorkflowNodeInstanceFactory(container: DependencyContainer): void {
|
|
72
|
+
if (container.isRegistered(CoreTokens.WorkflowNodeInstanceFactory, true)) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
container.register(CoreTokens.WorkflowNodeInstanceFactory, {
|
|
76
|
+
useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
77
|
+
return dependencyContainer
|
|
78
|
+
.resolve(NodeInstanceFactoryFactory)
|
|
79
|
+
.create(dependencyContainer.resolve(CoreTokens.NodeResolver));
|
|
80
|
+
}),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private registerDefaultActivationScheduler(container: DependencyContainer): void {
|
|
85
|
+
if (container.isRegistered(CoreTokens.NodeActivationScheduler, true)) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
container.register(NodeExecutor, {
|
|
89
|
+
useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
90
|
+
const retryRunner = dependencyContainer
|
|
91
|
+
.resolve(InProcessRetryRunnerFactory)
|
|
92
|
+
.create(dependencyContainer.resolve(DefaultAsyncSleeper));
|
|
93
|
+
return dependencyContainer
|
|
94
|
+
.resolve(NodeExecutorFactory)
|
|
95
|
+
.create(dependencyContainer.resolve(CoreTokens.WorkflowNodeInstanceFactory), retryRunner);
|
|
96
|
+
}),
|
|
97
|
+
});
|
|
98
|
+
container.register(InlineDrivingScheduler, {
|
|
99
|
+
useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
100
|
+
return dependencyContainer
|
|
101
|
+
.resolve(InlineDrivingSchedulerFactory)
|
|
102
|
+
.create(dependencyContainer.resolve(NodeExecutor));
|
|
103
|
+
}),
|
|
104
|
+
});
|
|
105
|
+
container.register(CoreTokens.NodeActivationScheduler, {
|
|
106
|
+
useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
107
|
+
return dependencyContainer.resolve(InlineDrivingScheduler);
|
|
108
|
+
}),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
private registerEngine(container: DependencyContainer, options: EngineRuntimeRegistrationOptions | undefined): void {
|
|
113
|
+
container.register(EngineFactory, { useClass: EngineFactory });
|
|
114
|
+
const matcherProvider = this.resolveMatcherProvider(options);
|
|
115
|
+
container.register(Engine, {
|
|
116
|
+
useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
117
|
+
const liveWorkflowRepository = dependencyContainer.resolve(CoreTokens.LiveWorkflowRepository);
|
|
118
|
+
const nodeResolver = dependencyContainer.resolve(CoreTokens.NodeResolver);
|
|
119
|
+
const tokenRegistryLike = dependencyContainer.resolve(CoreTokens.PersistedWorkflowTokenRegistry);
|
|
120
|
+
const workflowActivationPolicy = dependencyContainer.resolve(CoreTokens.WorkflowActivationPolicy);
|
|
121
|
+
const webhookTriggerMatcher = matcherProvider.createMatcher(dependencyContainer);
|
|
122
|
+
const workflowNodeInstanceFactory = dependencyContainer.resolve(CoreTokens.WorkflowNodeInstanceFactory);
|
|
123
|
+
const triggerRuntimeDiagnostics = options?.triggerRuntimeDiagnosticsProvider?.create(dependencyContainer);
|
|
124
|
+
return dependencyContainer.resolve(EngineFactory).create({
|
|
125
|
+
credentialSessions: dependencyContainer.resolve(CoreTokens.CredentialSessionService),
|
|
126
|
+
liveWorkflowRepository,
|
|
127
|
+
workflowRepository: dependencyContainer.resolve(CoreTokens.WorkflowRepository),
|
|
128
|
+
workflowActivationPolicy,
|
|
129
|
+
nodeResolver,
|
|
130
|
+
triggerSetupStateRepository: dependencyContainer.resolve(CoreTokens.TriggerSetupStateRepository),
|
|
131
|
+
webhookTriggerMatcher,
|
|
132
|
+
runIdFactory: dependencyContainer.resolve(CoreTokens.RunIdFactory),
|
|
133
|
+
activationIdFactory: dependencyContainer.resolve(CoreTokens.ActivationIdFactory),
|
|
134
|
+
workflowExecutionRepository: dependencyContainer.resolve(CoreTokens.WorkflowExecutionRepository),
|
|
135
|
+
activationScheduler: dependencyContainer.resolve(CoreTokens.NodeActivationScheduler),
|
|
136
|
+
runDataFactory: dependencyContainer.resolve(CoreTokens.RunDataFactory),
|
|
137
|
+
executionContextFactory: dependencyContainer.resolve(CoreTokens.ExecutionContextFactory),
|
|
138
|
+
eventBus: dependencyContainer.resolve(CoreTokens.RunEventBus),
|
|
139
|
+
tokenRegistry: tokenRegistryLike,
|
|
140
|
+
workflowNodeInstanceFactory,
|
|
141
|
+
executionLimitsPolicy: dependencyContainer.resolve(CoreTokens.EngineExecutionLimitsPolicy),
|
|
142
|
+
triggerRuntimeDiagnostics,
|
|
143
|
+
});
|
|
144
|
+
}),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
private registerIntentServices(container: DependencyContainer): void {
|
|
149
|
+
container.register(RunIntentService, {
|
|
150
|
+
useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
151
|
+
return dependencyContainer
|
|
152
|
+
.resolve(RunIntentServiceFactory)
|
|
153
|
+
.create(dependencyContainer.resolve(Engine), dependencyContainer.resolve(CoreTokens.WorkflowRepository));
|
|
154
|
+
}),
|
|
155
|
+
});
|
|
156
|
+
container.register(CoreTokens.WorkflowRunnerService, {
|
|
157
|
+
useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
158
|
+
return dependencyContainer
|
|
159
|
+
.resolve(EngineWorkflowRunnerServiceFactory)
|
|
160
|
+
.create(dependencyContainer.resolve(Engine), dependencyContainer.resolve(CoreTokens.WorkflowRepository));
|
|
161
|
+
}),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
private resolveMatcherProvider(options: EngineRuntimeRegistrationOptions | undefined): WebhookTriggerMatcherProvider {
|
|
166
|
+
if (options?.webhookTriggerMatcherProvider) {
|
|
167
|
+
return options.webhookTriggerMatcherProvider;
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
createMatcher: (container) =>
|
|
171
|
+
container
|
|
172
|
+
.resolve(WorkflowRepositoryWebhookTriggerMatcherFactory)
|
|
173
|
+
.create(
|
|
174
|
+
container.resolve(CoreTokens.WorkflowRepository),
|
|
175
|
+
container.resolve(CoreTokens.WorkflowActivationPolicy),
|
|
176
|
+
options?.webhookTriggerRoutingDiagnostics,
|
|
177
|
+
),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { DependencyContainer } from "../../di";
|
|
2
|
+
import type { WebhookTriggerMatcher } from "../../types";
|
|
3
|
+
import type { WebhookTriggerRoutingDiagnostics } from "../../contracts/webhookTypes";
|
|
4
|
+
import type { TriggerRuntimeDiagnostics } from "../../contracts/runtimeTypes";
|
|
5
|
+
import type { EngineExecutionLimitsPolicyConfig } from "../../policies/executionLimits/EngineExecutionLimitsPolicy";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Creates the webhook route matcher used by {@link import("../api/Engine").Engine}.
|
|
9
|
+
* Hosts may supply logging/diagnostics; tests often use the default factory without diagnostics.
|
|
10
|
+
*/
|
|
11
|
+
export interface WebhookTriggerMatcherProvider {
|
|
12
|
+
createMatcher(container: DependencyContainer): WebhookTriggerMatcher;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Supplies optional trigger-runtime logging (inactive workflow skips, activation sync).
|
|
17
|
+
*/
|
|
18
|
+
export interface TriggerRuntimeDiagnosticsProvider {
|
|
19
|
+
create(container: DependencyContainer): TriggerRuntimeDiagnostics | undefined;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface EngineRuntimeRegistrationOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Static limits merged into the factory when the policy token is first resolved.
|
|
25
|
+
* Prefer {@link resolveEngineExecutionLimits} when limits can change after registration (e.g. host `useRuntimeConfig`).
|
|
26
|
+
*/
|
|
27
|
+
engineExecutionLimits?: Partial<EngineExecutionLimitsPolicyConfig>;
|
|
28
|
+
/**
|
|
29
|
+
* Called when the limits policy is first resolved; overrides {@link engineExecutionLimits} when both are set.
|
|
30
|
+
* Use this for host wiring so `runtime.engineExecutionLimits` applied after `registerCoreInfrastructure` is honored.
|
|
31
|
+
*/
|
|
32
|
+
resolveEngineExecutionLimits?: () => Partial<EngineExecutionLimitsPolicyConfig> | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* When {@link webhookTriggerMatcherProvider} is omitted, the registrar builds
|
|
35
|
+
* {@link import("../../runtime/WorkflowRepositoryWebhookTriggerMatcher").WorkflowRepositoryWebhookTriggerMatcher}
|
|
36
|
+
* using this optional routing diagnostics surface.
|
|
37
|
+
*/
|
|
38
|
+
webhookTriggerRoutingDiagnostics?: WebhookTriggerRoutingDiagnostics;
|
|
39
|
+
/** Overrides default webhook matcher construction (e.g. host-injected loggers). */
|
|
40
|
+
webhookTriggerMatcherProvider?: WebhookTriggerMatcherProvider;
|
|
41
|
+
/** Overrides default trigger diagnostics (undefined when omitted). */
|
|
42
|
+
triggerRuntimeDiagnosticsProvider?: TriggerRuntimeDiagnosticsProvider;
|
|
43
|
+
}
|
package/src/browser.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { ConnectionNodeIdFactory } from "./workflow/definition/ConnectionNodeIdFactory";
|
|
2
|
+
export * from "./contracts/credentialTypes";
|
|
3
|
+
export * from "./contracts/runtimeTypes";
|
|
4
|
+
export * from "./contracts/runFinishedAtFactory";
|
|
5
|
+
export * from "./contracts/runTypes";
|
|
6
|
+
export * from "./contracts/webhookTypes";
|
|
7
|
+
export * from "./contracts/workflowTypes";
|
|
8
|
+
export { ItemsInputNormalizer } from "./serialization/ItemsInputNormalizer";
|