@burdenoff/fluidgrids-fe-sdk 2026.1109.7 → 2026.1109.8
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-E3TMETIQ.js → ExecutionDetailPage-2ORSV3YN.js} +6 -6
- package/dist/{ExecutionsListPage-BZWJ7KSM.js → ExecutionsListPage-MY45NECW.js} +5 -5
- package/dist/{WorkflowBuilder-VUBKMFSF.js → WorkflowBuilder-MWC2BCTQ.js} +7 -6
- package/dist/{WorkflowsList-DWQU55I5.js → WorkflowsList-6AG7CFZM.js} +6 -6
- package/dist/{agentTools-ORZSDXL5.js → agentTools-5O2KPQYJ.js} +2 -2
- package/dist/{chunk-L3UC5E4J.js → chunk-2LERIIZM.js} +35 -35
- package/dist/{chunk-NQ7JQNQ7.js → chunk-3T3C3475.js} +1 -1
- package/dist/{chunk-RXSZSHXK.js → chunk-4EZFAL24.js} +4 -4
- package/dist/{chunk-EPEMX2L2.js → chunk-7ADEPA4W.js} +5 -5
- package/dist/{chunk-IVAV4Y57.js → chunk-ACME5GOU.js} +1 -1
- package/dist/{chunk-2SUZKBHB.js → chunk-CX3LABFK.js} +1 -1
- package/dist/{chunk-XTNHYVGH.js → chunk-G4NAU6FF.js} +273 -9
- package/dist/{chunk-7VT6V5PG.js → chunk-GR3QNLFS.js} +2 -2
- package/dist/{chunk-4I6BXKKC.js → chunk-MSNCU6US.js} +4 -4
- package/dist/{chunk-S3ADBQTT.js → chunk-NCXK2AO6.js} +1 -1
- package/dist/{chunk-7XQI4U5C.js → chunk-NEB4Y7AX.js} +1 -1
- package/dist/{chunk-QPNZV7OD.js → chunk-NRI7AUBH.js} +1 -41
- package/dist/{chunk-XGQLFKRC.js → chunk-QTOPG7SR.js} +1 -1
- package/dist/{chunk-5WUX3DET.js → chunk-QWDF72GZ.js} +92 -56
- package/dist/{chunk-GG357Z3E.js → chunk-THIMC2ZD.js} +5 -5
- package/dist/{chunk-GABLFLEM.js → chunk-TKSVFP36.js} +3 -3
- package/dist/{chunk-X4HWBDMZ.js → chunk-TNMXKPJX.js} +2 -2
- package/dist/{chunk-LI7RF5GC.js → chunk-U52PO4QQ.js} +3 -3
- package/dist/{chunk-I6FW4C3B.js → chunk-VYXTP6YF.js} +57 -40
- package/dist/{chunk-GLF5IVZH.js → chunk-WKF72AS2.js} +3 -3
- package/dist/{chunk-K7YFK5K2.js → chunk-ZXLXZFWO.js} +1 -1
- package/dist/executions.js +7 -7
- package/dist/history.js +3 -3
- package/dist/index.d.ts +24 -1
- package/dist/index.js +31 -30
- package/dist/{node-detail-view-5GXLTSQY.js → node-detail-view-ZFGS3FWU.js} +5 -5
- package/dist/observability.js +3 -3
- package/dist/{quick-config-panel-EX3WVWXH.js → quick-config-panel-ZDGYZR7Y.js} +4 -4
- package/dist/settings.js +4 -4
- package/dist/templates.js +5 -5
- package/dist/workflow-builder.js +8 -7
- package/dist/workflows-list.js +6 -6
- package/package.json +1 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { paramsFromOperation } from './chunk-NEB4Y7AX.js';
|
|
2
|
+
import { isGuidedTourIntent, pickGuidedTour, withoutGuidedTourIntent, isCreateIntent, decideMissingWorkflow } from './chunk-NRI7AUBH.js';
|
|
2
3
|
import { registerLiveCanvasHandler } from './chunk-PIKYQE7P.js';
|
|
3
|
-
import { useWorkflowReloadStore, releaseLeaseKeptForReload, useInstalledNodes, buildNodeCheck, FlowBuilderPage, buildRequiredNodeTypes } from './chunk-
|
|
4
|
+
import { useWorkflowReloadStore, releaseLeaseKeptForReload, useInstalledNodes, buildNodeCheck, FlowBuilderPage, buildRequiredNodeTypes } from './chunk-2LERIIZM.js';
|
|
5
|
+
import { CreateWorkflowRefusalDialog } from './chunk-QWDF72GZ.js';
|
|
4
6
|
import { canvasFromDefinition } from './chunk-5UA262ZO.js';
|
|
5
|
-
import { useLazyWorkflowDefinition, useCreateWorkflow } from './chunk-
|
|
6
|
-
import { refetchStoreNodes, BILLING_PLANS_PATH, codeBuildIdOf, rememberRevision, blankWorkflowCreateInput, classifyCreateRefusal, useSaveStatusStore, workflowFingerprint, registerWorkflowNodeTypes } from './chunk-
|
|
7
|
+
import { useLazyWorkflowDefinition, useCreateWorkflow } from './chunk-ZXLXZFWO.js';
|
|
8
|
+
import { refetchStoreNodes, BILLING_PLANS_PATH, ensureNodeConfigsLoaded, codeBuildIdOf, rememberRevision, blankWorkflowCreateInput, classifyCreateRefusal, NODE_CONFIGS, resolveNodeOperation, createConfiguredNode, useSaveStatusStore, workflowFingerprint, registerWorkflowNodeTypes } from './chunk-VYXTP6YF.js';
|
|
7
9
|
import { useFlowStore, mergeStickyNotes } from './chunk-JXCJRBWD.js';
|
|
8
10
|
import { WorkflowDefinitionDocument } from './chunk-VAWYR6P4.js';
|
|
9
11
|
import { useTr } from './chunk-UULVIT25.js';
|
|
@@ -684,6 +686,211 @@ function LoadProblem({
|
|
|
684
686
|
}
|
|
685
687
|
);
|
|
686
688
|
}
|
|
689
|
+
|
|
690
|
+
// src/builder/lib/start-node-link.ts
|
|
691
|
+
var START_NODE_PARAM = "startNode";
|
|
692
|
+
var START_OPERATION_PARAM = "startOperation";
|
|
693
|
+
var START_NAME_PARAM = "name";
|
|
694
|
+
var START_FIELD_PREFIX = "set.";
|
|
695
|
+
var MAX_START_NAME_LENGTH = 120;
|
|
696
|
+
var MAX_START_VALUE_LENGTH = 1e3;
|
|
697
|
+
var MAX_START_FIELDS = 20;
|
|
698
|
+
var NODE_TYPE_PATTERN = /^[A-Za-z0-9][A-Za-z0-9:._/@-]{0,159}$/;
|
|
699
|
+
var FIELD_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]{0,63}$/;
|
|
700
|
+
var OPERATION_PATTERN = /^[A-Za-z_][A-Za-z0-9_]{0,63}$/;
|
|
701
|
+
var EXPRESSION_MARKERS = /\$\{|\{\{|^=/;
|
|
702
|
+
var TEXT_FIELD_TYPES = /* @__PURE__ */ new Set([
|
|
703
|
+
"string",
|
|
704
|
+
"text",
|
|
705
|
+
"timezone",
|
|
706
|
+
// TimeCampus Event node: comma-separated time trigger ids (BOFF-10910).
|
|
707
|
+
"timecampus-time-trigger"
|
|
708
|
+
]);
|
|
709
|
+
var NUMBER_FIELD_TYPES = /* @__PURE__ */ new Set(["number", "integer"]);
|
|
710
|
+
var CHOICE_FIELD_TYPES = /* @__PURE__ */ new Set([
|
|
711
|
+
"string",
|
|
712
|
+
"enum",
|
|
713
|
+
"options",
|
|
714
|
+
"select",
|
|
715
|
+
"multiOptions"
|
|
716
|
+
]);
|
|
717
|
+
function hasControlCharacter(value) {
|
|
718
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
719
|
+
const code = value.charCodeAt(index);
|
|
720
|
+
if (code < 32 || code === 127) return true;
|
|
721
|
+
}
|
|
722
|
+
return false;
|
|
723
|
+
}
|
|
724
|
+
function isPlainText(value, maxLength) {
|
|
725
|
+
return value.length > 0 && value.length <= maxLength && !hasControlCharacter(value) && !EXPRESSION_MARKERS.test(value);
|
|
726
|
+
}
|
|
727
|
+
function readStartNodeRequest(search) {
|
|
728
|
+
const params = new URLSearchParams(search);
|
|
729
|
+
const nodeType = params.get(START_NODE_PARAM)?.trim() ?? "";
|
|
730
|
+
if (!NODE_TYPE_PATTERN.test(nodeType)) return null;
|
|
731
|
+
const rejected = [];
|
|
732
|
+
const fields = /* @__PURE__ */ Object.create(null);
|
|
733
|
+
let count = 0;
|
|
734
|
+
for (const [key, raw] of params) {
|
|
735
|
+
if (!key.startsWith(START_FIELD_PREFIX)) continue;
|
|
736
|
+
const field = key.slice(START_FIELD_PREFIX.length);
|
|
737
|
+
if (!FIELD_NAME_PATTERN.test(field) || Object.hasOwn(fields, field)) {
|
|
738
|
+
rejected.push({ field: field.slice(0, 64), reason: "unknown-field" });
|
|
739
|
+
continue;
|
|
740
|
+
}
|
|
741
|
+
if (count >= MAX_START_FIELDS) {
|
|
742
|
+
rejected.push({ field, reason: "too-many" });
|
|
743
|
+
continue;
|
|
744
|
+
}
|
|
745
|
+
fields[field] = raw.trim();
|
|
746
|
+
count += 1;
|
|
747
|
+
}
|
|
748
|
+
const operationRaw = params.get(START_OPERATION_PARAM)?.trim();
|
|
749
|
+
const operation = operationRaw && OPERATION_PATTERN.test(operationRaw) ? operationRaw : void 0;
|
|
750
|
+
const nameRaw = params.get(START_NAME_PARAM)?.trim();
|
|
751
|
+
let name;
|
|
752
|
+
if (nameRaw) {
|
|
753
|
+
if (isPlainText(nameRaw, MAX_START_NAME_LENGTH)) name = nameRaw;
|
|
754
|
+
else rejected.push({ field: START_NAME_PARAM, reason: "invalid-name" });
|
|
755
|
+
}
|
|
756
|
+
return {
|
|
757
|
+
nodeType,
|
|
758
|
+
...operation ? { operation } : {},
|
|
759
|
+
...name ? { name } : {},
|
|
760
|
+
fields,
|
|
761
|
+
rejected
|
|
762
|
+
};
|
|
763
|
+
}
|
|
764
|
+
function validateStartField(param, raw) {
|
|
765
|
+
if (!param) return { ok: false, reason: "unknown-field" };
|
|
766
|
+
if (param.secret) return { ok: false, reason: "secret" };
|
|
767
|
+
const options = param.options ?? [];
|
|
768
|
+
if (param.type === "multiOptions") {
|
|
769
|
+
if (options.length === 0) return { ok: false, reason: "unsupported-type" };
|
|
770
|
+
const picked = raw.split(",").map((part) => part.trim()).filter((part) => part.length > 0);
|
|
771
|
+
if (picked.length === 0) return { ok: false, reason: "invalid-value" };
|
|
772
|
+
const allowed = new Set(options);
|
|
773
|
+
if (picked.some((part) => !allowed.has(part)))
|
|
774
|
+
return { ok: false, reason: "not-an-option" };
|
|
775
|
+
const chosen = new Set(picked);
|
|
776
|
+
return {
|
|
777
|
+
ok: true,
|
|
778
|
+
value: options.filter((option) => chosen.has(option))
|
|
779
|
+
};
|
|
780
|
+
}
|
|
781
|
+
if (options.length > 0 && CHOICE_FIELD_TYPES.has(param.type)) {
|
|
782
|
+
return options.includes(raw) ? { ok: true, value: raw } : { ok: false, reason: "not-an-option" };
|
|
783
|
+
}
|
|
784
|
+
if (NUMBER_FIELD_TYPES.has(param.type)) {
|
|
785
|
+
if (!/^-?\d+(\.\d+)?$/.test(raw))
|
|
786
|
+
return { ok: false, reason: "invalid-value" };
|
|
787
|
+
const value = Number(raw);
|
|
788
|
+
if (!Number.isFinite(value) || param.type === "integer" && !Number.isInteger(value))
|
|
789
|
+
return { ok: false, reason: "invalid-value" };
|
|
790
|
+
return { ok: true, value };
|
|
791
|
+
}
|
|
792
|
+
if (param.type === "boolean") {
|
|
793
|
+
if (raw === "true") return { ok: true, value: true };
|
|
794
|
+
if (raw === "false") return { ok: true, value: false };
|
|
795
|
+
return { ok: false, reason: "invalid-value" };
|
|
796
|
+
}
|
|
797
|
+
if (TEXT_FIELD_TYPES.has(param.type)) {
|
|
798
|
+
return isPlainText(raw, MAX_START_VALUE_LENGTH) ? { ok: true, value: raw } : { ok: false, reason: "invalid-value" };
|
|
799
|
+
}
|
|
800
|
+
return { ok: false, reason: "unsupported-type" };
|
|
801
|
+
}
|
|
802
|
+
function validateStartFields(params, fields) {
|
|
803
|
+
const byName = new Map(params.map((param) => [param.name, param]));
|
|
804
|
+
const state = {};
|
|
805
|
+
const rejected = [];
|
|
806
|
+
for (const [field, raw] of Object.entries(fields)) {
|
|
807
|
+
const result = validateStartField(byName.get(field), raw);
|
|
808
|
+
if (result.ok) state[field] = result.value;
|
|
809
|
+
else rejected.push({ field, reason: result.reason });
|
|
810
|
+
}
|
|
811
|
+
return { state, rejected };
|
|
812
|
+
}
|
|
813
|
+
function isStartNodeParam(key) {
|
|
814
|
+
return key === START_NODE_PARAM || key === START_OPERATION_PARAM || key === START_NAME_PARAM || key.startsWith(START_FIELD_PREFIX);
|
|
815
|
+
}
|
|
816
|
+
function startNodeKey(search) {
|
|
817
|
+
const params = new URLSearchParams(search);
|
|
818
|
+
const kept = new URLSearchParams();
|
|
819
|
+
for (const [key, value] of params) {
|
|
820
|
+
if (isStartNodeParam(key)) kept.append(key, value);
|
|
821
|
+
}
|
|
822
|
+
return kept.toString();
|
|
823
|
+
}
|
|
824
|
+
function withoutStartNodeParams(search) {
|
|
825
|
+
const params = new URLSearchParams(search);
|
|
826
|
+
for (const key of [...params.keys()]) {
|
|
827
|
+
if (isStartNodeParam(key)) params.delete(key);
|
|
828
|
+
}
|
|
829
|
+
const rest = params.toString();
|
|
830
|
+
return rest ? `?${rest}` : "";
|
|
831
|
+
}
|
|
832
|
+
function startNodeLink(basePath, request) {
|
|
833
|
+
const params = new URLSearchParams();
|
|
834
|
+
params.set(START_NODE_PARAM, request.nodeType);
|
|
835
|
+
if (request.operation) params.set(START_OPERATION_PARAM, request.operation);
|
|
836
|
+
if (request.name) params.set(START_NAME_PARAM, request.name);
|
|
837
|
+
for (const [field, value] of Object.entries(request.fields ?? {})) {
|
|
838
|
+
params.set(`${START_FIELD_PREFIX}${field}`, value);
|
|
839
|
+
}
|
|
840
|
+
const base2 = basePath.endsWith("/") ? basePath.slice(0, -1) : basePath;
|
|
841
|
+
return `${base2}/new?${params.toString()}`;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
// src/builder/app/workflow/work/start-node.ts
|
|
845
|
+
var START_POSITION = { x: 0, y: 0 };
|
|
846
|
+
function recordOf(value) {
|
|
847
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? { ...value } : {};
|
|
848
|
+
}
|
|
849
|
+
function buildStartNode(request) {
|
|
850
|
+
const config = NODE_CONFIGS.find((entry) => entry.type === request.nodeType);
|
|
851
|
+
if (!config) return { ok: false, reason: "unknown-node" };
|
|
852
|
+
if (request.operation) {
|
|
853
|
+
const operations = resolveNodeOperation(
|
|
854
|
+
void 0,
|
|
855
|
+
config.operations
|
|
856
|
+
).operations;
|
|
857
|
+
if (!operations.some((op) => op.name === request.operation)) {
|
|
858
|
+
return { ok: false, reason: "unknown-operation" };
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
const node = createConfiguredNode(
|
|
862
|
+
request.nodeType,
|
|
863
|
+
START_POSITION,
|
|
864
|
+
request.operation
|
|
865
|
+
);
|
|
866
|
+
const data = recordOf(node.data);
|
|
867
|
+
const pinned = typeof data.operation_name === "string" && data.operation_name;
|
|
868
|
+
const rejected = [...request.rejected];
|
|
869
|
+
if (!pinned) {
|
|
870
|
+
for (const field of Object.keys(request.fields)) {
|
|
871
|
+
rejected.push({ field, reason: "unknown-field" });
|
|
872
|
+
}
|
|
873
|
+
} else {
|
|
874
|
+
const { selected } = resolveNodeOperation(data, config.operations);
|
|
875
|
+
const { state, rejected: refused } = validateStartFields(
|
|
876
|
+
paramsFromOperation(selected),
|
|
877
|
+
request.fields
|
|
878
|
+
);
|
|
879
|
+
rejected.push(...refused);
|
|
880
|
+
const args = recordOf(data.args);
|
|
881
|
+
const current = recordOf(args.state);
|
|
882
|
+
node.data = {
|
|
883
|
+
...data,
|
|
884
|
+
args: { ...args, state: { ...current, ...state } }
|
|
885
|
+
};
|
|
886
|
+
}
|
|
887
|
+
return {
|
|
888
|
+
ok: true,
|
|
889
|
+
node,
|
|
890
|
+
...request.name ? { name: request.name } : {},
|
|
891
|
+
rejected
|
|
892
|
+
};
|
|
893
|
+
}
|
|
687
894
|
var START_DELAY_MS = 800;
|
|
688
895
|
function StartGuidedTour() {
|
|
689
896
|
const location = useLocation();
|
|
@@ -743,6 +950,15 @@ function WorkflowItem({
|
|
|
743
950
|
const navigate = useNavigate();
|
|
744
951
|
const tr = useTr();
|
|
745
952
|
const location = useLocation();
|
|
953
|
+
const requestedStartLink = startNodeKey(location.search);
|
|
954
|
+
const [startLink, setStartLink] = useState({
|
|
955
|
+
navigation: location.key,
|
|
956
|
+
link: requestedStartLink
|
|
957
|
+
});
|
|
958
|
+
if (requestedStartLink && (requestedStartLink !== startLink.link || location.key !== startLink.navigation)) {
|
|
959
|
+
setStartLink({ navigation: location.key, link: requestedStartLink });
|
|
960
|
+
}
|
|
961
|
+
const consumedStartLinkRef = useRef(null);
|
|
746
962
|
const createIntentRef = useRef(isCreateIntent(location.state));
|
|
747
963
|
useEffect(() => {
|
|
748
964
|
createIntentRef.current = isCreateIntent(location.state);
|
|
@@ -784,6 +1000,10 @@ function WorkflowItem({
|
|
|
784
1000
|
useEffect(() => {
|
|
785
1001
|
doNodeCheckRef.current = doNodeCheck;
|
|
786
1002
|
});
|
|
1003
|
+
const trRef = useRef(tr);
|
|
1004
|
+
useEffect(() => {
|
|
1005
|
+
trRef.current = tr;
|
|
1006
|
+
});
|
|
787
1007
|
const handleInstallConfirm = useCallback(async () => {
|
|
788
1008
|
if (!pendingWorkflow) return;
|
|
789
1009
|
const nodesToInstall = (nodeCheck?.missing ?? []).filter(
|
|
@@ -940,10 +1160,53 @@ function WorkflowItem({
|
|
|
940
1160
|
if (mounted) setIsLoading(false);
|
|
941
1161
|
return;
|
|
942
1162
|
}
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
1163
|
+
const startRequest = startLink.link && startLink !== consumedStartLinkRef.current ? readStartNodeRequest(startLink.link) : null;
|
|
1164
|
+
if (startRequest) {
|
|
1165
|
+
await ensureNodeConfigsLoaded();
|
|
1166
|
+
if (!mounted) return;
|
|
1167
|
+
consumedStartLinkRef.current = startLink;
|
|
1168
|
+
const started = buildStartNode(startRequest);
|
|
1169
|
+
window.history.replaceState(
|
|
1170
|
+
window.history.state,
|
|
1171
|
+
"",
|
|
1172
|
+
`${window.location.pathname}${withoutStartNodeParams(window.location.search)}${window.location.hash}`
|
|
1173
|
+
);
|
|
1174
|
+
if (started.ok) {
|
|
1175
|
+
const nodeType = started.node.type ?? startRequest.nodeType;
|
|
1176
|
+
setWorkflow({
|
|
1177
|
+
...newWorkflow,
|
|
1178
|
+
name: started.name ?? newWorkflow.name,
|
|
1179
|
+
nodes: [started.node],
|
|
1180
|
+
sidebar: {
|
|
1181
|
+
active: "node-properties",
|
|
1182
|
+
panels: {
|
|
1183
|
+
nodeProperties: {
|
|
1184
|
+
selectedNode: { id: started.node.id, type: nodeType }
|
|
1185
|
+
}
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
});
|
|
1189
|
+
if (started.rejected.length > 0) {
|
|
1190
|
+
toast.warning(
|
|
1191
|
+
trRef.current(
|
|
1192
|
+
"fluidgrids.builder.startNode.partial",
|
|
1193
|
+
"Some settings from the link were not applied"
|
|
1194
|
+
),
|
|
1195
|
+
{
|
|
1196
|
+
description: started.rejected.map((entry) => entry.field).join(", ")
|
|
1197
|
+
}
|
|
1198
|
+
);
|
|
1199
|
+
}
|
|
1200
|
+
return;
|
|
1201
|
+
}
|
|
1202
|
+
toast.error(
|
|
1203
|
+
trRef.current(
|
|
1204
|
+
"fluidgrids.builder.startNode.unavailable",
|
|
1205
|
+
"The node this link starts with is not available in this workspace"
|
|
1206
|
+
)
|
|
1207
|
+
);
|
|
946
1208
|
}
|
|
1209
|
+
if (mounted) setWorkflow(newWorkflow);
|
|
947
1210
|
return;
|
|
948
1211
|
}
|
|
949
1212
|
const freshCreate = createIntentRef.current && !creatingRef.current && !fetchedCopy() && !loadRunId;
|
|
@@ -1098,7 +1361,8 @@ function WorkflowItem({
|
|
|
1098
1361
|
navigate,
|
|
1099
1362
|
loadRunId,
|
|
1100
1363
|
retryNonce,
|
|
1101
|
-
reloadNonce
|
|
1364
|
+
reloadNonce,
|
|
1365
|
+
startLink
|
|
1102
1366
|
// doNodeCheckRef is intentionally omitted — it's a ref (stable by definition)
|
|
1103
1367
|
// and including doNodeCheck here caused infinite re-runs because installedAppIds
|
|
1104
1368
|
// produces a new Set reference on every render.
|
|
@@ -1283,4 +1547,4 @@ function WorkflowBuilder() {
|
|
|
1283
1547
|
);
|
|
1284
1548
|
}
|
|
1285
1549
|
|
|
1286
|
-
export { GuidedTourStarter, WorkflowBuilder };
|
|
1550
|
+
export { GuidedTourStarter, START_FIELD_PREFIX, START_NAME_PARAM, START_NODE_PARAM, START_OPERATION_PARAM, WorkflowBuilder, readStartNodeRequest, startNodeLink };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { validateDateRange, statusCountFilter, STATUS_COUNT_GROUP_BY, statusCountsOf } from './chunk-
|
|
1
|
+
import { validateDateRange, statusCountFilter, STATUS_COUNT_GROUP_BY, statusCountsOf } from './chunk-ACME5GOU.js';
|
|
2
2
|
import { isAgentNodeType } from './chunk-WZ3EJVS6.js';
|
|
3
3
|
import { useAvailableTags, formatRunVersion, nodeDisplayTitle } from './chunk-DFFQYK2X.js';
|
|
4
4
|
import { executionsControls } from './chunk-FNZZ5JJL.js';
|
|
5
5
|
import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
|
|
6
|
-
import { useDurableParityEnabled, formatElapsedMs, runDurationMs, nodeStateDurationMs } from './chunk-
|
|
6
|
+
import { useDurableParityEnabled, formatElapsedMs, runDurationMs, nodeStateDurationMs } from './chunk-VYXTP6YF.js';
|
|
7
7
|
import { SetWorkflowRunVersioningOverrideDocument, WorkflowRunsCountDocument, DurableParityRunFieldsDocument, WorkflowRunPendingDocument, WorkflowRunMetadataDocument } from './chunk-VAWYR6P4.js';
|
|
8
8
|
import { useTr } from './chunk-UULVIT25.js';
|
|
9
9
|
import { getFluidGridsClient } from './chunk-PDODDDHY.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { TEMPLATE_STORE_CATEGORIES, useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TemplateCard, useTemplateSubmissions, usePublishToStore } from './chunk-
|
|
2
|
-
import { QuotaExhaustedDialog } from './chunk-
|
|
1
|
+
import { TEMPLATE_STORE_CATEGORIES, useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TemplateCard, useTemplateSubmissions, usePublishToStore } from './chunk-2LERIIZM.js';
|
|
2
|
+
import { QuotaExhaustedDialog } from './chunk-QWDF72GZ.js';
|
|
3
3
|
import { templatesControls } from './chunk-FNZZ5JJL.js';
|
|
4
|
-
import { useWorkflowDefinitions, useDuplicateWorkflow, useLazyWorkflowDefinition } from './chunk-
|
|
4
|
+
import { useWorkflowDefinitions, useDuplicateWorkflow, useLazyWorkflowDefinition } from './chunk-ZXLXZFWO.js';
|
|
5
5
|
import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
|
|
6
6
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
7
|
-
import { BILLING_PLANS_PATH, useFluidGridsAnalytics, emitTemplateUsed, isQuotaExhaustedFailure } from './chunk-
|
|
7
|
+
import { BILLING_PLANS_PATH, useFluidGridsAnalytics, emitTemplateUsed, isQuotaExhaustedFailure } from './chunk-VYXTP6YF.js';
|
|
8
8
|
import { SdkPermissionButton, FLUIDGRIDS_PERMISSIONS } from './chunk-ERT444RG.js';
|
|
9
9
|
import { useTr } from './chunk-UULVIT25.js';
|
|
10
10
|
import { useState, useEffect, useCallback, useMemo } from 'react';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { versionsOfWorkflow, VersionDiffDialog } from './chunk-B3USL2JQ.js';
|
|
2
2
|
import { historyControls } from './chunk-FNZZ5JJL.js';
|
|
3
|
-
import { useWorkflowDefinitions, useRestoreWorkflowVersion } from './chunk-
|
|
3
|
+
import { useWorkflowDefinitions, useRestoreWorkflowVersion } from './chunk-ZXLXZFWO.js';
|
|
4
4
|
import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
|
|
5
5
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
6
6
|
import { useTr } from './chunk-UULVIT25.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { structuredParameterType, parseParameterValue, liveInternalOperations, resolveNodeOperation, readDisplayOptions, getNodeDetail, useNodeRegistryRevision, fieldsFromIO, pathToExpression, NODE_CONFIGS, resolveUiSpec, fieldsFromValue, declaredOutputFields, subscribeWorkflowSaved } from './chunk-
|
|
1
|
+
import { structuredParameterType, parseParameterValue, liveInternalOperations, resolveNodeOperation, readDisplayOptions, getNodeDetail, useNodeRegistryRevision, fieldsFromIO, pathToExpression, NODE_CONFIGS, resolveUiSpec, fieldsFromValue, declaredOutputFields, subscribeWorkflowSaved } from './chunk-VYXTP6YF.js';
|
|
2
2
|
import { useBuilderReadOnly } from './chunk-SDZEAIIE.js';
|
|
3
3
|
import { useFlowStore } from './chunk-JXCJRBWD.js';
|
|
4
4
|
import { EventRegistrationsDocument } from './chunk-VAWYR6P4.js';
|
|
@@ -1,43 +1,3 @@
|
|
|
1
|
-
import { QuotaExhaustedDialog } from './chunk-5WUX3DET.js';
|
|
2
|
-
import { useTr } from './chunk-UULVIT25.js';
|
|
3
|
-
import { jsx } from 'react/jsx-runtime';
|
|
4
|
-
|
|
5
|
-
function CreateWorkflowRefusalDialog({
|
|
6
|
-
refusal,
|
|
7
|
-
onClose,
|
|
8
|
-
onUpgrade,
|
|
9
|
-
surface
|
|
10
|
-
}) {
|
|
11
|
-
const tr = useTr();
|
|
12
|
-
const notProvisioned = refusal?.kind === "quota-not-provisioned";
|
|
13
|
-
const open = refusal?.kind === "quota-exhausted" || refusal?.kind === "quota-not-provisioned";
|
|
14
|
-
return /* @__PURE__ */ jsx(
|
|
15
|
-
QuotaExhaustedDialog,
|
|
16
|
-
{
|
|
17
|
-
surface,
|
|
18
|
-
open,
|
|
19
|
-
limitHit: !notProvisioned,
|
|
20
|
-
onOpenChange: (next) => {
|
|
21
|
-
if (!next) onClose();
|
|
22
|
-
},
|
|
23
|
-
onUpgrade: () => {
|
|
24
|
-
onUpgrade();
|
|
25
|
-
onClose();
|
|
26
|
-
},
|
|
27
|
-
...notProvisioned ? {
|
|
28
|
-
title: tr(
|
|
29
|
-
"fluidgrids.components.createRefusal.notProvisionedTitle",
|
|
30
|
-
"Workflows aren't in this workspace's plan"
|
|
31
|
-
),
|
|
32
|
-
description: tr(
|
|
33
|
-
"fluidgrids.components.createRefusal.notProvisionedDescription",
|
|
34
|
-
"This workspace has no plan that includes FluidGrids workflows, so no workflow was created. Choose a plan for this workspace, or ask a workspace admin to add one."
|
|
35
|
-
)
|
|
36
|
-
} : {}
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
1
|
// src/utils/workflow-open.ts
|
|
42
2
|
var NEW_WORKFLOW_STATE = { createWorkflow: true };
|
|
43
3
|
function isCreateIntent(state) {
|
|
@@ -101,4 +61,4 @@ function pickGuidedTour(pageTours, pageId) {
|
|
|
101
61
|
return playable.find((tour) => tour.pageId === pageId) ?? null;
|
|
102
62
|
}
|
|
103
63
|
|
|
104
|
-
export {
|
|
64
|
+
export { GUIDED_FIRST_WORKFLOW_NAV, GUIDED_FIRST_WORKFLOW_STATE, GUIDED_TOUR_STATE, builderPathFor, decideMissingWorkflow, firstWorkflowProgress, isCreateIntent, isGuidedTourIntent, pickGuidedTour, withoutGuidedTourIntent };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { emptyAgentForm, agentToForm, describeRule, formToInput, AgentFormError, DEFAULT_GRANT_DAYS, MAX_GRANT_DAYS, grantDays } from './chunk-WZ3EJVS6.js';
|
|
2
|
-
import { useAgentDefinitions, useAgentDefinitionList, useConnections } from './chunk-
|
|
2
|
+
import { useAgentDefinitions, useAgentDefinitionList, useConnections } from './chunk-VYXTP6YF.js';
|
|
3
3
|
import { useTr } from './chunk-UULVIT25.js';
|
|
4
4
|
import { describeOperationError } from './chunk-JKLZ6YZ3.js';
|
|
5
5
|
import { useState, useCallback, useEffect } from 'react';
|
|
@@ -1,12 +1,99 @@
|
|
|
1
|
-
import { useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME } from './chunk-
|
|
1
|
+
import { useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME } from './chunk-VYXTP6YF.js';
|
|
2
2
|
import { ExportWorkflowCodeDocument, ShareWorkflowDocument, WorkflowSharingDocument } from './chunk-VAWYR6P4.js';
|
|
3
3
|
import { useTr } from './chunk-UULVIT25.js';
|
|
4
4
|
import { getFluidGridsClient } from './chunk-PDODDDHY.js';
|
|
5
5
|
import { describeOperationError, throwIfResultError } from './chunk-JKLZ6YZ3.js';
|
|
6
|
-
import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
|
|
7
|
-
import { createSharePrincipalLister, ResourceShareDialog } from '@burdenoff/fe-libs/connections';
|
|
8
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
9
6
|
import { AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from '@burdenoff/fe-libs/ui';
|
|
7
|
+
import { useRef, useEffect, useState, useCallback, useMemo } from 'react';
|
|
8
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
9
|
+
import { createSharePrincipalLister, ResourceShareDialog } from '@burdenoff/fe-libs/connections';
|
|
10
|
+
|
|
11
|
+
function QuotaExhaustedDialog({
|
|
12
|
+
open,
|
|
13
|
+
onOpenChange,
|
|
14
|
+
onUpgrade,
|
|
15
|
+
title,
|
|
16
|
+
description,
|
|
17
|
+
surface,
|
|
18
|
+
limitHit = true
|
|
19
|
+
}) {
|
|
20
|
+
const tr = useTr();
|
|
21
|
+
const { bus, workspaceId } = useFluidGridsAnalytics();
|
|
22
|
+
const wasOpen = useRef(false);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (open && !wasOpen.current && limitHit) {
|
|
25
|
+
emitWorkflowLimitHit(bus, { workspaceId, surface });
|
|
26
|
+
}
|
|
27
|
+
wasOpen.current = open;
|
|
28
|
+
}, [open, bus, workspaceId, surface, limitHit]);
|
|
29
|
+
const handleUpgrade = () => {
|
|
30
|
+
emitUpgradeClicked(bus, {
|
|
31
|
+
workspaceId,
|
|
32
|
+
surface: "quota-dialog",
|
|
33
|
+
quotaKey: WORKFLOWS_QUOTA_NAME
|
|
34
|
+
});
|
|
35
|
+
onUpgrade();
|
|
36
|
+
};
|
|
37
|
+
const resolvedTitle = title ?? tr(
|
|
38
|
+
"fluidgrids.components.quotaExhaustedDialog.title",
|
|
39
|
+
"Workflow Limit Reached"
|
|
40
|
+
);
|
|
41
|
+
const resolvedDescription = description ?? tr(
|
|
42
|
+
"fluidgrids.components.quotaExhaustedDialog.description",
|
|
43
|
+
"You've reached the workflow limit for your plan. Upgrade your plan to create more workflows."
|
|
44
|
+
);
|
|
45
|
+
return /* @__PURE__ */ jsx(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [
|
|
46
|
+
/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
|
|
47
|
+
/* @__PURE__ */ jsx(AlertDialogTitle, { children: resolvedTitle }),
|
|
48
|
+
/* @__PURE__ */ jsx(AlertDialogDescription, { children: resolvedDescription })
|
|
49
|
+
] }),
|
|
50
|
+
/* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
|
|
51
|
+
/* @__PURE__ */ jsx(AlertDialogCancel, { children: tr(
|
|
52
|
+
"fluidgrids.components.quotaExhaustedDialog.dismiss",
|
|
53
|
+
"Dismiss"
|
|
54
|
+
) }),
|
|
55
|
+
/* @__PURE__ */ jsx(AlertDialogAction, { onClick: handleUpgrade, children: tr(
|
|
56
|
+
"fluidgrids.components.quotaExhaustedDialog.viewPlans",
|
|
57
|
+
"View plans"
|
|
58
|
+
) })
|
|
59
|
+
] })
|
|
60
|
+
] }) });
|
|
61
|
+
}
|
|
62
|
+
function CreateWorkflowRefusalDialog({
|
|
63
|
+
refusal,
|
|
64
|
+
onClose,
|
|
65
|
+
onUpgrade,
|
|
66
|
+
surface
|
|
67
|
+
}) {
|
|
68
|
+
const tr = useTr();
|
|
69
|
+
const notProvisioned = refusal?.kind === "quota-not-provisioned";
|
|
70
|
+
const open = refusal?.kind === "quota-exhausted" || refusal?.kind === "quota-not-provisioned";
|
|
71
|
+
return /* @__PURE__ */ jsx(
|
|
72
|
+
QuotaExhaustedDialog,
|
|
73
|
+
{
|
|
74
|
+
surface,
|
|
75
|
+
open,
|
|
76
|
+
limitHit: !notProvisioned,
|
|
77
|
+
onOpenChange: (next) => {
|
|
78
|
+
if (!next) onClose();
|
|
79
|
+
},
|
|
80
|
+
onUpgrade: () => {
|
|
81
|
+
onUpgrade();
|
|
82
|
+
onClose();
|
|
83
|
+
},
|
|
84
|
+
...notProvisioned ? {
|
|
85
|
+
title: tr(
|
|
86
|
+
"fluidgrids.components.createRefusal.notProvisionedTitle",
|
|
87
|
+
"Workflows aren't in this workspace's plan"
|
|
88
|
+
),
|
|
89
|
+
description: tr(
|
|
90
|
+
"fluidgrids.components.createRefusal.notProvisionedDescription",
|
|
91
|
+
"This workspace has no plan that includes FluidGrids workflows, so no workflow was created. Choose a plan for this workspace, or ask a workspace admin to add one."
|
|
92
|
+
)
|
|
93
|
+
} : {}
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
}
|
|
10
97
|
|
|
11
98
|
// src/utils/workflow-transfer.ts
|
|
12
99
|
function asRecord(value) {
|
|
@@ -626,56 +713,5 @@ function WorkflowShareDialog({
|
|
|
626
713
|
}
|
|
627
714
|
);
|
|
628
715
|
}
|
|
629
|
-
function QuotaExhaustedDialog({
|
|
630
|
-
open,
|
|
631
|
-
onOpenChange,
|
|
632
|
-
onUpgrade,
|
|
633
|
-
title,
|
|
634
|
-
description,
|
|
635
|
-
surface,
|
|
636
|
-
limitHit = true
|
|
637
|
-
}) {
|
|
638
|
-
const tr = useTr();
|
|
639
|
-
const { bus, workspaceId } = useFluidGridsAnalytics();
|
|
640
|
-
const wasOpen = useRef(false);
|
|
641
|
-
useEffect(() => {
|
|
642
|
-
if (open && !wasOpen.current && limitHit) {
|
|
643
|
-
emitWorkflowLimitHit(bus, { workspaceId, surface });
|
|
644
|
-
}
|
|
645
|
-
wasOpen.current = open;
|
|
646
|
-
}, [open, bus, workspaceId, surface, limitHit]);
|
|
647
|
-
const handleUpgrade = () => {
|
|
648
|
-
emitUpgradeClicked(bus, {
|
|
649
|
-
workspaceId,
|
|
650
|
-
surface: "quota-dialog",
|
|
651
|
-
quotaKey: WORKFLOWS_QUOTA_NAME
|
|
652
|
-
});
|
|
653
|
-
onUpgrade();
|
|
654
|
-
};
|
|
655
|
-
const resolvedTitle = title ?? tr(
|
|
656
|
-
"fluidgrids.components.quotaExhaustedDialog.title",
|
|
657
|
-
"Workflow Limit Reached"
|
|
658
|
-
);
|
|
659
|
-
const resolvedDescription = description ?? tr(
|
|
660
|
-
"fluidgrids.components.quotaExhaustedDialog.description",
|
|
661
|
-
"You've reached the workflow limit for your plan. Upgrade your plan to create more workflows."
|
|
662
|
-
);
|
|
663
|
-
return /* @__PURE__ */ jsx(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [
|
|
664
|
-
/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
|
|
665
|
-
/* @__PURE__ */ jsx(AlertDialogTitle, { children: resolvedTitle }),
|
|
666
|
-
/* @__PURE__ */ jsx(AlertDialogDescription, { children: resolvedDescription })
|
|
667
|
-
] }),
|
|
668
|
-
/* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
|
|
669
|
-
/* @__PURE__ */ jsx(AlertDialogCancel, { children: tr(
|
|
670
|
-
"fluidgrids.components.quotaExhaustedDialog.dismiss",
|
|
671
|
-
"Dismiss"
|
|
672
|
-
) }),
|
|
673
|
-
/* @__PURE__ */ jsx(AlertDialogAction, { onClick: handleUpgrade, children: tr(
|
|
674
|
-
"fluidgrids.components.quotaExhaustedDialog.viewPlans",
|
|
675
|
-
"View plans"
|
|
676
|
-
) })
|
|
677
|
-
] })
|
|
678
|
-
] }) });
|
|
679
|
-
}
|
|
680
716
|
|
|
681
|
-
export { CODE_EXPORT_FORMATS, ImportSourceError, MAX_IMPORT_ARCHIVE_BYTES, MAX_IMPORT_SOURCE_BYTES, QuotaExhaustedDialog, WorkflowShareDialog, assertImportByteSize, canEditWorkflow, canShareWorkflow, checkTypeScriptImport, downloadWorkflowCodeExport, downloadWorkflowExport, fileBaseName, importAcceptAttribute, importFileKind, isLosslessReport, isLossyFidelityItem, lineOfNode, orderedExportFiles, parseWorkflowImport, primaryImportModule, readProjectArchive, sortFidelityItems, typeScriptImportSource, typeScriptModuleFile, useExportWorkflowAs, useWorkflowCodeExport, workflowNameFromFile };
|
|
717
|
+
export { CODE_EXPORT_FORMATS, CreateWorkflowRefusalDialog, ImportSourceError, MAX_IMPORT_ARCHIVE_BYTES, MAX_IMPORT_SOURCE_BYTES, QuotaExhaustedDialog, WorkflowShareDialog, assertImportByteSize, canEditWorkflow, canShareWorkflow, checkTypeScriptImport, downloadWorkflowCodeExport, downloadWorkflowExport, fileBaseName, importAcceptAttribute, importFileKind, isLosslessReport, isLossyFidelityItem, lineOfNode, orderedExportFiles, parseWorkflowImport, primaryImportModule, readProjectArchive, sortFidelityItems, typeScriptImportSource, typeScriptModuleFile, useExportWorkflowAs, useWorkflowCodeExport, workflowNameFromFile };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { useDurableRunFields, useRunHistory, useDeterminismStatus, useRunStackTrace, RunHistoryView, SignalRunDialog, terminateDurableRun } from './chunk-
|
|
2
|
-
import { useDurableParityRunFields, hasAgentNodeState, agentNodeTraces, orderNodesByExecution, useRunPending, useRunMetadata, ExecutionStatusBadge, NodeTimeline, RunLogViewer, NodeStatusBadge, setRunVersioningOverride } from './chunk-
|
|
3
|
-
import { useExecution, useExecutionActions, useAutoRefresh, runChainLinks, shortRunId, callbackTone, parseMetadataDefinition, overrideRequestOf } from './chunk-
|
|
1
|
+
import { useDurableRunFields, useRunHistory, useDeterminismStatus, useRunStackTrace, RunHistoryView, SignalRunDialog, terminateDurableRun } from './chunk-3T3C3475.js';
|
|
2
|
+
import { useDurableParityRunFields, hasAgentNodeState, agentNodeTraces, orderNodesByExecution, useRunPending, useRunMetadata, ExecutionStatusBadge, NodeTimeline, RunLogViewer, NodeStatusBadge, setRunVersioningOverride } from './chunk-GR3QNLFS.js';
|
|
3
|
+
import { useExecution, useExecutionActions, useAutoRefresh, runChainLinks, shortRunId, callbackTone, parseMetadataDefinition, overrideRequestOf } from './chunk-ACME5GOU.js';
|
|
4
4
|
import { fetchRunFailureClusters, OPEN_STATUSES, dismissRunFailureCluster, BUCKET_LABELS } from './chunk-Q526TUOC.js';
|
|
5
5
|
import { aiCost, formatTokens, modelLabel } from './chunk-NZAYYUQ4.js';
|
|
6
6
|
import { useRunPolicyDecisions, RunPolicyDecisions, checkCodecServerUrl, containsEncodedPayload, isEncodedPayload, encodedPayloadBytes, decodePayloads, CodecServerError } from './chunk-OJHBCOBA.js';
|
|
@@ -8,8 +8,8 @@ import { readTyped, writeTyped, useResource, fetchCodecServerSettings, fetchRunC
|
|
|
8
8
|
import { EntityTagPicker, canSaveRunAsTestCase, useWorkflowProposal, WorkflowProposalCard, MAX_CASE_NAME, saveRunAsTestCase } from './chunk-MYE6CMGK.js';
|
|
9
9
|
import { buildNodeDisplayMap, formatRunVersion, nodeDisplayTitle } from './chunk-DFFQYK2X.js';
|
|
10
10
|
import { AiCreditBalanceSlot } from './chunk-Y53CVZVV.js';
|
|
11
|
-
import { useWorkflowVersions } from './chunk-
|
|
12
|
-
import { useDurableFunctionNodesEnabled, useDurableParityEnabled, usePhaseCFlags, runSignalTargets, canSignalRun, formatElapsedMs, runDurationMs, useWorkflowTestsEnabled, durableInterfaceOf } from './chunk-
|
|
11
|
+
import { useWorkflowVersions } from './chunk-ZXLXZFWO.js';
|
|
12
|
+
import { useDurableFunctionNodesEnabled, useDurableParityEnabled, usePhaseCFlags, runSignalTargets, canSignalRun, formatElapsedMs, runDurationMs, useWorkflowTestsEnabled, durableInterfaceOf } from './chunk-VYXTP6YF.js';
|
|
13
13
|
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, SdkPermissionButton } from './chunk-ERT444RG.js';
|
|
14
14
|
import { TaskQueuesDocument, TaskQueueStatsDocument, CreateTaskQueueDocument, UpdateTaskQueueDocument, DeleteTaskQueueDocument, RunLogsDocument, RunLogAppendedDocument, ExplainRunDocument, RunAiUsageDocument } from './chunk-VAWYR6P4.js';
|
|
15
15
|
import { useTr } from './chunk-UULVIT25.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AgentsTab } from './chunk-
|
|
1
|
+
import { AgentsTab } from './chunk-QTOPG7SR.js';
|
|
2
2
|
import { ActionPoliciesTab, checkCodecServerUrl } from './chunk-OJHBCOBA.js';
|
|
3
3
|
import { useResource, fetchPauseRules, FieldError, fetchSearchAttributes, StatusPill, NativeSelect, fetchArchiveSettings, fetchCodecServerSettings, deletePauseRule, createPauseRule, deleteSearchAttribute, createSearchAttribute, saveArchiveSettings, clearArchiveSettings, saveCodecServerSettings } from './chunk-5YLS3WH5.js';
|
|
4
|
-
import { LogStreamingTab } from './chunk-
|
|
4
|
+
import { LogStreamingTab } from './chunk-CX3LABFK.js';
|
|
5
5
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
6
|
-
import { useFluidGridsFlag, FLUIDGRIDS_FLAGS, usePhaseCFlags, useSaveStatusStore, findSaveConflict, useDurableParityEnabled, useConnections } from './chunk-
|
|
6
|
+
import { useFluidGridsFlag, FLUIDGRIDS_FLAGS, usePhaseCFlags, useSaveStatusStore, findSaveConflict, useDurableParityEnabled, useConnections } from './chunk-VYXTP6YF.js';
|
|
7
7
|
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-ERT444RG.js';
|
|
8
8
|
import { useFlowStore } from './chunk-JXCJRBWD.js';
|
|
9
9
|
import { getGlobalStoreClient } from './chunk-TYI2XOSI.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FailureTriagePanel } from './chunk-Q526TUOC.js';
|
|
2
2
|
import { aiSpendPeriod, AI_SPEND_RANGE_DAYS, evidenceFacts, monthlySavingLabel, evidenceWindowDays, shortRunId, DISMISS_REASONS, MAX_DISMISS_NOTE_LENGTH, aiCost, formatTokens, runsOfWorkflowPath } from './chunk-NZAYYUQ4.js';
|
|
3
|
-
import { useDataSinks, useDataSinkData, useInsightsData, useRunReplayActions } from './chunk-
|
|
3
|
+
import { useDataSinks, useDataSinkData, useInsightsData, useRunReplayActions } from './chunk-CX3LABFK.js';
|
|
4
4
|
import { proposalCanvasPath } from './chunk-GLYINMOR.js';
|
|
5
|
-
import { useContinuousOptimisationEnabled } from './chunk-
|
|
5
|
+
import { useContinuousOptimisationEnabled } from './chunk-VYXTP6YF.js';
|
|
6
6
|
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, SdkPermissionButton } from './chunk-ERT444RG.js';
|
|
7
7
|
import { SetContinuousOptimisationEnabledDocument, FgRunOptimisationScanDocument, ProposeOptimisationDocument, WorkflowProposalDocument, DismissOptimisationSuggestionDocument, SnoozeOptimisationSuggestionDocument, WorkspaceAiUsageDocument, OptimisationSuggestionsDocument, ContinuousOptimisationSettingsDocument } from './chunk-VAWYR6P4.js';
|
|
8
8
|
import { useTr } from './chunk-UULVIT25.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { asRecord, ConditionTreeBuilder, SwitchRulesEditor, casesFromRules, isStringOptionList, optionText, coerceNumber, paramsFromOperation, resolveLoadOptionsSpec, optionListValues, parseMappingValue, optionListText } from './chunk-7XQI4U5C.js';
|
|
2
1
|
import { CodeEditorField, normalizeCodeLanguage } from './chunk-KZCNJAMK.js';
|
|
3
2
|
import { Popover, PopoverTrigger, PopoverContent } from './chunk-GTEBQQ7J.js';
|
|
4
|
-
import {
|
|
3
|
+
import { asRecord, ConditionTreeBuilder, SwitchRulesEditor, casesFromRules, isStringOptionList, optionText, coerceNumber, paramsFromOperation, resolveLoadOptionsSpec, optionListValues, parseMappingValue, optionListText } from './chunk-NEB4Y7AX.js';
|
|
4
|
+
import { AgentDefinitionSelectField } from './chunk-QTOPG7SR.js';
|
|
5
5
|
import { isAgentNodeType } from './chunk-WZ3EJVS6.js';
|
|
6
6
|
import { readAssertRulesSetting, rowsFromRules, normaliseAssertRules, ruleFromRow, describeAssertRuleProblem, operatorSpec, ASSERT_OPERATORS, emptyAssertRuleRow } from './chunk-JDLQ6QIB.js';
|
|
7
|
-
import { isParamVisible, ConnectionSelector, structuredParameterType, useRunGuard, FluidGridsContext, ExpressionEditor, formatParameterValue, parseParameterValue, useFluidGridsAnalytics, openRunQuotaUpgradePrompt } from './chunk-
|
|
7
|
+
import { isParamVisible, ConnectionSelector, structuredParameterType, useRunGuard, FluidGridsContext, ExpressionEditor, formatParameterValue, parseParameterValue, useFluidGridsAnalytics, openRunQuotaUpgradePrompt } from './chunk-VYXTP6YF.js';
|
|
8
8
|
import { useBuilderReadOnly } from './chunk-SDZEAIIE.js';
|
|
9
9
|
import { useFlowStore } from './chunk-JXCJRBWD.js';
|
|
10
10
|
import { useRunFromNodeEligibilityQuery, PreviewScheduleDocument, WebhookTestListenerDocument, StopWebhookTestListenerDocument, ListenForWebhookTestEventDocument } from './chunk-VAWYR6P4.js';
|