@burdenoff/microfe-bigconsole 2026.1008.11 → 2026.1008.12
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/bigconsole/BigConsoleRoutes.d.ts.map +1 -1
- package/dist/bigconsole/BigConsoleRoutes.js +136 -127
- package/dist/bigconsole/BigConsoleRoutes.js.map +1 -1
- package/dist/bigconsole/assistant/assistantProduct.d.ts.map +1 -1
- package/dist/bigconsole/assistant/assistantProduct.js +3 -1
- package/dist/bigconsole/assistant/assistantProduct.js.map +1 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +31 -31
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +44 -44
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js +36 -36
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardToolbar.js +59 -59
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +15 -15
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +30 -30
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +41 -41
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +34 -34
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +34 -34
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +110 -110
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +21 -21
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +46 -46
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +91 -91
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -101
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js +31 -31
- package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js +15 -15
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -1
- package/dist/bigconsole/components/dashboard/WidgetPalette.js +46 -46
- package/dist/bigconsole/components/datasink/AlertExecutionHistory.js +37 -37
- package/dist/bigconsole/components/datasink/AlertRuleEditor.js +66 -66
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js +35 -35
- package/dist/bigconsole/components/datasink/DataSinkCard.js +29 -29
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +18 -18
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +20 -20
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +47 -47
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +91 -91
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +35 -35
- package/dist/bigconsole/components/parser/DataSinkSelector.js +40 -40
- package/dist/bigconsole/components/parser/ImportParserDialog.js +120 -120
- package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
- package/dist/bigconsole/components/parser/ParserSelector.js +51 -51
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +10 -10
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +27 -27
- package/dist/bigconsole/components/preview/AiPreviewPanel.js +30 -30
- package/dist/bigconsole/components/widgets/ActionConfigDialog.js +4 -4
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +93 -93
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.js +280 -273
- package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +4 -4
- package/dist/bigconsole/components/widgets/chart/ChartConfig.js +48 -48
- package/dist/bigconsole/components/widgets/comments/WidgetComments.js +46 -46
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +61 -61
- package/dist/bigconsole/components/widgets/form/FormWidget.js +36 -36
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +42 -42
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +25 -25
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +4 -4
- package/dist/bigconsole/components/widgets/list/ListConfig.js +30 -30
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +38 -38
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +9 -9
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +9 -9
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +49 -49
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +39 -39
- package/dist/bigconsole/components/widgets/table/TableConfig.js +73 -73
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +64 -64
- package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js +15 -15
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +15 -15
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +9 -9
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +67 -67
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts +15 -0
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js +34 -0
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js.map +1 -0
- package/dist/bigconsole/hooks/useDrilldown.js +3 -3
- package/dist/bigconsole/hooks/useGlobalFilters.js +3 -3
- package/dist/bigconsole/pages/AdminPage.js +130 -130
- package/dist/bigconsole/pages/DashboardBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DashboardBuilderPage.js +72 -60
- package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DashboardViewPage.js +1 -1
- package/dist/bigconsole/pages/DataSinkAlertsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DataSinkAlertsPage.js +30 -23
- package/dist/bigconsole/pages/DataSinkAlertsPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js +272 -263
- package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkViewPage.js +1 -1
- package/dist/bigconsole/pages/DataSinksPage.js +1 -1
- package/dist/bigconsole/pages/DataSourcesPage.js +5 -5
- package/dist/bigconsole/pages/InsightsPage.js +181 -181
- package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
- package/dist/bigconsole/pages/OverviewPage.js +47 -47
- package/dist/bigconsole/pages/OverviewPage.js.map +1 -1
- package/dist/bigconsole/pages/ParserBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/ParserBuilderPage.js +227 -211
- package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/ParserViewPage.js +97 -97
- package/dist/bigconsole/pages/PipelineBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.js +256 -214
- package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelineViewPage.js +146 -146
- package/dist/bigconsole/pages/PipelinesPage.js +88 -88
- package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
- package/dist/bigconsole/pages/SettingsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/SettingsPage.js +179 -173
- package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
- package/dist/bigconsole/pages/WidgetDemoPage.js +42 -42
- package/dist/bigconsole/pages/WorkflowViewPage.js +1 -1
- package/dist/bigconsole/pages/WorkflowsPage.js +141 -141
- package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +12 -12
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +34 -34
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +79 -79
- package/dist/bigconsole/renderers/adapters/CustomRenderer.js +46 -46
- package/dist/bigconsole/store/widgetStore.d.ts +12 -0
- package/dist/bigconsole/store/widgetStore.d.ts.map +1 -1
- package/dist/bigconsole/store/widgetStore.js +3 -1
- package/dist/bigconsole/store/widgetStore.js.map +1 -1
- package/dist/bigconsole/utils/formDirty.d.ts +83 -0
- package/dist/bigconsole/utils/formDirty.d.ts.map +1 -0
- package/dist/bigconsole/utils/formDirty.js +23 -0
- package/dist/bigconsole/utils/formDirty.js.map +1 -0
- package/dist/bigconsole/utils/layoutBaseline.d.ts +131 -0
- package/dist/bigconsole/utils/layoutBaseline.d.ts.map +1 -0
- package/dist/bigconsole/utils/layoutBaseline.js +98 -0
- package/dist/bigconsole/utils/layoutBaseline.js.map +1 -0
- package/dist/translations/en.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BigConsoleRoutes.d.ts","sourceRoot":"","sources":["../../src/bigconsole/BigConsoleRoutes.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"BigConsoleRoutes.d.ts","sourceRoot":"","sources":["../../src/bigconsole/BigConsoleRoutes.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AA+EnD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,cAAwD,CAAC;AAsQrF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,+BAiF1D"}
|
|
@@ -8,26 +8,35 @@ import { WorkflowOpenGuard as a } from "./components/workflow/WorkflowOpenGuard.
|
|
|
8
8
|
import { Suspense as o, lazy as s, memo as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
|
|
9
9
|
import { Navigate as p, Route as m, Routes as h, useParams as g } from "react-router";
|
|
10
10
|
import { Spinner as _ } from "@burdenoff/fe-libs/ui";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
11
|
+
import { useUnsavedChanges as v } from "@burdenoff/fe-libs/shared/hooks";
|
|
12
|
+
import { useI18n as y } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
13
|
+
import { useApolloClient as b } from "@apollo/client/react";
|
|
14
|
+
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
15
|
+
import { ExecutionDetailPage as C, ExecutionsListPage as w, HistoryPage as T, NodesPage as E, SettingsPage as D, TemplatesPage as O, WorkflowBuilderPage as k } from "@burdenoff/fluidgrids-fe-sdk";
|
|
14
16
|
//#region src/bigconsole/BigConsoleRoutes.tsx
|
|
15
|
-
var
|
|
16
|
-
|
|
17
|
-
return
|
|
17
|
+
var A = c(function() {
|
|
18
|
+
let { t: e } = y();
|
|
19
|
+
return v({
|
|
20
|
+
id: "workflow-editor",
|
|
21
|
+
label: e("bigconsole.assistant.unsaved.workflowEditor", "the workflow editor"),
|
|
22
|
+
dirty: !0
|
|
23
|
+
}), /* @__PURE__ */ x(k, {});
|
|
24
|
+
}), j = s(() => import("./pages/OverviewPage.js")), M = s(() => import("./pages/DashboardsPage.js")), N = s(() => import("./pages/DashboardViewPage.js")), ee = s(() => import("./pages/DashboardBuilderPage.js")), P = s(() => import("./pages/DataSourcesPage.js")), F = s(() => import("./pages/InsightsPage.js")), I = s(() => import("./pages/SettingsPage.js")), L = s(() => import("./pages/WidgetDemoPage.js")), R = s(() => import("./pages/WorkflowsPage.js").then((e) => ({ default: e.WorkflowsPage }))), z = s(() => import("./pages/WorkflowViewPage.js").then((e) => ({ default: e.WorkflowViewPage }))), B = s(() => import("./pages/DataSinksPage.js")), V = s(() => import("./pages/DataSinkViewPage.js")), H = s(() => import("./pages/DataSinkAlertsPage.js")), U = s(() => import("./pages/DataSinkBuilderPage.js")), W = s(() => import("./pages/DataParsersPage.js")), G = s(() => import("./pages/ParserViewPage.js")), K = s(() => import("./pages/ParserBuilderPage.js")), q = s(() => import("./pages/PipelinesPage.js")), J = s(() => import("./pages/PipelineViewPage.js")), Y = s(() => import("./pages/PipelineBuilderPage.js"));
|
|
25
|
+
function X() {
|
|
26
|
+
return /* @__PURE__ */ x("div", {
|
|
18
27
|
className: "flex items-center justify-center min-h-[400px]",
|
|
19
|
-
children: /* @__PURE__ */
|
|
28
|
+
children: /* @__PURE__ */ x(_, { className: "h-8 w-8" })
|
|
20
29
|
});
|
|
21
30
|
}
|
|
22
|
-
var
|
|
23
|
-
function
|
|
24
|
-
return /* @__PURE__ */
|
|
25
|
-
to: u(() =>
|
|
31
|
+
var Z = () => `/workflows/workflow/${crypto.randomUUID()}/v1`;
|
|
32
|
+
function Q() {
|
|
33
|
+
return /* @__PURE__ */ x(p, {
|
|
34
|
+
to: u(() => Z(), []),
|
|
26
35
|
replace: !0,
|
|
27
36
|
state: i
|
|
28
37
|
});
|
|
29
38
|
}
|
|
30
|
-
var
|
|
39
|
+
var te = c(function() {
|
|
31
40
|
let { workflowId: t } = g(), i = e(), { fetchWorkflow: a } = n({ skipFetch: !0 }), [o, s] = f(null), c = d(0);
|
|
32
41
|
return l(() => {
|
|
33
42
|
if (!t) {
|
|
@@ -51,23 +60,23 @@ var Z = c(function() {
|
|
|
51
60
|
t,
|
|
52
61
|
a,
|
|
53
62
|
i
|
|
54
|
-
]), o ? /* @__PURE__ */
|
|
63
|
+
]), o ? /* @__PURE__ */ S("div", {
|
|
55
64
|
className: "p-6 flex flex-col items-center justify-center min-h-[400px] text-center gap-4",
|
|
56
|
-
children: [/* @__PURE__ */
|
|
65
|
+
children: [/* @__PURE__ */ x("p", {
|
|
57
66
|
className: "text-sm text-text-secondary",
|
|
58
67
|
children: o
|
|
59
|
-
}), /* @__PURE__ */
|
|
68
|
+
}), /* @__PURE__ */ x("button", {
|
|
60
69
|
type: "button",
|
|
61
70
|
onClick: () => i("/workflows"),
|
|
62
71
|
className: "px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken hover:bg-border-default rounded-md transition-colors",
|
|
63
72
|
children: "Back to Workflows"
|
|
64
73
|
})]
|
|
65
|
-
}) : /* @__PURE__ */
|
|
74
|
+
}) : /* @__PURE__ */ x("div", {
|
|
66
75
|
className: "flex items-center justify-center min-h-[400px]",
|
|
67
|
-
children: /* @__PURE__ */
|
|
76
|
+
children: /* @__PURE__ */ x(_, { className: "h-8 w-8" })
|
|
68
77
|
});
|
|
69
|
-
}),
|
|
70
|
-
let { id: n, version: i } = g(), o = e(), s =
|
|
78
|
+
}), ne = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i, $ = c(function() {
|
|
79
|
+
let { id: n, version: i } = g(), o = e(), s = b(), c = !!n && ne.test(n), [u, p] = f(null), [m, h] = f(null), [v, y] = f(0), C = d(0);
|
|
71
80
|
return l(() => {
|
|
72
81
|
if (!n || !c) return;
|
|
73
82
|
C.current = 0;
|
|
@@ -95,225 +104,225 @@ var Z = c(function() {
|
|
|
95
104
|
i,
|
|
96
105
|
s,
|
|
97
106
|
o,
|
|
98
|
-
|
|
99
|
-
]), !c || u === n ? /* @__PURE__ */
|
|
107
|
+
v
|
|
108
|
+
]), !c || u === n ? /* @__PURE__ */ x(a, {
|
|
100
109
|
workflowKey: n ?? "",
|
|
101
|
-
children: /* @__PURE__ */
|
|
102
|
-
}) : m === n ? /* @__PURE__ */
|
|
110
|
+
children: /* @__PURE__ */ x(A, {})
|
|
111
|
+
}) : m === n ? /* @__PURE__ */ S("div", {
|
|
103
112
|
className: "p-6 flex flex-col items-center justify-center min-h-[400px] text-center gap-4",
|
|
104
|
-
children: [/* @__PURE__ */
|
|
113
|
+
children: [/* @__PURE__ */ x("p", {
|
|
105
114
|
className: "text-sm text-text-secondary",
|
|
106
115
|
children: "Couldn't load this workflow. Please try again."
|
|
107
|
-
}), /* @__PURE__ */
|
|
116
|
+
}), /* @__PURE__ */ S("div", {
|
|
108
117
|
className: "flex items-center gap-2",
|
|
109
|
-
children: [/* @__PURE__ */
|
|
118
|
+
children: [/* @__PURE__ */ x("button", {
|
|
110
119
|
type: "button",
|
|
111
120
|
onClick: () => {
|
|
112
|
-
h(null),
|
|
121
|
+
h(null), y((e) => e + 1);
|
|
113
122
|
},
|
|
114
123
|
className: "px-4 py-2 text-sm font-medium text-action-primary-fg bg-action-primary-bg hover:bg-action-primary-bgHover rounded-md transition-colors",
|
|
115
124
|
children: "Try again"
|
|
116
|
-
}), /* @__PURE__ */
|
|
125
|
+
}), /* @__PURE__ */ x("button", {
|
|
117
126
|
type: "button",
|
|
118
127
|
onClick: () => o("/workflows"),
|
|
119
128
|
className: "px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken hover:bg-border-default rounded-md transition-colors",
|
|
120
129
|
children: "Back to Workflows"
|
|
121
130
|
})]
|
|
122
131
|
})]
|
|
123
|
-
}) : /* @__PURE__ */
|
|
132
|
+
}) : /* @__PURE__ */ x("div", {
|
|
124
133
|
className: "flex items-center justify-center min-h-[400px]",
|
|
125
|
-
children: /* @__PURE__ */
|
|
134
|
+
children: /* @__PURE__ */ x(_, { className: "h-8 w-8" })
|
|
126
135
|
});
|
|
127
136
|
});
|
|
128
|
-
function
|
|
129
|
-
return e.routePage === "workflow-feeds" ? /* @__PURE__ */
|
|
130
|
-
fallback: /* @__PURE__ */
|
|
131
|
-
children: /* @__PURE__ */
|
|
132
|
-
}) : e.routePage === "workflow-detail" ? /* @__PURE__ */
|
|
133
|
-
fallback: /* @__PURE__ */
|
|
134
|
-
children: /* @__PURE__ */
|
|
135
|
-
}) : /* @__PURE__ */
|
|
136
|
-
fallback: /* @__PURE__ */
|
|
137
|
-
children: /* @__PURE__ */
|
|
138
|
-
/* @__PURE__ */
|
|
137
|
+
function re(e) {
|
|
138
|
+
return e.routePage === "workflow-feeds" ? /* @__PURE__ */ x(o, {
|
|
139
|
+
fallback: /* @__PURE__ */ x(X, {}),
|
|
140
|
+
children: /* @__PURE__ */ x(R, {})
|
|
141
|
+
}) : e.routePage === "workflow-detail" ? /* @__PURE__ */ x(o, {
|
|
142
|
+
fallback: /* @__PURE__ */ x(X, {}),
|
|
143
|
+
children: /* @__PURE__ */ x(z, {})
|
|
144
|
+
}) : /* @__PURE__ */ x(o, {
|
|
145
|
+
fallback: /* @__PURE__ */ x(X, {}),
|
|
146
|
+
children: /* @__PURE__ */ S(h, { children: [
|
|
147
|
+
/* @__PURE__ */ x(m, {
|
|
139
148
|
path: "/",
|
|
140
|
-
element: /* @__PURE__ */
|
|
149
|
+
element: /* @__PURE__ */ x(j, {})
|
|
141
150
|
}),
|
|
142
|
-
/* @__PURE__ */
|
|
151
|
+
/* @__PURE__ */ x(m, {
|
|
143
152
|
path: "/dashboards",
|
|
144
|
-
element: /* @__PURE__ */
|
|
153
|
+
element: /* @__PURE__ */ x(M, {})
|
|
145
154
|
}),
|
|
146
|
-
/* @__PURE__ */
|
|
155
|
+
/* @__PURE__ */ x(m, {
|
|
147
156
|
path: "/dashboards/:dashboardId",
|
|
148
|
-
element: /* @__PURE__ */
|
|
157
|
+
element: /* @__PURE__ */ x(N, {})
|
|
149
158
|
}),
|
|
150
|
-
/* @__PURE__ */
|
|
159
|
+
/* @__PURE__ */ x(m, {
|
|
151
160
|
path: "/dashboards/:dashboardId/builder",
|
|
152
|
-
element: /* @__PURE__ */
|
|
161
|
+
element: /* @__PURE__ */ x(ee, {})
|
|
153
162
|
}),
|
|
154
|
-
/* @__PURE__ */
|
|
163
|
+
/* @__PURE__ */ x(m, {
|
|
155
164
|
path: "/datasources",
|
|
156
|
-
element: /* @__PURE__ */
|
|
165
|
+
element: /* @__PURE__ */ x(P, {})
|
|
157
166
|
}),
|
|
158
|
-
/* @__PURE__ */
|
|
167
|
+
/* @__PURE__ */ x(m, {
|
|
159
168
|
path: "/insights",
|
|
160
|
-
element: /* @__PURE__ */
|
|
169
|
+
element: /* @__PURE__ */ x(F, {})
|
|
161
170
|
}),
|
|
162
|
-
/* @__PURE__ */
|
|
171
|
+
/* @__PURE__ */ x(m, {
|
|
163
172
|
path: "/settings",
|
|
164
|
-
element: /* @__PURE__ */
|
|
173
|
+
element: /* @__PURE__ */ x(I, {})
|
|
165
174
|
}),
|
|
166
|
-
/* @__PURE__ */
|
|
175
|
+
/* @__PURE__ */ x(m, {
|
|
167
176
|
path: "/widgets/demo",
|
|
168
|
-
element: /* @__PURE__ */
|
|
177
|
+
element: /* @__PURE__ */ x(L, {})
|
|
169
178
|
}),
|
|
170
|
-
/* @__PURE__ */
|
|
179
|
+
/* @__PURE__ */ x(m, {
|
|
171
180
|
path: "/datasinks",
|
|
172
|
-
element: /* @__PURE__ */
|
|
181
|
+
element: /* @__PURE__ */ x(B, {})
|
|
173
182
|
}),
|
|
174
|
-
/* @__PURE__ */
|
|
183
|
+
/* @__PURE__ */ x(m, {
|
|
175
184
|
path: "/datasinks/new",
|
|
176
|
-
element: /* @__PURE__ */
|
|
185
|
+
element: /* @__PURE__ */ x(U, {})
|
|
177
186
|
}),
|
|
178
|
-
/* @__PURE__ */
|
|
187
|
+
/* @__PURE__ */ x(m, {
|
|
179
188
|
path: "/datasinks/:dataSinkId",
|
|
180
|
-
element: /* @__PURE__ */
|
|
189
|
+
element: /* @__PURE__ */ x(V, {})
|
|
181
190
|
}),
|
|
182
|
-
/* @__PURE__ */
|
|
191
|
+
/* @__PURE__ */ x(m, {
|
|
183
192
|
path: "/datasinks/:dataSinkId/edit",
|
|
184
|
-
element: /* @__PURE__ */
|
|
193
|
+
element: /* @__PURE__ */ x(U, {})
|
|
185
194
|
}),
|
|
186
|
-
/* @__PURE__ */
|
|
195
|
+
/* @__PURE__ */ x(m, {
|
|
187
196
|
path: "/datasinks/:dataSinkId/alerts",
|
|
188
|
-
element: /* @__PURE__ */
|
|
197
|
+
element: /* @__PURE__ */ x(H, {})
|
|
189
198
|
}),
|
|
190
|
-
/* @__PURE__ */
|
|
199
|
+
/* @__PURE__ */ x(m, {
|
|
191
200
|
path: "/parsers",
|
|
192
|
-
element: /* @__PURE__ */
|
|
201
|
+
element: /* @__PURE__ */ x(W, {})
|
|
193
202
|
}),
|
|
194
|
-
/* @__PURE__ */
|
|
203
|
+
/* @__PURE__ */ x(m, {
|
|
195
204
|
path: "/parsers/new",
|
|
196
|
-
element: /* @__PURE__ */
|
|
205
|
+
element: /* @__PURE__ */ x(K, {})
|
|
197
206
|
}),
|
|
198
|
-
/* @__PURE__ */
|
|
207
|
+
/* @__PURE__ */ x(m, {
|
|
199
208
|
path: "/parsers/:parserId",
|
|
200
|
-
element: /* @__PURE__ */
|
|
209
|
+
element: /* @__PURE__ */ x(G, {})
|
|
201
210
|
}),
|
|
202
|
-
/* @__PURE__ */
|
|
211
|
+
/* @__PURE__ */ x(m, {
|
|
203
212
|
path: "/parsers/:parserId/edit",
|
|
204
|
-
element: /* @__PURE__ */
|
|
213
|
+
element: /* @__PURE__ */ x(K, {})
|
|
205
214
|
}),
|
|
206
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ x(m, {
|
|
207
216
|
path: "/dashboards/:consoleId/parsers",
|
|
208
|
-
element: /* @__PURE__ */
|
|
217
|
+
element: /* @__PURE__ */ x(W, {})
|
|
209
218
|
}),
|
|
210
|
-
/* @__PURE__ */
|
|
219
|
+
/* @__PURE__ */ x(m, {
|
|
211
220
|
path: "/dashboards/:consoleId/parsers/new",
|
|
212
|
-
element: /* @__PURE__ */
|
|
221
|
+
element: /* @__PURE__ */ x(K, {})
|
|
213
222
|
}),
|
|
214
|
-
/* @__PURE__ */
|
|
223
|
+
/* @__PURE__ */ x(m, {
|
|
215
224
|
path: "/dashboards/:consoleId/parsers/:parserId",
|
|
216
|
-
element: /* @__PURE__ */
|
|
225
|
+
element: /* @__PURE__ */ x(G, {})
|
|
217
226
|
}),
|
|
218
|
-
/* @__PURE__ */
|
|
227
|
+
/* @__PURE__ */ x(m, {
|
|
219
228
|
path: "/dashboards/:consoleId/parsers/:parserId/edit",
|
|
220
|
-
element: /* @__PURE__ */
|
|
229
|
+
element: /* @__PURE__ */ x(K, {})
|
|
221
230
|
}),
|
|
222
|
-
/* @__PURE__ */
|
|
231
|
+
/* @__PURE__ */ x(m, {
|
|
223
232
|
path: "/workflows",
|
|
224
|
-
element: /* @__PURE__ */
|
|
233
|
+
element: /* @__PURE__ */ x(R, {})
|
|
225
234
|
}),
|
|
226
|
-
/* @__PURE__ */
|
|
235
|
+
/* @__PURE__ */ x(m, {
|
|
227
236
|
path: "/workflows/feeds",
|
|
228
|
-
element: /* @__PURE__ */
|
|
237
|
+
element: /* @__PURE__ */ x(R, {})
|
|
229
238
|
}),
|
|
230
|
-
/* @__PURE__ */
|
|
239
|
+
/* @__PURE__ */ x(m, {
|
|
231
240
|
path: "/workflows/details/:workflowId",
|
|
232
|
-
element: /* @__PURE__ */
|
|
241
|
+
element: /* @__PURE__ */ x(z, {})
|
|
233
242
|
}),
|
|
234
|
-
/* @__PURE__ */
|
|
243
|
+
/* @__PURE__ */ x(m, {
|
|
235
244
|
path: "/workflows/list",
|
|
236
|
-
element: /* @__PURE__ */
|
|
245
|
+
element: /* @__PURE__ */ x(R, {})
|
|
237
246
|
}),
|
|
238
|
-
/* @__PURE__ */
|
|
247
|
+
/* @__PURE__ */ x(m, {
|
|
239
248
|
path: "/workflows/new",
|
|
240
|
-
element: /* @__PURE__ */
|
|
249
|
+
element: /* @__PURE__ */ x(Q, {})
|
|
241
250
|
}),
|
|
242
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ x(m, {
|
|
243
252
|
path: "/workflows/builder",
|
|
244
|
-
element: /* @__PURE__ */
|
|
253
|
+
element: /* @__PURE__ */ x(A, {})
|
|
245
254
|
}),
|
|
246
|
-
/* @__PURE__ */
|
|
255
|
+
/* @__PURE__ */ x(m, {
|
|
247
256
|
path: "/workflows/builder/:id/:version",
|
|
248
|
-
element: /* @__PURE__ */
|
|
257
|
+
element: /* @__PURE__ */ x($, {})
|
|
249
258
|
}),
|
|
250
|
-
/* @__PURE__ */
|
|
259
|
+
/* @__PURE__ */ x(m, {
|
|
251
260
|
path: "/workflows/workflow/:id/:version",
|
|
252
|
-
element: /* @__PURE__ */
|
|
261
|
+
element: /* @__PURE__ */ x($, {})
|
|
253
262
|
}),
|
|
254
|
-
/* @__PURE__ */
|
|
263
|
+
/* @__PURE__ */ x(m, {
|
|
255
264
|
path: "/workflows/runs",
|
|
256
|
-
element: /* @__PURE__ */
|
|
265
|
+
element: /* @__PURE__ */ x(w, {})
|
|
257
266
|
}),
|
|
258
|
-
/* @__PURE__ */
|
|
267
|
+
/* @__PURE__ */ x(m, {
|
|
259
268
|
path: "/workflows/runs/:runId",
|
|
260
|
-
element: /* @__PURE__ */
|
|
269
|
+
element: /* @__PURE__ */ x(C, {})
|
|
261
270
|
}),
|
|
262
|
-
/* @__PURE__ */
|
|
271
|
+
/* @__PURE__ */ x(m, {
|
|
263
272
|
path: "/workflows/history",
|
|
264
|
-
element: /* @__PURE__ */
|
|
273
|
+
element: /* @__PURE__ */ x(T, {})
|
|
265
274
|
}),
|
|
266
|
-
/* @__PURE__ */
|
|
275
|
+
/* @__PURE__ */ x(m, {
|
|
267
276
|
path: "/workflows/templates",
|
|
268
|
-
element: /* @__PURE__ */
|
|
277
|
+
element: /* @__PURE__ */ x(O, {})
|
|
269
278
|
}),
|
|
270
|
-
/* @__PURE__ */
|
|
279
|
+
/* @__PURE__ */ x(m, {
|
|
271
280
|
path: "/workflows/nodes",
|
|
272
|
-
element: /* @__PURE__ */
|
|
281
|
+
element: /* @__PURE__ */ x(E, {})
|
|
273
282
|
}),
|
|
274
|
-
/* @__PURE__ */
|
|
283
|
+
/* @__PURE__ */ x(m, {
|
|
275
284
|
path: "/workflows/settings",
|
|
276
|
-
element: /* @__PURE__ */
|
|
285
|
+
element: /* @__PURE__ */ x(D, {})
|
|
277
286
|
}),
|
|
278
|
-
/* @__PURE__ */
|
|
287
|
+
/* @__PURE__ */ x(m, {
|
|
279
288
|
path: "/workflows/:workflowId",
|
|
280
|
-
element: /* @__PURE__ */
|
|
289
|
+
element: /* @__PURE__ */ x(z, {})
|
|
281
290
|
}),
|
|
282
|
-
/* @__PURE__ */
|
|
291
|
+
/* @__PURE__ */ x(m, {
|
|
283
292
|
path: "/workflows/:workflowId/edit",
|
|
284
|
-
element: /* @__PURE__ */
|
|
293
|
+
element: /* @__PURE__ */ x(te, {})
|
|
285
294
|
}),
|
|
286
|
-
/* @__PURE__ */
|
|
295
|
+
/* @__PURE__ */ x(m, {
|
|
287
296
|
path: "/workflow/:id/:version",
|
|
288
|
-
element: /* @__PURE__ */
|
|
297
|
+
element: /* @__PURE__ */ x($, {})
|
|
289
298
|
}),
|
|
290
|
-
/* @__PURE__ */
|
|
299
|
+
/* @__PURE__ */ x(m, {
|
|
291
300
|
path: "/list",
|
|
292
|
-
element: /* @__PURE__ */
|
|
301
|
+
element: /* @__PURE__ */ x(p, {
|
|
293
302
|
to: "/bigconsole/workflows/list",
|
|
294
303
|
replace: !0
|
|
295
304
|
})
|
|
296
305
|
}),
|
|
297
|
-
/* @__PURE__ */
|
|
306
|
+
/* @__PURE__ */ x(m, {
|
|
298
307
|
path: "/pipelines",
|
|
299
|
-
element: /* @__PURE__ */
|
|
308
|
+
element: /* @__PURE__ */ x(q, {})
|
|
300
309
|
}),
|
|
301
|
-
/* @__PURE__ */
|
|
310
|
+
/* @__PURE__ */ x(m, {
|
|
302
311
|
path: "/pipelines/new",
|
|
303
|
-
element: /* @__PURE__ */
|
|
312
|
+
element: /* @__PURE__ */ x(Y, {})
|
|
304
313
|
}),
|
|
305
|
-
/* @__PURE__ */
|
|
314
|
+
/* @__PURE__ */ x(m, {
|
|
306
315
|
path: "/pipelines/:pipelineId",
|
|
307
|
-
element: /* @__PURE__ */
|
|
316
|
+
element: /* @__PURE__ */ x(J, {})
|
|
308
317
|
}),
|
|
309
|
-
/* @__PURE__ */
|
|
318
|
+
/* @__PURE__ */ x(m, {
|
|
310
319
|
path: "/pipelines/:pipelineId/edit",
|
|
311
|
-
element: /* @__PURE__ */
|
|
320
|
+
element: /* @__PURE__ */ x(Y, {})
|
|
312
321
|
})
|
|
313
322
|
] })
|
|
314
323
|
});
|
|
315
324
|
}
|
|
316
325
|
//#endregion
|
|
317
|
-
export {
|
|
326
|
+
export { re as BigConsoleRoutes, Z as newWorkflowPath };
|
|
318
327
|
|
|
319
328
|
//# sourceMappingURL=BigConsoleRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BigConsoleRoutes.js","names":[],"sources":["../../src/bigconsole/BigConsoleRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, memo, useState, useMemo, useEffect, useRef } from 'react';\nimport { Route, Routes, Navigate, useParams } from 'react-router';\nimport { type BigConsoleRootProps } from './types';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { useApolloClient } from '@apollo/client/react';\nimport { useAppNavigate } from './contexts';\nimport { useWorkflowOperations } from './hooks/useWorkflowOperations';\nimport { GetWorkflowDocument } from '../generated/wspace-operations';\nimport { BOOTSTRAP_RETRY_DELAY_MS } from './constants';\nimport { CREATE_WORKFLOW_STATE } from './workflowOpen';\nimport { WorkflowOpenGuard } from './components/workflow/WorkflowOpenGuard';\n\n// Import FluidGrids SDK workflow components (EXACT same as microfe-workflows)\nimport {\n WorkflowBuilderPage as SDKWorkflowBuilderPage,\n ExecutionsListPage,\n ExecutionDetailPage,\n HistoryPage,\n TemplatesPage,\n NodesPage,\n SettingsPage as WorkflowSettingsPage,\n} from '@burdenoff/fluidgrids-fe-sdk';\n\n// Lazy-loaded pages\nconst OverviewPage = lazy(() => import('./pages/OverviewPage'));\nconst DashboardsPage = lazy(() => import('./pages/DashboardsPage'));\nconst DashboardViewPage = lazy(() => import('./pages/DashboardViewPage'));\nconst DashboardBuilderPage = lazy(() => import('./pages/DashboardBuilderPage'));\nconst DataSourcesPage = lazy(() => import('./pages/DataSourcesPage'));\nconst InsightsPage = lazy(() => import('./pages/InsightsPage'));\nconst SettingsPage = lazy(() => import('./pages/SettingsPage'));\nconst WidgetDemoPage = lazy(() => import('./pages/WidgetDemoPage'));\n// BigConsole-native workflow pages (query bigconsole-svc, not workflow-svc)\n// These use named exports (no default export), so we remap via .then()\nconst WorkflowsPage = lazy(() => import('./pages/WorkflowsPage').then((m) => ({ default: m.WorkflowsPage })));\nconst WorkflowViewPage = lazy(() => import('./pages/WorkflowViewPage').then((m) => ({ default: m.WorkflowViewPage })));\n// DataSink Pages\nconst DataSinksPage = lazy(() => import('./pages/DataSinksPage'));\nconst DataSinkViewPage = lazy(() => import('./pages/DataSinkViewPage'));\nconst DataSinkAlertsPage = lazy(() => import('./pages/DataSinkAlertsPage'));\nconst DataSinkBuilderPage = lazy(() => import('./pages/DataSinkBuilderPage'));\n// Parser Pages\nconst DataParsersPage = lazy(() => import('./pages/DataParsersPage'));\nconst ParserViewPage = lazy(() => import('./pages/ParserViewPage'));\nconst ParserBuilderPage = lazy(() => import('./pages/ParserBuilderPage'));\n// Pipeline Pages\nconst PipelinesPage = lazy(() => import('./pages/PipelinesPage'));\nconst PipelineViewPage = lazy(() => import('./pages/PipelineViewPage'));\nconst PipelineBuilderPage = lazy(() => import('./pages/PipelineBuilderPage'));\n\n// Loading fallback component\nfunction PageLoader() {\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <Spinner className=\"h-8 w-8\" />\n </div>\n );\n}\n\n/**\n * Generate a new workflow builder path with a fresh UUID key.\n *\n * Navigate to it with `NEW_WORKFLOW_NAV` (router state): opening a builder path\n * only creates a definition when the navigation says it is an explicit \"new\n * workflow\" — a bare link to an unknown key shows a not-found state (BOFF-8060).\n */\nexport const newWorkflowPath = () => `/workflows/workflow/${crypto.randomUUID()}/v1`;\n\n/**\n * Redirect /workflows/new to a UUID-based URL.\n * Uses <Navigate> for synchronous redirect (no blank frame).\n */\nfunction WorkflowNewRedirect() {\n const path = useMemo(() => newWorkflowPath(), []);\n return <Navigate to={path} replace state={CREATE_WORKFLOW_STATE} />;\n}\n\n/**\n * Bridge component: resolves a BigConsole workflow ID to its externalWorkflowId\n * and navigates to the SDK's visual builder route.\n *\n * Route: /workflows/:workflowId/edit\n * Redirects to: /workflows/workflow/{workflowKey}/v1\n */\nconst WorkflowEditBridge = memo(function WorkflowEditBridge() {\n const { workflowId } = useParams<{ workflowId: string }>();\n const navigate = useAppNavigate();\n const { fetchWorkflow } = useWorkflowOperations({ skipFetch: true });\n const [error, setError] = useState<string | null>(null);\n const retryCount = useRef(0);\n\n useEffect(() => {\n if (!workflowId) {\n setError('No workflow ID provided');\n return;\n }\n\n // Reset retry budget and error when workflowId changes so a\n // previous failed attempt doesn't consume the new workflow's retry.\n retryCount.current = 0;\n setError(null);\n let cancelled = false;\n\n const handleResult = (workflow: Awaited<ReturnType<typeof fetchWorkflow>>) => {\n if (cancelled) return;\n\n if (workflow?.key) {\n // Navigate to the SDK builder route using the workflow key (e.g. \"github_user_profile\")\n // and default version \"v1\". The FluidGrids SDK fetches the definition by workflowKey.\n // Replace history so the bridge doesn't trap the back button.\n navigate(`/workflows/workflow/${workflow.key}/v1`, { replace: true });\n } else if (workflow) {\n // Workflow exists but has no key — open SDK builder in create mode\n navigate(`/workflows/builder`, { replace: true });\n } else if (retryCount.current < 1) {\n // On full-page loads the auth/workspace context may not be bootstrapped yet,\n // causing a false null. Retry once after a short delay (same pattern as WorkflowViewPage).\n retryCount.current += 1;\n setTimeout(() => {\n if (!cancelled) {\n fetchWorkflow(workflowId)\n .then(handleResult)\n .catch((err) => {\n if (!cancelled) setError(err?.message ?? 'Failed to load workflow');\n });\n }\n }, BOOTSTRAP_RETRY_DELAY_MS);\n } else {\n setError('Workflow not found');\n }\n };\n\n fetchWorkflow(workflowId)\n .then(handleResult)\n .catch((err) => {\n if (!cancelled) setError(err?.message ?? 'Failed to load workflow');\n });\n\n return () => {\n cancelled = true;\n };\n }, [workflowId, fetchWorkflow, navigate]);\n\n if (error) {\n return (\n <div className=\"p-6 flex flex-col items-center justify-center min-h-[400px] text-center gap-4\">\n <p className=\"text-sm text-text-secondary\">{error}</p>\n <button\n type=\"button\"\n onClick={() => navigate('/workflows')}\n className=\"px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken hover:bg-border-default rounded-md transition-colors\"\n >\n Back to Workflows\n </button>\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <Spinner className=\"h-8 w-8\" />\n </div>\n );\n});\n\n/**\n * Matches a canonical v4-style UUID. BigConsole workflow RECORD ids are UUIDs;\n * workflow KEYS are human slugs (e.g. \"users_analytics\"). New-workflow URLs also\n * use a fresh `crypto.randomUUID()` as the builder key. We only attempt record\n * resolution for UUID-shaped `:id`s — slugs are always real keys and skip the\n * lookup entirely (no extra round-trip, no spinner flash).\n */\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\n/** Minimal shape of the GetWorkflow query — the resolver only needs the key. */\ntype WorkflowKeyLookup = { workflow: { key: string | null } | null };\n\n/**\n * Guards the SDK visual builder route.\n *\n * The SDK builder loads its definition from workflow-svc using the URL `:id` as\n * the `workflowKey`. That only works when `:id` is the workflow KEY. When a\n * BigConsole workflow RECORD id (a UUID) reaches the builder — via the SDK\n * card's `navigate(\"../workflow/\" + workflow.workflow_key + ...)`, a bookmarked\n * record-id URL, etc. — no definition matches that key, so the canvas is empty\n * AND the SDK silently creates a phantom 0-node definition keyed by the UUID.\n *\n * This resolver closes that gap centrally (the same id→key resolution the\n * `/workflows/:workflowId/edit` `WorkflowEditBridge` does, but applied to the\n * builder route itself so EVERY entry point is covered):\n * - `:id` is a slug → it's already a key → render the builder as-is.\n * - `:id` is a UUID that maps to a BigConsole record with a different key →\n * redirect to `/workflows/workflow/<key>/<version>`.\n * - `:id` is a UUID that is NOT a record → still goes through\n * `WorkflowOpenGuard`: it opens in create mode only for an explicit \"new\n * workflow\" navigation (`NEW_WORKFLOW_NAV`); a bare link to an unknown id\n * shows a not-found state and creates nothing (BOFF-8060 F2).\n * - A slug key is checked by the same guard before the builder mounts.\n */\nconst WorkflowBuilderResolver = memo(function WorkflowBuilderResolver() {\n const { id, version } = useParams<{ id: string; version: string }>();\n const navigate = useAppNavigate();\n const client = useApolloClient();\n // Slugs (real keys) render the builder immediately (derived below); only\n // UUID-shaped ids need a record lookup first.\n const isUuid = !!id && UUID_RE.test(id);\n // A UUID is only safe to open in the SDK builder once the lookup POSITIVELY\n // confirms it is not a BigConsole record (a clean not-found — e.g. a fresh\n // new-workflow id). Both verdicts are keyed by the id they describe so that\n // navigating between workflows re-resolves instead of reusing a stale answer.\n const [confirmedAbsentId, setConfirmedAbsentId] = useState<string | null>(null);\n const [failedId, setFailedId] = useState<string | null>(null);\n // Bumped by the \"Try again\" button to re-run the lookup effect after a failure.\n const [retryNonce, setRetryNonce] = useState(0);\n const retryCount = useRef(0);\n\n useEffect(() => {\n if (!id || !isUuid) return;\n\n retryCount.current = 0;\n let cancelled = false;\n const targetVersion = version ?? 'v1';\n\n const attempt = () => {\n // Query directly (not via fetchWorkflow, which swallows Apollo errors and\n // returns null) so we can tell a genuine \"no such record\" apart from a\n // transient lookup failure. Treating a failure as not-found would re-open\n // the builder with the record id and recreate a phantom 0-node definition.\n client\n .query<WorkflowKeyLookup>({\n query: GetWorkflowDocument,\n variables: { id },\n fetchPolicy: 'network-only',\n })\n .then((result) => {\n if (cancelled) return;\n const record = result.data?.workflow;\n if (record) {\n // The UUID IS a BigConsole record.\n if (record.key && record.key !== id) {\n // Open the builder under its real key (where the definition + nodes\n // live). encodeURIComponent guards against URL-unsafe key chars.\n // Replace history so the resolver doesn't trap the back button.\n navigate(`/workflows/workflow/${encodeURIComponent(record.key)}/${targetVersion}`, {\n replace: true,\n });\n } else {\n // Record exists but has no usable key — open a blank builder rather\n // than reusing the record UUID as the key (which would phantom).\n navigate('/workflows/builder', { replace: true });\n }\n } else {\n // Query succeeded with no record → a genuine new-workflow id.\n setConfirmedAbsentId(id);\n }\n })\n .catch(() => {\n if (cancelled) return;\n if (retryCount.current < 1) {\n // On a cold full-page load the auth/workspace context may not be\n // bootstrapped yet. Retry once before giving up.\n retryCount.current += 1;\n setTimeout(() => {\n if (!cancelled) attempt();\n }, BOOTSTRAP_RETRY_DELAY_MS);\n } else {\n // Lookup failed — do NOT assume create mode (the id may be a record);\n // surface a retry instead of risking a phantom definition.\n setFailedId(id);\n }\n });\n };\n\n attempt();\n\n return () => {\n cancelled = true;\n };\n }, [id, isUuid, version, client, navigate, retryNonce]);\n\n // Slug keys, and UUIDs confirmed not to be records, reach the builder ONLY\n // through the open guard: the SDK builder creates a definition for an unknown\n // key on mount, so a key must be proven to exist (or the navigation must be\n // an explicit \"new workflow\") before it mounts. Never create on open.\n if (!isUuid || confirmedAbsentId === id) {\n return (\n <WorkflowOpenGuard workflowKey={id ?? ''}>\n <SDKWorkflowBuilderPage />\n </WorkflowOpenGuard>\n );\n }\n\n // A lookup that ultimately failed: surface a retry rather than silently\n // opening the builder with what may be a record id.\n if (failedId === id) {\n return (\n <div className=\"p-6 flex flex-col items-center justify-center min-h-[400px] text-center gap-4\">\n <p className=\"text-sm text-text-secondary\">Couldn't load this workflow. Please try again.</p>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => {\n setFailedId(null);\n setRetryNonce((n) => n + 1);\n }}\n className=\"px-4 py-2 text-sm font-medium text-action-primary-fg bg-action-primary-bg hover:bg-action-primary-bgHover rounded-md transition-colors\"\n >\n Try again\n </button>\n <button\n type=\"button\"\n onClick={() => navigate('/workflows')}\n className=\"px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken hover:bg-border-default rounded-md transition-colors\"\n >\n Back to Workflows\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <Spinner className=\"h-8 w-8\" />\n </div>\n );\n});\n\nexport function BigConsoleRoutes(props: BigConsoleRootProps) {\n if (props.routePage === 'workflow-feeds')\n return (\n <Suspense fallback={<PageLoader />}>\n <WorkflowsPage />\n </Suspense>\n );\n if (props.routePage === 'workflow-detail')\n return (\n <Suspense fallback={<PageLoader />}>\n <WorkflowViewPage />\n </Suspense>\n );\n return (\n <Suspense fallback={<PageLoader />}>\n <Routes>\n <Route path=\"/\" element={<OverviewPage />} />\n <Route path=\"/dashboards\" element={<DashboardsPage />} />\n <Route path=\"/dashboards/:dashboardId\" element={<DashboardViewPage />} />\n <Route path=\"/dashboards/:dashboardId/builder\" element={<DashboardBuilderPage />} />\n <Route path=\"/datasources\" element={<DataSourcesPage />} />\n <Route path=\"/insights\" element={<InsightsPage />} />\n <Route path=\"/settings\" element={<SettingsPage />} />\n <Route path=\"/widgets/demo\" element={<WidgetDemoPage />} />\n {/* DataSink Routes */}\n <Route path=\"/datasinks\" element={<DataSinksPage />} />\n <Route path=\"/datasinks/new\" element={<DataSinkBuilderPage />} />\n <Route path=\"/datasinks/:dataSinkId\" element={<DataSinkViewPage />} />\n <Route path=\"/datasinks/:dataSinkId/edit\" element={<DataSinkBuilderPage />} />\n <Route path=\"/datasinks/:dataSinkId/alerts\" element={<DataSinkAlertsPage />} />\n {/* Parser Routes */}\n <Route path=\"/parsers\" element={<DataParsersPage />} />\n <Route path=\"/parsers/new\" element={<ParserBuilderPage />} />\n <Route path=\"/parsers/:parserId\" element={<ParserViewPage />} />\n <Route path=\"/parsers/:parserId/edit\" element={<ParserBuilderPage />} />\n {/* Dashboard-scoped Parser Routes */}\n <Route path=\"/dashboards/:consoleId/parsers\" element={<DataParsersPage />} />\n <Route path=\"/dashboards/:consoleId/parsers/new\" element={<ParserBuilderPage />} />\n <Route path=\"/dashboards/:consoleId/parsers/:parserId\" element={<ParserViewPage />} />\n <Route path=\"/dashboards/:consoleId/parsers/:parserId/edit\" element={<ParserBuilderPage />} />\n {/* Workflow Routes — list/view use BigConsole-native pages (query bigconsole-svc).\n All static routes are grouped before the dynamic :workflowId catch-all.\n React Router v6 prioritizes static segments regardless of declaration order,\n but keeping them above the param routes makes intent unambiguous for maintainers. */}\n <Route path=\"/workflows\" element={<WorkflowsPage />} />\n <Route path=\"/workflows/feeds\" element={<WorkflowsPage />} />\n <Route path=\"/workflows/details/:workflowId\" element={<WorkflowViewPage />} />\n <Route path=\"/workflows/list\" element={<WorkflowsPage />} />\n {/* New workflow — redirect to UUID-based URL (matches FluidGrids pattern) */}\n <Route path=\"/workflows/new\" element={<WorkflowNewRedirect />} />\n {/* SDK visual workflow builder — design existing workflows */}\n <Route path=\"/workflows/builder\" element={<SDKWorkflowBuilderPage />} />\n {/* All parameterised builder routes go through WorkflowBuilderResolver so a\n record-id `:id` is resolved to its workflow key first (slugs/new-workflow\n UUIDs pass straight through); otherwise the SDK opens an empty canvas and\n creates a phantom 0-node definition keyed by the record id. */}\n <Route path=\"/workflows/builder/:id/:version\" element={<WorkflowBuilderResolver />} />\n <Route path=\"/workflows/workflow/:id/:version\" element={<WorkflowBuilderResolver />} />\n {/* SDK sub-pages (runs, history, templates, nodes, settings) */}\n <Route path=\"/workflows/runs\" element={<ExecutionsListPage />} />\n <Route path=\"/workflows/runs/:runId\" element={<ExecutionDetailPage />} />\n <Route path=\"/workflows/history\" element={<HistoryPage />} />\n <Route path=\"/workflows/templates\" element={<TemplatesPage />} />\n <Route path=\"/workflows/nodes\" element={<NodesPage />} />\n <Route path=\"/workflows/settings\" element={<WorkflowSettingsPage />} />\n {/* Dynamic routes — :workflowId catch-all AFTER all static segments */}\n <Route path=\"/workflows/:workflowId\" element={<WorkflowViewPage />} />\n <Route path=\"/workflows/:workflowId/edit\" element={<WorkflowEditBridge />} />\n {/* Support SDK's navigation pattern (without /workflows/ prefix) — also\n resolves record-id → key via WorkflowBuilderResolver. */}\n <Route path=\"/workflow/:id/:version\" element={<WorkflowBuilderResolver />} />\n {/* Redirect /list to /workflows/list (SDK uses relative navigation) */}\n <Route path=\"/list\" element={<Navigate to=\"/bigconsole/workflows/list\" replace />} />\n {/* Pipeline Routes */}\n <Route path=\"/pipelines\" element={<PipelinesPage />} />\n <Route path=\"/pipelines/new\" element={<PipelineBuilderPage />} />\n <Route path=\"/pipelines/:pipelineId\" element={<PipelineViewPage />} />\n <Route path=\"/pipelines/:pipelineId/edit\" element={<PipelineBuilderPage />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BigConsoleRoutes.js","names":[],"sources":["../../src/bigconsole/BigConsoleRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, memo, useState, useMemo, useEffect, useRef } from 'react';\nimport { Route, Routes, Navigate, useParams } from 'react-router';\nimport { type BigConsoleRootProps } from './types';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { useUnsavedChanges } from '@burdenoff/fe-libs/shared/hooks';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useApolloClient } from '@apollo/client/react';\nimport { useAppNavigate } from './contexts';\nimport { useWorkflowOperations } from './hooks/useWorkflowOperations';\nimport { GetWorkflowDocument } from '../generated/wspace-operations';\nimport { BOOTSTRAP_RETRY_DELAY_MS } from './constants';\nimport { CREATE_WORKFLOW_STATE } from './workflowOpen';\nimport { WorkflowOpenGuard } from './components/workflow/WorkflowOpenGuard';\n\n// Import FluidGrids SDK workflow components (EXACT same as microfe-workflows)\nimport {\n WorkflowBuilderPage as FluidGridsWorkflowBuilderPage,\n ExecutionsListPage,\n ExecutionDetailPage,\n HistoryPage,\n TemplatesPage,\n NodesPage,\n SettingsPage as WorkflowSettingsPage,\n} from '@burdenoff/fluidgrids-fe-sdk';\n\n/**\n * The embedded FluidGrids workflow builder, with a FAIL-CLOSED leave-guard registration.\n *\n * The SDK builder cannot report unsaved state (no dirty tracking in fluidgrids-fe-sdk), and an empty\n * `listUnsavedChanges()` means \"nothing is unsaved\" to the assistant, so a half-built graph would be\n * dropped by an assistant-initiated move. While this is mounted the builder is therefore always\n * reported as holding unsaved work. Only assistant-initiated moves are refused (typed or spoken\n * go-to, \"yes\"); a tap on \"Open page\" and a sidebar click always work. This can over-refuse after a\n * save; real tracking belongs in fluidgrids-fe-sdk (follow-up).\n */\nconst SDKWorkflowBuilderPage = memo(function SDKWorkflowBuilderPage() {\n const { t } = useI18n();\n useUnsavedChanges({\n id: 'workflow-editor',\n label: t('bigconsole.assistant.unsaved.workflowEditor', 'the workflow editor'),\n dirty: true,\n });\n return <FluidGridsWorkflowBuilderPage />;\n});\n\n// Lazy-loaded pages\nconst OverviewPage = lazy(() => import('./pages/OverviewPage'));\nconst DashboardsPage = lazy(() => import('./pages/DashboardsPage'));\nconst DashboardViewPage = lazy(() => import('./pages/DashboardViewPage'));\nconst DashboardBuilderPage = lazy(() => import('./pages/DashboardBuilderPage'));\nconst DataSourcesPage = lazy(() => import('./pages/DataSourcesPage'));\nconst InsightsPage = lazy(() => import('./pages/InsightsPage'));\nconst SettingsPage = lazy(() => import('./pages/SettingsPage'));\nconst WidgetDemoPage = lazy(() => import('./pages/WidgetDemoPage'));\n// BigConsole-native workflow pages (query bigconsole-svc, not workflow-svc)\n// These use named exports (no default export), so we remap via .then()\nconst WorkflowsPage = lazy(() => import('./pages/WorkflowsPage').then((m) => ({ default: m.WorkflowsPage })));\nconst WorkflowViewPage = lazy(() => import('./pages/WorkflowViewPage').then((m) => ({ default: m.WorkflowViewPage })));\n// DataSink Pages\nconst DataSinksPage = lazy(() => import('./pages/DataSinksPage'));\nconst DataSinkViewPage = lazy(() => import('./pages/DataSinkViewPage'));\nconst DataSinkAlertsPage = lazy(() => import('./pages/DataSinkAlertsPage'));\nconst DataSinkBuilderPage = lazy(() => import('./pages/DataSinkBuilderPage'));\n// Parser Pages\nconst DataParsersPage = lazy(() => import('./pages/DataParsersPage'));\nconst ParserViewPage = lazy(() => import('./pages/ParserViewPage'));\nconst ParserBuilderPage = lazy(() => import('./pages/ParserBuilderPage'));\n// Pipeline Pages\nconst PipelinesPage = lazy(() => import('./pages/PipelinesPage'));\nconst PipelineViewPage = lazy(() => import('./pages/PipelineViewPage'));\nconst PipelineBuilderPage = lazy(() => import('./pages/PipelineBuilderPage'));\n\n// Loading fallback component\nfunction PageLoader() {\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <Spinner className=\"h-8 w-8\" />\n </div>\n );\n}\n\n/**\n * Generate a new workflow builder path with a fresh UUID key.\n *\n * Navigate to it with `NEW_WORKFLOW_NAV` (router state): opening a builder path\n * only creates a definition when the navigation says it is an explicit \"new\n * workflow\" — a bare link to an unknown key shows a not-found state (BOFF-8060).\n */\nexport const newWorkflowPath = () => `/workflows/workflow/${crypto.randomUUID()}/v1`;\n\n/**\n * Redirect /workflows/new to a UUID-based URL.\n * Uses <Navigate> for synchronous redirect (no blank frame).\n */\nfunction WorkflowNewRedirect() {\n const path = useMemo(() => newWorkflowPath(), []);\n return <Navigate to={path} replace state={CREATE_WORKFLOW_STATE} />;\n}\n\n/**\n * Bridge component: resolves a BigConsole workflow ID to its externalWorkflowId\n * and navigates to the SDK's visual builder route.\n *\n * Route: /workflows/:workflowId/edit\n * Redirects to: /workflows/workflow/{workflowKey}/v1\n */\nconst WorkflowEditBridge = memo(function WorkflowEditBridge() {\n const { workflowId } = useParams<{ workflowId: string }>();\n const navigate = useAppNavigate();\n const { fetchWorkflow } = useWorkflowOperations({ skipFetch: true });\n const [error, setError] = useState<string | null>(null);\n const retryCount = useRef(0);\n\n useEffect(() => {\n if (!workflowId) {\n setError('No workflow ID provided');\n return;\n }\n\n // Reset retry budget and error when workflowId changes so a\n // previous failed attempt doesn't consume the new workflow's retry.\n retryCount.current = 0;\n setError(null);\n let cancelled = false;\n\n const handleResult = (workflow: Awaited<ReturnType<typeof fetchWorkflow>>) => {\n if (cancelled) return;\n\n if (workflow?.key) {\n // Navigate to the SDK builder route using the workflow key (e.g. \"github_user_profile\")\n // and default version \"v1\". The FluidGrids SDK fetches the definition by workflowKey.\n // Replace history so the bridge doesn't trap the back button.\n navigate(`/workflows/workflow/${workflow.key}/v1`, { replace: true });\n } else if (workflow) {\n // Workflow exists but has no key — open SDK builder in create mode\n navigate(`/workflows/builder`, { replace: true });\n } else if (retryCount.current < 1) {\n // On full-page loads the auth/workspace context may not be bootstrapped yet,\n // causing a false null. Retry once after a short delay (same pattern as WorkflowViewPage).\n retryCount.current += 1;\n setTimeout(() => {\n if (!cancelled) {\n fetchWorkflow(workflowId)\n .then(handleResult)\n .catch((err) => {\n if (!cancelled) setError(err?.message ?? 'Failed to load workflow');\n });\n }\n }, BOOTSTRAP_RETRY_DELAY_MS);\n } else {\n setError('Workflow not found');\n }\n };\n\n fetchWorkflow(workflowId)\n .then(handleResult)\n .catch((err) => {\n if (!cancelled) setError(err?.message ?? 'Failed to load workflow');\n });\n\n return () => {\n cancelled = true;\n };\n }, [workflowId, fetchWorkflow, navigate]);\n\n if (error) {\n return (\n <div className=\"p-6 flex flex-col items-center justify-center min-h-[400px] text-center gap-4\">\n <p className=\"text-sm text-text-secondary\">{error}</p>\n <button\n type=\"button\"\n onClick={() => navigate('/workflows')}\n className=\"px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken hover:bg-border-default rounded-md transition-colors\"\n >\n Back to Workflows\n </button>\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <Spinner className=\"h-8 w-8\" />\n </div>\n );\n});\n\n/**\n * Matches a canonical v4-style UUID. BigConsole workflow RECORD ids are UUIDs;\n * workflow KEYS are human slugs (e.g. \"users_analytics\"). New-workflow URLs also\n * use a fresh `crypto.randomUUID()` as the builder key. We only attempt record\n * resolution for UUID-shaped `:id`s — slugs are always real keys and skip the\n * lookup entirely (no extra round-trip, no spinner flash).\n */\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\n/** Minimal shape of the GetWorkflow query — the resolver only needs the key. */\ntype WorkflowKeyLookup = { workflow: { key: string | null } | null };\n\n/**\n * Guards the SDK visual builder route.\n *\n * The SDK builder loads its definition from workflow-svc using the URL `:id` as\n * the `workflowKey`. That only works when `:id` is the workflow KEY. When a\n * BigConsole workflow RECORD id (a UUID) reaches the builder — via the SDK\n * card's `navigate(\"../workflow/\" + workflow.workflow_key + ...)`, a bookmarked\n * record-id URL, etc. — no definition matches that key, so the canvas is empty\n * AND the SDK silently creates a phantom 0-node definition keyed by the UUID.\n *\n * This resolver closes that gap centrally (the same id→key resolution the\n * `/workflows/:workflowId/edit` `WorkflowEditBridge` does, but applied to the\n * builder route itself so EVERY entry point is covered):\n * - `:id` is a slug → it's already a key → render the builder as-is.\n * - `:id` is a UUID that maps to a BigConsole record with a different key →\n * redirect to `/workflows/workflow/<key>/<version>`.\n * - `:id` is a UUID that is NOT a record → still goes through\n * `WorkflowOpenGuard`: it opens in create mode only for an explicit \"new\n * workflow\" navigation (`NEW_WORKFLOW_NAV`); a bare link to an unknown id\n * shows a not-found state and creates nothing (BOFF-8060 F2).\n * - A slug key is checked by the same guard before the builder mounts.\n */\nconst WorkflowBuilderResolver = memo(function WorkflowBuilderResolver() {\n const { id, version } = useParams<{ id: string; version: string }>();\n const navigate = useAppNavigate();\n const client = useApolloClient();\n // Slugs (real keys) render the builder immediately (derived below); only\n // UUID-shaped ids need a record lookup first.\n const isUuid = !!id && UUID_RE.test(id);\n // A UUID is only safe to open in the SDK builder once the lookup POSITIVELY\n // confirms it is not a BigConsole record (a clean not-found — e.g. a fresh\n // new-workflow id). Both verdicts are keyed by the id they describe so that\n // navigating between workflows re-resolves instead of reusing a stale answer.\n const [confirmedAbsentId, setConfirmedAbsentId] = useState<string | null>(null);\n const [failedId, setFailedId] = useState<string | null>(null);\n // Bumped by the \"Try again\" button to re-run the lookup effect after a failure.\n const [retryNonce, setRetryNonce] = useState(0);\n const retryCount = useRef(0);\n\n useEffect(() => {\n if (!id || !isUuid) return;\n\n retryCount.current = 0;\n let cancelled = false;\n const targetVersion = version ?? 'v1';\n\n const attempt = () => {\n // Query directly (not via fetchWorkflow, which swallows Apollo errors and\n // returns null) so we can tell a genuine \"no such record\" apart from a\n // transient lookup failure. Treating a failure as not-found would re-open\n // the builder with the record id and recreate a phantom 0-node definition.\n client\n .query<WorkflowKeyLookup>({\n query: GetWorkflowDocument,\n variables: { id },\n fetchPolicy: 'network-only',\n })\n .then((result) => {\n if (cancelled) return;\n const record = result.data?.workflow;\n if (record) {\n // The UUID IS a BigConsole record.\n if (record.key && record.key !== id) {\n // Open the builder under its real key (where the definition + nodes\n // live). encodeURIComponent guards against URL-unsafe key chars.\n // Replace history so the resolver doesn't trap the back button.\n navigate(`/workflows/workflow/${encodeURIComponent(record.key)}/${targetVersion}`, {\n replace: true,\n });\n } else {\n // Record exists but has no usable key — open a blank builder rather\n // than reusing the record UUID as the key (which would phantom).\n navigate('/workflows/builder', { replace: true });\n }\n } else {\n // Query succeeded with no record → a genuine new-workflow id.\n setConfirmedAbsentId(id);\n }\n })\n .catch(() => {\n if (cancelled) return;\n if (retryCount.current < 1) {\n // On a cold full-page load the auth/workspace context may not be\n // bootstrapped yet. Retry once before giving up.\n retryCount.current += 1;\n setTimeout(() => {\n if (!cancelled) attempt();\n }, BOOTSTRAP_RETRY_DELAY_MS);\n } else {\n // Lookup failed — do NOT assume create mode (the id may be a record);\n // surface a retry instead of risking a phantom definition.\n setFailedId(id);\n }\n });\n };\n\n attempt();\n\n return () => {\n cancelled = true;\n };\n }, [id, isUuid, version, client, navigate, retryNonce]);\n\n // Slug keys, and UUIDs confirmed not to be records, reach the builder ONLY\n // through the open guard: the SDK builder creates a definition for an unknown\n // key on mount, so a key must be proven to exist (or the navigation must be\n // an explicit \"new workflow\") before it mounts. Never create on open.\n if (!isUuid || confirmedAbsentId === id) {\n return (\n <WorkflowOpenGuard workflowKey={id ?? ''}>\n <SDKWorkflowBuilderPage />\n </WorkflowOpenGuard>\n );\n }\n\n // A lookup that ultimately failed: surface a retry rather than silently\n // opening the builder with what may be a record id.\n if (failedId === id) {\n return (\n <div className=\"p-6 flex flex-col items-center justify-center min-h-[400px] text-center gap-4\">\n <p className=\"text-sm text-text-secondary\">Couldn't load this workflow. Please try again.</p>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => {\n setFailedId(null);\n setRetryNonce((n) => n + 1);\n }}\n className=\"px-4 py-2 text-sm font-medium text-action-primary-fg bg-action-primary-bg hover:bg-action-primary-bgHover rounded-md transition-colors\"\n >\n Try again\n </button>\n <button\n type=\"button\"\n onClick={() => navigate('/workflows')}\n className=\"px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken hover:bg-border-default rounded-md transition-colors\"\n >\n Back to Workflows\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <Spinner className=\"h-8 w-8\" />\n </div>\n );\n});\n\nexport function BigConsoleRoutes(props: BigConsoleRootProps) {\n if (props.routePage === 'workflow-feeds')\n return (\n <Suspense fallback={<PageLoader />}>\n <WorkflowsPage />\n </Suspense>\n );\n if (props.routePage === 'workflow-detail')\n return (\n <Suspense fallback={<PageLoader />}>\n <WorkflowViewPage />\n </Suspense>\n );\n return (\n <Suspense fallback={<PageLoader />}>\n <Routes>\n <Route path=\"/\" element={<OverviewPage />} />\n <Route path=\"/dashboards\" element={<DashboardsPage />} />\n <Route path=\"/dashboards/:dashboardId\" element={<DashboardViewPage />} />\n <Route path=\"/dashboards/:dashboardId/builder\" element={<DashboardBuilderPage />} />\n <Route path=\"/datasources\" element={<DataSourcesPage />} />\n <Route path=\"/insights\" element={<InsightsPage />} />\n <Route path=\"/settings\" element={<SettingsPage />} />\n <Route path=\"/widgets/demo\" element={<WidgetDemoPage />} />\n {/* DataSink Routes */}\n <Route path=\"/datasinks\" element={<DataSinksPage />} />\n <Route path=\"/datasinks/new\" element={<DataSinkBuilderPage />} />\n <Route path=\"/datasinks/:dataSinkId\" element={<DataSinkViewPage />} />\n <Route path=\"/datasinks/:dataSinkId/edit\" element={<DataSinkBuilderPage />} />\n <Route path=\"/datasinks/:dataSinkId/alerts\" element={<DataSinkAlertsPage />} />\n {/* Parser Routes */}\n <Route path=\"/parsers\" element={<DataParsersPage />} />\n <Route path=\"/parsers/new\" element={<ParserBuilderPage />} />\n <Route path=\"/parsers/:parserId\" element={<ParserViewPage />} />\n <Route path=\"/parsers/:parserId/edit\" element={<ParserBuilderPage />} />\n {/* Dashboard-scoped Parser Routes */}\n <Route path=\"/dashboards/:consoleId/parsers\" element={<DataParsersPage />} />\n <Route path=\"/dashboards/:consoleId/parsers/new\" element={<ParserBuilderPage />} />\n <Route path=\"/dashboards/:consoleId/parsers/:parserId\" element={<ParserViewPage />} />\n <Route path=\"/dashboards/:consoleId/parsers/:parserId/edit\" element={<ParserBuilderPage />} />\n {/* Workflow Routes — list/view use BigConsole-native pages (query bigconsole-svc).\n All static routes are grouped before the dynamic :workflowId catch-all.\n React Router v6 prioritizes static segments regardless of declaration order,\n but keeping them above the param routes makes intent unambiguous for maintainers. */}\n <Route path=\"/workflows\" element={<WorkflowsPage />} />\n <Route path=\"/workflows/feeds\" element={<WorkflowsPage />} />\n <Route path=\"/workflows/details/:workflowId\" element={<WorkflowViewPage />} />\n <Route path=\"/workflows/list\" element={<WorkflowsPage />} />\n {/* New workflow — redirect to UUID-based URL (matches FluidGrids pattern) */}\n <Route path=\"/workflows/new\" element={<WorkflowNewRedirect />} />\n {/* SDK visual workflow builder — design existing workflows */}\n <Route path=\"/workflows/builder\" element={<SDKWorkflowBuilderPage />} />\n {/* All parameterised builder routes go through WorkflowBuilderResolver so a\n record-id `:id` is resolved to its workflow key first (slugs/new-workflow\n UUIDs pass straight through); otherwise the SDK opens an empty canvas and\n creates a phantom 0-node definition keyed by the record id. */}\n <Route path=\"/workflows/builder/:id/:version\" element={<WorkflowBuilderResolver />} />\n <Route path=\"/workflows/workflow/:id/:version\" element={<WorkflowBuilderResolver />} />\n {/* SDK sub-pages (runs, history, templates, nodes, settings) */}\n <Route path=\"/workflows/runs\" element={<ExecutionsListPage />} />\n <Route path=\"/workflows/runs/:runId\" element={<ExecutionDetailPage />} />\n <Route path=\"/workflows/history\" element={<HistoryPage />} />\n <Route path=\"/workflows/templates\" element={<TemplatesPage />} />\n <Route path=\"/workflows/nodes\" element={<NodesPage />} />\n <Route path=\"/workflows/settings\" element={<WorkflowSettingsPage />} />\n {/* Dynamic routes — :workflowId catch-all AFTER all static segments */}\n <Route path=\"/workflows/:workflowId\" element={<WorkflowViewPage />} />\n <Route path=\"/workflows/:workflowId/edit\" element={<WorkflowEditBridge />} />\n {/* Support SDK's navigation pattern (without /workflows/ prefix) — also\n resolves record-id → key via WorkflowBuilderResolver. */}\n <Route path=\"/workflow/:id/:version\" element={<WorkflowBuilderResolver />} />\n {/* Redirect /list to /workflows/list (SDK uses relative navigation) */}\n <Route path=\"/list\" element={<Navigate to=\"/bigconsole/workflows/list\" replace />} />\n {/* Pipeline Routes */}\n <Route path=\"/pipelines\" element={<PipelinesPage />} />\n <Route path=\"/pipelines/new\" element={<PipelineBuilderPage />} />\n <Route path=\"/pipelines/:pipelineId\" element={<PipelineViewPage />} />\n <Route path=\"/pipelines/:pipelineId/edit\" element={<PipelineBuilderPage />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistantProduct.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/assistant/assistantProduct.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AACvG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAQjG;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAEX;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,oBAAoB,EAoCxD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"assistantProduct.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/assistant/assistantProduct.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AACvG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAQjG;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAEX;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,oBAAoB,EAoCxD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,EAAE,qBAsD/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAC/C,IAAI,CAAC,6BAA6B,EAAE,UAAU,GAAG,kBAAkB,GAAG,cAAc,CAAC,CACtF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,EAAE,0BA+B1C,CAAC"}
|