@masterteam/flowplus-workflow 0.0.8 → 0.0.9

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.
@@ -1,10 +1,11 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, Provider, EventEmitter, OnDestroy } from '@angular/core';
2
+ import { InjectionToken, Provider, EventEmitter, OnDestroy, OnInit } from '@angular/core';
3
+ import * as rxjs from 'rxjs';
3
4
  import { Observable } from 'rxjs';
4
5
  import { MTIcon } from '@masterteam/icons';
5
6
  import * as _masterteam_flowplus_workflow from '@masterteam/flowplus-workflow';
6
7
  import { StateContext } from '@ngxs/store';
7
- import { LoadingStateShape, DynamicFormConfig } from '@masterteam/components';
8
+ import { LoadingStateShape, CrudStateBase, DynamicFormConfig } from '@masterteam/components';
8
9
  import { UrlTree, Routes } from '@angular/router';
9
10
  import { ModalRef } from '@masterteam/components/dialog';
10
11
  import { BreadcrumbItem } from '@masterteam/components/breadcrumb';
@@ -1229,9 +1230,101 @@ interface EngineEventDto {
1229
1230
  }>;
1230
1231
  }
1231
1232
 
1233
+ /**
1234
+ * AI node contracts (Builder + Execution Inspector).
1235
+ *
1236
+ * Source of truth: `Docs/AI_NODE_FRONTEND_IMPLEMENTATION_GUIDE.md`.
1237
+ *
1238
+ * CRITICAL PRODUCT RULES (enforced by the Builder UI):
1239
+ * - AI node configuration NEVER carries provider / model / credential /
1240
+ * base-url / tool / script fields. Those live only in Control Panel ->
1241
+ * Automation Engine -> Integrations. See {@link AI_FORBIDDEN_NODE_CONFIG_KEYS}.
1242
+ * - Builder AI nodes are catalog-driven from `helperMetadata.ai`. The FE must
1243
+ * not hardcode AI node schemas.
1244
+ * - The Execution Inspector may show safe {@link ExecutionNodeAiSummary}
1245
+ * metadata only — never raw prompt, raw response, or secrets.
1246
+ */
1247
+ type AiNodeKind = 'generic' | 'specialized';
1248
+ /**
1249
+ * Typed view of `NodeTypeCatalogItem.helperMetadata.ai`. All fields are
1250
+ * backend-driven; the Builder reads them to decide which config form to render.
1251
+ */
1252
+ interface AiNodeHelperMetadata {
1253
+ /** `generic` (prompt/instructions) or `specialized` (wrapper config). */
1254
+ nodeKind: AiNodeKind;
1255
+ /** Generic node preset, e.g. `generate | extract | classify | route | summarize`. */
1256
+ preset?: string | null;
1257
+ /** Specialized node type, e.g. `ai.ticketTriage`, `ai.textRiskClassifier`. */
1258
+ specializedNodeType?: string | null;
1259
+ /** Always true — AI nodes use the global Control Panel AI profile. */
1260
+ usesGlobalAiProfile?: boolean;
1261
+ supportsStructuredOutput?: boolean;
1262
+ /** Generic nodes: when true the FE must require prompt OR instructions. */
1263
+ requiresPromptOrInstructions?: boolean;
1264
+ hasSideEffects?: boolean;
1265
+ publishable?: boolean;
1266
+ /** When false, the node is catalog-visible but not runtime-executable. */
1267
+ runtimeImplemented?: boolean;
1268
+ [key: string]: unknown;
1269
+ }
1270
+ /**
1271
+ * Persisted wrapper config for a SPECIALIZED AI node. The root wrapper is
1272
+ * required for backend publish/runtime; `config` is descriptor-specific.
1273
+ */
1274
+ interface SpecializedAiNodeConfig {
1275
+ specializedNodeType: string;
1276
+ inputMapping: Record<string, unknown>;
1277
+ config: Record<string, unknown>;
1278
+ }
1279
+ /** Config shape for a GENERIC AI node (no provider/model/credential fields). */
1280
+ interface GenericAiNodeConfig {
1281
+ prompt?: string | null;
1282
+ instructions?: string | null;
1283
+ /** Optional structured-output JSON schema (when supportsStructuredOutput). */
1284
+ outputSchema?: unknown;
1285
+ [key: string]: unknown;
1286
+ }
1287
+ /**
1288
+ * Keys that must NEVER appear in AI node configuration. The Builder strips /
1289
+ * rejects these to keep provider/model/credential config out of nodes.
1290
+ */
1291
+ declare const AI_FORBIDDEN_NODE_CONFIG_KEYS: readonly string[];
1292
+ /**
1293
+ * Safe AI execution summary attached to a node run / node-data detail
1294
+ * (`node.ai`). Diagnostic metadata only — separate from business output.
1295
+ * NEVER includes raw prompt, raw response, API keys, or decrypted values.
1296
+ */
1297
+ interface ExecutionNodeAiSummary {
1298
+ isAiNode: boolean;
1299
+ nodeKind?: AiNodeKind | null;
1300
+ preset?: string | null;
1301
+ specializedNodeType?: string | null;
1302
+ profileKey?: string | null;
1303
+ providerKey?: string | null;
1304
+ model?: string | null;
1305
+ inputTokens?: number | null;
1306
+ outputTokens?: number | null;
1307
+ totalTokens?: number | null;
1308
+ estimatedCost?: number | null;
1309
+ durationMs?: number | null;
1310
+ promptHash?: string | null;
1311
+ responseHash?: string | null;
1312
+ rawPromptStored?: boolean | null;
1313
+ rawResponseStored?: boolean | null;
1314
+ outputValidation?: string | null;
1315
+ lastErrorCode?: string | null;
1316
+ lastErrorMessage?: string | null;
1317
+ }
1318
+ /**
1319
+ * Reads and narrows `helperMetadata.ai`. Accepts the raw `helperMetadata`
1320
+ * record (not the catalog item) to avoid a circular contract dependency.
1321
+ * Returns null when the node is not an AI node.
1322
+ */
1323
+ declare function readAiNodeHelperMetadata(helperMetadata: Record<string, unknown> | null | undefined): AiNodeHelperMetadata | null;
1324
+
1232
1325
  type AutomationStatus = 'Draft' | 'Active' | 'Inactive' | 'Published' | 'Archived' | string;
1233
1326
  type AutomationTriggerType = 'ManualTrigger' | 'WebhookTrigger' | 'FormSubmitTrigger' | 'ScheduleTrigger' | string;
1234
- type AutomationNodeType = 'SetFields' | 'If' | 'HTTP' | 'Wait' | 'HumanTask' | 'HumanApproval' | 'FlowPlusCommit' | 'ConnectorAction' | 'ConvertToFile' | 'LoopOverItems' | 'DataTransform' | 'WebhookResponse' | 'Stop' | 'CallAutomation' | 'Subworkflow' | 'ParallelStart' | 'ParallelJoin' | 'Switch' | string;
1327
+ type AutomationNodeType = 'SetFields' | 'If' | 'HTTP' | 'Wait' | 'HumanTask' | 'HumanApproval' | 'FlowPlusCommit' | 'ConnectorAction' | 'BusinessAction' | 'ConvertToFile' | 'LoopOverItems' | 'DataTransform' | 'WebhookResponse' | 'Stop' | 'CallAutomation' | 'Subworkflow' | 'ParallelStart' | 'ParallelJoin' | 'Switch' | string;
1235
1328
  type AutomationExecutionStatus = 'Queued' | 'Running' | 'Waiting' | 'Paused' | 'PausedOnFailure' | 'Succeeded' | 'Failed' | 'Canceled' | 'Cancelled' | 'TimedOut' | string;
1236
1329
  interface AutomationSummary {
1237
1330
  automationId: number | string;
@@ -1390,6 +1483,7 @@ interface AutomationBuilderCatalog {
1390
1483
  nodeTypes: NodeTypeCatalogItem[];
1391
1484
  triggerTypes: TriggerTypeCatalogItem[];
1392
1485
  connectorCatalog?: ConnectorCatalog | null;
1486
+ businessActionCatalog?: BusinessActionCatalog | null;
1393
1487
  convertToFileCatalog?: ConvertToFileCatalog | null;
1394
1488
  dataTransformCatalog?: DataTransformCatalog | null;
1395
1489
  expressionNamespaces?: ExpressionNamespaceDescriptor[];
@@ -1441,6 +1535,203 @@ interface ConnectorActionCatalogItem {
1441
1535
  helperMetadata?: Record<string, unknown> | null;
1442
1536
  [key: string]: unknown;
1443
1537
  }
1538
+ interface BusinessActionCatalog {
1539
+ apps?: BusinessActionApp[];
1540
+ actions?: BusinessActionDefinition[];
1541
+ }
1542
+ interface BusinessActionAppsResult {
1543
+ apps?: BusinessActionApp[];
1544
+ }
1545
+ interface BusinessActionListResult {
1546
+ actions?: BusinessActionDefinition[];
1547
+ }
1548
+ interface BusinessActionApp {
1549
+ appKey: string;
1550
+ displayName?: string | null;
1551
+ serviceName?: string | null;
1552
+ available?: boolean;
1553
+ unavailableReason?: string | null;
1554
+ [key: string]: unknown;
1555
+ }
1556
+ interface BusinessActionField {
1557
+ key: string;
1558
+ label?: string | null;
1559
+ displayName?: string | null;
1560
+ description?: string | null;
1561
+ type?: string | null;
1562
+ dataType?: string | null;
1563
+ required?: boolean;
1564
+ defaultValueJson?: string | null;
1565
+ defaultValue?: unknown;
1566
+ controlType?: string | null;
1567
+ optionsProviderKey?: string | null;
1568
+ visibilityRule?: string | null;
1569
+ validationRule?: string | null;
1570
+ helpText?: string | null;
1571
+ exampleJson?: string | null;
1572
+ options?: BusinessActionOption[];
1573
+ [key: string]: unknown;
1574
+ }
1575
+ interface BusinessActionOptionProvider {
1576
+ key: string;
1577
+ fieldKey?: string | null;
1578
+ displayName?: string | null;
1579
+ requiresContext?: boolean;
1580
+ [key: string]: unknown;
1581
+ }
1582
+ interface BusinessActionDefinition {
1583
+ appKey: string;
1584
+ appDisplayName?: string | null;
1585
+ actionKey: string;
1586
+ displayName?: string | null;
1587
+ description?: string | null;
1588
+ category?: string | null;
1589
+ icon?: string | null;
1590
+ tags?: string[];
1591
+ configFields?: BusinessActionField[];
1592
+ inputFields?: BusinessActionField[];
1593
+ outputFields?: BusinessActionField[];
1594
+ optionProviders?: BusinessActionOptionProvider[];
1595
+ schemaHash?: string | null;
1596
+ sideEffectLevel?: string | null;
1597
+ dangerLevel?: string | null;
1598
+ supportsValidation?: boolean;
1599
+ supportsTest?: boolean;
1600
+ supportsDryRun?: boolean;
1601
+ supportsIdempotency?: boolean;
1602
+ timeoutDefaultSeconds?: number | null;
1603
+ retryDefaultMaxAttempts?: number | null;
1604
+ permissionHints?: string[];
1605
+ helpText?: string | null;
1606
+ sampleInputJson?: string | null;
1607
+ sampleOutputJson?: string | null;
1608
+ [key: string]: unknown;
1609
+ }
1610
+ interface BusinessActionNodeConfig {
1611
+ appKey?: string | null;
1612
+ actionKey?: string | null;
1613
+ schemaHash?: string | null;
1614
+ config?: Record<string, unknown>;
1615
+ inputMapping?: Record<string, unknown>;
1616
+ timeoutSeconds?: number | null;
1617
+ failureBehavior?: string | null;
1618
+ retryPolicy?: Record<string, unknown> | null;
1619
+ idempotencyKeyExpression?: string | null;
1620
+ actorMode?: string | null;
1621
+ allowSchemaDrift?: boolean;
1622
+ businessActionDefinition?: BusinessActionDefinition | null;
1623
+ [key: string]: unknown;
1624
+ }
1625
+ interface BusinessActionDiscoveryContext {
1626
+ tenantId?: string | null;
1627
+ tenant_id?: string | null;
1628
+ metadata?: Record<string, string>;
1629
+ }
1630
+ interface BusinessActionAutomationContext {
1631
+ tenantId?: string | null;
1632
+ tenant_id?: string | null;
1633
+ automationId?: number | string | null;
1634
+ automation_id?: number | string | null;
1635
+ automationRevisionId?: number | string | null;
1636
+ automation_revision_id?: number | string | null;
1637
+ executionId?: number | string | null;
1638
+ execution_id?: number | string | null;
1639
+ nodeRunId?: number | string | null;
1640
+ node_run_id?: number | string | null;
1641
+ nodeAttemptId?: number | string | null;
1642
+ node_attempt_id?: number | string | null;
1643
+ nodeKey?: string | null;
1644
+ node_key?: string | null;
1645
+ correlationId?: string | null;
1646
+ correlation_id?: string | null;
1647
+ }
1648
+ interface BusinessActionOptionsRequest {
1649
+ appKey?: string;
1650
+ app_key?: string;
1651
+ actionKey?: string;
1652
+ action_key?: string;
1653
+ fieldKey?: string;
1654
+ field_key?: string;
1655
+ configJson?: string;
1656
+ config_json?: string;
1657
+ inputJson?: string;
1658
+ input_json?: string;
1659
+ discoveryContext?: BusinessActionDiscoveryContext;
1660
+ discovery_context?: BusinessActionDiscoveryContext;
1661
+ automationContext?: BusinessActionAutomationContext;
1662
+ automation_context?: BusinessActionAutomationContext;
1663
+ }
1664
+ interface BusinessActionOption {
1665
+ value: string;
1666
+ label?: string | null;
1667
+ disabled?: boolean;
1668
+ metadata?: Record<string, string>;
1669
+ [key: string]: unknown;
1670
+ }
1671
+ interface BusinessActionOptionsResponse {
1672
+ success?: boolean;
1673
+ options?: BusinessActionOption[];
1674
+ error?: BusinessActionError | null;
1675
+ }
1676
+ interface BusinessActionValidateRequest {
1677
+ appKey?: string;
1678
+ app_key?: string;
1679
+ actionKey?: string;
1680
+ action_key?: string;
1681
+ configJson?: string;
1682
+ config_json?: string;
1683
+ inputJson?: string;
1684
+ input_json?: string;
1685
+ discoveryContext?: BusinessActionDiscoveryContext;
1686
+ discovery_context?: BusinessActionDiscoveryContext;
1687
+ automationContext?: BusinessActionAutomationContext;
1688
+ automation_context?: BusinessActionAutomationContext;
1689
+ }
1690
+ interface BusinessActionValidationIssue {
1691
+ code?: string | null;
1692
+ message?: string | null;
1693
+ target?: string | null;
1694
+ }
1695
+ interface BusinessActionValidateResponse {
1696
+ valid?: boolean;
1697
+ issues?: BusinessActionValidationIssue[];
1698
+ }
1699
+ interface BusinessActionActorContext {
1700
+ mode?: string | null;
1701
+ mode_key?: string | null;
1702
+ effectiveActorId?: string | null;
1703
+ effective_actor_id?: string | null;
1704
+ attributedActorId?: string | null;
1705
+ attributed_actor_id?: string | null;
1706
+ }
1707
+ interface BusinessActionTestRequest {
1708
+ appKey?: string;
1709
+ app_key?: string;
1710
+ actionKey?: string;
1711
+ action_key?: string;
1712
+ configJson?: string;
1713
+ config_json?: string;
1714
+ inputJson?: string;
1715
+ input_json?: string;
1716
+ dryRun?: boolean;
1717
+ dry_run?: boolean;
1718
+ actor?: BusinessActionActorContext;
1719
+ automationContext?: BusinessActionAutomationContext;
1720
+ automation_context?: BusinessActionAutomationContext;
1721
+ }
1722
+ interface BusinessActionError {
1723
+ code?: string | null;
1724
+ message?: string | null;
1725
+ retryable?: boolean;
1726
+ detailJson?: string | null;
1727
+ detail_json?: string | null;
1728
+ }
1729
+ interface BusinessActionTestResponse {
1730
+ success?: boolean;
1731
+ outputJson?: string | null;
1732
+ output_json?: string | null;
1733
+ error?: BusinessActionError | null;
1734
+ }
1444
1735
  interface ConvertToFileCatalog {
1445
1736
  actions?: ConvertToFileActionCatalogItem[];
1446
1737
  }
@@ -1506,7 +1797,13 @@ interface NodeTypeCatalogItem {
1506
1797
  defaultRetryPolicy?: Record<string, unknown> | null;
1507
1798
  defaultTimeoutPolicy?: Record<string, unknown> | null;
1508
1799
  defaults?: Record<string, unknown> | null;
1509
- helperMetadata?: Record<string, unknown> | null;
1800
+ /**
1801
+ * Generic catalog metadata. For AI nodes the `ai` slice is typed — read it
1802
+ * via {@link readAiNodeHelperMetadata} to drive AI node config rendering.
1803
+ */
1804
+ helperMetadata?: (Record<string, unknown> & {
1805
+ ai?: AiNodeHelperMetadata;
1806
+ }) | null;
1510
1807
  validationRequirements?: Record<string, unknown> | string[] | null;
1511
1808
  canCreate?: boolean;
1512
1809
  isAvailable?: boolean;
@@ -1714,12 +2011,200 @@ interface FlowPlusCommitMappingValidationRequest {
1714
2011
  nodeKey?: string | null;
1715
2012
  [key: string]: unknown;
1716
2013
  }
2014
+ type ModuleDefinitionStatus = 'Draft' | 'Active' | 'Archived' | string;
2015
+ type ModuleFieldDataType = 'Text' | 'LongText' | 'Integer' | 'Decimal' | 'Boolean' | 'Date' | 'DateTime' | 'Lookup' | 'Json' | number | string;
2016
+ type ModuleFieldStorageType = 'String' | 'Int64' | 'Decimal' | 'Boolean' | 'DateTime' | 'Json' | number | string;
2017
+ interface CanonicalModuleDefinitionListParams extends Record<string, string | number | boolean | null | undefined> {
2018
+ status?: ModuleDefinitionStatus | null;
2019
+ search?: string | null;
2020
+ }
2021
+ interface CanonicalModuleDefinitionSummary {
2022
+ moduleDefinitionId: number;
2023
+ tenantId?: string | null;
2024
+ key: string;
2025
+ displayName: string;
2026
+ description?: string | null;
2027
+ projectId?: string | null;
2028
+ ownerId?: string | null;
2029
+ status?: ModuleDefinitionStatus | null;
2030
+ defaultFormDefinitionId?: number | null;
2031
+ fieldCount?: number | null;
2032
+ createdAtUtc?: string | null;
2033
+ updatedAtUtc?: string | null;
2034
+ createdBy?: string | null;
2035
+ updatedBy?: string | null;
2036
+ }
2037
+ interface CanonicalModuleDefinitionDetail extends CanonicalModuleDefinitionSummary {
2038
+ capabilitiesJson?: string | null;
2039
+ recordIdentityPolicyJson?: string | null;
2040
+ concurrencyPolicyJson?: string | null;
2041
+ fields?: CanonicalModuleField[];
2042
+ }
2043
+ interface CanonicalModuleSchema {
2044
+ moduleDefinitionId: number;
2045
+ tenantId?: string | null;
2046
+ key: string;
2047
+ displayName: string;
2048
+ description?: string | null;
2049
+ status?: ModuleDefinitionStatus | null;
2050
+ fields?: CanonicalModuleField[];
2051
+ }
2052
+ interface CanonicalModuleField {
2053
+ fieldId: number;
2054
+ moduleDefinitionId: number;
2055
+ tenantId?: string | null;
2056
+ key: string;
2057
+ displayName: string;
2058
+ description?: string | null;
2059
+ dataType: ModuleFieldDataType;
2060
+ storageType: ModuleFieldStorageType;
2061
+ isRequired?: boolean;
2062
+ isEditable?: boolean;
2063
+ isComputed?: boolean;
2064
+ isSystem?: boolean;
2065
+ isSearchable?: boolean;
2066
+ defaultValueJson?: string | null;
2067
+ validationRulesJson?: string | null;
2068
+ optionsSourceJson?: string | null;
2069
+ displayHintsJson?: string | null;
2070
+ order?: number | null;
2071
+ createdAtUtc?: string | null;
2072
+ updatedAtUtc?: string | null;
2073
+ }
2074
+ interface CreateCanonicalModuleFieldRequest {
2075
+ key: string;
2076
+ displayName: string;
2077
+ description?: string | null;
2078
+ dataType?: ModuleFieldDataType;
2079
+ storageType?: ModuleFieldStorageType;
2080
+ isRequired?: boolean;
2081
+ isEditable?: boolean;
2082
+ isComputed?: boolean;
2083
+ isSystem?: boolean;
2084
+ isSearchable?: boolean;
2085
+ defaultValueJson?: string | null;
2086
+ validationRulesJson?: string | null;
2087
+ optionsSourceJson?: string | null;
2088
+ displayHintsJson?: string | null;
2089
+ order?: number | null;
2090
+ }
2091
+ type UpdateCanonicalModuleFieldRequest = CreateCanonicalModuleFieldRequest;
2092
+ interface ReorderCanonicalModuleFieldRequestItem {
2093
+ fieldId: number;
2094
+ order: number;
2095
+ }
2096
+ interface ReorderCanonicalModuleFieldsRequest {
2097
+ fields: ReorderCanonicalModuleFieldRequestItem[];
2098
+ }
2099
+ type FormDefinitionStatus = 'Draft' | 'Active' | 'Archived' | string;
2100
+ type FormPurpose = 'Create' | 'Edit' | 'Review' | 'TaskInput' | 'ApprovalReview' | 'EditAndDecide' | 'Custom' | number | string;
2101
+ type FormRevisionStatus = 'Draft' | 'Published' | 'Archived' | string;
2102
+ interface CanonicalFormListParams extends Record<string, string | number | boolean | null | undefined> {
2103
+ moduleDefinitionId?: number | string | null;
2104
+ purpose?: FormPurpose | null;
2105
+ status?: FormDefinitionStatus | null;
2106
+ search?: string | null;
2107
+ }
2108
+ interface CanonicalFormDefinitionSummary {
2109
+ formDefinitionId: number;
2110
+ tenantId?: string | null;
2111
+ moduleDefinitionId?: number | null;
2112
+ key: string;
2113
+ displayName: string;
2114
+ description?: string | null;
2115
+ purpose?: FormPurpose | null;
2116
+ status?: FormDefinitionStatus | null;
2117
+ currentDraftRevisionId?: number | null;
2118
+ latestPublishedRevisionId?: number | null;
2119
+ createdAtUtc?: string | null;
2120
+ updatedAtUtc?: string | null;
2121
+ createdBy?: string | null;
2122
+ updatedBy?: string | null;
2123
+ }
2124
+ interface CanonicalFormDefinitionDetail {
2125
+ form?: CanonicalFormDefinitionSummary | null;
2126
+ revisions?: CanonicalFormRevisionSummary[];
2127
+ }
2128
+ interface CreateCanonicalFormDefinitionRequest {
2129
+ moduleDefinitionId?: number | null;
2130
+ key: string;
2131
+ displayName: string;
2132
+ description?: string | null;
2133
+ purpose?: FormPurpose;
2134
+ }
2135
+ interface UpdateCanonicalFormDefinitionRequest {
2136
+ moduleDefinitionId?: number | null;
2137
+ displayName: string;
2138
+ description?: string | null;
2139
+ purpose?: FormPurpose;
2140
+ status?: FormDefinitionStatus | null;
2141
+ }
2142
+ interface CreateCanonicalFormRevisionRequest {
2143
+ copyFromRevisionId?: number | null;
2144
+ schemaSnapshotJson?: string;
2145
+ layoutSnapshotJson?: string;
2146
+ fieldBindingSnapshotJson?: string;
2147
+ validationRulesSnapshotJson?: string;
2148
+ visibilityRulesSnapshotJson?: string;
2149
+ }
2150
+ interface UpdateCanonicalFormRevisionRequest {
2151
+ schemaSnapshotJson: string;
2152
+ layoutSnapshotJson: string;
2153
+ fieldBindingSnapshotJson: string;
2154
+ validationRulesSnapshotJson?: string;
2155
+ visibilityRulesSnapshotJson?: string;
2156
+ }
2157
+ interface CanonicalFormRevisionSummary {
2158
+ formRevisionId: number;
2159
+ formDefinitionId: number;
2160
+ tenantId?: string | null;
2161
+ revisionNumber: number;
2162
+ status?: FormRevisionStatus | null;
2163
+ hash?: string | null;
2164
+ publishedAtUtc?: string | null;
2165
+ publishedBy?: string | null;
2166
+ createdAtUtc?: string | null;
2167
+ updatedAtUtc?: string | null;
2168
+ isCurrentDraft?: boolean;
2169
+ isLatestPublished?: boolean;
2170
+ }
2171
+ interface CanonicalFormRevisionDetail {
2172
+ revision?: CanonicalFormRevisionSummary | null;
2173
+ schemaSnapshotJson?: string | null;
2174
+ layoutSnapshotJson?: string | null;
2175
+ fieldBindingSnapshotJson?: string | null;
2176
+ validationRulesSnapshotJson?: string | null;
2177
+ visibilityRulesSnapshotJson?: string | null;
2178
+ }
2179
+ interface CanonicalFormRevisionValidationResult {
2180
+ isValid?: boolean;
2181
+ hash?: string | null;
2182
+ issues?: Array<{
2183
+ code?: string | null;
2184
+ message?: string | null;
2185
+ fieldPath?: string | null;
2186
+ }>;
2187
+ }
2188
+ interface CanonicalFormRevisionPublishResult {
2189
+ formDefinitionId: number;
2190
+ formRevisionId: number;
2191
+ revisionNumber: number;
2192
+ hash?: string | null;
2193
+ publishedAtUtc?: string | null;
2194
+ publishedBy?: string | null;
2195
+ latestPublishedRevisionId?: number | null;
2196
+ }
1717
2197
  interface FormSelectorItem {
1718
2198
  formId: string;
2199
+ formDefinitionId?: number | string | null;
1719
2200
  displayName?: string | null;
1720
2201
  moduleId?: number | string | null;
2202
+ moduleDefinitionId?: number | string | null;
1721
2203
  moduleType?: string | null;
1722
2204
  latestVersionId?: string | null;
2205
+ currentDraftVersionId?: string | null;
2206
+ purpose?: FormPurpose | string | null;
2207
+ status?: FormDefinitionStatus | string | null;
1723
2208
  [key: string]: unknown;
1724
2209
  }
1725
2210
  interface FormSelectorContractResult {
@@ -1731,6 +2216,14 @@ interface FormSelectorContractResult {
1731
2216
  }
1732
2217
  interface FormVersionSummary {
1733
2218
  formVersionId: string;
2219
+ formDefinitionId?: number | string | null;
2220
+ formRevisionId?: number | string | null;
2221
+ revisionNumber?: number | null;
2222
+ status?: FormRevisionStatus | string | null;
2223
+ hash?: string | null;
2224
+ updatedAtUtc?: string | null;
2225
+ publishedAtUtc?: string | null;
2226
+ publishedBy?: string | null;
1734
2227
  isLatest?: boolean;
1735
2228
  isImmutable?: boolean;
1736
2229
  requiresSnapshotOnPublish?: boolean;
@@ -1971,6 +2464,8 @@ interface AutomationNodeRun {
1971
2464
  maxAttempts?: number | null;
1972
2465
  errorJson?: string | null;
1973
2466
  attempts?: AutomationNodeAttempt[];
2467
+ /** Safe AI execution summary (`node.ai`) — diagnostic metadata only. */
2468
+ ai?: ExecutionNodeAiSummary | null;
1974
2469
  }
1975
2470
  interface AutomationNodeAttempt {
1976
2471
  attemptId?: number | string;
@@ -2030,6 +2525,8 @@ interface AutomationExecutionNodeDataDetail {
2030
2525
  truncated?: boolean;
2031
2526
  replayAvailable?: boolean;
2032
2527
  replayAvailabilityReason?: string | null;
2528
+ /** Safe AI execution summary (`node.ai`) — diagnostic metadata only. */
2529
+ ai?: ExecutionNodeAiSummary | null;
2033
2530
  }
2034
2531
  interface ExecutionRetryRequest {
2035
2532
  nodeRunId?: number | string | null;
@@ -2130,6 +2627,581 @@ interface AutomationRetentionPruneResult {
2130
2627
  dryRun: boolean;
2131
2628
  }
2132
2629
 
2630
+ /**
2631
+ * Shared paging + query contracts for the Automation Client and Control Panel
2632
+ * Operations APIs.
2633
+ *
2634
+ * Source of truth: `Docs/Automation-Client-And-Operations-Frontend-Guide.md`.
2635
+ *
2636
+ * NOTE: the backend paged envelope uses `totalCount` (not `total`), so this is
2637
+ * intentionally distinct from the legacy {@link PagedResult}.
2638
+ */
2639
+ /** Paged `data` payload: `{ page, pageSize, totalCount, items }`. */
2640
+ interface AutomationPagedResult<T> {
2641
+ page: number;
2642
+ pageSize: number;
2643
+ totalCount: number;
2644
+ items: T[];
2645
+ }
2646
+ /** Common client list query (`ClientAutomationQuery`). Prefer `X-Tenant-Id`. */
2647
+ interface ClientAutomationQuery {
2648
+ tenantId?: string | null;
2649
+ search?: string | null;
2650
+ status?: string | null;
2651
+ automationId?: number | string | null;
2652
+ fromUtc?: string | null;
2653
+ toUtc?: string | null;
2654
+ page?: number | null;
2655
+ pageSize?: number | null;
2656
+ }
2657
+ /** Common admin operations list query (`AdminOperationsQuery`). */
2658
+ interface AdminOperationsQuery extends ClientAutomationQuery {
2659
+ /** Filter by actor/user id where supported. */
2660
+ actorId?: string | null;
2661
+ }
2662
+ /**
2663
+ * Some engine run/action endpoints return a bare error payload instead of the
2664
+ * `AppResponseViewModel` envelope. FE must handle both shapes.
2665
+ */
2666
+ interface EngineCommandError {
2667
+ errorCode: string;
2668
+ message?: string | null;
2669
+ }
2670
+ /** Headers required on command (start/action) submissions. */
2671
+ interface AutomationCommandHeaders {
2672
+ 'X-Correlation-Id': string;
2673
+ 'Idempotency-Key': string;
2674
+ 'X-Tenant-Id'?: string;
2675
+ }
2676
+
2677
+ /**
2678
+ * Control Panel -> Automation Engine -> Integrations contracts.
2679
+ *
2680
+ * Source of truth: `Docs/AUTOMATION_INTEGRATIONS_CONTROL_PANEL_CONTRACT.md`
2681
+ * and `Docs/AI_NODE_FRONTEND_IMPLEMENTATION_GUIDE.md`.
2682
+ *
2683
+ * SECURITY RULES (enforced by the UI):
2684
+ * - Secrets are WRITE-ONLY. Never prefill `apiKey/secret/token/...` after save.
2685
+ * - GET/list responses return `maskedFields` + `secretsReturned = false`.
2686
+ * Never display decrypted credential values.
2687
+ * - Raw prompt/response storage is unsupported — keep those toggles off/disabled.
2688
+ */
2689
+
2690
+ type IntegrationSectionKey = 'ai-providers' | 'connected-accounts' | 'local-on-prem' | 'security-policies';
2691
+ interface IntegrationSection {
2692
+ key: IntegrationSectionKey | string;
2693
+ title?: TranslatableText | string | null;
2694
+ description?: TranslatableText | string | null;
2695
+ order?: number | null;
2696
+ [key: string]: unknown;
2697
+ }
2698
+ /** Single bootstrap response for the Integrations page. */
2699
+ interface IntegrationsOverview {
2700
+ pageKey?: string | null;
2701
+ title?: TranslatableText | string | null;
2702
+ description?: TranslatableText | string | null;
2703
+ sections: IntegrationSection[];
2704
+ catalog: IntegrationProviderCatalogItem[];
2705
+ connections: IntegrationConnectionsResponse;
2706
+ aiProfile: AiProfile;
2707
+ endpointHints?: Record<string, string> | null;
2708
+ }
2709
+ type IntegrationProviderCategory = 'ai' | 'communication' | 'local' | 'generic' | string;
2710
+ type IntegrationAuthType = 'none' | 'api-key' | 'token' | 'oauth2' | 'smtp' | 'endpoint-credential' | string;
2711
+ /** Safe provider catalog metadata only — never implies a secret. */
2712
+ interface IntegrationProviderCatalogItem {
2713
+ providerKey: string;
2714
+ displayName?: TranslatableText | string | null;
2715
+ category?: IntegrationProviderCategory | null;
2716
+ authType?: IntegrationAuthType | null;
2717
+ status?: string | null;
2718
+ statusMessage?: string | null;
2719
+ isEnabled?: boolean;
2720
+ isRuntimeExecutable?: boolean;
2721
+ requiresConnection?: boolean;
2722
+ supportsTest?: boolean;
2723
+ supportsOAuth?: boolean;
2724
+ supportsManualCredential?: boolean;
2725
+ supportsStructuredOutput?: boolean;
2726
+ supportsTokenUsage?: boolean;
2727
+ supportsCostEstimate?: boolean;
2728
+ isFake?: boolean;
2729
+ supportedModels?: string[] | null;
2730
+ credentialTypeKey?: string | null;
2731
+ connectionCreateRoute?: string | null;
2732
+ connectionUpdateRoute?: string | null;
2733
+ testRoute?: string | null;
2734
+ metadata?: Record<string, unknown> | null;
2735
+ }
2736
+ interface IntegrationConnectionSummary {
2737
+ connectionRef: string;
2738
+ displayName?: string | null;
2739
+ providerKey: string;
2740
+ providerDisplayName?: TranslatableText | string | null;
2741
+ category?: IntegrationProviderCategory | null;
2742
+ authType?: IntegrationAuthType | null;
2743
+ status?: string | null;
2744
+ source?: string | null;
2745
+ /** Masked, display-only credential fragments. NEVER decrypted values. */
2746
+ maskedFields?: Record<string, string> | null;
2747
+ createdAt?: string | null;
2748
+ updatedAt?: string | null;
2749
+ revokedAt?: string | null;
2750
+ expiresAt?: string | null;
2751
+ lastValidatedAt?: string | null;
2752
+ testRoute?: string | null;
2753
+ revokeRoute?: string | null;
2754
+ metadata?: Record<string, unknown> | null;
2755
+ }
2756
+ interface IntegrationConnectionsResponse {
2757
+ connections: IntegrationConnectionSummary[];
2758
+ /** Always false — list/GET calls never return decrypted secrets. */
2759
+ secretsReturned: boolean;
2760
+ }
2761
+ interface AiProviderMetadata {
2762
+ providerKey: string;
2763
+ displayName?: TranslatableText | string | null;
2764
+ requiresProviderConnectionRef?: boolean;
2765
+ supportedModels?: string[] | null;
2766
+ supportsStructuredOutput?: boolean;
2767
+ supportsTokenUsage?: boolean;
2768
+ supportsCostEstimate?: boolean;
2769
+ isFake?: boolean;
2770
+ isEnabled?: boolean;
2771
+ /** When false, render disabled/unavailable and show statusMessage. */
2772
+ isRuntimeExecutable?: boolean;
2773
+ status?: string | null;
2774
+ statusMessage?: string | null;
2775
+ }
2776
+ type AiProfileValidationStatus = 'Valid' | 'Invalid' | 'Unconfigured' | string;
2777
+ interface AiProfile {
2778
+ enabled: boolean;
2779
+ profileKey?: string | null;
2780
+ displayName?: string | null;
2781
+ providerKey?: string | null;
2782
+ providerConnectionRef?: string | null;
2783
+ providerConnectionRequired?: boolean;
2784
+ defaultModel?: string | null;
2785
+ defaultTemperature?: number | null;
2786
+ defaultMaxTokens?: number | null;
2787
+ defaultTimeoutSeconds?: number | null;
2788
+ maxTokensPerInvocation?: number | null;
2789
+ maxCostPerInvocation?: number | null;
2790
+ /** Unsupported — backend rejects `true`. Keep the toggle disabled/off. */
2791
+ rawPromptStorageEnabled?: boolean;
2792
+ /** Unsupported — backend rejects `true`. Keep the toggle disabled/off. */
2793
+ rawResponseStorageEnabled?: boolean;
2794
+ redactionMode?: string | null;
2795
+ status?: string | null;
2796
+ isConfigured?: boolean;
2797
+ validationStatus?: AiProfileValidationStatus | null;
2798
+ validationMessages?: string[] | null;
2799
+ availableProviders: AiProviderMetadata[];
2800
+ }
2801
+ /** PUT body for the AI profile. Provider/model/policy only — no secrets. */
2802
+ interface AiProfileUpdateRequest {
2803
+ enabled: boolean;
2804
+ providerKey?: string | null;
2805
+ providerConnectionRef?: string | null;
2806
+ defaultModel?: string | null;
2807
+ defaultTemperature?: number | null;
2808
+ defaultMaxTokens?: number | null;
2809
+ defaultTimeoutSeconds?: number | null;
2810
+ maxTokensPerInvocation?: number | null;
2811
+ maxCostPerInvocation?: number | null;
2812
+ redactionMode?: string | null;
2813
+ /** Always omit or `false` — backend rejects `true`. */
2814
+ rawPromptStorageEnabled?: false;
2815
+ rawResponseStorageEnabled?: false;
2816
+ }
2817
+ /** POST/PUT openai. `apiKey` is write-only; never returned, never prefilled. */
2818
+ interface OpenAiConnectionRequest {
2819
+ displayName: string;
2820
+ apiKey: string;
2821
+ }
2822
+ type LocalProviderRequestMode = 'responses' | 'chat-completions';
2823
+ /** POST/PUT local-openai-compatible. `baseUrl` lives here, never in node config. */
2824
+ interface LocalOpenAiCompatibleConnectionRequest {
2825
+ displayName: string;
2826
+ baseUrl: string;
2827
+ /** Optional bearer key — write-only, never returned. */
2828
+ apiKey?: string | null;
2829
+ authScheme?: 'Bearer' | string;
2830
+ requestMode?: LocalProviderRequestMode;
2831
+ modelListPath?: string | null;
2832
+ }
2833
+ /** POST manual — only when the catalog says manual credentials are supported. */
2834
+ interface ManualConnectionRequest {
2835
+ providerKey: string;
2836
+ displayName: string;
2837
+ /** Provider-specific write-only secret/credential fields. */
2838
+ fields: Record<string, unknown>;
2839
+ }
2840
+ interface ConnectionTestRequest {
2841
+ connectionRef: string;
2842
+ }
2843
+ type AiProviderErrorCode = 'provider_not_enabled' | 'provider_connection_ref_required' | 'provider_credentials_missing' | 'provider_auth_failed' | 'provider_rate_limited' | 'provider_timeout' | 'provider_unavailable' | 'provider_bad_request' | 'local_provider_endpoint_not_found' | 'local_provider_redirect_not_allowed' | 'local_provider_unsupported_feature' | 'provider_response_too_large' | 'ai_model_not_supported' | string;
2844
+ interface AiTokenUsage {
2845
+ inputTokens?: number | null;
2846
+ outputTokens?: number | null;
2847
+ totalTokens?: number | null;
2848
+ }
2849
+ /** Result of a connection / AI profile test. Never includes raw prompt/response. */
2850
+ interface ConnectionTestResult {
2851
+ success: boolean;
2852
+ providerKey?: string | null;
2853
+ model?: string | null;
2854
+ durationMs?: number | null;
2855
+ tokenUsage?: AiTokenUsage | null;
2856
+ errorCode?: AiProviderErrorCode | null;
2857
+ message?: string | null;
2858
+ }
2859
+
2860
+ /**
2861
+ * Control Panel -> Operations contracts (`/api/control-panel/operations/*`).
2862
+ *
2863
+ * Source of truth: `Docs/Automation-Client-And-Operations-Frontend-Guide.md` §5.
2864
+ * All routes require authenticated CONTROL_PANEL permission. Read/monitor only.
2865
+ */
2866
+ interface OperationsStatusCount {
2867
+ status: string;
2868
+ count: number;
2869
+ }
2870
+ interface OperationsRecentFailure {
2871
+ instanceRef: string;
2872
+ executionId?: number | string | null;
2873
+ automationName?: string | null;
2874
+ status?: string | null;
2875
+ failedAtUtc?: string | null;
2876
+ errorSummaryPreview?: string | null;
2877
+ }
2878
+ interface OperationsOpenWorkItem {
2879
+ workItemRef: string;
2880
+ instanceRef?: string | null;
2881
+ title?: string | null;
2882
+ status?: string | null;
2883
+ dueAtUtc?: string | null;
2884
+ createdAtUtc?: string | null;
2885
+ }
2886
+ interface OperationsOverview {
2887
+ generatedAtUtc: string;
2888
+ runningExecutions: number;
2889
+ waitingExecutions: number;
2890
+ failedExecutionsLast24Hours: number;
2891
+ openHumanInteractions: number;
2892
+ overdueHumanInteractions: number;
2893
+ activeBackgroundWorkItems: number;
2894
+ failedBackgroundWorkItems: number;
2895
+ executionStatusCounts: OperationsStatusCount[];
2896
+ humanInteractionStatusCounts: OperationsStatusCount[];
2897
+ runtimeWaitStatusCounts: OperationsStatusCount[];
2898
+ backgroundWorkStateCounts: OperationsStatusCount[];
2899
+ recentFailures: OperationsRecentFailure[];
2900
+ oldestOpenWorkItems: OperationsOpenWorkItem[];
2901
+ }
2902
+ interface OperationsHealth {
2903
+ generatedAtUtc: string;
2904
+ queuedExecutions: number;
2905
+ runningExecutions: number;
2906
+ waitingExecutions: number;
2907
+ failedExecutionsLast24Hours: number;
2908
+ openHumanInteractions: number;
2909
+ expiredRuntimeWaits: number;
2910
+ staleRunningNodeRuns: number;
2911
+ failedBackgroundWorkItems: number;
2912
+ staleBackgroundWorkItems: number;
2913
+ }
2914
+ interface OperationsWorkItem {
2915
+ workItemRef: string;
2916
+ instanceRef: string;
2917
+ tenantId?: string | null;
2918
+ interactionId: number | string;
2919
+ executionId?: number | string | null;
2920
+ nodeRunId?: number | string | null;
2921
+ nodeKey?: string | null;
2922
+ interactionMode?: string | null;
2923
+ status: string;
2924
+ title?: string | null;
2925
+ priority?: string | null;
2926
+ dueAtUtc?: string | null;
2927
+ createdAtUtc?: string | null;
2928
+ updatedAtUtc?: string | null;
2929
+ completedAtUtc?: string | null;
2930
+ completedBy?: string | null;
2931
+ formDefinitionId?: number | string | null;
2932
+ formRevisionId?: number | string | null;
2933
+ workCenterItemId?: string | null;
2934
+ assignmentPreview?: string | null;
2935
+ }
2936
+ interface OperationsInstanceSummary {
2937
+ instanceRef: string;
2938
+ tenantId?: string | null;
2939
+ executionId: number | string;
2940
+ automationId?: number | string | null;
2941
+ automationName?: string | null;
2942
+ automationStatus?: string | null;
2943
+ automationRevisionId?: number | string | null;
2944
+ triggerKey?: string | null;
2945
+ triggerType?: string | null;
2946
+ status: string;
2947
+ createdAtUtc?: string | null;
2948
+ startedAtUtc?: string | null;
2949
+ completedAtUtc?: string | null;
2950
+ failedAtUtc?: string | null;
2951
+ createdBy?: string | null;
2952
+ correlationId?: string | null;
2953
+ nodeRunCount?: number | null;
2954
+ openHumanInteractionCount?: number | null;
2955
+ waitingRuntimeWaitCount?: number | null;
2956
+ errorSummaryPreview?: string | null;
2957
+ }
2958
+ interface OperationsNodeRun {
2959
+ nodeRunId: number | string;
2960
+ nodeKey: string;
2961
+ nodeType: string;
2962
+ status: string;
2963
+ queuedAtUtc?: string | null;
2964
+ startedAtUtc?: string | null;
2965
+ completedAtUtc?: string | null;
2966
+ waitStartedAtUtc?: string | null;
2967
+ waitUntilUtc?: string | null;
2968
+ attemptCount?: number | null;
2969
+ maxAttempts?: number | null;
2970
+ workerId?: string | null;
2971
+ errorPreview?: string | null;
2972
+ }
2973
+ interface OperationsRuntimeWait {
2974
+ runtimeWaitId: number | string;
2975
+ executionId?: number | string | null;
2976
+ nodeRunId?: number | string | null;
2977
+ tenantId?: string | null;
2978
+ waitType: string;
2979
+ waitReason?: string | null;
2980
+ status: string;
2981
+ waitStartedAtUtc?: string | null;
2982
+ waitUntilUtc?: string | null;
2983
+ expiresAtUtc?: string | null;
2984
+ resumedAtUtc?: string | null;
2985
+ cancelledAtUtc?: string | null;
2986
+ expiredAtUtc?: string | null;
2987
+ resumedBy?: string | null;
2988
+ }
2989
+ interface OperationsInstanceDetail {
2990
+ instance: OperationsInstanceSummary;
2991
+ nodeRuns: OperationsNodeRun[];
2992
+ humanInteractions: OperationsWorkItem[];
2993
+ runtimeWaits: OperationsRuntimeWait[];
2994
+ }
2995
+ interface OperationsTimelineEvent {
2996
+ eventId: number | string;
2997
+ executionId?: number | string | null;
2998
+ nodeRunId?: number | string | null;
2999
+ eventType: string;
3000
+ occurredAtUtc: string;
3001
+ actorId?: string | null;
3002
+ workerId?: string | null;
3003
+ severity?: 'Info' | 'Warning' | 'Error' | string;
3004
+ correlationId?: string | null;
3005
+ dataPreview?: string | null;
3006
+ }
3007
+ interface OperationsAutomationSummary {
3008
+ automationId: number | string;
3009
+ tenantId?: string | null;
3010
+ name?: string | null;
3011
+ description?: string | null;
3012
+ status?: string | null;
3013
+ ownerId?: string | null;
3014
+ projectId?: string | null;
3015
+ updatedAtUtc?: string | null;
3016
+ triggerCount?: number | null;
3017
+ manualTriggerCount?: number | null;
3018
+ formBindingCount?: number | null;
3019
+ activeExecutionCount?: number | null;
3020
+ failedExecutionCountLast24Hours?: number | null;
3021
+ }
3022
+ interface OperationsBottleneck {
3023
+ kind: string;
3024
+ key: string;
3025
+ label?: string | null;
3026
+ pendingCount: number;
3027
+ overdueCount: number;
3028
+ oldestCreatedAtUtc?: string | null;
3029
+ }
3030
+ interface OperationsAuditEvent {
3031
+ id: number | string;
3032
+ sourceEventId?: string | null;
3033
+ sourceEventName?: string | null;
3034
+ sourceAggregateType?: string | null;
3035
+ sourceAggregateId?: string | null;
3036
+ sourceAction?: string | null;
3037
+ correlationId?: string | null;
3038
+ actorUserId?: string | null;
3039
+ occurredAtUtc: string;
3040
+ category?: string | null;
3041
+ operation?: string | null;
3042
+ importance?: string | null;
3043
+ surface?: string | null;
3044
+ primarySubjectType?: string | null;
3045
+ primarySubjectId?: string | null;
3046
+ actorDisplayName?: string | null;
3047
+ primarySubjectDisplayName?: string | null;
3048
+ }
3049
+
3050
+ /**
3051
+ * Client automation contracts (`/api/client/automation/*`).
3052
+ *
3053
+ * Source of truth: `Docs/Automation-Client-And-Operations-Frontend-Guide.md` §4.
3054
+ * User-scoped. The backend resolves the current user from auth context.
3055
+ *
3056
+ * RULES:
3057
+ * - Render action buttons strictly from `allowedActions` — never status-hardcoded.
3058
+ * - Run manual triggers by `triggerId` (NOT `triggerKey`).
3059
+ * - Submit start forms with the SAME `formRevisionId` the user opened.
3060
+ * - Command submissions need `X-Correlation-Id` + `Idempotency-Key`.
3061
+ */
3062
+ interface ClientManualTrigger {
3063
+ startRef: string;
3064
+ tenantId?: string | null;
3065
+ automationId: number | string;
3066
+ automationName?: string | null;
3067
+ automationStatus?: string | null;
3068
+ activeAutomationRevisionId?: number | string | null;
3069
+ /** Use this to RUN the trigger (not triggerKey). */
3070
+ triggerId: number | string;
3071
+ triggerKey?: string | null;
3072
+ triggerName?: string | null;
3073
+ triggerType?: string | null;
3074
+ isEnabled?: boolean;
3075
+ updatedAtUtc?: string | null;
3076
+ }
3077
+ interface ClientStartForm {
3078
+ startRef: string;
3079
+ tenantId?: string | null;
3080
+ formDefinitionId: number | string;
3081
+ formRevisionId: number | string;
3082
+ formKey?: string | null;
3083
+ displayName?: string | null;
3084
+ description?: string | null;
3085
+ purpose?: string | null;
3086
+ revisionNumber?: number | null;
3087
+ publishedAtUtc?: string | null;
3088
+ automationId?: number | string | null;
3089
+ automationName?: string | null;
3090
+ triggerKey?: string | null;
3091
+ /** Snapshot JSON strings used to render the form client-side. */
3092
+ schemaSnapshotJson?: string | null;
3093
+ layoutSnapshotJson?: string | null;
3094
+ fieldBindingSnapshotJson?: string | null;
3095
+ validationRulesSnapshotJson?: string | null;
3096
+ visibilityRulesSnapshotJson?: string | null;
3097
+ }
3098
+ interface ClientStartCatalog {
3099
+ manualTriggers: ClientManualTrigger[];
3100
+ forms: ClientStartForm[];
3101
+ }
3102
+ interface RunManualTriggerRequest {
3103
+ tenantId?: string | null;
3104
+ payload?: Record<string, unknown> | null;
3105
+ }
3106
+ interface SubmitStartFormRequest {
3107
+ tenantId?: string | null;
3108
+ formRevisionId: number | string;
3109
+ moduleDefinitionId?: number | string | null;
3110
+ triggerKey?: string | null;
3111
+ submissionId?: string | null;
3112
+ values: Record<string, unknown>;
3113
+ metadata?: Record<string, unknown> | null;
3114
+ }
3115
+ type InteractionAction = 'submit' | 'approve' | 'reject' | 'return' | 'cancel' | 'delegate';
3116
+ type InteractionAllowedAction = 'Submit' | 'Approve' | 'Reject' | 'Return' | 'Cancel' | 'Delegate' | string;
3117
+ interface ClientInteraction {
3118
+ interactionRef: string;
3119
+ instanceRef?: string | null;
3120
+ tenantId?: string | null;
3121
+ interactionId: number | string;
3122
+ executionId?: number | string | null;
3123
+ nodeRunId?: number | string | null;
3124
+ nodeKey?: string | null;
3125
+ interactionMode?: string | null;
3126
+ status: string;
3127
+ title?: string | null;
3128
+ description?: string | null;
3129
+ priority?: string | null;
3130
+ dueAtUtc?: string | null;
3131
+ createdAtUtc?: string | null;
3132
+ updatedAtUtc?: string | null;
3133
+ completedAtUtc?: string | null;
3134
+ completedBy?: string | null;
3135
+ formDefinitionId?: number | string | null;
3136
+ formRevisionId?: number | string | null;
3137
+ moduleRecordDraftId?: number | string | null;
3138
+ runtimeWaitId?: number | string | null;
3139
+ workCenterItemId?: string | null;
3140
+ /** The ONLY source of truth for which action buttons to render. */
3141
+ allowedActions?: InteractionAllowedAction[] | null;
3142
+ assignment?: Record<string, unknown> | null;
3143
+ }
3144
+ interface ClientRequestLifecycleStep {
3145
+ nodeRunId: number | string;
3146
+ nodeKey: string;
3147
+ nodeType?: string | null;
3148
+ status: string;
3149
+ queuedAtUtc?: string | null;
3150
+ startedAtUtc?: string | null;
3151
+ completedAtUtc?: string | null;
3152
+ waitStartedAtUtc?: string | null;
3153
+ waitUntilUtc?: string | null;
3154
+ attemptCount?: number | null;
3155
+ }
3156
+ interface ClientRequestLifecycleEvent {
3157
+ eventId: number | string;
3158
+ eventType: string;
3159
+ occurredAtUtc: string;
3160
+ nodeRunId?: number | string | null;
3161
+ actorId?: string | null;
3162
+ severity?: 'Info' | 'Warning' | 'Error' | string;
3163
+ }
3164
+ interface ClientRequestLifecycle {
3165
+ request: ClientRequestSummary | Record<string, unknown>;
3166
+ steps: ClientRequestLifecycleStep[];
3167
+ events: ClientRequestLifecycleEvent[];
3168
+ }
3169
+ interface ClientInteractionDetail {
3170
+ interaction: ClientInteraction;
3171
+ payload?: unknown;
3172
+ lifecycle?: ClientRequestLifecycle | null;
3173
+ }
3174
+ interface SaveInteractionDraftRequest {
3175
+ tenantId?: string | null;
3176
+ values: Record<string, unknown>;
3177
+ metadata?: Record<string, unknown> | null;
3178
+ }
3179
+ interface InteractionActionRequest {
3180
+ tenantId?: string | null;
3181
+ values?: Record<string, unknown> | null;
3182
+ comments?: string | null;
3183
+ /** Required when action is `delegate`. */
3184
+ delegateTo?: string | null;
3185
+ metadata?: Record<string, unknown> | null;
3186
+ }
3187
+ interface ClientRequestSummary {
3188
+ instanceRef: string;
3189
+ tenantId?: string | null;
3190
+ executionId: number | string;
3191
+ automationId?: number | string | null;
3192
+ automationName?: string | null;
3193
+ triggerKey?: string | null;
3194
+ triggerType?: string | null;
3195
+ status: string;
3196
+ createdAtUtc?: string | null;
3197
+ startedAtUtc?: string | null;
3198
+ completedAtUtc?: string | null;
3199
+ failedAtUtc?: string | null;
3200
+ createdBy?: string | null;
3201
+ correlationId?: string | null;
3202
+ openInteractionCount?: number | null;
3203
+ }
3204
+
2133
3205
  /**
2134
3206
  * Optional configuration for {@link provideFlowplusWorkflow}.
2135
3207
  *
@@ -2224,6 +3296,13 @@ declare class EndpointBuilder {
2224
3296
  automationBuilderCatalog(): string;
2225
3297
  automationNodeTypes(): string;
2226
3298
  automationBuilderConnectors(): string;
3299
+ automationBusinessActionsRoot(): string;
3300
+ automationBusinessActionApps(): string;
3301
+ automationBusinessActions(appKey?: string | null): string;
3302
+ automationBusinessAction(appKey: string, actionKey: string): string;
3303
+ automationBusinessActionOptions(appKey: string, actionKey: string, fieldKey: string): string;
3304
+ automationBusinessActionValidate(appKey: string, actionKey: string): string;
3305
+ automationBusinessActionTest(appKey: string, actionKey: string): string;
2227
3306
  automationTriggerTypes(): string;
2228
3307
  automationSubworkflowAutomations(): string;
2229
3308
  automationExpressionNamespaces(): string;
@@ -2239,6 +3318,20 @@ declare class EndpointBuilder {
2239
3318
  automationFlowplusModuleSchema(moduleKey: string): string;
2240
3319
  automationFlowplusOperations(): string;
2241
3320
  automationFlowplusCommitMappingValidate(): string;
3321
+ canonicalModuleDefinitions(): string;
3322
+ canonicalModuleDefinition(moduleDefinitionId: number | string): string;
3323
+ canonicalModuleSchema(moduleDefinitionId: number | string): string;
3324
+ canonicalModuleFields(moduleDefinitionId: number | string): string;
3325
+ canonicalModuleField(moduleDefinitionId: number | string, fieldId: number | string): string;
3326
+ canonicalModuleFieldReorder(moduleDefinitionId: number | string): string;
3327
+ canonicalForms(): string;
3328
+ canonicalForm(formDefinitionId: number | string): string;
3329
+ canonicalFormArchive(formDefinitionId: number | string): string;
3330
+ canonicalFormRevisions(formDefinitionId: number | string): string;
3331
+ canonicalFormRevision(formDefinitionId: number | string, revisionId: number | string): string;
3332
+ canonicalFormLatestPublishedRevision(formDefinitionId: number | string): string;
3333
+ canonicalFormRevisionValidate(formDefinitionId: number | string, revisionId: number | string): string;
3334
+ canonicalFormRevisionPublish(formDefinitionId: number | string, revisionId: number | string): string;
2242
3335
  automationForms(): string;
2243
3336
  automationFormVersions(formId: number | string): string;
2244
3337
  automationLatestFormVersion(formId: number | string): string;
@@ -2301,6 +3394,44 @@ declare class EndpointBuilder {
2301
3394
  processEngineEvents(requestId: number | string): string;
2302
3395
  processEngineReplay(requestId: number | string): string;
2303
3396
  processStepContextSnapshot(requestId: number | string, stepId: number | string): string;
3397
+ integrationsRoot(): string;
3398
+ /** GET — single page bootstrap (overview). */
3399
+ integrations(): string;
3400
+ integrationsCatalog(): string;
3401
+ integrationsConnections(): string;
3402
+ integrationsConnection(connectionRef: string): string;
3403
+ integrationsConnectionManual(): string;
3404
+ integrationsConnectionOpenai(connectionRef?: string | null): string;
3405
+ integrationsConnectionLocalOpenai(connectionRef?: string | null): string;
3406
+ integrationsConnectionTest(): string;
3407
+ integrationsAiProfile(): string;
3408
+ integrationsAiProfileTest(): string;
3409
+ integrationsOAuthStart(): string;
3410
+ integrationsOAuthCallback(): string;
3411
+ operationsRoot(): string;
3412
+ operationsOverview(): string;
3413
+ operationsHealth(): string;
3414
+ operationsWorkItems(): string;
3415
+ operationsInstances(): string;
3416
+ operationsInstance(instanceRef: string): string;
3417
+ operationsInstanceTimeline(instanceRef: string): string;
3418
+ operationsAutomations(): string;
3419
+ operationsBottlenecks(): string;
3420
+ operationsAuditEvents(): string;
3421
+ clientAutomationRoot(): string;
3422
+ clientStartCatalog(): string;
3423
+ clientManualTriggers(): string;
3424
+ /** POST — run a manual trigger by concrete `triggerId` (NOT triggerKey). */
3425
+ clientManualTriggerRun(triggerId: number | string): string;
3426
+ clientForms(): string;
3427
+ clientFormSubmit(formDefinitionId: number | string): string;
3428
+ clientInteractionsCurrent(): string;
3429
+ clientInteractionsHistory(): string;
3430
+ clientInteraction(interactionId: number | string): string;
3431
+ clientInteractionDraft(interactionId: number | string): string;
3432
+ clientInteractionAction(interactionId: number | string, action: string): string;
3433
+ clientRequests(): string;
3434
+ clientRequestLifecycle(instanceRef: string): string;
2304
3435
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EndpointBuilder, never>;
2305
3436
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<EndpointBuilder>;
2306
3437
  }
@@ -2527,6 +3658,13 @@ declare class AutomationBuilderCatalogApiService {
2527
3658
  invalidateCatalog(): void;
2528
3659
  nodeTypes(): Observable<NodeTypeCatalogItem[]>;
2529
3660
  connectors(): Observable<ConnectorCatalog>;
3661
+ businessActionApps(params?: Record<string, string | number | boolean | null | undefined>): Observable<BusinessActionApp[]>;
3662
+ businessActions(params?: Record<string, string | number | boolean | null | undefined>): Observable<BusinessActionDefinition[]>;
3663
+ businessActionsForApp(appKey: string, params?: Record<string, string | number | boolean | null | undefined>): Observable<BusinessActionDefinition[]>;
3664
+ businessActionDefinition(appKey: string, actionKey: string, params?: Record<string, string | number | boolean | null | undefined>): Observable<BusinessActionDefinition>;
3665
+ businessActionOptions(appKey: string, actionKey: string, fieldKey: string, request: BusinessActionOptionsRequest): Observable<BusinessActionOptionsResponse>;
3666
+ validateBusinessAction(appKey: string, actionKey: string, request: BusinessActionValidateRequest): Observable<BusinessActionValidateResponse>;
3667
+ testBusinessAction(appKey: string, actionKey: string, request: BusinessActionTestRequest): Observable<BusinessActionTestResponse>;
2530
3668
  triggerTypes(): Observable<TriggerTypeCatalogItem[]>;
2531
3669
  subworkflowAutomations(params?: Record<string, string | number | boolean | null | undefined>): Observable<AutomationSelectorResult>;
2532
3670
  expressionNamespaces(): Observable<ExpressionNamespaceDescriptor[]>;
@@ -2542,6 +3680,23 @@ declare class AutomationBuilderCatalogApiService {
2542
3680
  flowplusModuleSchema(moduleKey: string): Observable<FlowPlusModuleSchemaResult>;
2543
3681
  flowplusOperations(): Observable<string[]>;
2544
3682
  validateFlowplusCommitMapping(request: FlowPlusCommitMappingValidationRequest): Observable<ExpressionValidationResult>;
3683
+ canonicalModuleDefinitions(params?: CanonicalModuleDefinitionListParams): Observable<CanonicalModuleDefinitionSummary[]>;
3684
+ canonicalModuleDefinition(moduleDefinitionId: number | string): Observable<CanonicalModuleDefinitionDetail>;
3685
+ canonicalModuleSchema(moduleDefinitionId: number | string): Observable<CanonicalModuleSchema>;
3686
+ canonicalModuleFields(moduleDefinitionId: number | string): Observable<CanonicalModuleField[]>;
3687
+ createCanonicalModuleField(moduleDefinitionId: number | string, request: CreateCanonicalModuleFieldRequest): Observable<CanonicalModuleField>;
3688
+ updateCanonicalModuleField(moduleDefinitionId: number | string, fieldId: number | string, request: UpdateCanonicalModuleFieldRequest): Observable<CanonicalModuleField>;
3689
+ reorderCanonicalModuleFields(moduleDefinitionId: number | string, request: ReorderCanonicalModuleFieldsRequest): Observable<CanonicalModuleField[]>;
3690
+ canonicalForms(params?: CanonicalFormListParams): Observable<CanonicalFormDefinitionSummary[]>;
3691
+ canonicalForm(formDefinitionId: number | string): Observable<CanonicalFormDefinitionDetail>;
3692
+ createCanonicalForm(request: CreateCanonicalFormDefinitionRequest): Observable<CanonicalFormDefinitionSummary>;
3693
+ updateCanonicalForm(formDefinitionId: number | string, request: UpdateCanonicalFormDefinitionRequest): Observable<CanonicalFormDefinitionSummary>;
3694
+ canonicalFormRevisions(formDefinitionId: number | string): Observable<CanonicalFormRevisionSummary[]>;
3695
+ canonicalFormRevision(formDefinitionId: number | string, revisionId: number | string): Observable<CanonicalFormRevisionDetail>;
3696
+ createCanonicalFormRevision(formDefinitionId: number | string, request: CreateCanonicalFormRevisionRequest): Observable<CanonicalFormRevisionDetail>;
3697
+ updateCanonicalFormRevision(formDefinitionId: number | string, revisionId: number | string, request: UpdateCanonicalFormRevisionRequest): Observable<CanonicalFormRevisionDetail>;
3698
+ validateCanonicalFormRevision(formDefinitionId: number | string, revisionId: number | string): Observable<CanonicalFormRevisionValidationResult>;
3699
+ publishCanonicalFormRevision(formDefinitionId: number | string, revisionId: number | string): Observable<CanonicalFormRevisionPublishResult>;
2545
3700
  forms(): Observable<FormSelectorContractResult>;
2546
3701
  formVersions(formId: number | string): Observable<FormVersionListResult>;
2547
3702
  latestFormVersion(formId: number | string): Observable<FormVersionSummary>;
@@ -3634,7 +4789,7 @@ declare class FlowplusWorkflowFacade {
3634
4789
  readonly studio: _angular_core.Signal<_masterteam_flowplus_workflow.FlowplusStudioSlice>;
3635
4790
  readonly studioWorkflows: _angular_core.Signal<_masterteam_flowplus_workflow.WorkflowDefinitionSummaryDto[]>;
3636
4791
  readonly studioSearch: _angular_core.Signal<string>;
3637
- readonly studioStatusFilter: _angular_core.Signal<"published" | "all" | "draft" | "invalid" | "archived">;
4792
+ readonly studioStatusFilter: _angular_core.Signal<"invalid" | "published" | "all" | "draft" | "archived">;
3638
4793
  readonly builder: _angular_core.Signal<FlowplusBuilderSlice>;
3639
4794
  readonly workflow: _angular_core.Signal<_masterteam_flowplus_workflow.WorkflowDefinitionDto | null>;
3640
4795
  readonly steps: _angular_core.Signal<WorkflowStepDto[]>;
@@ -4102,6 +5257,435 @@ declare function resolveWorkflowTriggerKey(trigger: Partial<WorkflowTriggerDto>
4102
5257
  */
4103
5258
  declare const APP_STATES: (typeof FlowplusWorkflowState)[];
4104
5259
 
5260
+ declare class LoadIntegrationsOverview {
5261
+ static readonly type = "[Integrations] Load Overview";
5262
+ }
5263
+ declare class LoadIntegrationsCatalog {
5264
+ static readonly type = "[Integrations] Load Catalog";
5265
+ }
5266
+ declare class LoadIntegrationsConnections {
5267
+ static readonly type = "[Integrations] Load Connections";
5268
+ }
5269
+ declare class LoadAiProfile {
5270
+ static readonly type = "[Integrations] Load AI Profile";
5271
+ }
5272
+ declare class SaveAiProfile {
5273
+ payload: AiProfileUpdateRequest;
5274
+ static readonly type = "[Integrations] Save AI Profile";
5275
+ constructor(payload: AiProfileUpdateRequest);
5276
+ }
5277
+ declare class TestAiProfile {
5278
+ static readonly type = "[Integrations] Test AI Profile";
5279
+ }
5280
+ declare class CreateOpenAiConnection {
5281
+ payload: OpenAiConnectionRequest;
5282
+ static readonly type = "[Integrations] Create OpenAI Connection";
5283
+ constructor(payload: OpenAiConnectionRequest);
5284
+ }
5285
+ declare class UpdateOpenAiConnection {
5286
+ connectionRef: string;
5287
+ payload: OpenAiConnectionRequest;
5288
+ static readonly type = "[Integrations] Update OpenAI Connection";
5289
+ constructor(connectionRef: string, payload: OpenAiConnectionRequest);
5290
+ }
5291
+ declare class CreateLocalOpenAiConnection {
5292
+ payload: LocalOpenAiCompatibleConnectionRequest;
5293
+ static readonly type = "[Integrations] Create Local OpenAI Connection";
5294
+ constructor(payload: LocalOpenAiCompatibleConnectionRequest);
5295
+ }
5296
+ declare class UpdateLocalOpenAiConnection {
5297
+ connectionRef: string;
5298
+ payload: LocalOpenAiCompatibleConnectionRequest;
5299
+ static readonly type = "[Integrations] Update Local OpenAI Connection";
5300
+ constructor(connectionRef: string, payload: LocalOpenAiCompatibleConnectionRequest);
5301
+ }
5302
+ declare class CreateManualConnection {
5303
+ payload: ManualConnectionRequest;
5304
+ static readonly type = "[Integrations] Create Manual Connection";
5305
+ constructor(payload: ManualConnectionRequest);
5306
+ }
5307
+ declare class TestConnection {
5308
+ payload: ConnectionTestRequest;
5309
+ static readonly type = "[Integrations] Test Connection";
5310
+ constructor(payload: ConnectionTestRequest);
5311
+ }
5312
+ declare class RevokeConnection {
5313
+ connectionRef: string;
5314
+ static readonly type = "[Integrations] Revoke Connection";
5315
+ constructor(connectionRef: string);
5316
+ }
5317
+
5318
+ declare class IntegrationsFacade {
5319
+ private readonly store;
5320
+ readonly overview: _angular_core.Signal<_masterteam_flowplus_workflow.IntegrationsOverview | null>;
5321
+ readonly catalog: _angular_core.Signal<_masterteam_flowplus_workflow.IntegrationProviderCatalogItem[]>;
5322
+ readonly connections: _angular_core.Signal<_masterteam_flowplus_workflow.IntegrationConnectionSummary[]>;
5323
+ readonly aiProfile: _angular_core.Signal<_masterteam_flowplus_workflow.AiProfile | null>;
5324
+ readonly profileTestResult: _angular_core.Signal<_masterteam_flowplus_workflow.ConnectionTestResult | null>;
5325
+ readonly connectionTestResult: _angular_core.Signal<_masterteam_flowplus_workflow.ConnectionTestResult | null>;
5326
+ private readonly loadingActive;
5327
+ private readonly errors;
5328
+ readonly sections: _angular_core.Signal<_masterteam_flowplus_workflow.IntegrationSection[]>;
5329
+ readonly availableProviders: _angular_core.Signal<_masterteam_flowplus_workflow.AiProviderMetadata[]>;
5330
+ readonly secretsReturned: _angular_core.Signal<boolean>;
5331
+ readonly isLoadingOverview: _angular_core.Signal<boolean>;
5332
+ readonly isLoadingConnections: _angular_core.Signal<boolean>;
5333
+ readonly isLoadingAiProfile: _angular_core.Signal<boolean>;
5334
+ readonly isSavingAiProfile: _angular_core.Signal<boolean>;
5335
+ readonly isTestingAiProfile: _angular_core.Signal<boolean>;
5336
+ readonly isSavingConnection: _angular_core.Signal<boolean>;
5337
+ readonly isTestingConnection: _angular_core.Signal<boolean>;
5338
+ readonly isRevokingConnection: _angular_core.Signal<boolean>;
5339
+ readonly overviewError: _angular_core.Signal<string | null>;
5340
+ readonly aiProfileError: _angular_core.Signal<string | null>;
5341
+ readonly connectionError: _angular_core.Signal<string | null>;
5342
+ loadOverview(): rxjs.Observable<void>;
5343
+ loadCatalog(): rxjs.Observable<void>;
5344
+ loadConnections(): rxjs.Observable<void>;
5345
+ loadAiProfile(): rxjs.Observable<void>;
5346
+ saveAiProfile(payload: AiProfileUpdateRequest): rxjs.Observable<void>;
5347
+ testAiProfile(): rxjs.Observable<void>;
5348
+ createOpenAiConnection(payload: OpenAiConnectionRequest): rxjs.Observable<void>;
5349
+ updateOpenAiConnection(connectionRef: string, payload: OpenAiConnectionRequest): rxjs.Observable<void>;
5350
+ createLocalOpenAiConnection(payload: LocalOpenAiCompatibleConnectionRequest): rxjs.Observable<void>;
5351
+ updateLocalOpenAiConnection(connectionRef: string, payload: LocalOpenAiCompatibleConnectionRequest): rxjs.Observable<void>;
5352
+ createManualConnection(payload: ManualConnectionRequest): rxjs.Observable<void>;
5353
+ testConnection(payload: ConnectionTestRequest): rxjs.Observable<void>;
5354
+ revokeConnection(connectionRef: string): rxjs.Observable<void>;
5355
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IntegrationsFacade, never>;
5356
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<IntegrationsFacade>;
5357
+ }
5358
+
5359
+ /** Loading/error tracking keys. Values match the state action-method names. */
5360
+ declare enum IntegrationsActionKey {
5361
+ LoadOverview = "loadOverview",
5362
+ LoadCatalog = "loadCatalog",
5363
+ LoadConnections = "loadConnections",
5364
+ LoadAiProfile = "loadAiProfile",
5365
+ SaveAiProfile = "saveAiProfile",
5366
+ TestAiProfile = "testAiProfile",
5367
+ CreateOpenAi = "createOpenAi",
5368
+ UpdateOpenAi = "updateOpenAi",
5369
+ CreateLocalOpenAi = "createLocalOpenAi",
5370
+ UpdateLocalOpenAi = "updateLocalOpenAi",
5371
+ CreateManual = "createManual",
5372
+ TestConnection = "testConnection",
5373
+ RevokeConnection = "revokeConnection"
5374
+ }
5375
+ interface IntegrationsStateModel extends LoadingStateShape<IntegrationsActionKey> {
5376
+ overview: IntegrationsOverview | null;
5377
+ catalog: IntegrationProviderCatalogItem[];
5378
+ connections: IntegrationConnectionSummary[];
5379
+ /** Always false — secrets are never returned by list/GET calls. */
5380
+ secretsReturned: boolean;
5381
+ aiProfile: AiProfile | null;
5382
+ /** Result of the last AI profile test. */
5383
+ profileTestResult: ConnectionTestResult | null;
5384
+ /** Result of the last provider-connection test. */
5385
+ connectionTestResult: ConnectionTestResult | null;
5386
+ }
5387
+ declare const INTEGRATIONS_DEFAULT_STATE: IntegrationsStateModel;
5388
+
5389
+ declare class IntegrationsState extends CrudStateBase<IntegrationConnectionSummary, IntegrationsStateModel, IntegrationsActionKey> {
5390
+ private readonly api;
5391
+ static getOverview(state: IntegrationsStateModel): IntegrationsOverview | null;
5392
+ static getCatalog(state: IntegrationsStateModel): IntegrationProviderCatalogItem[];
5393
+ static getConnections(state: IntegrationsStateModel): IntegrationConnectionSummary[];
5394
+ static getAiProfile(state: IntegrationsStateModel): AiProfile | null;
5395
+ static getProfileTestResult(state: IntegrationsStateModel): ConnectionTestResult | null;
5396
+ static getConnectionTestResult(state: IntegrationsStateModel): ConnectionTestResult | null;
5397
+ static getLoadingActive(state: IntegrationsStateModel): IntegrationsActionKey[];
5398
+ static getErrors(state: IntegrationsStateModel): Partial<Record<IntegrationsActionKey, string>>;
5399
+ loadOverview(ctx: StateContext<IntegrationsStateModel>): rxjs.Observable<IntegrationsOverview>;
5400
+ loadCatalog(ctx: StateContext<IntegrationsStateModel>): rxjs.Observable<IntegrationProviderCatalogItem[]>;
5401
+ loadConnections(ctx: StateContext<IntegrationsStateModel>): rxjs.Observable<_masterteam_flowplus_workflow.IntegrationConnectionsResponse>;
5402
+ loadAiProfile(ctx: StateContext<IntegrationsStateModel>): rxjs.Observable<AiProfile>;
5403
+ saveAiProfile(ctx: StateContext<IntegrationsStateModel>, { payload }: SaveAiProfile): rxjs.Observable<AiProfile>;
5404
+ testAiProfile(ctx: StateContext<IntegrationsStateModel>): rxjs.Observable<ConnectionTestResult>;
5405
+ createOpenAi(ctx: StateContext<IntegrationsStateModel>, { payload }: CreateOpenAiConnection): rxjs.Observable<IntegrationConnectionSummary>;
5406
+ updateOpenAi(ctx: StateContext<IntegrationsStateModel>, { connectionRef, payload }: UpdateOpenAiConnection): rxjs.Observable<IntegrationConnectionSummary>;
5407
+ createLocalOpenAi(ctx: StateContext<IntegrationsStateModel>, { payload }: CreateLocalOpenAiConnection): rxjs.Observable<IntegrationConnectionSummary>;
5408
+ updateLocalOpenAi(ctx: StateContext<IntegrationsStateModel>, { connectionRef, payload }: UpdateLocalOpenAiConnection): rxjs.Observable<IntegrationConnectionSummary>;
5409
+ createManual(ctx: StateContext<IntegrationsStateModel>, { payload }: CreateManualConnection): rxjs.Observable<IntegrationConnectionSummary>;
5410
+ testConnection(ctx: StateContext<IntegrationsStateModel>, { payload }: TestConnection): rxjs.Observable<ConnectionTestResult>;
5411
+ revokeConnection(ctx: StateContext<IntegrationsStateModel>, { connectionRef }: RevokeConnection): rxjs.Observable<void>;
5412
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IntegrationsState, never>;
5413
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<IntegrationsState>;
5414
+ }
5415
+
5416
+ declare class LoadOperationsOverview {
5417
+ static readonly type = "[Operations] Load Overview";
5418
+ }
5419
+ declare class LoadOperationsHealth {
5420
+ static readonly type = "[Operations] Load Health";
5421
+ }
5422
+ declare class LoadOperationsBottlenecks {
5423
+ static readonly type = "[Operations] Load Bottlenecks";
5424
+ }
5425
+ declare class LoadOperationsWorkItems {
5426
+ query?: AdminOperationsQuery | undefined;
5427
+ static readonly type = "[Operations] Load Work Items";
5428
+ constructor(query?: AdminOperationsQuery | undefined);
5429
+ }
5430
+ declare class LoadOperationsInstances {
5431
+ query?: AdminOperationsQuery | undefined;
5432
+ static readonly type = "[Operations] Load Instances";
5433
+ constructor(query?: AdminOperationsQuery | undefined);
5434
+ }
5435
+ declare class LoadOperationsInstance {
5436
+ instanceRef: string;
5437
+ static readonly type = "[Operations] Load Instance";
5438
+ constructor(instanceRef: string);
5439
+ }
5440
+ declare class LoadOperationsInstanceTimeline {
5441
+ instanceRef: string;
5442
+ take: number;
5443
+ static readonly type = "[Operations] Load Instance Timeline";
5444
+ constructor(instanceRef: string, take?: number);
5445
+ }
5446
+ declare class LoadOperationsAutomations {
5447
+ query?: AdminOperationsQuery | undefined;
5448
+ static readonly type = "[Operations] Load Automations";
5449
+ constructor(query?: AdminOperationsQuery | undefined);
5450
+ }
5451
+ declare class LoadOperationsAuditEvents {
5452
+ query?: AdminOperationsQuery | undefined;
5453
+ static readonly type = "[Operations] Load Audit Events";
5454
+ constructor(query?: AdminOperationsQuery | undefined);
5455
+ }
5456
+
5457
+ declare class OperationsFacade {
5458
+ private readonly store;
5459
+ readonly overview: _angular_core.Signal<_masterteam_flowplus_workflow.OperationsOverview | null>;
5460
+ readonly health: _angular_core.Signal<_masterteam_flowplus_workflow.OperationsHealth | null>;
5461
+ readonly workItems: _angular_core.Signal<_masterteam_flowplus_workflow.AutomationPagedResult<_masterteam_flowplus_workflow.OperationsWorkItem> | null>;
5462
+ readonly instances: _angular_core.Signal<_masterteam_flowplus_workflow.AutomationPagedResult<_masterteam_flowplus_workflow.OperationsInstanceSummary> | null>;
5463
+ readonly instanceDetail: _angular_core.Signal<_masterteam_flowplus_workflow.OperationsInstanceDetail | null>;
5464
+ readonly timeline: _angular_core.Signal<_masterteam_flowplus_workflow.OperationsTimelineEvent[]>;
5465
+ readonly automations: _angular_core.Signal<_masterteam_flowplus_workflow.AutomationPagedResult<_masterteam_flowplus_workflow.OperationsAutomationSummary> | null>;
5466
+ readonly bottlenecks: _angular_core.Signal<_masterteam_flowplus_workflow.OperationsBottleneck[]>;
5467
+ readonly auditEvents: _angular_core.Signal<_masterteam_flowplus_workflow.AutomationPagedResult<_masterteam_flowplus_workflow.OperationsAuditEvent> | null>;
5468
+ private readonly loadingActive;
5469
+ private readonly errors;
5470
+ readonly workItemRows: _angular_core.Signal<_masterteam_flowplus_workflow.OperationsWorkItem[]>;
5471
+ readonly instanceRows: _angular_core.Signal<_masterteam_flowplus_workflow.OperationsInstanceSummary[]>;
5472
+ readonly automationRows: _angular_core.Signal<_masterteam_flowplus_workflow.OperationsAutomationSummary[]>;
5473
+ readonly auditRows: _angular_core.Signal<_masterteam_flowplus_workflow.OperationsAuditEvent[]>;
5474
+ readonly isLoadingOverview: _angular_core.Signal<boolean>;
5475
+ readonly isLoadingWorkItems: _angular_core.Signal<boolean>;
5476
+ readonly isLoadingInstances: _angular_core.Signal<boolean>;
5477
+ readonly isLoadingInstance: _angular_core.Signal<boolean>;
5478
+ readonly isLoadingAutomations: _angular_core.Signal<boolean>;
5479
+ readonly isLoadingAuditEvents: _angular_core.Signal<boolean>;
5480
+ readonly overviewError: _angular_core.Signal<string | null>;
5481
+ loadOverview(): rxjs.Observable<void>;
5482
+ loadHealth(): rxjs.Observable<void>;
5483
+ loadBottlenecks(): rxjs.Observable<void>;
5484
+ loadWorkItems(query?: AdminOperationsQuery): rxjs.Observable<void>;
5485
+ loadInstances(query?: AdminOperationsQuery): rxjs.Observable<void>;
5486
+ loadInstance(instanceRef: string): rxjs.Observable<void>;
5487
+ loadTimeline(instanceRef: string, take?: number): rxjs.Observable<void>;
5488
+ loadAutomations(query?: AdminOperationsQuery): rxjs.Observable<void>;
5489
+ loadAuditEvents(query?: AdminOperationsQuery): rxjs.Observable<void>;
5490
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OperationsFacade, never>;
5491
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<OperationsFacade>;
5492
+ }
5493
+
5494
+ declare enum OperationsActionKey {
5495
+ LoadOverview = "loadOverview",
5496
+ LoadHealth = "loadHealth",
5497
+ LoadWorkItems = "loadWorkItems",
5498
+ LoadInstances = "loadInstances",
5499
+ LoadInstance = "loadInstance",
5500
+ LoadTimeline = "loadTimeline",
5501
+ LoadAutomations = "loadAutomations",
5502
+ LoadBottlenecks = "loadBottlenecks",
5503
+ LoadAuditEvents = "loadAuditEvents"
5504
+ }
5505
+ interface OperationsStateModel extends LoadingStateShape<OperationsActionKey> {
5506
+ overview: OperationsOverview | null;
5507
+ health: OperationsHealth | null;
5508
+ workItems: AutomationPagedResult<OperationsWorkItem> | null;
5509
+ instances: AutomationPagedResult<OperationsInstanceSummary> | null;
5510
+ instanceDetail: OperationsInstanceDetail | null;
5511
+ timeline: OperationsTimelineEvent[];
5512
+ automations: AutomationPagedResult<OperationsAutomationSummary> | null;
5513
+ bottlenecks: OperationsBottleneck[];
5514
+ auditEvents: AutomationPagedResult<OperationsAuditEvent> | null;
5515
+ }
5516
+ declare const OPERATIONS_DEFAULT_STATE: OperationsStateModel;
5517
+
5518
+ declare class OperationsState {
5519
+ private readonly api;
5520
+ static getOverview(state: OperationsStateModel): OperationsOverview | null;
5521
+ static getHealth(state: OperationsStateModel): OperationsHealth | null;
5522
+ static getWorkItems(state: OperationsStateModel): AutomationPagedResult<OperationsWorkItem> | null;
5523
+ static getInstances(state: OperationsStateModel): AutomationPagedResult<OperationsInstanceSummary> | null;
5524
+ static getInstanceDetail(state: OperationsStateModel): OperationsInstanceDetail | null;
5525
+ static getTimeline(state: OperationsStateModel): OperationsTimelineEvent[];
5526
+ static getAutomations(state: OperationsStateModel): AutomationPagedResult<OperationsAutomationSummary> | null;
5527
+ static getBottlenecks(state: OperationsStateModel): OperationsBottleneck[];
5528
+ static getAuditEvents(state: OperationsStateModel): AutomationPagedResult<OperationsAuditEvent> | null;
5529
+ static getLoadingActive(state: OperationsStateModel): OperationsActionKey[];
5530
+ static getErrors(state: OperationsStateModel): Partial<Record<OperationsActionKey, string>>;
5531
+ loadOverview(ctx: StateContext<OperationsStateModel>): rxjs.Observable<OperationsOverview>;
5532
+ loadHealth(ctx: StateContext<OperationsStateModel>): rxjs.Observable<OperationsHealth>;
5533
+ loadBottlenecks(ctx: StateContext<OperationsStateModel>): rxjs.Observable<OperationsBottleneck[]>;
5534
+ loadWorkItems(ctx: StateContext<OperationsStateModel>, { query }: LoadOperationsWorkItems): rxjs.Observable<AutomationPagedResult<OperationsWorkItem>>;
5535
+ loadInstances(ctx: StateContext<OperationsStateModel>, { query }: LoadOperationsInstances): rxjs.Observable<AutomationPagedResult<OperationsInstanceSummary>>;
5536
+ loadInstance(ctx: StateContext<OperationsStateModel>, { instanceRef }: LoadOperationsInstance): rxjs.Observable<OperationsInstanceDetail>;
5537
+ loadTimeline(ctx: StateContext<OperationsStateModel>, { instanceRef, take }: LoadOperationsInstanceTimeline): rxjs.Observable<OperationsTimelineEvent[]>;
5538
+ loadAutomations(ctx: StateContext<OperationsStateModel>, { query }: LoadOperationsAutomations): rxjs.Observable<AutomationPagedResult<OperationsAutomationSummary>>;
5539
+ loadAuditEvents(ctx: StateContext<OperationsStateModel>, { query }: LoadOperationsAuditEvents): rxjs.Observable<AutomationPagedResult<OperationsAuditEvent>>;
5540
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OperationsState, never>;
5541
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<OperationsState>;
5542
+ }
5543
+
5544
+ declare class LoadStartCatalog {
5545
+ query?: ClientAutomationQuery | undefined;
5546
+ static readonly type = "[ClientAutomation] Load Start Catalog";
5547
+ constructor(query?: ClientAutomationQuery | undefined);
5548
+ }
5549
+ declare class RunManualTrigger {
5550
+ triggerId: number | string;
5551
+ payload: RunManualTriggerRequest;
5552
+ static readonly type = "[ClientAutomation] Run Manual Trigger";
5553
+ constructor(triggerId: number | string, payload: RunManualTriggerRequest);
5554
+ }
5555
+ declare class SubmitStartForm {
5556
+ formDefinitionId: number | string;
5557
+ payload: SubmitStartFormRequest;
5558
+ static readonly type = "[ClientAutomation] Submit Start Form";
5559
+ constructor(formDefinitionId: number | string, payload: SubmitStartFormRequest);
5560
+ }
5561
+ declare class LoadCurrentInteractions {
5562
+ query?: ClientAutomationQuery | undefined;
5563
+ static readonly type = "[ClientAutomation] Load Current Interactions";
5564
+ constructor(query?: ClientAutomationQuery | undefined);
5565
+ }
5566
+ declare class LoadInteractionHistory {
5567
+ query?: ClientAutomationQuery | undefined;
5568
+ static readonly type = "[ClientAutomation] Load Interaction History";
5569
+ constructor(query?: ClientAutomationQuery | undefined);
5570
+ }
5571
+ declare class LoadInteractionDetail {
5572
+ interactionId: number | string;
5573
+ static readonly type = "[ClientAutomation] Load Interaction Detail";
5574
+ constructor(interactionId: number | string);
5575
+ }
5576
+ declare class SaveInteractionDraft {
5577
+ interactionId: number | string;
5578
+ payload: SaveInteractionDraftRequest;
5579
+ static readonly type = "[ClientAutomation] Save Interaction Draft";
5580
+ constructor(interactionId: number | string, payload: SaveInteractionDraftRequest);
5581
+ }
5582
+ declare class ExecuteInteractionAction {
5583
+ interactionId: number | string;
5584
+ action: InteractionAction;
5585
+ payload: InteractionActionRequest;
5586
+ static readonly type = "[ClientAutomation] Execute Interaction Action";
5587
+ constructor(interactionId: number | string, action: InteractionAction, payload: InteractionActionRequest);
5588
+ }
5589
+ declare class LoadMyRequests {
5590
+ query?: ClientAutomationQuery | undefined;
5591
+ static readonly type = "[ClientAutomation] Load My Requests";
5592
+ constructor(query?: ClientAutomationQuery | undefined);
5593
+ }
5594
+ declare class LoadRequestLifecycle {
5595
+ instanceRef: string;
5596
+ take: number;
5597
+ static readonly type = "[ClientAutomation] Load Request Lifecycle";
5598
+ constructor(instanceRef: string, take?: number);
5599
+ }
5600
+
5601
+ declare class ClientAutomationFacade {
5602
+ private readonly store;
5603
+ readonly startCatalog: _angular_core.Signal<_masterteam_flowplus_workflow.ClientStartCatalog | null>;
5604
+ readonly current: _angular_core.Signal<_masterteam_flowplus_workflow.AutomationPagedResult<_masterteam_flowplus_workflow.ClientInteraction> | null>;
5605
+ readonly history: _angular_core.Signal<_masterteam_flowplus_workflow.AutomationPagedResult<_masterteam_flowplus_workflow.ClientInteraction> | null>;
5606
+ readonly interactionDetail: _angular_core.Signal<_masterteam_flowplus_workflow.ClientInteractionDetail | null>;
5607
+ readonly requests: _angular_core.Signal<_masterteam_flowplus_workflow.AutomationPagedResult<_masterteam_flowplus_workflow.ClientRequestSummary> | null>;
5608
+ readonly lifecycle: _angular_core.Signal<_masterteam_flowplus_workflow.ClientRequestLifecycle | null>;
5609
+ readonly lastRunResult: _angular_core.Signal<_masterteam_flowplus_workflow.AutomationRunResult | null>;
5610
+ private readonly loadingActive;
5611
+ private readonly errors;
5612
+ readonly manualTriggers: _angular_core.Signal<_masterteam_flowplus_workflow.ClientManualTrigger[]>;
5613
+ readonly forms: _angular_core.Signal<_masterteam_flowplus_workflow.ClientStartForm[]>;
5614
+ readonly currentRows: _angular_core.Signal<_masterteam_flowplus_workflow.ClientInteraction[]>;
5615
+ readonly historyRows: _angular_core.Signal<_masterteam_flowplus_workflow.ClientInteraction[]>;
5616
+ readonly requestRows: _angular_core.Signal<_masterteam_flowplus_workflow.ClientRequestSummary[]>;
5617
+ readonly currentCount: _angular_core.Signal<number>;
5618
+ readonly isLoadingCatalog: _angular_core.Signal<boolean>;
5619
+ readonly isRunningTrigger: _angular_core.Signal<boolean>;
5620
+ readonly isSubmittingForm: _angular_core.Signal<boolean>;
5621
+ readonly isLoadingCurrent: _angular_core.Signal<boolean>;
5622
+ readonly isLoadingHistory: _angular_core.Signal<boolean>;
5623
+ readonly isLoadingDetail: _angular_core.Signal<boolean>;
5624
+ readonly isExecutingAction: _angular_core.Signal<boolean>;
5625
+ readonly isLoadingRequests: _angular_core.Signal<boolean>;
5626
+ readonly actionError: _angular_core.Signal<string | null>;
5627
+ loadStartCatalog(query?: ClientAutomationQuery): rxjs.Observable<void>;
5628
+ runManualTrigger(triggerId: number | string, payload: RunManualTriggerRequest): rxjs.Observable<void>;
5629
+ submitForm(formDefinitionId: number | string, payload: SubmitStartFormRequest): rxjs.Observable<void>;
5630
+ loadCurrent(query?: ClientAutomationQuery): rxjs.Observable<void>;
5631
+ loadHistory(query?: ClientAutomationQuery): rxjs.Observable<void>;
5632
+ loadInteraction(interactionId: number | string): rxjs.Observable<void>;
5633
+ saveDraft(interactionId: number | string, payload: SaveInteractionDraftRequest): rxjs.Observable<void>;
5634
+ executeAction(interactionId: number | string, action: InteractionAction, payload: InteractionActionRequest): rxjs.Observable<void>;
5635
+ loadRequests(query?: ClientAutomationQuery): rxjs.Observable<void>;
5636
+ loadLifecycle(instanceRef: string, take?: number): rxjs.Observable<void>;
5637
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClientAutomationFacade, never>;
5638
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ClientAutomationFacade>;
5639
+ }
5640
+
5641
+ declare enum ClientAutomationActionKey {
5642
+ LoadStartCatalog = "loadStartCatalog",
5643
+ RunManualTrigger = "runManualTrigger",
5644
+ SubmitForm = "submitForm",
5645
+ LoadCurrent = "loadCurrent",
5646
+ LoadHistory = "loadHistory",
5647
+ LoadInteraction = "loadInteraction",
5648
+ SaveDraft = "saveDraft",
5649
+ ExecuteAction = "executeAction",
5650
+ LoadRequests = "loadRequests",
5651
+ LoadLifecycle = "loadLifecycle"
5652
+ }
5653
+ interface ClientAutomationStateModel extends LoadingStateShape<ClientAutomationActionKey> {
5654
+ startCatalog: ClientStartCatalog | null;
5655
+ current: AutomationPagedResult<ClientInteraction> | null;
5656
+ history: AutomationPagedResult<ClientInteraction> | null;
5657
+ interactionDetail: ClientInteractionDetail | null;
5658
+ requests: AutomationPagedResult<ClientRequestSummary> | null;
5659
+ lifecycle: ClientRequestLifecycle | null;
5660
+ lastRunResult: AutomationRunResult | null;
5661
+ }
5662
+ declare const CLIENT_AUTOMATION_DEFAULT_STATE: ClientAutomationStateModel;
5663
+
5664
+ declare class ClientAutomationState {
5665
+ private readonly api;
5666
+ static getStartCatalog(state: ClientAutomationStateModel): ClientStartCatalog | null;
5667
+ static getCurrent(state: ClientAutomationStateModel): AutomationPagedResult<ClientInteraction> | null;
5668
+ static getHistory(state: ClientAutomationStateModel): AutomationPagedResult<ClientInteraction> | null;
5669
+ static getInteractionDetail(state: ClientAutomationStateModel): ClientInteractionDetail | null;
5670
+ static getRequests(state: ClientAutomationStateModel): AutomationPagedResult<ClientRequestSummary> | null;
5671
+ static getLifecycle(state: ClientAutomationStateModel): ClientRequestLifecycle | null;
5672
+ static getLastRunResult(state: ClientAutomationStateModel): AutomationRunResult | null;
5673
+ static getLoadingActive(state: ClientAutomationStateModel): ClientAutomationActionKey[];
5674
+ static getErrors(state: ClientAutomationStateModel): Partial<Record<ClientAutomationActionKey, string>>;
5675
+ loadStartCatalog(ctx: StateContext<ClientAutomationStateModel>, { query }: LoadStartCatalog): rxjs.Observable<ClientStartCatalog>;
5676
+ runManualTrigger(ctx: StateContext<ClientAutomationStateModel>, { triggerId, payload }: RunManualTrigger): rxjs.Observable<AutomationRunResult>;
5677
+ submitForm(ctx: StateContext<ClientAutomationStateModel>, { formDefinitionId, payload }: SubmitStartForm): rxjs.Observable<AutomationRunResult>;
5678
+ loadCurrent(ctx: StateContext<ClientAutomationStateModel>, { query }: LoadCurrentInteractions): rxjs.Observable<AutomationPagedResult<ClientInteraction>>;
5679
+ loadHistory(ctx: StateContext<ClientAutomationStateModel>, { query }: LoadInteractionHistory): rxjs.Observable<AutomationPagedResult<ClientInteraction>>;
5680
+ loadInteraction(ctx: StateContext<ClientAutomationStateModel>, { interactionId }: LoadInteractionDetail): rxjs.Observable<ClientInteractionDetail>;
5681
+ saveDraft(ctx: StateContext<ClientAutomationStateModel>, { interactionId, payload }: SaveInteractionDraft): rxjs.Observable<unknown>;
5682
+ executeAction(ctx: StateContext<ClientAutomationStateModel>, { interactionId, action, payload }: ExecuteInteractionAction): rxjs.Observable<AutomationRunResult>;
5683
+ loadRequests(ctx: StateContext<ClientAutomationStateModel>, { query }: LoadMyRequests): rxjs.Observable<AutomationPagedResult<ClientRequestSummary>>;
5684
+ loadLifecycle(ctx: StateContext<ClientAutomationStateModel>, { instanceRef, take }: LoadRequestLifecycle): rxjs.Observable<ClientRequestLifecycle>;
5685
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClientAutomationState, never>;
5686
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ClientAutomationState>;
5687
+ }
5688
+
4105
5689
  /**
4106
5690
  * Host-configurable navigation target. May be:
4107
5691
  * - a string path (`'/admin/workflows'`)
@@ -4385,7 +5969,7 @@ declare class ProcessCreateDialogComponent {
4385
5969
  }
4386
5970
 
4387
5971
  type PaletteGroupKey = 'logicFlow' | 'dataFiles' | 'peopleReview' | 'appsApis' | 'flowplus';
4388
- type PaletteSectionKey = 'branching' | 'looping' | 'parallel' | 'timing' | 'dataShape' | 'fileConvert' | 'tasksApprovals' | 'sendWait' | 'apiWebhook' | 'flowplusNative' | 'automationCalls' | 'other';
5972
+ type PaletteSectionKey = 'branching' | 'looping' | 'parallel' | 'timing' | 'dataShape' | 'fileConvert' | 'tasksApprovals' | 'sendWait' | 'businessActions' | 'apiWebhook' | 'flowplusNative' | 'automationCalls' | 'other';
4389
5973
  interface AutomationNodeVisual {
4390
5974
  key: string;
4391
5975
  label: string;
@@ -5376,6 +6960,7 @@ declare class AutomationExecutionsPageComponent {
5376
6960
  maxAttempts?: number | null;
5377
6961
  errorJson?: string | null;
5378
6962
  attempts?: _masterteam_flowplus_workflow.AutomationNodeAttempt[];
6963
+ ai?: _masterteam_flowplus_workflow.ExecutionNodeAiSummary | null;
5379
6964
  }[]>;
5380
6965
  readonly canRetry: _angular_core.Signal<boolean>;
5381
6966
  readonly canCancel: _angular_core.Signal<boolean>;
@@ -5454,6 +7039,234 @@ declare class WorkflowRunDebuggerPageComponent {
5454
7039
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<WorkflowRunDebuggerPageComponent, "fp-workflow-run-debugger-page", never, {}, {}, never, never, true, never>;
5455
7040
  }
5456
7041
 
7042
+ /** Which credential form to render. */
7043
+ type ConnectionFormKind = 'openai' | 'local' | 'manual';
7044
+ interface ConnectionFormData {
7045
+ kind: ConnectionFormKind;
7046
+ /** Present in edit mode. Secrets are NEVER prefilled. */
7047
+ connection?: IntegrationConnectionSummary | null;
7048
+ }
7049
+ interface ConnectionFormValue {
7050
+ displayName: string;
7051
+ apiKey: string;
7052
+ baseUrl: string;
7053
+ requestMode: LocalProviderRequestMode;
7054
+ modelListPath: string;
7055
+ providerKey: string;
7056
+ secret: string;
7057
+ }
7058
+ /**
7059
+ * Create/edit a provider connection. Secrets are WRITE-ONLY: the API key /
7060
+ * secret fields start empty in edit mode and are never populated from the
7061
+ * server. Closes with `true` on success so the host refreshes the list.
7062
+ */
7063
+ declare class IntegrationConnectionFormComponent {
7064
+ readonly modalService: ModalService;
7065
+ private readonly ref;
7066
+ private readonly transloco;
7067
+ readonly facade: IntegrationsFacade;
7068
+ readonly data: _angular_core.InputSignal<ConnectionFormData | null>;
7069
+ readonly kind: _angular_core.Signal<ConnectionFormKind>;
7070
+ readonly isEdit: _angular_core.Signal<boolean>;
7071
+ readonly form: FormControl<ConnectionFormValue>;
7072
+ readonly formConfig: _angular_core.Signal<DynamicFormConfig>;
7073
+ constructor();
7074
+ onSave(): void;
7075
+ onCancel(): void;
7076
+ private fieldsFor;
7077
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IntegrationConnectionFormComponent, never>;
7078
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IntegrationConnectionFormComponent, "fp-integration-connection-form", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7079
+ }
7080
+
7081
+ interface ConnectionRowVm extends IntegrationConnectionSummary {
7082
+ maskedSummary: string;
7083
+ }
7084
+ interface AiProfileFormValue {
7085
+ enabled: boolean;
7086
+ providerKey: string | null;
7087
+ providerConnectionRef: string | null;
7088
+ defaultModel: string | null;
7089
+ defaultTemperature: number | null;
7090
+ defaultMaxTokens: number | null;
7091
+ defaultTimeoutSeconds: number | null;
7092
+ }
7093
+ /**
7094
+ * Control Panel -> Automation Engine -> Integrations.
7095
+ *
7096
+ * Single bootstrap (`GET /integrations`) hydrates four sections. AI provider /
7097
+ * model / credential configuration lives ONLY here — never in AI node config.
7098
+ * Secrets are write-only; lists show masked fields only.
7099
+ */
7100
+ declare class IntegrationsPageComponent implements OnInit {
7101
+ readonly facade: IntegrationsFacade;
7102
+ private readonly modal;
7103
+ private readonly transloco;
7104
+ readonly activeSection: _angular_core.WritableSignal<IntegrationSectionKey>;
7105
+ readonly sectionTabs: {
7106
+ key: IntegrationSectionKey;
7107
+ label: string;
7108
+ }[];
7109
+ readonly aiForm: FormControl<AiProfileFormValue>;
7110
+ private readonly aiValue;
7111
+ readonly selectedProvider: _angular_core.Signal<AiProviderMetadata | undefined>;
7112
+ readonly providerConnectionRequired: _angular_core.Signal<boolean>;
7113
+ readonly aiFormConfig: _angular_core.Signal<DynamicFormConfig>;
7114
+ readonly rows: _angular_core.Signal<ConnectionRowVm[]>;
7115
+ readonly aiRows: _angular_core.Signal<ConnectionRowVm[]>;
7116
+ readonly accountRows: _angular_core.Signal<ConnectionRowVm[]>;
7117
+ readonly localRows: _angular_core.Signal<ConnectionRowVm[]>;
7118
+ readonly columns: ColumnDef[];
7119
+ readonly rowActions: TableAction[];
7120
+ constructor();
7121
+ ngOnInit(): void;
7122
+ setSection(key: IntegrationSectionKey): void;
7123
+ saveAiProfile(): void;
7124
+ testAiProfile(): void;
7125
+ addConnection(kind: ConnectionFormKind): void;
7126
+ editConnection(connection: IntegrationConnectionSummary): void;
7127
+ private openForm;
7128
+ private kindForConnection;
7129
+ private maskedSummary;
7130
+ private label;
7131
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IntegrationsPageComponent, never>;
7132
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IntegrationsPageComponent, "fp-integrations-page", never, {}, {}, never, never, true, never>;
7133
+ }
7134
+
7135
+ type OperationsTab = 'overview' | 'instances' | 'work-items' | 'automations' | 'audit';
7136
+ interface KpiTile {
7137
+ label: string;
7138
+ value: number;
7139
+ tab?: OperationsTab;
7140
+ tone?: 'default' | 'warn' | 'danger';
7141
+ }
7142
+ /**
7143
+ * Control Panel -> Operations. Read/monitor dashboard for the automation
7144
+ * system: overview KPIs, instances (+ detail), work items, automations, audit.
7145
+ */
7146
+ declare class OperationsPageComponent implements OnInit {
7147
+ readonly facade: OperationsFacade;
7148
+ readonly activeTab: _angular_core.WritableSignal<OperationsTab>;
7149
+ readonly selectedInstanceRef: _angular_core.WritableSignal<string | null>;
7150
+ readonly tabs: {
7151
+ key: OperationsTab;
7152
+ label: string;
7153
+ }[];
7154
+ readonly kpis: _angular_core.Signal<KpiTile[]>;
7155
+ readonly instanceColumns: ColumnDef[];
7156
+ readonly workItemColumns: ColumnDef[];
7157
+ readonly automationColumns: ColumnDef[];
7158
+ readonly auditColumns: ColumnDef[];
7159
+ readonly instanceRowActions: TableAction[];
7160
+ ngOnInit(): void;
7161
+ setTab(tab: OperationsTab): void;
7162
+ onKpiClick(tile: KpiTile): void;
7163
+ openInstance(instanceRef: string): void;
7164
+ closeInstance(): void;
7165
+ refresh(): void;
7166
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OperationsPageComponent, never>;
7167
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OperationsPageComponent, "fp-operations-page", never, {}, {}, never, never, true, never>;
7168
+ }
7169
+
7170
+ type ClientTab = 'start' | 'tasks' | 'history' | 'requests';
7171
+ /**
7172
+ * Client automation hub: start requests, act on tasks/approvals, review
7173
+ * history, and track my requests. Mounted by the client app via route.
7174
+ */
7175
+ declare class ClientAutomationPageComponent implements OnInit {
7176
+ readonly facade: ClientAutomationFacade;
7177
+ private readonly modal;
7178
+ readonly activeTab: _angular_core.WritableSignal<ClientTab>;
7179
+ readonly selectedRequestRef: _angular_core.WritableSignal<string | null>;
7180
+ readonly tabs: _angular_core.Signal<({
7181
+ key: ClientTab;
7182
+ label: string;
7183
+ badge?: undefined;
7184
+ } | {
7185
+ key: ClientTab;
7186
+ label: string;
7187
+ badge: number;
7188
+ })[]>;
7189
+ readonly interactionColumns: ColumnDef[];
7190
+ readonly requestColumns: ColumnDef[];
7191
+ readonly currentRowActions: TableAction[];
7192
+ readonly requestRowActions: TableAction[];
7193
+ ngOnInit(): void;
7194
+ setTab(tab: ClientTab): void;
7195
+ runTrigger(trigger: ClientManualTrigger): void;
7196
+ openForm(form: ClientStartForm): void;
7197
+ openInteraction(interaction: ClientInteraction): void;
7198
+ openRequest(request: ClientRequestSummary): void;
7199
+ closeRequest(): void;
7200
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClientAutomationPageComponent, never>;
7201
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClientAutomationPageComponent, "fp-client-automation-page", never, {}, {}, never, never, true, never>;
7202
+ }
7203
+
7204
+ interface ClientStartFormDialogData {
7205
+ form: ClientStartForm;
7206
+ }
7207
+ /**
7208
+ * Renders a start form from its `schemaSnapshotJson` (JSON-schema `properties`)
7209
+ * via the shared DynamicForm, and submits with the SAME `formRevisionId` the
7210
+ * user opened. Minimal generic mapping — string/number/boolean.
7211
+ */
7212
+ declare class ClientStartFormDialogComponent implements OnInit {
7213
+ readonly modalService: ModalService;
7214
+ private readonly ref;
7215
+ readonly facade: ClientAutomationFacade;
7216
+ readonly data: _angular_core.InputSignal<ClientStartFormDialogData | null>;
7217
+ readonly form: FormControl<Record<string, unknown>>;
7218
+ readonly formConfig: _angular_core.WritableSignal<DynamicFormConfig>;
7219
+ readonly error: _angular_core.WritableSignal<string | null>;
7220
+ readonly startForm: _angular_core.Signal<ClientStartForm | null>;
7221
+ ngOnInit(): void;
7222
+ onSubmit(): void;
7223
+ onCancel(): void;
7224
+ private buildConfig;
7225
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClientStartFormDialogComponent, never>;
7226
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClientStartFormDialogComponent, "fp-client-start-form-dialog", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7227
+ }
7228
+
7229
+ interface ClientInteractionDialogData {
7230
+ interactionId: number | string;
7231
+ }
7232
+ interface ActionButton {
7233
+ action: InteractionAction;
7234
+ label: string;
7235
+ severity: 'primary' | 'success' | 'danger' | 'secondary';
7236
+ requiresComment?: boolean;
7237
+ requiresDelegate?: boolean;
7238
+ }
7239
+ interface ActionFormValue {
7240
+ comments: string;
7241
+ delegateTo: string;
7242
+ }
7243
+ /**
7244
+ * Task / approval detail. Action buttons are derived STRICTLY from the
7245
+ * interaction's `allowedActions` — never from status. Comments / delegate use
7246
+ * the shared reactive DynamicForm. Closes with `true` on success.
7247
+ */
7248
+ declare class ClientInteractionDialogComponent implements OnInit {
7249
+ readonly modalService: ModalService;
7250
+ private readonly ref;
7251
+ private readonly transloco;
7252
+ readonly facade: ClientAutomationFacade;
7253
+ readonly data: _angular_core.InputSignal<ClientInteractionDialogData | null>;
7254
+ readonly form: FormControl<ActionFormValue>;
7255
+ private readonly formValue;
7256
+ readonly actionButtons: _angular_core.Signal<ActionButton[]>;
7257
+ readonly hasComment: _angular_core.Signal<boolean>;
7258
+ readonly hasDelegate: _angular_core.Signal<boolean>;
7259
+ readonly formConfig: _angular_core.Signal<DynamicFormConfig>;
7260
+ readonly hasFormFields: _angular_core.Signal<boolean>;
7261
+ readonly payloadJson: _angular_core.Signal<string | null>;
7262
+ ngOnInit(): void;
7263
+ canRun(b: ActionButton): boolean;
7264
+ run(b: ActionButton): void;
7265
+ onClose(): void;
7266
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClientInteractionDialogComponent, never>;
7267
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClientInteractionDialogComponent, "fp-client-interaction-dialog", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7268
+ }
7269
+
5457
7270
  /**
5458
7271
  * @deprecated
5459
7272
  *
@@ -6705,5 +8518,5 @@ declare class DagreFlowLayoutEngine implements FlowLayoutEngine {
6705
8518
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<DagreFlowLayoutEngine>;
6706
8519
  }
6707
8520
 
6708
- export { APP_STATES, AddCanvasNote, ApplyAutomationExecutionDetail, ApplyBuilderCommand, ApplyBuilderSnapshot, AutomationBuilderCatalogApiService, AutomationDesignApiService, AutomationExecutionApiService, AutomationExecutionsPageComponent, BottomPanelComponent, BuilderTopbarComponent, CancelAutomationExecution, ClearAutomationRuntimeState, ClearCommandHistory, ClearConflict, ClearPendingOperation, ClearSelection, ClearWorkflowBuilder, CommitStepUpdates, CommitWorkflowMetadata, ConnectionCreated, ConnectionCreationFailed, ContextPickerComponent, ContextPillButtonComponent, ContextPillComponent, CreateConnection, CreateStep, CreateTrigger, CreateWorkflow, DagreFlowLayoutEngine, DeleteCanvasNote, DeleteConnection, DeleteStep, DeleteTrigger, DeleteWorkflow, DuplicateCanvasNote, DuplicateWorkflow, EndpointBuilder, FLOWPLUS_FORM_DESIGNER_ADAPTER, FLOWPLUS_RETURN_LOOP_CONNECTION_TYPE, FLOWPLUS_WORKFLOW_CONFIG, FLOWPLUS_WORKFLOW_DEFAULT_RUNTIME, FLOWPLUS_WORKFLOW_DEFAULT_STATE, FLOWPLUS_WORKFLOW_NAVIGATION, FLOWPLUS_WORKFLOW_ROUTES, FLOW_NODE_BASE_HEIGHT, FLOW_NODE_CARD_WIDTH, FLOW_NODE_MULTI_OUTPUT_GAP, FLOW_NODE_OUTPUT_SIZE, FlowCanvasComponent, FlowNodeComponent, FlowplusWorkflowActionKey, FlowplusWorkflowFacade, FlowplusWorkflowNavigationService, FlowplusWorkflowOverlayService, FlowplusWorkflowState, InspectorShellComponent, KeyboardShortcutsService, LOCAL_FALLBACK_CATALOG, LoadAutomationExecution, LoadContextCatalog, LoadContextCatalogForStep, LoadLatestAutomationExecution, LoadLayout, LoadTriggers, LoadWorkflowBuilder, LoadWorkflowCatalog, LoadWorkflowList, MarkLayoutDirty, MoveStep, NODE_COLOR_TOKEN, NODE_DEFAULT_ICON, NODE_MT_ICON, NoopFlowplusFormDesignerAdapter, PaletteComponent, PaletteDragSourceDirective, PollAutomationExecution, ProblemsPanelComponent, ProcessCreateDialogComponent, PublishWorkflow, RedoBuilderCommand, ReloadWorkflowBuilder, RunAutomationTrigger, RunWorkflowTest, SaveLayout, SelectCanvasNote, SelectConnection, SelectRuntimeNodeRun, SelectStep, SelectTrigger, SetActiveInspectorTab, SetBottomPanelHeight, SetBottomPanelOpen, SetBottomPanelTab, SetCanvasViewport, SetContextCatalog, SetCreateDialogOpen, SetInspectorOpen, SetLayout, SetLayoutAutosavePaused, SetMinimap, SetPaletteOpen, SetPaletteSearch, SetPendingOperation, SetReadonly, SetSelectedRuntimeTrigger, SetSelection, SetSelectionFromCanvas, SetStudioFilter, SetValidation, SetWorkflowCatalog, SetWorkflowDefinition, StepCreated, StepCreationFailed, TRIGGER_MT_ICON, TestRunPanelComponent, UnconfiguredFormDesignerAdapter, UndoBuilderCommand, UnpublishWorkflow, UpdateCanvasNote, UpdateConnection, UpdateStep, UpdateTrigger, UpdateWorkflowMetadata, UpdateWorkflowResources, UpdateWorkflowVariables, ValidateWorkflow, WorkflowBuilderPageComponent, WorkflowCatalogApiService, WorkflowContextApiService, WorkflowDebugApiService, WorkflowDefinitionApiService, WorkflowFormApiService, WorkflowRunDebuggerPageComponent, WorkflowRuntimeApiService, WorkflowStudioPageComponent, WorkflowValidationApiService, allValidationIssues, applyBuilderSnapshot, avatarSeverityForStep, avatarSeverityForTrigger, canShowConnectionQuickAdd, canonicalTriggerTypeForStarterKind, coerceTranslatable, colorVarFor, computeBranchLanes, computeSaveStatus, connectionCanvasId, connectionClosesDirectedCycle, derivePortsForStep, extractMessage, flowNodeCardHeightForOutputs, flowNodeLayoutHeightForOutputs, flowNodeOutputCenterY, flowNodeOutputStackHeight, flowPortKeyExists, fromWorkflowConnectionDomain, fromWorkflowStepDomain, hasOtherPending, iconFor, indexValidationByConnectionId, indexValidationByStepId, indexValidationByTriggerId, inputPortId, isEntityDirty, isReturnConnectionForCanvas, mapHttpError, mtIconForStep, mtIconForTrigger, newClientMutationId, nextOperationId, nodeCanvasId, outputPortId, parseConnectionId, parseNodeId, parsePortId, parseTriggerOutputPortId, parseTriggerStartConnectionId, patchLayoutPosition, patchTriggerLayoutPosition, provideFlowplusFormDesignerAdapter, provideFlowplusWorkflow, provideFlowplusWorkflowNavigation, provideFlowplusWorkflowNavigationDefaults, readRecord, removeStepWithEdges, resolveConnectionEndpointStep, resolveTranslatable, resolveTriggerStartNodeKey, resolveTriggerStartStep, resolveTriggerStartStepId, resolveWorkflowTriggerKey, routeConnectionForCanvas, savingOrSaved, shouldPublishCurrentDefinitionBeforeRun, summarizeTriggerCycleValidation, tempNodeCanvasId, toWorkflowConnectionDomain, toWorkflowDefinitionDomain, toWorkflowStepDomain, toWorkflowTriggerDomain, triggerCanvasId, triggerOutputPortId, triggerStartConnectionCanvasId, triggerStarterKindFor, unwrap, unwrapApiData, upsertConnection, upsertStep };
6709
- export type { ActivateAutomationRequest, ActivationResult, ApiEnvelope, AssignmentSelectorContractResult, AssignmentValidationRequest, AutomationBuilderCatalog, AutomationEngineHealthSnapshot, AutomationExecutionDetail, AutomationExecutionEvent, AutomationExecutionListResult, AutomationExecutionNodeDataDetail, AutomationExecutionStatus, AutomationExecutionSummary, AutomationExportDefinition, AutomationFormBindingDefinition, AutomationFrontendDetail, AutomationFrontendListResult, AutomationImportRequest, AutomationImportResult, AutomationLastExecutionSummary, AutomationMetadataRequest, AutomationNodeAttempt, AutomationNodeDefinition, AutomationNodeRun, AutomationNodeTestRunExternalCallAudit, AutomationNodeTestRunLogEntry, AutomationNodeTestRunRequest, AutomationNodeTestRunResult, AutomationNodeTestRunStatus, AutomationNodeTestRunValidationIssue, AutomationNodeType, AutomationRetentionPruneResult, AutomationRevisionDiffResult, AutomationRevisionSummary, AutomationRouteDefinition, AutomationRunResult, AutomationRuntimeWait, AutomationRuntimeWaitResumeTokenResult, AutomationSelectorItem, AutomationSelectorResult, AutomationStatus, AutomationSummary, AutomationTriggerDefinition, AutomationTriggerType, AutomationValidationIssue, AutomationValidationReport, AutomationValidationSummary, AvatarSeverityVars, BatchBuilderPatchRequest, ConnectorActionCatalogItem, ConnectorCatalog, ConnectorProviderCatalogItem, ConvertToFileActionCatalogItem, ConvertToFileCatalog, CreateWorkflowConnectionRequest, CreateWorkflowDefinitionRequest, CreateWorkflowPluginStepRequest, CreateWorkflowStepRequest, CredentialFieldDescriptor, CredentialMutationResult, CredentialOAuthStartRequest, CredentialOAuthStartResult, CredentialProviderCatalogItem, CredentialReference, CredentialReferenceListResult, CredentialTestRequest, CredentialTestResult, CredentialTypeCatalogItem, CredentialTypeCatalogResult, DataTransformActionCatalogItem, DataTransformCatalog, EngineEventDto, ExecutionCancelResult, ExecutionRetryRequest, ExecutionRetryResult, ExpressionNamespaceDescriptor, ExpressionPreviewRequest, ExpressionPreviewResult, ExpressionValidationRequest, ExpressionValidationResult, FlowBranchLaneVm, FlowCanvasConnectionPosition, FlowCanvasConnectionRouting, FlowCanvasConnectionRoutingContext, FlowCanvasConnectionSide, FlowCanvasConnectionType, FlowCanvasConnectionWaypoint, FlowCanvasEdgeVm, FlowCanvasNodeVm, FlowLayoutEngine, FlowNodePortVm, FlowPlusCommitMappingValidationRequest, FlowPlusModuleCatalogItem, FlowPlusModuleCatalogResult, FlowPlusModuleField, FlowPlusModuleSchemaResult, FlowPortDirection, FlowPortSide, FlowplusApiError, FlowplusBuilderCommand, FlowplusBuilderSlice, FlowplusConflictState, FlowplusDirtyFlags, FlowplusExecutionRuntimeSlice, FlowplusFormDesignerAdapter, FlowplusPendingOperation, FlowplusPublishStatus, FlowplusRuntimeNodeState, FlowplusRuntimeNodeVisualState, FlowplusRuntimeReplayMode, FlowplusRuntimeRouteState, FlowplusRuntimeRouteVisualState, FlowplusRuntimeTriggerState, FlowplusRuntimeTriggerVisualState, FlowplusSaveStatus, FlowplusSelection, FlowplusStudioSlice, FlowplusTriggerExecutionRequest, FlowplusUiState, FlowplusWorkflowConfig, FlowplusWorkflowNavigationConfig, FlowplusWorkflowStateModel, FormBindingDefinitionRequest, FormSchemaResult, FormSelectorContractResult, FormSelectorItem, FormVersionListResult, FormVersionSummary, FormulaBuilderValue, HumanApprovalDecisionRequest, HumanApprovalDecisionResult, HumanTaskActionResult, HumanTaskAssignment, HumanTaskCancelRequest, HumanTaskDraftRequest, HumanTaskPayloadResult, HumanTaskSubmitRequest, JsonSchemaLite, ManualCredentialCreateRequest, NavigationTarget, NodeDefinitionRequest, NodeTypeCatalogItem, OpenStepFormDesignerInput, OpenStepFormPreviewInput, PagedResult, ProcessContextEntryDto, ProcessContextLineageNodeDto, ProcessContextSnapshotDto, ProcessContextTimelineEventDto, ProcessFormLoadRequest, ProcessFormLoadResponseDto, ProcessStartRequest, ProcessStartResultDto, ProcessSubmitOperationKey, ProcessSubmitRequest, ProcessSubmitResponseDto, ProcessSubmitStatus, PublishAutomationRequest, PublishAutomationResult, QueuedNodeSummary, RouteDefinitionRequest, ScheduleOptionsResult, SchedulePreviewRequest, SchedulePreviewResult, ScheduleValidationRequest, StepFormDesignerResult, StepFormPreviewResult, TaskActionRequest, TaskActionResultDto, TranslatableText, TriggerCycleValidationSummary, TriggerDefinitionRequest, TriggerNodeVm, TriggerStarterKind, TriggerTypeCatalogItem, UpdateWorkflowConnectionRequest, UpdateWorkflowDefinitionRequest, UpdateWorkflowStepRequest, WaitResumeRequest, WaitResumeResult, WebhookSetupResult, WorkflowAppActionDescriptorDto, WorkflowAppActionMappingDto, WorkflowAppActionOptionDto, WorkflowAppActionStepConfigDto, WorkflowAppDescriptorDto, WorkflowAutomatedOutputMappingDto, WorkflowAutomatedStepConfigDto, WorkflowBuilderCapabilitiesDto, WorkflowBuilderDto, WorkflowBuilderPermissionsDto, WorkflowCatalogDefaultsDto, WorkflowCatalogDto, WorkflowCatalogOptionDto, WorkflowConnectionDomain, WorkflowConnectionDto, WorkflowConnectionLayoutDto, WorkflowContextCatalogDto, WorkflowContextCatalogSourceDto, WorkflowContextPathValidationRequest, WorkflowContextPathValidationResultDto, WorkflowContextSourceType, WorkflowContextValueType, WorkflowDefinitionDomain, WorkflowDefinitionDto, WorkflowDefinitionListQuery, WorkflowDefinitionListResult, WorkflowDefinitionSummaryDto, WorkflowFormBindingContractDto, WorkflowFormBindingMode, WorkflowJoinParallelStepConfigDto, WorkflowLayoutDto, WorkflowNodeLayoutDto, WorkflowPluginDescriptorDto, WorkflowPluginStepConfigDto, WorkflowResourceBindingDto, WorkflowRuntimeRoutingPolicyDto, WorkflowSelectedActionDto, WorkflowStartParallelStepConfigDto, WorkflowStatus, WorkflowStepActionCatalogItemDto, WorkflowStepActionDto, WorkflowStepCategory, WorkflowStepDefaultsItemDto, WorkflowStepDomain, WorkflowStepDto, WorkflowStepFormBindingDto, WorkflowStepFormContractDto, WorkflowStepFormUpdateRequest, WorkflowStepPropertyDto, WorkflowStepType, WorkflowStepTypeCapabilityItemDto, WorkflowStepTypeCatalogItemDto, WorkflowSubprocessContextMappingDto, WorkflowSubprocessPropertyMappingDto, WorkflowSubprocessStepConfigDto, WorkflowTestRunConnectionDecisionDto, WorkflowTestRunContextChangeDto, WorkflowTestRunContextValueDto, WorkflowTestRunMode, WorkflowTestRunRequest, WorkflowTestRunResultDto, WorkflowTestRunStatus, WorkflowTestStepResultDto, WorkflowTestStepStatus, WorkflowTriggerDomain, WorkflowTriggerDto, WorkflowTriggerType, WorkflowValidationEntityType, WorkflowValidationGroupKey, WorkflowValidationGroupedIssuesDto, WorkflowValidationIssueDto, WorkflowValidationIssueSeverity, WorkflowValidationResultDto, WorkflowValidationSeverity, WorkflowValidationStateDto, WorkflowVariableCollectionDto, WorkflowVariableDto, WorkflowVariableRequest, WorkflowViewportDto };
8521
+ export { AI_FORBIDDEN_NODE_CONFIG_KEYS, APP_STATES, AddCanvasNote, ApplyAutomationExecutionDetail, ApplyBuilderCommand, ApplyBuilderSnapshot, AutomationBuilderCatalogApiService, AutomationDesignApiService, AutomationExecutionApiService, AutomationExecutionsPageComponent, BottomPanelComponent, BuilderTopbarComponent, CLIENT_AUTOMATION_DEFAULT_STATE, CancelAutomationExecution, ClearAutomationRuntimeState, ClearCommandHistory, ClearConflict, ClearPendingOperation, ClearSelection, ClearWorkflowBuilder, ClientAutomationActionKey, ClientAutomationFacade, ClientAutomationPageComponent, ClientAutomationState, ClientInteractionDialogComponent, ClientStartFormDialogComponent, CommitStepUpdates, CommitWorkflowMetadata, ConnectionCreated, ConnectionCreationFailed, ContextPickerComponent, ContextPillButtonComponent, ContextPillComponent, CreateConnection, CreateLocalOpenAiConnection, CreateManualConnection, CreateOpenAiConnection, CreateStep, CreateTrigger, CreateWorkflow, DagreFlowLayoutEngine, DeleteCanvasNote, DeleteConnection, DeleteStep, DeleteTrigger, DeleteWorkflow, DuplicateCanvasNote, DuplicateWorkflow, EndpointBuilder, ExecuteInteractionAction, FLOWPLUS_FORM_DESIGNER_ADAPTER, FLOWPLUS_RETURN_LOOP_CONNECTION_TYPE, FLOWPLUS_WORKFLOW_CONFIG, FLOWPLUS_WORKFLOW_DEFAULT_RUNTIME, FLOWPLUS_WORKFLOW_DEFAULT_STATE, FLOWPLUS_WORKFLOW_NAVIGATION, FLOWPLUS_WORKFLOW_ROUTES, FLOW_NODE_BASE_HEIGHT, FLOW_NODE_CARD_WIDTH, FLOW_NODE_MULTI_OUTPUT_GAP, FLOW_NODE_OUTPUT_SIZE, FlowCanvasComponent, FlowNodeComponent, FlowplusWorkflowActionKey, FlowplusWorkflowFacade, FlowplusWorkflowNavigationService, FlowplusWorkflowOverlayService, FlowplusWorkflowState, INTEGRATIONS_DEFAULT_STATE, InspectorShellComponent, IntegrationConnectionFormComponent, IntegrationsActionKey, IntegrationsFacade, IntegrationsPageComponent, IntegrationsState, KeyboardShortcutsService, LOCAL_FALLBACK_CATALOG, LoadAiProfile, LoadAutomationExecution, LoadContextCatalog, LoadContextCatalogForStep, LoadCurrentInteractions, LoadIntegrationsCatalog, LoadIntegrationsConnections, LoadIntegrationsOverview, LoadInteractionDetail, LoadInteractionHistory, LoadLatestAutomationExecution, LoadLayout, LoadMyRequests, LoadOperationsAuditEvents, LoadOperationsAutomations, LoadOperationsBottlenecks, LoadOperationsHealth, LoadOperationsInstance, LoadOperationsInstanceTimeline, LoadOperationsInstances, LoadOperationsOverview, LoadOperationsWorkItems, LoadRequestLifecycle, LoadStartCatalog, LoadTriggers, LoadWorkflowBuilder, LoadWorkflowCatalog, LoadWorkflowList, MarkLayoutDirty, MoveStep, NODE_COLOR_TOKEN, NODE_DEFAULT_ICON, NODE_MT_ICON, NoopFlowplusFormDesignerAdapter, OPERATIONS_DEFAULT_STATE, OperationsActionKey, OperationsFacade, OperationsPageComponent, OperationsState, PaletteComponent, PaletteDragSourceDirective, PollAutomationExecution, ProblemsPanelComponent, ProcessCreateDialogComponent, PublishWorkflow, RedoBuilderCommand, ReloadWorkflowBuilder, RevokeConnection, RunAutomationTrigger, RunManualTrigger, RunWorkflowTest, SaveAiProfile, SaveInteractionDraft, SaveLayout, SelectCanvasNote, SelectConnection, SelectRuntimeNodeRun, SelectStep, SelectTrigger, SetActiveInspectorTab, SetBottomPanelHeight, SetBottomPanelOpen, SetBottomPanelTab, SetCanvasViewport, SetContextCatalog, SetCreateDialogOpen, SetInspectorOpen, SetLayout, SetLayoutAutosavePaused, SetMinimap, SetPaletteOpen, SetPaletteSearch, SetPendingOperation, SetReadonly, SetSelectedRuntimeTrigger, SetSelection, SetSelectionFromCanvas, SetStudioFilter, SetValidation, SetWorkflowCatalog, SetWorkflowDefinition, StepCreated, StepCreationFailed, SubmitStartForm, TRIGGER_MT_ICON, TestAiProfile, TestConnection, TestRunPanelComponent, UnconfiguredFormDesignerAdapter, UndoBuilderCommand, UnpublishWorkflow, UpdateCanvasNote, UpdateConnection, UpdateLocalOpenAiConnection, UpdateOpenAiConnection, UpdateStep, UpdateTrigger, UpdateWorkflowMetadata, UpdateWorkflowResources, UpdateWorkflowVariables, ValidateWorkflow, WorkflowBuilderPageComponent, WorkflowCatalogApiService, WorkflowContextApiService, WorkflowDebugApiService, WorkflowDefinitionApiService, WorkflowFormApiService, WorkflowRunDebuggerPageComponent, WorkflowRuntimeApiService, WorkflowStudioPageComponent, WorkflowValidationApiService, allValidationIssues, applyBuilderSnapshot, avatarSeverityForStep, avatarSeverityForTrigger, canShowConnectionQuickAdd, canonicalTriggerTypeForStarterKind, coerceTranslatable, colorVarFor, computeBranchLanes, computeSaveStatus, connectionCanvasId, connectionClosesDirectedCycle, derivePortsForStep, extractMessage, flowNodeCardHeightForOutputs, flowNodeLayoutHeightForOutputs, flowNodeOutputCenterY, flowNodeOutputStackHeight, flowPortKeyExists, fromWorkflowConnectionDomain, fromWorkflowStepDomain, hasOtherPending, iconFor, indexValidationByConnectionId, indexValidationByStepId, indexValidationByTriggerId, inputPortId, isEntityDirty, isReturnConnectionForCanvas, mapHttpError, mtIconForStep, mtIconForTrigger, newClientMutationId, nextOperationId, nodeCanvasId, outputPortId, parseConnectionId, parseNodeId, parsePortId, parseTriggerOutputPortId, parseTriggerStartConnectionId, patchLayoutPosition, patchTriggerLayoutPosition, provideFlowplusFormDesignerAdapter, provideFlowplusWorkflow, provideFlowplusWorkflowNavigation, provideFlowplusWorkflowNavigationDefaults, readAiNodeHelperMetadata, readRecord, removeStepWithEdges, resolveConnectionEndpointStep, resolveTranslatable, resolveTriggerStartNodeKey, resolveTriggerStartStep, resolveTriggerStartStepId, resolveWorkflowTriggerKey, routeConnectionForCanvas, savingOrSaved, shouldPublishCurrentDefinitionBeforeRun, summarizeTriggerCycleValidation, tempNodeCanvasId, toWorkflowConnectionDomain, toWorkflowDefinitionDomain, toWorkflowStepDomain, toWorkflowTriggerDomain, triggerCanvasId, triggerOutputPortId, triggerStartConnectionCanvasId, triggerStarterKindFor, unwrap, unwrapApiData, upsertConnection, upsertStep };
8522
+ export type { ActivateAutomationRequest, ActivationResult, AdminOperationsQuery, AiNodeHelperMetadata, AiNodeKind, AiProfile, AiProfileUpdateRequest, AiProfileValidationStatus, AiProviderErrorCode, AiProviderMetadata, AiTokenUsage, ApiEnvelope, AssignmentSelectorContractResult, AssignmentValidationRequest, AutomationBuilderCatalog, AutomationCommandHeaders, AutomationEngineHealthSnapshot, AutomationExecutionDetail, AutomationExecutionEvent, AutomationExecutionListResult, AutomationExecutionNodeDataDetail, AutomationExecutionStatus, AutomationExecutionSummary, AutomationExportDefinition, AutomationFormBindingDefinition, AutomationFrontendDetail, AutomationFrontendListResult, AutomationImportRequest, AutomationImportResult, AutomationLastExecutionSummary, AutomationMetadataRequest, AutomationNodeAttempt, AutomationNodeDefinition, AutomationNodeRun, AutomationNodeTestRunExternalCallAudit, AutomationNodeTestRunLogEntry, AutomationNodeTestRunRequest, AutomationNodeTestRunResult, AutomationNodeTestRunStatus, AutomationNodeTestRunValidationIssue, AutomationNodeType, AutomationPagedResult, AutomationRetentionPruneResult, AutomationRevisionDiffResult, AutomationRevisionSummary, AutomationRouteDefinition, AutomationRunResult, AutomationRuntimeWait, AutomationRuntimeWaitResumeTokenResult, AutomationSelectorItem, AutomationSelectorResult, AutomationStatus, AutomationSummary, AutomationTriggerDefinition, AutomationTriggerType, AutomationValidationIssue, AutomationValidationReport, AutomationValidationSummary, AvatarSeverityVars, BatchBuilderPatchRequest, BusinessActionActorContext, BusinessActionApp, BusinessActionAppsResult, BusinessActionAutomationContext, BusinessActionCatalog, BusinessActionDefinition, BusinessActionDiscoveryContext, BusinessActionError, BusinessActionField, BusinessActionListResult, BusinessActionNodeConfig, BusinessActionOption, BusinessActionOptionProvider, BusinessActionOptionsRequest, BusinessActionOptionsResponse, BusinessActionTestRequest, BusinessActionTestResponse, BusinessActionValidateRequest, BusinessActionValidateResponse, BusinessActionValidationIssue, CanonicalFormDefinitionDetail, CanonicalFormDefinitionSummary, CanonicalFormListParams, CanonicalFormRevisionDetail, CanonicalFormRevisionPublishResult, CanonicalFormRevisionSummary, CanonicalFormRevisionValidationResult, CanonicalModuleDefinitionDetail, CanonicalModuleDefinitionListParams, CanonicalModuleDefinitionSummary, CanonicalModuleField, CanonicalModuleSchema, ClientAutomationQuery, ClientAutomationStateModel, ClientInteraction, ClientInteractionDetail, ClientManualTrigger, ClientRequestLifecycle, ClientRequestLifecycleEvent, ClientRequestLifecycleStep, ClientRequestSummary, ClientStartCatalog, ClientStartForm, ConnectionTestRequest, ConnectionTestResult, ConnectorActionCatalogItem, ConnectorCatalog, ConnectorProviderCatalogItem, ConvertToFileActionCatalogItem, ConvertToFileCatalog, CreateCanonicalFormDefinitionRequest, CreateCanonicalFormRevisionRequest, CreateCanonicalModuleFieldRequest, CreateWorkflowConnectionRequest, CreateWorkflowDefinitionRequest, CreateWorkflowPluginStepRequest, CreateWorkflowStepRequest, CredentialFieldDescriptor, CredentialMutationResult, CredentialOAuthStartRequest, CredentialOAuthStartResult, CredentialProviderCatalogItem, CredentialReference, CredentialReferenceListResult, CredentialTestRequest, CredentialTestResult, CredentialTypeCatalogItem, CredentialTypeCatalogResult, DataTransformActionCatalogItem, DataTransformCatalog, EngineCommandError, EngineEventDto, ExecutionCancelResult, ExecutionNodeAiSummary, ExecutionRetryRequest, ExecutionRetryResult, ExpressionNamespaceDescriptor, ExpressionPreviewRequest, ExpressionPreviewResult, ExpressionValidationRequest, ExpressionValidationResult, FlowBranchLaneVm, FlowCanvasConnectionPosition, FlowCanvasConnectionRouting, FlowCanvasConnectionRoutingContext, FlowCanvasConnectionSide, FlowCanvasConnectionType, FlowCanvasConnectionWaypoint, FlowCanvasEdgeVm, FlowCanvasNodeVm, FlowLayoutEngine, FlowNodePortVm, FlowPlusCommitMappingValidationRequest, FlowPlusModuleCatalogItem, FlowPlusModuleCatalogResult, FlowPlusModuleField, FlowPlusModuleSchemaResult, FlowPortDirection, FlowPortSide, FlowplusApiError, FlowplusBuilderCommand, FlowplusBuilderSlice, FlowplusConflictState, FlowplusDirtyFlags, FlowplusExecutionRuntimeSlice, FlowplusFormDesignerAdapter, FlowplusPendingOperation, FlowplusPublishStatus, FlowplusRuntimeNodeState, FlowplusRuntimeNodeVisualState, FlowplusRuntimeReplayMode, FlowplusRuntimeRouteState, FlowplusRuntimeRouteVisualState, FlowplusRuntimeTriggerState, FlowplusRuntimeTriggerVisualState, FlowplusSaveStatus, FlowplusSelection, FlowplusStudioSlice, FlowplusTriggerExecutionRequest, FlowplusUiState, FlowplusWorkflowConfig, FlowplusWorkflowNavigationConfig, FlowplusWorkflowStateModel, FormBindingDefinitionRequest, FormDefinitionStatus, FormPurpose, FormRevisionStatus, FormSchemaResult, FormSelectorContractResult, FormSelectorItem, FormVersionListResult, FormVersionSummary, FormulaBuilderValue, GenericAiNodeConfig, HumanApprovalDecisionRequest, HumanApprovalDecisionResult, HumanTaskActionResult, HumanTaskAssignment, HumanTaskCancelRequest, HumanTaskDraftRequest, HumanTaskPayloadResult, HumanTaskSubmitRequest, IntegrationAuthType, IntegrationConnectionSummary, IntegrationConnectionsResponse, IntegrationProviderCatalogItem, IntegrationProviderCategory, IntegrationSection, IntegrationSectionKey, IntegrationsOverview, IntegrationsStateModel, InteractionAction, InteractionActionRequest, InteractionAllowedAction, JsonSchemaLite, LocalOpenAiCompatibleConnectionRequest, LocalProviderRequestMode, ManualConnectionRequest, ManualCredentialCreateRequest, ModuleDefinitionStatus, ModuleFieldDataType, ModuleFieldStorageType, NavigationTarget, NodeDefinitionRequest, NodeTypeCatalogItem, OpenAiConnectionRequest, OpenStepFormDesignerInput, OpenStepFormPreviewInput, OperationsAuditEvent, OperationsAutomationSummary, OperationsBottleneck, OperationsHealth, OperationsInstanceDetail, OperationsInstanceSummary, OperationsNodeRun, OperationsOpenWorkItem, OperationsOverview, OperationsRecentFailure, OperationsRuntimeWait, OperationsStateModel, OperationsStatusCount, OperationsTimelineEvent, OperationsWorkItem, PagedResult, ProcessContextEntryDto, ProcessContextLineageNodeDto, ProcessContextSnapshotDto, ProcessContextTimelineEventDto, ProcessFormLoadRequest, ProcessFormLoadResponseDto, ProcessStartRequest, ProcessStartResultDto, ProcessSubmitOperationKey, ProcessSubmitRequest, ProcessSubmitResponseDto, ProcessSubmitStatus, PublishAutomationRequest, PublishAutomationResult, QueuedNodeSummary, ReorderCanonicalModuleFieldRequestItem, ReorderCanonicalModuleFieldsRequest, RouteDefinitionRequest, RunManualTriggerRequest, SaveInteractionDraftRequest, ScheduleOptionsResult, SchedulePreviewRequest, SchedulePreviewResult, ScheduleValidationRequest, SpecializedAiNodeConfig, StepFormDesignerResult, StepFormPreviewResult, SubmitStartFormRequest, TaskActionRequest, TaskActionResultDto, TranslatableText, TriggerCycleValidationSummary, TriggerDefinitionRequest, TriggerNodeVm, TriggerStarterKind, TriggerTypeCatalogItem, UpdateCanonicalFormDefinitionRequest, UpdateCanonicalFormRevisionRequest, UpdateCanonicalModuleFieldRequest, UpdateWorkflowConnectionRequest, UpdateWorkflowDefinitionRequest, UpdateWorkflowStepRequest, WaitResumeRequest, WaitResumeResult, WebhookSetupResult, WorkflowAppActionDescriptorDto, WorkflowAppActionMappingDto, WorkflowAppActionOptionDto, WorkflowAppActionStepConfigDto, WorkflowAppDescriptorDto, WorkflowAutomatedOutputMappingDto, WorkflowAutomatedStepConfigDto, WorkflowBuilderCapabilitiesDto, WorkflowBuilderDto, WorkflowBuilderPermissionsDto, WorkflowCatalogDefaultsDto, WorkflowCatalogDto, WorkflowCatalogOptionDto, WorkflowConnectionDomain, WorkflowConnectionDto, WorkflowConnectionLayoutDto, WorkflowContextCatalogDto, WorkflowContextCatalogSourceDto, WorkflowContextPathValidationRequest, WorkflowContextPathValidationResultDto, WorkflowContextSourceType, WorkflowContextValueType, WorkflowDefinitionDomain, WorkflowDefinitionDto, WorkflowDefinitionListQuery, WorkflowDefinitionListResult, WorkflowDefinitionSummaryDto, WorkflowFormBindingContractDto, WorkflowFormBindingMode, WorkflowJoinParallelStepConfigDto, WorkflowLayoutDto, WorkflowNodeLayoutDto, WorkflowPluginDescriptorDto, WorkflowPluginStepConfigDto, WorkflowResourceBindingDto, WorkflowRuntimeRoutingPolicyDto, WorkflowSelectedActionDto, WorkflowStartParallelStepConfigDto, WorkflowStatus, WorkflowStepActionCatalogItemDto, WorkflowStepActionDto, WorkflowStepCategory, WorkflowStepDefaultsItemDto, WorkflowStepDomain, WorkflowStepDto, WorkflowStepFormBindingDto, WorkflowStepFormContractDto, WorkflowStepFormUpdateRequest, WorkflowStepPropertyDto, WorkflowStepType, WorkflowStepTypeCapabilityItemDto, WorkflowStepTypeCatalogItemDto, WorkflowSubprocessContextMappingDto, WorkflowSubprocessPropertyMappingDto, WorkflowSubprocessStepConfigDto, WorkflowTestRunConnectionDecisionDto, WorkflowTestRunContextChangeDto, WorkflowTestRunContextValueDto, WorkflowTestRunMode, WorkflowTestRunRequest, WorkflowTestRunResultDto, WorkflowTestRunStatus, WorkflowTestStepResultDto, WorkflowTestStepStatus, WorkflowTriggerDomain, WorkflowTriggerDto, WorkflowTriggerType, WorkflowValidationEntityType, WorkflowValidationGroupKey, WorkflowValidationGroupedIssuesDto, WorkflowValidationIssueDto, WorkflowValidationIssueSeverity, WorkflowValidationResultDto, WorkflowValidationSeverity, WorkflowValidationStateDto, WorkflowVariableCollectionDto, WorkflowVariableDto, WorkflowVariableRequest, WorkflowViewportDto };