@burdenoff/fluidgrids-fe-sdk 2026.1028.7 → 2026.1028.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ExecutionDetailPage-6T7XEVUA.js +20 -0
- package/dist/{ExecutionsListPage-BT3ADBXP.js → ExecutionsListPage-FABXLXWT.js} +7 -7
- package/dist/WorkflowBuilder-J5APOMKG.js +24 -0
- package/dist/{WorkflowsList-FZ4W64YZ.js → WorkflowsList-4HG3KBMR.js} +9 -7
- package/dist/{chunk-JNJDVC7V.js → chunk-2ZV6UJD6.js} +2 -2
- package/dist/{chunk-5YP3U7BU.js → chunk-3GOZYLTM.js} +3 -3
- package/dist/{chunk-NW6H7EN3.js → chunk-3ZBS2R6F.js} +42 -6
- package/dist/{chunk-QMBXEECD.js → chunk-4NRANBK7.js} +7 -7
- package/dist/{chunk-MKKBEVXO.js → chunk-6T5EBO7G.js} +1 -1
- package/dist/chunk-77NA7TPJ.js +38 -0
- package/dist/{chunk-QW24ZBSR.js → chunk-7OJDILWM.js} +1 -1
- package/dist/{chunk-6J4RR46J.js → chunk-7PBOU7JC.js} +2 -1
- package/dist/{chunk-U7WLROQT.js → chunk-B7UN6FGD.js} +3 -3
- package/dist/{chunk-LOZ6XNOX.js → chunk-DOPSPCO3.js} +26 -1
- package/dist/{chunk-RJ3YK6O7.js → chunk-EAF47LYM.js} +368 -103
- package/dist/{chunk-PBX42F4Q.js → chunk-GGINSR75.js} +6 -5
- package/dist/{chunk-DUXOFCPO.js → chunk-GQQV2L74.js} +1 -1
- package/dist/{chunk-ZB4BNTWR.js → chunk-KFCCLXZO.js} +4 -4
- package/dist/chunk-M62CJVTR.js +458 -0
- package/dist/{chunk-6NUHJPGJ.js → chunk-NVUJFHTQ.js} +1 -1
- package/dist/{chunk-27XYEFCK.js → chunk-OAFNNQN7.js} +1 -1
- package/dist/{chunk-IRKB2GGJ.js → chunk-OYFBLD5F.js} +3 -3
- package/dist/{chunk-XYZKIFXY.js → chunk-PXIWI7OB.js} +464 -31
- package/dist/{chunk-MUOJVRW7.js → chunk-SQ6VSXFI.js} +2 -2
- package/dist/{chunk-3ENHRYM5.js → chunk-TX6WIT3N.js} +1 -1
- package/dist/{chunk-T7TRJBCG.js → chunk-VFPIMW52.js} +3 -14
- package/dist/{chunk-2YDUYSB3.js → chunk-XAOMAVHB.js} +4 -4
- package/dist/{chunk-RKMTSOYH.js → chunk-YNOR2AGJ.js} +2 -2
- package/dist/{chunk-PYCKEQ4W.js → chunk-YQZ7HBOJ.js} +5 -3
- package/dist/{chunk-BBORXXGZ.js → chunk-ZFCXCSY4.js} +1 -1
- package/dist/executions.js +12 -12
- package/dist/history.js +4 -4
- package/dist/index.d.ts +1292 -55
- package/dist/index.js +36 -35
- package/dist/nodes.js +2 -2
- package/dist/observability.js +7 -6
- package/dist/settings.js +7 -6
- package/dist/templates.js +11 -10
- package/dist/workflow-builder.js +13 -12
- package/dist/workflows-list.js +9 -7
- package/package.json +1 -1
- package/dist/ExecutionDetailPage-A4JQGL34.js +0 -20
- package/dist/WorkflowBuilder-SQQI4VSF.js +0 -23
- package/dist/chunk-HDUCP6EO.js +0 -59
|
@@ -2,17 +2,18 @@ import { deepClone, applyTemplateInputs } from './chunk-GEMNVFPK.js';
|
|
|
2
2
|
import { Input } from './chunk-IEVSFCFS.js';
|
|
3
3
|
import { Dialog as Dialog$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, DialogFooter } from './chunk-YXMFRQYV.js';
|
|
4
4
|
import { Badge as Badge$1, Button } from './chunk-BQXVT32O.js';
|
|
5
|
-
import { QuotaExhaustedDialog } from './chunk-
|
|
6
|
-
import { EntityTagPicker, useWorkflowProposal, WorkflowProposalCard } from './chunk-
|
|
7
|
-
import { useRestoreWorkflowVersion, useWorkflowVersions, useActivateWorkflow, useDeleteWorkflow, useLazyWorkflowDefinition, useDeactivateWorkflow } from './chunk-
|
|
8
|
-
import { isAgentNodeType, AgentDefinitionSelectField } from './chunk-
|
|
5
|
+
import { QuotaExhaustedDialog, useWorkflowCodeExport, orderedExportFiles, fileBaseName, downloadWorkflowCodeExport, isLosslessReport, sortFidelityItems, isLossyFidelityItem, lineOfNode } from './chunk-M62CJVTR.js';
|
|
6
|
+
import { EntityTagPicker, useWorkflowProposal, WorkflowProposalCard } from './chunk-3ZBS2R6F.js';
|
|
7
|
+
import { useRestoreWorkflowVersion, useWorkflowVersions, useActivateWorkflow, useDeleteWorkflow, useLazyWorkflowDefinition, useDeactivateWorkflow } from './chunk-YQZ7HBOJ.js';
|
|
8
|
+
import { isAgentNodeType, AgentDefinitionSelectField } from './chunk-TX6WIT3N.js';
|
|
9
9
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
10
|
-
import {
|
|
10
|
+
import { useFluidGridsFlag, FLUIDGRIDS_FLAGS } from './chunk-77NA7TPJ.js';
|
|
11
|
+
import { NODE_CONFIGS, createConfiguredNode, resolveOutputHandles, resolveInputHandles, isNodeConfigsInitialized, useFlowStore, getNodeDetail, useSaveStatusStore, liveInternalOperations, resolveNodeOperation, readDisplayOptions, parseParameterValue, canAutosave, STICKY_NOTE_TYPE, isNodeTrigger, resolveUiSpec, RUNS_QUOTA_NAME, throwIfResultError, BILLING_PLANS_PATH, emitUpgradeClicked, FluidGridsContext, emitWorkflowCreated, emitTemplateUsed, ensureNodeConfigsLoaded, registerWorkflowNodeTypes, emitNodeInstalled, useNodeExecution, onNodeTypesUpdate, NODE_TYPES, getNodeMetadata, useIsValidConnection, refetchStoreNodes, AVAILABLE_NODES, useInsertNode, NODE_TYPE_DRAG_DATA_FORMAT, NODE_OPERATION_DRAG_DATA_FORMAT, fieldsFromValue, useFluidGridsAnalytics, useSaveWorkflow, workflowFingerprint, buildStickyNode, useNodeRegistryRevision, fieldsFromIO, isParamVisible, ConnectionSelector, structuredParameterType, nodeAccent, NodeTypeIcon, NODES_METADATA, useConnections, ConnectionFormDialog, SdkPermissionButton, FLUIDGRIDS_PERMISSIONS, saveIndicatorOf, inAppLeaveTarget, declaredOutputFields, subscribeWorkflowSaved, pathToExpression, ExpressionEditor, formatParameterValue, leaveNeedsConfirmation, buildOperationSeed, snapshotForSave, editStateOf, isImageIcon, NODES, synchronizeOperationUpdate, NodePropertyPanel, describeOperationError, openRunQuotaUpgradePrompt, isTriggerOperation, canRenderOperationPanel, resolveOperationName, AUTOSAVE_RETRY_DELAYS_MS, AUTOSAVE_DEBOUNCE_MS } from './chunk-NVUJFHTQ.js';
|
|
11
12
|
import { cn } from './chunk-JL7CASN5.js';
|
|
12
13
|
import { getGlobalStoreClient } from './chunk-PXIFUMLA.js';
|
|
13
14
|
import { getFluidGridsConfig } from './chunk-CY6KX4RG.js';
|
|
14
15
|
import { GetMyNodeInstallationsDocument, BrowseWorkflowTemplatesDocument, InstallWorkflowNodeDocument, InstallPurchasedNodeDocument, BrowseWorkflowNodesDocument, UninstallWorkflowNodeDocument, CreateStoreOrderDocument, GetNodeInstallableVersionsDocument, OrganizationPrivateNodesDocument, InstallOrganizationPrivateNodeDocument, UninstallOrganizationPrivateNodeDocument } from './chunk-JUUYPCFY.js';
|
|
15
|
-
import { WorkspaceRunsQuotaDocument, NodeSchemaIntrospectionDocument, useWorkflowPinnedDataQuery, usePinNodeDataMutation, useUnpinNodeDataMutation, useRunFromNodeEligibilityQuery, EventRegistrationsDocument, WorkflowGenerationTemplatesDocument, WorkflowEnvironmentsDocument, WorkflowPromotionRequestsDocument, DeployWorkflowVersionToDevDocument, RequestWorkflowPromotionDocument, ApproveWorkflowPromotionDocument, RejectWorkflowPromotionDocument, CancelWorkflowPromotionDocument, UpdateWorkflowEnvironmentPolicyDocument, WorkflowGitRepositoryDocument, WorkflowGitPushesDocument, WorkflowGitCommitsDocument, LinkWorkflowGitRepositoryDocument, UnlinkWorkflowGitRepositoryDocument, PushWorkflowToGitDocument, WorkflowGitDiffDocument, RestoreWorkflowFromGitDocument, WorkflowAuthoringDocument, PreviewScheduleDocument, WebhookTestListenerDocument, StopWebhookTestListenerDocument, ListenForWebhookTestEventDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument } from './chunk-
|
|
16
|
+
import { WorkspaceRunsQuotaDocument, NodeSchemaIntrospectionDocument, useWorkflowPinnedDataQuery, usePinNodeDataMutation, useUnpinNodeDataMutation, useRunFromNodeEligibilityQuery, EventRegistrationsDocument, WorkflowGenerationTemplatesDocument, WorkflowEnvironmentsDocument, WorkflowPromotionRequestsDocument, DeployWorkflowVersionToDevDocument, RequestWorkflowPromotionDocument, ApproveWorkflowPromotionDocument, RejectWorkflowPromotionDocument, CancelWorkflowPromotionDocument, UpdateWorkflowEnvironmentPolicyDocument, WorkflowGitRepositoryDocument, WorkflowGitPushesDocument, WorkflowGitCommitsDocument, LinkWorkflowGitRepositoryDocument, UnlinkWorkflowGitRepositoryDocument, PushWorkflowToGitDocument, WorkflowGitDiffDocument, RestoreWorkflowFromGitDocument, WorkflowAuthoringDocument, PreviewScheduleDocument, WebhookTestListenerDocument, StopWebhookTestListenerDocument, ListenForWebhookTestEventDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument } from './chunk-7PBOU7JC.js';
|
|
16
17
|
import { useTr } from './chunk-UULVIT25.js';
|
|
17
18
|
import { getFluidGridsClient, waitForFluidGridsClient, getFluidGridsClientSafe } from './chunk-NTWG3CJX.js';
|
|
18
19
|
import { __export } from './chunk-62GWEYJ5.js';
|
|
@@ -26685,8 +26686,8 @@ var reducer = (state, action) => {
|
|
|
26685
26686
|
if (toastId) {
|
|
26686
26687
|
addToRemoveQueue(toastId);
|
|
26687
26688
|
} else {
|
|
26688
|
-
state.toasts.forEach((
|
|
26689
|
-
addToRemoveQueue(
|
|
26689
|
+
state.toasts.forEach((toast17) => {
|
|
26690
|
+
addToRemoveQueue(toast17.id);
|
|
26690
26691
|
});
|
|
26691
26692
|
}
|
|
26692
26693
|
return {
|
|
@@ -28062,7 +28063,7 @@ function VisualMapperContent({
|
|
|
28062
28063
|
mapping,
|
|
28063
28064
|
onMappingChange
|
|
28064
28065
|
}) {
|
|
28065
|
-
const { toast:
|
|
28066
|
+
const { toast: toast17 } = useToast();
|
|
28066
28067
|
const tr = useTr();
|
|
28067
28068
|
const reactFlowWrapper = useRef(null);
|
|
28068
28069
|
const [selectedSourceNode, setSelectedSourceNode] = useState(null);
|
|
@@ -28082,7 +28083,7 @@ function VisualMapperContent({
|
|
|
28082
28083
|
targetOperation
|
|
28083
28084
|
);
|
|
28084
28085
|
if (generatedNodes.length === 0) {
|
|
28085
|
-
|
|
28086
|
+
toast17({
|
|
28086
28087
|
title: tr(
|
|
28087
28088
|
"fluidgrids.builder.visualMapper.noFieldsFoundTitle",
|
|
28088
28089
|
"No fields found"
|
|
@@ -28108,7 +28109,7 @@ function VisualMapperContent({
|
|
|
28108
28109
|
targetNode,
|
|
28109
28110
|
targetOperation,
|
|
28110
28111
|
setNodes,
|
|
28111
|
-
|
|
28112
|
+
toast17,
|
|
28112
28113
|
tr
|
|
28113
28114
|
]);
|
|
28114
28115
|
useEffect(() => {
|
|
@@ -28215,7 +28216,7 @@ function VisualMapperContent({
|
|
|
28215
28216
|
}
|
|
28216
28217
|
onMappingChange(updatedMapping);
|
|
28217
28218
|
if (isCompatible) {
|
|
28218
|
-
|
|
28219
|
+
toast17({
|
|
28219
28220
|
title: tr(
|
|
28220
28221
|
"fluidgrids.builder.visualMapper.mappingCreatedTitle",
|
|
28221
28222
|
"Mapping created"
|
|
@@ -28223,7 +28224,7 @@ function VisualMapperContent({
|
|
|
28223
28224
|
description: `Mapped ${sourcePath} (${sourceType}) to ${targetPath} (${targetType})`
|
|
28224
28225
|
});
|
|
28225
28226
|
} else {
|
|
28226
|
-
|
|
28227
|
+
toast17({
|
|
28227
28228
|
title: tr(
|
|
28228
28229
|
"fluidgrids.builder.visualMapper.typeMismatchTitle",
|
|
28229
28230
|
"Type mismatch warning"
|
|
@@ -28233,7 +28234,7 @@ function VisualMapperContent({
|
|
|
28233
28234
|
});
|
|
28234
28235
|
}
|
|
28235
28236
|
} else {
|
|
28236
|
-
|
|
28237
|
+
toast17({
|
|
28237
28238
|
title: tr(
|
|
28238
28239
|
"fluidgrids.builder.visualMapper.invalidMappingTitle",
|
|
28239
28240
|
"Invalid mapping"
|
|
@@ -28246,7 +28247,7 @@ function VisualMapperContent({
|
|
|
28246
28247
|
});
|
|
28247
28248
|
}
|
|
28248
28249
|
},
|
|
28249
|
-
[nodes, mapping, onMappingChange,
|
|
28250
|
+
[nodes, mapping, onMappingChange, toast17, tr, setEdges]
|
|
28250
28251
|
);
|
|
28251
28252
|
const onEdgeDelete = useCallback(
|
|
28252
28253
|
(edge) => {
|
|
@@ -28303,7 +28304,7 @@ function VisualMapperContent({
|
|
|
28303
28304
|
const handleSaveMappingDialog = (expression, targetFieldName) => {
|
|
28304
28305
|
const targetPath = targetFieldName || selectedTargetNode?.data?.path;
|
|
28305
28306
|
if (!targetPath) {
|
|
28306
|
-
|
|
28307
|
+
toast17({
|
|
28307
28308
|
title: tr(
|
|
28308
28309
|
"fluidgrids.builder.visualMapper.noTargetFieldTitle",
|
|
28309
28310
|
"No target field specified"
|
|
@@ -28335,7 +28336,7 @@ function VisualMapperContent({
|
|
|
28335
28336
|
}
|
|
28336
28337
|
onMappingChange(updatedMapping);
|
|
28337
28338
|
const mappingType = detectMappingType(expression);
|
|
28338
|
-
|
|
28339
|
+
toast17({
|
|
28339
28340
|
title: `${mappingType.charAt(0).toUpperCase() + mappingType.slice(1)} mapping created`,
|
|
28340
28341
|
description: `${tr("fluidgrids.builder.visualMapper.appliedMappingTo", "Applied mapping to")} ${targetPath}`
|
|
28341
28342
|
});
|
|
@@ -28634,7 +28635,7 @@ function MappingEditor({
|
|
|
28634
28635
|
setEdges,
|
|
28635
28636
|
edgeId
|
|
28636
28637
|
}) {
|
|
28637
|
-
const { toast:
|
|
28638
|
+
const { toast: toast17 } = useToast();
|
|
28638
28639
|
const tr = useTr();
|
|
28639
28640
|
const [mappingJson, setMappingJson] = useState({});
|
|
28640
28641
|
const [jsonDataString, setJsonDataString] = useState(
|
|
@@ -28758,7 +28759,7 @@ function MappingEditor({
|
|
|
28758
28759
|
const handleSaveMapping = () => {
|
|
28759
28760
|
try {
|
|
28760
28761
|
checkJsonValidity();
|
|
28761
|
-
|
|
28762
|
+
toast17({
|
|
28762
28763
|
title: tr(
|
|
28763
28764
|
"fluidgrids.builder.mappingEditor.mappingSavedTitle",
|
|
28764
28765
|
"Mapping saved"
|
|
@@ -28769,7 +28770,7 @@ function MappingEditor({
|
|
|
28769
28770
|
)
|
|
28770
28771
|
});
|
|
28771
28772
|
} catch (error62) {
|
|
28772
|
-
|
|
28773
|
+
toast17({
|
|
28773
28774
|
title: tr(
|
|
28774
28775
|
"fluidgrids.builder.mappingEditor.errorSavingTitle",
|
|
28775
28776
|
"Error saving mapping"
|
|
@@ -28788,7 +28789,7 @@ function MappingEditor({
|
|
|
28788
28789
|
const parsedData = checkJsonValidity();
|
|
28789
28790
|
const result = await applyMapping(parsedData, sampleInput);
|
|
28790
28791
|
setPreviewOutput(result);
|
|
28791
|
-
|
|
28792
|
+
toast17({
|
|
28792
28793
|
title: tr(
|
|
28793
28794
|
"fluidgrids.builder.mappingEditor.mappingTestedTitle",
|
|
28794
28795
|
"Mapping tested"
|
|
@@ -28800,7 +28801,7 @@ function MappingEditor({
|
|
|
28800
28801
|
});
|
|
28801
28802
|
} catch (error62) {
|
|
28802
28803
|
console.error("Test mapping error:", error62);
|
|
28803
|
-
|
|
28804
|
+
toast17({
|
|
28804
28805
|
title: tr(
|
|
28805
28806
|
"fluidgrids.builder.mappingEditor.mappingTestFailedTitle",
|
|
28806
28807
|
"Mapping test failed"
|
|
@@ -35899,6 +35900,10 @@ function loopReturnStatus(nodeId2, edges, loopHandle = "loop") {
|
|
|
35899
35900
|
if (!returns) return "missing-return";
|
|
35900
35901
|
return exits ? "conditional-exit" : "connected";
|
|
35901
35902
|
}
|
|
35903
|
+
function languageExtension(language) {
|
|
35904
|
+
if (language === "python") return python();
|
|
35905
|
+
return javascript({ typescript: language === "typescript" });
|
|
35906
|
+
}
|
|
35902
35907
|
function normalizeCodeLanguage(value) {
|
|
35903
35908
|
return typeof value === "string" && value.toLowerCase().startsWith("py") ? "python" : "javascript";
|
|
35904
35909
|
}
|
|
@@ -35922,13 +35927,16 @@ function CodeEditorField({
|
|
|
35922
35927
|
placeholder,
|
|
35923
35928
|
label,
|
|
35924
35929
|
onChange,
|
|
35930
|
+
readOnly = false,
|
|
35931
|
+
minHeight = "180px",
|
|
35932
|
+
maxHeight = "420px",
|
|
35925
35933
|
className,
|
|
35926
35934
|
"data-testid": testId
|
|
35927
35935
|
}) {
|
|
35928
35936
|
const dark = useIsDarkTheme();
|
|
35929
35937
|
const extensions = useMemo(
|
|
35930
35938
|
() => [
|
|
35931
|
-
language
|
|
35939
|
+
languageExtension(language),
|
|
35932
35940
|
// CodeMirror's contenteditable is the control assistive tech focuses; name it.
|
|
35933
35941
|
...label ? [EditorView.contentAttributes.of({ "aria-label": label })] : []
|
|
35934
35942
|
],
|
|
@@ -35948,20 +35956,22 @@ function CodeEditorField({
|
|
|
35948
35956
|
CodeMirror,
|
|
35949
35957
|
{
|
|
35950
35958
|
value,
|
|
35951
|
-
onChange,
|
|
35959
|
+
onChange: readOnly ? void 0 : onChange,
|
|
35952
35960
|
extensions,
|
|
35953
35961
|
theme: dark ? "dark" : "light",
|
|
35954
35962
|
placeholder,
|
|
35955
|
-
minHeight
|
|
35956
|
-
maxHeight
|
|
35963
|
+
minHeight,
|
|
35964
|
+
maxHeight,
|
|
35965
|
+
editable: !readOnly,
|
|
35966
|
+
readOnly,
|
|
35957
35967
|
basicSetup: {
|
|
35958
35968
|
lineNumbers: true,
|
|
35959
35969
|
foldGutter: true,
|
|
35960
|
-
highlightActiveLine:
|
|
35961
|
-
autocompletion:
|
|
35970
|
+
highlightActiveLine: !readOnly,
|
|
35971
|
+
autocompletion: !readOnly,
|
|
35962
35972
|
bracketMatching: true,
|
|
35963
|
-
closeBrackets:
|
|
35964
|
-
indentOnInput:
|
|
35973
|
+
closeBrackets: !readOnly,
|
|
35974
|
+
indentOnInput: !readOnly
|
|
35965
35975
|
}
|
|
35966
35976
|
}
|
|
35967
35977
|
)
|
|
@@ -45104,6 +45114,427 @@ function AiDraftPanel({
|
|
|
45104
45114
|
] }) })
|
|
45105
45115
|
] });
|
|
45106
45116
|
}
|
|
45117
|
+
function FidelityLevelBadge({
|
|
45118
|
+
fidelity
|
|
45119
|
+
}) {
|
|
45120
|
+
const tr = useTr();
|
|
45121
|
+
const lossless = isLosslessReport(fidelity);
|
|
45122
|
+
return /* @__PURE__ */ jsxs(
|
|
45123
|
+
Badge,
|
|
45124
|
+
{
|
|
45125
|
+
variant: lossless ? "secondary" : "destructive",
|
|
45126
|
+
"data-testid": "fluidgrids-code-fidelity-level",
|
|
45127
|
+
"data-level": lossless ? "lossless" : "lossy",
|
|
45128
|
+
className: "gap-1",
|
|
45129
|
+
children: [
|
|
45130
|
+
/* @__PURE__ */ jsx(
|
|
45131
|
+
Icon,
|
|
45132
|
+
{
|
|
45133
|
+
icon: lossless ? "mynaui:check-circle" : "mynaui:danger-triangle",
|
|
45134
|
+
className: "size-3.5"
|
|
45135
|
+
}
|
|
45136
|
+
),
|
|
45137
|
+
lossless ? tr("fluidgrids.builder.codeView.lossless", "Lossless") : tr("fluidgrids.builder.codeView.lossy", "Lossy")
|
|
45138
|
+
]
|
|
45139
|
+
}
|
|
45140
|
+
);
|
|
45141
|
+
}
|
|
45142
|
+
function FidelityReportList({
|
|
45143
|
+
fidelity,
|
|
45144
|
+
source,
|
|
45145
|
+
hasNode,
|
|
45146
|
+
onShowNode
|
|
45147
|
+
}) {
|
|
45148
|
+
const tr = useTr();
|
|
45149
|
+
const items = sortFidelityItems(fidelity.items);
|
|
45150
|
+
return /* @__PURE__ */ jsxs(
|
|
45151
|
+
"section",
|
|
45152
|
+
{
|
|
45153
|
+
"aria-labelledby": "fg-code-fidelity",
|
|
45154
|
+
"data-testid": "fluidgrids-code-fidelity",
|
|
45155
|
+
className: "space-y-2",
|
|
45156
|
+
children: [
|
|
45157
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
45158
|
+
/* @__PURE__ */ jsx(
|
|
45159
|
+
"h3",
|
|
45160
|
+
{
|
|
45161
|
+
id: "fg-code-fidelity",
|
|
45162
|
+
className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground",
|
|
45163
|
+
children: tr("fluidgrids.builder.codeView.fidelityTitle", "Fidelity")
|
|
45164
|
+
}
|
|
45165
|
+
),
|
|
45166
|
+
/* @__PURE__ */ jsx(FidelityLevelBadge, { fidelity })
|
|
45167
|
+
] }),
|
|
45168
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: isLosslessReport(fidelity) ? tr(
|
|
45169
|
+
"fluidgrids.builder.codeView.losslessHint",
|
|
45170
|
+
"Lowering this code gives back exactly this workflow."
|
|
45171
|
+
) : tr(
|
|
45172
|
+
"fluidgrids.builder.codeView.lossyHint",
|
|
45173
|
+
"Lowering this code does not give back exactly this workflow. The items marked lossy say what differs."
|
|
45174
|
+
) }),
|
|
45175
|
+
items.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: tr(
|
|
45176
|
+
"fluidgrids.builder.codeView.noFidelityItems",
|
|
45177
|
+
"Nothing to report."
|
|
45178
|
+
) }) : /* @__PURE__ */ jsx("ul", { className: "space-y-1.5", children: items.map((item, index) => {
|
|
45179
|
+
const lossy = isLossyFidelityItem(item);
|
|
45180
|
+
const nodeId2 = item.nodeId ?? null;
|
|
45181
|
+
const line = nodeId2 && source !== void 0 ? lineOfNode(source, nodeId2) : null;
|
|
45182
|
+
return /* @__PURE__ */ jsxs(
|
|
45183
|
+
"li",
|
|
45184
|
+
{
|
|
45185
|
+
"data-testid": "fluidgrids-code-fidelity-item",
|
|
45186
|
+
"data-kind": item.kind,
|
|
45187
|
+
"data-lossy": lossy ? "true" : "false",
|
|
45188
|
+
className: cn$1(
|
|
45189
|
+
"rounded-md border p-2 text-xs",
|
|
45190
|
+
lossy ? "border-[var(--color-status-error-border)] bg-[var(--color-status-error-bg)]" : "border-border bg-muted/30"
|
|
45191
|
+
),
|
|
45192
|
+
children: [
|
|
45193
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
45194
|
+
/* @__PURE__ */ jsx(
|
|
45195
|
+
Badge,
|
|
45196
|
+
{
|
|
45197
|
+
variant: lossy ? "destructive" : "outline",
|
|
45198
|
+
className: "text-[10px]",
|
|
45199
|
+
children: lossy ? tr("fluidgrids.builder.codeView.itemLossy", "Lossy") : tr("fluidgrids.builder.codeView.itemLossless", "Kept")
|
|
45200
|
+
}
|
|
45201
|
+
),
|
|
45202
|
+
/* @__PURE__ */ jsx("code", { className: "font-mono text-[11px] text-card-foreground", children: item.kind }),
|
|
45203
|
+
line !== null && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: tr(
|
|
45204
|
+
"fluidgrids.builder.codeView.itemLine",
|
|
45205
|
+
"line {{line}}",
|
|
45206
|
+
{
|
|
45207
|
+
line: String(line)
|
|
45208
|
+
}
|
|
45209
|
+
) })
|
|
45210
|
+
] }),
|
|
45211
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 break-words text-card-foreground", children: item.detail }),
|
|
45212
|
+
item.path && /* @__PURE__ */ jsx("p", { className: "mt-0.5 break-all font-mono text-[11px] text-muted-foreground", children: item.path }),
|
|
45213
|
+
nodeId2 && /* @__PURE__ */ jsxs(
|
|
45214
|
+
Button$1,
|
|
45215
|
+
{
|
|
45216
|
+
variant: "link",
|
|
45217
|
+
size: "sm",
|
|
45218
|
+
className: "mt-1 h-auto gap-1 p-0 text-xs",
|
|
45219
|
+
disabled: !hasNode(nodeId2),
|
|
45220
|
+
onClick: () => onShowNode(nodeId2),
|
|
45221
|
+
"data-testid": "fluidgrids-code-fidelity-node",
|
|
45222
|
+
children: [
|
|
45223
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mynaui:location", className: "size-3.5" }),
|
|
45224
|
+
tr(
|
|
45225
|
+
"fluidgrids.builder.codeView.showNode",
|
|
45226
|
+
"Show node {{nodeId}}",
|
|
45227
|
+
{ nodeId: nodeId2 }
|
|
45228
|
+
)
|
|
45229
|
+
]
|
|
45230
|
+
}
|
|
45231
|
+
)
|
|
45232
|
+
]
|
|
45233
|
+
},
|
|
45234
|
+
`${item.kind}-${nodeId2 ?? ""}-${item.path ?? ""}-${index}`
|
|
45235
|
+
);
|
|
45236
|
+
}) })
|
|
45237
|
+
]
|
|
45238
|
+
}
|
|
45239
|
+
);
|
|
45240
|
+
}
|
|
45241
|
+
function editorLanguageOf(path) {
|
|
45242
|
+
if (path.endsWith(".py")) return "python";
|
|
45243
|
+
if (path.endsWith(".ts")) return "typescript";
|
|
45244
|
+
return "javascript";
|
|
45245
|
+
}
|
|
45246
|
+
function isCodeViewFormat(value) {
|
|
45247
|
+
return value === "TYPESCRIPT" /* Typescript */ || value === "PYTHON" /* Python */;
|
|
45248
|
+
}
|
|
45249
|
+
function CodeViewPanel({
|
|
45250
|
+
className,
|
|
45251
|
+
compact = false
|
|
45252
|
+
}) {
|
|
45253
|
+
const enabled = useFluidGridsFlag(FLUIDGRIDS_FLAGS.codeFirst);
|
|
45254
|
+
if (!enabled) return null;
|
|
45255
|
+
return /* @__PURE__ */ jsx(CodeViewSheet, { className, compact });
|
|
45256
|
+
}
|
|
45257
|
+
function CodeViewSheet({
|
|
45258
|
+
className,
|
|
45259
|
+
compact
|
|
45260
|
+
}) {
|
|
45261
|
+
const tr = useTr();
|
|
45262
|
+
const params = useParams();
|
|
45263
|
+
const workflowKey = params?.id ?? "";
|
|
45264
|
+
const version2 = params?.version ?? null;
|
|
45265
|
+
const [open2, setOpen] = useState(false);
|
|
45266
|
+
const [format, setFormat2] = useState(
|
|
45267
|
+
"TYPESCRIPT" /* Typescript */
|
|
45268
|
+
);
|
|
45269
|
+
const [selectedPath, setSelectedPath] = useState(null);
|
|
45270
|
+
const [downloading, setDownloading] = useState(false);
|
|
45271
|
+
const { data, loading, error: error62, refetch } = useWorkflowCodeExport(
|
|
45272
|
+
{ workflowKey, version: version2, format },
|
|
45273
|
+
open2 && !!workflowKey
|
|
45274
|
+
);
|
|
45275
|
+
const dirty = useSaveStatusStore((s) => s.dirty);
|
|
45276
|
+
const lastSavedAt = useSaveStatusStore((s) => s.lastSavedAt);
|
|
45277
|
+
const seenSave = useRef(lastSavedAt);
|
|
45278
|
+
useEffect(() => {
|
|
45279
|
+
if (seenSave.current === lastSavedAt) return;
|
|
45280
|
+
seenSave.current = lastSavedAt;
|
|
45281
|
+
if (open2) void refetch();
|
|
45282
|
+
}, [lastSavedAt, open2, refetch]);
|
|
45283
|
+
const files = useMemo(
|
|
45284
|
+
() => data ? orderedExportFiles(data.files, format) : [],
|
|
45285
|
+
[data, format]
|
|
45286
|
+
);
|
|
45287
|
+
const shown = files.find((file2) => file2.path === selectedPath) ?? files[0] ?? null;
|
|
45288
|
+
const shownContent = shown?.content ?? "";
|
|
45289
|
+
useEffect(() => setSelectedPath(null), [format]);
|
|
45290
|
+
const { fitView } = useReactFlow();
|
|
45291
|
+
const nodes = useFlowStore((s) => s.workflow.nodes);
|
|
45292
|
+
const onNodesChange = useFlowStore((s) => s.actions.nodes.onNodesChange);
|
|
45293
|
+
const showNodePropertiesOf = useFlowStore(
|
|
45294
|
+
(s) => s.actions.sidebar.showNodePropertiesOf
|
|
45295
|
+
);
|
|
45296
|
+
const nodeIds = useMemo(() => new Set(nodes.map((n) => n.id)), [nodes]);
|
|
45297
|
+
const hasNode = useCallback((id) => nodeIds.has(id), [nodeIds]);
|
|
45298
|
+
const showNode = useCallback(
|
|
45299
|
+
(id) => {
|
|
45300
|
+
const node2 = nodes.find((n) => n.id === id);
|
|
45301
|
+
if (!node2) return;
|
|
45302
|
+
setOpen(false);
|
|
45303
|
+
onNodesChange(
|
|
45304
|
+
nodes.map((n) => ({ type: "select", id: n.id, selected: n.id === id }))
|
|
45305
|
+
);
|
|
45306
|
+
if (node2.type)
|
|
45307
|
+
showNodePropertiesOf({ id, type: node2.type });
|
|
45308
|
+
setTimeout(
|
|
45309
|
+
() => void fitView({
|
|
45310
|
+
nodes: [{ id }],
|
|
45311
|
+
duration: 300,
|
|
45312
|
+
padding: 0.4,
|
|
45313
|
+
maxZoom: 1.2
|
|
45314
|
+
}),
|
|
45315
|
+
50
|
|
45316
|
+
);
|
|
45317
|
+
},
|
|
45318
|
+
[nodes, onNodesChange, showNodePropertiesOf, fitView]
|
|
45319
|
+
);
|
|
45320
|
+
const copy = async () => {
|
|
45321
|
+
if (!shown) return;
|
|
45322
|
+
try {
|
|
45323
|
+
await navigator.clipboard.writeText(shownContent);
|
|
45324
|
+
toast.success(tr("fluidgrids.builder.codeView.copied", "Code copied"));
|
|
45325
|
+
} catch (err) {
|
|
45326
|
+
toast.error(tr("fluidgrids.builder.codeView.copyError", "Copy failed"), {
|
|
45327
|
+
description: describeOperationError(err)
|
|
45328
|
+
});
|
|
45329
|
+
}
|
|
45330
|
+
};
|
|
45331
|
+
const download = async () => {
|
|
45332
|
+
if (!data) return;
|
|
45333
|
+
setDownloading(true);
|
|
45334
|
+
try {
|
|
45335
|
+
await downloadWorkflowCodeExport(data, format);
|
|
45336
|
+
} catch (err) {
|
|
45337
|
+
toast.error(
|
|
45338
|
+
tr("fluidgrids.builder.codeView.downloadError", "Download failed"),
|
|
45339
|
+
{ description: describeOperationError(err) }
|
|
45340
|
+
);
|
|
45341
|
+
} finally {
|
|
45342
|
+
setDownloading(false);
|
|
45343
|
+
}
|
|
45344
|
+
};
|
|
45345
|
+
const label = tr("fluidgrids.builder.codeView.triggerButton", "Code");
|
|
45346
|
+
return /* @__PURE__ */ jsxs(Sheet, { open: open2, onOpenChange: setOpen, children: [
|
|
45347
|
+
/* @__PURE__ */ jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
45348
|
+
Button$1,
|
|
45349
|
+
{
|
|
45350
|
+
"data-tour": "fluidgrids-builder-code",
|
|
45351
|
+
variant: "outline",
|
|
45352
|
+
size: compact ? "icon" : "sm",
|
|
45353
|
+
className: cn$1(!compact && "flex gap-1", className),
|
|
45354
|
+
"aria-label": label,
|
|
45355
|
+
title: compact ? label : void 0,
|
|
45356
|
+
disabled: !workflowKey,
|
|
45357
|
+
children: [
|
|
45358
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mynaui:code", className: "size-4" }),
|
|
45359
|
+
!compact && label
|
|
45360
|
+
]
|
|
45361
|
+
}
|
|
45362
|
+
) }),
|
|
45363
|
+
/* @__PURE__ */ jsxs(
|
|
45364
|
+
SheetContent,
|
|
45365
|
+
{
|
|
45366
|
+
side: "right",
|
|
45367
|
+
className: "flex w-[420px] flex-col overflow-y-auto sm:w-[640px] sm:max-w-[640px]",
|
|
45368
|
+
"data-testid": "fluidgrids-code-panel",
|
|
45369
|
+
children: [
|
|
45370
|
+
/* @__PURE__ */ jsxs(SheetHeader, { children: [
|
|
45371
|
+
/* @__PURE__ */ jsxs(SheetTitle, { className: "flex items-center gap-2", children: [
|
|
45372
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mynaui:code", className: "size-5" }),
|
|
45373
|
+
tr("fluidgrids.builder.codeView.title", "Code")
|
|
45374
|
+
] }),
|
|
45375
|
+
/* @__PURE__ */ jsx(SheetDescription, { children: tr(
|
|
45376
|
+
"fluidgrids.builder.codeView.description",
|
|
45377
|
+
"This version as code, read-only. It is what the FluidGrids CLI pulls; edit the canvas or push code with the CLI to change it."
|
|
45378
|
+
) })
|
|
45379
|
+
] }),
|
|
45380
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-4 flex flex-1 flex-col gap-4 pb-6", children: [
|
|
45381
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
45382
|
+
/* @__PURE__ */ jsx(
|
|
45383
|
+
Tabs,
|
|
45384
|
+
{
|
|
45385
|
+
value: format,
|
|
45386
|
+
onValueChange: (value) => {
|
|
45387
|
+
if (isCodeViewFormat(value)) setFormat2(value);
|
|
45388
|
+
},
|
|
45389
|
+
children: /* @__PURE__ */ jsxs(TabsList, { children: [
|
|
45390
|
+
/* @__PURE__ */ jsx(
|
|
45391
|
+
TabsTrigger,
|
|
45392
|
+
{
|
|
45393
|
+
value: "TYPESCRIPT" /* Typescript */,
|
|
45394
|
+
"data-testid": "fluidgrids-code-tab-typescript",
|
|
45395
|
+
children: tr("fluidgrids.builder.codeView.typescript", "TypeScript")
|
|
45396
|
+
}
|
|
45397
|
+
),
|
|
45398
|
+
/* @__PURE__ */ jsx(
|
|
45399
|
+
TabsTrigger,
|
|
45400
|
+
{
|
|
45401
|
+
value: "PYTHON" /* Python */,
|
|
45402
|
+
"data-testid": "fluidgrids-code-tab-python",
|
|
45403
|
+
children: tr("fluidgrids.builder.codeView.python", "Python")
|
|
45404
|
+
}
|
|
45405
|
+
)
|
|
45406
|
+
] })
|
|
45407
|
+
}
|
|
45408
|
+
),
|
|
45409
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
45410
|
+
/* @__PURE__ */ jsxs(
|
|
45411
|
+
Button$1,
|
|
45412
|
+
{
|
|
45413
|
+
variant: "outline",
|
|
45414
|
+
size: "sm",
|
|
45415
|
+
className: "h-8 gap-1 text-xs",
|
|
45416
|
+
onClick: () => void copy(),
|
|
45417
|
+
disabled: !shown || loading,
|
|
45418
|
+
children: [
|
|
45419
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mynaui:copy", className: "size-3.5" }),
|
|
45420
|
+
tr("fluidgrids.builder.codeView.copy", "Copy")
|
|
45421
|
+
]
|
|
45422
|
+
}
|
|
45423
|
+
),
|
|
45424
|
+
/* @__PURE__ */ jsxs(
|
|
45425
|
+
Button$1,
|
|
45426
|
+
{
|
|
45427
|
+
variant: "outline",
|
|
45428
|
+
size: "sm",
|
|
45429
|
+
className: "h-8 gap-1 text-xs",
|
|
45430
|
+
onClick: () => void download(),
|
|
45431
|
+
disabled: !data || loading || downloading,
|
|
45432
|
+
children: [
|
|
45433
|
+
/* @__PURE__ */ jsx(Icon, { icon: "mynaui:download", className: "size-3.5" }),
|
|
45434
|
+
tr("fluidgrids.builder.codeView.download", "Download")
|
|
45435
|
+
]
|
|
45436
|
+
}
|
|
45437
|
+
)
|
|
45438
|
+
] })
|
|
45439
|
+
] }),
|
|
45440
|
+
dirty && /* @__PURE__ */ jsx(
|
|
45441
|
+
"p",
|
|
45442
|
+
{
|
|
45443
|
+
role: "status",
|
|
45444
|
+
className: "rounded-md border border-[var(--color-status-warning-border)] bg-[var(--color-status-warning-bg)] px-3 py-2 text-xs text-[var(--color-status-warning-text)]",
|
|
45445
|
+
children: tr(
|
|
45446
|
+
"fluidgrids.builder.codeView.unsavedNotice",
|
|
45447
|
+
"You have unsaved changes. The code shows the saved version and updates after the next save."
|
|
45448
|
+
)
|
|
45449
|
+
}
|
|
45450
|
+
),
|
|
45451
|
+
loading && !data ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center py-8 text-sm text-muted-foreground", children: [
|
|
45452
|
+
/* @__PURE__ */ jsx(
|
|
45453
|
+
Icon,
|
|
45454
|
+
{
|
|
45455
|
+
icon: "mynaui:spinner",
|
|
45456
|
+
className: "mr-2 size-4 animate-spin"
|
|
45457
|
+
}
|
|
45458
|
+
),
|
|
45459
|
+
tr(
|
|
45460
|
+
"fluidgrids.builder.codeView.loading",
|
|
45461
|
+
"Lifting the workflow\u2026"
|
|
45462
|
+
)
|
|
45463
|
+
] }) : error62 ? /* @__PURE__ */ jsxs("div", { className: "py-6 text-sm", role: "alert", children: [
|
|
45464
|
+
/* @__PURE__ */ jsx("p", { className: "text-[var(--color-status-error-text)]", children: error62 }),
|
|
45465
|
+
/* @__PURE__ */ jsx(
|
|
45466
|
+
Button$1,
|
|
45467
|
+
{
|
|
45468
|
+
variant: "outline",
|
|
45469
|
+
size: "sm",
|
|
45470
|
+
className: "mt-3",
|
|
45471
|
+
onClick: () => void refetch(),
|
|
45472
|
+
children: tr("fluidgrids.builder.codeView.retry", "Retry")
|
|
45473
|
+
}
|
|
45474
|
+
)
|
|
45475
|
+
] }) : data && shown ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
45476
|
+
files.length > 1 && /* @__PURE__ */ jsx(
|
|
45477
|
+
"div",
|
|
45478
|
+
{
|
|
45479
|
+
className: "flex flex-wrap gap-1",
|
|
45480
|
+
role: "group",
|
|
45481
|
+
"aria-label": tr("fluidgrids.builder.codeView.files", "Files"),
|
|
45482
|
+
children: files.map((file2) => /* @__PURE__ */ jsx(
|
|
45483
|
+
Button$1,
|
|
45484
|
+
{
|
|
45485
|
+
variant: file2 === shown ? "secondary" : "ghost",
|
|
45486
|
+
size: "sm",
|
|
45487
|
+
className: "h-7 font-mono text-[11px]",
|
|
45488
|
+
title: file2.path,
|
|
45489
|
+
"aria-pressed": file2 === shown,
|
|
45490
|
+
onClick: () => setSelectedPath(file2.path),
|
|
45491
|
+
children: fileBaseName(file2.path)
|
|
45492
|
+
},
|
|
45493
|
+
file2.path
|
|
45494
|
+
))
|
|
45495
|
+
}
|
|
45496
|
+
),
|
|
45497
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 text-[11px] text-muted-foreground", children: [
|
|
45498
|
+
/* @__PURE__ */ jsx("span", { className: "truncate font-mono", title: shown.path, children: shown.path }),
|
|
45499
|
+
/* @__PURE__ */ jsxs("span", { className: "flex shrink-0 items-center gap-2", children: [
|
|
45500
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono", title: data.irHash, children: data.irHash.slice(0, 19) }),
|
|
45501
|
+
/* @__PURE__ */ jsx(FidelityLevelBadge, { fidelity: data.fidelity })
|
|
45502
|
+
] })
|
|
45503
|
+
] }),
|
|
45504
|
+
/* @__PURE__ */ jsx(
|
|
45505
|
+
CodeEditorField,
|
|
45506
|
+
{
|
|
45507
|
+
value: shownContent,
|
|
45508
|
+
language: editorLanguageOf(shown.path),
|
|
45509
|
+
label: tr(
|
|
45510
|
+
"fluidgrids.builder.codeView.editorLabel",
|
|
45511
|
+
"Workflow code (read-only)"
|
|
45512
|
+
),
|
|
45513
|
+
readOnly: true,
|
|
45514
|
+
minHeight: "260px",
|
|
45515
|
+
maxHeight: "55vh",
|
|
45516
|
+
"data-testid": "fluidgrids-code-editor"
|
|
45517
|
+
}
|
|
45518
|
+
),
|
|
45519
|
+
/* @__PURE__ */ jsx(
|
|
45520
|
+
FidelityReportList,
|
|
45521
|
+
{
|
|
45522
|
+
fidelity: data.fidelity,
|
|
45523
|
+
source: shownContent,
|
|
45524
|
+
hasNode,
|
|
45525
|
+
onShowNode: showNode
|
|
45526
|
+
}
|
|
45527
|
+
)
|
|
45528
|
+
] }) : /* @__PURE__ */ jsx("p", { className: "py-6 text-sm text-muted-foreground", children: tr(
|
|
45529
|
+
"fluidgrids.builder.codeView.empty",
|
|
45530
|
+
"The export returned no files."
|
|
45531
|
+
) })
|
|
45532
|
+
] })
|
|
45533
|
+
]
|
|
45534
|
+
}
|
|
45535
|
+
)
|
|
45536
|
+
] });
|
|
45537
|
+
}
|
|
45107
45538
|
function RunWithViewRuns({
|
|
45108
45539
|
onViewRuns,
|
|
45109
45540
|
canViewRuns,
|
|
@@ -45375,7 +45806,8 @@ function PanelIcons() {
|
|
|
45375
45806
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
45376
45807
|
/* @__PURE__ */ jsx(AiDraftPanel, { compact: true }),
|
|
45377
45808
|
/* @__PURE__ */ jsx(EnvironmentsPanel, { compact: true }),
|
|
45378
|
-
/* @__PURE__ */ jsx(GitSyncPanel, { compact: true })
|
|
45809
|
+
/* @__PURE__ */ jsx(GitSyncPanel, { compact: true }),
|
|
45810
|
+
/* @__PURE__ */ jsx(CodeViewPanel, { compact: true })
|
|
45379
45811
|
] });
|
|
45380
45812
|
}
|
|
45381
45813
|
function HeaderActions({ tier }) {
|
|
@@ -45393,6 +45825,7 @@ function HeaderActions({ tier }) {
|
|
|
45393
45825
|
/* @__PURE__ */ jsx(VersionHistoryPanel, { compact: true }),
|
|
45394
45826
|
/* @__PURE__ */ jsx(EnvironmentsPanel, { compact: true }),
|
|
45395
45827
|
/* @__PURE__ */ jsx(GitSyncPanel, { compact: true }),
|
|
45828
|
+
/* @__PURE__ */ jsx(CodeViewPanel, { compact: true }),
|
|
45396
45829
|
/* @__PURE__ */ jsx(GuideIcon, {}),
|
|
45397
45830
|
/* @__PURE__ */ jsx(Divider, {}),
|
|
45398
45831
|
/* @__PURE__ */ jsx(SaveFlowButton, {}),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { throwIfResultError } from './chunk-
|
|
2
|
-
import { RunFailureClustersDocument, DismissRunFailureClusterDocument, RunFailureTriageSettingsDocument, SetRunFailureTriageEnabledDocument, FgTriageFailedRunsDocument } from './chunk-
|
|
1
|
+
import { throwIfResultError } from './chunk-NVUJFHTQ.js';
|
|
2
|
+
import { RunFailureClustersDocument, DismissRunFailureClusterDocument, RunFailureTriageSettingsDocument, SetRunFailureTriageEnabledDocument, FgTriageFailedRunsDocument } from './chunk-7PBOU7JC.js';
|
|
3
3
|
import { useTr } from './chunk-UULVIT25.js';
|
|
4
4
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
5
5
|
import { useState, useCallback, useEffect } from 'react';
|