@codemation/core 0.11.0 → 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.
- package/CHANGELOG.md +16 -0
- package/dist/CostCatalogContract-DD7fQ4FF.d.cts +19 -0
- package/dist/{EngineRuntimeRegistration.types-MPYWsEM0.d.cts → EngineRuntimeRegistration.types-DTV5_7Jw.d.cts} +3 -2
- package/dist/{EngineRuntimeRegistration.types-BZ_1XWAJ.d.ts → EngineRuntimeRegistration.types-Dl92Hdoi.d.ts} +2 -2
- package/dist/InMemoryRunDataFactory-qMiYjhCK.d.cts +202 -0
- package/dist/{InMemoryRunEventBusRegistry-sM4z4n_i.js → InMemoryRunEventBusRegistry-Bwunvt1T.js} +1 -1
- package/dist/{InMemoryRunEventBusRegistry-sM4z4n_i.js.map → InMemoryRunEventBusRegistry-Bwunvt1T.js.map} +1 -1
- package/dist/{InMemoryRunEventBusRegistry-VM3OWnHo.cjs → InMemoryRunEventBusRegistry-Sa86VxuV.cjs} +1 -1
- package/dist/{InMemoryRunEventBusRegistry-VM3OWnHo.cjs.map → InMemoryRunEventBusRegistry-Sa86VxuV.cjs.map} +1 -1
- package/dist/ItemsInputNormalizer-BhuxvZh5.js +36 -0
- package/dist/ItemsInputNormalizer-BhuxvZh5.js.map +1 -0
- package/dist/ItemsInputNormalizer-C09a7iFP.d.ts +321 -0
- package/dist/ItemsInputNormalizer-DLaD6rTl.d.cts +407 -0
- package/dist/ItemsInputNormalizer-Div-fb6a.cjs +43 -0
- package/dist/ItemsInputNormalizer-Div-fb6a.cjs.map +1 -0
- package/dist/RunIntentService-BOSGwmqn.d.ts +299 -0
- package/dist/RunIntentService-CWMMrAP4.d.cts +220 -0
- package/dist/{RunIntentService-MUHJ1bhO.d.cts → agentMcpTypes-DUmniLOY.d.cts} +183 -206
- package/dist/bootstrap/index.cjs +4 -2
- package/dist/bootstrap/index.d.cts +63 -5
- package/dist/bootstrap/index.d.ts +5 -4
- package/dist/bootstrap/index.js +4 -2
- package/dist/{bootstrap-Dgzsjoj7.js → bootstrap-CKTMMNmL.js} +174 -3
- package/dist/bootstrap-CKTMMNmL.js.map +1 -0
- package/dist/{bootstrap-dVmpU1ju.cjs → bootstrap-D460dCgS.cjs} +209 -36
- package/dist/bootstrap-D460dCgS.cjs.map +1 -0
- package/dist/browser.cjs +17 -0
- package/dist/browser.d.cts +4 -0
- package/dist/browser.d.ts +3 -0
- package/dist/browser.js +4 -0
- package/dist/contracts-CK0x6w_G.cjs +74 -0
- package/dist/contracts-CK0x6w_G.cjs.map +1 -0
- package/dist/contracts-DXdfTdpW.js +50 -0
- package/dist/contracts-DXdfTdpW.js.map +1 -0
- package/dist/contracts.cjs +6 -0
- package/dist/contracts.d.cts +5 -0
- package/dist/contracts.d.ts +2 -0
- package/dist/contracts.js +3 -0
- package/dist/di-DdsgWfVy.js +405 -0
- package/dist/di-DdsgWfVy.js.map +1 -0
- package/dist/di-tO6R7VJV.cjs +524 -0
- package/dist/di-tO6R7VJV.cjs.map +1 -0
- package/dist/executionPersistenceContracts-DenJJK2T.d.cts +275 -0
- package/dist/{index-Bes88mxT.d.ts → index-BZDhEQ6W.d.ts} +278 -415
- package/dist/{RunIntentService-BrEq6Jm6.d.ts → index-CSKKuK60.d.ts} +441 -286
- package/dist/index.cjs +97 -250
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +395 -803
- package/dist/index.d.ts +5 -3
- package/dist/index.js +58 -224
- package/dist/index.js.map +1 -1
- package/dist/params-DqRvku2h.d.cts +44 -0
- package/dist/{runtime-Duf3ClPw.js → runtime-BPZgnZ9G.js} +591 -382
- package/dist/runtime-BPZgnZ9G.js.map +1 -0
- package/dist/{runtime-vH0EeZzH.cjs → runtime-CyW9c9XM.cjs} +651 -500
- package/dist/runtime-CyW9c9XM.cjs.map +1 -0
- package/dist/testing.cjs +23 -21
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +3 -2
- package/dist/testing.d.ts +3 -2
- package/dist/testing.js +5 -3
- package/dist/testing.js.map +1 -1
- package/package.json +9 -5
- package/src/ai/AgentConnectionNodeCollector.ts +1 -1
- package/src/authoring/defineHumanApprovalNode.types.ts +379 -0
- package/src/authoring/index.ts +6 -0
- package/src/bootstrap/runtime/EngineRuntimeRegistrar.ts +29 -0
- package/src/contracts/CodemationTelemetryAttributeNames.ts +10 -0
- package/src/contracts/credentialTypes.ts +10 -0
- package/src/contracts/hitlSeamTypes.ts +34 -0
- package/src/contracts/humanTaskStoreTypes.ts +48 -0
- package/src/contracts/inboxChannelTypes.ts +58 -0
- package/src/contracts/index.ts +3 -0
- package/src/contracts/runTypes.ts +61 -3
- package/src/contracts/runtimeTypes.ts +112 -0
- package/src/credentials/CredentialMaterialProvider.types.ts +61 -0
- package/src/credentials/ManagedCredentialMaterialWriteError.ts +14 -0
- package/src/credentials/ManagedMaterialFetchError.ts +16 -0
- package/src/execution/ActivationEnqueueService.ts +16 -0
- package/src/execution/DefaultExecutionContextFactory.ts +11 -0
- package/src/execution/NodeExecutionSnapshotFactory.ts +7 -1
- package/src/execution/NodeExecutor.ts +60 -1
- package/src/execution/NodeExecutorFactory.ts +12 -2
- package/src/execution/NodeSuspensionHandler.ts +220 -0
- package/src/execution/PersistedRunStateTerminalBuilder.ts +5 -2
- package/src/execution/RunStateSemantics.ts +5 -0
- package/src/execution/RunSuspendedError.ts +21 -0
- package/src/index.ts +40 -0
- package/src/orchestration/Engine.ts +12 -2
- package/src/orchestration/EngineWaiters.ts +1 -1
- package/src/orchestration/NodeExecutionRequestHandlerService.ts +25 -2
- package/src/orchestration/RunContinuationService.ts +226 -2
- package/src/orchestration/TestSuiteOrchestrator.ts +5 -4
- package/src/runtime/RunIntentService.ts +3 -0
- package/src/workflow/dsl/ChainCursorResolver.ts +36 -0
- package/tsdown.config.ts +1 -1
- package/dist/InMemoryRunDataFactory-hmkh0lzR.d.cts +0 -138
- package/dist/bootstrap-Dgzsjoj7.js.map +0 -1
- package/dist/bootstrap-dVmpU1ju.cjs.map +0 -1
- package/dist/runtime-Duf3ClPw.js.map +0 -1
- package/dist/runtime-vH0EeZzH.cjs.map +0 -1
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
const
|
|
1
|
+
const require_di = require('./di-tO6R7VJV.cjs');
|
|
2
|
+
const require_contracts = require('./contracts-CK0x6w_G.cjs');
|
|
3
|
+
const require_runtime = require('./runtime-CyW9c9XM.cjs');
|
|
4
|
+
let zod = require("zod");
|
|
5
|
+
zod = require_di.__toESM(zod);
|
|
6
|
+
let node_crypto = require("node:crypto");
|
|
7
|
+
node_crypto = require_di.__toESM(node_crypto);
|
|
2
8
|
let tsyringe = require("tsyringe");
|
|
3
|
-
tsyringe =
|
|
9
|
+
tsyringe = require_di.__toESM(tsyringe);
|
|
4
10
|
|
|
5
11
|
//#region src/policies/executionLimits/EngineExecutionLimitsPolicyFactory.ts
|
|
6
12
|
/**
|
|
@@ -25,7 +31,7 @@ var RunSummaryMapper = class {
|
|
|
25
31
|
workflowId: state.workflowId,
|
|
26
32
|
startedAt: state.startedAt,
|
|
27
33
|
status: state.status,
|
|
28
|
-
finishedAt:
|
|
34
|
+
finishedAt: require_di.RunFinishedAtFactory.resolveIso(state),
|
|
29
35
|
parent: state.parent,
|
|
30
36
|
executionOptions: state.executionOptions
|
|
31
37
|
};
|
|
@@ -85,7 +91,7 @@ var InMemoryWorkflowExecutionRepository = class {
|
|
|
85
91
|
const out = [];
|
|
86
92
|
for (const s of this.runs.values()) {
|
|
87
93
|
if (s.status !== "completed" && s.status !== "failed") continue;
|
|
88
|
-
const finishedAt =
|
|
94
|
+
const finishedAt = require_di.RunFinishedAtFactory.resolveIso(s);
|
|
89
95
|
const retentionSeconds = s.policySnapshot?.retentionSeconds ?? args.defaultRetentionSeconds;
|
|
90
96
|
const cutoffIso = (/* @__PURE__ */ new Date(new Date(args.nowIso).getTime() - retentionSeconds * 1e3)).toISOString();
|
|
91
97
|
if (!finishedAt || finishedAt >= cutoffIso) continue;
|
|
@@ -331,6 +337,167 @@ var TestSuiteRunIdFactory = class {
|
|
|
331
337
|
}
|
|
332
338
|
};
|
|
333
339
|
|
|
340
|
+
//#endregion
|
|
341
|
+
//#region src/execution/NodeSuspensionHandler.ts
|
|
342
|
+
/**
|
|
343
|
+
* Handles per-item `SuspensionRequest` catches in the engine's item execution loop.
|
|
344
|
+
*
|
|
345
|
+
* Responsibilities:
|
|
346
|
+
* 1. Generate a `taskId` (UUID v4).
|
|
347
|
+
* 2. Persist a `HumanTask` row via `HumanTaskStore.create`.
|
|
348
|
+
* 3. Sign a resume URL via `HitlResumeTokenSigner.sign`.
|
|
349
|
+
* 4. Enqueue a delayed BullMQ timeout job via `HitlTimeoutJobScheduler.enqueue`.
|
|
350
|
+
* 5. Build a `HumanTaskHandle` and call `deliver`.
|
|
351
|
+
* 6. Append a `PersistedSuspensionEntry` to the run state and flip status to `"suspended"`.
|
|
352
|
+
* 7. Persist via `WorkflowExecutionRepository.save`.
|
|
353
|
+
* 8. Throw `RunSuspendedError` so the caller can exit cleanly.
|
|
354
|
+
*
|
|
355
|
+
* If `deliver` throws, the error propagates up to `NodeExecutionRequestHandlerService`
|
|
356
|
+
* which routes it through `resumeFromNodeError` → run status becomes `"failed"`.
|
|
357
|
+
*
|
|
358
|
+
* `humanTaskStore`, `tokenSigner`, and `timeoutScheduler` are optional —
|
|
359
|
+
* when not registered (e.g. in unit tests), the handler still suspends the run but
|
|
360
|
+
* skips persistence, token signing, and job scheduling.
|
|
361
|
+
*/
|
|
362
|
+
var NodeSuspensionHandler = class {
|
|
363
|
+
constructor(workflowExecutionRepository, humanTaskStore, tokenSigner, timeoutScheduler, workspaceId) {
|
|
364
|
+
this.workflowExecutionRepository = workflowExecutionRepository;
|
|
365
|
+
this.humanTaskStore = humanTaskStore;
|
|
366
|
+
this.tokenSigner = tokenSigner;
|
|
367
|
+
this.timeoutScheduler = timeoutScheduler;
|
|
368
|
+
this.workspaceId = workspaceId;
|
|
369
|
+
}
|
|
370
|
+
async handle(args) {
|
|
371
|
+
const taskId = `htask_${globalThis.crypto.randomUUID()}`;
|
|
372
|
+
const { timeout, onTimeout, deliver, decisionSchema, subject, metadata } = args.suspensionRequest.request;
|
|
373
|
+
const timeoutMs = this.parseDurationMs(timeout);
|
|
374
|
+
const expiresAt = new Date(Date.now() + timeoutMs);
|
|
375
|
+
const decisionSchemaHash = this.hashSchema(decisionSchema);
|
|
376
|
+
const decisionSchemaJson = this.schemaToJson(decisionSchema);
|
|
377
|
+
let resumeUrl = "";
|
|
378
|
+
let resumeTokenHash = "";
|
|
379
|
+
if (this.tokenSigner) {
|
|
380
|
+
const token = this.tokenSigner.sign({
|
|
381
|
+
taskId,
|
|
382
|
+
expiresAt,
|
|
383
|
+
schemaHash: decisionSchemaHash
|
|
384
|
+
});
|
|
385
|
+
resumeUrl = token;
|
|
386
|
+
resumeTokenHash = this.tokenSigner.hashToken(token);
|
|
387
|
+
}
|
|
388
|
+
const handle = {
|
|
389
|
+
taskId,
|
|
390
|
+
runId: args.runId,
|
|
391
|
+
nodeId: args.nodeId,
|
|
392
|
+
expiresAt,
|
|
393
|
+
resumeUrl,
|
|
394
|
+
...metadata !== void 0 ? { metadata } : {}
|
|
395
|
+
};
|
|
396
|
+
const channel = metadata?.["channel"];
|
|
397
|
+
await args.telemetry?.addSpanEvent?.({
|
|
398
|
+
name: "hitl.task.created",
|
|
399
|
+
attributes: {
|
|
400
|
+
[require_runtime.CodemationTelemetryAttributeNames.hitlTaskId]: taskId,
|
|
401
|
+
[require_runtime.CodemationTelemetryAttributeNames.hitlChannel]: typeof channel === "string" ? channel : "unknown",
|
|
402
|
+
[require_runtime.CodemationTelemetryAttributeNames.runId]: args.runId,
|
|
403
|
+
[require_runtime.CodemationTelemetryAttributeNames.nodeId]: args.nodeId,
|
|
404
|
+
expiresAt: expiresAt.toISOString()
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
let deliveryRef;
|
|
408
|
+
try {
|
|
409
|
+
deliveryRef = await deliver(handle);
|
|
410
|
+
} catch (deliverError) {
|
|
411
|
+
await args.telemetry?.addSpanEvent?.({
|
|
412
|
+
name: "hitl.task.delivery_failed",
|
|
413
|
+
attributes: {
|
|
414
|
+
[require_runtime.CodemationTelemetryAttributeNames.hitlTaskId]: taskId,
|
|
415
|
+
[require_runtime.CodemationTelemetryAttributeNames.hitlChannel]: typeof channel === "string" ? channel : "unknown",
|
|
416
|
+
error: deliverError instanceof Error ? deliverError.message : String(deliverError)
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
throw deliverError;
|
|
420
|
+
}
|
|
421
|
+
if (this.humanTaskStore) {
|
|
422
|
+
const record = {
|
|
423
|
+
id: taskId,
|
|
424
|
+
runId: args.runId,
|
|
425
|
+
workflowId: args.state.workflowId,
|
|
426
|
+
workspaceId: this.workspaceId ?? void 0,
|
|
427
|
+
nodeId: args.nodeId,
|
|
428
|
+
activationId: args.activationId,
|
|
429
|
+
itemIndex: args.itemIndex,
|
|
430
|
+
status: "pending",
|
|
431
|
+
channel: "local",
|
|
432
|
+
subject,
|
|
433
|
+
metadata: metadata ?? {},
|
|
434
|
+
decisionSchemaJson,
|
|
435
|
+
decisionSchemaHash,
|
|
436
|
+
onTimeout,
|
|
437
|
+
deliveryRef,
|
|
438
|
+
resumeTokenHash: resumeTokenHash || "no-token",
|
|
439
|
+
expiresAt,
|
|
440
|
+
createdAt: /* @__PURE__ */ new Date()
|
|
441
|
+
};
|
|
442
|
+
await this.humanTaskStore.create(record);
|
|
443
|
+
}
|
|
444
|
+
if (this.timeoutScheduler) await this.timeoutScheduler.enqueueTimeoutJob({
|
|
445
|
+
taskId,
|
|
446
|
+
expiresAt
|
|
447
|
+
});
|
|
448
|
+
const entry = {
|
|
449
|
+
taskId,
|
|
450
|
+
nodeId: args.nodeId,
|
|
451
|
+
activationId: args.activationId,
|
|
452
|
+
itemIndex: args.itemIndex,
|
|
453
|
+
decisionSchemaHash,
|
|
454
|
+
deliveryRef,
|
|
455
|
+
timeoutAt: expiresAt.toISOString(),
|
|
456
|
+
onTimeout
|
|
457
|
+
};
|
|
458
|
+
const existingSuspensions = args.state.suspension ?? [];
|
|
459
|
+
const updatedState = {
|
|
460
|
+
...args.state,
|
|
461
|
+
status: "suspended",
|
|
462
|
+
suspension: [...existingSuspensions, entry]
|
|
463
|
+
};
|
|
464
|
+
await this.workflowExecutionRepository.save(updatedState);
|
|
465
|
+
throw new require_runtime.RunSuspendedError(args.runId, taskId);
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Parse a duration string into milliseconds.
|
|
469
|
+
* Accepts ISO 8601 durations ("PT24H", "PT30M") and shorthand ("24h", "30m", "1d").
|
|
470
|
+
* Throws for unrecognised formats.
|
|
471
|
+
*/
|
|
472
|
+
parseDurationMs(duration) {
|
|
473
|
+
const shorthand = /^(\d+(?:\.\d+)?)(s|m|h|d)$/i.exec(duration);
|
|
474
|
+
if (shorthand) return parseFloat(shorthand[1]) * {
|
|
475
|
+
s: 1e3,
|
|
476
|
+
m: 6e4,
|
|
477
|
+
h: 36e5,
|
|
478
|
+
d: 864e5
|
|
479
|
+
}[shorthand[2].toLowerCase()];
|
|
480
|
+
const iso = /^P(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/.exec(duration);
|
|
481
|
+
if (iso) {
|
|
482
|
+
const days = parseFloat(iso[1] ?? "0");
|
|
483
|
+
const hours = parseFloat(iso[2] ?? "0");
|
|
484
|
+
const minutes = parseFloat(iso[3] ?? "0");
|
|
485
|
+
const seconds = parseFloat(iso[4] ?? "0");
|
|
486
|
+
return (days * 86400 + hours * 3600 + minutes * 60 + seconds) * 1e3;
|
|
487
|
+
}
|
|
488
|
+
throw new Error(`NodeSuspensionHandler: unrecognised duration format: "${duration}"`);
|
|
489
|
+
}
|
|
490
|
+
hashSchema(schema) {
|
|
491
|
+
const json = this.schemaToJson(schema);
|
|
492
|
+
return (0, node_crypto.createHash)("sha256").update(json).digest("hex");
|
|
493
|
+
}
|
|
494
|
+
schemaToJson(schema) {
|
|
495
|
+
if (schema instanceof zod.z.ZodType) return JSON.stringify(zod.z.toJSONSchema(schema));
|
|
496
|
+
if (typeof schema.toJSON === "function") return JSON.stringify(schema.toJSON());
|
|
497
|
+
return JSON.stringify(schema);
|
|
498
|
+
}
|
|
499
|
+
};
|
|
500
|
+
|
|
334
501
|
//#endregion
|
|
335
502
|
//#region src/scheduler/InlineDrivingSchedulerFactory.ts
|
|
336
503
|
var InlineDrivingSchedulerFactory = class {
|
|
@@ -358,15 +525,15 @@ var EngineRuntimeRegistrar = class {
|
|
|
358
525
|
this.registerAgentMcpIntegration(container);
|
|
359
526
|
}
|
|
360
527
|
registerAgentMcpIntegration(container) {
|
|
361
|
-
if (container.isRegistered(
|
|
362
|
-
container.registerInstance(
|
|
528
|
+
if (container.isRegistered(require_di.CoreTokens.AgentMcpIntegration, true)) return;
|
|
529
|
+
container.registerInstance(require_di.CoreTokens.AgentMcpIntegration, new require_contracts.NoOpAgentMcpIntegration());
|
|
363
530
|
}
|
|
364
531
|
registerSupportFactories(container) {
|
|
365
532
|
if (!container.isRegistered(require_runtime.ItemExprResolver, true)) container.registerSingleton(require_runtime.ItemExprResolver, require_runtime.ItemExprResolver);
|
|
366
533
|
if (!container.isRegistered(require_runtime.NodeOutputNormalizer, true)) container.registerSingleton(require_runtime.NodeOutputNormalizer, require_runtime.NodeOutputNormalizer);
|
|
367
534
|
if (!container.isRegistered(require_runtime.RunnableOutputBehaviorResolver, true)) container.registerSingleton(require_runtime.RunnableOutputBehaviorResolver, require_runtime.RunnableOutputBehaviorResolver);
|
|
368
535
|
if (!container.isRegistered(require_runtime.ChildExecutionScopeFactory, true)) container.register(require_runtime.ChildExecutionScopeFactory, { useFactory: (0, tsyringe.instanceCachingFactory)((dependencyContainer) => {
|
|
369
|
-
return new require_runtime.ChildExecutionScopeFactory(dependencyContainer.resolve(
|
|
536
|
+
return new require_runtime.ChildExecutionScopeFactory(dependencyContainer.resolve(require_di.CoreTokens.ActivationIdFactory));
|
|
370
537
|
}) });
|
|
371
538
|
container.registerSingleton(EngineExecutionLimitsPolicyFactory, EngineExecutionLimitsPolicyFactory);
|
|
372
539
|
container.registerSingleton(require_runtime.NodeInstanceFactoryFactory, require_runtime.NodeInstanceFactoryFactory);
|
|
@@ -379,31 +546,37 @@ var EngineRuntimeRegistrar = class {
|
|
|
379
546
|
container.registerSingleton(require_runtime.WorkflowRepositoryWebhookTriggerMatcherFactory, require_runtime.WorkflowRepositoryWebhookTriggerMatcherFactory);
|
|
380
547
|
}
|
|
381
548
|
registerExecutionLimitsPolicy(container, options) {
|
|
382
|
-
if (container.isRegistered(
|
|
383
|
-
container.register(
|
|
549
|
+
if (container.isRegistered(require_di.CoreTokens.EngineExecutionLimitsPolicy, true)) return;
|
|
550
|
+
container.register(require_di.CoreTokens.EngineExecutionLimitsPolicy, { useFactory: (0, tsyringe.instanceCachingFactory)((dependencyContainer) => {
|
|
384
551
|
const merged = options?.resolveEngineExecutionLimits?.() ?? options?.engineExecutionLimits;
|
|
385
552
|
return dependencyContainer.resolve(EngineExecutionLimitsPolicyFactory).create(merged);
|
|
386
553
|
}) });
|
|
387
554
|
}
|
|
388
555
|
ensureWorkflowNodeInstanceFactory(container) {
|
|
389
|
-
if (container.isRegistered(
|
|
390
|
-
container.register(
|
|
391
|
-
return dependencyContainer.resolve(require_runtime.NodeInstanceFactoryFactory).create(dependencyContainer.resolve(
|
|
556
|
+
if (container.isRegistered(require_di.CoreTokens.WorkflowNodeInstanceFactory, true)) return;
|
|
557
|
+
container.register(require_di.CoreTokens.WorkflowNodeInstanceFactory, { useFactory: (0, tsyringe.instanceCachingFactory)((dependencyContainer) => {
|
|
558
|
+
return dependencyContainer.resolve(require_runtime.NodeInstanceFactoryFactory).create(dependencyContainer.resolve(require_di.CoreTokens.NodeResolver));
|
|
392
559
|
}) });
|
|
393
560
|
}
|
|
394
561
|
ensureNodeExecutor(container) {
|
|
395
562
|
if (container.isRegistered(require_runtime.NodeExecutor, true)) return;
|
|
396
563
|
container.register(require_runtime.NodeExecutor, { useFactory: (0, tsyringe.instanceCachingFactory)((dependencyContainer) => {
|
|
397
564
|
const retryRunner = dependencyContainer.resolve(require_runtime.InProcessRetryRunnerFactory).create(dependencyContainer.resolve(require_runtime.DefaultAsyncSleeper));
|
|
398
|
-
|
|
565
|
+
const workflowExecutionRepository = dependencyContainer.resolve(require_di.CoreTokens.WorkflowExecutionRepository);
|
|
566
|
+
const humanTaskStore = dependencyContainer.isRegistered(require_runtime.HumanTaskStoreToken, true) ? dependencyContainer.resolve(require_runtime.HumanTaskStoreToken) : void 0;
|
|
567
|
+
const tokenSigner = dependencyContainer.isRegistered(require_runtime.HitlResumeTokenSignerToken, true) ? dependencyContainer.resolve(require_runtime.HitlResumeTokenSignerToken) : void 0;
|
|
568
|
+
const timeoutScheduler = dependencyContainer.isRegistered(require_runtime.HitlTimeoutJobSchedulerToken, true) ? dependencyContainer.resolve(require_runtime.HitlTimeoutJobSchedulerToken) : void 0;
|
|
569
|
+
const workspaceId = dependencyContainer.isRegistered(require_runtime.HitlWorkspaceIdToken, true) ? dependencyContainer.resolve(require_runtime.HitlWorkspaceIdToken) : void 0;
|
|
570
|
+
const suspensionHandler = new NodeSuspensionHandler(workflowExecutionRepository, humanTaskStore ?? void 0, tokenSigner ?? void 0, timeoutScheduler ?? void 0, workspaceId ?? void 0);
|
|
571
|
+
return dependencyContainer.resolve(require_runtime.NodeExecutorFactory).create(dependencyContainer.resolve(require_di.CoreTokens.WorkflowNodeInstanceFactory), retryRunner, dependencyContainer.resolve(require_runtime.RunnableOutputBehaviorResolver), suspensionHandler, (runId) => workflowExecutionRepository.load(runId));
|
|
399
572
|
}) });
|
|
400
573
|
}
|
|
401
574
|
registerDefaultActivationScheduler(container) {
|
|
402
|
-
if (container.isRegistered(
|
|
575
|
+
if (container.isRegistered(require_di.CoreTokens.NodeActivationScheduler, true)) return;
|
|
403
576
|
container.register(require_runtime.InlineDrivingScheduler, { useFactory: (0, tsyringe.instanceCachingFactory)((dependencyContainer) => {
|
|
404
577
|
return dependencyContainer.resolve(InlineDrivingSchedulerFactory).create(dependencyContainer.resolve(require_runtime.NodeExecutor));
|
|
405
578
|
}) });
|
|
406
|
-
container.register(
|
|
579
|
+
container.register(require_di.CoreTokens.NodeActivationScheduler, { useFactory: (0, tsyringe.instanceCachingFactory)((dependencyContainer) => {
|
|
407
580
|
return dependencyContainer.resolve(require_runtime.InlineDrivingScheduler);
|
|
408
581
|
}) });
|
|
409
582
|
}
|
|
@@ -411,32 +584,32 @@ var EngineRuntimeRegistrar = class {
|
|
|
411
584
|
container.registerSingleton(require_runtime.EngineFactory, require_runtime.EngineFactory);
|
|
412
585
|
const matcherProvider = this.resolveMatcherProvider(options);
|
|
413
586
|
container.register(require_runtime.Engine, { useFactory: (0, tsyringe.instanceCachingFactory)((dependencyContainer) => {
|
|
414
|
-
const liveWorkflowRepository = dependencyContainer.resolve(
|
|
415
|
-
const nodeResolver = dependencyContainer.resolve(
|
|
416
|
-
const tokenRegistryLike = dependencyContainer.resolve(
|
|
417
|
-
const workflowActivationPolicy = dependencyContainer.resolve(
|
|
587
|
+
const liveWorkflowRepository = dependencyContainer.resolve(require_di.CoreTokens.LiveWorkflowRepository);
|
|
588
|
+
const nodeResolver = dependencyContainer.resolve(require_di.CoreTokens.NodeResolver);
|
|
589
|
+
const tokenRegistryLike = dependencyContainer.resolve(require_di.CoreTokens.PersistedWorkflowTokenRegistry);
|
|
590
|
+
const workflowActivationPolicy = dependencyContainer.resolve(require_di.CoreTokens.WorkflowActivationPolicy);
|
|
418
591
|
const webhookTriggerMatcher = matcherProvider.createMatcher(dependencyContainer);
|
|
419
|
-
const workflowNodeInstanceFactory = dependencyContainer.resolve(
|
|
592
|
+
const workflowNodeInstanceFactory = dependencyContainer.resolve(require_di.CoreTokens.WorkflowNodeInstanceFactory);
|
|
420
593
|
const triggerRuntimeDiagnostics = options?.triggerRuntimeDiagnosticsProvider?.create(dependencyContainer);
|
|
421
594
|
return dependencyContainer.resolve(require_runtime.EngineFactory).create({
|
|
422
|
-
credentialSessions: dependencyContainer.resolve(
|
|
595
|
+
credentialSessions: dependencyContainer.resolve(require_di.CoreTokens.CredentialSessionService),
|
|
423
596
|
liveWorkflowRepository,
|
|
424
|
-
workflowRepository: dependencyContainer.resolve(
|
|
597
|
+
workflowRepository: dependencyContainer.resolve(require_di.CoreTokens.WorkflowRepository),
|
|
425
598
|
workflowActivationPolicy,
|
|
426
599
|
nodeResolver,
|
|
427
|
-
triggerSetupStateRepository: dependencyContainer.resolve(
|
|
600
|
+
triggerSetupStateRepository: dependencyContainer.resolve(require_di.CoreTokens.TriggerSetupStateRepository),
|
|
428
601
|
webhookTriggerMatcher,
|
|
429
|
-
runIdFactory: dependencyContainer.resolve(
|
|
430
|
-
activationIdFactory: dependencyContainer.resolve(
|
|
431
|
-
workflowExecutionRepository: dependencyContainer.resolve(
|
|
432
|
-
activationScheduler: dependencyContainer.resolve(
|
|
433
|
-
runDataFactory: dependencyContainer.resolve(
|
|
434
|
-
executionContextFactory: dependencyContainer.resolve(
|
|
602
|
+
runIdFactory: dependencyContainer.resolve(require_di.CoreTokens.RunIdFactory),
|
|
603
|
+
activationIdFactory: dependencyContainer.resolve(require_di.CoreTokens.ActivationIdFactory),
|
|
604
|
+
workflowExecutionRepository: dependencyContainer.resolve(require_di.CoreTokens.WorkflowExecutionRepository),
|
|
605
|
+
activationScheduler: dependencyContainer.resolve(require_di.CoreTokens.NodeActivationScheduler),
|
|
606
|
+
runDataFactory: dependencyContainer.resolve(require_di.CoreTokens.RunDataFactory),
|
|
607
|
+
executionContextFactory: dependencyContainer.resolve(require_di.CoreTokens.ExecutionContextFactory),
|
|
435
608
|
nodeExecutor: dependencyContainer.resolve(require_runtime.NodeExecutor),
|
|
436
|
-
eventBus: dependencyContainer.resolve(
|
|
609
|
+
eventBus: dependencyContainer.resolve(require_di.CoreTokens.RunEventBus),
|
|
437
610
|
tokenRegistry: tokenRegistryLike,
|
|
438
611
|
workflowNodeInstanceFactory,
|
|
439
|
-
executionLimitsPolicy: dependencyContainer.resolve(
|
|
612
|
+
executionLimitsPolicy: dependencyContainer.resolve(require_di.CoreTokens.EngineExecutionLimitsPolicy),
|
|
440
613
|
workflowPolicyRuntimeDefaults: options?.workflowPolicyRuntimeDefaults,
|
|
441
614
|
triggerRuntimeDiagnostics
|
|
442
615
|
});
|
|
@@ -444,15 +617,15 @@ var EngineRuntimeRegistrar = class {
|
|
|
444
617
|
}
|
|
445
618
|
registerIntentServices(container) {
|
|
446
619
|
container.register(require_runtime.RunIntentService, { useFactory: (0, tsyringe.instanceCachingFactory)((dependencyContainer) => {
|
|
447
|
-
return dependencyContainer.resolve(require_runtime.RunIntentServiceFactory).create(dependencyContainer.resolve(require_runtime.Engine), dependencyContainer.resolve(
|
|
620
|
+
return dependencyContainer.resolve(require_runtime.RunIntentServiceFactory).create(dependencyContainer.resolve(require_runtime.Engine), dependencyContainer.resolve(require_di.CoreTokens.WorkflowRepository));
|
|
448
621
|
}) });
|
|
449
|
-
container.register(
|
|
450
|
-
return dependencyContainer.resolve(require_runtime.EngineWorkflowRunnerServiceFactory).create(dependencyContainer.resolve(require_runtime.Engine), dependencyContainer.resolve(
|
|
622
|
+
container.register(require_di.CoreTokens.WorkflowRunnerService, { useFactory: (0, tsyringe.instanceCachingFactory)((dependencyContainer) => {
|
|
623
|
+
return dependencyContainer.resolve(require_runtime.EngineWorkflowRunnerServiceFactory).create(dependencyContainer.resolve(require_runtime.Engine), dependencyContainer.resolve(require_di.CoreTokens.WorkflowRepository));
|
|
451
624
|
}) });
|
|
452
625
|
}
|
|
453
626
|
resolveMatcherProvider(options) {
|
|
454
627
|
if (options?.webhookTriggerMatcherProvider) return options.webhookTriggerMatcherProvider;
|
|
455
|
-
return { createMatcher: (container) => container.resolve(require_runtime.WorkflowRepositoryWebhookTriggerMatcherFactory).create(container.resolve(
|
|
628
|
+
return { createMatcher: (container) => container.resolve(require_runtime.WorkflowRepositoryWebhookTriggerMatcherFactory).create(container.resolve(require_di.CoreTokens.WorkflowRepository), container.resolve(require_di.CoreTokens.WorkflowActivationPolicy), options?.webhookTriggerRoutingDiagnostics) };
|
|
456
629
|
}
|
|
457
630
|
};
|
|
458
631
|
|
|
@@ -499,4 +672,4 @@ Object.defineProperty(exports, 'TestSuiteRunIdFactory', {
|
|
|
499
672
|
return TestSuiteRunIdFactory;
|
|
500
673
|
}
|
|
501
674
|
});
|
|
502
|
-
//# sourceMappingURL=bootstrap-
|
|
675
|
+
//# sourceMappingURL=bootstrap-D460dCgS.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap-D460dCgS.cjs","names":["EngineExecutionLimitsPolicy","ENGINE_EXECUTION_LIMITS_DEFAULTS","RunFinishedAtFactory","out: RunPruneCandidate[]","RunFinishedAtFactory","engine: TestSuiteOrchestratorEngine","testSuiteRunIdFactory: TestSuiteRunIdFactory","credentialResolverFactory: CredentialResolverFactory","abortControllerFactory: AbortControllerFactory","eventBus: RunEventBus | undefined","currentDate: () => Date","setupContext: TestTriggerSetupContext","cases: TestSuiteCaseOutcome[]","waitForSlot: Promise<void> | undefined","releaseSlot: (() => void) | undefined","queue: Array<Promise<void>>","generationError: Error | undefined","status: TestSuiteRunStatus","executionOptions: RunExecutionOptions","terminal: Extract<RunResult, { status: \"completed\" | \"failed\" | \"halted\" }>","status: TestCaseRunStatus","workflowExecutionRepository: WorkflowExecutionRepository","humanTaskStore?: HumanTaskStore","tokenSigner?: HitlResumeTokenSignerSeam","timeoutScheduler?: HitlTimeoutJobSchedulerSeam","workspaceId?: string","handle: HumanTaskHandle","CodemationTelemetryAttributeNames","deliveryRef: Awaited<ReturnType<typeof deliver>>","record: HumanTaskRecord","entry: PersistedSuspensionEntry","updatedState: PersistedRunState","RunSuspendedError","z","InlineDrivingScheduler","CoreTokens","NoOpAgentMcpIntegration","ItemExprResolver","NodeOutputNormalizer","RunnableOutputBehaviorResolver","ChildExecutionScopeFactory","NodeInstanceFactoryFactory","DefaultAsyncSleeper","InProcessRetryRunnerFactory","NodeExecutorFactory","RunIntentServiceFactory","EngineWorkflowRunnerServiceFactory","WorkflowRepositoryWebhookTriggerMatcherFactory","NodeExecutor","HumanTaskStoreToken","HitlResumeTokenSignerToken","HitlTimeoutJobSchedulerToken","HitlWorkspaceIdToken","InlineDrivingScheduler","EngineFactory","Engine","RunIntentService"],"sources":["../src/policies/executionLimits/EngineExecutionLimitsPolicyFactory.ts","../src/runStorage/RunSummaryMapper.ts","../src/runStorage/InMemoryWorkflowExecutionRepository.ts","../src/orchestration/AbortControllerFactory.ts","../src/orchestration/TestSuiteOrchestrator.ts","../src/orchestration/TestSuiteRunIdFactory.ts","../src/execution/NodeSuspensionHandler.ts","../src/scheduler/InlineDrivingSchedulerFactory.ts","../src/bootstrap/runtime/EngineRuntimeRegistrar.ts"],"sourcesContent":["import {\n EngineExecutionLimitsPolicy,\n ENGINE_EXECUTION_LIMITS_DEFAULTS,\n type EngineExecutionLimitsPolicyConfig,\n} from \"./EngineExecutionLimitsPolicy\";\n\n/**\n * Builds {@link EngineExecutionLimitsPolicy} by merging {@link ENGINE_EXECUTION_LIMITS_DEFAULTS} with optional `overrides` (e.g. host `runtime.engineExecutionLimits`).\n */\nexport class EngineExecutionLimitsPolicyFactory {\n create(overrides?: Partial<EngineExecutionLimitsPolicyConfig>): EngineExecutionLimitsPolicy {\n return new EngineExecutionLimitsPolicy({ ...ENGINE_EXECUTION_LIMITS_DEFAULTS, ...overrides });\n }\n}\n","import { RunFinishedAtFactory } from \"../contracts/runFinishedAtFactory\";\nimport type { PersistedRunState, RunSummary } from \"../types\";\n\n/** Maps persisted run state to API run summaries for listings. */\nexport class RunSummaryMapper {\n static fromPersistedState(state: PersistedRunState): RunSummary {\n return {\n runId: state.runId,\n workflowId: state.workflowId,\n startedAt: state.startedAt,\n status: state.status,\n finishedAt: RunFinishedAtFactory.resolveIso(state),\n parent: state.parent,\n executionOptions: state.executionOptions,\n };\n }\n}\n","import type {\n EngineRunCounters,\n NodeId,\n NodeOutputs,\n ParentExecutionRef,\n PersistedRunSchedulingState,\n PersistedRunState,\n RunId,\n RunSummary,\n WorkflowExecutionListingRepository,\n WorkflowExecutionPruneRepository,\n WorkflowExecutionRepository,\n RunPruneCandidate,\n WorkflowId,\n} from \"../types\";\nimport { RunFinishedAtFactory } from \"../contracts/runFinishedAtFactory\";\nimport { RunSummaryMapper } from \"./RunSummaryMapper\";\n\nexport class InMemoryWorkflowExecutionRepository\n implements WorkflowExecutionRepository, WorkflowExecutionListingRepository, WorkflowExecutionPruneRepository\n{\n private readonly runs = new Map<RunId, PersistedRunState>();\n\n async createRun(args: {\n runId: RunId;\n workflowId: WorkflowId;\n startedAt: string;\n parent?: ParentExecutionRef;\n executionOptions?: PersistedRunState[\"executionOptions\"];\n control?: PersistedRunState[\"control\"];\n workflowSnapshot?: PersistedRunState[\"workflowSnapshot\"];\n mutableState?: PersistedRunState[\"mutableState\"];\n policySnapshot?: PersistedRunState[\"policySnapshot\"];\n engineCounters?: EngineRunCounters;\n }): Promise<void> {\n this.runs.set(args.runId, {\n runId: args.runId,\n workflowId: args.workflowId,\n startedAt: args.startedAt,\n revision: 0,\n parent: args.parent,\n executionOptions: args.executionOptions,\n control: args.control,\n workflowSnapshot: args.workflowSnapshot,\n mutableState: args.mutableState,\n policySnapshot: args.policySnapshot,\n engineCounters: args.engineCounters,\n status: \"running\",\n queue: [],\n outputsByNode: {} as Record<NodeId, NodeOutputs>,\n nodeSnapshotsByNodeId: {},\n connectionInvocations: [],\n });\n }\n\n async load(runId: RunId): Promise<PersistedRunState | undefined> {\n return this.runs.get(runId);\n }\n\n async loadSchedulingState(runId: RunId): Promise<PersistedRunSchedulingState | undefined> {\n const state = this.runs.get(runId);\n if (!state) {\n return undefined;\n }\n return {\n pending: state.pending ? { ...state.pending } : undefined,\n queue: state.queue.map((entry) => ({ ...entry })),\n };\n }\n\n async save(state: PersistedRunState): Promise<void> {\n this.runs.set(state.runId, { ...state, revision: (state.revision ?? 0) + 1 });\n }\n\n async deleteRun(runId: RunId): Promise<void> {\n this.runs.delete(runId);\n }\n\n async listRuns(args?: Readonly<{ workflowId?: WorkflowId; limit?: number }>): Promise<ReadonlyArray<RunSummary>> {\n const limit = args?.limit ?? 50;\n const summaries = [...this.runs.values()]\n .filter((s) => (args?.workflowId ? s.workflowId === args.workflowId : true))\n .sort((a, b) => b.startedAt.localeCompare(a.startedAt))\n .slice(0, limit)\n .map((s) => RunSummaryMapper.fromPersistedState(s));\n return summaries;\n }\n\n async listRunsOlderThan(\n args: Readonly<{ nowIso: string; defaultRetentionSeconds: number; limit?: number }>,\n ): Promise<ReadonlyArray<RunPruneCandidate>> {\n const limit = args.limit ?? 100;\n const out: RunPruneCandidate[] = [];\n for (const s of this.runs.values()) {\n if (s.status !== \"completed\" && s.status !== \"failed\") continue;\n const finishedAt = RunFinishedAtFactory.resolveIso(s);\n const retentionSeconds = s.policySnapshot?.retentionSeconds ?? args.defaultRetentionSeconds;\n const cutoffIso = new Date(new Date(args.nowIso).getTime() - retentionSeconds * 1000).toISOString();\n if (!finishedAt || finishedAt >= cutoffIso) continue;\n out.push({\n runId: s.runId,\n workflowId: s.workflowId,\n startedAt: s.startedAt,\n finishedAt,\n });\n }\n out.sort((a, b) => a.finishedAt.localeCompare(b.finishedAt));\n return out.slice(0, limit);\n }\n}\n","/**\n * Mints fresh {@link AbortController}s. Injected (rather than direct `new`) to honor the\n * codebase's no-direct-construction rule and to give tests a seam for substituting a fake.\n */\nexport class AbortControllerFactory {\n create(): AbortController {\n return new AbortController();\n }\n}\n","import type { CredentialResolverFactory } from \"../execution/CredentialResolverFactory\";\nimport type { RunEventBus, TestCaseRunStatus, TestSuiteRunStatus } from \"../events/runEvents\";\nimport type {\n Item,\n Items,\n NodeId,\n ParentExecutionRef,\n RunExecutionOptions,\n RunId,\n RunResult,\n TestSuiteRunId,\n TestTriggerNodeConfig,\n TestTriggerSetupContext,\n TriggerNodeConfig,\n WorkflowDefinition,\n WorkflowId,\n} from \"../types\";\n\nimport type { AbortControllerFactory } from \"./AbortControllerFactory\";\nimport { TestSuiteRunIdFactory } from \"./TestSuiteRunIdFactory\";\n\nconst DEFAULT_CONCURRENCY = 4;\n\n/**\n * Engine-facade subset the orchestrator needs. Kept narrow on purpose so unit tests can\n * substitute a fake without depending on the full Engine wiring.\n */\nexport interface TestSuiteOrchestratorEngine {\n runWorkflow(\n wf: WorkflowDefinition,\n startAt: NodeId,\n items: Items,\n parent?: ParentExecutionRef,\n executionOptions?: RunExecutionOptions,\n ): Promise<RunResult>;\n waitForCompletion(runId: RunId): Promise<Extract<RunResult, { status: \"completed\" | \"failed\" | \"halted\" }>>;\n}\n\nexport interface TestSuiteCaseOutcome {\n readonly testCaseIndex: number;\n readonly runId: RunId;\n readonly status: TestCaseRunStatus;\n}\n\nexport interface TestSuiteRunResult {\n readonly testSuiteRunId: TestSuiteRunId;\n readonly workflowId: WorkflowId;\n readonly triggerNodeId: NodeId;\n readonly status: TestSuiteRunStatus;\n readonly totalCases: number;\n readonly passedCases: number;\n readonly failedCases: number;\n readonly cases: ReadonlyArray<TestSuiteCaseOutcome>;\n}\n\nexport interface RunTestSuiteArgs {\n readonly workflow: WorkflowDefinition;\n readonly triggerNodeId: NodeId;\n readonly testSuiteRunId?: TestSuiteRunId;\n readonly concurrency?: number;\n readonly signal?: AbortSignal;\n}\n\n/**\n * Drives a {@link TestTriggerNodeConfig.generateItems} iterable into one workflow run per item,\n * with bounded concurrency. Pure engine logic — no persistence, no HTTP, no UI. Hosts adapt by\n * subscribing to {@link RunEventBus} and writing rows on `testSuite*` / `testCase*` / `nodeCompleted`.\n *\n * Cancellation: the supplied `AbortSignal` aborts the source iterable (so credentialed pulls bail)\n * and stops scheduling further cases. In-flight cases are awaited; engine-level cancellation of\n * an already-dispatched run is not yet wired (Phase 2).\n */\nexport class TestSuiteOrchestrator {\n constructor(\n private readonly engine: TestSuiteOrchestratorEngine,\n private readonly testSuiteRunIdFactory: TestSuiteRunIdFactory,\n private readonly credentialResolverFactory: CredentialResolverFactory,\n private readonly abortControllerFactory: AbortControllerFactory,\n private readonly eventBus: RunEventBus | undefined,\n private readonly currentDate: () => Date = () => new Date(),\n ) {}\n\n async runSuite(args: RunTestSuiteArgs): Promise<TestSuiteRunResult> {\n const triggerNodeId = args.triggerNodeId;\n const definition = args.workflow.nodes.find((n) => n.id === triggerNodeId);\n if (!definition) {\n throw new Error(`Unknown trigger nodeId: ${triggerNodeId}`);\n }\n if (definition.kind !== \"trigger\") {\n throw new Error(`Node ${triggerNodeId} is not a trigger`);\n }\n const triggerConfig = definition.config as TriggerNodeConfig;\n if (triggerConfig.triggerKind !== \"test\") {\n throw new Error(\n `Node ${triggerNodeId} is not a test trigger (triggerKind=\"${triggerConfig.triggerKind ?? \"live\"}\")`,\n );\n }\n const testTriggerConfig = triggerConfig as TestTriggerNodeConfig<unknown>;\n if (typeof testTriggerConfig.generateItems !== \"function\") {\n throw new Error(`Test trigger ${triggerNodeId} is missing a generateItems implementation`);\n }\n\n const testSuiteRunId = args.testSuiteRunId ?? this.testSuiteRunIdFactory.makeTestSuiteRunId();\n const concurrency = Math.max(1, args.concurrency ?? testTriggerConfig.concurrency ?? DEFAULT_CONCURRENCY);\n const externalSignal = args.signal;\n const internalAbort = this.abortControllerFactory.create();\n const onExternalAbort = () => internalAbort.abort(externalSignal?.reason);\n if (externalSignal) {\n if (externalSignal.aborted) {\n internalAbort.abort(externalSignal.reason);\n } else {\n externalSignal.addEventListener(\"abort\", onExternalAbort, { once: true });\n }\n }\n\n const triggerNodeName = definition.name ?? testTriggerConfig.name;\n\n await this.publish({\n kind: \"testSuiteStarted\",\n testSuiteRunId,\n workflowId: args.workflow.id,\n triggerNodeId,\n ...(triggerNodeName ? { triggerNodeName } : {}),\n concurrency,\n at: this.now(),\n });\n\n const setupContext: TestTriggerSetupContext = {\n workflowId: args.workflow.id,\n nodeId: triggerNodeId,\n config: testTriggerConfig,\n testSuiteRunId,\n getCredential: this.credentialResolverFactory.create(args.workflow.id, triggerNodeId, testTriggerConfig),\n signal: internalAbort.signal,\n };\n\n const cases: TestSuiteCaseOutcome[] = [];\n let nextIndex = 0;\n let inFlight = 0;\n let waitForSlot: Promise<void> | undefined;\n let releaseSlot: (() => void) | undefined;\n const queue: Array<Promise<void>> = [];\n let generationError: Error | undefined;\n\n const acquireSlot = async (): Promise<void> => {\n while (inFlight >= concurrency) {\n if (!waitForSlot) {\n waitForSlot = new Promise<void>((resolve) => {\n releaseSlot = resolve;\n });\n }\n await waitForSlot;\n }\n inFlight += 1;\n };\n\n const release = (): void => {\n inFlight -= 1;\n if (releaseSlot) {\n const fn = releaseSlot;\n releaseSlot = undefined;\n waitForSlot = undefined;\n fn();\n }\n };\n\n try {\n for await (const item of testTriggerConfig.generateItems(setupContext) as AsyncIterable<Item<unknown>>) {\n if (internalAbort.signal.aborted) {\n break;\n }\n await acquireSlot();\n if (internalAbort.signal.aborted) {\n release();\n break;\n }\n const testCaseIndex = nextIndex++;\n const testCaseLabel = this.resolveCaseLabel(testTriggerConfig, item);\n queue.push(\n this.runOneCase({\n workflow: args.workflow,\n triggerNodeId,\n testSuiteRunId,\n testCaseIndex,\n testCaseLabel,\n item,\n })\n .then((outcome) => {\n cases.push(outcome);\n })\n .finally(release),\n );\n }\n } catch (err) {\n generationError = err instanceof Error ? err : new Error(String(err));\n } finally {\n if (externalSignal) {\n externalSignal.removeEventListener(\"abort\", onExternalAbort);\n }\n }\n\n await Promise.all(queue);\n\n cases.sort((a, b) => a.testCaseIndex - b.testCaseIndex);\n const totalCases = cases.length;\n const passedCases = cases.filter((c) => c.status === \"succeeded\").length;\n const failedCases = cases.filter((c) => c.status === \"failed\").length;\n const status: TestSuiteRunStatus = this.deriveSuiteStatus({\n generationError,\n cancelled: internalAbort.signal.aborted,\n totalCases,\n passedCases,\n failedCases,\n });\n\n await this.publish({\n kind: \"testSuiteFinished\",\n testSuiteRunId,\n workflowId: args.workflow.id,\n status,\n totalCases,\n passedCases,\n failedCases,\n at: this.now(),\n });\n\n if (generationError && status === \"errored\") {\n throw generationError;\n }\n\n return {\n testSuiteRunId,\n workflowId: args.workflow.id,\n triggerNodeId,\n status,\n totalCases,\n passedCases,\n failedCases,\n cases,\n };\n }\n\n private async runOneCase(args: {\n workflow: WorkflowDefinition;\n triggerNodeId: NodeId;\n testSuiteRunId: TestSuiteRunId;\n testCaseIndex: number;\n testCaseLabel: string | undefined;\n item: Item<unknown>;\n }): Promise<TestSuiteCaseOutcome> {\n const executionOptions: RunExecutionOptions = {\n testContext: {\n testSuiteRunId: args.testSuiteRunId,\n testCaseIndex: args.testCaseIndex,\n ...(args.testCaseLabel !== undefined ? { testCaseLabel: args.testCaseLabel } : {}),\n },\n };\n\n const initial = await this.engine.runWorkflow(\n args.workflow,\n args.triggerNodeId,\n [args.item],\n undefined,\n executionOptions,\n );\n\n const runId = initial.runId;\n await this.publish({\n kind: \"testCaseStarted\",\n testSuiteRunId: args.testSuiteRunId,\n testCaseIndex: args.testCaseIndex,\n runId,\n workflowId: args.workflow.id,\n at: this.now(),\n ...(args.testCaseLabel !== undefined ? { testCaseLabel: args.testCaseLabel } : {}),\n });\n\n let terminal: Extract<RunResult, { status: \"completed\" | \"failed\" | \"halted\" }>;\n if (initial.status === \"completed\" || initial.status === \"failed\") {\n terminal = initial;\n } else {\n terminal = await this.engine.waitForCompletion(runId);\n }\n\n // RunResult.status from the engine narrows to \"completed\" | \"failed\" | \"halted\" here; widening to\n // \"errored\" / \"cancelled\" happens outside this code path (tracker downgrade for assertion\n // failures; outer abort handling for cancelled). Halted runs are treated as \"failed\" for\n // test case status purposes.\n const status: TestCaseRunStatus = terminal.status === \"completed\" ? \"succeeded\" : \"failed\";\n await this.publish({\n kind: \"testCaseCompleted\",\n testSuiteRunId: args.testSuiteRunId,\n testCaseIndex: args.testCaseIndex,\n runId,\n workflowId: args.workflow.id,\n status,\n at: this.now(),\n });\n return { testCaseIndex: args.testCaseIndex, runId, status };\n }\n\n private deriveSuiteStatus(args: {\n generationError: Error | undefined;\n cancelled: boolean;\n totalCases: number;\n passedCases: number;\n failedCases: number;\n }): TestSuiteRunStatus {\n if (args.generationError && args.totalCases === 0) {\n return \"errored\";\n }\n if (args.cancelled) {\n return \"cancelled\";\n }\n if (args.generationError) {\n return \"errored\";\n }\n if (args.totalCases === 0) {\n return \"succeeded\";\n }\n if (args.failedCases === 0) {\n return \"succeeded\";\n }\n if (args.passedCases === 0) {\n return \"failed\";\n }\n return \"partial\";\n }\n\n private now(): string {\n return this.currentDate().toISOString();\n }\n\n /** Defensive label resolver — author-supplied callbacks throw / return non-strings; we tolerate both. */\n private resolveCaseLabel(config: TestTriggerNodeConfig<unknown>, item: Item<unknown>): string | undefined {\n if (typeof config.caseLabel !== \"function\") return undefined;\n try {\n const result = config.caseLabel(item);\n if (typeof result !== \"string\") return undefined;\n const trimmed = result.trim();\n return trimmed.length === 0 ? undefined : trimmed;\n } catch {\n return undefined;\n }\n }\n\n private async publish(event: Parameters<RunEventBus[\"publish\"]>[0]): Promise<void> {\n if (!this.eventBus) return;\n await this.eventBus.publish(event);\n }\n}\n","import type { TestSuiteRunId } from \"../contracts/testTriggerTypes\";\n\n/**\n * Mints unique TestSuiteRun identifiers. Separated from {@link import(\"../types\").RunIdFactory}\n * so suite ids and per-case workflow run ids never alias.\n */\nexport class TestSuiteRunIdFactory {\n makeTestSuiteRunId(): TestSuiteRunId {\n return `tsr_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n }\n}\n","import { createHash } from \"node:crypto\";\nimport { z } from \"zod\";\n\nimport type { HitlResumeTokenSignerSeam, HitlTimeoutJobSchedulerSeam } from \"../contracts/hitlSeamTypes\";\nimport type { HumanTaskRecord, HumanTaskStore } from \"../contracts/humanTaskStoreTypes\";\nimport type {\n HumanTaskHandle,\n NodeActivationId,\n NodeId,\n PersistedRunState,\n PersistedSuspensionEntry,\n RunId,\n SuspensionRequest,\n WorkflowExecutionRepository,\n} from \"../types\";\nimport type { TelemetryScope } from \"../contracts/telemetryTypes\";\nimport { CodemationTelemetryAttributeNames } from \"../contracts/CodemationTelemetryAttributeNames\";\n\nimport { RunSuspendedError } from \"./RunSuspendedError\";\nexport { RunSuspendedError };\n\n/**\n * Handles per-item `SuspensionRequest` catches in the engine's item execution loop.\n *\n * Responsibilities:\n * 1. Generate a `taskId` (UUID v4).\n * 2. Persist a `HumanTask` row via `HumanTaskStore.create`.\n * 3. Sign a resume URL via `HitlResumeTokenSigner.sign`.\n * 4. Enqueue a delayed BullMQ timeout job via `HitlTimeoutJobScheduler.enqueue`.\n * 5. Build a `HumanTaskHandle` and call `deliver`.\n * 6. Append a `PersistedSuspensionEntry` to the run state and flip status to `\"suspended\"`.\n * 7. Persist via `WorkflowExecutionRepository.save`.\n * 8. Throw `RunSuspendedError` so the caller can exit cleanly.\n *\n * If `deliver` throws, the error propagates up to `NodeExecutionRequestHandlerService`\n * which routes it through `resumeFromNodeError` → run status becomes `\"failed\"`.\n *\n * `humanTaskStore`, `tokenSigner`, and `timeoutScheduler` are optional —\n * when not registered (e.g. in unit tests), the handler still suspends the run but\n * skips persistence, token signing, and job scheduling.\n */\nexport class NodeSuspensionHandler {\n constructor(\n private readonly workflowExecutionRepository: WorkflowExecutionRepository,\n private readonly humanTaskStore?: HumanTaskStore,\n private readonly tokenSigner?: HitlResumeTokenSignerSeam,\n private readonly timeoutScheduler?: HitlTimeoutJobSchedulerSeam,\n /** Workspace ID to stamp on HumanTaskRecord in managed mode (T7 security fix). Null in non-managed mode. */\n private readonly workspaceId?: string,\n ) {}\n\n async handle(args: {\n runId: RunId;\n nodeId: NodeId;\n activationId: NodeActivationId;\n itemIndex: number;\n suspensionRequest: SuspensionRequest;\n state: PersistedRunState;\n /** Telemetry scope of the node's per-item span. Used to emit `hitl.task.*` span events. */\n telemetry?: TelemetryScope;\n }): Promise<never> {\n const taskId = `htask_${globalThis.crypto.randomUUID()}`;\n const { timeout, onTimeout, deliver, decisionSchema, subject, metadata } = args.suspensionRequest.request;\n\n const timeoutMs = this.parseDurationMs(timeout);\n const expiresAt = new Date(Date.now() + timeoutMs);\n\n const decisionSchemaHash = this.hashSchema(decisionSchema);\n const decisionSchemaJson = this.schemaToJson(decisionSchema);\n\n // Build resume token (when signer is available)\n let resumeUrl = \"\";\n let resumeTokenHash = \"\";\n if (this.tokenSigner) {\n const token = this.tokenSigner.sign({ taskId, expiresAt, schemaHash: decisionSchemaHash });\n resumeUrl = token; // callers (deliver) receive the raw token; inbox layers wrap into a URL\n resumeTokenHash = this.tokenSigner.hashToken(token);\n }\n\n const handle: HumanTaskHandle = {\n taskId,\n runId: args.runId,\n nodeId: args.nodeId,\n expiresAt,\n resumeUrl,\n ...(metadata !== undefined ? { metadata } : {}),\n };\n\n // Emit hitl.task.created before calling deliver.\n const channel = (metadata as Record<string, unknown> | undefined)?.[\"channel\"];\n await args.telemetry?.addSpanEvent?.({\n name: \"hitl.task.created\",\n attributes: {\n [CodemationTelemetryAttributeNames.hitlTaskId]: taskId,\n [CodemationTelemetryAttributeNames.hitlChannel]: typeof channel === \"string\" ? channel : \"unknown\",\n [CodemationTelemetryAttributeNames.runId]: args.runId,\n [CodemationTelemetryAttributeNames.nodeId]: args.nodeId,\n expiresAt: expiresAt.toISOString(),\n },\n });\n\n // D5: deliver throws → emit hitl.task.delivery_failed, then propagate upward;\n // caller routes to resumeFromNodeError → \"failed\"\n let deliveryRef: Awaited<ReturnType<typeof deliver>>;\n try {\n deliveryRef = await deliver(handle);\n } catch (deliverError) {\n await args.telemetry?.addSpanEvent?.({\n name: \"hitl.task.delivery_failed\",\n attributes: {\n [CodemationTelemetryAttributeNames.hitlTaskId]: taskId,\n [CodemationTelemetryAttributeNames.hitlChannel]: typeof channel === \"string\" ? channel : \"unknown\",\n error: deliverError instanceof Error ? deliverError.message : String(deliverError),\n },\n });\n throw deliverError;\n }\n\n // Persist HumanTask row\n if (this.humanTaskStore) {\n const record: HumanTaskRecord = {\n id: taskId,\n runId: args.runId,\n workflowId: args.state.workflowId,\n // T7: stamp workspaceId in managed mode so HitlCallbackHandler can assert workspace identity.\n // Non-managed mode leaves this undefined (null in DB) — the check in HitlCallbackHandler\n // is guarded by `task.workspaceId !== undefined` and is a no-op when null.\n workspaceId: this.workspaceId ?? undefined,\n nodeId: args.nodeId,\n activationId: args.activationId,\n itemIndex: args.itemIndex,\n status: \"pending\",\n channel: \"local\",\n subject,\n metadata: (metadata as Record<string, import(\"../contracts/workflowTypes\").JsonValue>) ?? {},\n decisionSchemaJson,\n decisionSchemaHash,\n onTimeout,\n deliveryRef,\n resumeTokenHash: resumeTokenHash || \"no-token\",\n expiresAt,\n createdAt: new Date(),\n };\n await this.humanTaskStore.create(record);\n }\n\n // Enqueue timeout job\n if (this.timeoutScheduler) {\n await this.timeoutScheduler.enqueueTimeoutJob({ taskId, expiresAt });\n }\n\n const entry: PersistedSuspensionEntry = {\n taskId,\n nodeId: args.nodeId,\n activationId: args.activationId,\n itemIndex: args.itemIndex,\n decisionSchemaHash,\n deliveryRef,\n timeoutAt: expiresAt.toISOString(),\n onTimeout,\n };\n\n const existingSuspensions = args.state.suspension ?? [];\n const updatedState: PersistedRunState = {\n ...args.state,\n status: \"suspended\",\n suspension: [...existingSuspensions, entry],\n };\n\n await this.workflowExecutionRepository.save(updatedState);\n\n throw new RunSuspendedError(args.runId, taskId);\n }\n\n /**\n * Parse a duration string into milliseconds.\n * Accepts ISO 8601 durations (\"PT24H\", \"PT30M\") and shorthand (\"24h\", \"30m\", \"1d\").\n * Throws for unrecognised formats.\n */\n private parseDurationMs(duration: string): number {\n // Shorthand: \"24h\", \"30m\", \"7d\", \"3600s\"\n const shorthand = /^(\\d+(?:\\.\\d+)?)(s|m|h|d)$/i.exec(duration);\n if (shorthand) {\n const value = parseFloat(shorthand[1]!);\n const unit = shorthand[2]!.toLowerCase();\n const multipliers: Record<string, number> = {\n s: 1_000,\n m: 60_000,\n h: 3_600_000,\n d: 86_400_000,\n };\n return value * multipliers[unit]!;\n }\n // ISO 8601 duration subset: PTnHnMnS (days handled via P1D)\n const iso = /^P(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$/.exec(duration);\n if (iso) {\n const days = parseFloat(iso[1] ?? \"0\");\n const hours = parseFloat(iso[2] ?? \"0\");\n const minutes = parseFloat(iso[3] ?? \"0\");\n const seconds = parseFloat(iso[4] ?? \"0\");\n return (days * 86_400 + hours * 3_600 + minutes * 60 + seconds) * 1_000;\n }\n throw new Error(`NodeSuspensionHandler: unrecognised duration format: \"${duration}\"`);\n }\n\n private hashSchema(schema: unknown): string {\n const json = this.schemaToJson(schema);\n return createHash(\"sha256\").update(json).digest(\"hex\");\n }\n\n private schemaToJson(schema: unknown): string {\n if (schema instanceof z.ZodType) {\n return JSON.stringify(z.toJSONSchema(schema));\n }\n if (typeof (schema as { toJSON?: unknown }).toJSON === \"function\") {\n return JSON.stringify((schema as { toJSON: () => unknown }).toJSON());\n }\n return JSON.stringify(schema);\n }\n}\n","import { NodeExecutor } from \"../execution/NodeExecutor\";\n\nimport { InlineDrivingScheduler } from \"./InlineDrivingScheduler\";\n\nexport class InlineDrivingSchedulerFactory {\n create(nodeExecutor: NodeExecutor): InlineDrivingScheduler {\n return new InlineDrivingScheduler(nodeExecutor);\n }\n}\n","import { instanceCachingFactory, type DependencyContainer } from \"../../di\";\nimport { CoreTokens } from \"../../di\";\nimport { NoOpAgentMcpIntegration } from \"../../contracts/NoOpAgentMcpIntegration\";\nimport { EngineExecutionLimitsPolicyFactory } from \"../../policies/executionLimits/EngineExecutionLimitsPolicyFactory\";\nimport {\n ChildExecutionScopeFactory,\n DefaultAsyncSleeper,\n InProcessRetryRunnerFactory,\n ItemExprResolver,\n NodeExecutor,\n NodeExecutorFactory,\n NodeInstanceFactoryFactory,\n NodeOutputNormalizer,\n RunnableOutputBehaviorResolver,\n} from \"../../execution\";\nimport { NodeSuspensionHandler } from \"../../execution/NodeSuspensionHandler\";\nimport { HumanTaskStoreToken } from \"../../contracts/humanTaskStoreTypes\";\nimport {\n HitlResumeTokenSignerToken,\n HitlTimeoutJobSchedulerToken,\n HitlWorkspaceIdToken,\n} from \"../../contracts/hitlSeamTypes\";\nimport {\n EngineFactory,\n EngineWorkflowRunnerServiceFactory,\n RunIntentServiceFactory,\n RunIntentService,\n WorkflowRepositoryWebhookTriggerMatcherFactory,\n} from \"../../runtime\";\nimport { InlineDrivingScheduler } from \"../../scheduler/InlineDrivingScheduler\";\nimport { InlineDrivingSchedulerFactory } from \"../../scheduler/InlineDrivingSchedulerFactory\";\nimport { Engine } from \"../../orchestration/Engine\";\nimport type { EngineRuntimeRegistrationOptions } from \"./EngineRuntimeRegistration.types\";\nimport type { WebhookTriggerMatcherProvider } from \"./EngineRuntimeRegistration.types\";\n\n/**\n * Container-first entry: call on a host/test container **after** workflow, run, node, and credential\n * ports are registered. The registrar owns the default inline scheduler, engine binding,\n * and intent-surface wiring so hosts only override the seams they actually replace.\n */\nexport class EngineRuntimeRegistrar {\n register(container: DependencyContainer, options?: EngineRuntimeRegistrationOptions): void {\n this.registerSupportFactories(container);\n this.registerExecutionLimitsPolicy(container, options);\n this.ensureWorkflowNodeInstanceFactory(container);\n this.ensureNodeExecutor(container);\n this.registerDefaultActivationScheduler(container);\n this.registerEngine(container, options);\n this.registerIntentServices(container);\n this.registerAgentMcpIntegration(container);\n }\n\n private registerAgentMcpIntegration(container: DependencyContainer): void {\n if (container.isRegistered(CoreTokens.AgentMcpIntegration, true)) {\n return;\n }\n container.registerInstance(CoreTokens.AgentMcpIntegration, new NoOpAgentMcpIntegration());\n }\n\n private registerSupportFactories(container: DependencyContainer): void {\n if (!container.isRegistered(ItemExprResolver, true)) {\n container.registerSingleton(ItemExprResolver, ItemExprResolver);\n }\n if (!container.isRegistered(NodeOutputNormalizer, true)) {\n container.registerSingleton(NodeOutputNormalizer, NodeOutputNormalizer);\n }\n if (!container.isRegistered(RunnableOutputBehaviorResolver, true)) {\n container.registerSingleton(RunnableOutputBehaviorResolver, RunnableOutputBehaviorResolver);\n }\n if (!container.isRegistered(ChildExecutionScopeFactory, true)) {\n container.register(ChildExecutionScopeFactory, {\n useFactory: instanceCachingFactory((dependencyContainer) => {\n return new ChildExecutionScopeFactory(dependencyContainer.resolve(CoreTokens.ActivationIdFactory));\n }),\n });\n }\n container.registerSingleton(EngineExecutionLimitsPolicyFactory, EngineExecutionLimitsPolicyFactory);\n container.registerSingleton(NodeInstanceFactoryFactory, NodeInstanceFactoryFactory);\n container.registerSingleton(DefaultAsyncSleeper, DefaultAsyncSleeper);\n container.registerSingleton(InProcessRetryRunnerFactory, InProcessRetryRunnerFactory);\n container.registerSingleton(NodeExecutorFactory, NodeExecutorFactory);\n container.registerSingleton(InlineDrivingSchedulerFactory, InlineDrivingSchedulerFactory);\n container.registerSingleton(RunIntentServiceFactory, RunIntentServiceFactory);\n container.registerSingleton(EngineWorkflowRunnerServiceFactory, EngineWorkflowRunnerServiceFactory);\n container.registerSingleton(\n WorkflowRepositoryWebhookTriggerMatcherFactory,\n WorkflowRepositoryWebhookTriggerMatcherFactory,\n );\n }\n\n private registerExecutionLimitsPolicy(\n container: DependencyContainer,\n options: EngineRuntimeRegistrationOptions | undefined,\n ): void {\n if (container.isRegistered(CoreTokens.EngineExecutionLimitsPolicy, true)) {\n return;\n }\n container.register(CoreTokens.EngineExecutionLimitsPolicy, {\n useFactory: instanceCachingFactory((dependencyContainer) => {\n const fromResolver = options?.resolveEngineExecutionLimits?.();\n const merged = fromResolver ?? options?.engineExecutionLimits;\n return dependencyContainer.resolve(EngineExecutionLimitsPolicyFactory).create(merged);\n }),\n });\n }\n\n private ensureWorkflowNodeInstanceFactory(container: DependencyContainer): void {\n if (container.isRegistered(CoreTokens.WorkflowNodeInstanceFactory, true)) {\n return;\n }\n container.register(CoreTokens.WorkflowNodeInstanceFactory, {\n useFactory: instanceCachingFactory((dependencyContainer) => {\n return dependencyContainer\n .resolve(NodeInstanceFactoryFactory)\n .create(dependencyContainer.resolve(CoreTokens.NodeResolver));\n }),\n });\n }\n\n private ensureNodeExecutor(container: DependencyContainer): void {\n if (container.isRegistered(NodeExecutor, true)) {\n return;\n }\n container.register(NodeExecutor, {\n useFactory: instanceCachingFactory((dependencyContainer) => {\n const retryRunner = dependencyContainer\n .resolve(InProcessRetryRunnerFactory)\n .create(dependencyContainer.resolve(DefaultAsyncSleeper));\n const workflowExecutionRepository = dependencyContainer.resolve(CoreTokens.WorkflowExecutionRepository);\n const humanTaskStore = dependencyContainer.isRegistered(HumanTaskStoreToken, true)\n ? dependencyContainer.resolve(HumanTaskStoreToken)\n : undefined;\n const tokenSigner = dependencyContainer.isRegistered(HitlResumeTokenSignerToken, true)\n ? dependencyContainer.resolve(HitlResumeTokenSignerToken)\n : undefined;\n const timeoutScheduler = dependencyContainer.isRegistered(HitlTimeoutJobSchedulerToken, true)\n ? dependencyContainer.resolve(HitlTimeoutJobSchedulerToken)\n : undefined;\n const workspaceId = dependencyContainer.isRegistered(HitlWorkspaceIdToken, true)\n ? dependencyContainer.resolve(HitlWorkspaceIdToken)\n : undefined;\n const suspensionHandler = new NodeSuspensionHandler(\n workflowExecutionRepository,\n humanTaskStore ?? undefined,\n tokenSigner ?? undefined,\n timeoutScheduler ?? undefined,\n workspaceId ?? undefined,\n );\n return dependencyContainer\n .resolve(NodeExecutorFactory)\n .create(\n dependencyContainer.resolve(CoreTokens.WorkflowNodeInstanceFactory),\n retryRunner,\n dependencyContainer.resolve(RunnableOutputBehaviorResolver),\n suspensionHandler,\n (runId) => workflowExecutionRepository.load(runId),\n );\n }),\n });\n }\n\n private registerDefaultActivationScheduler(container: DependencyContainer): void {\n if (container.isRegistered(CoreTokens.NodeActivationScheduler, true)) {\n return;\n }\n container.register(InlineDrivingScheduler, {\n useFactory: instanceCachingFactory((dependencyContainer) => {\n return dependencyContainer\n .resolve(InlineDrivingSchedulerFactory)\n .create(dependencyContainer.resolve(NodeExecutor));\n }),\n });\n container.register(CoreTokens.NodeActivationScheduler, {\n useFactory: instanceCachingFactory((dependencyContainer) => {\n return dependencyContainer.resolve(InlineDrivingScheduler);\n }),\n });\n }\n\n private registerEngine(container: DependencyContainer, options: EngineRuntimeRegistrationOptions | undefined): void {\n container.registerSingleton(EngineFactory, EngineFactory);\n const matcherProvider = this.resolveMatcherProvider(options);\n container.register(Engine, {\n useFactory: instanceCachingFactory((dependencyContainer) => {\n const liveWorkflowRepository = dependencyContainer.resolve(CoreTokens.LiveWorkflowRepository);\n const nodeResolver = dependencyContainer.resolve(CoreTokens.NodeResolver);\n const tokenRegistryLike = dependencyContainer.resolve(CoreTokens.PersistedWorkflowTokenRegistry);\n const workflowActivationPolicy = dependencyContainer.resolve(CoreTokens.WorkflowActivationPolicy);\n const webhookTriggerMatcher = matcherProvider.createMatcher(dependencyContainer);\n const workflowNodeInstanceFactory = dependencyContainer.resolve(CoreTokens.WorkflowNodeInstanceFactory);\n const triggerRuntimeDiagnostics = options?.triggerRuntimeDiagnosticsProvider?.create(dependencyContainer);\n return dependencyContainer.resolve(EngineFactory).create({\n credentialSessions: dependencyContainer.resolve(CoreTokens.CredentialSessionService),\n liveWorkflowRepository,\n workflowRepository: dependencyContainer.resolve(CoreTokens.WorkflowRepository),\n workflowActivationPolicy,\n nodeResolver,\n triggerSetupStateRepository: dependencyContainer.resolve(CoreTokens.TriggerSetupStateRepository),\n webhookTriggerMatcher,\n runIdFactory: dependencyContainer.resolve(CoreTokens.RunIdFactory),\n activationIdFactory: dependencyContainer.resolve(CoreTokens.ActivationIdFactory),\n workflowExecutionRepository: dependencyContainer.resolve(CoreTokens.WorkflowExecutionRepository),\n activationScheduler: dependencyContainer.resolve(CoreTokens.NodeActivationScheduler),\n runDataFactory: dependencyContainer.resolve(CoreTokens.RunDataFactory),\n executionContextFactory: dependencyContainer.resolve(CoreTokens.ExecutionContextFactory),\n nodeExecutor: dependencyContainer.resolve(NodeExecutor),\n eventBus: dependencyContainer.resolve(CoreTokens.RunEventBus),\n tokenRegistry: tokenRegistryLike,\n workflowNodeInstanceFactory,\n executionLimitsPolicy: dependencyContainer.resolve(CoreTokens.EngineExecutionLimitsPolicy),\n workflowPolicyRuntimeDefaults: options?.workflowPolicyRuntimeDefaults,\n triggerRuntimeDiagnostics,\n });\n }),\n });\n }\n\n private registerIntentServices(container: DependencyContainer): void {\n container.register(RunIntentService, {\n useFactory: instanceCachingFactory((dependencyContainer) => {\n return dependencyContainer\n .resolve(RunIntentServiceFactory)\n .create(dependencyContainer.resolve(Engine), dependencyContainer.resolve(CoreTokens.WorkflowRepository));\n }),\n });\n container.register(CoreTokens.WorkflowRunnerService, {\n useFactory: instanceCachingFactory((dependencyContainer) => {\n return dependencyContainer\n .resolve(EngineWorkflowRunnerServiceFactory)\n .create(dependencyContainer.resolve(Engine), dependencyContainer.resolve(CoreTokens.WorkflowRepository));\n }),\n });\n }\n\n private resolveMatcherProvider(options: EngineRuntimeRegistrationOptions | undefined): WebhookTriggerMatcherProvider {\n if (options?.webhookTriggerMatcherProvider) {\n return options.webhookTriggerMatcherProvider;\n }\n return {\n createMatcher: (container) =>\n container\n .resolve(WorkflowRepositoryWebhookTriggerMatcherFactory)\n .create(\n container.resolve(CoreTokens.WorkflowRepository),\n container.resolve(CoreTokens.WorkflowActivationPolicy),\n options?.webhookTriggerRoutingDiagnostics,\n ),\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AASA,IAAa,qCAAb,MAAgD;CAC9C,OAAO,WAAqF;AAC1F,SAAO,IAAIA,4CAA4B;GAAE,GAAGC;GAAkC,GAAG;GAAW,CAAC;;;;;;;ACPjG,IAAa,mBAAb,MAA8B;CAC5B,OAAO,mBAAmB,OAAsC;AAC9D,SAAO;GACL,OAAO,MAAM;GACb,YAAY,MAAM;GAClB,WAAW,MAAM;GACjB,QAAQ,MAAM;GACd,YAAYC,gCAAqB,WAAW,MAAM;GAClD,QAAQ,MAAM;GACd,kBAAkB,MAAM;GACzB;;;;;;ACIL,IAAa,sCAAb,MAEA;CACE,AAAiB,uBAAO,IAAI,KAA+B;CAE3D,MAAM,UAAU,MAWE;AAChB,OAAK,KAAK,IAAI,KAAK,OAAO;GACxB,OAAO,KAAK;GACZ,YAAY,KAAK;GACjB,WAAW,KAAK;GAChB,UAAU;GACV,QAAQ,KAAK;GACb,kBAAkB,KAAK;GACvB,SAAS,KAAK;GACd,kBAAkB,KAAK;GACvB,cAAc,KAAK;GACnB,gBAAgB,KAAK;GACrB,gBAAgB,KAAK;GACrB,QAAQ;GACR,OAAO,EAAE;GACT,eAAe,EAAE;GACjB,uBAAuB,EAAE;GACzB,uBAAuB,EAAE;GAC1B,CAAC;;CAGJ,MAAM,KAAK,OAAsD;AAC/D,SAAO,KAAK,KAAK,IAAI,MAAM;;CAG7B,MAAM,oBAAoB,OAAgE;EACxF,MAAM,QAAQ,KAAK,KAAK,IAAI,MAAM;AAClC,MAAI,CAAC,MACH;AAEF,SAAO;GACL,SAAS,MAAM,UAAU,EAAE,GAAG,MAAM,SAAS,GAAG;GAChD,OAAO,MAAM,MAAM,KAAK,WAAW,EAAE,GAAG,OAAO,EAAE;GAClD;;CAGH,MAAM,KAAK,OAAyC;AAClD,OAAK,KAAK,IAAI,MAAM,OAAO;GAAE,GAAG;GAAO,WAAW,MAAM,YAAY,KAAK;GAAG,CAAC;;CAG/E,MAAM,UAAU,OAA6B;AAC3C,OAAK,KAAK,OAAO,MAAM;;CAGzB,MAAM,SAAS,MAAkG;EAC/G,MAAM,QAAQ,MAAM,SAAS;AAM7B,SALkB,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,CACtC,QAAQ,MAAO,MAAM,aAAa,EAAE,eAAe,KAAK,aAAa,KAAM,CAC3E,MAAM,GAAG,MAAM,EAAE,UAAU,cAAc,EAAE,UAAU,CAAC,CACtD,MAAM,GAAG,MAAM,CACf,KAAK,MAAM,iBAAiB,mBAAmB,EAAE,CAAC;;CAIvD,MAAM,kBACJ,MAC2C;EAC3C,MAAM,QAAQ,KAAK,SAAS;EAC5B,MAAMC,MAA2B,EAAE;AACnC,OAAK,MAAM,KAAK,KAAK,KAAK,QAAQ,EAAE;AAClC,OAAI,EAAE,WAAW,eAAe,EAAE,WAAW,SAAU;GACvD,MAAM,aAAaC,gCAAqB,WAAW,EAAE;GACrD,MAAM,mBAAmB,EAAE,gBAAgB,oBAAoB,KAAK;GACpE,MAAM,6BAAY,IAAI,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC,SAAS,GAAG,mBAAmB,IAAK,EAAC,aAAa;AACnG,OAAI,CAAC,cAAc,cAAc,UAAW;AAC5C,OAAI,KAAK;IACP,OAAO,EAAE;IACT,YAAY,EAAE;IACd,WAAW,EAAE;IACb;IACD,CAAC;;AAEJ,MAAI,MAAM,GAAG,MAAM,EAAE,WAAW,cAAc,EAAE,WAAW,CAAC;AAC5D,SAAO,IAAI,MAAM,GAAG,MAAM;;;;;;;;;;ACvG9B,IAAa,yBAAb,MAAoC;CAClC,SAA0B;AACxB,SAAO,IAAI,iBAAiB;;;;;;ACehC,MAAM,sBAAsB;;;;;;;;;;AAmD5B,IAAa,wBAAb,MAAmC;CACjC,YACE,AAAiBC,QACjB,AAAiBC,uBACjB,AAAiBC,2BACjB,AAAiBC,wBACjB,AAAiBC,UACjB,AAAiBC,oCAAgC,IAAI,MAAM,EAC3D;EANiB;EACA;EACA;EACA;EACA;EACA;;CAGnB,MAAM,SAAS,MAAqD;EAClE,MAAM,gBAAgB,KAAK;EAC3B,MAAM,aAAa,KAAK,SAAS,MAAM,MAAM,MAAM,EAAE,OAAO,cAAc;AAC1E,MAAI,CAAC,WACH,OAAM,IAAI,MAAM,2BAA2B,gBAAgB;AAE7D,MAAI,WAAW,SAAS,UACtB,OAAM,IAAI,MAAM,QAAQ,cAAc,mBAAmB;EAE3D,MAAM,gBAAgB,WAAW;AACjC,MAAI,cAAc,gBAAgB,OAChC,OAAM,IAAI,MACR,QAAQ,cAAc,uCAAuC,cAAc,eAAe,OAAO,IAClG;EAEH,MAAM,oBAAoB;AAC1B,MAAI,OAAO,kBAAkB,kBAAkB,WAC7C,OAAM,IAAI,MAAM,gBAAgB,cAAc,4CAA4C;EAG5F,MAAM,iBAAiB,KAAK,kBAAkB,KAAK,sBAAsB,oBAAoB;EAC7F,MAAM,cAAc,KAAK,IAAI,GAAG,KAAK,eAAe,kBAAkB,eAAe,oBAAoB;EACzG,MAAM,iBAAiB,KAAK;EAC5B,MAAM,gBAAgB,KAAK,uBAAuB,QAAQ;EAC1D,MAAM,wBAAwB,cAAc,MAAM,gBAAgB,OAAO;AACzE,MAAI,eACF,KAAI,eAAe,QACjB,eAAc,MAAM,eAAe,OAAO;MAE1C,gBAAe,iBAAiB,SAAS,iBAAiB,EAAE,MAAM,MAAM,CAAC;EAI7E,MAAM,kBAAkB,WAAW,QAAQ,kBAAkB;AAE7D,QAAM,KAAK,QAAQ;GACjB,MAAM;GACN;GACA,YAAY,KAAK,SAAS;GAC1B;GACA,GAAI,kBAAkB,EAAE,iBAAiB,GAAG,EAAE;GAC9C;GACA,IAAI,KAAK,KAAK;GACf,CAAC;EAEF,MAAMC,eAAwC;GAC5C,YAAY,KAAK,SAAS;GAC1B,QAAQ;GACR,QAAQ;GACR;GACA,eAAe,KAAK,0BAA0B,OAAO,KAAK,SAAS,IAAI,eAAe,kBAAkB;GACxG,QAAQ,cAAc;GACvB;EAED,MAAMC,QAAgC,EAAE;EACxC,IAAI,YAAY;EAChB,IAAI,WAAW;EACf,IAAIC;EACJ,IAAIC;EACJ,MAAMC,QAA8B,EAAE;EACtC,IAAIC;EAEJ,MAAM,cAAc,YAA2B;AAC7C,UAAO,YAAY,aAAa;AAC9B,QAAI,CAAC,YACH,eAAc,IAAI,SAAe,YAAY;AAC3C,mBAAc;MACd;AAEJ,UAAM;;AAER,eAAY;;EAGd,MAAM,gBAAsB;AAC1B,eAAY;AACZ,OAAI,aAAa;IACf,MAAM,KAAK;AACX,kBAAc;AACd,kBAAc;AACd,QAAI;;;AAIR,MAAI;AACF,cAAW,MAAM,QAAQ,kBAAkB,cAAc,aAAa,EAAkC;AACtG,QAAI,cAAc,OAAO,QACvB;AAEF,UAAM,aAAa;AACnB,QAAI,cAAc,OAAO,SAAS;AAChC,cAAS;AACT;;IAEF,MAAM,gBAAgB;IACtB,MAAM,gBAAgB,KAAK,iBAAiB,mBAAmB,KAAK;AACpE,UAAM,KACJ,KAAK,WAAW;KACd,UAAU,KAAK;KACf;KACA;KACA;KACA;KACA;KACD,CAAC,CACC,MAAM,YAAY;AACjB,WAAM,KAAK,QAAQ;MACnB,CACD,QAAQ,QAAQ,CACpB;;WAEI,KAAK;AACZ,qBAAkB,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC;YAC7D;AACR,OAAI,eACF,gBAAe,oBAAoB,SAAS,gBAAgB;;AAIhE,QAAM,QAAQ,IAAI,MAAM;AAExB,QAAM,MAAM,GAAG,MAAM,EAAE,gBAAgB,EAAE,cAAc;EACvD,MAAM,aAAa,MAAM;EACzB,MAAM,cAAc,MAAM,QAAQ,MAAM,EAAE,WAAW,YAAY,CAAC;EAClE,MAAM,cAAc,MAAM,QAAQ,MAAM,EAAE,WAAW,SAAS,CAAC;EAC/D,MAAMC,SAA6B,KAAK,kBAAkB;GACxD;GACA,WAAW,cAAc,OAAO;GAChC;GACA;GACA;GACD,CAAC;AAEF,QAAM,KAAK,QAAQ;GACjB,MAAM;GACN;GACA,YAAY,KAAK,SAAS;GAC1B;GACA;GACA;GACA;GACA,IAAI,KAAK,KAAK;GACf,CAAC;AAEF,MAAI,mBAAmB,WAAW,UAChC,OAAM;AAGR,SAAO;GACL;GACA,YAAY,KAAK,SAAS;GAC1B;GACA;GACA;GACA;GACA;GACA;GACD;;CAGH,MAAc,WAAW,MAOS;EAChC,MAAMC,mBAAwC,EAC5C,aAAa;GACX,gBAAgB,KAAK;GACrB,eAAe,KAAK;GACpB,GAAI,KAAK,kBAAkB,SAAY,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE;GAClF,EACF;EAED,MAAM,UAAU,MAAM,KAAK,OAAO,YAChC,KAAK,UACL,KAAK,eACL,CAAC,KAAK,KAAK,EACX,QACA,iBACD;EAED,MAAM,QAAQ,QAAQ;AACtB,QAAM,KAAK,QAAQ;GACjB,MAAM;GACN,gBAAgB,KAAK;GACrB,eAAe,KAAK;GACpB;GACA,YAAY,KAAK,SAAS;GAC1B,IAAI,KAAK,KAAK;GACd,GAAI,KAAK,kBAAkB,SAAY,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE;GAClF,CAAC;EAEF,IAAIC;AACJ,MAAI,QAAQ,WAAW,eAAe,QAAQ,WAAW,SACvD,YAAW;MAEX,YAAW,MAAM,KAAK,OAAO,kBAAkB,MAAM;EAOvD,MAAMC,SAA4B,SAAS,WAAW,cAAc,cAAc;AAClF,QAAM,KAAK,QAAQ;GACjB,MAAM;GACN,gBAAgB,KAAK;GACrB,eAAe,KAAK;GACpB;GACA,YAAY,KAAK,SAAS;GAC1B;GACA,IAAI,KAAK,KAAK;GACf,CAAC;AACF,SAAO;GAAE,eAAe,KAAK;GAAe;GAAO;GAAQ;;CAG7D,AAAQ,kBAAkB,MAMH;AACrB,MAAI,KAAK,mBAAmB,KAAK,eAAe,EAC9C,QAAO;AAET,MAAI,KAAK,UACP,QAAO;AAET,MAAI,KAAK,gBACP,QAAO;AAET,MAAI,KAAK,eAAe,EACtB,QAAO;AAET,MAAI,KAAK,gBAAgB,EACvB,QAAO;AAET,MAAI,KAAK,gBAAgB,EACvB,QAAO;AAET,SAAO;;CAGT,AAAQ,MAAc;AACpB,SAAO,KAAK,aAAa,CAAC,aAAa;;;CAIzC,AAAQ,iBAAiB,QAAwC,MAAyC;AACxG,MAAI,OAAO,OAAO,cAAc,WAAY,QAAO;AACnD,MAAI;GACF,MAAM,SAAS,OAAO,UAAU,KAAK;AACrC,OAAI,OAAO,WAAW,SAAU,QAAO;GACvC,MAAM,UAAU,OAAO,MAAM;AAC7B,UAAO,QAAQ,WAAW,IAAI,SAAY;UACpC;AACN;;;CAIJ,MAAc,QAAQ,OAA6D;AACjF,MAAI,CAAC,KAAK,SAAU;AACpB,QAAM,KAAK,SAAS,QAAQ,MAAM;;;;;;;;;;ACtVtC,IAAa,wBAAb,MAAmC;CACjC,qBAAqC;AACnC,SAAO,OAAO,KAAK,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;ACiCpF,IAAa,wBAAb,MAAmC;CACjC,YACE,AAAiBC,6BACjB,AAAiBC,gBACjB,AAAiBC,aACjB,AAAiBC,kBAEjB,AAAiBC,aACjB;EANiB;EACA;EACA;EACA;EAEA;;CAGnB,MAAM,OAAO,MASM;EACjB,MAAM,SAAS,SAAS,WAAW,OAAO,YAAY;EACtD,MAAM,EAAE,SAAS,WAAW,SAAS,gBAAgB,SAAS,aAAa,KAAK,kBAAkB;EAElG,MAAM,YAAY,KAAK,gBAAgB,QAAQ;EAC/C,MAAM,YAAY,IAAI,KAAK,KAAK,KAAK,GAAG,UAAU;EAElD,MAAM,qBAAqB,KAAK,WAAW,eAAe;EAC1D,MAAM,qBAAqB,KAAK,aAAa,eAAe;EAG5D,IAAI,YAAY;EAChB,IAAI,kBAAkB;AACtB,MAAI,KAAK,aAAa;GACpB,MAAM,QAAQ,KAAK,YAAY,KAAK;IAAE;IAAQ;IAAW,YAAY;IAAoB,CAAC;AAC1F,eAAY;AACZ,qBAAkB,KAAK,YAAY,UAAU,MAAM;;EAGrD,MAAMC,SAA0B;GAC9B;GACA,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb;GACA;GACA,GAAI,aAAa,SAAY,EAAE,UAAU,GAAG,EAAE;GAC/C;EAGD,MAAM,UAAW,WAAmD;AACpE,QAAM,KAAK,WAAW,eAAe;GACnC,MAAM;GACN,YAAY;KACTC,kDAAkC,aAAa;KAC/CA,kDAAkC,cAAc,OAAO,YAAY,WAAW,UAAU;KACxFA,kDAAkC,QAAQ,KAAK;KAC/CA,kDAAkC,SAAS,KAAK;IACjD,WAAW,UAAU,aAAa;IACnC;GACF,CAAC;EAIF,IAAIC;AACJ,MAAI;AACF,iBAAc,MAAM,QAAQ,OAAO;WAC5B,cAAc;AACrB,SAAM,KAAK,WAAW,eAAe;IACnC,MAAM;IACN,YAAY;MACTD,kDAAkC,aAAa;MAC/CA,kDAAkC,cAAc,OAAO,YAAY,WAAW,UAAU;KACzF,OAAO,wBAAwB,QAAQ,aAAa,UAAU,OAAO,aAAa;KACnF;IACF,CAAC;AACF,SAAM;;AAIR,MAAI,KAAK,gBAAgB;GACvB,MAAME,SAA0B;IAC9B,IAAI;IACJ,OAAO,KAAK;IACZ,YAAY,KAAK,MAAM;IAIvB,aAAa,KAAK,eAAe;IACjC,QAAQ,KAAK;IACb,cAAc,KAAK;IACnB,WAAW,KAAK;IAChB,QAAQ;IACR,SAAS;IACT;IACA,UAAW,YAA+E,EAAE;IAC5F;IACA;IACA;IACA;IACA,iBAAiB,mBAAmB;IACpC;IACA,2BAAW,IAAI,MAAM;IACtB;AACD,SAAM,KAAK,eAAe,OAAO,OAAO;;AAI1C,MAAI,KAAK,iBACP,OAAM,KAAK,iBAAiB,kBAAkB;GAAE;GAAQ;GAAW,CAAC;EAGtE,MAAMC,QAAkC;GACtC;GACA,QAAQ,KAAK;GACb,cAAc,KAAK;GACnB,WAAW,KAAK;GAChB;GACA;GACA,WAAW,UAAU,aAAa;GAClC;GACD;EAED,MAAM,sBAAsB,KAAK,MAAM,cAAc,EAAE;EACvD,MAAMC,eAAkC;GACtC,GAAG,KAAK;GACR,QAAQ;GACR,YAAY,CAAC,GAAG,qBAAqB,MAAM;GAC5C;AAED,QAAM,KAAK,4BAA4B,KAAK,aAAa;AAEzD,QAAM,IAAIC,kCAAkB,KAAK,OAAO,OAAO;;;;;;;CAQjD,AAAQ,gBAAgB,UAA0B;EAEhD,MAAM,YAAY,8BAA8B,KAAK,SAAS;AAC9D,MAAI,UASF,QARc,WAAW,UAAU,GAAI,GAEK;GAC1C,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;GACJ,CANY,UAAU,GAAI,aAAa;EAU1C,MAAM,MAAM,kEAAkE,KAAK,SAAS;AAC5F,MAAI,KAAK;GACP,MAAM,OAAO,WAAW,IAAI,MAAM,IAAI;GACtC,MAAM,QAAQ,WAAW,IAAI,MAAM,IAAI;GACvC,MAAM,UAAU,WAAW,IAAI,MAAM,IAAI;GACzC,MAAM,UAAU,WAAW,IAAI,MAAM,IAAI;AACzC,WAAQ,OAAO,QAAS,QAAQ,OAAQ,UAAU,KAAK,WAAW;;AAEpE,QAAM,IAAI,MAAM,yDAAyD,SAAS,GAAG;;CAGvF,AAAQ,WAAW,QAAyB;EAC1C,MAAM,OAAO,KAAK,aAAa,OAAO;AACtC,qCAAkB,SAAS,CAAC,OAAO,KAAK,CAAC,OAAO,MAAM;;CAGxD,AAAQ,aAAa,QAAyB;AAC5C,MAAI,kBAAkBC,MAAE,QACtB,QAAO,KAAK,UAAUA,MAAE,aAAa,OAAO,CAAC;AAE/C,MAAI,OAAQ,OAAgC,WAAW,WACrD,QAAO,KAAK,UAAW,OAAqC,QAAQ,CAAC;AAEvE,SAAO,KAAK,UAAU,OAAO;;;;;;ACrNjC,IAAa,gCAAb,MAA2C;CACzC,OAAO,cAAoD;AACzD,SAAO,IAAIC,uCAAuB,aAAa;;;;;;;;;;;ACkCnD,IAAa,yBAAb,MAAoC;CAClC,SAAS,WAAgC,SAAkD;AACzF,OAAK,yBAAyB,UAAU;AACxC,OAAK,8BAA8B,WAAW,QAAQ;AACtD,OAAK,kCAAkC,UAAU;AACjD,OAAK,mBAAmB,UAAU;AAClC,OAAK,mCAAmC,UAAU;AAClD,OAAK,eAAe,WAAW,QAAQ;AACvC,OAAK,uBAAuB,UAAU;AACtC,OAAK,4BAA4B,UAAU;;CAG7C,AAAQ,4BAA4B,WAAsC;AACxE,MAAI,UAAU,aAAaC,sBAAW,qBAAqB,KAAK,CAC9D;AAEF,YAAU,iBAAiBA,sBAAW,qBAAqB,IAAIC,2CAAyB,CAAC;;CAG3F,AAAQ,yBAAyB,WAAsC;AACrE,MAAI,CAAC,UAAU,aAAaC,kCAAkB,KAAK,CACjD,WAAU,kBAAkBA,kCAAkBA,iCAAiB;AAEjE,MAAI,CAAC,UAAU,aAAaC,sCAAsB,KAAK,CACrD,WAAU,kBAAkBA,sCAAsBA,qCAAqB;AAEzE,MAAI,CAAC,UAAU,aAAaC,gDAAgC,KAAK,CAC/D,WAAU,kBAAkBA,gDAAgCA,+CAA+B;AAE7F,MAAI,CAAC,UAAU,aAAaC,4CAA4B,KAAK,CAC3D,WAAU,SAASA,4CAA4B,EAC7C,kDAAoC,wBAAwB;AAC1D,UAAO,IAAIA,2CAA2B,oBAAoB,QAAQL,sBAAW,oBAAoB,CAAC;IAClG,EACH,CAAC;AAEJ,YAAU,kBAAkB,oCAAoC,mCAAmC;AACnG,YAAU,kBAAkBM,4CAA4BA,2CAA2B;AACnF,YAAU,kBAAkBC,qCAAqBA,oCAAoB;AACrE,YAAU,kBAAkBC,6CAA6BA,4CAA4B;AACrF,YAAU,kBAAkBC,qCAAqBA,oCAAoB;AACrE,YAAU,kBAAkB,+BAA+B,8BAA8B;AACzF,YAAU,kBAAkBC,yCAAyBA,wCAAwB;AAC7E,YAAU,kBAAkBC,oDAAoCA,mDAAmC;AACnG,YAAU,kBACRC,gEACAA,+DACD;;CAGH,AAAQ,8BACN,WACA,SACM;AACN,MAAI,UAAU,aAAaZ,sBAAW,6BAA6B,KAAK,CACtE;AAEF,YAAU,SAASA,sBAAW,6BAA6B,EACzD,kDAAoC,wBAAwB;GAE1D,MAAM,SADe,SAAS,gCAAgC,IAC/B,SAAS;AACxC,UAAO,oBAAoB,QAAQ,mCAAmC,CAAC,OAAO,OAAO;IACrF,EACH,CAAC;;CAGJ,AAAQ,kCAAkC,WAAsC;AAC9E,MAAI,UAAU,aAAaA,sBAAW,6BAA6B,KAAK,CACtE;AAEF,YAAU,SAASA,sBAAW,6BAA6B,EACzD,kDAAoC,wBAAwB;AAC1D,UAAO,oBACJ,QAAQM,2CAA2B,CACnC,OAAO,oBAAoB,QAAQN,sBAAW,aAAa,CAAC;IAC/D,EACH,CAAC;;CAGJ,AAAQ,mBAAmB,WAAsC;AAC/D,MAAI,UAAU,aAAaa,8BAAc,KAAK,CAC5C;AAEF,YAAU,SAASA,8BAAc,EAC/B,kDAAoC,wBAAwB;GAC1D,MAAM,cAAc,oBACjB,QAAQL,4CAA4B,CACpC,OAAO,oBAAoB,QAAQD,oCAAoB,CAAC;GAC3D,MAAM,8BAA8B,oBAAoB,QAAQP,sBAAW,4BAA4B;GACvG,MAAM,iBAAiB,oBAAoB,aAAac,qCAAqB,KAAK,GAC9E,oBAAoB,QAAQA,oCAAoB,GAChD;GACJ,MAAM,cAAc,oBAAoB,aAAaC,4CAA4B,KAAK,GAClF,oBAAoB,QAAQA,2CAA2B,GACvD;GACJ,MAAM,mBAAmB,oBAAoB,aAAaC,8CAA8B,KAAK,GACzF,oBAAoB,QAAQA,6CAA6B,GACzD;GACJ,MAAM,cAAc,oBAAoB,aAAaC,sCAAsB,KAAK,GAC5E,oBAAoB,QAAQA,qCAAqB,GACjD;GACJ,MAAM,oBAAoB,IAAI,sBAC5B,6BACA,kBAAkB,QAClB,eAAe,QACf,oBAAoB,QACpB,eAAe,OAChB;AACD,UAAO,oBACJ,QAAQR,oCAAoB,CAC5B,OACC,oBAAoB,QAAQT,sBAAW,4BAA4B,EACnE,aACA,oBAAoB,QAAQI,+CAA+B,EAC3D,oBACC,UAAU,4BAA4B,KAAK,MAAM,CACnD;IACH,EACH,CAAC;;CAGJ,AAAQ,mCAAmC,WAAsC;AAC/E,MAAI,UAAU,aAAaJ,sBAAW,yBAAyB,KAAK,CAClE;AAEF,YAAU,SAASkB,wCAAwB,EACzC,kDAAoC,wBAAwB;AAC1D,UAAO,oBACJ,QAAQ,8BAA8B,CACtC,OAAO,oBAAoB,QAAQL,6BAAa,CAAC;IACpD,EACH,CAAC;AACF,YAAU,SAASb,sBAAW,yBAAyB,EACrD,kDAAoC,wBAAwB;AAC1D,UAAO,oBAAoB,QAAQkB,uCAAuB;IAC1D,EACH,CAAC;;CAGJ,AAAQ,eAAe,WAAgC,SAA6D;AAClH,YAAU,kBAAkBC,+BAAeA,8BAAc;EACzD,MAAM,kBAAkB,KAAK,uBAAuB,QAAQ;AAC5D,YAAU,SAASC,wBAAQ,EACzB,kDAAoC,wBAAwB;GAC1D,MAAM,yBAAyB,oBAAoB,QAAQpB,sBAAW,uBAAuB;GAC7F,MAAM,eAAe,oBAAoB,QAAQA,sBAAW,aAAa;GACzE,MAAM,oBAAoB,oBAAoB,QAAQA,sBAAW,+BAA+B;GAChG,MAAM,2BAA2B,oBAAoB,QAAQA,sBAAW,yBAAyB;GACjG,MAAM,wBAAwB,gBAAgB,cAAc,oBAAoB;GAChF,MAAM,8BAA8B,oBAAoB,QAAQA,sBAAW,4BAA4B;GACvG,MAAM,4BAA4B,SAAS,mCAAmC,OAAO,oBAAoB;AACzG,UAAO,oBAAoB,QAAQmB,8BAAc,CAAC,OAAO;IACvD,oBAAoB,oBAAoB,QAAQnB,sBAAW,yBAAyB;IACpF;IACA,oBAAoB,oBAAoB,QAAQA,sBAAW,mBAAmB;IAC9E;IACA;IACA,6BAA6B,oBAAoB,QAAQA,sBAAW,4BAA4B;IAChG;IACA,cAAc,oBAAoB,QAAQA,sBAAW,aAAa;IAClE,qBAAqB,oBAAoB,QAAQA,sBAAW,oBAAoB;IAChF,6BAA6B,oBAAoB,QAAQA,sBAAW,4BAA4B;IAChG,qBAAqB,oBAAoB,QAAQA,sBAAW,wBAAwB;IACpF,gBAAgB,oBAAoB,QAAQA,sBAAW,eAAe;IACtE,yBAAyB,oBAAoB,QAAQA,sBAAW,wBAAwB;IACxF,cAAc,oBAAoB,QAAQa,6BAAa;IACvD,UAAU,oBAAoB,QAAQb,sBAAW,YAAY;IAC7D,eAAe;IACf;IACA,uBAAuB,oBAAoB,QAAQA,sBAAW,4BAA4B;IAC1F,+BAA+B,SAAS;IACxC;IACD,CAAC;IACF,EACH,CAAC;;CAGJ,AAAQ,uBAAuB,WAAsC;AACnE,YAAU,SAASqB,kCAAkB,EACnC,kDAAoC,wBAAwB;AAC1D,UAAO,oBACJ,QAAQX,wCAAwB,CAChC,OAAO,oBAAoB,QAAQU,uBAAO,EAAE,oBAAoB,QAAQpB,sBAAW,mBAAmB,CAAC;IAC1G,EACH,CAAC;AACF,YAAU,SAASA,sBAAW,uBAAuB,EACnD,kDAAoC,wBAAwB;AAC1D,UAAO,oBACJ,QAAQW,mDAAmC,CAC3C,OAAO,oBAAoB,QAAQS,uBAAO,EAAE,oBAAoB,QAAQpB,sBAAW,mBAAmB,CAAC;IAC1G,EACH,CAAC;;CAGJ,AAAQ,uBAAuB,SAAsF;AACnH,MAAI,SAAS,8BACX,QAAO,QAAQ;AAEjB,SAAO,EACL,gBAAgB,cACd,UACG,QAAQY,+DAA+C,CACvD,OACC,UAAU,QAAQZ,sBAAW,mBAAmB,EAChD,UAAU,QAAQA,sBAAW,yBAAyB,EACtD,SAAS,iCACV,EACN"}
|
package/dist/browser.cjs
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const require_di = require('./di-tO6R7VJV.cjs');
|
|
2
|
+
const require_ItemsInputNormalizer = require('./ItemsInputNormalizer-Div-fb6a.cjs');
|
|
3
|
+
|
|
4
|
+
exports.AgentConnectionNodeCollector = require_di.AgentConnectionNodeCollector;
|
|
5
|
+
exports.ConnectionNodeIdFactory = require_di.ConnectionNodeIdFactory;
|
|
6
|
+
exports.CredentialUnboundError = require_di.CredentialUnboundError;
|
|
7
|
+
Object.defineProperty(exports, 'ItemsInputNormalizer', {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return require_ItemsInputNormalizer.ItemsInputNormalizer;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.NodeIterationIdFactory = require_di.NodeIterationIdFactory;
|
|
14
|
+
exports.RunFinishedAtFactory = require_di.RunFinishedAtFactory;
|
|
15
|
+
exports.SuspensionRequest = require_di.SuspensionRequest;
|
|
16
|
+
exports.branchRef = require_di.branchRef;
|
|
17
|
+
exports.nodeRef = require_di.nodeRef;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { $n as NodeActivationRequestBase, $t as RunnableNodeConfig, A as RunHaltReason, Ai as CredentialRequirement, An as BinaryBody, Ar as HttpMethod, At as JsonValue, B as WorkflowExecutionListingRepository, Bi as OAuth2ProviderFromPublicConfig, Bn as ExecutionBinaryService, Bt as NodeIterationId, C as PersistedWorkflowSnapshotNode, Ci as CredentialHealthTester, Cn as triggerNodeOutputType, Cr as TriggerTestItemsContext, Ct as Item, D as RunCurrentState, Di as CredentialMaterialSourceKind, Dr as WorkflowRunnerService, Dt as JsonNonArray, E as RunCompletionNotifier, Ei as CredentialJsonRecord, Er as WorkflowRunnerResolver, Et as JsonArray, F as RunStatus, Fi as CredentialType, Fn as BinaryStorageWriteResult, Fr as WebhookTriggerResolution, Ft as NodeErrorHandler, Gi as NodeConnectionName, Gn as HumanTaskId, Gt as NodeSchedulerDecision, H as WorkflowExecutionRepository, Hn as ExecutionContextFactory, Ht as NodeOffloadPolicy, I as RunStopCondition, Ii as CredentialTypeDefinition, In as Duration, Ir as WebhookTriggerRoutingDiagnostics, It as NodeErrorHandlerArgs, Ji as PersistedTokenId, Jn as LiveWorkflowRepository, Jt as PersistedRunPolicySnapshot, Ki as NodeId, Kn as HumanTaskSubject, Kt as PairedItemRef, L as RunSummary, Li as CredentialTypeId, Ln as EngineDeps, Lt as NodeErrorHandlerSpec, M as RunQueueEntry, Mi as CredentialSessionFactoryArgs, Mn as BinaryStorageReadResult, Mr as WebhookControlSignal, Mt as NodeActivationId, N as RunResult, Ni as CredentialSessionService, Nn as BinaryStorageStatResult, Nr as WebhookInvocationMatch, Nt as NodeConfigBase, O as RunEventPublisherDeps, Oi as CredentialOAuth2AuthDefinition, On as RetryPolicySpec, Or as WorkflowSnapshotFactory, Ot as JsonObject, P as RunStateResetRequest, Pi as CredentialSetupStatus, Pn as BinaryStorageWriteRequest, Pr as WebhookTriggerMatcher, Pt as NodeDefinition, Qn as NodeActivationRequest, Qt as RunIdFactory, R as RunTestContext, Ri as CredentialTypeRegistry, Rn as EngineHost, Rt as NodeIdRef, S as PersistedWorkflowSnapshot, Si as CredentialHealthStatus, Sn as runnableNodeOutputType, Sr as TriggerSetupStateRepository, St as ExecutionMode, T as PinnedNodeOutputsByPort, Ti as CredentialInstanceRecord, Tr as WorkflowRepository, Tt as Items, Un as HumanTaskActor, Ut as NodeOutputs, V as WorkflowExecutionPruneRepository, Vn as ExecutionContext, Vt as NodeKind, Wi as InputPortKey, Wn as HumanTaskHandle, Wt as NodeRef, Xn as NodeActivationContinuation, Xt as RunDataSnapshot, Yi as WorkflowId, Yn as MultiInputNode, Yt as RunDataFactory, Zn as NodeActivationReceipt, Zt as RunId, _ as PersistedMutableRunState, _i as CredentialAuthDefinition, _n as WorkflowStoragePolicyResolver, _r as TriggerCleanupHandle, a as ConnectionInvocationId, an as UpstreamRefPlaceholder, ar as NodeExecutionScheduler, b as PersistedRunState, bi as CredentialFieldSchema, bn as nodeRef, br as TriggerSetupContext, bt as BinaryPreviewKind, c as EngineRunCounters, cn as WorkflowErrorHandler, cr as NodeResolver, d as NodeExecutionSnapshot, dn as WorkflowGraphFactory, dr as PreparedNodeActivationDispatch, en as RunnableNodeInputJson, er as NodeActivationScheduler, f as NodeExecutionStatus, fn as WorkflowNodeConnection, fr as ResumeContext, g as PersistedMutableNodeState, gi as CredentialAdvancedSectionPresentation, gn as WorkflowStoragePolicyMode, gr as TestableTriggerNode, h as PendingResumeEntry, hi as AnyCredentialType, hn as WorkflowStoragePolicyDecisionArgs, hr as SuspensionRequest, i as ConnectionInvocationAppendArgs, in as TriggerNodeSetupState, ir as NodeExecutionRequestHandler, j as RunPruneCandidate, ji as CredentialSessionFactory, jn as BinaryStorage, jr as TriggerInstanceId, jt as MutableRunData, k as RunExecutionOptions, ki as CredentialOAuth2ScopesFromPublicConfig, kn as BinaryAttachmentCreateRequest, kr as WorkflowSnapshotResolver, kt as JsonPrimitive, l as ExecutionFrontierPlan, ln as WorkflowErrorHandlerSpec, lr as PersistedTriggerSetupState, m as PendingNodeExecution, mn as WorkflowPrunePolicySpec, mr as RunnableNodeExecuteArgs, nn as TriggerNodeConfig, nr as NodeExecutionContext, o as ConnectionInvocationRecord, on as WorkflowDefinition, or as NodeExecutionStatePublisher, p as NodeInputsByPort, pn as WorkflowPolicyRuntimeDefaults, pr as RunnableNode, qi as OutputPortKey, qn as ItemNode, qt as ParentExecutionRef, rn as TriggerNodeOutputJson, rr as NodeExecutionRequest, s as CurrentStateExecutionRequest, sn as WorkflowErrorContext, sr as NodeExecutor, tn as RunnableNodeOutputJson, tr as NodeBinaryAttachmentService, u as NodeExecutionError, un as WorkflowGraph, ur as PollingTriggerHandle, v as PersistedRunControlState, vi as CredentialBinding, vn as WorkflowStoragePolicySpec, vr as TriggerNode, vt as ActivationIdFactory, w as PersistedWorkflowTokenRegistryLike, wi as CredentialInstanceId, wn as triggerNodeSetupStateType, wr as WorkflowNodeInstanceFactory, wt as ItemBinary, x as PersistedSuspensionEntry, xi as CredentialHealth, xn as runnableNodeInputType, xr as TriggerSetupStateFor, xt as Edge, y as PersistedRunSchedulingState, yi as CredentialBindingKey, yn as branchRef, yr as TriggerRuntimeDiagnostics, yt as BinaryAttachment, z as WebhookRunResult, zi as CredentialUnboundError, zn as ExecutableTriggerNode, zt as NodeInspectorSummaryRow } from "./agentMcpTypes-DUmniLOY.cjs";
|
|
2
|
+
import "./params-DqRvku2h.cjs";
|
|
3
|
+
import { Q as RunFinishedAtFactory, X as NodeIterationIdFactory, Z as ConnectionNodeIdFactory, a as AgentConnectionNodeRole, i as AgentConnectionNodeDescriptor, n as AgentConnectionCredentialSource, o as McpServerResolver, r as AgentConnectionNodeCollector, t as ItemsInputNormalizer, y as AgentNodeConfig } from "./ItemsInputNormalizer-DLaD6rTl.cjs";
|
|
4
|
+
export { ActivationIdFactory, type AgentConnectionCredentialSource, AgentConnectionNodeCollector, type AgentConnectionNodeDescriptor, type AgentConnectionNodeRole, type AgentNodeConfig, AnyCredentialType, BinaryAttachment, BinaryAttachmentCreateRequest, BinaryBody, BinaryPreviewKind, BinaryStorage, BinaryStorageReadResult, BinaryStorageStatResult, BinaryStorageWriteRequest, BinaryStorageWriteResult, ConnectionInvocationAppendArgs, ConnectionInvocationId, ConnectionInvocationRecord, ConnectionNodeIdFactory, CredentialAdvancedSectionPresentation, CredentialAuthDefinition, CredentialBinding, CredentialBindingKey, CredentialFieldSchema, CredentialHealth, CredentialHealthStatus, CredentialHealthTester, CredentialInstanceId, CredentialInstanceRecord, CredentialJsonRecord, CredentialMaterialSourceKind, CredentialOAuth2AuthDefinition, CredentialOAuth2ScopesFromPublicConfig, CredentialRequirement, CredentialSessionFactory, CredentialSessionFactoryArgs, CredentialSessionService, CredentialSetupStatus, CredentialType, CredentialTypeDefinition, CredentialTypeId, CredentialTypeRegistry, CredentialUnboundError, CurrentStateExecutionRequest, Duration, Edge, EngineDeps, EngineHost, EngineRunCounters, ExecutableTriggerNode, ExecutionBinaryService, ExecutionContext, ExecutionContextFactory, ExecutionFrontierPlan, ExecutionMode, HttpMethod, HumanTaskActor, HumanTaskHandle, HumanTaskId, HumanTaskSubject, InputPortKey, Item, ItemBinary, ItemNode, Items, ItemsInputNormalizer, JsonArray, JsonNonArray, JsonObject, JsonPrimitive, JsonValue, LiveWorkflowRepository, type McpServerResolver, MultiInputNode, MutableRunData, NodeActivationContinuation, NodeActivationId, NodeActivationReceipt, NodeActivationRequest, NodeActivationRequestBase, NodeActivationScheduler, NodeBinaryAttachmentService, NodeConfigBase, NodeConnectionName, NodeDefinition, NodeErrorHandler, NodeErrorHandlerArgs, NodeErrorHandlerSpec, NodeExecutionContext, NodeExecutionError, NodeExecutionRequest, NodeExecutionRequestHandler, NodeExecutionScheduler, NodeExecutionSnapshot, NodeExecutionStatePublisher, NodeExecutionStatus, NodeExecutor, NodeId, NodeIdRef, NodeInputsByPort, NodeInspectorSummaryRow, NodeIterationId, NodeIterationIdFactory, NodeKind, NodeOffloadPolicy, NodeOutputs, NodeRef, NodeResolver, NodeSchedulerDecision, OAuth2ProviderFromPublicConfig, OutputPortKey, PairedItemRef, ParentExecutionRef, PendingNodeExecution, PendingResumeEntry, PersistedMutableNodeState, PersistedMutableRunState, PersistedRunControlState, PersistedRunPolicySnapshot, PersistedRunSchedulingState, PersistedRunState, PersistedSuspensionEntry, PersistedTokenId, PersistedTriggerSetupState, PersistedWorkflowSnapshot, PersistedWorkflowSnapshotNode, PersistedWorkflowTokenRegistryLike, PinnedNodeOutputsByPort, PollingTriggerHandle, PreparedNodeActivationDispatch, ResumeContext, type RetryPolicySpec, RunCompletionNotifier, RunCurrentState, RunDataFactory, RunDataSnapshot, RunEventPublisherDeps, RunExecutionOptions, RunFinishedAtFactory, RunHaltReason, RunId, RunIdFactory, RunPruneCandidate, RunQueueEntry, RunResult, RunStateResetRequest, RunStatus, RunStopCondition, RunSummary, RunTestContext, RunnableNode, RunnableNodeConfig, RunnableNodeExecuteArgs, RunnableNodeInputJson, RunnableNodeOutputJson, SuspensionRequest, TestableTriggerNode, TriggerCleanupHandle, TriggerInstanceId, TriggerNode, TriggerNodeConfig, TriggerNodeOutputJson, TriggerNodeSetupState, TriggerRuntimeDiagnostics, TriggerSetupContext, TriggerSetupStateFor, TriggerSetupStateRepository, TriggerTestItemsContext, UpstreamRefPlaceholder, WebhookControlSignal, WebhookInvocationMatch, WebhookRunResult, WebhookTriggerMatcher, WebhookTriggerResolution, WebhookTriggerRoutingDiagnostics, WorkflowDefinition, WorkflowErrorContext, WorkflowErrorHandler, WorkflowErrorHandlerSpec, WorkflowExecutionListingRepository, WorkflowExecutionPruneRepository, WorkflowExecutionRepository, WorkflowGraph, WorkflowGraphFactory, WorkflowId, WorkflowNodeConnection, WorkflowNodeInstanceFactory, WorkflowPolicyRuntimeDefaults, WorkflowPrunePolicySpec, WorkflowRepository, WorkflowRunnerResolver, WorkflowRunnerService, WorkflowSnapshotFactory, WorkflowSnapshotResolver, WorkflowStoragePolicyDecisionArgs, WorkflowStoragePolicyMode, WorkflowStoragePolicyResolver, WorkflowStoragePolicySpec, branchRef, nodeRef, runnableNodeInputType, runnableNodeOutputType, triggerNodeOutputType, triggerNodeSetupStateType };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { $a as CredentialFieldSchema, $i as TriggerSetupContext, $n as BinaryPreviewKind, $r as nodeRef, $t as PersistedRunState, Ai as NodeActivationReceipt, Ar as RunId, Bi as NodeExecutor, Br as WorkflowErrorContext, Bt as CurrentStateExecutionRequest, Ci as HumanTaskHandle, Co as InputPortKey, Cr as NodeRef, Di as LiveWorkflowRepository, Do as PersistedTokenId, Dr as PersistedRunPolicySnapshot, Ei as ItemNode, Eo as OutputPortKey, Er as ParentExecutionRef, Fi as NodeExecutionContext, Fr as TriggerNodeConfig, Gi as ResumeContext, Gr as WorkflowNodeConnection, Gt as NodeExecutionStatus, Hi as PersistedTriggerSetupState, Hr as WorkflowErrorHandlerSpec, Ht as ExecutionFrontierPlan, I as RunFinishedAtFactory, Ii as NodeExecutionRequest, Ir as TriggerNodeOutputJson, Ja as AnyCredentialType, Ji as SuspensionRequest, Jr as WorkflowStoragePolicyDecisionArgs, Jt as PendingResumeEntry, Ki as RunnableNode, Kr as WorkflowPolicyRuntimeDefaults, Kt as NodeInputsByPort, Li as NodeExecutionRequestHandler, Lr as TriggerNodeSetupState, Lt as ConnectionInvocationAppendArgs, Mi as NodeActivationRequestBase, Mr as RunnableNodeConfig, Ni as NodeActivationScheduler, Nr as RunnableNodeInputJson, Oi as MultiInputNode, Oo as WorkflowId, Or as RunDataFactory, Pi as NodeBinaryAttachmentService, Pr as RunnableNodeOutputJson, Qa as CredentialBindingKey, Qi as TriggerRuntimeDiagnostics, Qn as BinaryAttachment, Qr as branchRef, Qt as PersistedRunSchedulingState, Ri as NodeExecutionScheduler, Rr as UpstreamRefPlaceholder, Rt as ConnectionInvocationId, Si as HumanTaskActor, Sr as NodeOutputs, Ti as HumanTaskSubject, To as NodeId, Tr as PairedItemRef, Ui as PollingTriggerHandle, Ur as WorkflowGraph, Ut as NodeExecutionError, Vi as NodeResolver, Vr as WorkflowErrorHandler, Vt as EngineRunCounters, Wi as PreparedNodeActivationDispatch, Wr as WorkflowGraphFactory, Wt as NodeExecutionSnapshot, Xa as CredentialAuthDefinition, Xi as TriggerCleanupHandle, Xr as WorkflowStoragePolicyResolver, Xt as PersistedMutableRunState, Ya as CredentialAdvancedSectionPresentation, Yi as TestableTriggerNode, Yr as WorkflowStoragePolicyMode, Yt as PersistedMutableNodeState, Za as CredentialBinding, Zi as TriggerNode, Zn as ActivationIdFactory, Zr as WorkflowStoragePolicySpec, Zt as PersistedRunControlState, _i as EngineHost, _n as RunTestContext, _o as CredentialTypeRegistry, _r as NodeIdRef, a as ConnectionNodeIdFactory, aa as WorkflowRunnerResolver, an as RunCompletionNotifier, ao as CredentialJsonRecord, ar as JsonArray, bi as ExecutionContext, bn as WorkflowExecutionPruneRepository, br as NodeKind, ca as WorkflowSnapshotResolver, ci as BinaryAttachmentCreateRequest, cn as RunExecutionOptions, co as CredentialOAuth2ScopesFromPublicConfig, cr as JsonPrimitive, da as WebhookControlSignal, di as BinaryStorageReadResult, dn as RunQueueEntry, do as CredentialSessionFactoryArgs, dr as NodeActivationId, ea as TriggerSetupStateFor, ei as runnableNodeInputType, en as PersistedSuspensionEntry, eo as CredentialHealth, er as Edge, fa as WebhookInvocationMatch, fi as BinaryStorageStatResult, fn as RunResult, fo as CredentialSessionService, fr as NodeConfigBase, gi as EngineDeps, gn as RunSummary, go as CredentialTypeId, gr as NodeErrorHandlerSpec, ha as WebhookTriggerRoutingDiagnostics, hi as Duration, hn as RunStopCondition, ho as CredentialTypeDefinition, hr as NodeErrorHandlerArgs, i as NodeIterationIdFactory, ia as WorkflowRepository, in as PinnedNodeOutputsByPort, io as CredentialInstanceRecord, ir as Items, ji as NodeActivationRequest, jr as RunIdFactory, ki as NodeActivationContinuation, kr as RunDataSnapshot, la as HttpMethod, li as BinaryBody, ln as RunHaltReason, lo as CredentialRequirement, lr as JsonValue, ma as WebhookTriggerResolution, mi as BinaryStorageWriteResult, mn as RunStatus, mo as CredentialType, mr as NodeErrorHandler, na as TriggerTestItemsContext, ni as triggerNodeOutputType, nn as PersistedWorkflowSnapshotNode, no as CredentialHealthTester, nr as Item, oa as WorkflowRunnerService, on as RunCurrentState, oo as CredentialMaterialSourceKind, or as JsonNonArray, pa as WebhookTriggerMatcher, pi as BinaryStorageWriteRequest, pn as RunStateResetRequest, po as CredentialSetupStatus, pr as NodeDefinition, qi as RunnableNodeExecuteArgs, qr as WorkflowPrunePolicySpec, qt as PendingNodeExecution, ra as WorkflowNodeInstanceFactory, ri as triggerNodeSetupStateType, rn as PersistedWorkflowTokenRegistryLike, ro as CredentialInstanceId, rr as ItemBinary, sa as WorkflowSnapshotFactory, si as RetryPolicySpec, sn as RunEventPublisherDeps, so as CredentialOAuth2AuthDefinition, sr as JsonObject, ta as TriggerSetupStateRepository, ti as runnableNodeOutputType, tn as PersistedWorkflowSnapshot, to as CredentialHealthStatus, tr as ExecutionMode, ua as TriggerInstanceId, ui as BinaryStorage, un as RunPruneCandidate, uo as CredentialSessionFactory, ur as MutableRunData, vi as ExecutableTriggerNode, vn as WebhookRunResult, vo as CredentialUnboundError, vr as NodeInspectorSummaryRow, wi as HumanTaskId, wo as NodeConnectionName, wr as NodeSchedulerDecision, xi as ExecutionContextFactory, xn as WorkflowExecutionRepository, xr as NodeOffloadPolicy, yi as ExecutionBinaryService, yn as WorkflowExecutionListingRepository, yo as OAuth2ProviderFromPublicConfig, yr as NodeIterationId, zi as NodeExecutionStatePublisher, zr as WorkflowDefinition, zt as ConnectionInvocationRecord } from "./index-CSKKuK60.js";
|
|
2
|
+
import { a as AgentConnectionNodeRole, i as AgentConnectionNodeDescriptor, n as AgentConnectionCredentialSource, o as McpServerResolver, r as AgentConnectionNodeCollector, t as ItemsInputNormalizer, y as AgentNodeConfig } from "./ItemsInputNormalizer-C09a7iFP.js";
|
|
3
|
+
export { ActivationIdFactory, type AgentConnectionCredentialSource, AgentConnectionNodeCollector, type AgentConnectionNodeDescriptor, type AgentConnectionNodeRole, type AgentNodeConfig, AnyCredentialType, BinaryAttachment, BinaryAttachmentCreateRequest, BinaryBody, BinaryPreviewKind, BinaryStorage, BinaryStorageReadResult, BinaryStorageStatResult, BinaryStorageWriteRequest, BinaryStorageWriteResult, ConnectionInvocationAppendArgs, ConnectionInvocationId, ConnectionInvocationRecord, ConnectionNodeIdFactory, CredentialAdvancedSectionPresentation, CredentialAuthDefinition, CredentialBinding, CredentialBindingKey, CredentialFieldSchema, CredentialHealth, CredentialHealthStatus, CredentialHealthTester, CredentialInstanceId, CredentialInstanceRecord, CredentialJsonRecord, CredentialMaterialSourceKind, CredentialOAuth2AuthDefinition, CredentialOAuth2ScopesFromPublicConfig, CredentialRequirement, CredentialSessionFactory, CredentialSessionFactoryArgs, CredentialSessionService, CredentialSetupStatus, CredentialType, CredentialTypeDefinition, CredentialTypeId, CredentialTypeRegistry, CredentialUnboundError, CurrentStateExecutionRequest, Duration, Edge, EngineDeps, EngineHost, EngineRunCounters, ExecutableTriggerNode, ExecutionBinaryService, ExecutionContext, ExecutionContextFactory, ExecutionFrontierPlan, ExecutionMode, HttpMethod, HumanTaskActor, HumanTaskHandle, HumanTaskId, HumanTaskSubject, InputPortKey, Item, ItemBinary, ItemNode, Items, ItemsInputNormalizer, JsonArray, JsonNonArray, JsonObject, JsonPrimitive, JsonValue, LiveWorkflowRepository, type McpServerResolver, MultiInputNode, MutableRunData, NodeActivationContinuation, NodeActivationId, NodeActivationReceipt, NodeActivationRequest, NodeActivationRequestBase, NodeActivationScheduler, NodeBinaryAttachmentService, NodeConfigBase, NodeConnectionName, NodeDefinition, NodeErrorHandler, NodeErrorHandlerArgs, NodeErrorHandlerSpec, NodeExecutionContext, NodeExecutionError, NodeExecutionRequest, NodeExecutionRequestHandler, NodeExecutionScheduler, NodeExecutionSnapshot, NodeExecutionStatePublisher, NodeExecutionStatus, NodeExecutor, NodeId, NodeIdRef, NodeInputsByPort, NodeInspectorSummaryRow, NodeIterationId, NodeIterationIdFactory, NodeKind, NodeOffloadPolicy, NodeOutputs, NodeRef, NodeResolver, NodeSchedulerDecision, OAuth2ProviderFromPublicConfig, OutputPortKey, PairedItemRef, ParentExecutionRef, PendingNodeExecution, PendingResumeEntry, PersistedMutableNodeState, PersistedMutableRunState, PersistedRunControlState, PersistedRunPolicySnapshot, PersistedRunSchedulingState, PersistedRunState, PersistedSuspensionEntry, PersistedTokenId, PersistedTriggerSetupState, PersistedWorkflowSnapshot, PersistedWorkflowSnapshotNode, PersistedWorkflowTokenRegistryLike, PinnedNodeOutputsByPort, PollingTriggerHandle, PreparedNodeActivationDispatch, ResumeContext, type RetryPolicySpec, RunCompletionNotifier, RunCurrentState, RunDataFactory, RunDataSnapshot, RunEventPublisherDeps, RunExecutionOptions, RunFinishedAtFactory, RunHaltReason, RunId, RunIdFactory, RunPruneCandidate, RunQueueEntry, RunResult, RunStateResetRequest, RunStatus, RunStopCondition, RunSummary, RunTestContext, RunnableNode, RunnableNodeConfig, RunnableNodeExecuteArgs, RunnableNodeInputJson, RunnableNodeOutputJson, SuspensionRequest, TestableTriggerNode, TriggerCleanupHandle, TriggerInstanceId, TriggerNode, TriggerNodeConfig, TriggerNodeOutputJson, TriggerNodeSetupState, TriggerRuntimeDiagnostics, TriggerSetupContext, TriggerSetupStateFor, TriggerSetupStateRepository, TriggerTestItemsContext, UpstreamRefPlaceholder, WebhookControlSignal, WebhookInvocationMatch, WebhookRunResult, WebhookTriggerMatcher, WebhookTriggerResolution, WebhookTriggerRoutingDiagnostics, WorkflowDefinition, WorkflowErrorContext, WorkflowErrorHandler, WorkflowErrorHandlerSpec, WorkflowExecutionListingRepository, WorkflowExecutionPruneRepository, WorkflowExecutionRepository, WorkflowGraph, WorkflowGraphFactory, WorkflowId, WorkflowNodeConnection, WorkflowNodeInstanceFactory, WorkflowPolicyRuntimeDefaults, WorkflowPrunePolicySpec, WorkflowRepository, WorkflowRunnerResolver, WorkflowRunnerService, WorkflowSnapshotFactory, WorkflowSnapshotResolver, WorkflowStoragePolicyDecisionArgs, WorkflowStoragePolicyMode, WorkflowStoragePolicyResolver, WorkflowStoragePolicySpec, branchRef, nodeRef, runnableNodeInputType, runnableNodeOutputType, triggerNodeOutputType, triggerNodeSetupStateType };
|
package/dist/browser.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { T as ConnectionNodeIdFactory, _ as NodeIterationIdFactory, f as branchRef, g as CredentialUnboundError, h as SuspensionRequest, m as RunFinishedAtFactory, p as nodeRef, v as AgentConnectionNodeCollector } from "./di-DdsgWfVy.js";
|
|
2
|
+
import { t as ItemsInputNormalizer } from "./ItemsInputNormalizer-BhuxvZh5.js";
|
|
3
|
+
|
|
4
|
+
export { AgentConnectionNodeCollector, ConnectionNodeIdFactory, CredentialUnboundError, ItemsInputNormalizer, NodeIterationIdFactory, RunFinishedAtFactory, SuspensionRequest, branchRef, nodeRef };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/contracts/AgentBindError.ts
|
|
3
|
+
/**
|
|
4
|
+
* Thrown at agent bind time when mcpServers declarations cannot be resolved.
|
|
5
|
+
* Causes include: unknown server id, missing credential instance, insufficient scopes,
|
|
6
|
+
* and ambiguous shorthand binding (multiple credential instances match).
|
|
7
|
+
*/
|
|
8
|
+
var AgentBindError = class extends Error {
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = "AgentBindError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region src/contracts/NoOpAgentMcpIntegration.ts
|
|
17
|
+
/**
|
|
18
|
+
* No-op implementation of AgentMcpIntegration.
|
|
19
|
+
* Registered by the core engine runtime as a fallback when the host does not
|
|
20
|
+
* supply a real implementation (e.g. in unit tests or headless engine setups).
|
|
21
|
+
* Always returns an empty tool map so the agent runs with node-backed tools only.
|
|
22
|
+
*/
|
|
23
|
+
var NoOpAgentMcpIntegration = class {
|
|
24
|
+
async prepareMcpTools() {
|
|
25
|
+
return /* @__PURE__ */ new Map();
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/contracts/assertionTypes.ts
|
|
31
|
+
/**
|
|
32
|
+
* Default {@link AssertionResult.passThreshold} when authors omit it. Boolean-style assertions
|
|
33
|
+
* (assertEqual / contains / etc.) emit `score: 1` or `score: 0` so this default works for them;
|
|
34
|
+
* AI-judge assertions are expected to set their own threshold.
|
|
35
|
+
*/
|
|
36
|
+
const DEFAULT_ASSERTION_PASS_THRESHOLD = .5;
|
|
37
|
+
/**
|
|
38
|
+
* Derive whether an assertion result is considered "passing" using the score-based contract:
|
|
39
|
+
* `errored` always fails, otherwise `score >= (passThreshold ?? 0.5)`. This is the canonical
|
|
40
|
+
* derivation — UI and rollup code should call it rather than inlining the comparison so future
|
|
41
|
+
* tweaks (e.g. NaN handling) land in one place.
|
|
42
|
+
*/
|
|
43
|
+
function deriveAssertionPassed(result) {
|
|
44
|
+
if (result.errored === true) return false;
|
|
45
|
+
const threshold = result.passThreshold ?? DEFAULT_ASSERTION_PASS_THRESHOLD;
|
|
46
|
+
return result.score >= threshold;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
//#endregion
|
|
50
|
+
Object.defineProperty(exports, 'AgentBindError', {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
get: function () {
|
|
53
|
+
return AgentBindError;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
Object.defineProperty(exports, 'DEFAULT_ASSERTION_PASS_THRESHOLD', {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
get: function () {
|
|
59
|
+
return DEFAULT_ASSERTION_PASS_THRESHOLD;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(exports, 'NoOpAgentMcpIntegration', {
|
|
63
|
+
enumerable: true,
|
|
64
|
+
get: function () {
|
|
65
|
+
return NoOpAgentMcpIntegration;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
Object.defineProperty(exports, 'deriveAssertionPassed', {
|
|
69
|
+
enumerable: true,
|
|
70
|
+
get: function () {
|
|
71
|
+
return deriveAssertionPassed;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=contracts-CK0x6w_G.cjs.map
|