n8n-workflow 2.32.1 → 2.34.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 (149) hide show
  1. package/dist/cjs/build.tsbuildinfo +1 -1
  2. package/dist/cjs/constants.d.ts +1 -0
  3. package/dist/cjs/constants.d.ts.map +1 -1
  4. package/dist/cjs/constants.js +2 -1
  5. package/dist/cjs/constants.js.map +1 -1
  6. package/dist/cjs/cron.d.ts +7 -0
  7. package/dist/cjs/cron.d.ts.map +1 -1
  8. package/dist/cjs/cron.js +14 -1
  9. package/dist/cjs/cron.js.map +1 -1
  10. package/dist/cjs/errors/abstract/execution-base.error.d.ts +4 -1
  11. package/dist/cjs/errors/abstract/execution-base.error.d.ts.map +1 -1
  12. package/dist/cjs/errors/abstract/execution-base.error.js +7 -5
  13. package/dist/cjs/errors/abstract/execution-base.error.js.map +1 -1
  14. package/dist/cjs/errors/abstract/node.error.d.ts +1 -1
  15. package/dist/cjs/errors/abstract/node.error.d.ts.map +1 -1
  16. package/dist/cjs/errors/abstract/node.error.js +7 -4
  17. package/dist/cjs/errors/abstract/node.error.js.map +1 -1
  18. package/dist/cjs/expression.d.ts +1 -0
  19. package/dist/cjs/expression.d.ts.map +1 -1
  20. package/dist/cjs/expression.js +16 -0
  21. package/dist/cjs/expression.js.map +1 -1
  22. package/dist/cjs/extensions/array-extensions.d.ts.map +1 -1
  23. package/dist/cjs/extensions/array-extensions.js +4 -0
  24. package/dist/cjs/extensions/array-extensions.js.map +1 -1
  25. package/dist/cjs/index.d.ts +2 -1
  26. package/dist/cjs/index.d.ts.map +1 -1
  27. package/dist/cjs/index.js +2 -2
  28. package/dist/cjs/index.js.map +1 -1
  29. package/dist/cjs/interfaces.d.ts +110 -6
  30. package/dist/cjs/interfaces.d.ts.map +1 -1
  31. package/dist/cjs/interfaces.js.map +1 -1
  32. package/dist/cjs/message-event-bus.d.ts +2 -1
  33. package/dist/cjs/message-event-bus.d.ts.map +1 -1
  34. package/dist/cjs/message-event-bus.js +1 -0
  35. package/dist/cjs/message-event-bus.js.map +1 -1
  36. package/dist/cjs/n8n-oauth2-auth.d.ts +26 -0
  37. package/dist/cjs/n8n-oauth2-auth.d.ts.map +1 -0
  38. package/dist/cjs/n8n-oauth2-auth.js +81 -0
  39. package/dist/cjs/n8n-oauth2-auth.js.map +1 -0
  40. package/dist/cjs/native-methods/array.methods.js +1 -1
  41. package/dist/cjs/native-methods/array.methods.js.map +1 -1
  42. package/dist/cjs/node-grouping-validation.d.ts +81 -0
  43. package/dist/cjs/node-grouping-validation.d.ts.map +1 -1
  44. package/dist/cjs/node-grouping-validation.js +159 -1
  45. package/dist/cjs/node-grouping-validation.js.map +1 -1
  46. package/dist/cjs/node-helpers.d.ts +21 -1
  47. package/dist/cjs/node-helpers.d.ts.map +1 -1
  48. package/dist/cjs/node-helpers.js +59 -1
  49. package/dist/cjs/node-helpers.js.map +1 -1
  50. package/dist/cjs/redaction-channels.d.ts +7 -0
  51. package/dist/cjs/redaction-channels.d.ts.map +1 -1
  52. package/dist/cjs/redaction-channels.js +13 -0
  53. package/dist/cjs/redaction-channels.js.map +1 -1
  54. package/dist/cjs/run-execution-data/run-execution-data.v0.d.ts +1 -1
  55. package/dist/cjs/run-execution-data/run-execution-data.v0.d.ts.map +1 -1
  56. package/dist/cjs/run-execution-data/run-execution-data.v1.d.ts +1 -1
  57. package/dist/cjs/run-execution-data/run-execution-data.v1.d.ts.map +1 -1
  58. package/dist/cjs/run-execution-data/run-execution-data.v1.js.map +1 -1
  59. package/dist/cjs/schemas.d.ts +11 -0
  60. package/dist/cjs/schemas.d.ts.map +1 -1
  61. package/dist/cjs/schemas.js +36 -1
  62. package/dist/cjs/schemas.js.map +1 -1
  63. package/dist/cjs/trigger-identity.d.ts +19 -1
  64. package/dist/cjs/trigger-identity.d.ts.map +1 -1
  65. package/dist/cjs/trigger-identity.js +22 -2
  66. package/dist/cjs/trigger-identity.js.map +1 -1
  67. package/dist/cjs/utils.d.ts +1 -3
  68. package/dist/cjs/utils.d.ts.map +1 -1
  69. package/dist/cjs/utils.js +6 -19
  70. package/dist/cjs/utils.js.map +1 -1
  71. package/dist/cjs/workflow-expression.d.ts +1 -0
  72. package/dist/cjs/workflow-expression.d.ts.map +1 -1
  73. package/dist/cjs/workflow-expression.js +3 -0
  74. package/dist/cjs/workflow-expression.js.map +1 -1
  75. package/dist/esm/constants.d.ts +1 -0
  76. package/dist/esm/constants.d.ts.map +1 -1
  77. package/dist/esm/constants.js +1 -0
  78. package/dist/esm/constants.js.map +1 -1
  79. package/dist/esm/cron.d.ts +7 -0
  80. package/dist/esm/cron.d.ts.map +1 -1
  81. package/dist/esm/cron.js +12 -0
  82. package/dist/esm/cron.js.map +1 -1
  83. package/dist/esm/errors/abstract/execution-base.error.d.ts +4 -1
  84. package/dist/esm/errors/abstract/execution-base.error.d.ts.map +1 -1
  85. package/dist/esm/errors/abstract/execution-base.error.js +7 -5
  86. package/dist/esm/errors/abstract/execution-base.error.js.map +1 -1
  87. package/dist/esm/errors/abstract/node.error.d.ts +1 -1
  88. package/dist/esm/errors/abstract/node.error.d.ts.map +1 -1
  89. package/dist/esm/errors/abstract/node.error.js +7 -4
  90. package/dist/esm/errors/abstract/node.error.js.map +1 -1
  91. package/dist/esm/expression.d.ts +1 -0
  92. package/dist/esm/expression.d.ts.map +1 -1
  93. package/dist/esm/expression.js +16 -0
  94. package/dist/esm/expression.js.map +1 -1
  95. package/dist/esm/extensions/array-extensions.d.ts.map +1 -1
  96. package/dist/esm/extensions/array-extensions.js +4 -0
  97. package/dist/esm/extensions/array-extensions.js.map +1 -1
  98. package/dist/esm/index.d.ts +2 -1
  99. package/dist/esm/index.d.ts.map +1 -1
  100. package/dist/esm/index.js +2 -1
  101. package/dist/esm/index.js.map +1 -1
  102. package/dist/esm/interfaces.d.ts +110 -6
  103. package/dist/esm/interfaces.d.ts.map +1 -1
  104. package/dist/esm/interfaces.js.map +1 -1
  105. package/dist/esm/message-event-bus.d.ts +2 -1
  106. package/dist/esm/message-event-bus.d.ts.map +1 -1
  107. package/dist/esm/message-event-bus.js +1 -0
  108. package/dist/esm/message-event-bus.js.map +1 -1
  109. package/dist/esm/n8n-oauth2-auth.d.ts +26 -0
  110. package/dist/esm/n8n-oauth2-auth.d.ts.map +1 -0
  111. package/dist/esm/n8n-oauth2-auth.js +77 -0
  112. package/dist/esm/n8n-oauth2-auth.js.map +1 -0
  113. package/dist/esm/native-methods/array.methods.js +1 -1
  114. package/dist/esm/native-methods/array.methods.js.map +1 -1
  115. package/dist/esm/node-grouping-validation.d.ts +81 -0
  116. package/dist/esm/node-grouping-validation.d.ts.map +1 -1
  117. package/dist/esm/node-grouping-validation.js +157 -0
  118. package/dist/esm/node-grouping-validation.js.map +1 -1
  119. package/dist/esm/node-helpers.d.ts +21 -1
  120. package/dist/esm/node-helpers.d.ts.map +1 -1
  121. package/dist/esm/node-helpers.js +58 -2
  122. package/dist/esm/node-helpers.js.map +1 -1
  123. package/dist/esm/redaction-channels.d.ts +7 -0
  124. package/dist/esm/redaction-channels.d.ts.map +1 -1
  125. package/dist/esm/redaction-channels.js +12 -0
  126. package/dist/esm/redaction-channels.js.map +1 -1
  127. package/dist/esm/run-execution-data/run-execution-data.v0.d.ts +1 -1
  128. package/dist/esm/run-execution-data/run-execution-data.v0.d.ts.map +1 -1
  129. package/dist/esm/run-execution-data/run-execution-data.v1.d.ts +1 -1
  130. package/dist/esm/run-execution-data/run-execution-data.v1.d.ts.map +1 -1
  131. package/dist/esm/run-execution-data/run-execution-data.v1.js.map +1 -1
  132. package/dist/esm/schemas.d.ts +11 -0
  133. package/dist/esm/schemas.d.ts.map +1 -1
  134. package/dist/esm/schemas.js +35 -1
  135. package/dist/esm/schemas.js.map +1 -1
  136. package/dist/esm/trigger-identity.d.ts +19 -1
  137. package/dist/esm/trigger-identity.d.ts.map +1 -1
  138. package/dist/esm/trigger-identity.js +23 -3
  139. package/dist/esm/trigger-identity.js.map +1 -1
  140. package/dist/esm/typecheck.tsbuildinfo +1 -1
  141. package/dist/esm/utils.d.ts +1 -3
  142. package/dist/esm/utils.d.ts.map +1 -1
  143. package/dist/esm/utils.js +4 -16
  144. package/dist/esm/utils.js.map +1 -1
  145. package/dist/esm/workflow-expression.d.ts +1 -0
  146. package/dist/esm/workflow-expression.d.ts.map +1 -1
  147. package/dist/esm/workflow-expression.js +3 -0
  148. package/dist/esm/workflow-expression.js.map +1 -1
  149. package/package.json +9 -9
@@ -91,6 +91,15 @@ export type N8nOAuth2ValidationResult = {
91
91
  valid: false;
92
92
  reason: OAuth2FailureReason;
93
93
  };
94
+ export type N8nOAuth2FlowResult = {
95
+ valid: true;
96
+ token: string;
97
+ user: IUser;
98
+ metadata?: Record<string, string>;
99
+ } | {
100
+ valid: false;
101
+ reason: string;
102
+ };
94
103
  export type ProjectSharingData = {
95
104
  id: string;
96
105
  name: string | null;
@@ -111,6 +120,7 @@ export interface ICredentialsDecrypted<T extends object = ICredentialDataDecrypt
111
120
  sharedWithProjects?: ProjectSharingData[];
112
121
  isGlobal?: boolean;
113
122
  isResolvable?: boolean;
123
+ usageScope?: 'project' | 'instance';
114
124
  }
115
125
  export interface ICredentialsEncrypted {
116
126
  id?: string;
@@ -164,7 +174,7 @@ export declare abstract class ICredentialsHelper {
164
174
  * validator so the policy is defined in exactly one place.
165
175
  */
166
176
  abstract isCredentialUsableByNode(credentialType: string, nodeType: string): boolean;
167
- abstract authenticate(credentials: ICredentialDataDecryptedObject, typeName: string, requestOptions: IHttpRequestOptions | IRequestOptionsSimplified, workflow: Workflow, node: INode): Promise<IHttpRequestOptions>;
177
+ abstract authenticate(credentials: ICredentialDataDecryptedObject, typeName: string, requestOptions: IHttpRequestOptions | IRequestOptionsSimplified, workflow?: Workflow, node?: INode): Promise<IHttpRequestOptions>;
168
178
  abstract preAuthentication(helpers: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject, typeName: string, node: INode, credentialsExpired: boolean): Promise<ICredentialDataDecryptedObject | undefined>;
169
179
  abstract runPreAuthentication(helpers: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject, typeName: string): Promise<ICredentialDataDecryptedObject | undefined>;
170
180
  abstract getCredentials(nodeCredentials: INodeCredentialsDetails, type: string): Promise<ICredentials>;
@@ -698,7 +708,7 @@ type CronRecurrenceRule = {
698
708
  activated: true;
699
709
  index: number;
700
710
  intervalSize: number;
701
- typeInterval: 'hours' | 'days' | 'weeks' | 'months';
711
+ typeInterval: 'minutes' | 'hours' | 'days' | 'weeks' | 'months';
702
712
  };
703
713
  /**
704
714
  * @deprecated Remnant of the legacy in-memory scheduling path. `registerCron`
@@ -805,10 +815,14 @@ export type CredentialCheckResult = {
805
815
  credentials: CredentialCheckStatus[];
806
816
  };
807
817
  export type DynamicCredentialCheckProxyProvider = {
808
- checkCredentialStatus(workflowId: string, executionContext: IExecutionContext): Promise<CredentialCheckResult>;
818
+ checkCredentialStatus(workflowId: string, executionContext: {
819
+ credentials?: string;
820
+ }): Promise<CredentialCheckResult>;
809
821
  };
810
822
  export type CredentialCheckProxyFunctions = {
811
- checkCredentialStatus?(workflowId: string, executionContext: IExecutionContext): Promise<CredentialCheckResult>;
823
+ checkCredentialStatus?(workflowId: string, executionContext: {
824
+ credentials?: string;
825
+ }): Promise<CredentialCheckResult>;
812
826
  };
813
827
  export type OauthJweProxyProvider = {
814
828
  decryptOAuth2TokenData(tokenData: IDataObject): Promise<IDataObject>;
@@ -823,6 +837,14 @@ type BaseExecutionFunctions = FunctionsBaseWithRequiredKeys<'getMode'> & {
823
837
  getInputSourceData(inputIndex?: number, connectionType?: NodeConnectionType): ISourceData;
824
838
  getExecutionCancelSignal(): AbortSignal | undefined;
825
839
  onExecutionCancellation(handler: () => unknown): void;
840
+ /**
841
+ * Registers a handler run when the execution ends (success, failure, or
842
+ * cancellation) — not when it pauses into the waiting state. May fire more
843
+ * than once, so handlers must be idempotent; errors they throw are caught
844
+ * and logged. Unavailable in contexts without lifecycle hooks, so callers
845
+ * need their own fallback cleanup.
846
+ */
847
+ onExecutionFinish?(handler: () => unknown): void;
826
848
  logAiEvent(eventName: AiEvent, msg?: string): void;
827
849
  };
828
850
  export type IExecuteFunctions = ExecuteFunctions.GetNodeParameterFn & BaseExecutionFunctions & {
@@ -841,7 +863,7 @@ export type IExecuteFunctions = ExecuteFunctions.GetNodeParameterFn & BaseExecut
841
863
  getRuntimeCredential(alias: string): Promise<IDataObject[string] | undefined>;
842
864
  putExecutionToWait(waitTill: Date): Promise<void>;
843
865
  sendMessageToUI(message: any): void;
844
- sendResponse(response: IExecuteResponsePromiseData): void;
866
+ sendResponse(response: IExecuteResponsePromiseData): Promise<void>;
845
867
  sendChunk(type: ChunkType, itemIndex: number, content?: IDataObject | string): void;
846
868
  isStreaming(): boolean;
847
869
  /** Returns true if the node is being executed as an AI Agent tool */
@@ -889,6 +911,8 @@ export type ISupplyDataFunctions = ExecuteFunctions.GetNodeParameterFn & Functio
889
911
  getWorkflowDataProxy(itemIndex: number): IWorkflowDataProxyData;
890
912
  getExecutionCancelSignal(): AbortSignal | undefined;
891
913
  onExecutionCancellation(handler: () => unknown): void;
914
+ /** See {@link BaseExecutionFunctions.onExecutionFinish} */
915
+ onExecutionFinish?(handler: () => unknown): void;
892
916
  logAiEvent(eventName: AiEvent, msg?: string): void;
893
917
  addExecutionHints(...hints: NodeExecutionHint[]): void;
894
918
  cloneWith(replacements: {
@@ -955,7 +979,57 @@ export interface IHookFunctions extends FunctionsBaseWithRequiredKeys<'getMode'
955
979
  export interface IWebhookFunctions extends FunctionsBaseWithRequiredKeys<'getMode'> {
956
980
  getBodyData(): IDataObject;
957
981
  getHeaderData(): IncomingHttpHeaders;
982
+ /**
983
+ * Identity pipeline for identity-bearing triggers (Form, MCP).
984
+ *
985
+ * These let a trigger run a workflow as the *caller* — resolving that user's own
986
+ * private (per-user) credentials instead of a shared/static credential — by
987
+ * proving the caller's n8n identity against the internal Authorization Server (AS)
988
+ * and binding it to the execution. The shape is acquire → verify → bind:
989
+ *
990
+ * - Browser-facing triggers (Form) acquire a token interactively:
991
+ * `beginN8nOAuth2Flow` → (AS redirect) → `completeN8nOAuth2Flow`.
992
+ * - Resource-server triggers (MCP) receive a bearer token directly and only
993
+ * `validateN8nOAuth2Token` it.
994
+ * - Either way, `establishTriggerIdentity` binds the verified token to the run.
995
+ */
996
+ /**
997
+ * Starts the interactive authorization-code + PKCE flow against n8n's internal AS
998
+ * for `resourceUrl` (the trigger's own protected-resource URL). Returns the
999
+ * `/oauth/authorize` URL to redirect the browser to; the AS identifies the
1000
+ * already-logged-in user from their n8n session (no login prompt for the
1001
+ * first-party trigger client) and redirects back to the trigger URL with a code.
1002
+ * Used on the initial GET of a browser-facing trigger. Pair with
1003
+ * `completeN8nOAuth2Flow`.
1004
+ *
1005
+ * Optional `metadata` is stashed server-side against this flow's one-time `state`
1006
+ * (never sent to the browser) and returned by `completeN8nOAuth2Flow` on success —
1007
+ * a per-flow slot for carrying data (e.g. the original request query) across the bounce.
1008
+ */
1009
+ beginN8nOAuth2Flow(resourceUrl: string, metadata?: Record<string, string>): Promise<string>;
1010
+ /**
1011
+ * Completes the flow started by `beginN8nOAuth2Flow` once the AS redirects back to
1012
+ * the trigger URL with `?code&state`. Consumes the one-time `state`, verifies PKCE,
1013
+ * exchanges the code for an access token **server-side** (the code never reaches the
1014
+ * sandboxed form page), and validates it. Returns the token and resolved user on
1015
+ * success, or a failure reason.
1016
+ */
1017
+ completeN8nOAuth2Flow(code: string, state: string): Promise<N8nOAuth2FlowResult>;
1018
+ /**
1019
+ * Verifies an AS access token against `resourceUrl` (the expected audience) without
1020
+ * running a redirect flow. Used by resource-server triggers (MCP) that receive a
1021
+ * bearer token directly, and by browser triggers on the POST leg to re-check the
1022
+ * token the page presents. Returns validity + resolved user, or a failure reason
1023
+ * (`invalid_token`, `insufficient_scope`, …).
1024
+ */
958
1025
  validateN8nOAuth2Token(token: string, resourceUrl: string): Promise<N8nOAuth2ValidationResult>;
1026
+ /**
1027
+ * Binds the verified submitter to the current execution: builds an encrypted
1028
+ * credential context from `token`/`resource` and threads it into the execution's
1029
+ * runtime context, so downstream nodes resolve *that user's* per-user credentials.
1030
+ * Call only after the token is validated. The identity persists for the whole
1031
+ * execution (including across a Wait), within the token's validity window.
1032
+ */
959
1033
  establishTriggerIdentity(token: string, resource: string): Promise<void>;
960
1034
  /**
961
1035
  * Checks the status of the triggering identity's resolvable (private) credentials
@@ -967,7 +1041,14 @@ export interface IWebhookFunctions extends FunctionsBaseWithRequiredKeys<'getMod
967
1041
  checkTriggerCredentialStatus(): Promise<CredentialCheckResult | undefined>;
968
1042
  getInputConnectionData(connectionType: AINodeConnectionType, itemIndex: number, inputIndex?: number): Promise<unknown>;
969
1043
  getNodeParameter(parameterName: string, fallbackValue?: any, options?: IGetNodeParameterOptions): NodeParameterValueType | object;
1044
+ /** Always the production endpoint, whichever endpoint the request arrived on. */
970
1045
  getNodeWebhookUrl: (name: WebhookType) => string | undefined;
1046
+ /**
1047
+ * The endpoint actually being served (`/webhook-test/…` on a test run), which
1048
+ * identifies the webhook as an OAuth protected resource. Minting and verifying a
1049
+ * token both derive the resource from it, so it must track the endpoint served.
1050
+ */
1051
+ getWebhookResourceUrl: (name: WebhookType) => string | undefined;
971
1052
  evaluateExpression(expression: string, itemIndex?: number): NodeParameterValueType;
972
1053
  getParamsData(): object;
973
1054
  getQueryData(): object;
@@ -1191,6 +1272,7 @@ export interface INodePropertyTypeOptions {
1191
1272
  inputFieldMaxLength?: number;
1192
1273
  };
1193
1274
  containerClass?: string;
1275
+ sectionHeader?: boolean;
1194
1276
  alwaysOpenEditWindow?: boolean;
1195
1277
  codeAutocomplete?: CodeAutocompleteTypes;
1196
1278
  editor?: EditorType;
@@ -1211,6 +1293,7 @@ export interface INodePropertyTypeOptions {
1211
1293
  password?: boolean;
1212
1294
  copyButton?: boolean;
1213
1295
  redactJsonLeaves?: boolean;
1296
+ resolveCredentialJsonLeaves?: boolean;
1214
1297
  ignoreCredentialExpressionResolveError?: boolean;
1215
1298
  rows?: number;
1216
1299
  showAlpha?: boolean;
@@ -1249,6 +1332,7 @@ export interface ResourceMapperTypeOptionsBase {
1249
1332
  showTypeConversionOptions?: boolean;
1250
1333
  allowEmptyValues?: boolean;
1251
1334
  refreshIncompleteSchemaOnOpen?: boolean;
1335
+ refreshStaleSchemaOnOpen?: boolean;
1252
1336
  }
1253
1337
  export type ResourceMapperTypeOptionsLocal = {
1254
1338
  resourceMapperMethod: string;
@@ -1475,6 +1559,7 @@ export interface INodePropertyOptions {
1475
1559
  inputSchema?: any;
1476
1560
  displayOptions?: IDisplayOptions;
1477
1561
  disabledOptions?: undefined;
1562
+ envFeatureFlag?: Uppercase<string>;
1478
1563
  }
1479
1564
  export interface INodeListSearchItems extends INodePropertyOptions {
1480
1565
  icon?: string;
@@ -1609,6 +1694,8 @@ export interface ExecuteAgentWorkflowContext {
1609
1694
  workflowName?: string;
1610
1695
  /** Name of the node that invoked the agent */
1611
1696
  callingNodeName: string;
1697
+ /** ID of the node that invoked the agent */
1698
+ callingNodeId?: string;
1612
1699
  /** The calling node's input items, already scoped per {@link ExecuteAgentInfo.inputDataScope}. */
1613
1700
  inputData?: INodeExecutionData[];
1614
1701
  /** Which slice {@link inputData} represents. */
@@ -2623,6 +2710,13 @@ export interface IWorkflowExecutionDataProcess {
2623
2710
  * apart) and by telemetry.
2624
2711
  */
2625
2712
  source?: WorkflowExecutionSource;
2713
+ /**
2714
+ * When true, a failure in this run must not dispatch the workflow's error
2715
+ * workflow (or its own Error Trigger). Set for runs that are a test of the
2716
+ * workflow rather than a real one, but that still need a production
2717
+ * execution mode for realistic trigger semantics
2718
+ */
2719
+ suppressErrorWorkflow?: boolean;
2626
2720
  telemetryMetadata?: IWorkflowExecutionTelemetryMetadata;
2627
2721
  dirtyNodeNames?: string[];
2628
2722
  triggerToStartFrom?: {
@@ -2654,7 +2748,7 @@ export interface IWorkflowExecutionDataProcess {
2654
2748
  traceparent: string;
2655
2749
  tracestate?: string;
2656
2750
  };
2657
- /** Encrypted credential context for a manual editor-triggered execution. */
2751
+ /** Encrypted credential context for a triggered execution. */
2658
2752
  encryptedRunnerIdentity?: string;
2659
2753
  /** Parent evaluation TestRun.id, exposed to expressions as `$evaluation.runId`. */
2660
2754
  evaluationRunId?: string;
@@ -2712,6 +2806,14 @@ export interface IWorkflowExecuteAdditionalData {
2712
2806
  executionId?: string;
2713
2807
  restartExecutionId?: string;
2714
2808
  getRuntimeCredential(runExecutionData: IRunExecutionData, alias: string): Promise<IDataObject[string] | undefined>;
2809
+ /**
2810
+ * Backing implementations for the trigger identity pipeline exposed to nodes on
2811
+ * `IWebhookFunctions` (see the docs there). Optional here because they are only
2812
+ * wired in by the CLI webhook layer when the OAuth server is available; the
2813
+ * context methods throw if a node reaches them while unset.
2814
+ */
2815
+ beginN8nOAuth2Flow?: (resourceUrl: string, metadata?: Record<string, string>) => Promise<string>;
2816
+ completeN8nOAuth2Flow?: (code: string, state: string) => Promise<N8nOAuth2FlowResult>;
2715
2817
  validateN8nOAuth2Token?: (token: string, resourceUrl: string) => Promise<N8nOAuth2ValidationResult>;
2716
2818
  establishTriggerIdentity?(token: string, resource: string): Promise<void>;
2717
2819
  checkTriggerCredentialStatus?(): Promise<CredentialCheckResult | undefined>;
@@ -2723,7 +2825,9 @@ export interface IWorkflowExecuteAdditionalData {
2723
2825
  instanceBaseUrl: string;
2724
2826
  setExecutionStatus?: (status: ExecutionStatus) => void;
2725
2827
  sendDataToUI?: (type: string, data: IDataObject | IDataObject[]) => void;
2828
+ formBaseUrl: string;
2726
2829
  formWaitingBaseUrl: string;
2830
+ formTestBaseUrl: string;
2727
2831
  webhookBaseUrl: string;
2728
2832
  webhookWaitingBaseUrl: string;
2729
2833
  webhookTestBaseUrl: string;