@burdenoff/fluidgrids-fe-sdk 2026.1105.4 → 2026.1107.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/{ExecutionDetailPage-OOHJQR2L.js → ExecutionDetailPage-TQST7JKC.js} +7 -7
- package/dist/{ExecutionsListPage-6HS5VQOV.js → ExecutionsListPage-QQKEGXSC.js} +6 -6
- package/dist/{WorkflowBuilder-PICIS7FI.js → WorkflowBuilder-R7VIOVRO.js} +11 -11
- package/dist/{WorkflowsList-SD5XQC4Q.js → WorkflowsList-2WX7N526.js} +7 -7
- package/dist/{agentTools-UH4LU6LA.js → agentTools-MEEGOAE2.js} +4 -4
- package/dist/assistant.d.ts +1 -61
- package/dist/{chunk-OTOQFZFO.js → chunk-4F54UT62.js} +10 -10
- package/dist/{chunk-XNARCHMT.js → chunk-5KK3ALQ4.js} +1 -1
- package/dist/{chunk-Y4UCHFGK.js → chunk-752BT4WM.js} +1 -1
- package/dist/{chunk-KJT5TAOE.js → chunk-BLLBUHVF.js} +1 -1
- package/dist/{chunk-GBQC5WDH.js → chunk-E3PNEIBJ.js} +4 -4
- package/dist/{chunk-UYTPURFW.js → chunk-GA3V3X7Q.js} +2 -2
- package/dist/{chunk-HSTP2RX3.js → chunk-HUCRE45R.js} +1 -1
- package/dist/{chunk-LLCVVRCE.js → chunk-HY3XCZLB.js} +6 -6
- package/dist/{chunk-UWCD7JUU.js → chunk-JOOGRWYY.js} +4 -4
- package/dist/{chunk-43GSC5Y6.js → chunk-JRSCUUBT.js} +1 -1
- package/dist/{chunk-6VIG44VF.js → chunk-KE677WYY.js} +1 -1
- package/dist/{chunk-5GG2FEKW.js → chunk-KXCJPWYE.js} +2 -2
- package/dist/{chunk-OLRIWGYM.js → chunk-MESGVHUU.js} +4 -4
- package/dist/{chunk-WBRW67HX.js → chunk-MYAFMXFI.js} +2 -2
- package/dist/{chunk-XWINH6CR.js → chunk-NMYENCP2.js} +1 -1
- package/dist/{chunk-GBJWPSLJ.js → chunk-NSDBXKIC.js} +2 -2
- package/dist/{chunk-5Z4F24QT.js → chunk-OHKSDHNC.js} +1 -1
- package/dist/{chunk-4XAXF5VP.js → chunk-PYSEOWLW.js} +4 -4
- package/dist/{chunk-M72SMQOS.js → chunk-RI4NFNDX.js} +6 -6
- package/dist/{chunk-JRLBPR5U.js → chunk-TDFC5U66.js} +1 -1
- package/dist/{chunk-TGWDFLEX.js → chunk-UZJKX5FN.js} +5 -4
- package/dist/{chunk-EIMTOK6E.js → chunk-V2K4HJY4.js} +1 -1
- package/dist/{chunk-UIS7KGHW.js → chunk-VKC3ICRA.js} +4 -4
- package/dist/{chunk-GPABUQTD.js → chunk-WBVBRXDI.js} +5 -5
- package/dist/{chunk-ASYYYJG2.js → chunk-ZTZNQ5GF.js} +1 -1
- package/dist/{chunk-WC526MLS.js → chunk-ZWDKN6PU.js} +1 -1
- package/dist/executions.js +8 -8
- package/dist/history.js +6 -6
- package/dist/index.d.ts +6 -25757
- package/dist/index.js +35 -35
- package/dist/{node-detail-view-P5NV5CMO.js → node-detail-view-AQCGO4XQ.js} +7 -7
- package/dist/observability.js +4 -4
- package/dist/pageControlsBridge-kfcowd-2.d.ts +37 -0
- package/dist/{quick-config-panel-ZNSBVF4G.js → quick-config-panel-G3T4JCF6.js} +5 -5
- package/dist/settings.d.ts +0 -8
- package/dist/settings.js +5 -5
- package/dist/templates.d.ts +0 -10
- package/dist/templates.js +10 -10
- package/dist/workflow-builder-C261exmL.d.ts +688 -0
- package/dist/workflow-builder.d.ts +1 -1
- package/dist/workflow-builder.js +12 -12
- package/dist/workflow-preview.d.ts +0 -88
- package/dist/workflow-preview.js +78 -43
- package/dist/workflows-list.js +7 -7
- package/package.json +1 -1
- package/dist/pageControlsBridge-D6y36qi5.d.ts +0 -87
- package/dist/workflow-builder-C-ekFbwR.d.ts +0 -1210
|
@@ -1,1210 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { ApolloClient } from '@apollo/client/core';
|
|
3
|
-
import { ReactNode } from 'react';
|
|
4
|
-
import { Edge, Node, NodeChange, EdgeChange, Connection } from '@xyflow/react';
|
|
5
|
-
import * as zustand from 'zustand';
|
|
6
|
-
|
|
7
|
-
/** Version of the host event contract. See the module note for the rules. */
|
|
8
|
-
declare const FLUIDGRIDS_EVENTS_VERSION = "1.0.0";
|
|
9
|
-
/** Where an `error` event came from. */
|
|
10
|
-
type FluidGridsErrorSource = "workflow:save" | "workflow:activate" | "run:start";
|
|
11
|
-
/**
|
|
12
|
-
* Every host event and its payload.
|
|
13
|
-
*
|
|
14
|
-
* - `workflow:saved` — a save reached `wspace-workflow-svc` (create, update or
|
|
15
|
-
* new version). `id` is the saved definition's database id.
|
|
16
|
-
* - `workflow:activated` — a version was activated (published).
|
|
17
|
-
* - `run:started` — the backend accepted a run: builder test runs, run from a
|
|
18
|
-
* node, a followed webhook test event, triggers, replays and retries.
|
|
19
|
-
* `mode` is the run mode when the SDK knows it (`TEST`, `PRODUCTION`, …).
|
|
20
|
-
* - `run:completed` — a run the builder is following reached a terminal
|
|
21
|
-
* status (`COMPLETED`, `FAILED`, `CANCELLED`, `TERMINATED`). Emitted once
|
|
22
|
-
* per run id.
|
|
23
|
-
* - `node:selected` — the selection on the builder canvas changed to exactly
|
|
24
|
-
* one node. `nodeId: null` means the selection was cleared. Selecting
|
|
25
|
-
* several nodes at once emits nothing. Emitted by the full builder and by
|
|
26
|
-
* the standalone `WorkflowBuilder` / `WorkflowBuilderCore` canvas.
|
|
27
|
-
* - `error` — a save, an activation or a run start failed. `message` is the
|
|
28
|
-
* user-presentable message; `code` is the gateway error code when present.
|
|
29
|
-
* - `auth:failed` — the SDK could not get a fresh token after an expired-token
|
|
30
|
-
* response (the `auth.onTokenExpired` callback rejected or returned no
|
|
31
|
-
* token). Emitted once per failed refresh attempt: requests that were
|
|
32
|
-
* already in flight when it failed surface their original error without a
|
|
33
|
-
* second callback call or event. The failed request surfaces its original
|
|
34
|
-
* error.
|
|
35
|
-
*
|
|
36
|
-
* Standalone builder: `WorkflowBuilder` / `WorkflowBuilderCore` (the
|
|
37
|
-
* lightweight local canvas) only hand the workflow to `onSave` and a
|
|
38
|
-
* client-generated id to `onExecute`; they never call the backend. A save
|
|
39
|
-
* there is not persisted by the SDK and no run exists yet, so they emit only
|
|
40
|
-
* `node:selected` — never `workflow:saved`, `run:started` or `error`. The full
|
|
41
|
-
* builder (`FluidGridsRoot`, `WorkflowBuilderPage`) emits every event above.
|
|
42
|
-
*/
|
|
43
|
-
interface FluidGridsEventMap {
|
|
44
|
-
"workflow:saved": {
|
|
45
|
-
workflowKey: string;
|
|
46
|
-
version?: string;
|
|
47
|
-
id?: string;
|
|
48
|
-
};
|
|
49
|
-
"workflow:activated": {
|
|
50
|
-
workflowKey: string;
|
|
51
|
-
version?: string;
|
|
52
|
-
};
|
|
53
|
-
"run:started": {
|
|
54
|
-
runId: string;
|
|
55
|
-
workflowKey?: string;
|
|
56
|
-
mode?: string;
|
|
57
|
-
};
|
|
58
|
-
"run:completed": {
|
|
59
|
-
runId: string;
|
|
60
|
-
status: string;
|
|
61
|
-
workflowKey?: string;
|
|
62
|
-
};
|
|
63
|
-
"node:selected": {
|
|
64
|
-
nodeId: string | null;
|
|
65
|
-
nodeType?: string;
|
|
66
|
-
};
|
|
67
|
-
error: {
|
|
68
|
-
source: FluidGridsErrorSource;
|
|
69
|
-
message: string;
|
|
70
|
-
code?: string;
|
|
71
|
-
};
|
|
72
|
-
"auth:failed": {
|
|
73
|
-
message: string;
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
/** Name of a host event. */
|
|
77
|
-
type FluidGridsEventName = keyof FluidGridsEventMap;
|
|
78
|
-
/** Payload of the host event `K`. */
|
|
79
|
-
type FluidGridsEventPayload<K extends FluidGridsEventName> = FluidGridsEventMap[K];
|
|
80
|
-
/** Every host event name, in documentation order. */
|
|
81
|
-
declare const FLUIDGRIDS_EVENT_NAMES: readonly FluidGridsEventName[];
|
|
82
|
-
/** `[name, payload]` pairs, one per event: lets `name` narrow `payload`. */
|
|
83
|
-
type FluidGridsEventArgs = {
|
|
84
|
-
[K in FluidGridsEventName]: [name: K, payload: FluidGridsEventMap[K]];
|
|
85
|
-
}[FluidGridsEventName];
|
|
86
|
-
/**
|
|
87
|
-
* Host event callback. Checking `name` narrows `payload`:
|
|
88
|
-
*
|
|
89
|
-
* ```ts
|
|
90
|
-
* const onEvent: FluidGridsEventHandler = (name, payload) => {
|
|
91
|
-
* if (name === "run:completed") console.log(payload.runId, payload.status);
|
|
92
|
-
* };
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
type FluidGridsEventHandler = (...args: FluidGridsEventArgs) => void;
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Embed theming (BOFF-9961).
|
|
99
|
-
*
|
|
100
|
-
* A host themes the embedded SDK with a {@link FluidGridsTheme}: either the
|
|
101
|
-
* `"light"` / `"dark"` shortcut, or an object that picks a mode and overrides
|
|
102
|
-
* individual design tokens (colours, radii, fonts). Each token key maps to one
|
|
103
|
-
* or more fe-libs semantic CSS variables ({@link FLUIDGRIDS_THEME_TOKEN_MAP}),
|
|
104
|
-
* so the whole builder, its dialogs and its popovers pick the values up.
|
|
105
|
-
*
|
|
106
|
-
* The theme is DOCUMENT-WIDE. The SDK renders into the host's document and
|
|
107
|
-
* Radix portals render under `body`, and the fe-libs alias tokens
|
|
108
|
-
* (`--color-primary`, `--color-background`, …) are declared on `:root` as
|
|
109
|
-
* references to the semantic tokens, so an override on a wrapper element would
|
|
110
|
-
* not reach them. The variables are therefore written as inline custom
|
|
111
|
-
* properties on `document.documentElement`, and the previous inline values
|
|
112
|
-
* are restored when the theme is removed. A host that wants its own chrome to
|
|
113
|
-
* keep a different look should scope its own styles, not the SDK's.
|
|
114
|
-
*
|
|
115
|
-
* @module theme/fluidgridsTheme
|
|
116
|
-
*/
|
|
117
|
-
/** Colour mode of the SDK UI. */
|
|
118
|
-
type FluidGridsThemeMode = "light" | "dark";
|
|
119
|
-
/** Colour overrides. Each value is a CSS colour such as `#2563eb` or `oklch(62% 0.2 250)`. */
|
|
120
|
-
interface FluidGridsThemeColors {
|
|
121
|
-
/** Page / canvas background. */
|
|
122
|
-
bgCanvas?: string;
|
|
123
|
-
/** Cards, panels and the canvas frame. */
|
|
124
|
-
bgSurface?: string;
|
|
125
|
-
/** Dialogs, popovers and menus. */
|
|
126
|
-
bgElevated?: string;
|
|
127
|
-
/** Inset areas: inputs, code blocks, wells. */
|
|
128
|
-
bgSunken?: string;
|
|
129
|
-
/** Main text. */
|
|
130
|
-
textPrimary?: string;
|
|
131
|
-
/** Secondary text. */
|
|
132
|
-
textSecondary?: string;
|
|
133
|
-
/** Hints, captions and placeholders. */
|
|
134
|
-
textMuted?: string;
|
|
135
|
-
/** Default borders. */
|
|
136
|
-
borderDefault?: string;
|
|
137
|
-
/** Hairlines and dividers. */
|
|
138
|
-
borderSubtle?: string;
|
|
139
|
-
/** Emphasised borders. */
|
|
140
|
-
borderStrong?: string;
|
|
141
|
-
/** Brand / primary action colour (buttons, focus, selection). */
|
|
142
|
-
primary?: string;
|
|
143
|
-
/** Primary action hover. Derived from `primary` when omitted. */
|
|
144
|
-
primaryHover?: string;
|
|
145
|
-
/** Primary action pressed. Derived from `primary` when omitted. */
|
|
146
|
-
primaryActive?: string;
|
|
147
|
-
/** Text on the primary colour. Picked for contrast when omitted. */
|
|
148
|
-
primaryText?: string;
|
|
149
|
-
/** Success status colour. */
|
|
150
|
-
success?: string;
|
|
151
|
-
/** Warning status colour. */
|
|
152
|
-
warning?: string;
|
|
153
|
-
/** Error status colour. */
|
|
154
|
-
error?: string;
|
|
155
|
-
/** Info status colour. */
|
|
156
|
-
info?: string;
|
|
157
|
-
}
|
|
158
|
-
/** Corner-radius overrides. Each value is a CSS length (`8px`, `0.5rem`). */
|
|
159
|
-
interface FluidGridsThemeRadius {
|
|
160
|
-
/** Base radius most components scale from. */
|
|
161
|
-
base?: string;
|
|
162
|
-
/** Cards and panels. */
|
|
163
|
-
card?: string;
|
|
164
|
-
/** Buttons. */
|
|
165
|
-
button?: string;
|
|
166
|
-
/** Inputs and selects. */
|
|
167
|
-
input?: string;
|
|
168
|
-
}
|
|
169
|
-
/** Font overrides. Each value is a CSS `font-family` list. */
|
|
170
|
-
interface FluidGridsThemeFont {
|
|
171
|
-
/** Body text. */
|
|
172
|
-
body?: string;
|
|
173
|
-
/** Headings. */
|
|
174
|
-
heading?: string;
|
|
175
|
-
/** Code, ids and JSON. */
|
|
176
|
-
mono?: string;
|
|
177
|
-
}
|
|
178
|
-
/** Full theme object. Every field is optional. */
|
|
179
|
-
interface FluidGridsThemeTokens {
|
|
180
|
-
/** Force light or dark. Omit to keep the host's / visitor's mode. */
|
|
181
|
-
mode?: FluidGridsThemeMode;
|
|
182
|
-
colors?: FluidGridsThemeColors;
|
|
183
|
-
radius?: FluidGridsThemeRadius;
|
|
184
|
-
font?: FluidGridsThemeFont;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Theme for the embedded SDK: `"light"` / `"dark"` (shortcut for
|
|
188
|
-
* `{ mode }`), or a token object.
|
|
189
|
-
*/
|
|
190
|
-
type FluidGridsTheme = FluidGridsThemeMode | FluidGridsThemeTokens;
|
|
191
|
-
/** Kind of value a token accepts; decides how the value is validated. */
|
|
192
|
-
type FluidGridsThemeValueKind = "color" | "length" | "font";
|
|
193
|
-
/** One row of {@link FLUIDGRIDS_THEME_TOKEN_MAP}. */
|
|
194
|
-
interface FluidGridsThemeTokenMapping {
|
|
195
|
-
kind: FluidGridsThemeValueKind;
|
|
196
|
-
/** CSS custom properties the token sets, in order. */
|
|
197
|
-
cssVariables: readonly string[];
|
|
198
|
-
}
|
|
199
|
-
/** Dotted key of every theme token: `colors.primary`, `radius.card`, … */
|
|
200
|
-
type FluidGridsThemeTokenKey = `colors.${keyof FluidGridsThemeColors & string}` | `radius.${keyof FluidGridsThemeRadius & string}` | `font.${keyof FluidGridsThemeFont & string}`;
|
|
201
|
-
/**
|
|
202
|
-
* Theme token → the fe-libs semantic CSS variables it sets. This table is the
|
|
203
|
-
* public contract: a token keeps its variables across minor releases.
|
|
204
|
-
*/
|
|
205
|
-
declare const FLUIDGRIDS_THEME_TOKEN_MAP: Readonly<Record<FluidGridsThemeTokenKey, FluidGridsThemeTokenMapping>>;
|
|
206
|
-
/**
|
|
207
|
-
* Turn a theme into the CSS custom properties it sets. Pure: no DOM access.
|
|
208
|
-
*
|
|
209
|
-
* Values that are not plain CSS values of the token's kind (anything with
|
|
210
|
-
* `;`, `{`, `}`, `url(`, `expression(`, quotes other than single-quoted font
|
|
211
|
-
* names, …) are dropped with a console warning. Unknown keys are dropped the
|
|
212
|
-
* same way. When `colors.primary` is set, the hover / pressed shades and the
|
|
213
|
-
* text colour are derived from it unless they are set explicitly; the text
|
|
214
|
-
* colour is picked for contrast when `primary` is a hex colour.
|
|
215
|
-
*/
|
|
216
|
-
declare function themeToCssVariables(theme: FluidGridsTheme | null | undefined): Record<string, string>;
|
|
217
|
-
/**
|
|
218
|
-
* Apply a theme to the document and return a function that removes it again.
|
|
219
|
-
*
|
|
220
|
-
* Sets each variable from {@link themeToCssVariables} as an inline custom
|
|
221
|
-
* property on `document.documentElement`, and for a mode sets `data-theme`
|
|
222
|
-
* and the `.dark` class. While applied, the values are re-forced if something
|
|
223
|
-
* else (a host ThemeProvider) rewrites them. Disposing restores the inline
|
|
224
|
-
* values and mode the document had (including any change the host made in
|
|
225
|
-
* between). When several themes are applied, the most recent one wins.
|
|
226
|
-
* Calling the returned function more than once is safe. Without a DOM
|
|
227
|
-
* (server rendering) it does nothing.
|
|
228
|
-
*/
|
|
229
|
-
declare function applyFluidGridsTheme(theme: FluidGridsTheme | null | undefined): () => void;
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Configuration module for FluidGrids SDK
|
|
233
|
-
*/
|
|
234
|
-
/** Result passed to the onWorkflowSaved callback after a successful save */
|
|
235
|
-
interface WorkflowSavedResult {
|
|
236
|
-
/** Database row ID of the saved workflow definition */
|
|
237
|
-
dbId: string;
|
|
238
|
-
/** Human-readable workflow key (e.g., "github_user_profile") */
|
|
239
|
-
workflowKey: string;
|
|
240
|
-
/** Semantic version string (e.g., "v1", "v2") */
|
|
241
|
-
version: string;
|
|
242
|
-
/** Display name of the workflow */
|
|
243
|
-
name: string;
|
|
244
|
-
/** Optional description */
|
|
245
|
-
description?: string;
|
|
246
|
-
/** What kind of save operation occurred */
|
|
247
|
-
operation: "created" | "updated" | "versioned";
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Tokens returned by {@link FluidGridsAuthConfig.onTokenExpired}. Return only
|
|
251
|
-
* the ones that changed; a missing field keeps its current value.
|
|
252
|
-
*/
|
|
253
|
-
interface FluidGridsRefreshedTokens {
|
|
254
|
-
/** New user / app token, sent as `authorization: Bearer …`. */
|
|
255
|
-
authToken?: string;
|
|
256
|
-
/** New workspace token, sent as `x-workspace-authorization: Bearer …`. */
|
|
257
|
-
workspaceToken?: string;
|
|
258
|
-
}
|
|
259
|
-
/** Authentication hooks for embedders. */
|
|
260
|
-
interface FluidGridsAuthConfig {
|
|
261
|
-
/**
|
|
262
|
-
* Called when a request fails because the session expired (HTTP 401, a
|
|
263
|
-
* GraphQL `UNAUTHENTICATED` error, or an expired / revoked credential
|
|
264
|
-
* reported by the gateway). Resolve with a fresh token — a string is the
|
|
265
|
-
* new `authToken`, an object can also replace the `workspaceToken`. The SDK
|
|
266
|
-
* stores it in the config, retries the failed request once, and shares one
|
|
267
|
-
* call between requests that fail at the same time.
|
|
268
|
-
*
|
|
269
|
-
* Reject, or resolve with an empty token, when no fresh token is available:
|
|
270
|
-
* the SDK then emits `auth:failed` on `onEvent` and the request fails with
|
|
271
|
-
* its original error. The SDK never retries a request twice.
|
|
272
|
-
*/
|
|
273
|
-
onTokenExpired?: () => Promise<string | FluidGridsRefreshedTokens>;
|
|
274
|
-
}
|
|
275
|
-
interface FluidGridsConfig {
|
|
276
|
-
/** GraphQL endpoint URL (workspace gateway) */
|
|
277
|
-
apiGatewayUrl: string;
|
|
278
|
-
/** GraphQL endpoint URL (global gateway) */
|
|
279
|
-
globalApiUrl?: string;
|
|
280
|
-
/** Auth token for API calls */
|
|
281
|
-
authToken?: string;
|
|
282
|
-
/** Current workspace ID */
|
|
283
|
-
workspaceId: string;
|
|
284
|
-
/**
|
|
285
|
-
* Workspace access token of the current workspace. Store queries send it as
|
|
286
|
-
* `x-workspace-authorization` so the global gateway can derive a verified
|
|
287
|
-
* workspace for them: the public gateway never trusts a client-sent
|
|
288
|
-
* `x-workspace-id`, and the store lists the durable-function nodes only to a
|
|
289
|
-
* workspace with durable functions on (BOFF-9905).
|
|
290
|
-
*/
|
|
291
|
-
workspaceToken?: string;
|
|
292
|
-
/** Current tenant ID */
|
|
293
|
-
tenantId?: string;
|
|
294
|
-
/** Organization ID */
|
|
295
|
-
organizationId?: string;
|
|
296
|
-
/**
|
|
297
|
-
* @deprecated Never read. Share/Embed links used to be built from this
|
|
298
|
-
* value, which no host ever set, so they shipped as `undefined/...`
|
|
299
|
-
* (BOFF-7753). Kept only so existing host configs still type-check.
|
|
300
|
-
*/
|
|
301
|
-
fluidgridFrontendUrl?: string;
|
|
302
|
-
/** Product ID for workflow isolation (e.g., 'bigconsole', 'botmanor', 'fluidgrids') */
|
|
303
|
-
productId?: string;
|
|
304
|
-
/** Product name for display purposes */
|
|
305
|
-
productName?: string;
|
|
306
|
-
/** Optional allowlist for host origins embedding the SDK */
|
|
307
|
-
trustedOrigins?: string[];
|
|
308
|
-
/**
|
|
309
|
-
* Callback invoked after a workflow is successfully saved to wspace-workflow-svc.
|
|
310
|
-
* Host apps (BigConsole, BotManor) can use this to sync metadata to their own backends.
|
|
311
|
-
* Errors thrown by this callback are caught and logged — they never block the save.
|
|
312
|
-
*/
|
|
313
|
-
onWorkflowSaved?: (result: WorkflowSavedResult) => void | Promise<void>;
|
|
314
|
-
/**
|
|
315
|
-
* Theme for the embedded UI: `"light"`, `"dark"`, or a token object.
|
|
316
|
-
* Setting it (here, or with the `theme` prop of `FluidGridsProvider`)
|
|
317
|
-
* applies it document-wide right away — see `applyFluidGridsTheme`;
|
|
318
|
-
* setting `undefined` or resetting the config removes it.
|
|
319
|
-
*/
|
|
320
|
-
theme?: FluidGridsTheme;
|
|
321
|
-
/** Authentication hooks: token refresh on expiry. */
|
|
322
|
-
auth?: FluidGridsAuthConfig;
|
|
323
|
-
/**
|
|
324
|
-
* Host event callback: workflow saved / activated, run started / completed,
|
|
325
|
-
* node selected, errors and auth failures. See `FluidGridsEventMap`.
|
|
326
|
-
* Exceptions thrown by the handler are caught and logged.
|
|
327
|
-
*/
|
|
328
|
-
onEvent?: FluidGridsEventHandler;
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Get current configuration via proxy for live access
|
|
332
|
-
*/
|
|
333
|
-
declare const config: FluidGridsConfig;
|
|
334
|
-
/**
|
|
335
|
-
* Get the full configuration object
|
|
336
|
-
*/
|
|
337
|
-
declare function getFluidGridsConfig(): FluidGridsConfig;
|
|
338
|
-
/**
|
|
339
|
-
* Set runtime configuration
|
|
340
|
-
*/
|
|
341
|
-
declare function setFluidGridsConfig(newConfig: Partial<FluidGridsConfig>): void;
|
|
342
|
-
/**
|
|
343
|
-
* Reset configuration to defaults
|
|
344
|
-
*/
|
|
345
|
-
declare function resetFluidGridsConfig(): void;
|
|
346
|
-
/**
|
|
347
|
-
* Get the GraphQL endpoint URL
|
|
348
|
-
*/
|
|
349
|
-
declare function getGraphQLEndpoint(baseUrl?: string): string;
|
|
350
|
-
/** Clear user execution state only when a host session ends or changes identity. */
|
|
351
|
-
declare function resetFluidGridsExecutionState(): void;
|
|
352
|
-
|
|
353
|
-
interface FluidGridsProviderProps {
|
|
354
|
-
/** API Gateway URL (workspace gateway) */
|
|
355
|
-
apiGatewayUrl?: string;
|
|
356
|
-
/** Global API Gateway URL (for store operations) */
|
|
357
|
-
globalApiUrl?: string;
|
|
358
|
-
/** Auth token */
|
|
359
|
-
authToken?: string;
|
|
360
|
-
/** Workspace token for x-workspace-authorization header */
|
|
361
|
-
workspaceToken?: string;
|
|
362
|
-
/** Workspace ID */
|
|
363
|
-
workspaceId: string;
|
|
364
|
-
/** Owning product namespace. */
|
|
365
|
-
productId?: string;
|
|
366
|
-
/** Authenticated actor identity; supply this when accounts can switch in-place. */
|
|
367
|
-
userId?: string;
|
|
368
|
-
/** Optional host allowlist for embedded deployments */
|
|
369
|
-
trustedOrigins?: string[];
|
|
370
|
-
/** Tenant ID */
|
|
371
|
-
tenantId?: string;
|
|
372
|
-
/** Organization ID */
|
|
373
|
-
organizationId?: string;
|
|
374
|
-
/** Optional: provide your own workspace Apollo client */
|
|
375
|
-
workspaceClient?: ApolloClient;
|
|
376
|
-
/** Optional: provide your own global Apollo client */
|
|
377
|
-
globalClient?: ApolloClient;
|
|
378
|
-
/** @deprecated Use workspaceClient instead */
|
|
379
|
-
apolloClient?: ApolloClient;
|
|
380
|
-
/**
|
|
381
|
-
* Optional host translator: `(key, englishFallback) => string`.
|
|
382
|
-
*
|
|
383
|
-
* When omitted (standalone embedders), every string renders its English
|
|
384
|
-
* fallback — the SDK never requires an i18n provider to be mounted.
|
|
385
|
-
*/
|
|
386
|
-
t?: (key: string, fallback: string) => string;
|
|
387
|
-
/**
|
|
388
|
-
* Theme: `"light"`, `"dark"`, or a token object (colours, radii, fonts).
|
|
389
|
-
* Applied document-wide while the provider is mounted and restored on
|
|
390
|
-
* unmount. See `FluidGridsTheme` and `FLUIDGRIDS_THEME_TOKEN_MAP`.
|
|
391
|
-
*/
|
|
392
|
-
theme?: FluidGridsTheme;
|
|
393
|
-
/**
|
|
394
|
-
* Authentication hooks. `auth.onTokenExpired` is called when a request
|
|
395
|
-
* fails with an expired session; resolve with a fresh token and the SDK
|
|
396
|
-
* retries the request once.
|
|
397
|
-
*/
|
|
398
|
-
auth?: FluidGridsAuthConfig;
|
|
399
|
-
/** Host event callback. See `FluidGridsEventMap`. */
|
|
400
|
-
onEvent?: FluidGridsEventHandler;
|
|
401
|
-
/** Children */
|
|
402
|
-
children: ReactNode;
|
|
403
|
-
}
|
|
404
|
-
interface FluidGridsContextValue {
|
|
405
|
-
apiGatewayUrl?: string;
|
|
406
|
-
globalApiUrl?: string;
|
|
407
|
-
authToken?: string;
|
|
408
|
-
workspaceId: string;
|
|
409
|
-
productId?: string;
|
|
410
|
-
userId?: string;
|
|
411
|
-
trustedOrigins?: string[];
|
|
412
|
-
tenantId?: string;
|
|
413
|
-
organizationId?: string;
|
|
414
|
-
workspaceClient?: ApolloClient;
|
|
415
|
-
globalClient?: ApolloClient;
|
|
416
|
-
/** Host translator, consumed by `useTr()`. */
|
|
417
|
-
t?: (key: string, fallback: string) => string;
|
|
418
|
-
}
|
|
419
|
-
declare function FluidGridsProvider({ apiGatewayUrl, globalApiUrl, authToken, workspaceToken, workspaceId, productId, userId, trustedOrigins, tenantId, organizationId, t, theme, auth, onEvent, workspaceClient: externalWorkspaceClient, globalClient: externalGlobalClient, apolloClient: legacyClient, children, }: FluidGridsProviderProps): react_jsx_runtime.JSX.Element;
|
|
420
|
-
declare function useFluidGridsContext(): FluidGridsContextValue;
|
|
421
|
-
|
|
422
|
-
type ExtendedNodeType = "trigger:api" | "end" | "internal:if" | "internal:switch" | "internal:loop" | "internal:merge" | "internal:set" | "internal:filter" | "internal:aggregate" | "internal:wait" | "internal:noop" | "internal:subworkflow" | string;
|
|
423
|
-
interface FlowNodeData {
|
|
424
|
-
label: string;
|
|
425
|
-
deletable?: boolean;
|
|
426
|
-
nodeType?: string;
|
|
427
|
-
config?: Record<string, unknown>;
|
|
428
|
-
/** When true, the node is dimmed on the canvas and the worker executor
|
|
429
|
-
* skips it entirely at runtime — its input passes through unchanged as
|
|
430
|
-
* its output, and its edges stay intact (BOFF-7510). */
|
|
431
|
-
disabled?: boolean;
|
|
432
|
-
/**
|
|
433
|
-
* Node-level retry/timeout/error-branch settings (BOFF-7512). Read by the
|
|
434
|
-
* deployed worker executor as the second precedence slot
|
|
435
|
-
* (`node.errorConfig ?? node.data.errorConfig ?? node.data.args.state.errorConfig`)
|
|
436
|
-
* — the frontend deliberately writes here rather than fighting `Node<T>`
|
|
437
|
-
* typing for the node's own top-level field; `use-save-workflow.ts`
|
|
438
|
-
* flattens `data.*` onto the saved node's root too, so this still reaches
|
|
439
|
-
* the primary slot once persisted.
|
|
440
|
-
*/
|
|
441
|
-
errorConfig?: INodeErrorConfig;
|
|
442
|
-
/** Free-text note a builder leaves on a node (BOFF-7512). */
|
|
443
|
-
notes?: string;
|
|
444
|
-
/**
|
|
445
|
-
* `alwaysOutputData` / `executeOnce` (BOFF-7512) — NOT part of
|
|
446
|
-
* `INodeErrorConfig`; the deployed executor does not enforce these yet,
|
|
447
|
-
* only `errorConfig` is engine-enforced right now. Wired for persistence
|
|
448
|
-
* ahead of that.
|
|
449
|
-
*/
|
|
450
|
-
executionSettings?: INodeExecutionSettings;
|
|
451
|
-
[key: string]: unknown;
|
|
452
|
-
}
|
|
453
|
-
interface FlowNode extends Node {
|
|
454
|
-
type: ExtendedNodeType;
|
|
455
|
-
data: FlowNodeData;
|
|
456
|
-
deletable?: boolean;
|
|
457
|
-
}
|
|
458
|
-
interface FlowEdge extends Edge {
|
|
459
|
-
type?: "deletable" | "smoothstep" | "default" | string;
|
|
460
|
-
condition?: EdgeCondition;
|
|
461
|
-
mapping?: EdgeMapping;
|
|
462
|
-
}
|
|
463
|
-
interface EdgeCondition {
|
|
464
|
-
rules: ConditionRule[];
|
|
465
|
-
logic: "and" | "or";
|
|
466
|
-
}
|
|
467
|
-
interface ConditionRule {
|
|
468
|
-
field: string;
|
|
469
|
-
operator: string;
|
|
470
|
-
value: string;
|
|
471
|
-
}
|
|
472
|
-
type MappingValue = string | number | boolean | null | MappingValue[] | {
|
|
473
|
-
[key: string]: MappingValue;
|
|
474
|
-
};
|
|
475
|
-
interface EdgeMapping {
|
|
476
|
-
definition: Record<string, MappingValue>;
|
|
477
|
-
comment?: string;
|
|
478
|
-
}
|
|
479
|
-
interface NodeAdapterManifest {
|
|
480
|
-
name: string;
|
|
481
|
-
required?: boolean;
|
|
482
|
-
type?: string;
|
|
483
|
-
maxConnections?: number | null;
|
|
484
|
-
filter?: {
|
|
485
|
-
kind?: string[];
|
|
486
|
-
excludeNodes?: string[];
|
|
487
|
-
};
|
|
488
|
-
}
|
|
489
|
-
interface NodeManifest {
|
|
490
|
-
nodeType: string;
|
|
491
|
-
name: string;
|
|
492
|
-
description?: string;
|
|
493
|
-
kind?: string[];
|
|
494
|
-
version: string;
|
|
495
|
-
operations?: {
|
|
496
|
-
operations?: unknown[];
|
|
497
|
-
};
|
|
498
|
-
icon?: string;
|
|
499
|
-
category?: string;
|
|
500
|
-
/** Adapter ports for this node (e.g., Chat Model, Memory, Tool slots on AI Agent) */
|
|
501
|
-
nodeAdapters?: NodeAdapterManifest[];
|
|
502
|
-
/** When true, this node can connect to adapter ports on other nodes */
|
|
503
|
-
supportsAdapterMode?: boolean;
|
|
504
|
-
/** The adapter type this node satisfies when used as a sub-node */
|
|
505
|
-
adapterOutputType?: string;
|
|
506
|
-
/**
|
|
507
|
-
* Optional external documentation URL for this node (BOFF-7512). Not all
|
|
508
|
-
* nodes declare one — render nothing when absent, never require it.
|
|
509
|
-
*/
|
|
510
|
-
docsUrl?: string;
|
|
511
|
-
}
|
|
512
|
-
interface NodeEndpointConfig {
|
|
513
|
-
id: string;
|
|
514
|
-
nodeType: string;
|
|
515
|
-
name: string;
|
|
516
|
-
description?: string;
|
|
517
|
-
icon?: string;
|
|
518
|
-
category?: string;
|
|
519
|
-
manifest?: NodeManifest;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
/**
|
|
523
|
-
* Node-level error/retry/timeout handling configuration.
|
|
524
|
-
*
|
|
525
|
-
* Mirrors `INodeErrorConfig` in `fluidgrids-workers/src/types/workflow.types.ts`
|
|
526
|
-
* and `wspace-workflow-svc/src/modules/main/types/workflow.types.ts` — the
|
|
527
|
-
* DEPLOYED worker executor reads this shape directly off a node's top-level
|
|
528
|
-
* `errorConfig` field (BOFF-7512).
|
|
529
|
-
*/
|
|
530
|
-
interface INodeRetryConfig {
|
|
531
|
-
/** Maximum number of retry attempts (default: 0 = no retry). */
|
|
532
|
-
maxRetries: number;
|
|
533
|
-
/** Initial delay between retries in ms (default: 1000). */
|
|
534
|
-
retryDelay: number;
|
|
535
|
-
/** Backoff multiplier for exponential backoff (default: 2). */
|
|
536
|
-
backoffMultiplier?: number;
|
|
537
|
-
/** Maximum delay between retries in ms (default: 30000). */
|
|
538
|
-
maxDelay?: number;
|
|
539
|
-
/** Error types that should trigger a retry (empty/unset = all errors, incl. TIMEOUT). */
|
|
540
|
-
retryOnErrorTypes?: string[];
|
|
541
|
-
}
|
|
542
|
-
interface INodeTimeoutConfig {
|
|
543
|
-
/** Execution timeout in ms. */
|
|
544
|
-
duration: number;
|
|
545
|
-
/** What to do when the node times out (default: falls through to onError/retryConfig). */
|
|
546
|
-
onTimeout?: "stop" | "continue" | "branch";
|
|
547
|
-
/** Target node ID when onTimeout is 'branch'. */
|
|
548
|
-
timeoutBranchId?: string;
|
|
549
|
-
}
|
|
550
|
-
interface INodeErrorConfig {
|
|
551
|
-
/** 'stop' (default) | 'continue' | 'branch'. */
|
|
552
|
-
onError?: "stop" | "continue" | "branch";
|
|
553
|
-
/** Target node ID when onError is 'branch'. */
|
|
554
|
-
errorBranchId?: string;
|
|
555
|
-
retryConfig?: INodeRetryConfig;
|
|
556
|
-
timeout?: INodeTimeoutConfig;
|
|
557
|
-
}
|
|
558
|
-
/**
|
|
559
|
-
* `alwaysOutputData` / `executeOnce` node settings (BOFF-7512). A NEW
|
|
560
|
-
* sibling object next to `errorConfig` on `FlowNodeData` — NOT part of
|
|
561
|
-
* `INodeErrorConfig`. The deployed worker executor does not enforce either
|
|
562
|
-
* flag yet; only `errorConfig` is engine-enforced right now.
|
|
563
|
-
*/
|
|
564
|
-
interface INodeExecutionSettings {
|
|
565
|
-
alwaysOutputData?: boolean;
|
|
566
|
-
executeOnce?: boolean;
|
|
567
|
-
/**
|
|
568
|
-
* Where the node runs. Absent = FluidGrids Cloud. A runner = the customer's
|
|
569
|
-
* self-hosted runner (fluidgrids-workers reads exactly this shape).
|
|
570
|
-
*/
|
|
571
|
-
runOn?: {
|
|
572
|
-
kind: "runner";
|
|
573
|
-
runnerId: string;
|
|
574
|
-
};
|
|
575
|
-
}
|
|
576
|
-
/** Which finished runs of a workflow keep their data (BOFF-7514). */
|
|
577
|
-
interface WorkflowDataSaving {
|
|
578
|
-
saveSuccessExecutions?: boolean;
|
|
579
|
-
saveFailedExecutions?: boolean;
|
|
580
|
-
saveManualExecutions?: boolean;
|
|
581
|
-
}
|
|
582
|
-
/**
|
|
583
|
-
* What a workflow's runs may store (BOFF-9752). Enforced by wspace-workflow-svc
|
|
584
|
-
* (`run-data-privacy.ts`); there is no workspace-level default.
|
|
585
|
-
*/
|
|
586
|
-
interface WorkflowDataPrivacy {
|
|
587
|
-
/**
|
|
588
|
-
* Keep only the run summary (status, timings, node statuses, error types): trigger data and
|
|
589
|
-
* node inputs/outputs are dropped when the run finishes, log lines keep their message only.
|
|
590
|
-
*/
|
|
591
|
-
doNotStoreRunData?: boolean;
|
|
592
|
-
/**
|
|
593
|
-
* Field names (matched at any depth) or dotted paths (matched from the top, `*` for any key,
|
|
594
|
-
* a number for an array item) replaced with [REDACTED] in run logs and stored run data.
|
|
595
|
-
*/
|
|
596
|
-
redactFields?: string[];
|
|
597
|
-
}
|
|
598
|
-
/** How long a workflow's finished runs are kept (BOFF-7514). */
|
|
599
|
-
interface WorkflowRetention {
|
|
600
|
-
/** Delete finished runs older than this many days. */
|
|
601
|
-
maxAgeDays?: number;
|
|
602
|
-
/** Keep at most this many finished runs. */
|
|
603
|
-
maxRuns?: number;
|
|
604
|
-
}
|
|
605
|
-
/**
|
|
606
|
-
* Workflow-level execution configuration (BOFF-7512): a workflow's `definitionJson.config`.
|
|
607
|
-
*
|
|
608
|
-
* Mirrors `IWorkflowConfig` in `wspace-workflow-svc/src/modules/main/types/workflow.types.ts`
|
|
609
|
-
* (`timeout` in SECONDS). The per-workflow Settings page edits this same type.
|
|
610
|
-
*/
|
|
611
|
-
interface IWorkflowConfig {
|
|
612
|
-
/** Max parallel executions. */
|
|
613
|
-
maxParallelism?: number;
|
|
614
|
-
/** Execution timeout in SECONDS (matches the backend interface's unit). */
|
|
615
|
-
timeout?: number;
|
|
616
|
-
retry?: {
|
|
617
|
-
maxAttempts: number;
|
|
618
|
-
backoffMultiplier?: number;
|
|
619
|
-
initialDelay?: number;
|
|
620
|
-
};
|
|
621
|
-
onError?: "stop" | "continue" | "retry";
|
|
622
|
-
/** workflowKey to start (at its Error Trigger) when a production run of this workflow fails. */
|
|
623
|
-
errorWorkflowKey?: string;
|
|
624
|
-
/** Overrides the workspace's run-data settings; an unset field follows the workspace (BOFF-7514). */
|
|
625
|
-
dataSaving?: WorkflowDataSaving;
|
|
626
|
-
/** Overrides the workspace's retention; an unset field follows the workspace (BOFF-7514). */
|
|
627
|
-
retention?: WorkflowRetention;
|
|
628
|
-
/** "Do not store run data" and redacted fields (BOFF-9752). */
|
|
629
|
-
dataPrivacy?: WorkflowDataPrivacy;
|
|
630
|
-
}
|
|
631
|
-
interface WorkflowDefinition {
|
|
632
|
-
id: string;
|
|
633
|
-
workflowKey: string;
|
|
634
|
-
version: string;
|
|
635
|
-
name: string;
|
|
636
|
-
description?: string;
|
|
637
|
-
alias?: string;
|
|
638
|
-
status?: "draft" | "active" | "archived";
|
|
639
|
-
definitionJson?: WorkflowDefinitionJson;
|
|
640
|
-
createdAt?: string;
|
|
641
|
-
updatedAt?: string;
|
|
642
|
-
createdBy?: string;
|
|
643
|
-
/**
|
|
644
|
-
* Optimistic-concurrency counter (BOFF-9725): saves send it back so a change
|
|
645
|
-
* made elsewhere since the version was loaded is refused, not overwritten.
|
|
646
|
-
*/
|
|
647
|
-
revision?: number;
|
|
648
|
-
/** Who last changed this version, when known. */
|
|
649
|
-
updatedById?: string | null;
|
|
650
|
-
}
|
|
651
|
-
interface WorkflowDefinitionJson {
|
|
652
|
-
key: string;
|
|
653
|
-
name: string;
|
|
654
|
-
description?: string;
|
|
655
|
-
workflow_type?: string;
|
|
656
|
-
data: WorkflowData;
|
|
657
|
-
meta?: Record<string, unknown>;
|
|
658
|
-
tags?: string[];
|
|
659
|
-
/** Workflow-level execution config (BOFF-7512) — sibling of `data`, matching the backend's `IWorkflowDefinitionJson.config`. */
|
|
660
|
-
config?: IWorkflowConfig;
|
|
661
|
-
}
|
|
662
|
-
interface WorkflowData {
|
|
663
|
-
id: string;
|
|
664
|
-
workflowKey: string;
|
|
665
|
-
name: string;
|
|
666
|
-
version: string;
|
|
667
|
-
alias?: string;
|
|
668
|
-
nodes: FlowNode[];
|
|
669
|
-
edges: FlowEdge[];
|
|
670
|
-
sidebar: SidebarState;
|
|
671
|
-
}
|
|
672
|
-
interface SidebarState {
|
|
673
|
-
active: "node-properties" | "store-browse" | "none";
|
|
674
|
-
panels: {
|
|
675
|
-
nodeProperties: {
|
|
676
|
-
selectedNode: {
|
|
677
|
-
id: string;
|
|
678
|
-
type: string;
|
|
679
|
-
} | null;
|
|
680
|
-
};
|
|
681
|
-
};
|
|
682
|
-
}
|
|
683
|
-
interface Tag {
|
|
684
|
-
value: string;
|
|
685
|
-
label: string;
|
|
686
|
-
color: string;
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
type RunStatus = "pending" | "running" | "completed" | "failed" | "cancelled" | "timeout";
|
|
690
|
-
type NodeStatus = "idle" | "pending" | "running" | "success" | "error" | "skipped";
|
|
691
|
-
type ErrorType = "validation" | "execution" | "timeout" | "cancelled" | "unknown";
|
|
692
|
-
interface WorkflowRun {
|
|
693
|
-
id: string;
|
|
694
|
-
workflowKey: string;
|
|
695
|
-
workflowVersion: string;
|
|
696
|
-
workflowName?: string;
|
|
697
|
-
status: RunStatus;
|
|
698
|
-
startedAt: string;
|
|
699
|
-
completedAt?: string;
|
|
700
|
-
duration?: number;
|
|
701
|
-
triggeredBy?: string;
|
|
702
|
-
triggerType?: string;
|
|
703
|
-
error?: WorkflowError;
|
|
704
|
-
nodeStates?: NodeState[];
|
|
705
|
-
inputData?: Record<string, unknown>;
|
|
706
|
-
outputData?: Record<string, unknown>;
|
|
707
|
-
parentRunId?: string;
|
|
708
|
-
isSubWorkflowRun?: boolean;
|
|
709
|
-
subworkflowDepth?: number;
|
|
710
|
-
rootRunId?: string;
|
|
711
|
-
childRuns?: WorkflowRun[];
|
|
712
|
-
}
|
|
713
|
-
interface NodeState {
|
|
714
|
-
id: string;
|
|
715
|
-
nodeId: string;
|
|
716
|
-
nodeType: string;
|
|
717
|
-
nodeName?: string;
|
|
718
|
-
status: NodeStatus;
|
|
719
|
-
startedAt?: string;
|
|
720
|
-
completedAt?: string;
|
|
721
|
-
duration?: number;
|
|
722
|
-
inputData?: Record<string, unknown>;
|
|
723
|
-
outputData?: Record<string, unknown>;
|
|
724
|
-
error?: string;
|
|
725
|
-
itemCount?: number;
|
|
726
|
-
childRunId?: string;
|
|
727
|
-
}
|
|
728
|
-
interface WorkflowError {
|
|
729
|
-
type: ErrorType;
|
|
730
|
-
message: string;
|
|
731
|
-
nodeId?: string;
|
|
732
|
-
stack?: string;
|
|
733
|
-
}
|
|
734
|
-
/**
|
|
735
|
-
* The backend's immutable plan for one `executeStep` TEST run. Keeping it with
|
|
736
|
-
* the execution slice lets the node detail view explain which data was reused
|
|
737
|
-
* rather than inferring it after polling starts.
|
|
738
|
-
*/
|
|
739
|
-
interface StepExecutionPlan {
|
|
740
|
-
runId: string;
|
|
741
|
-
targetNodeId: string;
|
|
742
|
-
sourceRunId: string | null;
|
|
743
|
-
reusedNodeIds: string[];
|
|
744
|
-
pinnedNodeIds: string[];
|
|
745
|
-
executeNodeIds: string[];
|
|
746
|
-
initialNodeIds: string[];
|
|
747
|
-
blockers: string[];
|
|
748
|
-
}
|
|
749
|
-
/**
|
|
750
|
-
* Workflow identity captured with the run currently loaded in the builder.
|
|
751
|
-
* Continuation must never reuse logs from a different workflow version.
|
|
752
|
-
*/
|
|
753
|
-
interface ExecutionRunMetadata {
|
|
754
|
-
runId: string;
|
|
755
|
-
workflowKey: string;
|
|
756
|
-
version: string;
|
|
757
|
-
/** Source runs used for continuation must be TEST runs. */
|
|
758
|
-
sourceMode?: "TEST" | "PRODUCTION";
|
|
759
|
-
}
|
|
760
|
-
interface ExecutionLog {
|
|
761
|
-
id: string;
|
|
762
|
-
runId: string;
|
|
763
|
-
nodeId: string;
|
|
764
|
-
nodeType: string;
|
|
765
|
-
nodeName: string;
|
|
766
|
-
status: "pending" | "running" | "completed" | "failed";
|
|
767
|
-
inputArgs: Record<string, unknown> | null;
|
|
768
|
-
output: Record<string, unknown> | null;
|
|
769
|
-
error: string | null;
|
|
770
|
-
duration: number | null;
|
|
771
|
-
startTime: string;
|
|
772
|
-
endTime: string | null;
|
|
773
|
-
/**
|
|
774
|
-
* True when this node's output came from pinned data instead of a real
|
|
775
|
-
* call (BOFF-7511). Always false/undefined outside a TEST run.
|
|
776
|
-
*/
|
|
777
|
-
usedPinnedData?: boolean;
|
|
778
|
-
/**
|
|
779
|
-
* Set when this node's state was reused from an earlier run by
|
|
780
|
-
* `runFromNode` instead of being executed in this run (BOFF-7511).
|
|
781
|
-
*/
|
|
782
|
-
reusedFromRunId?: string | null;
|
|
783
|
-
}
|
|
784
|
-
interface ExecutionsFilter {
|
|
785
|
-
status?: RunStatus[];
|
|
786
|
-
workflowKey?: string;
|
|
787
|
-
dateRange?: {
|
|
788
|
-
start: string;
|
|
789
|
-
end: string;
|
|
790
|
-
};
|
|
791
|
-
triggeredBy?: string;
|
|
792
|
-
}
|
|
793
|
-
interface ExecutionsPagination {
|
|
794
|
-
page: number;
|
|
795
|
-
pageSize: number;
|
|
796
|
-
total: number;
|
|
797
|
-
}
|
|
798
|
-
declare const RUN_STATUS_CONFIG: Record<RunStatus, {
|
|
799
|
-
label: string;
|
|
800
|
-
color: string;
|
|
801
|
-
bgColor: string;
|
|
802
|
-
}>;
|
|
803
|
-
declare const NODE_STATUS_CONFIG: Record<NodeStatus, {
|
|
804
|
-
label: string;
|
|
805
|
-
color: string;
|
|
806
|
-
bgColor: string;
|
|
807
|
-
}>;
|
|
808
|
-
|
|
809
|
-
interface WorkflowBuilderCoreProps {
|
|
810
|
-
/** Initial workflow data to render */
|
|
811
|
-
workflow?: WorkflowData;
|
|
812
|
-
/** Readonly mode - disables editing */
|
|
813
|
-
readonly?: boolean;
|
|
814
|
-
/** Hide the header toolbar */
|
|
815
|
-
hideHeader?: boolean;
|
|
816
|
-
/** Hide the sidebar */
|
|
817
|
-
hideSidebar?: boolean;
|
|
818
|
-
/** Hide the logs panel */
|
|
819
|
-
hideLogsPanel?: boolean;
|
|
820
|
-
/**
|
|
821
|
-
* Called with the edited workflow when the user clicks Save. This component
|
|
822
|
-
* does not persist anything itself: storing the workflow is the host's
|
|
823
|
-
* job, so no `workflow:saved` host event is emitted for it.
|
|
824
|
-
*/
|
|
825
|
-
onSave?: (workflow: WorkflowData) => void;
|
|
826
|
-
/**
|
|
827
|
-
* Called when the user clicks Run, with a client-generated id
|
|
828
|
-
* (`run-<timestamp>`) the host may use to label the run it starts. No
|
|
829
|
-
* backend run exists yet, so no `run:started` host event is emitted.
|
|
830
|
-
*/
|
|
831
|
-
onExecute?: (runId: string) => void;
|
|
832
|
-
/** Callback when a node is clicked */
|
|
833
|
-
onNodeClick?: (node: FlowNode) => void;
|
|
834
|
-
/** Callback when back button is clicked */
|
|
835
|
-
onBack?: () => void;
|
|
836
|
-
/** Custom className */
|
|
837
|
-
className?: string;
|
|
838
|
-
}
|
|
839
|
-
/**
|
|
840
|
-
* Lightweight, local-only workflow canvas.
|
|
841
|
-
*
|
|
842
|
-
* Host events (`FluidGridsEventMap`): reports `node:selected` exactly like the
|
|
843
|
-
* full builder canvas. Save and Run only hand data to `onSave` / `onExecute`
|
|
844
|
-
* and call no backend, so it emits no `workflow:saved`, `run:started` or
|
|
845
|
-
* `error` events: the host performs those actions and already knows their
|
|
846
|
-
* outcome. Works without a host `ThemeProvider`.
|
|
847
|
-
*/
|
|
848
|
-
declare function WorkflowBuilderCore(props: WorkflowBuilderCoreProps): react_jsx_runtime.JSX.Element;
|
|
849
|
-
|
|
850
|
-
interface WorkflowBuilderProps extends Omit<WorkflowBuilderCoreProps, "workflow"> {
|
|
851
|
-
/** Workflow ID to load */
|
|
852
|
-
workflowId?: string;
|
|
853
|
-
/** Workflow version to load */
|
|
854
|
-
workflowVersion?: string;
|
|
855
|
-
/** Initial workflow data (bypasses API fetch) */
|
|
856
|
-
initialWorkflow?: WorkflowData;
|
|
857
|
-
/** Workspace API Gateway URL */
|
|
858
|
-
apiGatewayUrl?: string;
|
|
859
|
-
/** Global API Gateway URL (for store operations) */
|
|
860
|
-
globalApiUrl?: string;
|
|
861
|
-
/** Authentication token */
|
|
862
|
-
authToken?: string;
|
|
863
|
-
/** Current workspace ID */
|
|
864
|
-
workspaceId: string;
|
|
865
|
-
/** Product namespace, actor identity and workspace authentication. */
|
|
866
|
-
productId?: string;
|
|
867
|
-
userId?: string;
|
|
868
|
-
workspaceToken?: string;
|
|
869
|
-
/** Current tenant ID */
|
|
870
|
-
tenantId?: string;
|
|
871
|
-
/** Organization ID */
|
|
872
|
-
organizationId?: string;
|
|
873
|
-
/** Optional: Provide your own workspace Apollo client */
|
|
874
|
-
workspaceClient?: ApolloClient;
|
|
875
|
-
/** Optional: Provide your own global Apollo client */
|
|
876
|
-
globalClient?: ApolloClient;
|
|
877
|
-
/** Theme: `"light"`, `"dark"` or a token object. See `FluidGridsTheme`. */
|
|
878
|
-
theme?: FluidGridsProviderProps["theme"];
|
|
879
|
-
/** Authentication hooks (`onTokenExpired`). */
|
|
880
|
-
auth?: FluidGridsProviderProps["auth"];
|
|
881
|
-
/** Host event callback. See `FluidGridsEventMap`. */
|
|
882
|
-
onEvent?: FluidGridsProviderProps["onEvent"];
|
|
883
|
-
}
|
|
884
|
-
/**
|
|
885
|
-
* WorkflowBuilder - Standalone workflow builder component with Apollo client support
|
|
886
|
-
*
|
|
887
|
-
* Use this component when you want to embed the workflow builder in any React app.
|
|
888
|
-
* You can either:
|
|
889
|
-
* 1. Provide pre-configured Apollo clients (workspaceClient + globalClient) - Recommended
|
|
890
|
-
* 2. Provide URLs and let the component create clients internally
|
|
891
|
-
*
|
|
892
|
-
* It needs no host `ThemeProvider` (one is mounted only when the page has
|
|
893
|
-
* none). Host events: `onEvent` receives `node:selected`; Save and Run are
|
|
894
|
-
* local (they call `onSave` / `onExecute` and no backend), so they emit no
|
|
895
|
-
* `workflow:saved` / `run:started`. See `WorkflowBuilderCore`.
|
|
896
|
-
*
|
|
897
|
-
* @example Dual Client Injection (Recommended)
|
|
898
|
-
* ```tsx
|
|
899
|
-
* import { createFluidGridsClients } from '@fluidgrids/fe-sdk';
|
|
900
|
-
*
|
|
901
|
-
* const { workspaceClient, globalClient } = createFluidGridsClients({
|
|
902
|
-
* workspaceApiUrl: 'http://localhost:4000/workspaces/graphql',
|
|
903
|
-
* globalApiUrl: 'http://localhost:4000/global/graphql',
|
|
904
|
-
* authToken: token,
|
|
905
|
-
* workspaceId: 'ws-123',
|
|
906
|
-
* });
|
|
907
|
-
*
|
|
908
|
-
* <WorkflowBuilder
|
|
909
|
-
* workspaceClient={workspaceClient}
|
|
910
|
-
* globalClient={globalClient}
|
|
911
|
-
* workspaceId="ws-123"
|
|
912
|
-
* onSave={(workflow) => console.log(workflow)}
|
|
913
|
-
* />
|
|
914
|
-
* ```
|
|
915
|
-
*
|
|
916
|
-
* @example URL-based (Simpler, less flexible)
|
|
917
|
-
* ```tsx
|
|
918
|
-
* <WorkflowBuilder
|
|
919
|
-
* apiGatewayUrl="http://localhost:4000/workspaces/graphql"
|
|
920
|
-
* globalApiUrl="http://localhost:4000/global/graphql"
|
|
921
|
-
* authToken={token}
|
|
922
|
-
* workspaceId="ws-123"
|
|
923
|
-
* onSave={(workflow) => console.log(workflow)}
|
|
924
|
-
* />
|
|
925
|
-
* ```
|
|
926
|
-
*/
|
|
927
|
-
declare function WorkflowBuilder$1({ workflowId, workflowVersion, initialWorkflow, apiGatewayUrl, globalApiUrl, authToken, workspaceId, tenantId, productId, userId, workspaceToken, organizationId, workspaceClient, globalClient, theme, auth, onEvent, ...coreProps }: WorkflowBuilderProps): react_jsx_runtime.JSX.Element;
|
|
928
|
-
|
|
929
|
-
/**
|
|
930
|
-
* WorkflowBuilder page with ErrorBoundary for graceful crash recovery.
|
|
931
|
-
* If the builder throws (React Flow error, node rendering crash, etc.),
|
|
932
|
-
* the user sees a recovery UI instead of a blank screen.
|
|
933
|
-
*/
|
|
934
|
-
declare function WorkflowBuilder(): react_jsx_runtime.JSX.Element;
|
|
935
|
-
|
|
936
|
-
/**
|
|
937
|
-
* Global search indexes WorkflowDefinition by its database id, but the
|
|
938
|
-
* builder route (`workflow/:workflowKey/:version`) is keyed by workflowKey +
|
|
939
|
-
* version. This page bridges the two: it resolves the id to its current
|
|
940
|
-
* workflowKey/version and redirects there.
|
|
941
|
-
*/
|
|
942
|
-
declare function WorkflowSearchRedirect(): react_jsx_runtime.JSX.Element;
|
|
943
|
-
|
|
944
|
-
interface ExecutionState {
|
|
945
|
-
isExecuting: boolean;
|
|
946
|
-
executingNodeId: string | null;
|
|
947
|
-
currentRunId: string | null;
|
|
948
|
-
/** Identity of the run whose logs are currently loaded/reusable. */
|
|
949
|
-
sourceRun: ExecutionRunMetadata | null;
|
|
950
|
-
stepPlan: StepExecutionPlan | null;
|
|
951
|
-
logs: ExecutionLog[];
|
|
952
|
-
selectedLogId: string | null;
|
|
953
|
-
panelExpanded: boolean;
|
|
954
|
-
nodeStatuses: Record<string, "idle" | "running" | "success" | "error">;
|
|
955
|
-
nodeItemCounts: Record<string, number>;
|
|
956
|
-
/**
|
|
957
|
-
* A run the editor did not start itself (a webhook test event, BOFF-7513)
|
|
958
|
-
* waiting to be followed on the canvas. Consumed by `WebhookRunFollower`,
|
|
959
|
-
* which outlives the panel that requested it.
|
|
960
|
-
*/
|
|
961
|
-
followRequest: {
|
|
962
|
-
runId: string;
|
|
963
|
-
triggerNodeId: string;
|
|
964
|
-
} | null;
|
|
965
|
-
}
|
|
966
|
-
interface CustomEdgeProps extends Edge {
|
|
967
|
-
condition?: EdgeCondition;
|
|
968
|
-
mapping?: EdgeMapping;
|
|
969
|
-
}
|
|
970
|
-
/** A point-in-time snapshot of canvas structure for undo/redo. */
|
|
971
|
-
interface HistorySnapshot {
|
|
972
|
-
nodes: Node[];
|
|
973
|
-
edges: CustomEdgeProps[];
|
|
974
|
-
}
|
|
975
|
-
/** Undo/redo stacks for the currently open workflow. */
|
|
976
|
-
interface HistoryState {
|
|
977
|
-
past: HistorySnapshot[];
|
|
978
|
-
future: HistorySnapshot[];
|
|
979
|
-
}
|
|
980
|
-
interface State {
|
|
981
|
-
nodes: Node[];
|
|
982
|
-
edges: CustomEdgeProps[];
|
|
983
|
-
/** Node currently open in the n8n-style 3-pane Node Detail View modal. */
|
|
984
|
-
ndv?: {
|
|
985
|
-
nodeId: string;
|
|
986
|
-
type: ExtendedNodeType;
|
|
987
|
-
/** The tab to show first; the code-workflow node's Source tab, say. */
|
|
988
|
-
tab?: "source";
|
|
989
|
-
} | null;
|
|
990
|
-
/** Node currently in inline-rename edit mode (F2 or double-click on its
|
|
991
|
-
* title). Only one node can be renamed at a time. */
|
|
992
|
-
renamingNodeId?: string | null;
|
|
993
|
-
/**
|
|
994
|
-
* Node currently open in the single-click floating quick-config panel
|
|
995
|
-
* (Make-style, attached beside the node). The panel derives its own screen
|
|
996
|
-
* position from the node's live rect, so no anchor is stored here.
|
|
997
|
-
*/
|
|
998
|
-
quickConfig?: {
|
|
999
|
-
nodeId: string;
|
|
1000
|
-
type: ExtendedNodeType;
|
|
1001
|
-
} | null;
|
|
1002
|
-
/**
|
|
1003
|
-
* Source handle awaiting attachment via the Node Store (the n8n-style "+"
|
|
1004
|
-
* button on an output handle). While set, clicking an operation in the
|
|
1005
|
-
* store panel creates the node and wires it to this handle.
|
|
1006
|
-
*/
|
|
1007
|
-
pendingConnection?: {
|
|
1008
|
-
nodeId: string;
|
|
1009
|
-
handleId: string;
|
|
1010
|
-
} | null;
|
|
1011
|
-
sidebar: {
|
|
1012
|
-
active: "node-properties" | "store-browse" | "none";
|
|
1013
|
-
panels: {
|
|
1014
|
-
nodeProperties: {
|
|
1015
|
-
selectedNode: {
|
|
1016
|
-
id: string;
|
|
1017
|
-
type: ExtendedNodeType;
|
|
1018
|
-
} | null | undefined;
|
|
1019
|
-
};
|
|
1020
|
-
};
|
|
1021
|
-
};
|
|
1022
|
-
}
|
|
1023
|
-
interface Actions {
|
|
1024
|
-
actions: {
|
|
1025
|
-
saveWorkflow: () => {
|
|
1026
|
-
id: string;
|
|
1027
|
-
name: string;
|
|
1028
|
-
version: string;
|
|
1029
|
-
alias?: string;
|
|
1030
|
-
dbId?: string;
|
|
1031
|
-
status?: string;
|
|
1032
|
-
nodes: Node[];
|
|
1033
|
-
edges: Edge[];
|
|
1034
|
-
};
|
|
1035
|
-
setWorkflow: (workflow: Partial<IFlowState["workflow"]>) => void;
|
|
1036
|
-
resetWorkflow: () => void;
|
|
1037
|
-
history: {
|
|
1038
|
-
undo: () => void;
|
|
1039
|
-
redo: () => void;
|
|
1040
|
-
/** Wipe both stacks — called when a (different) workflow is loaded so
|
|
1041
|
-
* undo can never reach back into a previously open workflow. */
|
|
1042
|
-
clear: () => void;
|
|
1043
|
-
};
|
|
1044
|
-
nodes: {
|
|
1045
|
-
onNodesChange: (changes: NodeChange[]) => void;
|
|
1046
|
-
/** `historyKind` groups rapid same-kind writes (e.g. keystrokes in one
|
|
1047
|
-
* field) into a single undo step; `skipHistory` opts a caller out of
|
|
1048
|
-
* history entirely (e.g. transient UI-only patches). */
|
|
1049
|
-
setNodes: (nodes: Node[], opts?: {
|
|
1050
|
-
historyKind?: string;
|
|
1051
|
-
skipHistory?: boolean;
|
|
1052
|
-
}) => void;
|
|
1053
|
-
deleteNode: (node: Node) => void;
|
|
1054
|
-
/** Bulk delete (multi-select) — one undo step for the whole selection. */
|
|
1055
|
-
deleteNodes: (nodes: Node[]) => void;
|
|
1056
|
-
/** Clone the given nodes (+ edges strictly between them) with fresh ids,
|
|
1057
|
-
* offset on the canvas, and select only the clones. */
|
|
1058
|
-
duplicateNodes: (nodeIds: string[]) => void;
|
|
1059
|
-
/** Insert a clipboard payload (possibly from another workflow/tab):
|
|
1060
|
-
* fresh ids, offset, selects the pasted nodes. */
|
|
1061
|
-
pasteNodes: (payload: {
|
|
1062
|
-
nodes: Node[];
|
|
1063
|
-
edges: Edge[];
|
|
1064
|
-
}) => void;
|
|
1065
|
-
toggleDisabled: (nodeId: string) => boolean;
|
|
1066
|
-
renameNode: (nodeId: string, label: string) => void;
|
|
1067
|
-
startRename: (nodeId: string) => void;
|
|
1068
|
-
endRename: () => void;
|
|
1069
|
-
};
|
|
1070
|
-
edges: {
|
|
1071
|
-
onEdgesChange: (changes: EdgeChange[]) => void;
|
|
1072
|
-
onConnect: (connection: Connection) => void;
|
|
1073
|
-
setEdges: (edges: Edge[], opts?: {
|
|
1074
|
-
historyKind?: string;
|
|
1075
|
-
skipHistory?: boolean;
|
|
1076
|
-
}) => void;
|
|
1077
|
-
deleteEdge: (edge: Edge) => void;
|
|
1078
|
-
};
|
|
1079
|
-
ndv: {
|
|
1080
|
-
open: (node: {
|
|
1081
|
-
nodeId: string;
|
|
1082
|
-
type: ExtendedNodeType;
|
|
1083
|
-
tab?: "source";
|
|
1084
|
-
}) => void;
|
|
1085
|
-
close: () => void;
|
|
1086
|
-
};
|
|
1087
|
-
quickConfig: {
|
|
1088
|
-
open: (node: {
|
|
1089
|
-
nodeId: string;
|
|
1090
|
-
type: ExtendedNodeType;
|
|
1091
|
-
}) => void;
|
|
1092
|
-
close: () => void;
|
|
1093
|
-
};
|
|
1094
|
-
pendingConnection: {
|
|
1095
|
-
/** Arm attach mode for a source handle and open the Node Store panel. */
|
|
1096
|
-
start: (connection: {
|
|
1097
|
-
nodeId: string;
|
|
1098
|
-
handleId: string;
|
|
1099
|
-
}) => void;
|
|
1100
|
-
clear: () => void;
|
|
1101
|
-
};
|
|
1102
|
-
sidebar: {
|
|
1103
|
-
setActivePanel: (panel: "node-properties" | "store-browse" | "none") => void;
|
|
1104
|
-
showNodePropertiesOf: (node: {
|
|
1105
|
-
id: string;
|
|
1106
|
-
type: ExtendedNodeType;
|
|
1107
|
-
block?: string;
|
|
1108
|
-
}) => void;
|
|
1109
|
-
panels: {
|
|
1110
|
-
nodeProperties: {
|
|
1111
|
-
setSelectedNode: (node: {
|
|
1112
|
-
id: string;
|
|
1113
|
-
type: ExtendedNodeType;
|
|
1114
|
-
} | undefined | null) => void;
|
|
1115
|
-
};
|
|
1116
|
-
tags: {
|
|
1117
|
-
setTags: (tags: Tag[]) => void;
|
|
1118
|
-
createTag: (tag: Tag) => void;
|
|
1119
|
-
deleteTag: (tag: Tag) => void;
|
|
1120
|
-
updateTag: (tag: Tag, newTag: Tag) => void;
|
|
1121
|
-
};
|
|
1122
|
-
};
|
|
1123
|
-
};
|
|
1124
|
-
};
|
|
1125
|
-
}
|
|
1126
|
-
interface IFlowState {
|
|
1127
|
-
tags: Tag[];
|
|
1128
|
-
/** Undo/redo stacks — canvas structure (nodes/edges) AND parameter edits,
|
|
1129
|
-
* since both flow through the same `setNodes`/`setEdges` writes. */
|
|
1130
|
-
history: HistoryState;
|
|
1131
|
-
/**
|
|
1132
|
-
* Bumped by every user edit (each undo checkpoint, undo, redo, rename or
|
|
1133
|
-
* alias change). Autosave (BOFF-9724) reads it to tell an edit from the
|
|
1134
|
-
* canvas settling right after a load.
|
|
1135
|
-
*/
|
|
1136
|
-
editRevision: number;
|
|
1137
|
-
/**
|
|
1138
|
-
* Bumped by `resetWorkflow`, i.e. whenever another workflow (or version) is
|
|
1139
|
-
* about to load. A save or baseline taken under an older generation belongs
|
|
1140
|
-
* to a workflow that is no longer open.
|
|
1141
|
-
*/
|
|
1142
|
-
loadGeneration: number;
|
|
1143
|
-
workflow: {
|
|
1144
|
-
id: string;
|
|
1145
|
-
workflowKey: string;
|
|
1146
|
-
name: string;
|
|
1147
|
-
version: string;
|
|
1148
|
-
alias?: string;
|
|
1149
|
-
/** Database row ID (used for updateWorkflowDefinition) */
|
|
1150
|
-
dbId?: string;
|
|
1151
|
-
/** Current workflow status: DRAFT | ACTIVE | ARCHIVED | DEPRECATED */
|
|
1152
|
-
status?: string;
|
|
1153
|
-
/**
|
|
1154
|
-
* The build this version runs (`definitionJson.code.buildId`), when it
|
|
1155
|
-
* runs code. Such a version is immutable: saving keeps the edits as a new
|
|
1156
|
-
* version (spec code-first 06 §1).
|
|
1157
|
-
*/
|
|
1158
|
-
codeBuildId?: string;
|
|
1159
|
-
/**
|
|
1160
|
-
* Pinned/mock output data, keyed by nodeId (BOFF-7511). Mirrors
|
|
1161
|
-
* `WorkflowDefinition.pinnedNodeData` — hydrated on load, kept in sync by
|
|
1162
|
-
* the NDV's pin/unpin actions so the canvas never shows a stale pin
|
|
1163
|
-
* badge after a mutation round-trips.
|
|
1164
|
-
*/
|
|
1165
|
-
pinnedNodeData?: Record<string, {
|
|
1166
|
-
data: Record<string, unknown>;
|
|
1167
|
-
pinnedAt?: string;
|
|
1168
|
-
pinnedBy?: string;
|
|
1169
|
-
}>;
|
|
1170
|
-
} & State;
|
|
1171
|
-
execution: ExecutionState;
|
|
1172
|
-
actions: Actions["actions"] & {
|
|
1173
|
-
execution: {
|
|
1174
|
-
startExecution: (nodeId: string, runId: string, metadata?: Omit<ExecutionRunMetadata, "runId">) => void;
|
|
1175
|
-
setRunMetadata: (metadata: ExecutionRunMetadata) => void;
|
|
1176
|
-
setStepPlan: (plan: StepExecutionPlan) => void;
|
|
1177
|
-
addLog: (log: ExecutionLog) => void;
|
|
1178
|
-
updateLog: (logId: string, updates: Partial<ExecutionLog>) => void;
|
|
1179
|
-
setNodeStatus: (nodeId: string, status: "idle" | "running" | "success" | "error") => void;
|
|
1180
|
-
setNodeItemCount: (nodeId: string, count: number) => void;
|
|
1181
|
-
selectLog: (logId: string | null) => void;
|
|
1182
|
-
togglePanel: () => void;
|
|
1183
|
-
clearLogs: () => void;
|
|
1184
|
-
completeExecution: () => void;
|
|
1185
|
-
/**
|
|
1186
|
-
* Debug-in-editor (BOFF-7511): load a PAST run's node states onto the
|
|
1187
|
-
* canvas as if they'd just executed, without marking anything as
|
|
1188
|
-
* "running". Each node shows what it actually produced in `runId`, and
|
|
1189
|
-
* `currentRunId` becomes that run's id so "Run from this node" knows
|
|
1190
|
-
* which run to reuse upstream outputs from.
|
|
1191
|
-
*/
|
|
1192
|
-
loadDebugRun: (runId: string, logs: ExecutionLog[], metadata?: Omit<ExecutionRunMetadata, "runId">) => void;
|
|
1193
|
-
/** Ask the canvas to follow a run started outside the editor. */
|
|
1194
|
-
requestFollowRun: (runId: string, triggerNodeId: string) => void;
|
|
1195
|
-
clearFollowRequest: () => void;
|
|
1196
|
-
};
|
|
1197
|
-
};
|
|
1198
|
-
}
|
|
1199
|
-
declare const useFlowStore: zustand.UseBoundStore<zustand.StoreApi<IFlowState>>;
|
|
1200
|
-
|
|
1201
|
-
/**
|
|
1202
|
-
* Refetch all nodes by re-running initializeNodeConfigs.
|
|
1203
|
-
* Called after installing/uninstalling a store node.
|
|
1204
|
-
*
|
|
1205
|
-
* Resets the initialization guard and all derived arrays so
|
|
1206
|
-
* initializeNodeConfigs() runs a fresh fetch instead of returning early.
|
|
1207
|
-
*/
|
|
1208
|
-
declare function refetchStoreNodes(): Promise<void>;
|
|
1209
|
-
|
|
1210
|
-
export { type WorkflowError as $, type FluidGridsThemeRadius as A, type FluidGridsThemeTokenKey as B, type ConditionRule as C, type FluidGridsThemeTokenMapping as D, type EdgeCondition as E, FLUIDGRIDS_EVENTS_VERSION as F, type FluidGridsThemeTokens as G, type FluidGridsThemeValueKind as H, type IFlowState as I, type NodeEndpointConfig as J, type NodeManifest as K, type NodeState as L, type MappingValue as M, NODE_STATUS_CONFIG as N, type NodeStatus as O, type RunStatus as P, WorkflowBuilder as Q, RUN_STATUS_CONFIG as R, type SidebarState as S, type Tag as T, WorkflowBuilderCore as U, type WorkflowBuilderCoreProps as V, WorkflowBuilder$1 as W, type WorkflowBuilderProps as X, type WorkflowData as Y, type WorkflowDefinition as Z, type WorkflowDefinitionJson as _, type EdgeMapping as a, type WorkflowRun as a0, type WorkflowSavedResult as a1, WorkflowSearchRedirect as a2, applyFluidGridsTheme as a3, config as a4, getFluidGridsConfig as a5, getGraphQLEndpoint as a6, refetchStoreNodes as a7, resetFluidGridsConfig as a8, resetFluidGridsExecutionState as a9, setFluidGridsConfig as aa, themeToCssVariables as ab, useFlowStore as ac, useFluidGridsContext as ad, type ErrorType as b, type ExecutionLog as c, type ExecutionsFilter as d, type ExecutionsPagination as e, type ExtendedNodeType as f, FLUIDGRIDS_EVENT_NAMES as g, FLUIDGRIDS_THEME_TOKEN_MAP as h, type FlowEdge as i, type FlowNode as j, type FlowNodeData as k, type FluidGridsAuthConfig as l, type FluidGridsConfig as m, type FluidGridsErrorSource as n, type FluidGridsEventArgs as o, type FluidGridsEventHandler as p, type FluidGridsEventMap as q, type FluidGridsEventName as r, type FluidGridsEventPayload as s, FluidGridsProvider as t, type FluidGridsProviderProps as u, type FluidGridsRefreshedTokens as v, type FluidGridsTheme as w, type FluidGridsThemeColors as x, type FluidGridsThemeFont as y, type FluidGridsThemeMode as z };
|