@burdenoff/fluidgrids-fe-sdk 2026.1010.2 → 2026.1013.2
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 +37 -0
- package/dist/ExecutionDetailPage-3XZJRSMI.js +12 -0
- package/dist/ExecutionsListPage-WWVTV3NI.js +11 -0
- package/dist/{MissingNodesInstallModal-QAXLWW35.js → MissingNodesInstallModal-ODVBW4X4.js} +4 -6
- package/dist/{TemplateConfigurationModal-YO4S7Y2S.js → TemplateConfigurationModal-HUHXIL3K.js} +6 -8
- package/dist/{TemplateDetailPanel-KS3LQIBD.js → TemplateDetailPanel-RZDJEXGG.js} +3 -5
- package/dist/WorkflowBuilder-IMX3F4ZL.js +19 -0
- package/dist/WorkflowsList-V2ZYXPUA.js +14 -0
- package/dist/assistant.d.ts +87 -0
- package/dist/assistant.js +1 -0
- package/dist/{chunk-47RAP7HT.js → chunk-3FYOSTEG.js} +0 -2
- package/dist/{chunk-WNFZXH3Z.js → chunk-5WSBID2F.js} +4 -6
- package/dist/{chunk-KGD6CRSA.js → chunk-6N27YGMB.js} +0 -2
- package/dist/{chunk-NH5YCY37.js → chunk-7LSGGJ7D.js} +2 -4
- package/dist/chunk-AD3BXTJS.js +1 -0
- package/dist/{chunk-HFCQC4QQ.js → chunk-CADRCSD5.js} +9 -11
- package/dist/{chunk-LMO5ASOE.js → chunk-CFCUM4CN.js} +0 -2
- package/dist/chunk-D3UWK7GY.js +112 -0
- package/dist/{chunk-M2YFTRLL.js → chunk-DFITJZLD.js} +46 -13
- package/dist/{chunk-3P4YQ7DO.js → chunk-F2OUXT3V.js} +0 -2
- package/dist/{chunk-6LXMUIR3.js → chunk-FZBGMZRM.js} +0 -2
- package/dist/{chunk-DBOMRIP5.js → chunk-GDAFKRQO.js} +1 -3
- package/dist/{chunk-XQP33UJR.js → chunk-GEMNVFPK.js} +0 -2
- package/dist/{chunk-34KDHOQY.js → chunk-HPNEBTZB.js} +34 -6
- package/dist/{chunk-HK7IRZLW.js → chunk-HPUNEDCO.js} +40 -8
- package/dist/{chunk-P5PKRQAO.js → chunk-IEVSFCFS.js} +1 -3
- package/dist/{chunk-Z5HU6MUG.js → chunk-IPNGNROQ.js} +7 -9
- package/dist/{chunk-XBIHI224.js → chunk-IYTHK7B5.js} +4 -6
- package/dist/{chunk-3ZYUGTIT.js → chunk-JL7CASN5.js} +0 -2
- package/dist/{chunk-FAPYERDO.js → chunk-KZYQPCMK.js} +2 -4
- package/dist/{chunk-FA7S7YMY.js → chunk-NM5TH27W.js} +193 -107
- package/dist/{chunk-ZBMMEE5U.js → chunk-NTWG3CJX.js} +0 -2
- package/dist/chunk-PJAWNFJV.js +18 -0
- package/dist/{chunk-BQXHJIER.js → chunk-PXIFUMLA.js} +0 -2
- package/dist/{chunk-NK32XOQN.js → chunk-QBFAJNUC.js} +0 -2
- package/dist/{chunk-AANIWER2.js → chunk-SQFFJUAT.js} +1 -3
- package/dist/{chunk-W23ZXNKU.js → chunk-SYU74PMY.js} +1 -3
- package/dist/{chunk-UH3L52RJ.js → chunk-UHY5KIEA.js} +7 -9
- package/dist/{chunk-7YWBH2A5.js → chunk-UULVIT25.js} +0 -2
- package/dist/{chunk-DFGJKGWH.js → chunk-UZG3ZIQM.js} +0 -2
- package/dist/{chunk-6QCBKN3P.js → chunk-VTQVPNUQ.js} +1 -3
- package/dist/{chunk-T3ZCEAHR.js → chunk-WAHCVNA6.js} +4 -6
- package/dist/{chunk-DBGJT2D5.js → chunk-YPZJS5HJ.js} +27 -29
- package/dist/{chunk-2ORIFA6I.js → chunk-Z2KX5KUL.js} +3 -5
- package/dist/{chunk-CZ7APZ5B.js → chunk-ZB45VAXM.js} +4 -6
- package/dist/client-EYQDMR4O.js +1 -0
- package/dist/config-AOSNG5I7.js +1 -0
- package/dist/executions.js +15 -15
- package/dist/global-client-O2HCG5CJ.js +1 -0
- package/dist/{global-operations-IMNN4YME.js → global-operations-QNXHEKTE.js} +1 -3
- package/dist/history.js +9 -9
- package/dist/index.d.ts +4 -3
- package/dist/index.js +46 -46
- package/dist/nodes.js +4 -6
- package/dist/observability.js +6 -8
- package/dist/settings.js +8 -10
- package/dist/template-input-applicator-OBQUTYDA.js +1 -0
- package/dist/templates.js +20 -20
- package/dist/workflow-builder.js +20 -22
- package/dist/workflows-list.js +14 -14
- package/package.json +7 -2
- package/dist/ExecutionDetailPage-JB5UYJMF.js +0 -12
- package/dist/ExecutionDetailPage-JB5UYJMF.js.map +0 -1
- package/dist/ExecutionsListPage-RDGTW6UF.js +0 -11
- package/dist/ExecutionsListPage-RDGTW6UF.js.map +0 -1
- package/dist/MissingNodesInstallModal-QAXLWW35.js.map +0 -1
- package/dist/TemplateConfigurationModal-YO4S7Y2S.js.map +0 -1
- package/dist/TemplateDetailPanel-KS3LQIBD.js.map +0 -1
- package/dist/WorkflowBuilder-YF73DZWP.js +0 -21
- package/dist/WorkflowBuilder-YF73DZWP.js.map +0 -1
- package/dist/WorkflowsList-CE2CRD7W.js +0 -14
- package/dist/WorkflowsList-CE2CRD7W.js.map +0 -1
- package/dist/chunk-2ORIFA6I.js.map +0 -1
- package/dist/chunk-34KDHOQY.js.map +0 -1
- package/dist/chunk-3P4YQ7DO.js.map +0 -1
- package/dist/chunk-3ZYUGTIT.js.map +0 -1
- package/dist/chunk-47RAP7HT.js.map +0 -1
- package/dist/chunk-6LXMUIR3.js.map +0 -1
- package/dist/chunk-6QCBKN3P.js.map +0 -1
- package/dist/chunk-7YWBH2A5.js.map +0 -1
- package/dist/chunk-AANIWER2.js.map +0 -1
- package/dist/chunk-BQXHJIER.js.map +0 -1
- package/dist/chunk-CZ7APZ5B.js.map +0 -1
- package/dist/chunk-DBGJT2D5.js.map +0 -1
- package/dist/chunk-DBOMRIP5.js.map +0 -1
- package/dist/chunk-DFGJKGWH.js.map +0 -1
- package/dist/chunk-FA7S7YMY.js.map +0 -1
- package/dist/chunk-FAPYERDO.js.map +0 -1
- package/dist/chunk-HFCQC4QQ.js.map +0 -1
- package/dist/chunk-HK7IRZLW.js.map +0 -1
- package/dist/chunk-KGD6CRSA.js.map +0 -1
- package/dist/chunk-LMO5ASOE.js.map +0 -1
- package/dist/chunk-M2YFTRLL.js.map +0 -1
- package/dist/chunk-NH5YCY37.js.map +0 -1
- package/dist/chunk-NK32XOQN.js.map +0 -1
- package/dist/chunk-P5PKRQAO.js.map +0 -1
- package/dist/chunk-RXMBIJ5Z.js +0 -3
- package/dist/chunk-RXMBIJ5Z.js.map +0 -1
- package/dist/chunk-T3ZCEAHR.js.map +0 -1
- package/dist/chunk-UH3L52RJ.js.map +0 -1
- package/dist/chunk-W23ZXNKU.js.map +0 -1
- package/dist/chunk-WNFZXH3Z.js.map +0 -1
- package/dist/chunk-XBIHI224.js.map +0 -1
- package/dist/chunk-XQP33UJR.js.map +0 -1
- package/dist/chunk-Z5HU6MUG.js.map +0 -1
- package/dist/chunk-ZBMMEE5U.js.map +0 -1
- package/dist/client-YFAZ23OL.js +0 -3
- package/dist/client-YFAZ23OL.js.map +0 -1
- package/dist/config-SCVEDF5V.js +0 -3
- package/dist/config-SCVEDF5V.js.map +0 -1
- package/dist/executions.js.map +0 -1
- package/dist/global-client-OW43ZRDR.js +0 -3
- package/dist/global-client-OW43ZRDR.js.map +0 -1
- package/dist/global-operations-IMNN4YME.js.map +0 -1
- package/dist/history.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/nodes.js.map +0 -1
- package/dist/observability.js.map +0 -1
- package/dist/settings.js.map +0 -1
- package/dist/template-input-applicator-657KE4DM.js +0 -3
- package/dist/template-input-applicator-657KE4DM.js.map +0 -1
- package/dist/templates.js.map +0 -1
- package/dist/workflow-builder.js.map +0 -1
- package/dist/workflows-list.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/builder/stores/flow-store.ts"],"names":[],"mappings":"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","file":"chunk-47RAP7HT.js","sourcesContent":["import { nanoid } from \"nanoid/non-secure\";\nimport {\n addEdge,\n applyEdgeChanges,\n applyNodeChanges,\n type Connection,\n type Edge,\n type EdgeChange,\n type Node,\n type NodeChange,\n} from \"@xyflow/react\";\nimport { create } from \"zustand\";\nimport { produce } from \"immer\";\nimport type {\n ExtendedNodeType,\n EdgeCondition,\n EdgeMapping,\n} from \"../../types/node\";\nimport type { Tag } from \"../../types/workflow\";\nimport type {\n ExecutionLog,\n ExecutionRunMetadata,\n StepExecutionPlan,\n} from \"../../types/execution\";\n\n// Node execution state for visual display\nexport interface NodeExecutionState {\n status: \"idle\" | \"running\" | \"success\" | \"error\";\n itemCount?: number;\n error?: string;\n}\n\n// Execution state for step execution feature\ninterface ExecutionState {\n isExecuting: boolean;\n executingNodeId: string | null;\n currentRunId: string | null;\n /** Identity of the run whose logs are currently loaded/reusable. */\n sourceRun: ExecutionRunMetadata | null;\n stepPlan: StepExecutionPlan | null;\n logs: ExecutionLog[];\n selectedLogId: string | null;\n panelExpanded: boolean;\n nodeStatuses: Record<string, \"idle\" | \"running\" | \"success\" | \"error\">;\n nodeItemCounts: Record<string, number>;\n}\n\ninterface CustomEdgeProps extends Edge {\n condition?: EdgeCondition;\n mapping?: EdgeMapping;\n}\n\n/** A point-in-time snapshot of canvas structure for undo/redo. */\nexport interface HistorySnapshot {\n nodes: Node[];\n edges: CustomEdgeProps[];\n}\n\n/** Undo/redo stacks for the currently open workflow. */\nexport interface HistoryState {\n past: HistorySnapshot[];\n future: HistorySnapshot[];\n}\n\n/** Bounds how far back undo can go — generous for an editing session without\n * letting the stacks grow unbounded on a long-lived tab. */\nconst HISTORY_LIMIT = 100;\n\n/** Canvas offset applied to duplicated/pasted nodes so clones never land\n * exactly on top of their source (n8n/Figma-style paste offset). */\nconst CLONE_OFFSET = 48;\n\n/**\n * Deep-clone a value for history snapshots / node-and-edge duplication.\n * `structuredClone` is preferred (fast, handles Dates/Maps/etc.), with a\n * JSON round-trip fallback for the rare manifest blob that carries something\n * structuredClone can't handle (e.g. a stray function reference) — dropping\n * that field is safer than throwing and losing the whole undo/copy action.\n */\nfunction cloneValue<T>(value: T): T {\n try {\n return structuredClone(value);\n } catch {\n return JSON.parse(JSON.stringify(value)) as T;\n }\n}\n\ninterface State {\n nodes: Node[];\n edges: CustomEdgeProps[];\n /** Node currently open in the n8n-style 3-pane Node Detail View modal. */\n ndv?: { nodeId: string; type: ExtendedNodeType } | null;\n /** Node currently in inline-rename edit mode (F2 or double-click on its\n * title). Only one node can be renamed at a time. */\n renamingNodeId?: string | null;\n /**\n * Node currently open in the single-click floating quick-config panel\n * (Make-style, attached beside the node). The panel derives its own screen\n * position from the node's live rect, so no anchor is stored here.\n */\n quickConfig?: {\n nodeId: string;\n type: ExtendedNodeType;\n } | null;\n /**\n * Source handle awaiting attachment via the Node Store (the n8n-style \"+\"\n * button on an output handle). While set, clicking an operation in the\n * store panel creates the node and wires it to this handle.\n */\n pendingConnection?: { nodeId: string; handleId: string } | null;\n sidebar: {\n active: \"node-properties\" | \"store-browse\" | \"none\";\n panels: {\n nodeProperties: {\n selectedNode: { id: string; type: ExtendedNodeType } | null | undefined;\n };\n };\n };\n}\n\ninterface Actions {\n actions: {\n saveWorkflow: () => {\n id: string;\n name: string;\n version: string;\n alias?: string;\n dbId?: string;\n status?: string;\n nodes: Node[];\n edges: Edge[];\n };\n setWorkflow: (workflow: Partial<IFlowState[\"workflow\"]>) => void;\n resetWorkflow: () => void;\n history: {\n undo: () => void;\n redo: () => void;\n /** Wipe both stacks — called when a (different) workflow is loaded so\n * undo can never reach back into a previously open workflow. */\n clear: () => void;\n };\n nodes: {\n onNodesChange: (changes: NodeChange[]) => void;\n /** `historyKind` groups rapid same-kind writes (e.g. keystrokes in one\n * field) into a single undo step; `skipHistory` opts a caller out of\n * history entirely (e.g. transient UI-only patches). */\n setNodes: (\n nodes: Node[],\n opts?: { historyKind?: string; skipHistory?: boolean },\n ) => void;\n deleteNode: (node: Node) => void;\n /** Bulk delete (multi-select) — one undo step for the whole selection. */\n deleteNodes: (nodes: Node[]) => void;\n /** Clone the given nodes (+ edges strictly between them) with fresh ids,\n * offset on the canvas, and select only the clones. */\n duplicateNodes: (nodeIds: string[]) => void;\n /** Insert a clipboard payload (possibly from another workflow/tab):\n * fresh ids, offset, selects the pasted nodes. */\n pasteNodes: (payload: { nodes: Node[]; edges: Edge[] }) => void;\n toggleDisabled: (nodeId: string) => void;\n renameNode: (nodeId: string, label: string) => void;\n startRename: (nodeId: string) => void;\n endRename: () => void;\n };\n edges: {\n onEdgesChange: (changes: EdgeChange[]) => void;\n onConnect: (connection: Connection) => void;\n setEdges: (\n edges: Edge[],\n opts?: { historyKind?: string; skipHistory?: boolean },\n ) => void;\n deleteEdge: (edge: Edge) => void;\n };\n ndv: {\n open: (node: { nodeId: string; type: ExtendedNodeType }) => void;\n close: () => void;\n };\n quickConfig: {\n open: (node: { nodeId: string; type: ExtendedNodeType }) => void;\n close: () => void;\n };\n pendingConnection: {\n /** Arm attach mode for a source handle and open the Node Store panel. */\n start: (connection: { nodeId: string; handleId: string }) => void;\n clear: () => void;\n };\n sidebar: {\n setActivePanel: (\n panel: \"node-properties\" | \"store-browse\" | \"none\",\n ) => void;\n showNodePropertiesOf: (node: {\n id: string;\n type: ExtendedNodeType;\n block?: string;\n }) => void;\n panels: {\n nodeProperties: {\n setSelectedNode: (\n node: { id: string; type: ExtendedNodeType } | undefined | null,\n ) => void;\n };\n tags: {\n setTags: (tags: Tag[]) => void;\n createTag: (tag: Tag) => void;\n deleteTag: (tag: Tag) => void;\n updateTag: (tag: Tag, newTag: Tag) => void;\n };\n };\n };\n };\n}\n\nexport interface IFlowState {\n tags: Tag[];\n /** Undo/redo stacks — canvas structure (nodes/edges) AND parameter edits,\n * since both flow through the same `setNodes`/`setEdges` writes. */\n history: HistoryState;\n workflow: {\n id: string;\n workflowKey: string;\n name: string;\n version: string;\n alias?: string;\n /** Database row ID (used for updateWorkflowDefinition) */\n dbId?: string;\n /** Current workflow status: DRAFT | ACTIVE | ARCHIVED | DEPRECATED */\n status?: string;\n /**\n * Pinned/mock output data, keyed by nodeId (BOFF-7511). Mirrors\n * `WorkflowDefinition.pinnedNodeData` — hydrated on load, kept in sync by\n * the NDV's pin/unpin actions so the canvas never shows a stale pin\n * badge after a mutation round-trips.\n */\n pinnedNodeData?: Record<\n string,\n { data: Record<string, unknown>; pinnedAt?: string; pinnedBy?: string }\n >;\n } & State;\n execution: ExecutionState;\n actions: Actions[\"actions\"] & {\n execution: {\n startExecution: (\n nodeId: string,\n runId: string,\n metadata?: Omit<ExecutionRunMetadata, \"runId\">,\n ) => void;\n setRunMetadata: (metadata: ExecutionRunMetadata) => void;\n setStepPlan: (plan: StepExecutionPlan) => void;\n addLog: (log: ExecutionLog) => void;\n updateLog: (logId: string, updates: Partial<ExecutionLog>) => void;\n setNodeStatus: (\n nodeId: string,\n status: \"idle\" | \"running\" | \"success\" | \"error\",\n ) => void;\n setNodeItemCount: (nodeId: string, count: number) => void;\n selectLog: (logId: string | null) => void;\n togglePanel: () => void;\n clearLogs: () => void;\n completeExecution: () => void;\n /**\n * Debug-in-editor (BOFF-7511): load a PAST run's node states onto the\n * canvas as if they'd just executed, without marking anything as\n * \"running\". Each node shows what it actually produced in `runId`, and\n * `currentRunId` becomes that run's id so \"Run from this node\" knows\n * which run to reuse upstream outputs from.\n */\n loadDebugRun: (\n runId: string,\n logs: ExecutionLog[],\n metadata?: Omit<ExecutionRunMetadata, \"runId\">,\n ) => void;\n };\n };\n}\n\nconst TAGS: Tag[] = [\n { value: \"marketing\", label: \"Marketing\", color: \"#ef4444\" },\n { value: \"support\", label: \"Support\", color: \"#ef4444\" },\n { value: \"lead\", label: \"Lead\", color: \"#eab308\" },\n { value: \"new\", label: \"New\", color: \"#22c55e\" },\n];\n\n/**\n * Pristine execution state. The `execution` slice is global (one run at a\n * time), so it MUST be reset whenever a different workflow is loaded —\n * otherwise the previous workflow's run logs leak into the next workflow's\n * Logs panel. Shared by the store initializer and `resetWorkflow`.\n */\nconst INITIAL_EXECUTION: ExecutionState = {\n isExecuting: false,\n executingNodeId: null,\n currentRunId: null,\n sourceRun: null,\n stepPlan: null,\n logs: [],\n selectedLogId: null,\n panelExpanded: false,\n nodeStatuses: {},\n nodeItemCounts: {},\n};\n\nconst INITIAL_HISTORY: HistoryState = { past: [], future: [] };\n\nexport const useFlowStore = create<IFlowState>()((set, get) => {\n // Coalescing bookkeeping for history checkpoints. Plain closure vars (not\n // store state) — they're write-tracking metadata, not something a\n // component should ever render off of.\n let lastCheckpointKind: string | null = null;\n let lastCheckpointAt = 0;\n\n /**\n * Record an undo point BEFORE a mutation is applied.\n *\n * `coalesce: true` merges this call into the immediately preceding one when\n * they share the same `kind` and land within the coalescing window — used\n * for bursty writes (keystrokes in one field, a drag in progress) so undo\n * has one step per logical edit, not one per change event. Structural\n * actions (delete, connect, duplicate, disable, rename, …) always pass\n * `coalesce: false` so each is its own undo step even if done quickly in\n * succession.\n */\n function pushCheckpoint(kind: string, coalesce: boolean) {\n const now = Date.now();\n const isCoalesced =\n coalesce && kind === lastCheckpointKind && now - lastCheckpointAt < 800;\n\n if (!isCoalesced) {\n const state = get();\n const snapshot: HistorySnapshot = {\n nodes: cloneValue(state.workflow.nodes),\n edges: cloneValue(state.workflow.edges),\n };\n set((s) => ({\n history: {\n past: [...s.history.past, snapshot].slice(-HISTORY_LIMIT),\n future: [],\n },\n }));\n } else if (get().history.future.length > 0) {\n // Still invalidate redo on a coalesced edit — the user has diverged\n // from whatever redo state existed.\n set((s) => ({ history: { ...s.history, future: [] } }));\n }\n\n lastCheckpointKind = kind;\n lastCheckpointAt = now;\n }\n\n /**\n * Deleting a node makes React Flow report TWO removals back to back: the\n * node through `onNodesChange`, then every connection attached to it through\n * `onEdgesChange`. They are one user action, so the second must not push its\n * own checkpoint — otherwise one delete costs two Undo presses, and the first\n * press only brings back the connection, which cannot draw without its node\n * and so looks like Undo did nothing.\n */\n const REMOVAL_KINDS = new Set([\"nodes:remove\", \"edges:remove\"]);\n const SAME_ACTION_WINDOW_MS = 150;\n function joinsPrecedingRemoval(kind: string): boolean {\n return (\n lastCheckpointKind !== null &&\n lastCheckpointKind !== kind &&\n REMOVAL_KINDS.has(kind) &&\n REMOVAL_KINDS.has(lastCheckpointKind) &&\n Date.now() - lastCheckpointAt < SAME_ACTION_WINDOW_MS\n );\n }\n\n /** Reset coalescing so the next edit always starts a fresh checkpoint. */\n function resetCoalescing() {\n lastCheckpointKind = null;\n lastCheckpointAt = 0;\n }\n\n return {\n tags: TAGS,\n history: { ...INITIAL_HISTORY },\n workflow: {\n id: nanoid(),\n workflowKey: \"\",\n name: \"\",\n version: \"\",\n alias: \"\",\n edges: [],\n nodes: [],\n ndv: null,\n quickConfig: null,\n pendingConnection: null,\n renamingNodeId: null,\n sidebar: {\n active: \"none\",\n panels: {\n nodeProperties: {\n selectedNode: null,\n },\n },\n },\n },\n execution: { ...INITIAL_EXECUTION },\n actions: {\n saveWorkflow: () => {\n const { workflow } = get();\n const { id, name, version, alias, dbId, status, nodes, edges } =\n workflow;\n set({ workflow });\n return { id, name, version, alias, dbId, status, nodes, edges };\n },\n setWorkflow: (workflow: Partial<IFlowState[\"workflow\"]>) => {\n set((state) => ({\n workflow: {\n ...state.workflow,\n ...workflow,\n },\n }));\n },\n resetWorkflow: () => {\n resetCoalescing();\n set(() => ({\n workflow: {\n id: nanoid(),\n workflowKey: \"\",\n name: \"\",\n version: \"\",\n alias: \"\",\n dbId: undefined,\n status: undefined,\n edges: [],\n nodes: [],\n ndv: null,\n quickConfig: null,\n pendingConnection: null,\n renamingNodeId: null,\n sidebar: {\n active: \"none\",\n panels: {\n nodeProperties: {\n selectedNode: null,\n },\n },\n },\n },\n // Wipe run state too — resetWorkflow fires when the builder loads a\n // (different) workflow, so the previous workflow's logs must not carry\n // over into this one's Logs panel.\n execution: { ...INITIAL_EXECUTION },\n // A freshly loaded workflow must not be undo-able back to empty —\n // undo/redo only ever applies within the currently open workflow.\n history: { ...INITIAL_HISTORY },\n }));\n },\n history: {\n undo: () => {\n const { past, future } = get().history;\n const previous = past[past.length - 1];\n if (!previous) return;\n const { nodes, edges } = get().workflow;\n const current: HistorySnapshot = {\n nodes: cloneValue(nodes),\n edges: cloneValue(edges),\n };\n resetCoalescing();\n set((s) => ({\n workflow: {\n ...s.workflow,\n nodes: previous.nodes,\n edges: previous.edges,\n },\n history: {\n past: past.slice(0, -1),\n future: [current, ...future].slice(0, HISTORY_LIMIT),\n },\n }));\n },\n redo: () => {\n const { past, future } = get().history;\n const next = future[0];\n if (!next) return;\n const { nodes, edges } = get().workflow;\n const current: HistorySnapshot = {\n nodes: cloneValue(nodes),\n edges: cloneValue(edges),\n };\n resetCoalescing();\n set((s) => ({\n workflow: {\n ...s.workflow,\n nodes: next.nodes,\n edges: next.edges,\n },\n history: {\n past: [...past, current].slice(-HISTORY_LIMIT),\n future: future.slice(1),\n },\n }));\n },\n clear: () => {\n resetCoalescing();\n set({ history: { ...INITIAL_HISTORY } });\n },\n },\n ndv: {\n // Opening the full NDV supersedes the floating quick-config panel — the\n // two edit the same node data, so only one should be visible at a time.\n open: (node: { nodeId: string; type: ExtendedNodeType }) =>\n set((state) => ({\n workflow: { ...state.workflow, ndv: node, quickConfig: null },\n })),\n close: () =>\n set((state) => ({\n workflow: { ...state.workflow, ndv: null },\n })),\n },\n quickConfig: {\n open: (node: { nodeId: string; type: ExtendedNodeType }) =>\n set((state) => ({\n workflow: { ...state.workflow, quickConfig: node },\n })),\n close: () =>\n set((state) => ({\n workflow: { ...state.workflow, quickConfig: null },\n })),\n },\n pendingConnection: {\n start: (connection: { nodeId: string; handleId: string }) =>\n set((state) => ({\n workflow: {\n ...state.workflow,\n pendingConnection: connection,\n sidebar: { ...state.workflow.sidebar, active: \"store-browse\" },\n },\n })),\n clear: () =>\n set((state) => ({\n workflow: { ...state.workflow, pendingConnection: null },\n })),\n },\n sidebar: {\n // Leaving the store panel abandons any armed \"+\" attach mode — the\n // pending handle would otherwise silently capture a later insert.\n setActivePanel: (panel: \"node-properties\" | \"store-browse\" | \"none\") =>\n set((state) => ({\n workflow: {\n ...state.workflow,\n sidebar: { ...state.workflow.sidebar, active: panel },\n ...(panel !== \"store-browse\" ? { pendingConnection: null } : {}),\n },\n })),\n showNodePropertiesOf: (node: {\n id: string;\n type: ExtendedNodeType;\n }) => {\n set((state) => ({\n workflow: {\n ...state.workflow,\n pendingConnection: null,\n sidebar: {\n ...state.workflow.sidebar,\n active: \"node-properties\",\n panels: {\n ...state.workflow.sidebar.panels,\n nodeProperties: {\n ...state.workflow.sidebar.panels.nodeProperties,\n selectedNode: node,\n },\n },\n },\n },\n }));\n },\n panels: {\n nodeProperties: {\n setSelectedNode: (\n node: { id: string; type: ExtendedNodeType } | undefined | null,\n ) =>\n set((state) => ({\n workflow: {\n ...state.workflow,\n sidebar: {\n ...state.workflow.sidebar,\n panels: {\n ...state.workflow.sidebar.panels,\n nodeProperties: {\n ...state.workflow.sidebar.panels.nodeProperties,\n selectedNode: node,\n },\n },\n },\n },\n })),\n },\n tags: {\n setTags: (tags: Tag[]) => set({ tags }),\n createTag: (tag: Tag) =>\n set((state) => ({\n tags: [...state.tags, tag],\n })),\n updateTag: (tag: Tag, newTag: Tag) =>\n set((state) => ({\n tags: state.tags.map((f) =>\n f.value === tag.value ? newTag : f,\n ),\n })),\n deleteTag: (tag: Tag) =>\n set((state) => ({\n tags: state.tags.filter((f) => f.value !== tag.value),\n })),\n },\n },\n },\n nodes: {\n onNodesChange: (changes) => {\n const removedIds = new Set(\n changes\n .filter(\n (c): c is Extract<NodeChange, { type: \"remove\" }> =>\n c.type === \"remove\",\n )\n .map((c) => c.id),\n );\n const addedCount = changes.filter((c) => c.type === \"add\").length;\n\n if (removedIds.size > 0) {\n const stillPresent = get().workflow.nodes.some((n) =>\n removedIds.has(n.id),\n );\n if (stillPresent && !joinsPrecedingRemoval(\"nodes:remove\")) {\n pushCheckpoint(\"nodes:remove\", false);\n }\n } else if (addedCount > 0) {\n // A node landed on the canvas via React Flow's own imperative\n // `addNodes()` (drag-from-palette drop, Node Store click-insert,\n // sticky note insert — see useInsertNode / useInsertStickyNote)\n // rather than through our `setNodes` action, so it would\n // otherwise never reach the history stack and Undo would stay\n // disabled after adding a node.\n pushCheckpoint(\"nodes:add\", false);\n } else {\n const finishedDragIds = changes.filter(\n (c): c is Extract<NodeChange, { type: \"position\" }> =>\n c.type === \"position\" && c.dragging === false,\n );\n const actuallyMoved = finishedDragIds.some((c) => {\n const current = get().workflow.nodes.find((n) => n.id === c.id);\n return (\n current &&\n c.position &&\n (current.position.x !== c.position.x ||\n current.position.y !== c.position.y)\n );\n });\n if (actuallyMoved) pushCheckpoint(\"nodes:move\", false);\n }\n\n set((state) =>\n produce(state, (draft) => {\n const updatedNodes = applyNodeChanges(\n changes,\n draft.workflow.nodes,\n );\n draft.workflow.nodes = updatedNodes;\n }),\n );\n },\n setNodes: (nodes, opts) => {\n if (!opts?.skipHistory) {\n pushCheckpoint(\n opts?.historyKind ?? \"nodes:set\",\n !!opts?.historyKind,\n );\n }\n set({ workflow: { ...get().workflow, nodes } });\n },\n deleteNode: (node: Node) => {\n const exists = get().workflow.nodes.some((n) => n.id === node.id);\n if (exists) pushCheckpoint(\"nodes:delete\", false);\n set((state) => ({\n workflow: {\n ...state.workflow,\n nodes: state.workflow.nodes.filter((n) => n.id !== node.id),\n // Drop any UI state pointing at the removed node.\n ...(state.workflow.quickConfig?.nodeId === node.id\n ? { quickConfig: null }\n : {}),\n ...(state.workflow.pendingConnection?.nodeId === node.id\n ? { pendingConnection: null }\n : {}),\n },\n }));\n },\n deleteNodes: (nodes: Node[]) => {\n const ids = new Set(nodes.map((n) => n.id));\n if (ids.size === 0) return;\n const anyExist = get().workflow.nodes.some((n) => ids.has(n.id));\n if (anyExist) pushCheckpoint(\"nodes:delete\", false);\n set((state) => ({\n workflow: {\n ...state.workflow,\n nodes: state.workflow.nodes.filter((n) => !ids.has(n.id)),\n edges: state.workflow.edges.filter(\n (e) => !ids.has(e.source) && !ids.has(e.target),\n ),\n ...(state.workflow.quickConfig &&\n ids.has(state.workflow.quickConfig.nodeId)\n ? { quickConfig: null }\n : {}),\n ...(state.workflow.pendingConnection &&\n ids.has(state.workflow.pendingConnection.nodeId)\n ? { pendingConnection: null }\n : {}),\n },\n }));\n },\n duplicateNodes: (nodeIds: string[]) => {\n const { nodes, edges } = get().workflow;\n const idSet = new Set(nodeIds);\n const selected = nodes.filter((n) => idSet.has(n.id));\n if (selected.length === 0) return;\n pushCheckpoint(\"nodes:duplicate\", false);\n\n const idMap = new Map<string, string>();\n const clones = selected.map((n) => {\n const newId = nanoid();\n idMap.set(n.id, newId);\n const cloned = cloneValue(n);\n return {\n ...cloned,\n id: newId,\n position: {\n x: cloned.position.x + CLONE_OFFSET,\n y: cloned.position.y + CLONE_OFFSET,\n },\n selected: true,\n };\n });\n // Only edges strictly BETWEEN two duplicated nodes come along —\n // an edge to a non-duplicated neighbor would otherwise silently\n // rewire the original graph.\n const clonedEdges = edges\n .filter((e) => idMap.has(e.source) && idMap.has(e.target))\n .map((e) => {\n const cloned = cloneValue(e);\n return {\n ...cloned,\n id: nanoid(),\n source: idMap.get(e.source) as string,\n target: idMap.get(e.target) as string,\n selected: false,\n };\n });\n\n set((state) => ({\n workflow: {\n ...state.workflow,\n nodes: [\n ...state.workflow.nodes.map((n) =>\n idSet.has(n.id) ? { ...n, selected: false } : n,\n ),\n ...clones,\n ],\n edges: [...state.workflow.edges, ...clonedEdges],\n },\n }));\n },\n pasteNodes: (payload: { nodes: Node[]; edges: Edge[] }) => {\n const pasteNodesIn = payload.nodes ?? [];\n if (pasteNodesIn.length === 0) return;\n pushCheckpoint(\"nodes:paste\", false);\n\n const idMap = new Map<string, string>();\n const clones = pasteNodesIn.map((n) => {\n const newId = nanoid();\n idMap.set(n.id, newId);\n const cloned = cloneValue(n);\n return {\n ...cloned,\n id: newId,\n position: {\n x: (cloned.position?.x ?? 0) + CLONE_OFFSET,\n y: (cloned.position?.y ?? 0) + CLONE_OFFSET,\n },\n selected: true,\n };\n });\n const clonedEdges = (payload.edges ?? [])\n .filter((e) => idMap.has(e.source) && idMap.has(e.target))\n .map((e) => {\n const cloned = cloneValue(e);\n return {\n ...cloned,\n id: nanoid(),\n source: idMap.get(e.source) as string,\n target: idMap.get(e.target) as string,\n selected: false,\n };\n });\n\n set((state) => ({\n workflow: {\n ...state.workflow,\n nodes: [\n ...state.workflow.nodes.map((n) => ({ ...n, selected: false })),\n ...clones,\n ],\n edges: [...state.workflow.edges, ...clonedEdges],\n },\n }));\n },\n toggleDisabled: (nodeId: string) => {\n pushCheckpoint(\"nodes:disable\", false);\n set((state) => ({\n workflow: {\n ...state.workflow,\n nodes: state.workflow.nodes.map((n) => {\n if (n.id !== nodeId) return n;\n const data = (n.data ?? {}) as Record<string, unknown>;\n return {\n ...n,\n data: { ...data, disabled: !(data.disabled === true) },\n };\n }),\n },\n }));\n },\n renameNode: (nodeId: string, label: string) => {\n pushCheckpoint(\"nodes:rename\", false);\n set((state) => ({\n workflow: {\n ...state.workflow,\n nodes: state.workflow.nodes.map((n) =>\n n.id === nodeId\n ? { ...n, data: { ...(n.data ?? {}), label } }\n : n,\n ),\n renamingNodeId: null,\n },\n }));\n },\n startRename: (nodeId: string) => {\n set((state) => ({\n workflow: { ...state.workflow, renamingNodeId: nodeId },\n }));\n },\n endRename: () => {\n set((state) => ({\n workflow: { ...state.workflow, renamingNodeId: null },\n }));\n },\n },\n edges: {\n onEdgesChange: (changes) => {\n const removedIds = new Set(\n changes\n .filter(\n (c): c is Extract<EdgeChange, { type: \"remove\" }> =>\n c.type === \"remove\",\n )\n .map((c) => c.id),\n );\n if (removedIds.size > 0) {\n const stillPresent = get().workflow.edges.some((e) =>\n removedIds.has(e.id),\n );\n if (stillPresent && !joinsPrecedingRemoval(\"edges:remove\")) {\n pushCheckpoint(\"edges:remove\", false);\n }\n } else if (changes.some((c) => c.type === \"add\")) {\n // Same gap as onNodesChange's \"add\" case: an edge created via\n // React Flow's imperative `addEdges()` (e.g. drag a connection\n // off a handle onto empty canvas, then pick a node from the\n // floating menu — useAddNodeOnEdgeDrop) must still be undoable.\n pushCheckpoint(\"edges:add\", false);\n }\n\n set((state) =>\n produce(state, (draft) => {\n const updatedEdges = applyEdgeChanges(\n changes,\n draft.workflow.edges,\n );\n draft.workflow.edges = updatedEdges;\n }),\n );\n },\n onConnect: (connection) => {\n pushCheckpoint(\"edges:connect\", false);\n const edge = {\n ...connection,\n id: nanoid(),\n type: \"deletable\",\n } as Edge;\n set({\n workflow: {\n ...get().workflow,\n edges: addEdge(edge, get().workflow.edges),\n },\n });\n },\n setEdges: (edges, opts) => {\n if (!opts?.skipHistory) {\n pushCheckpoint(\n opts?.historyKind ?? \"edges:set\",\n !!opts?.historyKind,\n );\n }\n set({ workflow: { ...get().workflow, edges } });\n },\n deleteEdge: (edge: Edge) => {\n const exists = get().workflow.edges.some((e) => e.id === edge.id);\n if (exists) pushCheckpoint(\"edges:delete\", false);\n set((state) => ({\n workflow: {\n ...state.workflow,\n edges: state.workflow.edges.filter((e) => e.id !== edge.id),\n },\n }));\n },\n },\n execution: {\n startExecution: (\n nodeId: string,\n runId: string,\n metadata?: Omit<ExecutionRunMetadata, \"runId\">,\n ) => {\n set((state) => ({\n execution: {\n ...state.execution,\n isExecuting: true,\n executingNodeId: nodeId,\n currentRunId: runId,\n sourceRun: metadata\n ? { runId, ...metadata }\n : { runId, workflowKey: \"\", version: \"\" },\n panelExpanded: true,\n nodeStatuses: {\n ...state.execution.nodeStatuses,\n [nodeId]: \"running\",\n },\n },\n }));\n },\n setRunMetadata: (metadata: ExecutionRunMetadata) => {\n set((state) => {\n if (\n state.execution.currentRunId !== metadata.runId &&\n state.execution.sourceRun?.runId !== metadata.runId\n ) {\n return state;\n }\n return {\n execution: {\n ...state.execution,\n currentRunId: metadata.runId,\n sourceRun: metadata,\n },\n };\n });\n },\n setStepPlan: (plan: StepExecutionPlan) => {\n set((state) => ({\n execution: {\n ...state.execution,\n stepPlan: plan,\n },\n }));\n },\n addLog: (log: ExecutionLog) => {\n set((state) => ({\n execution: {\n ...state.execution,\n logs: [...state.execution.logs, log],\n selectedLogId: log.id,\n },\n }));\n },\n updateLog: (logId: string, updates: Partial<ExecutionLog>) => {\n set((state) => ({\n execution: {\n ...state.execution,\n logs: state.execution.logs.map((log) =>\n log.id === logId ? { ...log, ...updates } : log,\n ),\n },\n }));\n },\n setNodeStatus: (\n nodeId: string,\n status: \"idle\" | \"running\" | \"success\" | \"error\",\n ) => {\n set((state) => ({\n execution: {\n ...state.execution,\n nodeStatuses: {\n ...state.execution.nodeStatuses,\n [nodeId]: status,\n },\n },\n }));\n },\n setNodeItemCount: (nodeId: string, count: number) => {\n set((state) => ({\n execution: {\n ...state.execution,\n nodeItemCounts: {\n ...state.execution.nodeItemCounts,\n [nodeId]: count,\n },\n },\n }));\n },\n selectLog: (logId: string | null) => {\n set((state) => ({\n execution: {\n ...state.execution,\n selectedLogId: logId,\n },\n }));\n },\n togglePanel: () => {\n set((state) => ({\n execution: {\n ...state.execution,\n panelExpanded: !state.execution.panelExpanded,\n },\n }));\n },\n clearLogs: () => {\n set((state) => ({\n execution: {\n ...state.execution,\n logs: [],\n stepPlan: null,\n currentRunId: null,\n sourceRun: null,\n selectedLogId: null,\n nodeStatuses: {},\n nodeItemCounts: {},\n },\n }));\n },\n completeExecution: () => {\n set((state) => ({\n execution: {\n ...state.execution,\n isExecuting: false,\n executingNodeId: null,\n },\n }));\n },\n loadDebugRun: (\n runId: string,\n logs: ExecutionLog[],\n metadata?: Omit<ExecutionRunMetadata, \"runId\">,\n ) => {\n const nodeStatuses: Record<\n string,\n \"idle\" | \"running\" | \"success\" | \"error\"\n > = {};\n for (const log of logs) {\n nodeStatuses[log.nodeId] =\n log.status === \"completed\"\n ? \"success\"\n : log.status === \"failed\"\n ? \"error\"\n : log.status === \"running\"\n ? \"running\"\n : \"idle\";\n }\n set(() => ({\n execution: {\n ...INITIAL_EXECUTION,\n currentRunId: runId,\n sourceRun: metadata\n ? { runId, ...metadata }\n : { runId, workflowKey: \"\", version: \"\" },\n logs,\n nodeStatuses,\n panelExpanded: true,\n },\n }));\n },\n },\n },\n };\n});\n\n// Dev-only debug handle so the store can be inspected/driven from the browser\n// console or automated tests. No-op in production builds.\nif (typeof window !== \"undefined\" && import.meta.env?.DEV) {\n (window as unknown as Record<string, unknown>).__fgFlowStore = useFlowStore;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generated/global-operations.ts"],"names":[],"mappings":"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","file":"chunk-6LXMUIR3.js","sourcesContent":["// @ts-nocheck\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nimport * as ApolloReactHooks from '@apollo/client/react';\nconst defaultOptions = {} as const;\nexport type CreateStoreOrderMutationVariables = Exact<{\n input: CreateStoreOrderInput;\n}>;\n\n\nexport type CreateStoreOrderMutation = { __typename?: 'Mutation', createStoreOrder: { __typename?: 'StoreOrder', id: string, status: OrderStatus, total: number, lineItems: Record<string, unknown>, createdAt: string } };\n\nexport type InstallWorkflowNodeMutationVariables = Exact<{\n input: RecordAppInstallationInput;\n}>;\n\n\nexport type InstallWorkflowNodeMutation = { __typename?: 'Mutation', recordAppInstallation: { __typename?: 'StoreAppInstallation', id: string, productId: string, workspaceId: string, organizationId?: string | null, status: StoreInstallationStatus, version?: string | null, manifest?: Record<string, unknown> | null, installedAt: string } };\n\nexport type InstallPurchasedNodeMutationVariables = Exact<{\n productId: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n orderId?: InputMaybe<Scalars['ID']['input']>;\n version?: InputMaybe<Scalars['String']['input']>;\n}>;\n\n\nexport type InstallPurchasedNodeMutation = { __typename?: 'Mutation', installPurchasedApp: { __typename?: 'InstallPurchasedAppResult', success: boolean, error?: string | null, message?: string | null, installation?: { __typename?: 'StoreAppInstallation', id: string, productId: string, workspaceId: string, organizationId?: string | null, status: StoreInstallationStatus, version?: string | null, manifest?: Record<string, unknown> | null, installedAt: string } | null } };\n\nexport type RecordDownloadMutationVariables = Exact<{\n productId: Scalars['String']['input'];\n}>;\n\n\nexport type RecordDownloadMutation = { __typename?: 'Mutation', recordDownload: { __typename?: 'ProductDownload', id: string, downloadedAt: string } };\n\nexport type UninstallWorkflowNodeMutationVariables = Exact<{\n productId: Scalars['String']['input'];\n workspaceId: Scalars['String']['input'];\n}>;\n\n\nexport type UninstallWorkflowNodeMutation = { __typename?: 'Mutation', recordAppUninstallation: { __typename?: 'StoreAppInstallation', id: string, productId: string, workspaceId: string, status: StoreInstallationStatus, uninstalledAt?: string | null } };\n\nexport type BrowseWorkflowNodesQueryVariables = Exact<{\n input: BrowseStoreInput;\n}>;\n\n\nexport type BrowseWorkflowNodesQuery = { __typename?: 'Query', browseStore: { __typename?: 'BrowseStoreResult', totalCount: number, hasMore: boolean, nextCursor?: string | null, products: Array<{ __typename?: 'StoreProduct', id: string, productId?: string | null, name: string, slug: string, type: ProductType, subType?: string | null, description?: string | null, icon?: string | null, rating?: number | null, reviewCount: number, downloads: number, price: number, pricingModel: PricingModel, currency: string, featured: boolean, manifest?: Record<string, unknown> | null, manifestVersion?: string | null, authorName?: string | null, license?: string | null, compatibleProducts: Array<string>, requiredPermissions: Array<string>, integrationDeps: Array<string>, zipFileUrl?: string | null, isPurchased?: boolean | null, publisher?: { __typename?: 'Publisher', id: string, name: string, isVerified: boolean } | null }> } };\n\nexport type BrowseWorkflowTemplatesQueryVariables = Exact<{\n input: BrowseStoreInput;\n}>;\n\n\nexport type BrowseWorkflowTemplatesQuery = { __typename?: 'Query', browseStore: { __typename?: 'BrowseStoreResult', totalCount: number, hasMore: boolean, nextCursor?: string | null, products: Array<{ __typename?: 'StoreProduct', id: string, name: string, slug: string, type: ProductType, subType?: string | null, description?: string | null, longDescription?: string | null, icon?: string | null, screenshots: Array<string>, videoUrls: Array<string>, rating?: number | null, reviewCount: number, downloads: number, viewCount: number, price: number, pricingModel: PricingModel, currency: string, featured: boolean, manifest?: Record<string, unknown> | null, manifestVersion?: string | null, content?: Record<string, unknown> | null, authorName?: string | null, license?: string | null, category?: string | null, tags: Array<string>, compatibleProducts: Array<string>, zipFileUrl?: string | null, isPurchased?: boolean | null, createdAt: string, updatedAt: string, publishedAt?: string | null, publisher?: { __typename?: 'Publisher', id: string, name: string, email: string, websiteUrl?: string | null, logoUrl?: string | null, isVerified: boolean } | null }> } };\n\nexport type GetMyNodeInstallationsQueryVariables = Exact<{\n workspaceId: Scalars['String']['input'];\n limit?: InputMaybe<Scalars['Int']['input']>;\n offset?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type GetMyNodeInstallationsQuery = { __typename?: 'Query', myStoreAppInstallations: { __typename?: 'StoreAppInstallationConnection', total: number, hasMore: boolean, items: Array<{ __typename?: 'StoreAppInstallation', id: string, productId: string, workspaceId: string, installedById: string, status: StoreInstallationStatus, version?: string | null, manifest?: Record<string, unknown> | null, installedAt: string, updatedAt: string, productName?: string | null, productIcon?: string | null, productStatus?: string | null }> } };\n\nexport type GetNodeInstallableVersionsQueryVariables = Exact<{\n applicationId: Scalars['ID']['input'];\n}>;\n\n\nexport type GetNodeInstallableVersionsQuery = { __typename?: 'Query', installableApplicationVersions: Array<{ __typename?: 'ApplicationVersion', id: string, version: string, status: string, isLatest: boolean, manifest?: Record<string, unknown> | null }> };\n\nexport type GetWorkflowTemplateDetailQueryVariables = Exact<{\n id: Scalars['ID']['input'];\n}>;\n\n\nexport type GetWorkflowTemplateDetailQuery = { __typename?: 'Query', product?: { __typename?: 'StoreProduct', id: string, name: string, slug: string, type: ProductType, description?: string | null, longDescription?: string | null, icon?: string | null, screenshots: Array<string>, videoUrls: Array<string>, rating?: number | null, reviewCount: number, downloads: number, viewCount: number, price: number, pricingModel: PricingModel, currency: string, featured: boolean, content?: Record<string, unknown> | null, manifest?: Record<string, unknown> | null, manifestVersion?: string | null, authorName?: string | null, license?: string | null, category?: string | null, tags: Array<string>, compatibleProducts: Array<string>, createdAt: string, updatedAt: string, publishedAt?: string | null, publisher?: { __typename?: 'Publisher', id: string, name: string, email: string, websiteUrl?: string | null, logoUrl?: string | null, isVerified: boolean } | null } | null };\n\n\nexport const CreateStoreOrderDocument = gql`\n mutation CreateStoreOrder($input: CreateStoreOrderInput!) {\n createStoreOrder(input: $input) {\n id\n status\n total\n lineItems\n createdAt\n }\n}\n `;\nexport type CreateStoreOrderMutationFn = Apollo.MutationFunction<CreateStoreOrderMutation, CreateStoreOrderMutationVariables>;\n\n/**\n * __useCreateStoreOrderMutation__\n *\n * To run a mutation, you first call `useCreateStoreOrderMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateStoreOrderMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createStoreOrderMutation, { data, loading, error }] = useCreateStoreOrderMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useCreateStoreOrderMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<CreateStoreOrderMutation, CreateStoreOrderMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<CreateStoreOrderMutation, CreateStoreOrderMutationVariables>(CreateStoreOrderDocument, options);\n }\nexport type CreateStoreOrderMutationHookResult = ReturnType<typeof useCreateStoreOrderMutation>;\nexport type CreateStoreOrderMutationResult = Apollo.MutationResult<CreateStoreOrderMutation>;\nexport type CreateStoreOrderMutationOptions = Apollo.BaseMutationOptions<CreateStoreOrderMutation, CreateStoreOrderMutationVariables>;\nexport const InstallWorkflowNodeDocument = gql`\n mutation InstallWorkflowNode($input: RecordAppInstallationInput!) {\n recordAppInstallation(input: $input) {\n id\n productId\n workspaceId\n organizationId\n status\n version\n manifest\n installedAt\n }\n}\n `;\nexport type InstallWorkflowNodeMutationFn = Apollo.MutationFunction<InstallWorkflowNodeMutation, InstallWorkflowNodeMutationVariables>;\n\n/**\n * __useInstallWorkflowNodeMutation__\n *\n * To run a mutation, you first call `useInstallWorkflowNodeMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useInstallWorkflowNodeMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [installWorkflowNodeMutation, { data, loading, error }] = useInstallWorkflowNodeMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useInstallWorkflowNodeMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<InstallWorkflowNodeMutation, InstallWorkflowNodeMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<InstallWorkflowNodeMutation, InstallWorkflowNodeMutationVariables>(InstallWorkflowNodeDocument, options);\n }\nexport type InstallWorkflowNodeMutationHookResult = ReturnType<typeof useInstallWorkflowNodeMutation>;\nexport type InstallWorkflowNodeMutationResult = Apollo.MutationResult<InstallWorkflowNodeMutation>;\nexport type InstallWorkflowNodeMutationOptions = Apollo.BaseMutationOptions<InstallWorkflowNodeMutation, InstallWorkflowNodeMutationVariables>;\nexport const InstallPurchasedNodeDocument = gql`\n mutation InstallPurchasedNode($productId: String!, $workspaceId: String!, $orderId: ID, $version: String) {\n installPurchasedApp(\n productId: $productId\n workspaceId: $workspaceId\n orderId: $orderId\n version: $version\n ) {\n success\n installation {\n id\n productId\n workspaceId\n organizationId\n status\n version\n manifest\n installedAt\n }\n error\n message\n }\n}\n `;\nexport type InstallPurchasedNodeMutationFn = Apollo.MutationFunction<InstallPurchasedNodeMutation, InstallPurchasedNodeMutationVariables>;\n\n/**\n * __useInstallPurchasedNodeMutation__\n *\n * To run a mutation, you first call `useInstallPurchasedNodeMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useInstallPurchasedNodeMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [installPurchasedNodeMutation, { data, loading, error }] = useInstallPurchasedNodeMutation({\n * variables: {\n * productId: // value for 'productId'\n * workspaceId: // value for 'workspaceId'\n * orderId: // value for 'orderId'\n * version: // value for 'version'\n * },\n * });\n */\nexport function useInstallPurchasedNodeMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<InstallPurchasedNodeMutation, InstallPurchasedNodeMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<InstallPurchasedNodeMutation, InstallPurchasedNodeMutationVariables>(InstallPurchasedNodeDocument, options);\n }\nexport type InstallPurchasedNodeMutationHookResult = ReturnType<typeof useInstallPurchasedNodeMutation>;\nexport type InstallPurchasedNodeMutationResult = Apollo.MutationResult<InstallPurchasedNodeMutation>;\nexport type InstallPurchasedNodeMutationOptions = Apollo.BaseMutationOptions<InstallPurchasedNodeMutation, InstallPurchasedNodeMutationVariables>;\nexport const RecordDownloadDocument = gql`\n mutation RecordDownload($productId: String!) {\n recordDownload(productId: $productId) {\n id\n downloadedAt\n }\n}\n `;\nexport type RecordDownloadMutationFn = Apollo.MutationFunction<RecordDownloadMutation, RecordDownloadMutationVariables>;\n\n/**\n * __useRecordDownloadMutation__\n *\n * To run a mutation, you first call `useRecordDownloadMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useRecordDownloadMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [recordDownloadMutation, { data, loading, error }] = useRecordDownloadMutation({\n * variables: {\n * productId: // value for 'productId'\n * },\n * });\n */\nexport function useRecordDownloadMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<RecordDownloadMutation, RecordDownloadMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<RecordDownloadMutation, RecordDownloadMutationVariables>(RecordDownloadDocument, options);\n }\nexport type RecordDownloadMutationHookResult = ReturnType<typeof useRecordDownloadMutation>;\nexport type RecordDownloadMutationResult = Apollo.MutationResult<RecordDownloadMutation>;\nexport type RecordDownloadMutationOptions = Apollo.BaseMutationOptions<RecordDownloadMutation, RecordDownloadMutationVariables>;\nexport const UninstallWorkflowNodeDocument = gql`\n mutation UninstallWorkflowNode($productId: String!, $workspaceId: String!) {\n recordAppUninstallation(productId: $productId, workspaceId: $workspaceId) {\n id\n productId\n workspaceId\n status\n uninstalledAt\n }\n}\n `;\nexport type UninstallWorkflowNodeMutationFn = Apollo.MutationFunction<UninstallWorkflowNodeMutation, UninstallWorkflowNodeMutationVariables>;\n\n/**\n * __useUninstallWorkflowNodeMutation__\n *\n * To run a mutation, you first call `useUninstallWorkflowNodeMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUninstallWorkflowNodeMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [uninstallWorkflowNodeMutation, { data, loading, error }] = useUninstallWorkflowNodeMutation({\n * variables: {\n * productId: // value for 'productId'\n * workspaceId: // value for 'workspaceId'\n * },\n * });\n */\nexport function useUninstallWorkflowNodeMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<UninstallWorkflowNodeMutation, UninstallWorkflowNodeMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<UninstallWorkflowNodeMutation, UninstallWorkflowNodeMutationVariables>(UninstallWorkflowNodeDocument, options);\n }\nexport type UninstallWorkflowNodeMutationHookResult = ReturnType<typeof useUninstallWorkflowNodeMutation>;\nexport type UninstallWorkflowNodeMutationResult = Apollo.MutationResult<UninstallWorkflowNodeMutation>;\nexport type UninstallWorkflowNodeMutationOptions = Apollo.BaseMutationOptions<UninstallWorkflowNodeMutation, UninstallWorkflowNodeMutationVariables>;\nexport const BrowseWorkflowNodesDocument = gql`\n query BrowseWorkflowNodes($input: BrowseStoreInput!) {\n browseStore(input: $input) {\n products {\n id\n productId\n name\n slug\n type\n subType\n description\n icon\n rating\n reviewCount\n downloads\n price\n pricingModel\n currency\n featured\n manifest\n manifestVersion\n authorName\n license\n compatibleProducts\n requiredPermissions\n integrationDeps\n zipFileUrl\n isPurchased\n publisher {\n id\n name\n isVerified\n }\n }\n totalCount\n hasMore\n nextCursor\n }\n}\n `;\n\n/**\n * __useBrowseWorkflowNodesQuery__\n *\n * To run a query within a React component, call `useBrowseWorkflowNodesQuery` and pass it any options that fit your needs.\n * When your component renders, `useBrowseWorkflowNodesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useBrowseWorkflowNodesQuery({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useBrowseWorkflowNodesQuery(baseOptions: ApolloReactHooks.QueryHookOptions<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables> & ({ variables: BrowseWorkflowNodesQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables>(BrowseWorkflowNodesDocument, options);\n }\nexport function useBrowseWorkflowNodesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables>(BrowseWorkflowNodesDocument, options);\n }\n// @ts-ignore\nexport function useBrowseWorkflowNodesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables>;\nexport function useBrowseWorkflowNodesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<BrowseWorkflowNodesQuery | undefined, BrowseWorkflowNodesQueryVariables>;\nexport function useBrowseWorkflowNodesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables>(BrowseWorkflowNodesDocument, options);\n }\nexport type BrowseWorkflowNodesQueryHookResult = ReturnType<typeof useBrowseWorkflowNodesQuery>;\nexport type BrowseWorkflowNodesLazyQueryHookResult = ReturnType<typeof useBrowseWorkflowNodesLazyQuery>;\nexport type BrowseWorkflowNodesSuspenseQueryHookResult = ReturnType<typeof useBrowseWorkflowNodesSuspenseQuery>;\nexport type BrowseWorkflowNodesQueryResult = Apollo.QueryResult<BrowseWorkflowNodesQuery, BrowseWorkflowNodesQueryVariables>;\nexport const BrowseWorkflowTemplatesDocument = gql`\n query BrowseWorkflowTemplates($input: BrowseStoreInput!) {\n browseStore(input: $input) {\n products {\n id\n name\n slug\n type\n subType\n description\n longDescription\n icon\n screenshots\n videoUrls\n rating\n reviewCount\n downloads\n viewCount\n price\n pricingModel\n currency\n featured\n manifest\n manifestVersion\n content\n authorName\n license\n category\n tags\n compatibleProducts\n zipFileUrl\n isPurchased\n publisher {\n id\n name\n email\n websiteUrl\n logoUrl\n isVerified\n }\n createdAt\n updatedAt\n publishedAt\n }\n totalCount\n hasMore\n nextCursor\n }\n}\n `;\n\n/**\n * __useBrowseWorkflowTemplatesQuery__\n *\n * To run a query within a React component, call `useBrowseWorkflowTemplatesQuery` and pass it any options that fit your needs.\n * When your component renders, `useBrowseWorkflowTemplatesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useBrowseWorkflowTemplatesQuery({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useBrowseWorkflowTemplatesQuery(baseOptions: ApolloReactHooks.QueryHookOptions<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables> & ({ variables: BrowseWorkflowTemplatesQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables>(BrowseWorkflowTemplatesDocument, options);\n }\nexport function useBrowseWorkflowTemplatesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables>(BrowseWorkflowTemplatesDocument, options);\n }\n// @ts-ignore\nexport function useBrowseWorkflowTemplatesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables>;\nexport function useBrowseWorkflowTemplatesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<BrowseWorkflowTemplatesQuery | undefined, BrowseWorkflowTemplatesQueryVariables>;\nexport function useBrowseWorkflowTemplatesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables>(BrowseWorkflowTemplatesDocument, options);\n }\nexport type BrowseWorkflowTemplatesQueryHookResult = ReturnType<typeof useBrowseWorkflowTemplatesQuery>;\nexport type BrowseWorkflowTemplatesLazyQueryHookResult = ReturnType<typeof useBrowseWorkflowTemplatesLazyQuery>;\nexport type BrowseWorkflowTemplatesSuspenseQueryHookResult = ReturnType<typeof useBrowseWorkflowTemplatesSuspenseQuery>;\nexport type BrowseWorkflowTemplatesQueryResult = Apollo.QueryResult<BrowseWorkflowTemplatesQuery, BrowseWorkflowTemplatesQueryVariables>;\nexport const GetMyNodeInstallationsDocument = gql`\n query GetMyNodeInstallations($workspaceId: String!, $limit: Int, $offset: Int) {\n myStoreAppInstallations(\n filter: {workspaceId: $workspaceId, status: ACTIVE}\n limit: $limit\n offset: $offset\n ) {\n items {\n id\n productId\n workspaceId\n installedById\n status\n version\n manifest\n installedAt\n updatedAt\n productName\n productIcon\n productStatus\n }\n total\n hasMore\n }\n}\n `;\n\n/**\n * __useGetMyNodeInstallationsQuery__\n *\n * To run a query within a React component, call `useGetMyNodeInstallationsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetMyNodeInstallationsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetMyNodeInstallationsQuery({\n * variables: {\n * workspaceId: // value for 'workspaceId'\n * limit: // value for 'limit'\n * offset: // value for 'offset'\n * },\n * });\n */\nexport function useGetMyNodeInstallationsQuery(baseOptions: ApolloReactHooks.QueryHookOptions<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables> & ({ variables: GetMyNodeInstallationsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables>(GetMyNodeInstallationsDocument, options);\n }\nexport function useGetMyNodeInstallationsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables>(GetMyNodeInstallationsDocument, options);\n }\n// @ts-ignore\nexport function useGetMyNodeInstallationsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables>;\nexport function useGetMyNodeInstallationsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<GetMyNodeInstallationsQuery | undefined, GetMyNodeInstallationsQueryVariables>;\nexport function useGetMyNodeInstallationsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables>(GetMyNodeInstallationsDocument, options);\n }\nexport type GetMyNodeInstallationsQueryHookResult = ReturnType<typeof useGetMyNodeInstallationsQuery>;\nexport type GetMyNodeInstallationsLazyQueryHookResult = ReturnType<typeof useGetMyNodeInstallationsLazyQuery>;\nexport type GetMyNodeInstallationsSuspenseQueryHookResult = ReturnType<typeof useGetMyNodeInstallationsSuspenseQuery>;\nexport type GetMyNodeInstallationsQueryResult = Apollo.QueryResult<GetMyNodeInstallationsQuery, GetMyNodeInstallationsQueryVariables>;\nexport const GetNodeInstallableVersionsDocument = gql`\n query GetNodeInstallableVersions($applicationId: ID!) {\n installableApplicationVersions(applicationId: $applicationId) {\n id\n version\n status\n isLatest\n manifest\n }\n}\n `;\n\n/**\n * __useGetNodeInstallableVersionsQuery__\n *\n * To run a query within a React component, call `useGetNodeInstallableVersionsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetNodeInstallableVersionsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetNodeInstallableVersionsQuery({\n * variables: {\n * applicationId: // value for 'applicationId'\n * },\n * });\n */\nexport function useGetNodeInstallableVersionsQuery(baseOptions: ApolloReactHooks.QueryHookOptions<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables> & ({ variables: GetNodeInstallableVersionsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables>(GetNodeInstallableVersionsDocument, options);\n }\nexport function useGetNodeInstallableVersionsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables>(GetNodeInstallableVersionsDocument, options);\n }\n// @ts-ignore\nexport function useGetNodeInstallableVersionsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables>;\nexport function useGetNodeInstallableVersionsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<GetNodeInstallableVersionsQuery | undefined, GetNodeInstallableVersionsQueryVariables>;\nexport function useGetNodeInstallableVersionsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables>(GetNodeInstallableVersionsDocument, options);\n }\nexport type GetNodeInstallableVersionsQueryHookResult = ReturnType<typeof useGetNodeInstallableVersionsQuery>;\nexport type GetNodeInstallableVersionsLazyQueryHookResult = ReturnType<typeof useGetNodeInstallableVersionsLazyQuery>;\nexport type GetNodeInstallableVersionsSuspenseQueryHookResult = ReturnType<typeof useGetNodeInstallableVersionsSuspenseQuery>;\nexport type GetNodeInstallableVersionsQueryResult = Apollo.QueryResult<GetNodeInstallableVersionsQuery, GetNodeInstallableVersionsQueryVariables>;\nexport const GetWorkflowTemplateDetailDocument = gql`\n query GetWorkflowTemplateDetail($id: ID!) {\n product(id: $id) {\n id\n name\n slug\n type\n description\n longDescription\n icon\n screenshots\n videoUrls\n rating\n reviewCount\n downloads\n viewCount\n price\n pricingModel\n currency\n featured\n content\n manifest\n manifestVersion\n authorName\n license\n category\n tags\n compatibleProducts\n publisher {\n id\n name\n email\n websiteUrl\n logoUrl\n isVerified\n }\n createdAt\n updatedAt\n publishedAt\n }\n}\n `;\n\n/**\n * __useGetWorkflowTemplateDetailQuery__\n *\n * To run a query within a React component, call `useGetWorkflowTemplateDetailQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWorkflowTemplateDetailQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWorkflowTemplateDetailQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetWorkflowTemplateDetailQuery(baseOptions: ApolloReactHooks.QueryHookOptions<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables> & ({ variables: GetWorkflowTemplateDetailQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables>(GetWorkflowTemplateDetailDocument, options);\n }\nexport function useGetWorkflowTemplateDetailLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables>(GetWorkflowTemplateDetailDocument, options);\n }\n// @ts-ignore\nexport function useGetWorkflowTemplateDetailSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables>;\nexport function useGetWorkflowTemplateDetailSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<GetWorkflowTemplateDetailQuery | undefined, GetWorkflowTemplateDetailQueryVariables>;\nexport function useGetWorkflowTemplateDetailSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables>(GetWorkflowTemplateDetailDocument, options);\n }\nexport type GetWorkflowTemplateDetailQueryHookResult = ReturnType<typeof useGetWorkflowTemplateDetailQuery>;\nexport type GetWorkflowTemplateDetailLazyQueryHookResult = ReturnType<typeof useGetWorkflowTemplateDetailLazyQuery>;\nexport type GetWorkflowTemplateDetailSuspenseQueryHookResult = ReturnType<typeof useGetWorkflowTemplateDetailSuspenseQuery>;\nexport type GetWorkflowTemplateDetailQueryResult = Apollo.QueryResult<GetWorkflowTemplateDetailQuery, GetWorkflowTemplateDetailQueryVariables>;"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/label.tsx"],"names":[],"mappings":";;;;;;AAKA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB;AACF,CAAA;AAEA,IAAM,KAAA,GAAc,iBAIlB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAAgB,cAAA,CAAA,IAAA;AAAA,EAAf;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,aAAA,EAAc,EAAG,SAAS,CAAA;AAAA,IACvC,GAAG;AAAA;AACN,CACD;AACD,KAAA,CAAM,cAA6B,cAAA,CAAA,IAAA,CAAK,WAAA","file":"chunk-6QCBKN3P.js","sourcesContent":["import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils/cn\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n/TranslationBridge.tsx"],"names":[],"mappings":";;;AA4CO,IAAM,2BAAA,GAA0C,CACrD,IAAA,EACA,QAAA,EACA,MAAA,KACG;AACH,EAAA,IAAI,CAAC,QAAQ,OAAO,QAAA;AACpB,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,MAAA;AAAA,IAC5B,CAAC,GAAA,EAAK,CAAC,CAAA,EAAG,CAAC,MACT,GAAA,CAAI,OAAA,CAAQ,IAAI,MAAA,CAAO,SAAS,CAAC,CAAA,MAAA,CAAA,EAAU,GAAG,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,IAC5D;AAAA,GACF;AACF;AAEA,IAAM,4BAAA,GAA+B,aAAA;AAAA,EACnC;AACF,CAAA;AAYO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,CAAA;AAAA,EACA;AACF,CAAA,EAAuC;AAGrC,EAAA,MAAM,QAAQ,OAAA,CAAoB,MAAM,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAC9C,EAAA,uBACE,GAAA,CAAC,4BAAA,CAA6B,QAAA,EAA7B,EAAsC,OACpC,QAAA,EACH,CAAA;AAEJ;AAQO,SAAS,KAAA,GAAoB;AAClC,EAAA,OAAO,WAAW,4BAA4B,CAAA;AAChD","file":"chunk-7YWBH2A5.js","sourcesContent":["/**\n * FluidGrids Translation Bridge\n *\n * Same shape as the permissions bridge next door, and for the same reason: the\n * SDK never resolves translations itself and never imports `@burdenoff/fe-libs`.\n * `@burdenoff/fe-libs` is an OPTIONAL peer dependency here, and its `useI18n()`\n * THROWS when no `I18nProvider` is mounted — so importing it would turn \"this\n * host has no i18n\" into \"the builder crashes\" for every standalone embedder\n * (/embed/workflow, /shared/:id, BigConsole, fluidgrids-embed-test).\n *\n * Instead, hosts that DO have a translator bridge it in:\n *\n * // microfe-workflows, inside the Burdenoff shell:\n * <FluidGridsTranslationProvider t={tr}>…</FluidGridsTranslationProvider>\n *\n * Without a provider the context defaults to the identity translator, which\n * returns each call's English fallback. So the SDK renders correct English with\n * no provider, and the host's language with one. Translation is never the reason\n * a component fails to render.\n *\n * ── On the English argument ──────────────────────────────────────────────────\n * `tr(key, english)` is not \"hardcoded English with extra steps\". The English is\n * the SOURCE STRING: `fluidgrids-app/scripts/extract-i18n-keys.ts` reads it as\n * the value for `key`, which is what gets seeded into `global-i18n-svc` and\n * translated into every other locale. It is also the last-resort render, which\n * is what stops a raw dot-path like `fluidgrids.builder.save` reaching a user\n * when the i18n service is unreachable.\n *\n * Two rules follow, and the extractor enforces neither — you must:\n * 1. the key must be a STRING LITERAL (a template literal or variable is\n * invisible to the extractor, so that key would never reach the bundle);\n * 2. the English must be the real, final copy, never a placeholder.\n * ────────────────────────────────────────────────────────────────────────────\n */\nimport { createContext, useContext, useMemo, type ReactNode } from \"react\";\n\n/** A host-supplied translator: `(key, englishFallback, params?) => string`. */\nexport type Translator = (\n key: string,\n fallback: string,\n params?: Record<string, string | number>,\n) => string;\n\n/** No-provider default: render the English fallback the call site supplied. */\nexport const ENGLISH_FALLBACK_TRANSLATOR: Translator = (\n _key,\n fallback,\n params,\n) => {\n if (!params) return fallback;\n return Object.entries(params).reduce(\n (str, [k, v]) =>\n str.replace(new RegExp(`\\\\{\\\\{${k}\\\\}\\\\}`, \"g\"), String(v)),\n fallback,\n );\n};\n\nconst FluidGridsTranslationContext = createContext<Translator>(\n ENGLISH_FALLBACK_TRANSLATOR,\n);\n\nexport interface FluidGridsTranslationProviderProps {\n /**\n * The host's translator. Must be referentially stable per locale (wrap it in\n * `useCallback` keyed on the locale) — it is a context value, so a new\n * function identity on every render re-renders every consumer.\n */\n t: Translator;\n children: ReactNode;\n}\n\nexport function FluidGridsTranslationProvider({\n t,\n children,\n}: FluidGridsTranslationProviderProps) {\n // Depending on `t` is what makes a locale switch propagate: the host rebuilds\n // `t` when the locale changes, which re-renders every consumer in the SDK.\n const value = useMemo<Translator>(() => t, [t]);\n return (\n <FluidGridsTranslationContext.Provider value={value}>\n {children}\n </FluidGridsTranslationContext.Provider>\n );\n}\n\n/**\n * Translate a UI string, falling back to English.\n *\n * const tr = useTr();\n * <Button>{tr(\"fluidgrids.builder.save\", \"Save\")}</Button>\n */\nexport function useTr(): Translator {\n return useContext(FluidGridsTranslationContext);\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/shared/QuotaExhaustedDialog.tsx"],"names":[],"mappings":";;;;AA4BO,SAAS,oBAAA,CAAqB;AAAA,EACnC,IAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,MAAM,KAAK,KAAA,EAAM;AAGjB,EAAA,MAAM,gBACJ,KAAA,IACA,EAAA;AAAA,IACE,kDAAA;AAAA,IACA;AAAA,GACF;AACF,EAAA,MAAM,sBACJ,WAAA,IACA,EAAA;AAAA,IACE,wDAAA;AAAA,IACA;AAAA,GACF;AAEF,EAAA,uBACE,GAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAY,YAAA,EACvB,+BAAC,kBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,iBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,oBAAkB,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,sBACjC,GAAA,CAAC,0BAAwB,QAAA,EAAA,mBAAA,EAAoB;AAAA,KAAA,EAC/C,CAAA;AAAA,yBACC,iBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,iBAAA,EAAA,EACE,QAAA,EAAA,EAAA;AAAA,QACC,oDAAA;AAAA,QACA;AAAA,OACF,EACF,CAAA;AAAA,sBACA,GAAA,CAAC,iBAAA,EAAA,EAAkB,OAAA,EAAS,SAAA,EACzB,QAAA,EAAA,EAAA;AAAA,QACC,wDAAA;AAAA,QACA;AAAA,OACF,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ","file":"chunk-AANIWER2.js","sourcesContent":["import {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@burdenoff/fe-libs/ui\";\nimport { useTr } from \"../../hooks/useTr\";\n\ninterface QuotaExhaustedDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Called when the user clicks \"View Billing\". */\n onUpgrade: () => void;\n title?: string;\n description?: string;\n}\n\n/**\n * Alert shown when a workflow-creating action (save/duplicate/import) is\n * rejected with `QUOTA_EXHAUSTED` for `fluidgrids.workflows.count`. Mirrors\n * the \"Folder Limit Reached\" dialog in microfe-files' BrowserPage.tsx, built\n * on the same `AlertDialog` primitives already used elsewhere in this SDK\n * (see card-workflow.tsx's delete-confirmation dialog).\n */\nexport function QuotaExhaustedDialog({\n open,\n onOpenChange,\n onUpgrade,\n title,\n description,\n}: QuotaExhaustedDialogProps) {\n const tr = useTr();\n // Defaults are resolved here rather than as default parameter values so the\n // copy can go through `tr()` — a hook cannot be called in a parameter list.\n const resolvedTitle =\n title ??\n tr(\n \"fluidgrids.components.quotaExhaustedDialog.title\",\n \"Workflow Limit Reached\",\n );\n const resolvedDescription =\n description ??\n tr(\n \"fluidgrids.components.quotaExhaustedDialog.description\",\n \"You've reached the workflow limit for your plan. Upgrade your plan to create more workflows.\",\n );\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{resolvedTitle}</AlertDialogTitle>\n <AlertDialogDescription>{resolvedDescription}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>\n {tr(\n \"fluidgrids.components.quotaExhaustedDialog.dismiss\",\n \"Dismiss\",\n )}\n </AlertDialogCancel>\n <AlertDialogAction onClick={onUpgrade}>\n {tr(\n \"fluidgrids.components.quotaExhaustedDialog.viewBilling\",\n \"View Billing\",\n )}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graphql/global-client.ts"],"names":[],"mappings":";;;AAqBA,IAAI,oBAAA,GAA4C,IAAA;AAKzC,SAAS,qBAAqB,MAAA,EAAmC;AACtE,EAAA,oBAAA,GAAuB,MAAA;AACzB;AAKO,SAAS,oBAAA,GAA4C;AAC1D,EAAA,OAAO,oBAAA;AACT;AAKO,SAAS,sBAAA,GAA+B;AAC7C,EAAA,oBAAA,GAAuB,IAAA;AACzB;AAMO,SAAS,wBACd,MAAA,EACc;AACd,EAAA,MAAM,WAAW,cAAA,CAAe;AAAA,IAC9B,KAAK,MAAA,CAAO;AAAA,GACb,CAAA;AAED,EAAA,MAAM,WAAW,UAAA,CAAW,CAAC,CAAA,EAAG,EAAE,SAAQ,MAAO;AAAA,IAC/C,OAAA,EAAS;AAAA,MACP,GAAG,OAAA;AAAA,MACH,GAAI,OAAO,SAAA,IAAa,EAAE,eAAe,CAAA,OAAA,EAAU,MAAA,CAAO,SAAS,CAAA,CAAA,EAAG;AAAA,MACtE,kBAAkB,MAAA,CAAO,WAAA;AAAA,MACzB,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,aAAA,EAAe,OAAO,QAAA,EAAS;AAAA,MACxD,GAAI,OAAO,cAAA,IAAkB;AAAA,QAC3B,qBAAqB,MAAA,CAAO;AAAA;AAC9B;AACF,GACF,CAAE,CAAA;AAEF,EAAA,OAAO,IAAI,YAAA,CAAa;AAAA,IACtB,IAAA,EAAM,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA;AAAA,IAC9B,KAAA,EAAO,IAAI,aAAA,EAAc;AAAA,IACzB,cAAA,EAAgB;AAAA,MACd,UAAA,EAAY;AAAA,QACV,WAAA,EAAa;AAAA,OACf;AAAA,MACA,KAAA,EAAO;AAAA,QACL,WAAA,EAAa;AAAA;AACf;AACF,GACD,CAAA;AACH","file":"chunk-BQXHJIER.js","sourcesContent":["import {\n ApolloClient,\n InMemoryCache,\n createHttpLink,\n} from \"@apollo/client/core\";\nimport { setContext } from \"@apollo/client/link/context\";\n\nexport interface GlobalClientConfig {\n /** Global gateway GraphQL endpoint URL */\n globalApiUrl: string;\n /** Auth token for API calls */\n authToken?: string;\n /** Current workspace ID */\n workspaceId: string;\n /** Current tenant ID */\n tenantId?: string;\n /** Organization ID */\n organizationId?: string;\n}\n\n// Module-level singleton for global client (similar to workspace client pattern)\nlet globalClientInstance: ApolloClient | null = null;\n\n/**\n * Set the global Apollo client singleton\n */\nexport function setGlobalStoreClient(client: ApolloClient | null): void {\n globalClientInstance = client;\n}\n\n/**\n * Get the current global Apollo client\n */\nexport function getGlobalStoreClient(): ApolloClient | null {\n return globalClientInstance;\n}\n\n/**\n * Reset/clear the global Apollo client\n */\nexport function resetGlobalStoreClient(): void {\n globalClientInstance = null;\n}\n\n/**\n * Create a new Apollo client for Global Gateway (Store operations)\n * @param config - Configuration including globalApiUrl, auth, and context IDs\n */\nexport function createGlobalStoreClient(\n config: GlobalClientConfig,\n): ApolloClient {\n const httpLink = createHttpLink({\n uri: config.globalApiUrl,\n });\n\n const authLink = setContext((_, { headers }) => ({\n headers: {\n ...headers,\n ...(config.authToken && { authorization: `Bearer ${config.authToken}` }),\n \"x-workspace-id\": config.workspaceId,\n ...(config.tenantId && { \"x-tenant-id\": config.tenantId }),\n ...(config.organizationId && {\n \"x-organization-id\": config.organizationId,\n }),\n },\n }));\n\n return new ApolloClient({\n link: authLink.concat(httpLink),\n cache: new InMemoryCache(),\n defaultOptions: {\n watchQuery: {\n fetchPolicy: \"cache-and-network\",\n },\n query: {\n fetchPolicy: \"network-only\",\n },\n },\n });\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/modules/executions/pages/ExecutionsListPage.tsx"],"names":[],"mappings":"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","file":"chunk-CZ7APZ5B.js","sourcesContent":["import { useCallback, useMemo, useRef } from \"react\";\nimport { useNavigate, useSearchParams } from \"react-router\";\nimport { Icon } from \"@iconify/react\";\nimport { toast } from \"sonner\";\nimport { Button } from \"@burdenoff/fe-libs/button\";\nimport {\n ExecutionFilters,\n ExecutionStats,\n ExecutionTable,\n ExecutionCards,\n ExecutionTimeline,\n Pagination,\n} from \"../components\";\nimport { useExecutionsStore } from \"../store/executionsStore\";\nimport {\n useExecutionsWithStore,\n useExecutionStats,\n useExecutionActions,\n useAutoRefresh,\n} from \"../hooks/useExecutions\";\nimport { useWorkflowDefinitions } from \"../../../hooks/useWorkflows\";\nimport type { WorkflowRun, RunStatus, ExecutionAction } from \"../types\";\nimport { useTr } from \"../../../hooks/useTr\";\n\nexport function ExecutionsListPage() {\n const tr = useTr();\n const navigate = useNavigate();\n\n // Store state\n const {\n viewMode,\n setViewMode,\n setSelectedExecution,\n selection,\n clearSelection,\n setStatusFilter,\n setWorkflowFilter,\n autoRefresh,\n autoRefreshInterval,\n } = useExecutionsStore();\n\n // Seed the workflow filter from the URL (?workflowKey=...) synchronously —\n // BEFORE useExecutionsWithStore() below reads it — so the first runs query\n // already carries the filter and no stale unfiltered request is fired. Lets\n // \"View Runs\" in the builder open this list scoped to one workflow; arriving\n // without the param (e.g. the sidebar \"Runs\" link) clears any stale filter.\n // Sync only when the URL param actually changes (tracked via a ref) so manual\n // dropdown changes — which update the store but not the URL — aren't reverted.\n const [searchParams] = useSearchParams();\n const workflowKeyParam = searchParams.get(\"workflowKey\") ?? \"\";\n const lastWorkflowKeyParam = useRef<string | null>(null);\n if (lastWorkflowKeyParam.current !== workflowKeyParam) {\n lastWorkflowKeyParam.current = workflowKeyParam;\n if (useExecutionsStore.getState().filter.workflowKey !== workflowKeyParam) {\n setWorkflowFilter(workflowKeyParam);\n }\n }\n\n // Data fetching\n const { executions, total, loading, error, refetch } =\n useExecutionsWithStore();\n const {\n stats,\n loading: statsLoading,\n refetch: refetchStats,\n } = useExecutionStats();\n const { workflows } = useWorkflowDefinitions({ limit: 100 });\n const {\n cancelExecution,\n pauseExecution,\n resumeExecution,\n retryExecution,\n retryExecutions,\n } = useExecutionActions();\n\n // Auto-refresh\n useAutoRefresh(\n useCallback(() => {\n refetch();\n refetchStats();\n }, [refetch, refetchStats]),\n autoRefresh,\n autoRefreshInterval,\n );\n\n // Transform stats for component\n const executionStats = useMemo(() => {\n if (!stats) return null;\n return {\n total: stats.runsCountTotal,\n running: stats.runsRunningCount,\n completed: stats.runsCompletedCount,\n failed: stats.runsFailedCount,\n cancelled: stats.runsCancelledCount ?? 0,\n pending: stats.runsPendingCount,\n waiting: stats.runsWaitingCount ?? 0,\n successRate: stats.workflowSuccessRate,\n avgDuration: stats.avgWorkflowExecutionTimeSeconds,\n };\n }, [stats]);\n\n // Transform workflows for filter\n const workflowOptions = useMemo(\n () =>\n workflows.map((w) => ({\n workflowKey: w.workflowKey,\n name: w.name,\n })),\n [workflows],\n );\n\n // workflowKey → name fallback for run rows whose workflow relation is\n // missing (e.g. before the backend include rolled out).\n const workflowNames = useMemo(() => {\n const map: Record<string, string> = {};\n for (const w of workflows) map[w.workflowKey] = w.name;\n return map;\n }, [workflows]);\n\n // Handlers\n const handleRowClick = (execution: WorkflowRun) => {\n setSelectedExecution(execution);\n navigate(`../runs/${execution.id}`);\n };\n\n // Retry starts a NEW run of the same pinned version, from the same trigger\n // node and with the same trigger payload (BOFF-7269). It used to navigate to\n // the run's detail page, which only offers per-node retry, so nothing ran.\n const handleRetry = async (execution: WorkflowRun) => {\n const result = await retryExecution(execution);\n if (!result.ok) {\n toast.error(\n tr(\n \"fluidgrids.executions.executionsList.retryFailed\",\n \"Could not start a new run\",\n ),\n { description: result.message },\n );\n return;\n }\n toast.success(\n tr(\n \"fluidgrids.executions.executionsList.retryStarted\",\n \"New run started\",\n ),\n );\n navigate(`../runs/${result.run.runId}`);\n };\n\n const handleAction = async (\n action: ExecutionAction,\n execution: WorkflowRun,\n ) => {\n switch (action) {\n case \"cancel\":\n await cancelExecution(execution.id);\n break;\n case \"pause\":\n await pauseExecution(execution.id);\n break;\n case \"resume\":\n await resumeExecution(execution.id);\n break;\n case \"retry\":\n await handleRetry(execution);\n break;\n case \"view\":\n navigate(`../runs/${execution.id}`);\n break;\n }\n refetch();\n };\n\n const handleFilterByStatus = (status: RunStatus | \"all\") => {\n setStatusFilter(status);\n };\n\n const handleBulkRetry = async () => {\n if (selection.runIds.length === 0) return;\n const retried = await retryExecutions(selection.runIds.slice(0, 10));\n if (retried.length === 0) {\n toast.error(\n tr(\n \"fluidgrids.executions.executionsList.bulkRetryFailed\",\n \"Could not retry the selected runs\",\n ),\n );\n return;\n }\n toast.success(\n tr(\n \"fluidgrids.executions.executionsList.bulkRetryStarted\",\n `${retried.length} new run${retried.length === 1 ? \"\" : \"s\"} started`,\n ),\n );\n clearSelection();\n refetch();\n };\n\n const handleBulkAction = async (action: \"cancel\" | \"pause\" | \"resume\") => {\n if (selection.runIds.length === 0) return;\n\n const promises = selection.runIds.map((id) => {\n switch (action) {\n case \"cancel\":\n return cancelExecution(id);\n case \"pause\":\n return pauseExecution(id);\n case \"resume\":\n return resumeExecution(id);\n }\n });\n\n const results = await Promise.allSettled(promises);\n const failures = results.filter((r) => r.status === \"rejected\");\n if (failures.length > 0) {\n console.error(\n `Bulk action partially failed: ${failures.length}/${results.length} failed`,\n );\n }\n clearSelection();\n refetch();\n };\n\n return (\n <div className=\"p-4 sm:p-6 bg-background-primary min-h-screen\">\n {/* Header */}\n <div\n className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6\"\n data-tour=\"fluidgrids-runs-header\"\n >\n <div>\n <h1 className=\"text-2xl sm:text-3xl font-bold text-text-primary\">\n {tr(\"fluidgrids.executions.executionsList.title\", \"Executions\")}\n </h1>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n \"fluidgrids.executions.executionsList.subtitle\",\n \"Monitor and manage your workflow runs\",\n )}\n </p>\n </div>\n <div className=\"flex items-center gap-3\">\n {/* View Mode Toggle */}\n <div className=\"flex items-center bg-background-secondary rounded-lg border border-border-secondary p-1\">\n <button\n onClick={() => setViewMode(\"table\")}\n className={`p-2 rounded ${\n viewMode === \"table\"\n ? \"bg-background-tertiary text-text-primary\"\n : \"text-text-secondary hover:text-text-primary\"\n }`}\n title={tr(\n \"fluidgrids.executions.executionsList.tableViewTooltip\",\n \"Table View\",\n )}\n >\n <Icon icon=\"mdi:table\" width={18} />\n </button>\n <button\n onClick={() => setViewMode(\"cards\")}\n className={`p-2 rounded ${\n viewMode === \"cards\"\n ? \"bg-background-tertiary text-text-primary\"\n : \"text-text-secondary hover:text-text-primary\"\n }`}\n title={tr(\n \"fluidgrids.executions.executionsList.cardViewTooltip\",\n \"Card View\",\n )}\n >\n <Icon icon=\"mdi:view-grid\" width={18} />\n </button>\n <button\n onClick={() => setViewMode(\"timeline\")}\n className={`p-2 rounded ${\n viewMode === \"timeline\"\n ? \"bg-background-tertiary text-text-primary\"\n : \"text-text-secondary hover:text-text-primary\"\n }`}\n title={tr(\n \"fluidgrids.executions.executionsList.timelineViewTooltip\",\n \"Timeline View\",\n )}\n >\n <Icon icon=\"mdi:timeline\" width={18} />\n </button>\n </div>\n\n <Button variant=\"outline\" onClick={() => navigate(\"../list\")}>\n <Icon icon=\"mdi:arrow-left\" className=\"mr-2\" width={16} />\n {tr(\n \"fluidgrids.executions.executionsList.backToWorkflows\",\n \"Back to Workflows\",\n )}\n </Button>\n </div>\n </div>\n\n {/* Stats Cards */}\n <div className=\"mb-6\" data-tour=\"fluidgrids-runs-stats\">\n <ExecutionStats\n stats={executionStats}\n loading={statsLoading}\n onFilterByStatus={handleFilterByStatus}\n />\n </div>\n\n {/* Filters */}\n <div className=\"mb-6\" data-tour=\"fluidgrids-runs-filters\">\n <ExecutionFilters workflows={workflowOptions} onRefresh={refetch} />\n </div>\n\n {/* Bulk Actions */}\n {selection.runIds.length > 0 && (\n <div className=\"mb-4 p-3 bg-action-primary-bg/10 rounded-lg flex flex-wrap items-center gap-3\">\n <span className=\"text-sm text-text-primary\">\n {selection.runIds.length}{\" \"}\n {selection.runIds.length > 1\n ? tr(\n \"fluidgrids.executions.executionsList.selectionCountPlural\",\n \"executions selected\",\n )\n : tr(\n \"fluidgrids.executions.executionsList.selectionCountSingular\",\n \"execution selected\",\n )}\n </span>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => void handleBulkRetry()}\n >\n <Icon icon=\"mdi:refresh\" className=\"mr-1\" width={14} />\n {tr(\n \"fluidgrids.executions.executionsList.bulkRetryButton\",\n \"Retry selected\",\n )}\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleBulkAction(\"cancel\")}\n >\n <Icon icon=\"mdi:stop\" className=\"mr-1\" width={14} />\n {tr(\n \"fluidgrids.executions.executionsList.bulkCancelButton\",\n \"Cancel\",\n )}\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleBulkAction(\"pause\")}\n >\n <Icon icon=\"mdi:pause\" className=\"mr-1\" width={14} />\n {tr(\n \"fluidgrids.executions.executionsList.bulkPauseButton\",\n \"Pause\",\n )}\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleBulkAction(\"resume\")}\n >\n <Icon icon=\"mdi:play\" className=\"mr-1\" width={14} />\n {tr(\n \"fluidgrids.executions.executionsList.bulkResumeButton\",\n \"Resume\",\n )}\n </Button>\n </div>\n <button\n onClick={clearSelection}\n className=\"ml-auto text-sm text-text-secondary hover:text-text-primary\"\n >\n {tr(\n \"fluidgrids.executions.executionsList.clearSelection\",\n \"Clear selection\",\n )}\n </button>\n </div>\n )}\n\n {/* Error State */}\n {error && (\n <div className=\"mb-6 p-4 bg-[var(--color-status-error-bg-subtle)] border border-[var(--color-status-error-border)] rounded-lg\">\n <div className=\"flex items-center gap-2 text-[var(--color-status-error-text)]\">\n <Icon icon=\"mdi:alert-circle\" width={20} />\n <span className=\"font-medium\">\n {tr(\n \"fluidgrids.executions.executionsList.loadErrorTitle\",\n \"Error loading executions\",\n )}\n </span>\n </div>\n <p className=\"mt-1 text-sm text-[var(--color-status-error-text)]\">\n {error.message}\n </p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={refetch}\n className=\"mt-3 border-[var(--color-status-error-border)] text-[var(--color-status-error-text)] hover:bg-[var(--color-status-error-bg-subtle)]\"\n >\n {tr(\"fluidgrids.executions.executionsList.retryButton\", \"Retry\")}\n </Button>\n </div>\n )}\n\n {/* Executions View — switches between table, cards, and timeline */}\n {viewMode === \"table\" && (\n <ExecutionTable\n workflowNames={workflowNames}\n executions={executions}\n loading={loading}\n onRowClick={handleRowClick}\n onAction={handleAction}\n />\n )}\n {viewMode === \"cards\" && (\n <ExecutionCards\n workflowNames={workflowNames}\n executions={executions}\n loading={loading}\n onCardClick={handleRowClick}\n onAction={handleAction}\n />\n )}\n {viewMode === \"timeline\" && (\n <ExecutionTimeline\n executions={executions}\n loading={loading}\n onItemClick={handleRowClick}\n onAction={handleAction}\n />\n )}\n\n {/* Pagination */}\n <Pagination totalItems={total} />\n </div>\n );\n}\n"]}
|