@codemation/core 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{CostCatalogContract-DZgcUBE4.d.cts → CostCatalogContract-DD7fQ4FF.d.cts} +2 -2
  3. package/dist/{EngineRuntimeRegistration.types-Cggm5GVY.d.cts → EngineRuntimeRegistration.types-DTV5_7Jw.d.cts} +3 -3
  4. package/dist/{EngineRuntimeRegistration.types-BQbS9_gs.d.ts → EngineRuntimeRegistration.types-Dl92Hdoi.d.ts} +2 -2
  5. package/dist/InMemoryRunDataFactory-qMiYjhCK.d.cts +202 -0
  6. package/dist/{ItemsInputNormalizer-D-MH8MBs.js → ItemsInputNormalizer-BhuxvZh5.js} +2 -2
  7. package/dist/{ItemsInputNormalizer-D-MH8MBs.js.map → ItemsInputNormalizer-BhuxvZh5.js.map} +1 -1
  8. package/dist/{ItemsInputNormalizer-_Mfcd3YU.d.ts → ItemsInputNormalizer-C09a7iFP.d.ts} +2 -2
  9. package/dist/{ItemsInputNormalizer-C_dpn76M.d.cts → ItemsInputNormalizer-DLaD6rTl.d.cts} +3 -3
  10. package/dist/{ItemsInputNormalizer-CwdOhSAK.cjs → ItemsInputNormalizer-Div-fb6a.cjs} +2 -2
  11. package/dist/{ItemsInputNormalizer-CwdOhSAK.cjs.map → ItemsInputNormalizer-Div-fb6a.cjs.map} +1 -1
  12. package/dist/{RunIntentService-BVur7x9n.d.ts → RunIntentService-BOSGwmqn.d.ts} +18 -4
  13. package/dist/{RunIntentService-CEF-sFfI.d.cts → RunIntentService-CWMMrAP4.d.cts} +18 -4
  14. package/dist/{agentMcpTypes-ZiNbNsEi.d.cts → agentMcpTypes-DUmniLOY.d.cts} +183 -4
  15. package/dist/bootstrap/index.cjs +3 -3
  16. package/dist/bootstrap/index.d.cts +63 -7
  17. package/dist/bootstrap/index.d.ts +5 -5
  18. package/dist/bootstrap/index.js +3 -3
  19. package/dist/{bootstrap-D_Yyi0wL.js → bootstrap-CKTMMNmL.js} +173 -4
  20. package/dist/bootstrap-CKTMMNmL.js.map +1 -0
  21. package/dist/{bootstrap-BxuTFTLB.cjs → bootstrap-D460dCgS.cjs} +175 -4
  22. package/dist/bootstrap-D460dCgS.cjs.map +1 -0
  23. package/dist/browser.cjs +3 -2
  24. package/dist/browser.d.cts +4 -4
  25. package/dist/browser.d.ts +3 -3
  26. package/dist/browser.js +3 -3
  27. package/dist/contracts.d.cts +5 -5
  28. package/dist/contracts.d.ts +2 -2
  29. package/dist/{di-0Wop7z1y.js → di-DdsgWfVy.js} +31 -2
  30. package/dist/di-DdsgWfVy.js.map +1 -0
  31. package/dist/{di-BlEKdoZS.cjs → di-tO6R7VJV.cjs} +36 -1
  32. package/dist/di-tO6R7VJV.cjs.map +1 -0
  33. package/dist/{executionPersistenceContracts-BgZMRsTa.d.cts → executionPersistenceContracts-DenJJK2T.d.cts} +2 -2
  34. package/dist/{index-62Ba9f7D.d.ts → index-BZDhEQ6W.d.ts} +277 -101
  35. package/dist/{index-zWGtEhrf.d.ts → index-CSKKuK60.d.ts} +441 -5
  36. package/dist/index.cjs +71 -161
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.d.cts +395 -97
  39. package/dist/index.d.ts +5 -5
  40. package/dist/index.js +56 -159
  41. package/dist/index.js.map +1 -1
  42. package/dist/{params-B5SENSzZ.d.cts → params-DqRvku2h.d.cts} +2 -2
  43. package/dist/{runtime-cxmUkk0l.js → runtime-BPZgnZ9G.js} +611 -16
  44. package/dist/runtime-BPZgnZ9G.js.map +1 -0
  45. package/dist/{runtime-DBzq5YBi.cjs → runtime-CyW9c9XM.cjs} +670 -15
  46. package/dist/runtime-CyW9c9XM.cjs.map +1 -0
  47. package/dist/testing.cjs +3 -3
  48. package/dist/testing.d.cts +3 -3
  49. package/dist/testing.d.ts +3 -3
  50. package/dist/testing.js +3 -3
  51. package/package.json +1 -1
  52. package/src/authoring/defineHumanApprovalNode.types.ts +379 -0
  53. package/src/authoring/index.ts +6 -0
  54. package/src/bootstrap/runtime/EngineRuntimeRegistrar.ts +29 -0
  55. package/src/contracts/CodemationTelemetryAttributeNames.ts +10 -0
  56. package/src/contracts/credentialTypes.ts +10 -0
  57. package/src/contracts/hitlSeamTypes.ts +34 -0
  58. package/src/contracts/humanTaskStoreTypes.ts +48 -0
  59. package/src/contracts/inboxChannelTypes.ts +58 -0
  60. package/src/contracts/index.ts +3 -0
  61. package/src/contracts/runTypes.ts +61 -3
  62. package/src/contracts/runtimeTypes.ts +112 -0
  63. package/src/credentials/CredentialMaterialProvider.types.ts +61 -0
  64. package/src/credentials/ManagedCredentialMaterialWriteError.ts +14 -0
  65. package/src/credentials/ManagedMaterialFetchError.ts +16 -0
  66. package/src/execution/ActivationEnqueueService.ts +16 -0
  67. package/src/execution/DefaultExecutionContextFactory.ts +11 -0
  68. package/src/execution/NodeExecutionSnapshotFactory.ts +7 -1
  69. package/src/execution/NodeExecutor.ts +60 -1
  70. package/src/execution/NodeExecutorFactory.ts +12 -2
  71. package/src/execution/NodeSuspensionHandler.ts +220 -0
  72. package/src/execution/PersistedRunStateTerminalBuilder.ts +5 -2
  73. package/src/execution/RunStateSemantics.ts +5 -0
  74. package/src/execution/RunSuspendedError.ts +21 -0
  75. package/src/index.ts +40 -0
  76. package/src/orchestration/Engine.ts +12 -2
  77. package/src/orchestration/EngineWaiters.ts +1 -1
  78. package/src/orchestration/NodeExecutionRequestHandlerService.ts +25 -2
  79. package/src/orchestration/RunContinuationService.ts +226 -2
  80. package/src/orchestration/TestSuiteOrchestrator.ts +5 -4
  81. package/src/runtime/RunIntentService.ts +3 -0
  82. package/src/workflow/dsl/ChainCursorResolver.ts +36 -0
  83. package/dist/InMemoryRunDataFactory-C7YItvHG.d.cts +0 -123
  84. package/dist/bootstrap-BxuTFTLB.cjs.map +0 -1
  85. package/dist/bootstrap-D_Yyi0wL.js.map +0 -1
  86. package/dist/di-0Wop7z1y.js.map +0 -1
  87. package/dist/di-BlEKdoZS.cjs.map +0 -1
  88. package/dist/runtime-DBzq5YBi.cjs.map +0 -1
  89. package/dist/runtime-cxmUkk0l.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import "reflect-metadata";
2
2
  import { DependencyContainer as Container, DependencyContainer as DependencyContainer$1, Disposable, InjectionToken as InjectionToken$1, InjectionToken as TypeToken, Lifecycle, RegistrationOptions, container as container$1, delay, inject, injectAll, injectable, instanceCachingFactory, instancePerContainerCachingFactory, predicateAwareClassFactory, registry, singleton } from "tsyringe";
3
- import { ZodType } from "zod";
3
+ import { ZodType, z } from "zod";
4
4
  import { ReadableStream } from "node:stream/web";
5
5
 
6
6
  //#region src/contracts/baseTypes.d.ts
@@ -190,6 +190,19 @@ type CredentialInstanceRecord<TPublicConfig extends CredentialJsonRecord = Crede
190
190
  setupStatus: CredentialSetupStatus;
191
191
  createdAt: string;
192
192
  updatedAt: string;
193
+ /**
194
+ * Pointer to where the credential material bytes live. For OSS / standalone
195
+ * rows this is `{source: "local", ref: instanceId}` and the bytes co-locate
196
+ * with the row in the workspace DB. For managed-mode rows this is
197
+ * `{source: "control-plane", ref: <cp_id>}` and the bytes live at CP.
198
+ *
199
+ * The seam is read through `CredentialMaterialProvider`. See
200
+ * `docs/design/credentials-oauth-unification.md` ("Material provider seam").
201
+ */
202
+ material: Readonly<{
203
+ source: "local" | "control-plane";
204
+ ref: string;
205
+ }>;
193
206
  }>;
194
207
  /**
195
208
  * Arguments passed to `CredentialType.createSession` and `CredentialType.test`.
@@ -397,6 +410,16 @@ declare class CodemationTelemetryAttributeNames {
397
410
  static readonly mcpServerId = "mcp.server_id";
398
411
  /** MCP tool name on spans created for callTool invocations. */
399
412
  static readonly mcpToolName = "mcp.tool_name";
413
+ /** Terminal node-execution status (e.g. `"hitl-approved"`, `"hitl-rejected"`) on HITL outcome spans. */
414
+ static readonly nodeExecutionStatus = "codemation.node.execution_status";
415
+ /** Populated on run-halted spans; discriminates the halt reason (e.g. `"hitl-rejected"`). */
416
+ static readonly runHaltReason = "codemation.run.halt_reason";
417
+ /** Human task ID on `hitl.task.*` span events. */
418
+ static readonly hitlTaskId = "codemation.hitl.task_id";
419
+ /** HITL channel name (e.g. `"inbox"`, `"control-plane-inbox"`) on `hitl.task.*` span events. */
420
+ static readonly hitlChannel = "codemation.hitl.channel";
421
+ /** Decision outcome (e.g. `"approved"`, `"rejected"`) on `hitl.task.decided` span events. */
422
+ static readonly hitlDecisionStatus = "codemation.hitl.decision_status";
400
423
  }
401
424
  //#endregion
402
425
  //#region src/contracts/GenAiTelemetryAttributeNames.d.ts
@@ -573,6 +596,100 @@ interface WebhookTriggerMatcher {
573
596
  }
574
597
  //#endregion
575
598
  //#region src/contracts/runtimeTypes.d.ts
599
+ /** Opaque unique identifier for a single HumanTask instance. */
600
+ type HumanTaskId = string;
601
+ /**
602
+ * Duration string — ISO 8601 duration ("PT24H") or shorthand ("24h").
603
+ * Parsed by the timeout job; stored as-is in the suspension record.
604
+ */
605
+ type Duration = string;
606
+ /**
607
+ * Minimal handle handed to the `deliver` callback so it can route to the correct
608
+ * inbox channel.
609
+ */
610
+ interface HumanTaskHandle {
611
+ readonly taskId: HumanTaskId;
612
+ readonly runId: string;
613
+ readonly nodeId: string;
614
+ readonly expiresAt: Date;
615
+ /** TODO: real signed URL; placeholder empty string for now. */
616
+ readonly resumeUrl: string;
617
+ /**
618
+ * Arbitrary JSON metadata copied from `SuspensionRequest.request.metadata` at suspension time.
619
+ * Used by the agent runtime to round-trip the `agentCheckpoint` back to the
620
+ * resumed node via `ctx.resumeContext.task.metadata`.
621
+ */
622
+ readonly metadata?: Readonly<Record<string, JsonValue>>;
623
+ }
624
+ /** Human-readable description surface shown to the reviewer. */
625
+ interface HumanTaskSubject {
626
+ readonly title: string;
627
+ readonly summary: string;
628
+ readonly attributes?: JsonValue;
629
+ }
630
+ /** Identity of the person who made a decision on the task. */
631
+ interface HumanTaskActor {
632
+ readonly actorId: string;
633
+ readonly displayName?: string;
634
+ }
635
+ /**
636
+ * Resume context injected into `NodeExecutionContext` when the engine re-activates
637
+ * a previously suspended node. `defineHumanApprovalNode` wraps this with parsed
638
+ * `TDecision`; at the engine layer `decision.value` is `unknown`.
639
+ */
640
+ interface ResumeContext {
641
+ readonly decision: Readonly<{
642
+ kind: "decided";
643
+ value: unknown;
644
+ actor: HumanTaskActor;
645
+ decidedAt: Date;
646
+ }> | Readonly<{
647
+ kind: "timed_out";
648
+ at: Date;
649
+ }> | Readonly<{
650
+ kind: "auto_accepted";
651
+ at: Date;
652
+ }>;
653
+ readonly delivery: JsonValue;
654
+ readonly task: HumanTaskHandle;
655
+ }
656
+ /**
657
+ * Thrown by a node's `execute()` to request durable suspension of the current item.
658
+ * The engine catches this, persists the suspension entry, calls `deliver`, and
659
+ * continues to the next item (per-item semantics).
660
+ *
661
+ * @example
662
+ * ```ts
663
+ * throw new SuspensionRequest({
664
+ * decisionSchema: z.object({ approved: z.boolean() }),
665
+ * timeout: "PT24H",
666
+ * onTimeout: "halt",
667
+ * subject: { title: "Approve invoice", summary: "Invoice #1234 needs approval" },
668
+ * deliver: async (handle) => {
669
+ * await notifySlack(handle);
670
+ * return { channel: "slack", ts: "..." };
671
+ * },
672
+ * });
673
+ * ```
674
+ */
675
+ declare class SuspensionRequest<TDecision = unknown, TDelivery extends JsonValue = JsonValue> extends Error {
676
+ readonly request: Readonly<{
677
+ decisionSchema: ZodType<TDecision>;
678
+ timeout: Duration;
679
+ onTimeout: "halt" | "auto-accept";
680
+ subject: HumanTaskSubject;
681
+ metadata?: Readonly<Record<string, JsonValue>>;
682
+ deliver: (handle: HumanTaskHandle) => Promise<TDelivery>;
683
+ }>;
684
+ constructor(request: Readonly<{
685
+ decisionSchema: ZodType<TDecision>;
686
+ timeout: Duration;
687
+ onTimeout: "halt" | "auto-accept";
688
+ subject: HumanTaskSubject;
689
+ metadata?: Readonly<Record<string, JsonValue>>;
690
+ deliver: (handle: HumanTaskHandle) => Promise<TDelivery>;
691
+ }>);
692
+ }
576
693
  interface WorkflowRunnerService {
577
694
  runById(args: {
578
695
  workflowId: WorkflowId;
@@ -706,6 +823,14 @@ interface ExecutionContext {
706
823
  * Collections registered in the codemation config, keyed by collection name.
707
824
  */
708
825
  readonly collections?: CollectionsContext;
826
+ /**
827
+ * Resolve a DI token from the host container.
828
+ * Allows nodes to reach host-side services (e.g. `InboxChannelResolverToken`)
829
+ * without importing host code. Wired by `DefaultExecutionContextFactory`; throws
830
+ * a clear error when no resolver is configured (e.g. in unit tests that don't
831
+ * set up the full container).
832
+ */
833
+ resolve<T>(token: TypeToken<T>): T;
709
834
  }
710
835
  interface ExecutionContextFactory {
711
836
  create(args: {
@@ -729,6 +854,11 @@ interface NodeExecutionContext<TConfig extends NodeConfigBase = NodeConfigBase>
729
854
  config: TConfig;
730
855
  telemetry: NodeExecutionTelemetry;
731
856
  binary: NodeBinaryAttachmentService;
857
+ /**
858
+ * Present when this node activation is a HITL resume.
859
+ * The node checks `ctx.resumeContext !== undefined` and takes the resume branch.
860
+ */
861
+ resumeContext?: ResumeContext;
732
862
  }
733
863
  interface PollingTriggerHandle {
734
864
  /**
@@ -1635,7 +1765,7 @@ interface RunQueueEntry {
1635
1765
  received: Readonly<Record<InputPortKey, Items>>;
1636
1766
  }>;
1637
1767
  }
1638
- type NodeExecutionStatus = "pending" | "queued" | "running" | "completed" | "failed" | "skipped";
1768
+ type NodeExecutionStatus = "pending" | "queued" | "running" | "completed" | "failed" | "skipped" | "hitl-approved" | "hitl-rejected" | "hitl-timeout" | "hitl-auto-accepted" | "hitl-cancelled";
1639
1769
  interface NodeExecutionError {
1640
1770
  message: string;
1641
1771
  name?: string;
@@ -1743,7 +1873,9 @@ interface ExecutionFrontierPlan {
1743
1873
  clearedNodeIds: ReadonlyArray<NodeId>;
1744
1874
  preservedPinnedNodeIds: ReadonlyArray<NodeId>;
1745
1875
  }
1746
- type RunStatus = "running" | "pending" | "completed" | "failed";
1876
+ type RunStatus = "running" | "pending" | "completed" | "failed" | "suspended" | "halted";
1877
+ /** Reason a run transitioned to {@link RunStatus} `"halted"`. */
1878
+ type RunHaltReason = "hitl-rejected" | "hitl-timeout" | "hitl-cancelled";
1747
1879
  interface RunSummary {
1748
1880
  runId: RunId;
1749
1881
  workflowId: WorkflowId;
@@ -1777,6 +1909,35 @@ interface PersistedRunSchedulingState {
1777
1909
  pending?: PendingNodeExecution;
1778
1910
  queue: RunQueueEntry[];
1779
1911
  }
1912
+ /** One persisted suspension entry per suspended item. */
1913
+ interface PersistedSuspensionEntry {
1914
+ /** Opaque task identifier (UUID v4). */
1915
+ readonly taskId: string;
1916
+ readonly nodeId: NodeId;
1917
+ readonly activationId: NodeActivationId;
1918
+ readonly itemIndex: number;
1919
+ /** SHA-256 hex digest of the decision schema JSON (for schema-drift detection). */
1920
+ readonly decisionSchemaHash: string;
1921
+ /** Serialized return value from `SuspensionRequest.deliver` (stored on the HumanTask row). */
1922
+ readonly deliveryRef: JsonValue;
1923
+ /** ISO timestamp when the task expires. */
1924
+ readonly timeoutAt: string;
1925
+ readonly onTimeout: "halt" | "auto-accept";
1926
+ }
1927
+ /**
1928
+ * When a node is re-activated after suspension, the engine writes the resume context here
1929
+ * so `NodeExecutionRequestHandlerService` can splice `resumeContext` into ctx.
1930
+ * Cleared once the re-activation is consumed.
1931
+ */
1932
+ interface PendingResumeEntry {
1933
+ readonly activationId: NodeActivationId;
1934
+ readonly nodeId: NodeId;
1935
+ /**
1936
+ * Typed as `unknown` here to avoid a circular import between runTypes ↔ runtimeTypes.
1937
+ * `NodeExecutionRequestHandlerService` casts this to `ResumeContext` from runtimeTypes.
1938
+ */
1939
+ readonly resumeContext: unknown;
1940
+ }
1780
1941
  interface PersistedRunState {
1781
1942
  runId: RunId;
1782
1943
  workflowId: WorkflowId;
@@ -1795,12 +1956,24 @@ interface PersistedRunState {
1795
1956
  /** Successful node completions so far (for activation budget). */
1796
1957
  engineCounters?: EngineRunCounters;
1797
1958
  status: RunStatus;
1959
+ /** Populated when `status === "halted"` to discriminate why the run was halted. */
1960
+ reason?: RunHaltReason;
1798
1961
  pending?: PendingNodeExecution;
1799
1962
  queue: RunQueueEntry[];
1800
1963
  outputsByNode: Record<NodeId, NodeOutputs>;
1801
1964
  nodeSnapshotsByNodeId: Record<NodeId, NodeExecutionSnapshot>;
1802
1965
  /** Append-only history of connection invocations (LLM/tool) nested under owning nodes. */
1803
1966
  connectionInvocations?: ReadonlyArray<ConnectionInvocationRecord>;
1967
+ /**
1968
+ * One entry per outstanding HITL suspension (per-item).
1969
+ * Present and non-empty iff `status === "suspended"`.
1970
+ */
1971
+ suspension?: ReadonlyArray<PersistedSuspensionEntry>;
1972
+ /**
1973
+ * Written by `resumeRun()` so `NodeExecutionRequestHandlerService` can splice `resumeContext`
1974
+ * into the ctx when re-executing the suspended node. Cleared once consumed.
1975
+ */
1976
+ pendingResume?: PendingResumeEntry;
1804
1977
  }
1805
1978
  interface WorkflowExecutionRepository {
1806
1979
  createRun(args: {
@@ -1860,6 +2033,12 @@ type RunResult = {
1860
2033
  error: {
1861
2034
  message: string;
1862
2035
  };
2036
+ } | {
2037
+ runId: RunId;
2038
+ workflowId: WorkflowId;
2039
+ startedAt: string;
2040
+ status: "halted";
2041
+ reason: RunHaltReason;
1863
2042
  };
1864
2043
  type WebhookRunResult = Readonly<{
1865
2044
  runId: RunId;
@@ -2367,6 +2546,244 @@ declare class RunFinishedAtFactory {
2367
2546
  static resolveIso(state: RunFinishedAtSource): string | undefined;
2368
2547
  }
2369
2548
  //#endregion
2549
+ //#region src/authoring/defineNode.types.d.ts
2550
+ type MaybePromise<TValue> = TValue | Promise<TValue>;
2551
+ type ResolvableCredentialType = AnyCredentialType | CredentialTypeId;
2552
+ type SessionForCredentialType<TCredential extends ResolvableCredentialType> = TCredential extends AnyCredentialType ? Awaited<ReturnType<TCredential["createSession"]>> : unknown;
2553
+ type DefinedNodeCredentialBinding = ResolvableCredentialType | Readonly<{
2554
+ readonly type: ResolvableCredentialType | ReadonlyArray<ResolvableCredentialType>;
2555
+ readonly label?: string;
2556
+ readonly optional?: true;
2557
+ readonly helpText?: string;
2558
+ readonly helpUrl?: string;
2559
+ }>;
2560
+ type DefinedNodeCredentialBindings = Readonly<Record<string, DefinedNodeCredentialBinding>>;
2561
+ type SessionForBinding<TBinding extends DefinedNodeCredentialBinding> = TBinding extends Readonly<{
2562
+ type: infer TType;
2563
+ }> ? TType extends ReadonlyArray<infer TEntry> ? SessionForCredentialType<TEntry & ResolvableCredentialType> : SessionForCredentialType<TType & ResolvableCredentialType> : SessionForCredentialType<TBinding & ResolvableCredentialType>;
2564
+ type DefinedNodeCredentialAccessors<TBindings extends DefinedNodeCredentialBindings | undefined> = TBindings extends DefinedNodeCredentialBindings ? Readonly<{ [TKey in keyof TBindings]: () => Promise<SessionForBinding<TBindings[TKey]>> }> : Readonly<Record<string, never>>;
2565
+ interface DefinedNodeRunContext<TConfig extends CredentialJsonRecord, TBindings extends DefinedNodeCredentialBindings | undefined> {
2566
+ readonly config: TConfig;
2567
+ readonly credentials: DefinedNodeCredentialAccessors<TBindings>;
2568
+ readonly execution: NodeExecutionContext<RunnableNodeConfig<TConfig, unknown>>;
2569
+ }
2570
+ /**
2571
+ * Arguments for {@link defineNode} `execute` (engine `ctx` matches {@link RunnableNode.execute};
2572
+ * the second callback parameter adds {@link DefinedNodeRunContext} for credential accessors).
2573
+ */
2574
+ type DefineNodeExecuteArgs<TConfig extends CredentialJsonRecord, TInputJson$1> = Readonly<{
2575
+ input: TInputJson$1;
2576
+ item: Item;
2577
+ itemIndex: number;
2578
+ items: Items;
2579
+ ctx: NodeExecutionContext<RunnableNodeConfig<TInputJson$1, unknown> & Readonly<{
2580
+ config: TConfig;
2581
+ }>>;
2582
+ }>;
2583
+ type DefinedNodeConfigInput<TConfigResolved extends CredentialJsonRecord, TItemJson> = ParamDeep<TConfigResolved, TItemJson>;
2584
+ interface DefinedNode<TKey$1 extends string, TConfig extends CredentialJsonRecord, TInputJson$1, TOutputJson$1, _TBindings extends DefinedNodeCredentialBindings | undefined = undefined> {
2585
+ readonly kind: "defined-node";
2586
+ readonly key: TKey$1;
2587
+ readonly title: string;
2588
+ readonly description?: string;
2589
+ create<TConfigItemJson = TInputJson$1>(config: DefinedNodeConfigInput<TConfig, TConfigItemJson>, name?: string, id?: string): RunnableNodeConfig<TInputJson$1, TOutputJson$1>;
2590
+ register(context: {
2591
+ registerNode<TValue>(token: TypeToken<TValue>, implementation?: TypeToken<TValue>): void;
2592
+ }): void;
2593
+ }
2594
+ /**
2595
+ * Plugin / DSL-friendly node: per-item `execute` with optional {@link RunnableNodeConfig.inputSchema}.
2596
+ */
2597
+ interface DefineNodeOptions<TKey$1 extends string, TConfig extends CredentialJsonRecord, TInputJson$1, TOutputJson$1, TBindings extends DefinedNodeCredentialBindings | undefined = undefined> {
2598
+ readonly key: TKey$1;
2599
+ readonly title: string;
2600
+ readonly description?: string;
2601
+ /**
2602
+ * Canvas icon for this node (same contract as `NodeConfigBase.icon` on runnable configs).
2603
+ * The Next host resolves Lucide (`lucide:…`), built-in SVGs (`builtin:…`), Simple Icons (`si:…`), and image URLs (`https:`, `data:`, `/…`).
2604
+ */
2605
+ readonly icon?: string;
2606
+ /** Default values / form hints for **static** node configuration (credentials, retry, IDs), not per-item payload. */
2607
+ readonly input?: Readonly<Record<keyof TConfig & string, unknown>>;
2608
+ readonly configSchema?: z.ZodType<TConfig>;
2609
+ readonly credentials?: TBindings;
2610
+ /**
2611
+ * Validates **`input`** (engine also accepts `inputSchema` on the node class).
2612
+ */
2613
+ readonly inputSchema?: ZodType<TInputJson$1>;
2614
+ /** Preserve inbound `item.binary` when `execute` returns plain JSON or item-shaped results without `binary`. */
2615
+ readonly keepBinaries?: boolean;
2616
+ /**
2617
+ * Static configuration summary surfaced in the workflow inspector — see
2618
+ * {@link import("../contracts/workflowTypes").NodeConfigBase.inspectorSummary}.
2619
+ *
2620
+ * Receives the static config; returns 2–6 short label/value pairs (or `undefined` to skip).
2621
+ */
2622
+ readonly inspectorSummary?: (args: Readonly<{
2623
+ config: TConfig;
2624
+ }>) => ReadonlyArray<NodeInspectorSummaryRow> | undefined;
2625
+ execute(args: DefineNodeExecuteArgs<TConfig, TInputJson$1>, context: DefinedNodeRunContext<TConfig, TBindings>): MaybePromise<TOutputJson$1>;
2626
+ }
2627
+ /**
2628
+ * Batch-oriented defined node: `run` receives all item JSON once (last item in activation); emits one output per input row.
2629
+ */
2630
+ interface DefineBatchNodeOptions<TKey$1 extends string, TConfig extends CredentialJsonRecord, TInputJson$1, TOutputJson$1, TBindings extends DefinedNodeCredentialBindings | undefined = undefined> {
2631
+ readonly key: TKey$1;
2632
+ readonly title: string;
2633
+ readonly description?: string;
2634
+ readonly icon?: string;
2635
+ readonly input?: Readonly<Record<keyof TConfig & string, unknown>>;
2636
+ readonly configSchema?: z.ZodType<TConfig>;
2637
+ readonly credentials?: TBindings;
2638
+ readonly inspectorSummary?: (args: Readonly<{
2639
+ config: TConfig;
2640
+ }>) => ReadonlyArray<NodeInspectorSummaryRow> | undefined;
2641
+ run(items: ReadonlyArray<TInputJson$1>, context: DefinedNodeRunContext<TConfig, TBindings>): MaybePromise<ReadonlyArray<TOutputJson$1>>;
2642
+ }
2643
+ declare function defineNode<TKey$1 extends string, TConfig extends CredentialJsonRecord, TInputJson$1, TOutputJson$1, TBindings extends DefinedNodeCredentialBindings | undefined = undefined>(options: DefineNodeOptions<TKey$1, TConfig, TInputJson$1, TOutputJson$1, TBindings>): DefinedNode<TKey$1, TConfig, TInputJson$1, TOutputJson$1, TBindings>;
2644
+ declare function defineBatchNode<TKey$1 extends string, TConfig extends CredentialJsonRecord, TInputJson$1, TOutputJson$1, TBindings extends DefinedNodeCredentialBindings | undefined = undefined>(options: DefineBatchNodeOptions<TKey$1, TConfig, TInputJson$1, TOutputJson$1, TBindings>): DefinedNode<TKey$1, TConfig, TInputJson$1, TOutputJson$1, TBindings>;
2645
+ //#endregion
2646
+ //#region src/authoring/defineHumanApprovalNode.types.d.ts
2647
+ /**
2648
+ * Decision shape merged into `item.json` after a HITL approval task resolves.
2649
+ *
2650
+ * - `"approved"` / `"rejected"` — from a human decision (uses `approvedPredicate`).
2651
+ * - `"timed-out"` — timeout fired with `onTimeout: "halt"`.
2652
+ * - `"auto-accepted"` — timeout fired with `onTimeout: "auto-accept"`.
2653
+ */
2654
+ interface HumanApprovalDecisionResult {
2655
+ readonly status: "approved" | "rejected" | "timed-out" | "auto-accepted";
2656
+ /** Identity of the person who decided; absent for automated outcomes. */
2657
+ readonly actor?: HumanTaskActor;
2658
+ /** ISO 8601 timestamp of the decision. */
2659
+ readonly decidedAt?: Date;
2660
+ /** Optional free-text note from the reviewer. */
2661
+ readonly note?: string;
2662
+ /**
2663
+ * Full raw decision payload (only present for `"approved"` / `"rejected"`).
2664
+ * Shape is determined by the channel's `decisionSchema`.
2665
+ */
2666
+ readonly payload?: Record<string, unknown>;
2667
+ }
2668
+ /**
2669
+ * Output item shape emitted by a `defineHumanApprovalNode`-based node.
2670
+ * Original `item.json` fields are preserved and `decision` is merged in.
2671
+ * If the input `item.json` already contained a `decision` key it is **overwritten**.
2672
+ */
2673
+ type HumanApprovalOutputJson<TInputJson$1 extends Record<string, unknown>> = TInputJson$1 & {
2674
+ readonly decision: HumanApprovalDecisionResult;
2675
+ };
2676
+ /**
2677
+ * Extends {@link DefinedNode} with the `humanApprovalToolBehavior` metadata marker.
2678
+ * Story 10 reads this field when attaching the node as an agent tool.
2679
+ */
2680
+ interface DefinedHumanApprovalNode<TKey$1 extends string, TConfig extends CredentialJsonRecord, TInputJson$1 extends Record<string, unknown>, TBindings extends DefinedNodeCredentialBindings | undefined = undefined> extends DefinedNode<TKey$1, TConfig, TInputJson$1, HumanApprovalOutputJson<TInputJson$1>, TBindings> {
2681
+ /**
2682
+ * Behavior hint consumed by the agent runtime (story 10) when this node is attached as a tool.
2683
+ * `"return"` (default) — return the rejection to the agent as a tool result.
2684
+ * `"halt"` — halt the agent run on rejection.
2685
+ *
2686
+ * Standalone DSL usage ignores this field.
2687
+ */
2688
+ readonly humanApprovalToolBehavior: {
2689
+ onRejected: "return" | "halt";
2690
+ };
2691
+ }
2692
+ /**
2693
+ * Returns `true` when `node` was created by {@link defineHumanApprovalNode}.
2694
+ * Uses the `humanApprovalToolBehavior` typed field as the discriminant.
2695
+ */
2696
+ declare function isHumanApprovalNode(node: unknown): node is DefinedHumanApprovalNode<string, Record<string, unknown>, Record<string, unknown>, undefined>;
2697
+ /**
2698
+ * Authoring helper that compiles a HITL approval channel down to a regular
2699
+ * {@link defineNode}-backed node with `SuspensionRequest` semantics.
2700
+ *
2701
+ * **Fast-forward decision semantics:**
2702
+ * - On the first `execute` call (no `ctx.resumeContext`): throws a `SuspensionRequest`
2703
+ * that calls the author's `deliver`. The engine persists the suspension and continues.
2704
+ * - On resume (`ctx.resumeContext` set): calls `onDecision`/`onTimeout` as appropriate,
2705
+ * merges a `decision` key into `item.json`, and returns an item with the original
2706
+ * `binary` map passed by reference (no copy).
2707
+ *
2708
+ * **Output shape per item:**
2709
+ * ```ts
2710
+ * // Input: { json: { invoiceId: 42 }, binary?: {...} }
2711
+ * // Output: { json: { invoiceId: 42, decision: { status: "approved", actor, decidedAt } }, binary: <unchanged> }
2712
+ * ```
2713
+ * If `item.json` already has a `decision` key it is **overwritten**. Namespace as
2714
+ * needed if your schema reserves that key for another purpose.
2715
+ *
2716
+ * **Predicate persistence:**
2717
+ * The `approvedPredicate` function is NOT serialized to the suspension record (except
2718
+ * as an audit-only string via `toString()`). On resume, the workflow definition is
2719
+ * reloaded from code at process start and the predicate closure is rebuilt naturally.
2720
+ * If a deploy ships a changed predicate between suspend and resume, the *new* predicate
2721
+ * runs — document this in your runbook when the predicate carries business logic that
2722
+ * may change across deploys.
2723
+ *
2724
+ * @example
2725
+ * ```ts
2726
+ * export const slackApprovalNode = defineHumanApprovalNode({
2727
+ * key: "my-plugin.slackApproval",
2728
+ * title: "Slack Approval",
2729
+ * channel: "slack",
2730
+ * configSchema: z.object({ channel: z.string(), message: z.string() }),
2731
+ * decisionSchema: z.object({ approved: z.boolean(), note: z.string().optional() }),
2732
+ *
2733
+ * async deliver({ task, config, item }, ctx) {
2734
+ * const ts = await postSlackMessage(config.channel, `Approve? <${task.resumeUrl}>`);
2735
+ * return { channel: config.channel, ts };
2736
+ * },
2737
+ *
2738
+ * async onDecision({ decision, actor, delivery }, ctx) {
2739
+ * await updateSlackMessage(delivery.channel, delivery.ts, decision.approved ? "✅" : "❌");
2740
+ * },
2741
+ * });
2742
+ * ```
2743
+ */
2744
+ declare function defineHumanApprovalNode<TKey$1 extends string, TConfig extends CredentialJsonRecord, TInputJson$1 extends Record<string, unknown>, TDecision extends Record<string, unknown>, TDelivery extends JsonValue, TBindings extends DefinedNodeCredentialBindings | undefined = undefined>(opts: {
2745
+ key: TKey$1;
2746
+ title: string;
2747
+ description?: string;
2748
+ icon?: string;
2749
+ channel: string;
2750
+ configSchema: ZodType<TConfig>;
2751
+ inputSchema?: ZodType<TInputJson$1>;
2752
+ decisionSchema: ZodType<TDecision>;
2753
+ credentials?: TBindings;
2754
+ /**
2755
+ * Custom predicate that decides whether a decision counts as "approved".
2756
+ * When omitted, the helper checks if `decisionSchema` is a Zod object with an
2757
+ * `approved: boolean` field; if so it uses `decision.approved === true`.
2758
+ * If neither holds, `defineHumanApprovalNode` throws at **definition time** (not runtime).
2759
+ */
2760
+ approvedPredicate?: (decision: TDecision) => boolean;
2761
+ /** Default suspension timeout. Defaults to `"24h"`. */
2762
+ defaultTimeout?: Duration;
2763
+ /** What to do when the task times out. Defaults to `"halt"`. */
2764
+ defaultOnTimeout?: "halt" | "auto-accept";
2765
+ inspectorSummary?: (config: TConfig) => ReadonlyArray<NodeInspectorSummaryRow> | undefined;
2766
+ deliver: (args: {
2767
+ task: HumanTaskHandle;
2768
+ config: TConfig;
2769
+ input: TInputJson$1;
2770
+ item: Item;
2771
+ }, ctx: ExecutionContext) => Promise<TDelivery>;
2772
+ onDecision?: (args: {
2773
+ decision: TDecision;
2774
+ actor: HumanTaskActor;
2775
+ task: HumanTaskHandle;
2776
+ delivery: TDelivery;
2777
+ item: Item;
2778
+ }, ctx: ExecutionContext) => Promise<void>;
2779
+ onTimeout?: (args: {
2780
+ task: HumanTaskHandle;
2781
+ delivery: TDelivery;
2782
+ item: Item;
2783
+ policy: "halt" | "auto-accept";
2784
+ }, ctx: ExecutionContext) => Promise<void>;
2785
+ }): DefinedHumanApprovalNode<TKey$1, TConfig, TInputJson$1, TBindings>;
2786
+ //#endregion
2370
2787
  //#region src/workflow/dsl/workflowBuilderTypes.d.ts
2371
2788
  type AnyRunnableNodeConfig = RunnableNodeConfig<any, any>;
2372
2789
  type AnyTriggerNodeConfig = TriggerNodeConfig<any>;
@@ -2412,6 +2829,25 @@ declare class ChainCursor<TCurrentJson> {
2412
2829
  thenIntoInputHints<TOutputJson$1, TConfig extends RunnableNodeConfig<any, TOutputJson$1>>(config: TConfig): ChainCursor<RunnableNodeOutputJson<TConfig>>;
2413
2830
  readonly when: ChainCursorWhenOverloads<TCurrentJson>;
2414
2831
  route<TNextJson$1>(branches: Readonly<Record<OutputPortKey, (branch: ChainCursor<TCurrentJson>) => ChainCursor<TNextJson$1> | undefined>>): ChainCursor<TNextJson$1>;
2832
+ /**
2833
+ * Chainable shorthand for `.then(node.create(config, metadata?.name, metadata?.nodeId))`.
2834
+ *
2835
+ * Signals to readers that this step suspends the run and waits for a human decision.
2836
+ * Throws at workflow-build time if `node` was not created via `defineHumanApprovalNode`.
2837
+ *
2838
+ * @example
2839
+ * ```ts
2840
+ * workflow
2841
+ * .trigger(...)
2842
+ * .humanApproval(inboxApproval, { title: "Approve?", body: "...", priority: "normal" })
2843
+ * .then(nextStep.create(...))
2844
+ * .build();
2845
+ * ```
2846
+ */
2847
+ humanApproval<TKey$1 extends string, TConfig extends Record<string, unknown>, TBindings extends DefinedNodeCredentialBindings | undefined = undefined>(node: DefinedHumanApprovalNode<TKey$1, TConfig, TCurrentJson & Record<string, unknown>, TBindings>, config: TConfig, metadata?: {
2848
+ name?: string;
2849
+ nodeId?: string;
2850
+ }): ChainCursor<HumanApprovalOutputJson<TCurrentJson & Record<string, unknown>>>;
2415
2851
  build(): WorkflowDefinition;
2416
2852
  private resolveSharedInputPortHint;
2417
2853
  }
@@ -2554,5 +2990,5 @@ declare class DefaultWorkflowGraphFactory implements WorkflowGraphFactory {
2554
2990
  create(def: WorkflowDefinition): WorkflowGraph;
2555
2991
  }
2556
2992
  //#endregion
2557
- export { CostCatalogEntry as $, NodeId as $a, TelemetryChildSpanStart as $i, NodeInspectorSummaryRow as $n, ExecutionBinaryService as $r, WebhookRunResult as $t, isUnbrandedPortsEmissionShape as A, CredentialHealthTester as Aa, TriggerTestItemsContext as Ai, TestTriggerNodeConfig as An, WorkflowStoragePolicyMode as Ar, NodeInputsByPort as At, PersistedExecutionInstanceRecord as B, CredentialSessionService as Ba, WebhookInvocationMatch as Bi, JsonArray as Bn, FixedRetryPolicySpec as Br, PinnedNodeOutputsByPort as Bt, ExpRetryPolicy as C, CredentialAdvancedSectionPresentation as Ca, TestableTriggerNode as Ci, EngineExecutionLimitsPolicyConfig as Cn, WorkflowErrorHandlerSpec as Cr, ConnectionInvocationRecord as Ct, PortsEmission as D, CredentialFieldSchema as Da, TriggerSetupContext as Di, TestCaseRunStatus as Dn, WorkflowPolicyRuntimeDefaults as Dr, NodeExecutionError as Dt, getOriginIndexFromItem as E, CredentialBindingKey as Ea, TriggerRuntimeDiagnostics as Ei, RunEventSubscription as En, WorkflowNodeConnection as Er, ExecutionFrontierPlan as Et, ExecutionInstanceDto as F, CredentialOAuth2AuthDefinition as Fa, WorkflowSnapshotFactory as Fi, Edge as Fn, runnableNodeInputType as Fr, PersistedRunSchedulingState as Ft, RunRevision as G, CredentialTypeRegistry as Ga, WorkflowActivationPolicy as Gi, MutableRunData as Gn, BinaryStorage as Gr, RunPruneCandidate as Gt, PersistedRunWorkItemKind as H, CredentialType as Ha, WebhookTriggerResolution as Hi, JsonObject as Hn, RetryPolicySpec as Hr, RunCurrentState as Ht, ExecutionInstanceId as I, CredentialOAuth2ScopesFromPublicConfig as Ia, WorkflowSnapshotResolver as Ii, ExecutionMode as In, runnableNodeOutputType as Ir, PersistedRunState as It, WorkItemId as J, NoOpPollingTriggerLogger as Ja, NodeExecutionTelemetry as Ji, NodeDefinition as Jn, BinaryStorageWriteRequest as Jr, RunStateResetRequest as Jt, RunSlotProjectionState as K, CredentialUnboundError as Ka, ExecutionTelemetry as Ki, NodeActivationId as Kn, BinaryStorageReadResult as Kr, RunQueueEntry as Kt, ExecutionPayloadPolicyFields as L, CredentialRequirement as La, HttpMethod as Li, Item as Ln, triggerNodeOutputType as Lr, PersistedWorkflowSnapshot as Lt, McpServerTransport as M, CredentialInstanceRecord as Ma, WorkflowRepository as Mi, ActivationIdFactory as Mn, WorkflowStoragePolicySpec as Mr, PersistedMutableNodeState as Mt, BatchId as N, CredentialJsonRecord as Na, WorkflowRunnerResolver as Ni, BinaryAttachment as Nn, branchRef as Nr, PersistedMutableRunState as Nt, emitPorts as O, CredentialHealth as Oa, TriggerSetupStateFor as Oi, TestSuiteRunStatus as On, WorkflowPrunePolicySpec as Or, NodeExecutionSnapshot as Ot, ConnectionInvocationKind as P, CredentialMaterialSourceKind as Pa, WorkflowRunnerService as Pi, BinaryPreviewKind as Pn, nodeRef as Pr, PersistedRunControlState as Pt, CostCatalog as Q, NodeConnectionName as Qa, TelemetryAttributes as Qi, NodeIdRef as Qn, ExecutableTriggerNode as Qr, RunTestContext as Qt, PayloadStorageKind as R, CredentialSessionFactory as Ra, TriggerInstanceId as Ri, ItemBinary as Rn, triggerNodeSetupStateType as Rr, PersistedWorkflowSnapshotNode as Rt, NoOpCostTrackingTelemetry as S, AnyCredentialType as Sa, RunnableNodeExecuteArgs as Si, EngineExecutionLimitsPolicy as Sn, WorkflowErrorHandler as Sr, ConnectionInvocationId as St, NoRetryPolicy as T, CredentialBinding as Ta, TriggerNode as Ti, RunEventBus as Tn, WorkflowGraphFactory as Tr, EngineRunCounters as Tt, PersistedRunWorkItemRecord as U, CredentialTypeDefinition as Ua, WebhookTriggerRoutingDiagnostics as Ui, JsonPrimitive as Un, BinaryAttachmentCreateRequest as Ur, RunEventPublisherDeps as Ut, PersistedRunSlotProjectionRecord as V, CredentialSetupStatus as Va, WebhookTriggerMatcher as Vi, JsonNonArray as Vn, NoneRetryPolicySpec as Vr, RunCompletionNotifier as Vt, RunIterationDto as W, CredentialTypeId as Wa, AllWorkflowsActiveWorkflowActivationPolicy as Wi, JsonValue as Wn, BinaryBody as Wr, RunExecutionOptions as Wt, WorkflowDetailSelectionState as X, PollingTriggerDedupWindow as Xa, TelemetryArtifactReference as Xi, NodeErrorHandlerArgs as Xn, EngineDeps as Xr, RunStopCondition as Xt, WorkItemStatus as Y, PollingTriggerLogger as Ya, TelemetryArtifactAttachment as Yi, NodeErrorHandler as Yn, BinaryStorageWriteResult as Yr, RunStatus as Yt, WorkflowRunDetailDto as Z, InputPortKey as Za, TelemetryAttributePrimitive as Zi, NodeErrorHandlerSpec as Zn, EngineHost as Zr, RunSummary as Zt, BranchStepsArg as _, CostTrackingTelemetryFactory as _a, NodeResolver as _i, predicateAwareClassFactory as _n, TriggerNodeOutputJson as _r, AgentBindError as _t, ConnectionNodeIdFactory as a, CodemationTelemetryMetricNames as aa, NodeActivationContinuation as ai, Disposable as an, NodeSchedulerDecision as ar, ItemExprCallback as at, RunFinishedAtFactory as b, CollectionStore as ba, PreparedNodeActivationDispatch as bi, CoreTokens as bn, WorkflowDefinition as br, NeedsReconsentEvent as bt, WorkflowDefinitionError as c, NoOpExecutionTelemetryFactory as ca, NodeActivationRequestBase as ci, RegistrationOptions as cn, PersistedRunPolicySnapshot as cr, isItemExpr as ct, WhenBuilder as d, NoOpTelemetrySpanScope as da, NodeExecutionContext as di, delay as dn, RunId as dr, resolveItemExprsInUnknown as dt, TelemetryMetricRecord as ea, ExecutionContext as ei, WorkflowExecutionListingRepository as en, OutputPortKey as eo, NodeIterationId as er, Expr as et, AnyRunnableNodeConfig as f, NoOpTelemetryArtifactReference as fa, NodeExecutionRequest as fi, inject as fn, RunIdFactory as fr, AssertionResult as ft, BranchOutputGuard as g, CostTrackingTelemetryAttributeNames as ga, NodeExecutor as gi, instancePerContainerCachingFactory as gn, TriggerNodeConfig as gr, NoOpAgentMcpIntegration as gt, BranchMoreArgs as h, CostTrackingTelemetry as ha, NodeExecutionStatePublisher as hi, instanceCachingFactory as hn, RunnableNodeOutputJson as hr, deriveAssertionPassed as ht, NodeIterationIdFactory as i, TelemetrySpanScope as ia, MultiInputNode as ii, DependencyContainer$1 as in, NodeRef as ir, ItemExprArgs as it, McpServerDeclaration as j, CredentialInstanceId as ja, WorkflowNodeInstanceFactory as ji, TestTriggerSetupContext as jn, WorkflowStoragePolicyResolver as jr, PendingNodeExecution as jt, isPortsEmission as k, CredentialHealthStatus as ka, TriggerSetupStateRepository as ki, TestSuiteRunId as kn, WorkflowStoragePolicyDecisionArgs as kr, NodeExecutionStatus as kt, WorkflowBuilder as l, NoOpExecutionTelemetry as la, NodeActivationScheduler as li, TypeToken as ln, RunDataFactory as lr, itemExpr as lt, BooleanWhenOverloads as m, CostTrackingPriceQuote as ma, NodeExecutionScheduler as mi, injectable as mn, RunnableNodeInputJson as mr, DEFAULT_ASSERTION_PASS_THRESHOLD as mt, WorkflowExecutableNodeClassifierFactory as n, TelemetrySpanEnd as na, ItemNode as ni, WorkflowExecutionRepository as nn, WorkflowId as no, NodeOffloadPolicy as nr, ParamDeep as nt, ConnectionInvocationIdFactory as o, GenAiTelemetryAttributeNames as oa, NodeActivationReceipt as oi, InjectionToken$1 as on, PairedItemRef as or, ItemExprContext as ot, AnyTriggerNodeConfig as p, CostTrackingComponent as pa, NodeExecutionRequestHandler as pi, injectAll as pn, RunnableNodeConfig as pr, AssertionResultProvenance as pt, SlotExecutionStateDto as q, OAuth2ProviderFromPublicConfig as qa, ExecutionTelemetryFactory as qi, NodeConfigBase as qn, BinaryStorageStatResult as qr, RunResult as qt, WorkflowExecutableNodeClassifier as r, TelemetrySpanEventRecord as ra, LiveWorkflowRepository as ri, Container as rn, NodeOutputs as rr, ItemExpr as rt, NodeIdSlugifier as s, CodemationTelemetryAttributeNames as sa, NodeActivationRequest as si, Lifecycle as sn, ParentExecutionRef as sr, ItemExprResolvedContext as st, DefaultWorkflowGraphFactory as t, TelemetryScope as ta, ExecutionContextFactory as ti, WorkflowExecutionPruneRepository as tn, PersistedTokenId as to, NodeKind as tr, Param as tt, ChainCursor as u, NoOpNodeExecutionTelemetry as ua, NodeBinaryAttachmentService as ui, container$1 as un, RunDataSnapshot as ur, resolveItemExprsForExecution as ut, StepSequenceOutput as v, CostTrackingTelemetryMetricNames as va, PersistedTriggerSetupState as vi, registry as vn, TriggerNodeSetupState as vr, AgentMcpIntegration as vt, RetryPolicy as w, CredentialAuthDefinition as wa, TriggerCleanupHandle as wi, RunEvent as wn, WorkflowGraph as wr, CurrentStateExecutionRequest as wt, NoOpCostTrackingTelemetryFactory as x, CollectionsContext as xa, RunnableNode as xi, ENGINE_EXECUTION_LIMITS_DEFAULTS as xn, WorkflowErrorContext as xr, ConnectionInvocationAppendArgs as xt, ValidStepSequence as y, CostTrackingUsageRecord as ya, PollingTriggerHandle as yi, singleton as yn, UpstreamRefPlaceholder as yr, AgentMcpToolMap as yt, PersistedExecutionInstanceKind as z, CredentialSessionFactoryArgs as za, WebhookControlSignal as zi, Items as zn, ExponentialRetryPolicySpec as zr, PersistedWorkflowTokenRegistryLike as zt };
2558
- //# sourceMappingURL=index-zWGtEhrf.d.ts.map
2993
+ export { ExecutionPayloadPolicyFields as $, CredentialFieldSchema as $a, TriggerSetupContext as $i, BinaryPreviewKind as $n, nodeRef as $r, PersistedRunState as $t, DefinedNodeCredentialAccessors as A, TelemetrySpanScope as Aa, NodeActivationReceipt as Ai, delay as An, RunId as Ar, DEFAULT_ASSERTION_PASS_THRESHOLD as At, RetryPolicy as B, CostTrackingPriceQuote as Ba, NodeExecutor as Bi, ENGINE_EXECUTION_LIMITS_DEFAULTS as Bn, WorkflowErrorContext as Br, CurrentStateExecutionRequest as Bt, defineHumanApprovalNode as C, TelemetryAttributePrimitive as Ca, HumanTaskHandle as Ci, DependencyContainer$1 as Cn, InputPortKey as Co, NodeRef as Cr, ItemExprResolvedContext as Ct, DefineNodeOptions as D, TelemetryScope as Da, LiveWorkflowRepository as Di, RegistrationOptions as Dn, PersistedTokenId as Do, PersistedRunPolicySnapshot as Dr, resolveItemExprsInUnknown as Dt, DefineNodeExecuteArgs as E, TelemetryMetricRecord as Ea, ItemNode as Ei, Lifecycle as En, OutputPortKey as Eo, ParentExecutionRef as Er, resolveItemExprsForExecution as Et, defineNode as F, NoOpExecutionTelemetry as Fa, NodeExecutionContext as Fi, instancePerContainerCachingFactory as Fn, TriggerNodeConfig as Fr, AgentMcpToolMap as Ft, isPortsEmission as G, CostTrackingUsageRecord as Ga, ResumeContext as Gi, RunEventSubscription as Gn, WorkflowNodeConnection as Gr, NodeExecutionStatus as Gt, getOriginIndexFromItem as H, CostTrackingTelemetryAttributeNames as Ha, PersistedTriggerSetupState as Hi, EngineExecutionLimitsPolicyConfig as Hn, WorkflowErrorHandlerSpec as Hr, ExecutionFrontierPlan as Ht, RunFinishedAtFactory as I, NoOpNodeExecutionTelemetry as Ia, NodeExecutionRequest as Ii, predicateAwareClassFactory as In, TriggerNodeOutputJson as Ir, NeedsReconsentEvent as It, McpServerTransport as J, AnyCredentialType as Ja, SuspensionRequest as Ji, TestSuiteRunId as Jn, WorkflowStoragePolicyDecisionArgs as Jr, PendingResumeEntry as Jt, isUnbrandedPortsEmissionShape as K, CollectionStore as Ka, RunnableNode as Ki, TestCaseRunStatus as Kn, WorkflowPolicyRuntimeDefaults as Kr, NodeInputsByPort as Kt, NoOpCostTrackingTelemetryFactory as L, NoOpTelemetrySpanScope as La, NodeExecutionRequestHandler as Li, registry as Ln, TriggerNodeSetupState as Lr, ConnectionInvocationAppendArgs as Lt, DefinedNodeCredentialBindings as M, GenAiTelemetryAttributeNames as Ma, NodeActivationRequestBase as Mi, injectAll as Mn, RunnableNodeConfig as Mr, NoOpAgentMcpIntegration as Mt, DefinedNodeRunContext as N, CodemationTelemetryAttributeNames as Na, NodeActivationScheduler as Ni, injectable as Nn, RunnableNodeInputJson as Nr, AgentBindError as Nt, DefinedNode as O, TelemetrySpanEnd as Oa, MultiInputNode as Oi, TypeToken as On, WorkflowId as Oo, RunDataFactory as Or, AssertionResult as Ot, defineBatchNode as P, NoOpExecutionTelemetryFactory as Pa, NodeBinaryAttachmentService as Pi, instanceCachingFactory as Pn, RunnableNodeOutputJson as Pr, AgentMcpIntegration as Pt, ExecutionInstanceId as Q, CredentialBindingKey as Qa, TriggerRuntimeDiagnostics as Qi, BinaryAttachment as Qn, branchRef as Qr, PersistedRunSchedulingState as Qt, NoOpCostTrackingTelemetry as R, NoOpTelemetryArtifactReference as Ra, NodeExecutionScheduler as Ri, singleton as Rn, UpstreamRefPlaceholder as Rr, ConnectionInvocationId as Rt, HumanApprovalOutputJson as S, TelemetryArtifactReference as Sa, HumanTaskActor as Si, Container as Sn, PollingTriggerDedupWindow as So, NodeOutputs as Sr, ItemExprContext as St, DefineBatchNodeOptions as T, TelemetryChildSpanStart as Ta, HumanTaskSubject as Ti, InjectionToken$1 as Tn, NodeId as To, PairedItemRef as Tr, itemExpr as Tt, PortsEmission as U, CostTrackingTelemetryFactory as Ua, PollingTriggerHandle as Ui, RunEvent as Un, WorkflowGraph as Ur, NodeExecutionError as Ut, NoRetryPolicy as V, CostTrackingTelemetry as Va, NodeResolver as Vi, EngineExecutionLimitsPolicy as Vn, WorkflowErrorHandler as Vr, EngineRunCounters as Vt, emitPorts as W, CostTrackingTelemetryMetricNames as Wa, PreparedNodeActivationDispatch as Wi, RunEventBus as Wn, WorkflowGraphFactory as Wr, NodeExecutionSnapshot as Wt, ConnectionInvocationKind as X, CredentialAuthDefinition as Xa, TriggerCleanupHandle as Xi, TestTriggerSetupContext as Xn, WorkflowStoragePolicyResolver as Xr, PersistedMutableRunState as Xt, BatchId as Y, CredentialAdvancedSectionPresentation as Ya, TestableTriggerNode as Yi, TestTriggerNodeConfig as Yn, WorkflowStoragePolicyMode as Yr, PersistedMutableNodeState as Yt, ExecutionInstanceDto as Z, CredentialBinding as Za, TriggerNode as Zi, ActivationIdFactory as Zn, WorkflowStoragePolicySpec as Zr, PersistedRunControlState as Zt, BranchStepsArg as _, WorkflowActivationPolicy as _a, EngineHost as _i, RunTestContext as _n, CredentialTypeRegistry as _o, NodeIdRef as _r, Param as _t, ConnectionNodeIdFactory as a, WorkflowRunnerResolver as aa, FixedRetryPolicySpec as ai, RunCompletionNotifier as an, CredentialJsonRecord as ao, JsonArray as ar, PersistedRunWorkItemRecord as at, DefinedHumanApprovalNode as b, NodeExecutionTelemetry as ba, ExecutionContext as bi, WorkflowExecutionPruneRepository as bn, NoOpPollingTriggerLogger as bo, NodeKind as br, ItemExprArgs as bt, WorkflowDefinitionError as c, WorkflowSnapshotResolver as ca, BinaryAttachmentCreateRequest as ci, RunExecutionOptions as cn, CredentialOAuth2ScopesFromPublicConfig as co, JsonPrimitive as cr, RunSlotProjectionState as ct, WhenBuilder as d, WebhookControlSignal as da, BinaryStorageReadResult as di, RunQueueEntry as dn, CredentialSessionFactoryArgs as do, NodeActivationId as dr, WorkItemStatus as dt, TriggerSetupStateFor as ea, runnableNodeInputType as ei, PersistedSuspensionEntry as en, CredentialHealth as eo, Edge as er, PayloadStorageKind as et, AnyRunnableNodeConfig as f, WebhookInvocationMatch as fa, BinaryStorageStatResult as fi, RunResult as fn, CredentialSessionService as fo, NodeConfigBase as fr, WorkflowDetailSelectionState as ft, BranchOutputGuard as g, AllWorkflowsActiveWorkflowActivationPolicy as ga, EngineDeps as gi, RunSummary as gn, CredentialTypeId as go, NodeErrorHandlerSpec as gr, Expr as gt, BranchMoreArgs as h, WebhookTriggerRoutingDiagnostics as ha, Duration as hi, RunStopCondition as hn, CredentialTypeDefinition as ho, NodeErrorHandlerArgs as hr, CostCatalogEntry as ht, NodeIterationIdFactory as i, WorkflowRepository as ia, ExponentialRetryPolicySpec as ii, PinnedNodeOutputsByPort as in, CredentialInstanceRecord as io, Items as ir, PersistedRunWorkItemKind as it, DefinedNodeCredentialBinding as j, CodemationTelemetryMetricNames as ja, NodeActivationRequest as ji, inject as jn, RunIdFactory as jr, deriveAssertionPassed as jt, DefinedNodeConfigInput as k, TelemetrySpanEventRecord as ka, NodeActivationContinuation as ki, container$1 as kn, RunDataSnapshot as kr, AssertionResultProvenance as kt, WorkflowBuilder as l, HttpMethod as la, BinaryBody as li, RunHaltReason as ln, CredentialRequirement as lo, JsonValue as lr, SlotExecutionStateDto as lt, BooleanWhenOverloads as m, WebhookTriggerResolution as ma, BinaryStorageWriteResult as mi, RunStatus as mn, CredentialType as mo, NodeErrorHandler as mr, CostCatalog as mt, WorkflowExecutableNodeClassifierFactory as n, TriggerTestItemsContext as na, triggerNodeOutputType as ni, PersistedWorkflowSnapshotNode as nn, CredentialHealthTester as no, Item as nr, PersistedExecutionInstanceRecord as nt, ConnectionInvocationIdFactory as o, WorkflowRunnerService as oa, NoneRetryPolicySpec as oi, RunCurrentState as on, CredentialMaterialSourceKind as oo, JsonNonArray as or, RunIterationDto as ot, AnyTriggerNodeConfig as p, WebhookTriggerMatcher as pa, BinaryStorageWriteRequest as pi, RunStateResetRequest as pn, CredentialSetupStatus as po, NodeDefinition as pr, WorkflowRunDetailDto as pt, McpServerDeclaration as q, CollectionsContext as qa, RunnableNodeExecuteArgs as qi, TestSuiteRunStatus as qn, WorkflowPrunePolicySpec as qr, PendingNodeExecution as qt, WorkflowExecutableNodeClassifier as r, WorkflowNodeInstanceFactory as ra, triggerNodeSetupStateType as ri, PersistedWorkflowTokenRegistryLike as rn, CredentialInstanceId as ro, ItemBinary as rr, PersistedRunSlotProjectionRecord as rt, NodeIdSlugifier as s, WorkflowSnapshotFactory as sa, RetryPolicySpec as si, RunEventPublisherDeps as sn, CredentialOAuth2AuthDefinition as so, JsonObject as sr, RunRevision as st, DefaultWorkflowGraphFactory as t, TriggerSetupStateRepository as ta, runnableNodeOutputType as ti, PersistedWorkflowSnapshot as tn, CredentialHealthStatus as to, ExecutionMode as tr, PersistedExecutionInstanceKind as tt, ChainCursor as u, TriggerInstanceId as ua, BinaryStorage as ui, RunPruneCandidate as un, CredentialSessionFactory as uo, MutableRunData as ur, WorkItemId as ut, StepSequenceOutput as v, ExecutionTelemetry as va, ExecutableTriggerNode as vi, WebhookRunResult as vn, CredentialUnboundError as vo, NodeInspectorSummaryRow as vr, ParamDeep as vt, isHumanApprovalNode as w, TelemetryAttributes as wa, HumanTaskId as wi, Disposable as wn, NodeConnectionName as wo, NodeSchedulerDecision as wr, isItemExpr as wt, HumanApprovalDecisionResult as x, TelemetryArtifactAttachment as xa, ExecutionContextFactory as xi, WorkflowExecutionRepository as xn, PollingTriggerLogger as xo, NodeOffloadPolicy as xr, ItemExprCallback as xt, ValidStepSequence as y, ExecutionTelemetryFactory as ya, ExecutionBinaryService as yi, WorkflowExecutionListingRepository as yn, OAuth2ProviderFromPublicConfig as yo, NodeIterationId as yr, ItemExpr as yt, ExpRetryPolicy as z, CostTrackingComponent as za, NodeExecutionStatePublisher as zi, CoreTokens as zn, WorkflowDefinition as zr, ConnectionInvocationRecord as zt };
2994
+ //# sourceMappingURL=index-CSKKuK60.d.ts.map