@codemation/core 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{CostCatalogContract-DZgcUBE4.d.cts → CostCatalogContract-DD7fQ4FF.d.cts} +2 -2
  3. package/dist/{EngineRuntimeRegistration.types-Cggm5GVY.d.cts → EngineRuntimeRegistration.types-DTV5_7Jw.d.cts} +3 -3
  4. package/dist/{EngineRuntimeRegistration.types-BQbS9_gs.d.ts → EngineRuntimeRegistration.types-Dl92Hdoi.d.ts} +2 -2
  5. package/dist/InMemoryRunDataFactory-qMiYjhCK.d.cts +202 -0
  6. package/dist/{ItemsInputNormalizer-D-MH8MBs.js → ItemsInputNormalizer-BhuxvZh5.js} +2 -2
  7. package/dist/{ItemsInputNormalizer-D-MH8MBs.js.map → ItemsInputNormalizer-BhuxvZh5.js.map} +1 -1
  8. package/dist/{ItemsInputNormalizer-_Mfcd3YU.d.ts → ItemsInputNormalizer-C09a7iFP.d.ts} +2 -2
  9. package/dist/{ItemsInputNormalizer-C_dpn76M.d.cts → ItemsInputNormalizer-DLaD6rTl.d.cts} +3 -3
  10. package/dist/{ItemsInputNormalizer-CwdOhSAK.cjs → ItemsInputNormalizer-Div-fb6a.cjs} +2 -2
  11. package/dist/{ItemsInputNormalizer-CwdOhSAK.cjs.map → ItemsInputNormalizer-Div-fb6a.cjs.map} +1 -1
  12. package/dist/{RunIntentService-BVur7x9n.d.ts → RunIntentService-BOSGwmqn.d.ts} +18 -4
  13. package/dist/{RunIntentService-CEF-sFfI.d.cts → RunIntentService-CWMMrAP4.d.cts} +18 -4
  14. package/dist/{agentMcpTypes-ZiNbNsEi.d.cts → agentMcpTypes-DUmniLOY.d.cts} +183 -4
  15. package/dist/bootstrap/index.cjs +3 -3
  16. package/dist/bootstrap/index.d.cts +63 -7
  17. package/dist/bootstrap/index.d.ts +5 -5
  18. package/dist/bootstrap/index.js +3 -3
  19. package/dist/{bootstrap-D_Yyi0wL.js → bootstrap-CKTMMNmL.js} +173 -4
  20. package/dist/bootstrap-CKTMMNmL.js.map +1 -0
  21. package/dist/{bootstrap-BxuTFTLB.cjs → bootstrap-D460dCgS.cjs} +175 -4
  22. package/dist/bootstrap-D460dCgS.cjs.map +1 -0
  23. package/dist/browser.cjs +3 -2
  24. package/dist/browser.d.cts +4 -4
  25. package/dist/browser.d.ts +3 -3
  26. package/dist/browser.js +3 -3
  27. package/dist/contracts.d.cts +5 -5
  28. package/dist/contracts.d.ts +2 -2
  29. package/dist/{di-0Wop7z1y.js → di-DdsgWfVy.js} +31 -2
  30. package/dist/di-DdsgWfVy.js.map +1 -0
  31. package/dist/{di-BlEKdoZS.cjs → di-tO6R7VJV.cjs} +36 -1
  32. package/dist/di-tO6R7VJV.cjs.map +1 -0
  33. package/dist/{executionPersistenceContracts-BgZMRsTa.d.cts → executionPersistenceContracts-DenJJK2T.d.cts} +2 -2
  34. package/dist/{index-62Ba9f7D.d.ts → index-BZDhEQ6W.d.ts} +277 -101
  35. package/dist/{index-zWGtEhrf.d.ts → index-CSKKuK60.d.ts} +441 -5
  36. package/dist/index.cjs +71 -161
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.d.cts +395 -97
  39. package/dist/index.d.ts +5 -5
  40. package/dist/index.js +56 -159
  41. package/dist/index.js.map +1 -1
  42. package/dist/{params-B5SENSzZ.d.cts → params-DqRvku2h.d.cts} +2 -2
  43. package/dist/{runtime-cxmUkk0l.js → runtime-BPZgnZ9G.js} +611 -16
  44. package/dist/runtime-BPZgnZ9G.js.map +1 -0
  45. package/dist/{runtime-DBzq5YBi.cjs → runtime-CyW9c9XM.cjs} +670 -15
  46. package/dist/runtime-CyW9c9XM.cjs.map +1 -0
  47. package/dist/testing.cjs +3 -3
  48. package/dist/testing.d.cts +3 -3
  49. package/dist/testing.d.ts +3 -3
  50. package/dist/testing.js +3 -3
  51. package/package.json +1 -1
  52. package/src/authoring/defineHumanApprovalNode.types.ts +379 -0
  53. package/src/authoring/index.ts +6 -0
  54. package/src/bootstrap/runtime/EngineRuntimeRegistrar.ts +29 -0
  55. package/src/contracts/CodemationTelemetryAttributeNames.ts +10 -0
  56. package/src/contracts/credentialTypes.ts +10 -0
  57. package/src/contracts/hitlSeamTypes.ts +34 -0
  58. package/src/contracts/humanTaskStoreTypes.ts +48 -0
  59. package/src/contracts/inboxChannelTypes.ts +58 -0
  60. package/src/contracts/index.ts +3 -0
  61. package/src/contracts/runTypes.ts +61 -3
  62. package/src/contracts/runtimeTypes.ts +112 -0
  63. package/src/credentials/CredentialMaterialProvider.types.ts +61 -0
  64. package/src/credentials/ManagedCredentialMaterialWriteError.ts +14 -0
  65. package/src/credentials/ManagedMaterialFetchError.ts +16 -0
  66. package/src/execution/ActivationEnqueueService.ts +16 -0
  67. package/src/execution/DefaultExecutionContextFactory.ts +11 -0
  68. package/src/execution/NodeExecutionSnapshotFactory.ts +7 -1
  69. package/src/execution/NodeExecutor.ts +60 -1
  70. package/src/execution/NodeExecutorFactory.ts +12 -2
  71. package/src/execution/NodeSuspensionHandler.ts +220 -0
  72. package/src/execution/PersistedRunStateTerminalBuilder.ts +5 -2
  73. package/src/execution/RunStateSemantics.ts +5 -0
  74. package/src/execution/RunSuspendedError.ts +21 -0
  75. package/src/index.ts +40 -0
  76. package/src/orchestration/Engine.ts +12 -2
  77. package/src/orchestration/EngineWaiters.ts +1 -1
  78. package/src/orchestration/NodeExecutionRequestHandlerService.ts +25 -2
  79. package/src/orchestration/RunContinuationService.ts +226 -2
  80. package/src/orchestration/TestSuiteOrchestrator.ts +5 -4
  81. package/src/runtime/RunIntentService.ts +3 -0
  82. package/src/workflow/dsl/ChainCursorResolver.ts +36 -0
  83. package/dist/InMemoryRunDataFactory-C7YItvHG.d.cts +0 -123
  84. package/dist/bootstrap-BxuTFTLB.cjs.map +0 -1
  85. package/dist/bootstrap-D_Yyi0wL.js.map +0 -1
  86. package/dist/di-0Wop7z1y.js.map +0 -1
  87. package/dist/di-BlEKdoZS.cjs.map +0 -1
  88. package/dist/runtime-DBzq5YBi.cjs.map +0 -1
  89. package/dist/runtime-cxmUkk0l.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
- const require_di = require('./di-BlEKdoZS.cjs');
2
- const require_ItemsInputNormalizer = require('./ItemsInputNormalizer-CwdOhSAK.cjs');
1
+ const require_di = require('./di-tO6R7VJV.cjs');
2
+ const require_ItemsInputNormalizer = require('./ItemsInputNormalizer-Div-fb6a.cjs');
3
3
  const require_contracts = require('./contracts-CK0x6w_G.cjs');
4
- const require_runtime = require('./runtime-DBzq5YBi.cjs');
4
+ const require_runtime = require('./runtime-CyW9c9XM.cjs');
5
5
  const require_InMemoryRunEventBusRegistry = require('./InMemoryRunEventBusRegistry-Sa86VxuV.cjs');
6
6
  let zod = require("zod");
7
7
  zod = require_di.__toESM(zod);
@@ -16,161 +16,10 @@ var SystemClock = class {
16
16
  };
17
17
 
18
18
  //#endregion
19
- //#region src/authoring/DefinedNodeRegistry.ts
20
- var DefinedNodeRegistry = class {
21
- static definitions = /* @__PURE__ */ new Map();
22
- static register(definition) {
23
- this.definitions.set(definition.key, definition);
24
- }
25
- static resolve(key) {
26
- return this.definitions.get(key);
27
- }
28
- };
29
-
30
- //#endregion
31
- //#region src/authoring/defineNode.types.ts
32
- const definedNodeCredentialRequirementFactory$1 = {
33
- create(bindings) {
34
- if (!bindings) return [];
35
- return Object.entries(bindings).map(([slotKey, binding]) => {
36
- if (typeof binding === "string" || this.isCredentialType(binding)) return {
37
- slotKey,
38
- label: this.humanize(slotKey),
39
- acceptedTypes: [this.resolveTypeId(binding)]
40
- };
41
- const types = Array.isArray(binding.type) ? binding.type : [binding.type];
42
- return {
43
- slotKey,
44
- label: binding.label ?? this.humanize(slotKey),
45
- acceptedTypes: types.map((entry) => this.resolveTypeId(entry)),
46
- optional: binding.optional,
47
- helpText: binding.helpText,
48
- helpUrl: binding.helpUrl
49
- };
50
- });
51
- },
52
- isCredentialType(value) {
53
- return Boolean(value) && typeof value === "object" && "definition" in value && typeof value.definition?.typeId === "string";
54
- },
55
- resolveTypeId(type) {
56
- return typeof type === "string" ? type : type.definition.typeId;
57
- },
58
- humanize(key) {
59
- return key.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/[-_.]+/g, " ").replace(/\s+/g, " ").trim().replace(/^./, (character) => character.toUpperCase());
60
- }
61
- };
62
- const definedNodeCredentialAccessorFactory$1 = { create(bindings, ctx) {
63
- if (!bindings) return {};
64
- const entries = Object.keys(bindings).map((slotKey) => [slotKey, () => ctx.getCredential(slotKey)]);
65
- return Object.fromEntries(entries);
66
- } };
67
- function defineNode(options) {
68
- const credentialRequirements = definedNodeCredentialRequirementFactory$1.create(options.credentials);
69
- const DefinedNodeRuntime = class {
70
- kind = "node";
71
- outputPorts = ["main"];
72
- inputSchema = options.inputSchema;
73
- async execute(args) {
74
- const ctx = args.ctx;
75
- const context = {
76
- config: ctx.config.config,
77
- credentials: definedNodeCredentialAccessorFactory$1.create(options.credentials, ctx),
78
- execution: ctx
79
- };
80
- const payload = {
81
- input: args.input,
82
- item: args.item,
83
- itemIndex: args.itemIndex,
84
- items: args.items,
85
- ctx
86
- };
87
- return await options.execute(payload, context);
88
- }
89
- };
90
- require_runtime.node({ name: options.key })(DefinedNodeRuntime);
91
- const DefinedRunnableNodeConfig = class {
92
- kind = "node";
93
- type = DefinedNodeRuntime;
94
- icon = options.icon;
95
- inputSchema = options.inputSchema;
96
- keepBinaries = options.keepBinaries ?? false;
97
- constructor(name, config, id) {
98
- this.name = name;
99
- this.id = id;
100
- this.config = config;
101
- }
102
- config;
103
- getCredentialRequirements() {
104
- return credentialRequirements;
105
- }
106
- inspectorSummary() {
107
- return options.inspectorSummary?.({ config: this.config });
108
- }
109
- };
110
- const definition = {
111
- kind: "defined-node",
112
- key: options.key,
113
- title: options.title,
114
- description: options.description,
115
- create(config, name = options.title, id) {
116
- return new DefinedRunnableNodeConfig(name, config, id);
117
- },
118
- register(context) {
119
- context.registerNode(DefinedNodeRuntime);
120
- }
121
- };
122
- DefinedNodeRegistry.register(definition);
123
- return definition;
124
- }
125
- function defineBatchNode(options) {
126
- const credentialRequirements = definedNodeCredentialRequirementFactory$1.create(options.credentials);
127
- const DefinedNodeRuntime = class {
128
- kind = "node";
129
- outputPorts = ["main"];
130
- async execute(args) {
131
- if (args.itemIndex !== args.items.length - 1) return [];
132
- const ctx = args.ctx;
133
- const context = {
134
- config: ctx.config.config,
135
- credentials: definedNodeCredentialAccessorFactory$1.create(options.credentials, ctx),
136
- execution: ctx
137
- };
138
- return [...await options.run(args.items.map((item) => item.json), context)];
139
- }
140
- };
141
- require_runtime.node({ name: options.key })(DefinedNodeRuntime);
142
- const DefinedRunnableNodeConfig = class {
143
- kind = "node";
144
- type = DefinedNodeRuntime;
145
- icon = options.icon;
146
- constructor(name, config, id) {
147
- this.name = name;
148
- this.id = id;
149
- this.config = config;
150
- }
151
- config;
152
- getCredentialRequirements() {
153
- return credentialRequirements;
154
- }
155
- inspectorSummary() {
156
- return options.inspectorSummary?.({ config: this.config });
157
- }
158
- };
159
- const definition = {
160
- kind: "defined-node",
161
- key: options.key,
162
- title: options.title,
163
- description: options.description,
164
- create(config, name = options.title, id) {
165
- return new DefinedRunnableNodeConfig(name, config, id);
166
- },
167
- register(context) {
168
- context.registerNode(DefinedNodeRuntime);
169
- }
170
- };
171
- DefinedNodeRegistry.register(definition);
172
- return definition;
173
- }
19
+ //#region src/contracts/inboxChannelTypes.ts
20
+ const InboxChannelResolverToken = Symbol.for("codemation.core.InboxChannelResolver");
21
+ const LocalInboxChannelToken = Symbol.for("codemation.core.LocalInboxChannel");
22
+ const ControlPlaneInboxChannelToken = Symbol.for("codemation.core.ControlPlaneInboxChannel");
174
23
 
175
24
  //#endregion
176
25
  //#region src/authoring/defineCredential.types.ts
@@ -807,6 +656,54 @@ var WorkflowEdgePortValidator = class {
807
656
  }
808
657
  };
809
658
 
659
+ //#endregion
660
+ //#region src/credentials/CredentialMaterialProvider.types.ts
661
+ /**
662
+ * Thrown by a provider when asked to operate on a `ref.source` it does not
663
+ * handle (e.g. the local provider being asked to read `control-plane` bytes).
664
+ * Exported so `instanceof`-checks work across the workspace boundary.
665
+ */
666
+ var IllegalMaterialSourceError = class extends Error {
667
+ constructor(source, providerName) {
668
+ super(`Provider "${providerName}" cannot handle material source "${source}".`);
669
+ this.source = source;
670
+ this.providerName = providerName;
671
+ this.name = "IllegalMaterialSourceError";
672
+ }
673
+ };
674
+
675
+ //#endregion
676
+ //#region src/credentials/ManagedCredentialMaterialWriteError.ts
677
+ /**
678
+ * Thrown by managed-mode providers when `setMaterial` is called. Managed
679
+ * credential bytes are owned by the control plane; the workspace must not
680
+ * mutate them. See `docs/design/credentials-oauth-unification.md` and
681
+ * `planning/sprints/credentials-vault/02-controlplane-material-provider.md`.
682
+ */
683
+ var ManagedCredentialMaterialWriteError = class extends Error {
684
+ constructor(message = "managed credentials are owned by the control plane; use the Connected apps page to create or modify them.") {
685
+ super(message);
686
+ this.name = "ManagedCredentialMaterialWriteError";
687
+ }
688
+ };
689
+
690
+ //#endregion
691
+ //#region src/credentials/ManagedMaterialFetchError.ts
692
+ /**
693
+ * Thrown by `ControlPlaneCredentialMaterialProvider` when the control-plane
694
+ * material endpoint returns a non-2xx response or a malformed body. Exposes
695
+ * the HTTP status and the raw error body so call sites can surface actionable
696
+ * detail without parsing strings.
697
+ */
698
+ var ManagedMaterialFetchError = class extends Error {
699
+ constructor(status, providerErrorBody, message) {
700
+ super(message ?? `Control-plane material fetch failed: HTTP ${status} ${providerErrorBody}`);
701
+ this.status = status;
702
+ this.providerErrorBody = providerErrorBody;
703
+ this.name = "ManagedMaterialFetchError";
704
+ }
705
+ };
706
+
810
707
  //#endregion
811
708
  exports.AgentBindError = require_contracts.AgentBindError;
812
709
  exports.AgentConfigInspector = require_di.AgentConfigInspector;
@@ -825,6 +722,7 @@ exports.CodemationTelemetryMetricNames = require_runtime.CodemationTelemetryMetr
825
722
  exports.ConnectionInvocationEventPublisher = require_runtime.ConnectionInvocationEventPublisher;
826
723
  exports.ConnectionInvocationIdFactory = require_runtime.ConnectionInvocationIdFactory;
827
724
  exports.ConnectionNodeIdFactory = require_di.ConnectionNodeIdFactory;
725
+ exports.ControlPlaneInboxChannelToken = ControlPlaneInboxChannelToken;
828
726
  exports.CoreTokens = require_di.CoreTokens;
829
727
  exports.CostTrackingTelemetryAttributeNames = require_runtime.CostTrackingTelemetryAttributeNames;
830
728
  exports.CostTrackingTelemetryMetricNames = require_runtime.CostTrackingTelemetryMetricNames;
@@ -836,17 +734,23 @@ exports.DefaultExecutionBinaryService = require_runtime.DefaultExecutionBinarySe
836
734
  exports.DefaultExecutionContextFactory = require_runtime.DefaultExecutionContextFactory;
837
735
  exports.DefaultWorkflowGraphFactory = require_runtime.DefaultWorkflowGraphFactory;
838
736
  exports.DefinedCollectionRegistry = DefinedCollectionRegistry;
839
- exports.DefinedNodeRegistry = DefinedNodeRegistry;
737
+ exports.DefinedNodeRegistry = require_runtime.DefinedNodeRegistry;
840
738
  exports.DefinedPollingTriggerConfig = DefinedPollingTriggerConfig;
841
739
  exports.EngineExecutionLimitsPolicy = require_runtime.EngineExecutionLimitsPolicy;
842
740
  exports.EventPublishingWorkflowExecutionRepository = EventPublishingWorkflowExecutionRepository;
843
741
  exports.ExpRetryPolicy = require_runtime.ExpRetryPolicy;
844
742
  exports.GenAiTelemetryAttributeNames = require_runtime.GenAiTelemetryAttributeNames;
743
+ exports.HitlResumeTokenSignerToken = require_runtime.HitlResumeTokenSignerToken;
744
+ exports.HitlTimeoutJobSchedulerToken = require_runtime.HitlTimeoutJobSchedulerToken;
745
+ exports.HitlWorkspaceIdToken = require_runtime.HitlWorkspaceIdToken;
746
+ exports.HumanTaskStoreToken = require_runtime.HumanTaskStoreToken;
747
+ exports.IllegalMaterialSourceError = IllegalMaterialSourceError;
845
748
  exports.InMemoryBinaryStorage = require_runtime.InMemoryBinaryStorage;
846
749
  exports.InMemoryLiveWorkflowRepository = require_runtime.InMemoryLiveWorkflowRepository;
847
750
  exports.InMemoryRunDataFactory = require_runtime.InMemoryRunDataFactory;
848
751
  exports.InMemoryRunEventBus = require_InMemoryRunEventBusRegistry.InMemoryRunEventBus;
849
752
  exports.InProcessRetryRunner = require_runtime.InProcessRetryRunner;
753
+ exports.InboxChannelResolverToken = InboxChannelResolverToken;
850
754
  exports.InjectableRuntimeDecoratorComposer = require_runtime.InjectableRuntimeDecoratorComposer;
851
755
  exports.ItemExprResolver = require_runtime.ItemExprResolver;
852
756
  Object.defineProperty(exports, 'ItemsInputNormalizer', {
@@ -855,6 +759,9 @@ Object.defineProperty(exports, 'ItemsInputNormalizer', {
855
759
  return require_ItemsInputNormalizer.ItemsInputNormalizer;
856
760
  }
857
761
  });
762
+ exports.LocalInboxChannelToken = LocalInboxChannelToken;
763
+ exports.ManagedCredentialMaterialWriteError = ManagedCredentialMaterialWriteError;
764
+ exports.ManagedMaterialFetchError = ManagedMaterialFetchError;
858
765
  exports.NoOpAgentMcpIntegration = require_contracts.NoOpAgentMcpIntegration;
859
766
  exports.NoOpCostTrackingTelemetry = require_runtime.NoOpCostTrackingTelemetry;
860
767
  exports.NoOpCostTrackingTelemetryFactory = require_runtime.NoOpCostTrackingTelemetryFactory;
@@ -879,6 +786,7 @@ exports.RunFinishedAtFactory = require_di.RunFinishedAtFactory;
879
786
  exports.RunIntentService = require_runtime.RunIntentService;
880
787
  exports.RunnableOutputBehaviorResolver = require_runtime.RunnableOutputBehaviorResolver;
881
788
  exports.StackTraceCallSitePathResolver = require_runtime.StackTraceCallSitePathResolver;
789
+ exports.SuspensionRequest = require_di.SuspensionRequest;
882
790
  exports.SystemClock = SystemClock;
883
791
  exports.UnavailableBinaryStorage = require_runtime.UnavailableBinaryStorage;
884
792
  exports.WhenBuilder = require_runtime.WhenBuilder;
@@ -897,10 +805,11 @@ Object.defineProperty(exports, 'container', {
897
805
  return tsyringe.container;
898
806
  }
899
807
  });
900
- exports.defineBatchNode = defineBatchNode;
808
+ exports.defineBatchNode = require_runtime.defineBatchNode;
901
809
  exports.defineCollection = defineCollection;
902
810
  exports.defineCredential = defineCredential;
903
- exports.defineNode = defineNode;
811
+ exports.defineHumanApprovalNode = require_runtime.defineHumanApprovalNode;
812
+ exports.defineNode = require_runtime.defineNode;
904
813
  exports.definePollingTrigger = definePollingTrigger;
905
814
  Object.defineProperty(exports, 'delay', {
906
815
  enumerable: true,
@@ -942,6 +851,7 @@ Object.defineProperty(exports, 'instancePerContainerCachingFactory', {
942
851
  return tsyringe.instancePerContainerCachingFactory;
943
852
  }
944
853
  });
854
+ exports.isHumanApprovalNode = require_runtime.isHumanApprovalNode;
945
855
  exports.isItemExpr = require_di.isItemExpr;
946
856
  exports.isPortsEmission = require_runtime.isPortsEmission;
947
857
  exports.isUnbrandedPortsEmissionShape = require_runtime.isUnbrandedPortsEmissionShape;