@burdenoff/fluidgrids-fe-sdk 2026.1028.13 → 2026.1028.15
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-AU3C3HFF.js +21 -0
- package/dist/{ExecutionsListPage-LMDCPI3D.js → ExecutionsListPage-XY6WE2W7.js} +7 -7
- package/dist/{WorkflowBuilder-TZ2Y3SYJ.js → WorkflowBuilder-CTCIARRY.js} +12 -11
- package/dist/{WorkflowsList-GJF2HTSA.js → WorkflowsList-WCCIBAE6.js} +8 -8
- package/dist/assistant.d.ts +37 -74
- package/dist/assistant.js +1 -0
- package/dist/{chunk-DV7N3UXU.js → chunk-2K72FID2.js} +1 -1
- package/dist/{chunk-QLBQDRQZ.js → chunk-3KVYLY7P.js} +2 -2
- package/dist/{chunk-5BY2LZH3.js → chunk-3QXHI7OQ.js} +1 -1
- package/dist/{chunk-7SZLEQ5G.js → chunk-6CQL7YS7.js} +3 -3
- package/dist/{chunk-2PC6JUR6.js → chunk-6SCOOQQ2.js} +1 -1
- package/dist/{chunk-7SPZBRP2.js → chunk-BFCWCHVL.js} +6 -3
- package/dist/{chunk-TWRWHIMY.js → chunk-C6L5G4VK.js} +1 -1
- package/dist/{chunk-KWWVBB43.js → chunk-CB3425Z3.js} +5 -5
- package/dist/{chunk-7UTDL7HD.js → chunk-CFMLFFDD.js} +5 -5
- package/dist/{chunk-7PBOU7JC.js → chunk-DGZ23FYC.js} +2 -2
- package/dist/{chunk-U5BSQBUC.js → chunk-EMFSEOZE.js} +2 -2
- package/dist/{chunk-6T5EBO7G.js → chunk-FGCH4JGY.js} +1 -1
- package/dist/{chunk-HKNZ7MVM.js → chunk-FNGRH6NO.js} +1 -1
- package/dist/{chunk-TEMQVTTJ.js → chunk-ININ5HZP.js} +1 -1
- package/dist/{chunk-EA4EIU6Y.js → chunk-MXUPQUOH.js} +204 -33
- package/dist/{chunk-5PSRTFKK.js → chunk-OFLYZJPU.js} +2 -2
- package/dist/{chunk-BMX4T263.js → chunk-P3PDEXRY.js} +2 -2
- package/dist/{chunk-7OJDILWM.js → chunk-QAK257FU.js} +1 -1
- package/dist/{chunk-37HLOFQ3.js → chunk-QJROMXLC.js} +2 -2
- package/dist/{chunk-REDNZ462.js → chunk-U3FUZOAE.js} +11 -7
- package/dist/{chunk-DOPSPCO3.js → chunk-U6KI4AKI.js} +102 -1
- package/dist/{chunk-H2YOX3DI.js → chunk-V5XV5ZAC.js} +3 -3
- package/dist/{chunk-KLAS43OH.js → chunk-X2Z63TCG.js} +4 -4
- package/dist/chunk-Y53CVZVV.js +20 -0
- package/dist/{chunk-CCMDFFBC.js → chunk-Y6JNYFZG.js} +4 -4
- package/dist/{chunk-IAOLBKO3.js → chunk-Z3NB4IQ5.js} +3 -3
- package/dist/executions.js +13 -12
- package/dist/history.js +4 -4
- package/dist/index.d.ts +875 -12
- package/dist/index.js +36 -35
- package/dist/nodes.js +2 -2
- package/dist/observability.js +6 -6
- package/dist/pageControlsBridge-D6y36qi5.d.ts +87 -0
- package/dist/settings.js +6 -6
- package/dist/templates.js +11 -10
- package/dist/workflow-builder.js +13 -12
- package/dist/workflows-list.js +8 -8
- package/package.json +1 -1
- package/dist/ExecutionDetailPage-7MGOMYP6.js +0 -20
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LOG_STREAM_DESTINATIONS, CREATE_LOG_STREAM_DESTINATION, UPDATE_LOG_STREAM_DESTINATION, DELETE_LOG_STREAM_DESTINATION, TEST_LOG_STREAM_DESTINATION, REPLAY_WORKFLOW_RUN, RETRY_WORKFLOW_RUNS, OBSERVABILITY_DASHBOARD_SUMMARY, OBSERVABILITY_FAILED_RUNS, OBSERVABILITY_DATA_SINKS, OBSERVABILITY_DATA_SINK_DATA } from './chunk-5ERAJC2I.js';
|
|
2
2
|
import { useFluidGridsFlag, FLUIDGRIDS_FLAGS } from './chunk-77NA7TPJ.js';
|
|
3
|
-
import { throwIfResultError, describeOperationError, useFluidGridsAnalytics, emitRunStarted, openRunQuotaUpgradePrompt } from './chunk-
|
|
3
|
+
import { throwIfResultError, describeOperationError, useFluidGridsAnalytics, emitRunStarted, openRunQuotaUpgradePrompt } from './chunk-2K72FID2.js';
|
|
4
4
|
import { useTr } from './chunk-UULVIT25.js';
|
|
5
5
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
6
6
|
import { useCallback, useState, useMemo, useEffect } from 'react';
|
|
@@ -2,18 +2,19 @@ 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, useWorkflowCodeExport, orderedExportFiles, fileBaseName, downloadWorkflowCodeExport, isLosslessReport, sortFidelityItems, isLossyFidelityItem, lineOfNode } from './chunk-
|
|
6
|
-
import { EntityTagPicker, useWorkflowProposal, WorkflowProposalCard } from './chunk-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { QuotaExhaustedDialog, useWorkflowCodeExport, orderedExportFiles, fileBaseName, downloadWorkflowCodeExport, isLosslessReport, sortFidelityItems, isLossyFidelityItem, lineOfNode } from './chunk-3KVYLY7P.js';
|
|
6
|
+
import { EntityTagPicker, useWorkflowProposal, WorkflowProposalCard } from './chunk-BFCWCHVL.js';
|
|
7
|
+
import { AiCreditBalanceSlot } from './chunk-Y53CVZVV.js';
|
|
8
|
+
import { useRestoreWorkflowVersion, useWorkflowVersions, useActivateWorkflow, useDeleteWorkflow, useLazyWorkflowDefinition, useDeactivateWorkflow } from './chunk-EMFSEOZE.js';
|
|
9
|
+
import { isAgentNodeType, AgentDefinitionSelectField } from './chunk-FNGRH6NO.js';
|
|
9
10
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
10
11
|
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-
|
|
12
|
+
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-2K72FID2.js';
|
|
12
13
|
import { cn } from './chunk-JL7CASN5.js';
|
|
13
14
|
import { getGlobalStoreClient } from './chunk-PXIFUMLA.js';
|
|
14
15
|
import { getFluidGridsConfig } from './chunk-CY6KX4RG.js';
|
|
15
16
|
import { GetMyNodeInstallationsDocument, BrowseWorkflowTemplatesDocument, InstallWorkflowNodeDocument, InstallPurchasedNodeDocument, BrowseWorkflowNodesDocument, UninstallWorkflowNodeDocument, CreateStoreOrderDocument, GetNodeInstallableVersionsDocument, OrganizationPrivateNodesDocument, InstallOrganizationPrivateNodeDocument, UninstallOrganizationPrivateNodeDocument } from './chunk-JUUYPCFY.js';
|
|
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-
|
|
17
|
+
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-DGZ23FYC.js';
|
|
17
18
|
import { useTr } from './chunk-UULVIT25.js';
|
|
18
19
|
import { getFluidGridsClient, waitForFluidGridsClient, getFluidGridsClientSafe } from './chunk-NTWG3CJX.js';
|
|
19
20
|
import { __export } from './chunk-62GWEYJ5.js';
|
|
@@ -43768,7 +43769,10 @@ function useWorkflowGitSync(workflowKey) {
|
|
|
43768
43769
|
mutation: LinkWorkflowGitRepositoryDocument,
|
|
43769
43770
|
variables: {
|
|
43770
43771
|
input: {
|
|
43771
|
-
|
|
43772
|
+
// GitProviderId lists exactly the WorkflowGitProvider enum values;
|
|
43773
|
+
// the generated enum type only accepts its own members.
|
|
43774
|
+
provider: values.provider,
|
|
43775
|
+
baseUrl: values.baseUrl.trim() || null,
|
|
43772
43776
|
connectionId: values.connectionId,
|
|
43773
43777
|
repository: values.repository.trim(),
|
|
43774
43778
|
branch: values.branch.trim(),
|
|
@@ -43846,30 +43850,117 @@ function useWorkflowGitSync(workflowKey) {
|
|
|
43846
43850
|
}
|
|
43847
43851
|
|
|
43848
43852
|
// src/builder/lib/workflow-git-sync.ts
|
|
43849
|
-
var
|
|
43853
|
+
var GITHUB_OPTION = {
|
|
43854
|
+
id: "GITHUB",
|
|
43855
|
+
providerKey: "github",
|
|
43856
|
+
label: "GitHub",
|
|
43857
|
+
repositoryPlaceholder: "owner/name",
|
|
43858
|
+
selfManaged: false
|
|
43859
|
+
};
|
|
43860
|
+
var GIT_PROVIDER_OPTIONS = [
|
|
43861
|
+
GITHUB_OPTION,
|
|
43862
|
+
{
|
|
43863
|
+
id: "GITLAB",
|
|
43864
|
+
providerKey: "gitlab",
|
|
43865
|
+
label: "GitLab",
|
|
43866
|
+
repositoryPlaceholder: "group/project",
|
|
43867
|
+
selfManaged: true
|
|
43868
|
+
},
|
|
43869
|
+
{
|
|
43870
|
+
id: "AZURE_DEVOPS",
|
|
43871
|
+
providerKey: "azure-devops",
|
|
43872
|
+
label: "Azure DevOps",
|
|
43873
|
+
repositoryPlaceholder: "organization/project/repository",
|
|
43874
|
+
selfManaged: false
|
|
43875
|
+
}
|
|
43876
|
+
];
|
|
43877
|
+
var DEFAULT_GIT_PROVIDER = "GITHUB";
|
|
43850
43878
|
var DEFAULT_GIT_BRANCH = "main";
|
|
43851
43879
|
var DEFAULT_GIT_FOLDER = "fluidgrids/workflows";
|
|
43852
|
-
function
|
|
43853
|
-
return
|
|
43854
|
-
|
|
43855
|
-
|
|
43880
|
+
function gitProviderOption(provider) {
|
|
43881
|
+
return GIT_PROVIDER_OPTIONS.find((option) => option.id === provider) ?? GITHUB_OPTION;
|
|
43882
|
+
}
|
|
43883
|
+
function isGitProviderId(value) {
|
|
43884
|
+
return GIT_PROVIDER_OPTIONS.some((option) => option.id === value);
|
|
43885
|
+
}
|
|
43886
|
+
function providerConnections(connections, providerKey) {
|
|
43887
|
+
const key = providerKey.toLowerCase();
|
|
43888
|
+
return connections.filter((connection) => connection.provider?.key?.toLowerCase() === key).sort((a, b) => {
|
|
43856
43889
|
const activeA = a.status === "ACTIVE" ? 0 : 1;
|
|
43857
43890
|
const activeB = b.status === "ACTIVE" ? 0 : 1;
|
|
43858
43891
|
return activeA - activeB || a.name.localeCompare(b.name);
|
|
43859
43892
|
});
|
|
43860
43893
|
}
|
|
43861
|
-
function
|
|
43862
|
-
return value.
|
|
43894
|
+
function stripSlashes(value) {
|
|
43895
|
+
return value.replace(/^\/+|\/+$/g, "");
|
|
43896
|
+
}
|
|
43897
|
+
function normalizeRepositoryInput(value, provider = "GITHUB", baseUrl = "") {
|
|
43898
|
+
const trimmed = value.trim();
|
|
43899
|
+
if (provider === "GITLAB") {
|
|
43900
|
+
const instances = [baseUrl.trim(), "https://gitlab.com"].filter(Boolean).map((url2) => stripSlashes(url2).toLowerCase());
|
|
43901
|
+
let path = trimmed;
|
|
43902
|
+
for (const instance of instances) {
|
|
43903
|
+
if (path.toLowerCase().startsWith(`${instance}/`)) {
|
|
43904
|
+
path = path.slice(instance.length + 1);
|
|
43905
|
+
break;
|
|
43906
|
+
}
|
|
43907
|
+
}
|
|
43908
|
+
const web = path.indexOf("/-/");
|
|
43909
|
+
if (web >= 0) path = path.slice(0, web);
|
|
43910
|
+
return stripSlashes(stripSlashes(path).replace(/\.git$/i, ""));
|
|
43911
|
+
}
|
|
43912
|
+
if (provider === "AZURE_DEVOPS") {
|
|
43913
|
+
const match = /^https:\/\/(?:[^@/]+@)?dev\.azure\.com\/([^/]+)\/(?:([^/]+)\/)?_git\/([^/?#]+)/i.exec(
|
|
43914
|
+
trimmed
|
|
43915
|
+
) ?? /^https:\/\/([^./]+)\.visualstudio\.com\/(?:DefaultCollection\/)?(?:([^/]+)\/)?_git\/([^/?#]+)/i.exec(
|
|
43916
|
+
trimmed
|
|
43917
|
+
);
|
|
43918
|
+
if (match) {
|
|
43919
|
+
const [, organization = "", project, repository = ""] = match;
|
|
43920
|
+
const decode3 = (part) => {
|
|
43921
|
+
try {
|
|
43922
|
+
return decodeURIComponent(part);
|
|
43923
|
+
} catch {
|
|
43924
|
+
return part;
|
|
43925
|
+
}
|
|
43926
|
+
};
|
|
43927
|
+
return [organization, project ?? repository, repository].map(decode3).join("/").replace(/\.git$/i, "");
|
|
43928
|
+
}
|
|
43929
|
+
return stripSlashes(trimmed).replace(/\.git$/i, "");
|
|
43930
|
+
}
|
|
43931
|
+
return stripSlashes(
|
|
43932
|
+
trimmed.replace(/^https?:\/\/github\.com\//i, "").replace(/\.git$/i, "")
|
|
43933
|
+
);
|
|
43934
|
+
}
|
|
43935
|
+
function repositoryLooksValid(provider, value) {
|
|
43936
|
+
if (provider === "GITLAB") {
|
|
43937
|
+
const segments = value.split("/");
|
|
43938
|
+
return segments.length >= 2 && segments.every((segment) => /^[A-Za-z0-9_][A-Za-z0-9._-]*$/.test(segment));
|
|
43939
|
+
}
|
|
43940
|
+
if (provider === "AZURE_DEVOPS") {
|
|
43941
|
+
const segments = value.split("/");
|
|
43942
|
+
return segments.length === 3 && segments.every(
|
|
43943
|
+
(segment) => /^[A-Za-z0-9][A-Za-z0-9 ._-]*$/.test(segment.trim())
|
|
43944
|
+
);
|
|
43945
|
+
}
|
|
43946
|
+
return /^[A-Za-z0-9][A-Za-z0-9-]*\/[A-Za-z0-9._-]+$/.test(value);
|
|
43863
43947
|
}
|
|
43864
43948
|
function gitLinkFormProblem(form) {
|
|
43949
|
+
const provider = form.provider ?? DEFAULT_GIT_PROVIDER;
|
|
43950
|
+
const baseUrl = (form.baseUrl ?? "").trim();
|
|
43865
43951
|
if (!form.connectionId.trim()) return "connection";
|
|
43866
|
-
if (
|
|
43867
|
-
|
|
43952
|
+
if (baseUrl) {
|
|
43953
|
+
if (!gitProviderOption(provider).selfManaged || !/^https:\/\/[^\s/?#@]+(\/[^\s?#]*)?$/i.test(baseUrl))
|
|
43954
|
+
return "baseUrl";
|
|
43955
|
+
}
|
|
43956
|
+
if (!repositoryLooksValid(
|
|
43957
|
+
provider,
|
|
43958
|
+
normalizeRepositoryInput(form.repository, provider, baseUrl)
|
|
43868
43959
|
))
|
|
43869
43960
|
return "repository";
|
|
43870
43961
|
const branch = form.branch.trim();
|
|
43871
43962
|
if (!branch || /\s|\.\.|^\/|\/$/.test(branch)) return "branch";
|
|
43872
|
-
const folder = form.pathPrefix.trim()
|
|
43963
|
+
const folder = stripSlashes(form.pathPrefix.trim());
|
|
43873
43964
|
if (folder.split("/").some((segment) => segment === ".." || segment === "."))
|
|
43874
43965
|
return "pathPrefix";
|
|
43875
43966
|
return null;
|
|
@@ -43885,6 +43976,8 @@ function commitTitle(message) {
|
|
|
43885
43976
|
return first.trim() || "(no message)";
|
|
43886
43977
|
}
|
|
43887
43978
|
var EMPTY_FORM = {
|
|
43979
|
+
provider: DEFAULT_GIT_PROVIDER,
|
|
43980
|
+
baseUrl: "",
|
|
43888
43981
|
connectionId: "",
|
|
43889
43982
|
repository: "",
|
|
43890
43983
|
branch: DEFAULT_GIT_BRANCH,
|
|
@@ -43928,13 +44021,15 @@ function GitSyncPanel({
|
|
|
43928
44021
|
loading: connectionsLoading,
|
|
43929
44022
|
refetch: refetchConnections
|
|
43930
44023
|
} = useConnections();
|
|
43931
|
-
const gitConnections = useMemo(
|
|
43932
|
-
() => githubConnections(connections),
|
|
43933
|
-
[connections]
|
|
43934
|
-
);
|
|
43935
44024
|
const [busy, setBusy] = useState(null);
|
|
43936
44025
|
const [editing, setEditing] = useState(false);
|
|
43937
44026
|
const [form, setForm] = useState(EMPTY_FORM);
|
|
44027
|
+
const providerOption = gitProviderOption(form.provider);
|
|
44028
|
+
const gitConnections = useMemo(
|
|
44029
|
+
() => providerConnections(connections, providerOption.providerKey),
|
|
44030
|
+
[connections, providerOption.providerKey]
|
|
44031
|
+
);
|
|
44032
|
+
const linkedOption = repository ? gitProviderOption(repository.provider) : null;
|
|
43938
44033
|
const [showProblem, setShowProblem] = useState(false);
|
|
43939
44034
|
const [newConnectionOpen, setNewConnectionOpen] = useState(false);
|
|
43940
44035
|
const [comparison, setComparison] = useState(
|
|
@@ -43962,13 +44057,20 @@ function GitSyncPanel({
|
|
|
43962
44057
|
switch (value) {
|
|
43963
44058
|
case "connection":
|
|
43964
44059
|
return tr(
|
|
43965
|
-
"fluidgrids.builder.git.
|
|
43966
|
-
"Choose a
|
|
44060
|
+
"fluidgrids.builder.git.problemConnectionFor",
|
|
44061
|
+
"Choose a {{provider}} connection",
|
|
44062
|
+
{ provider: providerOption.label }
|
|
43967
44063
|
);
|
|
43968
44064
|
case "repository":
|
|
43969
44065
|
return tr(
|
|
43970
|
-
"fluidgrids.builder.git.
|
|
43971
|
-
"Enter the repository as
|
|
44066
|
+
"fluidgrids.builder.git.problemRepositoryAs",
|
|
44067
|
+
"Enter the repository as {{format}}",
|
|
44068
|
+
{ format: providerOption.repositoryPlaceholder }
|
|
44069
|
+
);
|
|
44070
|
+
case "baseUrl":
|
|
44071
|
+
return tr(
|
|
44072
|
+
"fluidgrids.builder.git.problemBaseUrl",
|
|
44073
|
+
"Enter the instance URL as https://host, or leave it empty for gitlab.com"
|
|
43972
44074
|
);
|
|
43973
44075
|
case "branch":
|
|
43974
44076
|
return tr(
|
|
@@ -43997,6 +44099,8 @@ function GitSyncPanel({
|
|
|
43997
44099
|
const startEditing = () => {
|
|
43998
44100
|
setForm(
|
|
43999
44101
|
repository ? {
|
|
44102
|
+
provider: isGitProviderId(repository.provider) ? repository.provider : DEFAULT_GIT_PROVIDER,
|
|
44103
|
+
baseUrl: repository.baseUrl ?? "",
|
|
44000
44104
|
connectionId: repository.connectionId,
|
|
44001
44105
|
repository: repository.repository,
|
|
44002
44106
|
branch: repository.branch,
|
|
@@ -44005,12 +44109,26 @@ function GitSyncPanel({
|
|
|
44005
44109
|
pushOnPromotion: repository.pushOnPromotion
|
|
44006
44110
|
} : {
|
|
44007
44111
|
...EMPTY_FORM,
|
|
44008
|
-
connectionId:
|
|
44112
|
+
connectionId: providerConnections(
|
|
44113
|
+
connections,
|
|
44114
|
+
gitProviderOption(DEFAULT_GIT_PROVIDER).providerKey
|
|
44115
|
+
)[0]?.id ?? ""
|
|
44009
44116
|
}
|
|
44010
44117
|
);
|
|
44011
44118
|
setShowProblem(false);
|
|
44012
44119
|
setEditing(true);
|
|
44013
44120
|
};
|
|
44121
|
+
const changeProvider = (value) => {
|
|
44122
|
+
if (!isGitProviderId(value)) return;
|
|
44123
|
+
const option = gitProviderOption(value);
|
|
44124
|
+
setForm((prev) => ({
|
|
44125
|
+
...prev,
|
|
44126
|
+
provider: value,
|
|
44127
|
+
baseUrl: option.selfManaged ? prev.baseUrl : "",
|
|
44128
|
+
connectionId: providerConnections(connections, option.providerKey)[0]?.id ?? ""
|
|
44129
|
+
}));
|
|
44130
|
+
setShowProblem(false);
|
|
44131
|
+
};
|
|
44014
44132
|
const handleLink = () => {
|
|
44015
44133
|
if (problem) {
|
|
44016
44134
|
setShowProblem(true);
|
|
@@ -44122,7 +44240,45 @@ function GitSyncPanel({
|
|
|
44122
44240
|
"data-testid": "fluidgrids-git-link-form",
|
|
44123
44241
|
children: [
|
|
44124
44242
|
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
44125
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "fg-git-
|
|
44243
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "fg-git-provider", className: "text-xs", children: tr("fluidgrids.builder.git.provider", "Provider") }),
|
|
44244
|
+
/* @__PURE__ */ jsxs(Select, { value: form.provider, onValueChange: changeProvider, children: [
|
|
44245
|
+
/* @__PURE__ */ jsx(
|
|
44246
|
+
SelectTrigger,
|
|
44247
|
+
{
|
|
44248
|
+
id: "fg-git-provider",
|
|
44249
|
+
className: "h-8",
|
|
44250
|
+
"data-testid": "fluidgrids-git-provider",
|
|
44251
|
+
children: /* @__PURE__ */ jsx(SelectValue, {})
|
|
44252
|
+
}
|
|
44253
|
+
),
|
|
44254
|
+
/* @__PURE__ */ jsx(SelectContent, { className: "z-[120]", children: GIT_PROVIDER_OPTIONS.map((option) => /* @__PURE__ */ jsx(SelectItem, { value: option.id, children: option.label }, option.id)) })
|
|
44255
|
+
] })
|
|
44256
|
+
] }),
|
|
44257
|
+
providerOption.selfManaged && /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
44258
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "fg-git-base-url", className: "text-xs", children: tr("fluidgrids.builder.git.baseUrl", "Instance URL (optional)") }),
|
|
44259
|
+
/* @__PURE__ */ jsx(
|
|
44260
|
+
Input$1,
|
|
44261
|
+
{
|
|
44262
|
+
id: "fg-git-base-url",
|
|
44263
|
+
className: "h-8 font-mono text-xs",
|
|
44264
|
+
placeholder: "https://gitlab.com",
|
|
44265
|
+
value: form.baseUrl,
|
|
44266
|
+
onChange: (event) => setForm((prev) => ({ ...prev, baseUrl: event.target.value }))
|
|
44267
|
+
}
|
|
44268
|
+
),
|
|
44269
|
+
/* @__PURE__ */ jsx("p", { className: "text-[11px] text-muted-foreground", children: tr(
|
|
44270
|
+
"fluidgrids.builder.git.baseUrlHint",
|
|
44271
|
+
"Leave empty for gitlab.com. A self-managed instance must be on the allowed list your administrator keeps."
|
|
44272
|
+
) })
|
|
44273
|
+
] }),
|
|
44274
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
44275
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "fg-git-connection", className: "text-xs", children: tr(
|
|
44276
|
+
"fluidgrids.builder.git.connectionFor",
|
|
44277
|
+
"{{provider}} connection",
|
|
44278
|
+
{
|
|
44279
|
+
provider: providerOption.label
|
|
44280
|
+
}
|
|
44281
|
+
) }),
|
|
44126
44282
|
/* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
44127
44283
|
/* @__PURE__ */ jsxs(
|
|
44128
44284
|
Select,
|
|
@@ -44160,7 +44316,13 @@ function GitSyncPanel({
|
|
|
44160
44316
|
}
|
|
44161
44317
|
)
|
|
44162
44318
|
] }),
|
|
44163
|
-
!connectionsLoading && gitConnections.length === 0 && /* @__PURE__ */ jsx("p", { className: "text-[11px] text-muted-foreground", children: tr(
|
|
44319
|
+
!connectionsLoading && gitConnections.length === 0 && /* @__PURE__ */ jsx("p", { className: "text-[11px] text-muted-foreground", children: form.provider === "GITLAB" ? tr(
|
|
44320
|
+
"fluidgrids.builder.git.noConnectionsGitlab",
|
|
44321
|
+
"No GitLab connection yet. Create one with a token that has the api scope on the project."
|
|
44322
|
+
) : form.provider === "AZURE_DEVOPS" ? tr(
|
|
44323
|
+
"fluidgrids.builder.git.noConnectionsAzureDevops",
|
|
44324
|
+
"No Azure DevOps connection yet. Create one with a personal access token that has the Code (Read & write) scope."
|
|
44325
|
+
) : tr(
|
|
44164
44326
|
"fluidgrids.builder.git.noConnections",
|
|
44165
44327
|
"No GitHub connection yet. Create one; it needs access to the repository's contents (the repo scope)."
|
|
44166
44328
|
) })
|
|
@@ -44172,7 +44334,7 @@ function GitSyncPanel({
|
|
|
44172
44334
|
{
|
|
44173
44335
|
id: "fg-git-repository",
|
|
44174
44336
|
className: "h-8 font-mono text-xs",
|
|
44175
|
-
placeholder:
|
|
44337
|
+
placeholder: providerOption.repositoryPlaceholder,
|
|
44176
44338
|
value: form.repository,
|
|
44177
44339
|
onChange: (event) => setForm((prev) => ({ ...prev, repository: event.target.value }))
|
|
44178
44340
|
}
|
|
@@ -44304,8 +44466,8 @@ function GitSyncPanel({
|
|
|
44304
44466
|
tr("fluidgrids.builder.git.title", "Git sync")
|
|
44305
44467
|
] }),
|
|
44306
44468
|
/* @__PURE__ */ jsx(SheetDescription, { children: tr(
|
|
44307
|
-
"fluidgrids.builder.git.
|
|
44308
|
-
"Keep this workflow in a GitHub repository: commit versions, read the file's history, compare a commit with this version or restore it as a new draft."
|
|
44469
|
+
"fluidgrids.builder.git.descriptionProviders",
|
|
44470
|
+
"Keep this workflow in a GitHub, GitLab or Azure DevOps repository: commit versions, read the file's history, compare a commit with this version or restore it as a new draft."
|
|
44309
44471
|
) })
|
|
44310
44472
|
] }),
|
|
44311
44473
|
loading && !repository && pushes.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center py-8 text-sm text-muted-foreground", children: [
|
|
@@ -44357,6 +44519,14 @@ function GitSyncPanel({
|
|
|
44357
44519
|
"data-testid": "fluidgrids-git-linked",
|
|
44358
44520
|
children: [
|
|
44359
44521
|
/* @__PURE__ */ jsx("p", { className: "font-mono text-sm text-foreground", children: repository.repository }),
|
|
44522
|
+
/* @__PURE__ */ jsx(
|
|
44523
|
+
"p",
|
|
44524
|
+
{
|
|
44525
|
+
className: "mt-0.5 text-xs text-muted-foreground",
|
|
44526
|
+
"data-testid": "fluidgrids-git-linked-provider",
|
|
44527
|
+
children: [linkedOption?.label, repository.baseUrl].filter(Boolean).join(" \xB7 ")
|
|
44528
|
+
}
|
|
44529
|
+
),
|
|
44360
44530
|
/* @__PURE__ */ jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: [
|
|
44361
44531
|
`${tr("fluidgrids.builder.git.branch", "Branch")} ${repository.branch}`,
|
|
44362
44532
|
gitFilePath(repository.pathPrefix, workflowKey)
|
|
@@ -44635,8 +44805,8 @@ function GitSyncPanel({
|
|
|
44635
44805
|
{
|
|
44636
44806
|
open: newConnectionOpen,
|
|
44637
44807
|
onClose: () => setNewConnectionOpen(false),
|
|
44638
|
-
providerKey:
|
|
44639
|
-
defaultName:
|
|
44808
|
+
providerKey: providerOption.providerKey,
|
|
44809
|
+
defaultName: providerOption.label,
|
|
44640
44810
|
onConnectionCreated: (created) => {
|
|
44641
44811
|
setNewConnectionOpen(false);
|
|
44642
44812
|
setForm((prev) => ({ ...prev, connectionId: created.id }));
|
|
@@ -45021,6 +45191,7 @@ function AiDraftPanel({
|
|
|
45021
45191
|
)
|
|
45022
45192
|
}
|
|
45023
45193
|
),
|
|
45194
|
+
/* @__PURE__ */ jsx(AiCreditBalanceSlot, { testId: "ai-draft-credit-balance" }),
|
|
45024
45195
|
/* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
45025
45196
|
/* @__PURE__ */ jsxs(
|
|
45026
45197
|
Button$1,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { REPLAY_WORKFLOW_RUN, RETRY_WORKFLOW_RUNS } from './chunk-5ERAJC2I.js';
|
|
2
|
-
import { useFluidGridsAnalytics, throwIfResultError, emitRunStarted, openRunQuotaUpgradePrompt } from './chunk-
|
|
2
|
+
import { useFluidGridsAnalytics, throwIfResultError, emitRunStarted, openRunQuotaUpgradePrompt } from './chunk-2K72FID2.js';
|
|
3
3
|
import { useExecutionsStore } from './chunk-CY6KX4RG.js';
|
|
4
|
-
import { ExecutionsListDocument, ExecutionDetailDocument, ExecutionStatsDocument, PauseExecutionDocument, ResumeExecutionDocument, CancelExecutionDocument, RetryNodeDocument, TriggerWorkflowDocument, TerminateExecutionDocument } from './chunk-
|
|
4
|
+
import { ExecutionsListDocument, ExecutionDetailDocument, ExecutionStatsDocument, PauseExecutionDocument, ResumeExecutionDocument, CancelExecutionDocument, RetryNodeDocument, TriggerWorkflowDocument, TerminateExecutionDocument } from './chunk-DGZ23FYC.js';
|
|
5
5
|
import { useTr } from './chunk-UULVIT25.js';
|
|
6
6
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
7
7
|
import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { validateDateRange } from './chunk-
|
|
2
|
-
import { useAvailableTags } from './chunk-
|
|
1
|
+
import { validateDateRange } from './chunk-OFLYZJPU.js';
|
|
2
|
+
import { useAvailableTags } from './chunk-FGCH4JGY.js';
|
|
3
3
|
import { executionsControls } from './chunk-D3UWK7GY.js';
|
|
4
4
|
import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
|
|
5
5
|
import { useExecutionsStore } from './chunk-CY6KX4RG.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NodeEndpointConfigsDocument, NodeEndpointConfigDocument, NodeManifestDocument, fetchAllNodeEndpointConfigs } from './chunk-
|
|
1
|
+
import { NodeEndpointConfigsDocument, NodeEndpointConfigDocument, NodeManifestDocument, fetchAllNodeEndpointConfigs } from './chunk-DGZ23FYC.js';
|
|
2
2
|
import { useTr } from './chunk-UULVIT25.js';
|
|
3
3
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
4
4
|
import { useMemo, useState, useCallback, useEffect } from 'react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { throwIfResultError } from './chunk-
|
|
2
|
-
import { RunFailureClustersDocument, DismissRunFailureClusterDocument, RunFailureTriageSettingsDocument, SetRunFailureTriageEnabledDocument, FgTriageFailedRunsDocument } from './chunk-
|
|
1
|
+
import { throwIfResultError } from './chunk-2K72FID2.js';
|
|
2
|
+
import { RunFailureClustersDocument, DismissRunFailureClusterDocument, RunFailureTriageSettingsDocument, SetRunFailureTriageEnabledDocument, FgTriageFailedRunsDocument } from './chunk-DGZ23FYC.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';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { buildNodeDisplayMap, ExecutionStatusBadge, formatRunVersion, NodeTimeline, RunLogViewer } from './chunk-
|
|
2
|
-
import { useExecution, useExecutionActions, useAutoRefresh } from './chunk-
|
|
3
|
-
import { fetchRunFailureClusters, OPEN_STATUSES, dismissRunFailureCluster, BUCKET_LABELS } from './chunk-
|
|
4
|
-
import { useRunPolicyDecisions, RunPolicyDecisions } from './chunk-
|
|
5
|
-
import { EntityTagPicker, useWorkflowProposal, WorkflowProposalCard } from './chunk-
|
|
6
|
-
import {
|
|
1
|
+
import { buildNodeDisplayMap, ExecutionStatusBadge, formatRunVersion, NodeTimeline, RunLogViewer } from './chunk-P3PDEXRY.js';
|
|
2
|
+
import { useExecution, useExecutionActions, useAutoRefresh } from './chunk-OFLYZJPU.js';
|
|
3
|
+
import { fetchRunFailureClusters, OPEN_STATUSES, dismissRunFailureCluster, BUCKET_LABELS } from './chunk-QJROMXLC.js';
|
|
4
|
+
import { useRunPolicyDecisions, RunPolicyDecisions } from './chunk-6SCOOQQ2.js';
|
|
5
|
+
import { EntityTagPicker, useWorkflowProposal, WorkflowProposalCard } from './chunk-BFCWCHVL.js';
|
|
6
|
+
import { AiCreditBalanceSlot } from './chunk-Y53CVZVV.js';
|
|
7
|
+
import { throwIfResultError, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-2K72FID2.js';
|
|
7
8
|
import { getFluidGridsConfig } from './chunk-CY6KX4RG.js';
|
|
8
|
-
import { RunLogsDocument, RunLogAppendedDocument, ExplainRunDocument } from './chunk-
|
|
9
|
+
import { RunLogsDocument, RunLogAppendedDocument, ExplainRunDocument } from './chunk-DGZ23FYC.js';
|
|
9
10
|
import { useTr } from './chunk-UULVIT25.js';
|
|
10
11
|
import { getFluidGridsClient, getFluidGridsClientSafe } from './chunk-NTWG3CJX.js';
|
|
11
12
|
import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
|
|
@@ -898,6 +899,9 @@ function RunAiAssistPanel({
|
|
|
898
899
|
)
|
|
899
900
|
] })
|
|
900
901
|
] }),
|
|
902
|
+
canPropose && // BOFF-3732: the AI-credit balance before "Propose a fix" (the
|
|
903
|
+
// explanation is a read with no model call, so it spends nothing).
|
|
904
|
+
/* @__PURE__ */ jsx(AiCreditBalanceSlot, { className: "mt-2", testId: "run-ai-credit-balance" }),
|
|
901
905
|
explainError && /* @__PURE__ */ jsx("p", { className: "mt-3 text-sm text-[var(--color-status-error-text)]", children: explainError }),
|
|
902
906
|
explanation && /* @__PURE__ */ jsxs("div", { className: "mt-3 space-y-2", "data-testid": "run-ai-explanation", children: [
|
|
903
907
|
/* @__PURE__ */ jsx("p", { className: "text-sm text-text-primary", children: explanation.cause }),
|