@burdenoff/microfe-vibecontrols 2026.528.5 → 2026.528.7
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/VibeControlsRoot.js +89 -81
- package/dist/VibeControlsRoot.js.map +1 -1
- package/dist/VibeControlsRoutes.js +154 -136
- package/dist/VibeControlsRoutes.js.map +1 -1
- package/dist/components/templates/TemplateWizard.js +2 -2
- package/dist/components/templates/TemplateWizard.js.map +1 -1
- package/dist/constants/pluginCatalog.js +1 -1
- package/dist/pages/AgentsPage.js +234 -225
- package/dist/pages/AgentsPage.js.map +1 -1
- package/dist/pages/PluginsCatalogPage.js +287 -0
- package/dist/pages/PluginsCatalogPage.js.map +1 -0
- package/dist/pages/VibeCalendarPage.js +132 -107
- package/dist/pages/VibeCalendarPage.js.map +1 -1
- package/dist/pages/VibesPage.js +244 -231
- package/dist/pages/VibesPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { useTr as e } from "./shared/hooks/useTr.js";
|
|
2
2
|
import t, { Suspense as n, useEffect as r } from "react";
|
|
3
|
-
import { Navigate as i, Route as a, Routes as
|
|
4
|
-
import { jsx as
|
|
5
|
-
import { FeatureGate as
|
|
3
|
+
import { Navigate as i, Route as a, Routes as ee, useLocation as o, useParams as s } from "react-router-dom";
|
|
4
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
5
|
+
import { FeatureGate as u } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
6
6
|
//#region src/VibeControlsRoutes.tsx
|
|
7
|
-
var d = t.lazy(() => import("./pages/OverviewPage.js").then((e) => ({ default: e.OverviewPage }))), f = t.lazy(() => import("./pages/AgentsLandingPage.js").then((e) => ({ default: e.AgentsLandingPage }))), p = t.lazy(() => import("./pages/AgentDetailsPage.js").then((e) => ({ default: e.AgentDetailsPage }))), m = t.lazy(() => import("./pages/TargetDetailsPage.js").then((e) => ({ default: e.TargetDetailsPage }))), h = t.lazy(() => import("./pages/SessionsPage.js").then((e) => ({ default: e.SessionsPage }))), g = t.lazy(() => import("./pages/SessionDetailsPage.js").then((e) => ({ default: e.SessionDetailsPage }))), _ = t.lazy(() => import("./pages/VibesPage.js").then((e) => ({ default: e.VibesPage }))), v = t.lazy(() => import("./pages/VibeDetailsPage.js").then((e) => ({ default: e.VibeDetailsPage }))), y = t.lazy(() => import("./pages/NoteDetailsPage.js").then((e) => ({ default: e.NoteDetailsPage }))), b = t.lazy(() => import("./pages/TunnelsLandingPage.js").then((e) => ({ default: e.TunnelsLandingPage }))), x = t.lazy(() => import("./pages/tunnels/TunnelDetailsPage.js").then((e) => ({ default: e.TunnelDetailsPage }))), S = t.lazy(() => import("./components/tunnels/TunnelCreateWizard.js").then((e) => ({ default: e.TunnelCreateWizard }))), C = t.lazy(() => import("./pages/SettingsPage.js").then((e) => ({ default: e.SettingsPage }))), w = t.lazy(() => import("./pages/HealthPage.js").then((e) => ({ default: e.HealthPage }))), T = t.lazy(() => import("./pages/GettingStartedPage.js").then((e) => ({ default: e.GettingStartedPage }))), E = t.lazy(() => import("./pages/SharedSessionPage.js").then((e) => ({ default: e.SharedSessionPage }))), D = t.lazy(() => import("./pages/VibeDeckPage.js").then((e) => ({ default: e.VibeDeckPage }))), O = t.lazy(() => import("./pages/SharedVibeDeckPage.js").then((e) => ({ default: e.SharedVibeDeckPage }))), k = t.lazy(() => import("./pages/VibeCalendarPage.js").then((e) => ({ default: e.VibeCalendarPage }))), A = t.lazy(() => import("./pages/VibeTaskDetailPage.js").then((e) => ({ default: e.VibeTaskDetailPage }))), te = t.lazy(() => import("./pages/ActionsPage.js").then((e) => ({ default: e.ActionsPage }))), j = t.lazy(() => import("./pages/VibeAuditPage.js").then((e) => ({ default: e.VibeAuditPage }))), M = t.lazy(() => import("./pages/AnalyticsPage.js").then((e) => ({ default: e.AnalyticsPage }))), N = t.lazy(() => import("./pages/VibeDocsPage.js").then((e) => ({ default: e.VibeDocsPage }))), P = t.lazy(() => import("./pages/LogsPage.js").then((e) => ({ default: e.LogsPage }))), F = t.lazy(() => import("./pages/CatalogPage.js").then((e) => ({ default: e.CatalogPage }))), I = t.lazy(() => import("./pages/CatalogDetailPage.js").then((e) => ({ default: e.CatalogDetailPage }))), L = t.lazy(() => import("./pages/CatalogDocsPage.js").then((e) => ({ default: e.CatalogDocsPage }))), R = t.lazy(() => import("./pages/ComponentsPage.js").then((e) => ({ default: e.ComponentsPage }))), z = t.lazy(() => import("./pages/ComponentDetailPage.js").then((e) => ({ default: e.ComponentDetailPage }))), B = t.lazy(() => import("./pages/ComponentDocsPage.js").then((e) => ({ default: e.ComponentDocsPage }))), V = t.lazy(() => import("./pages/TemplatesPage.js").then((e) => ({ default: e.TemplatesPage }))), H = t.lazy(() => import("./pages/TemplateDetailPage.js").then((e) => ({ default: e.TemplateDetailPage }))), U = t.lazy(() => import("./pages/PluginStandalonePage.js").then((e) => ({ default: e.PluginStandalonePage }))), W = t.lazy(() => import("./pages/ai/AIPage.js").then((e) => ({ default: e.AIPage }))),
|
|
8
|
-
function
|
|
9
|
-
return /* @__PURE__ */
|
|
7
|
+
var d = t.lazy(() => import("./pages/OverviewPage.js").then((e) => ({ default: e.OverviewPage }))), f = t.lazy(() => import("./pages/AgentsLandingPage.js").then((e) => ({ default: e.AgentsLandingPage }))), p = t.lazy(() => import("./pages/AgentDetailsPage.js").then((e) => ({ default: e.AgentDetailsPage }))), m = t.lazy(() => import("./pages/TargetDetailsPage.js").then((e) => ({ default: e.TargetDetailsPage }))), h = t.lazy(() => import("./pages/SessionsPage.js").then((e) => ({ default: e.SessionsPage }))), g = t.lazy(() => import("./pages/SessionDetailsPage.js").then((e) => ({ default: e.SessionDetailsPage }))), _ = t.lazy(() => import("./pages/VibesPage.js").then((e) => ({ default: e.VibesPage }))), v = t.lazy(() => import("./pages/VibeDetailsPage.js").then((e) => ({ default: e.VibeDetailsPage }))), y = t.lazy(() => import("./pages/NoteDetailsPage.js").then((e) => ({ default: e.NoteDetailsPage }))), b = t.lazy(() => import("./pages/TunnelsLandingPage.js").then((e) => ({ default: e.TunnelsLandingPage }))), x = t.lazy(() => import("./pages/tunnels/TunnelDetailsPage.js").then((e) => ({ default: e.TunnelDetailsPage }))), S = t.lazy(() => import("./components/tunnels/TunnelCreateWizard.js").then((e) => ({ default: e.TunnelCreateWizard }))), C = t.lazy(() => import("./pages/SettingsPage.js").then((e) => ({ default: e.SettingsPage }))), w = t.lazy(() => import("./pages/HealthPage.js").then((e) => ({ default: e.HealthPage }))), T = t.lazy(() => import("./pages/GettingStartedPage.js").then((e) => ({ default: e.GettingStartedPage }))), E = t.lazy(() => import("./pages/SharedSessionPage.js").then((e) => ({ default: e.SharedSessionPage }))), D = t.lazy(() => import("./pages/VibeDeckPage.js").then((e) => ({ default: e.VibeDeckPage }))), O = t.lazy(() => import("./pages/SharedVibeDeckPage.js").then((e) => ({ default: e.SharedVibeDeckPage }))), k = t.lazy(() => import("./pages/VibeCalendarPage.js").then((e) => ({ default: e.VibeCalendarPage }))), A = t.lazy(() => import("./pages/VibeTaskDetailPage.js").then((e) => ({ default: e.VibeTaskDetailPage }))), te = t.lazy(() => import("./pages/ActionsPage.js").then((e) => ({ default: e.ActionsPage }))), j = t.lazy(() => import("./pages/VibeAuditPage.js").then((e) => ({ default: e.VibeAuditPage }))), M = t.lazy(() => import("./pages/AnalyticsPage.js").then((e) => ({ default: e.AnalyticsPage }))), N = t.lazy(() => import("./pages/VibeDocsPage.js").then((e) => ({ default: e.VibeDocsPage }))), P = t.lazy(() => import("./pages/LogsPage.js").then((e) => ({ default: e.LogsPage }))), F = t.lazy(() => import("./pages/CatalogPage.js").then((e) => ({ default: e.CatalogPage }))), I = t.lazy(() => import("./pages/CatalogDetailPage.js").then((e) => ({ default: e.CatalogDetailPage }))), L = t.lazy(() => import("./pages/CatalogDocsPage.js").then((e) => ({ default: e.CatalogDocsPage }))), R = t.lazy(() => import("./pages/ComponentsPage.js").then((e) => ({ default: e.ComponentsPage }))), z = t.lazy(() => import("./pages/ComponentDetailPage.js").then((e) => ({ default: e.ComponentDetailPage }))), B = t.lazy(() => import("./pages/ComponentDocsPage.js").then((e) => ({ default: e.ComponentDocsPage }))), V = t.lazy(() => import("./pages/TemplatesPage.js").then((e) => ({ default: e.TemplatesPage }))), H = t.lazy(() => import("./pages/TemplateDetailPage.js").then((e) => ({ default: e.TemplateDetailPage }))), U = t.lazy(() => import("./pages/PluginStandalonePage.js").then((e) => ({ default: e.PluginStandalonePage }))), W = t.lazy(() => import("./pages/PluginsCatalogPage.js").then((e) => ({ default: e.PluginsCatalogPage }))), G = t.lazy(() => import("./pages/ai/AIPage.js").then((e) => ({ default: e.AIPage }))), K = t.lazy(() => import("./pages/ai/AISessionDetailPage.js").then((e) => ({ default: e.AISessionDetailPage }))), q = t.lazy(() => import("./pages/ai/AgentManagerPage.js").then((e) => ({ default: e.AgentManagerPage }))), J = t.lazy(() => import("./pages/ai/AIBookmarksPage.js").then((e) => ({ default: e.AIBookmarksPage })));
|
|
8
|
+
function Y() {
|
|
9
|
+
return /* @__PURE__ */ c("div", {
|
|
10
10
|
className: "flex items-center justify-center h-full min-h-[200px]",
|
|
11
|
-
children: /* @__PURE__ */
|
|
11
|
+
children: /* @__PURE__ */ c("div", { className: "animate-pulse bg-muted rounded w-full h-full" })
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
|
-
function
|
|
15
|
-
let { pathname: e } =
|
|
14
|
+
function X() {
|
|
15
|
+
let { pathname: e } = o();
|
|
16
16
|
return r(() => {
|
|
17
17
|
let e = document.querySelector("main");
|
|
18
18
|
e && (e.scrollTop = 0);
|
|
19
19
|
}, [e]), null;
|
|
20
20
|
}
|
|
21
|
-
var
|
|
21
|
+
var Z = new Set([
|
|
22
22
|
"overview",
|
|
23
23
|
"templates",
|
|
24
24
|
"contexts",
|
|
@@ -29,296 +29,314 @@ var X = new Set([
|
|
|
29
29
|
"playground",
|
|
30
30
|
"config"
|
|
31
31
|
]);
|
|
32
|
-
function
|
|
33
|
-
let { tab: e } =
|
|
34
|
-
return e === "plan" ? /* @__PURE__ */
|
|
32
|
+
function Q() {
|
|
33
|
+
let { tab: e } = s();
|
|
34
|
+
return e === "plan" ? /* @__PURE__ */ c(i, {
|
|
35
35
|
to: "/vibecontrols/ai-tools/plan",
|
|
36
36
|
replace: !0
|
|
37
|
-
}) : e &&
|
|
37
|
+
}) : e && Z.has(e) ? /* @__PURE__ */ c(i, {
|
|
38
38
|
to: `/vibecontrols/ai-tools/ai/${e}`,
|
|
39
39
|
replace: !0
|
|
40
|
-
}) : /* @__PURE__ */
|
|
40
|
+
}) : /* @__PURE__ */ c(i, {
|
|
41
41
|
to: "/vibecontrols/ai-tools/ai/overview",
|
|
42
42
|
replace: !0
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
-
function
|
|
46
|
-
return /* @__PURE__ */
|
|
45
|
+
function ne() {
|
|
46
|
+
return /* @__PURE__ */ c("div", {
|
|
47
47
|
className: "flex items-center justify-center h-full min-h-[200px] text-text-secondary text-sm",
|
|
48
48
|
children: e()("vibecontrols.pages.featureDisabled", "This feature is currently disabled. You can enable it from Feature Previews.")
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
51
|
function $(e, t, n = !0) {
|
|
52
|
-
return /* @__PURE__ */
|
|
52
|
+
return /* @__PURE__ */ c(u, {
|
|
53
53
|
flag: e,
|
|
54
54
|
defaultValue: n,
|
|
55
|
-
fallback: /* @__PURE__ */
|
|
55
|
+
fallback: /* @__PURE__ */ c(ne, {}),
|
|
56
56
|
children: t
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
-
function
|
|
60
|
-
return /* @__PURE__ */
|
|
61
|
-
fallback: /* @__PURE__ */
|
|
62
|
-
children: [/* @__PURE__ */
|
|
63
|
-
/* @__PURE__ */
|
|
59
|
+
function re() {
|
|
60
|
+
return /* @__PURE__ */ l(n, {
|
|
61
|
+
fallback: /* @__PURE__ */ c(Y, {}),
|
|
62
|
+
children: [/* @__PURE__ */ c(X, {}), /* @__PURE__ */ l(ee, { children: [
|
|
63
|
+
/* @__PURE__ */ c(a, {
|
|
64
64
|
index: !0,
|
|
65
|
-
element: $("vibecontrols.overview", /* @__PURE__ */
|
|
65
|
+
element: $("vibecontrols.overview", /* @__PURE__ */ c(d, {}))
|
|
66
66
|
}),
|
|
67
|
-
/* @__PURE__ */
|
|
67
|
+
/* @__PURE__ */ c(a, {
|
|
68
68
|
path: "plugin/:pluginKey",
|
|
69
|
-
element: $("vibecontrols.vibes", /* @__PURE__ */
|
|
69
|
+
element: $("vibecontrols.vibes", /* @__PURE__ */ c(U, {}))
|
|
70
|
+
}),
|
|
71
|
+
/* @__PURE__ */ c(a, {
|
|
72
|
+
path: "plugins",
|
|
73
|
+
element: $("vibecontrols.vibes", /* @__PURE__ */ c(W, {}))
|
|
70
74
|
}),
|
|
71
|
-
/* @__PURE__ */
|
|
75
|
+
/* @__PURE__ */ c(a, {
|
|
72
76
|
path: "agents",
|
|
73
|
-
element: $("vibecontrols.agents", /* @__PURE__ */
|
|
77
|
+
element: $("vibecontrols.agents", /* @__PURE__ */ c(f, {}))
|
|
74
78
|
}),
|
|
75
|
-
/* @__PURE__ */
|
|
79
|
+
/* @__PURE__ */ c(a, {
|
|
80
|
+
path: "agents/new",
|
|
81
|
+
element: /* @__PURE__ */ c(i, {
|
|
82
|
+
to: "../agents?create=true",
|
|
83
|
+
replace: !0
|
|
84
|
+
})
|
|
85
|
+
}),
|
|
86
|
+
/* @__PURE__ */ c(a, {
|
|
76
87
|
path: "agents/:id",
|
|
77
|
-
element: $("vibecontrols.agents", /* @__PURE__ */
|
|
88
|
+
element: $("vibecontrols.agents", /* @__PURE__ */ c(p, {}))
|
|
78
89
|
}),
|
|
79
|
-
/* @__PURE__ */
|
|
90
|
+
/* @__PURE__ */ c(a, {
|
|
80
91
|
path: "sessions",
|
|
81
|
-
element: $("vibecontrols.sessions", /* @__PURE__ */
|
|
92
|
+
element: $("vibecontrols.sessions", /* @__PURE__ */ c(h, {}))
|
|
82
93
|
}),
|
|
83
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ c(a, {
|
|
84
95
|
path: "vibes",
|
|
85
|
-
element: $("vibecontrols.vibes", /* @__PURE__ */
|
|
96
|
+
element: $("vibecontrols.vibes", /* @__PURE__ */ c(_, {}))
|
|
97
|
+
}),
|
|
98
|
+
/* @__PURE__ */ c(a, {
|
|
99
|
+
path: "vibes/new",
|
|
100
|
+
element: /* @__PURE__ */ c(i, {
|
|
101
|
+
to: "../vibes?create=true",
|
|
102
|
+
replace: !0
|
|
103
|
+
})
|
|
86
104
|
}),
|
|
87
|
-
/* @__PURE__ */
|
|
105
|
+
/* @__PURE__ */ c(a, {
|
|
88
106
|
path: "vibes/:id",
|
|
89
|
-
element: $("vibecontrols.vibes", /* @__PURE__ */
|
|
107
|
+
element: $("vibecontrols.vibes", /* @__PURE__ */ c(v, {}))
|
|
90
108
|
}),
|
|
91
|
-
/* @__PURE__ */
|
|
109
|
+
/* @__PURE__ */ c(a, {
|
|
92
110
|
path: "vibes/:id/docs/*",
|
|
93
|
-
element: $("vibecontrols.vibes", /* @__PURE__ */
|
|
111
|
+
element: $("vibecontrols.vibes", /* @__PURE__ */ c(N, {}))
|
|
94
112
|
}),
|
|
95
|
-
/* @__PURE__ */
|
|
113
|
+
/* @__PURE__ */ c(a, {
|
|
96
114
|
path: "notes/:id",
|
|
97
|
-
element: $("vibecontrols.vibes", /* @__PURE__ */
|
|
115
|
+
element: $("vibecontrols.vibes", /* @__PURE__ */ c(y, {}))
|
|
98
116
|
}),
|
|
99
|
-
/* @__PURE__ */
|
|
117
|
+
/* @__PURE__ */ c(a, {
|
|
100
118
|
path: "sessions/:id",
|
|
101
|
-
element: $("vibecontrols.sessions", /* @__PURE__ */
|
|
119
|
+
element: $("vibecontrols.sessions", /* @__PURE__ */ c(g, {}))
|
|
102
120
|
}),
|
|
103
|
-
/* @__PURE__ */
|
|
121
|
+
/* @__PURE__ */ c(a, {
|
|
104
122
|
path: "ai",
|
|
105
|
-
element: $("vibecontrols.ai", /* @__PURE__ */
|
|
123
|
+
element: $("vibecontrols.ai", /* @__PURE__ */ c(q, {}))
|
|
106
124
|
}),
|
|
107
|
-
/* @__PURE__ */
|
|
125
|
+
/* @__PURE__ */ c(a, {
|
|
108
126
|
path: "ai/bookmarks",
|
|
109
|
-
element: $("vibecontrols.ai", /* @__PURE__ */
|
|
127
|
+
element: $("vibecontrols.ai", /* @__PURE__ */ c(J, {}))
|
|
110
128
|
}),
|
|
111
|
-
/* @__PURE__ */
|
|
129
|
+
/* @__PURE__ */ c(a, {
|
|
112
130
|
path: "ai/:tab",
|
|
113
|
-
element: $("vibecontrols.ai", /* @__PURE__ */
|
|
131
|
+
element: $("vibecontrols.ai", /* @__PURE__ */ c(q, {}))
|
|
114
132
|
}),
|
|
115
|
-
/* @__PURE__ */
|
|
133
|
+
/* @__PURE__ */ c(a, {
|
|
116
134
|
path: "ai/sessions/:sessionId",
|
|
117
|
-
element: $("vibecontrols.ai", /* @__PURE__ */
|
|
135
|
+
element: $("vibecontrols.ai", /* @__PURE__ */ c(q, {}))
|
|
118
136
|
}),
|
|
119
|
-
/* @__PURE__ */
|
|
137
|
+
/* @__PURE__ */ c(a, {
|
|
120
138
|
path: "ai-tools",
|
|
121
|
-
element: /* @__PURE__ */
|
|
139
|
+
element: /* @__PURE__ */ c(i, {
|
|
122
140
|
to: "ai/overview",
|
|
123
141
|
replace: !0
|
|
124
142
|
})
|
|
125
143
|
}),
|
|
126
|
-
/* @__PURE__ */
|
|
144
|
+
/* @__PURE__ */ c(a, {
|
|
127
145
|
path: "ai-tools/plan",
|
|
128
|
-
element: $("vibecontrols.ai", /* @__PURE__ */
|
|
146
|
+
element: $("vibecontrols.ai", /* @__PURE__ */ c(G, {}))
|
|
129
147
|
}),
|
|
130
|
-
/* @__PURE__ */
|
|
148
|
+
/* @__PURE__ */ c(a, {
|
|
131
149
|
path: "ai-tools/ai",
|
|
132
|
-
element: /* @__PURE__ */
|
|
150
|
+
element: /* @__PURE__ */ c(i, {
|
|
133
151
|
to: "overview",
|
|
134
152
|
replace: !0
|
|
135
153
|
})
|
|
136
154
|
}),
|
|
137
|
-
/* @__PURE__ */
|
|
155
|
+
/* @__PURE__ */ c(a, {
|
|
138
156
|
path: "ai-tools/ai/:tab",
|
|
139
|
-
element: $("vibecontrols.ai", /* @__PURE__ */
|
|
157
|
+
element: $("vibecontrols.ai", /* @__PURE__ */ c(G, {}))
|
|
140
158
|
}),
|
|
141
|
-
/* @__PURE__ */
|
|
159
|
+
/* @__PURE__ */ c(a, {
|
|
142
160
|
path: "ai-tools/:tab",
|
|
143
|
-
element: /* @__PURE__ */
|
|
161
|
+
element: /* @__PURE__ */ c(Q, {})
|
|
144
162
|
}),
|
|
145
|
-
/* @__PURE__ */
|
|
163
|
+
/* @__PURE__ */ c(a, {
|
|
146
164
|
path: "ai-tools/sessions/:sessionId",
|
|
147
|
-
element: $("vibecontrols.ai", /* @__PURE__ */
|
|
165
|
+
element: $("vibecontrols.ai", /* @__PURE__ */ c(K, {}))
|
|
148
166
|
}),
|
|
149
|
-
/* @__PURE__ */
|
|
167
|
+
/* @__PURE__ */ c(a, {
|
|
150
168
|
path: "targets",
|
|
151
|
-
element: /* @__PURE__ */
|
|
169
|
+
element: /* @__PURE__ */ c(i, {
|
|
152
170
|
to: "../agents?tab=targets",
|
|
153
171
|
replace: !0
|
|
154
172
|
})
|
|
155
173
|
}),
|
|
156
|
-
/* @__PURE__ */
|
|
174
|
+
/* @__PURE__ */ c(a, {
|
|
157
175
|
path: "targets/:id",
|
|
158
|
-
element: $("vibecontrols.agents", /* @__PURE__ */
|
|
176
|
+
element: $("vibecontrols.agents", /* @__PURE__ */ c(m, {}))
|
|
159
177
|
}),
|
|
160
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ c(a, {
|
|
161
179
|
path: "agent-graph",
|
|
162
|
-
element: /* @__PURE__ */
|
|
180
|
+
element: /* @__PURE__ */ c(i, {
|
|
163
181
|
to: "../agents?tab=graph",
|
|
164
182
|
replace: !0
|
|
165
183
|
})
|
|
166
184
|
}),
|
|
167
|
-
/* @__PURE__ */
|
|
185
|
+
/* @__PURE__ */ c(a, {
|
|
168
186
|
path: "catalogs",
|
|
169
|
-
element: $("vibecontrols.catalogs", /* @__PURE__ */
|
|
187
|
+
element: $("vibecontrols.catalogs", /* @__PURE__ */ c(F, {}))
|
|
170
188
|
}),
|
|
171
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ c(a, {
|
|
172
190
|
path: "catalogs/:id",
|
|
173
|
-
element: $("vibecontrols.catalogs", /* @__PURE__ */
|
|
191
|
+
element: $("vibecontrols.catalogs", /* @__PURE__ */ c(I, {}))
|
|
174
192
|
}),
|
|
175
|
-
/* @__PURE__ */
|
|
193
|
+
/* @__PURE__ */ c(a, {
|
|
176
194
|
path: "catalogs/:id/docs/*",
|
|
177
|
-
element: $("vibecontrols.catalogs", /* @__PURE__ */
|
|
195
|
+
element: $("vibecontrols.catalogs", /* @__PURE__ */ c(L, {}))
|
|
178
196
|
}),
|
|
179
|
-
/* @__PURE__ */
|
|
197
|
+
/* @__PURE__ */ c(a, {
|
|
180
198
|
path: "components",
|
|
181
|
-
element: $("vibecontrols.components", /* @__PURE__ */
|
|
199
|
+
element: $("vibecontrols.components", /* @__PURE__ */ c(R, {}))
|
|
182
200
|
}),
|
|
183
|
-
/* @__PURE__ */
|
|
201
|
+
/* @__PURE__ */ c(a, {
|
|
184
202
|
path: "components/:id",
|
|
185
|
-
element: $("vibecontrols.components", /* @__PURE__ */
|
|
203
|
+
element: $("vibecontrols.components", /* @__PURE__ */ c(z, {}))
|
|
186
204
|
}),
|
|
187
|
-
/* @__PURE__ */
|
|
205
|
+
/* @__PURE__ */ c(a, {
|
|
188
206
|
path: "components/:id/docs/*",
|
|
189
|
-
element: $("vibecontrols.components", /* @__PURE__ */
|
|
207
|
+
element: $("vibecontrols.components", /* @__PURE__ */ c(B, {}))
|
|
190
208
|
}),
|
|
191
|
-
/* @__PURE__ */
|
|
209
|
+
/* @__PURE__ */ c(a, {
|
|
192
210
|
path: "templates",
|
|
193
|
-
element: $("vibecontrols.templates", /* @__PURE__ */
|
|
211
|
+
element: $("vibecontrols.templates", /* @__PURE__ */ c(V, {}))
|
|
194
212
|
}),
|
|
195
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ c(a, {
|
|
196
214
|
path: "templates/:id",
|
|
197
|
-
element: $("vibecontrols.templates", /* @__PURE__ */
|
|
215
|
+
element: $("vibecontrols.templates", /* @__PURE__ */ c(H, {}))
|
|
198
216
|
}),
|
|
199
|
-
/* @__PURE__ */
|
|
217
|
+
/* @__PURE__ */ c(a, {
|
|
200
218
|
path: "actions",
|
|
201
|
-
element: $("vibecontrols.actions", /* @__PURE__ */
|
|
219
|
+
element: $("vibecontrols.actions", /* @__PURE__ */ c(te, {}))
|
|
202
220
|
}),
|
|
203
|
-
/* @__PURE__ */
|
|
221
|
+
/* @__PURE__ */ c(a, {
|
|
204
222
|
path: "vibedeck",
|
|
205
|
-
element: $("vibecontrols.vibedeck", /* @__PURE__ */
|
|
223
|
+
element: $("vibecontrols.vibedeck", /* @__PURE__ */ c(D, {}))
|
|
206
224
|
}),
|
|
207
|
-
/* @__PURE__ */
|
|
225
|
+
/* @__PURE__ */ c(a, {
|
|
208
226
|
path: "calendar",
|
|
209
|
-
element: $("vibecontrols.calendar", /* @__PURE__ */
|
|
227
|
+
element: $("vibecontrols.calendar", /* @__PURE__ */ c(k, {}))
|
|
210
228
|
}),
|
|
211
|
-
/* @__PURE__ */
|
|
229
|
+
/* @__PURE__ */ c(a, {
|
|
212
230
|
path: "calendar/:viewType",
|
|
213
|
-
element: $("vibecontrols.calendar", /* @__PURE__ */
|
|
231
|
+
element: $("vibecontrols.calendar", /* @__PURE__ */ c(k, {}))
|
|
214
232
|
}),
|
|
215
|
-
/* @__PURE__ */
|
|
233
|
+
/* @__PURE__ */ c(a, {
|
|
216
234
|
path: "calendar/task/:taskId",
|
|
217
|
-
element: $("vibecontrols.calendar", /* @__PURE__ */
|
|
235
|
+
element: $("vibecontrols.calendar", /* @__PURE__ */ c(A, {}))
|
|
218
236
|
}),
|
|
219
|
-
/* @__PURE__ */
|
|
237
|
+
/* @__PURE__ */ c(a, {
|
|
220
238
|
path: "webhooks",
|
|
221
|
-
element: /* @__PURE__ */
|
|
239
|
+
element: /* @__PURE__ */ c(i, {
|
|
222
240
|
to: "/devportal/webhooks",
|
|
223
241
|
replace: !0
|
|
224
242
|
})
|
|
225
243
|
}),
|
|
226
|
-
/* @__PURE__ */
|
|
244
|
+
/* @__PURE__ */ c(a, {
|
|
227
245
|
path: "webhooks/new",
|
|
228
|
-
element: /* @__PURE__ */
|
|
246
|
+
element: /* @__PURE__ */ c(i, {
|
|
229
247
|
to: "/devportal/webhooks/new",
|
|
230
248
|
replace: !0
|
|
231
249
|
})
|
|
232
250
|
}),
|
|
233
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ c(a, {
|
|
234
252
|
path: "webhooks/:id",
|
|
235
|
-
element: /* @__PURE__ */
|
|
253
|
+
element: /* @__PURE__ */ c(i, {
|
|
236
254
|
to: "/devportal/webhooks",
|
|
237
255
|
replace: !0
|
|
238
256
|
})
|
|
239
257
|
}),
|
|
240
|
-
/* @__PURE__ */
|
|
258
|
+
/* @__PURE__ */ c(a, {
|
|
241
259
|
path: "gitops",
|
|
242
|
-
element: /* @__PURE__ */
|
|
260
|
+
element: /* @__PURE__ */ c(i, {
|
|
243
261
|
to: "../vibes",
|
|
244
262
|
replace: !0
|
|
245
263
|
})
|
|
246
264
|
}),
|
|
247
|
-
/* @__PURE__ */
|
|
265
|
+
/* @__PURE__ */ c(a, {
|
|
248
266
|
path: "gitops/:tab",
|
|
249
|
-
element: /* @__PURE__ */
|
|
267
|
+
element: /* @__PURE__ */ c(i, {
|
|
250
268
|
to: "../vibes",
|
|
251
269
|
replace: !0
|
|
252
270
|
})
|
|
253
271
|
}),
|
|
254
|
-
/* @__PURE__ */
|
|
272
|
+
/* @__PURE__ */ c(a, {
|
|
255
273
|
path: "tunnels",
|
|
256
|
-
element: $("vibecontrols.tunnels", /* @__PURE__ */
|
|
274
|
+
element: $("vibecontrols.tunnels", /* @__PURE__ */ c(b, {}))
|
|
257
275
|
}),
|
|
258
|
-
/* @__PURE__ */
|
|
276
|
+
/* @__PURE__ */ c(a, {
|
|
259
277
|
path: "tunnels/new",
|
|
260
|
-
element: $("vibecontrols.tunnels", /* @__PURE__ */
|
|
278
|
+
element: $("vibecontrols.tunnels", /* @__PURE__ */ c(S, {}))
|
|
261
279
|
}),
|
|
262
|
-
/* @__PURE__ */
|
|
280
|
+
/* @__PURE__ */ c(a, {
|
|
263
281
|
path: "tunnels/:tunnelId",
|
|
264
|
-
element: $("vibecontrols.tunnels", /* @__PURE__ */
|
|
282
|
+
element: $("vibecontrols.tunnels", /* @__PURE__ */ c(x, {}))
|
|
265
283
|
}),
|
|
266
|
-
/* @__PURE__ */
|
|
284
|
+
/* @__PURE__ */ c(a, {
|
|
267
285
|
path: "health",
|
|
268
|
-
element: $("vibecontrols.health", /* @__PURE__ */
|
|
286
|
+
element: $("vibecontrols.health", /* @__PURE__ */ c(w, {}))
|
|
269
287
|
}),
|
|
270
|
-
/* @__PURE__ */
|
|
288
|
+
/* @__PURE__ */ c(a, {
|
|
271
289
|
path: "analytics",
|
|
272
|
-
element: $("vibecontrols.analytics", /* @__PURE__ */
|
|
290
|
+
element: $("vibecontrols.analytics", /* @__PURE__ */ c(M, {}))
|
|
273
291
|
}),
|
|
274
|
-
/* @__PURE__ */
|
|
292
|
+
/* @__PURE__ */ c(a, {
|
|
275
293
|
path: "audit",
|
|
276
|
-
element: $("vibecontrols.audit-log", /* @__PURE__ */
|
|
294
|
+
element: $("vibecontrols.audit-log", /* @__PURE__ */ c(j, {}), !1)
|
|
277
295
|
}),
|
|
278
|
-
/* @__PURE__ */
|
|
296
|
+
/* @__PURE__ */ c(a, {
|
|
279
297
|
path: "logs",
|
|
280
|
-
element: $("vibecontrols.agents", /* @__PURE__ */
|
|
298
|
+
element: $("vibecontrols.agents", /* @__PURE__ */ c(P, {}))
|
|
281
299
|
}),
|
|
282
|
-
/* @__PURE__ */
|
|
300
|
+
/* @__PURE__ */ c(a, {
|
|
283
301
|
path: "settings",
|
|
284
|
-
element: $("vibecontrols.settings", /* @__PURE__ */
|
|
302
|
+
element: $("vibecontrols.settings", /* @__PURE__ */ c(C, {}))
|
|
285
303
|
}),
|
|
286
|
-
/* @__PURE__ */
|
|
304
|
+
/* @__PURE__ */ c(a, {
|
|
287
305
|
path: "getting-started",
|
|
288
|
-
element: /* @__PURE__ */
|
|
306
|
+
element: /* @__PURE__ */ c(T, {})
|
|
289
307
|
}),
|
|
290
|
-
/* @__PURE__ */
|
|
308
|
+
/* @__PURE__ */ c(a, {
|
|
291
309
|
path: "share/:token",
|
|
292
|
-
element: /* @__PURE__ */
|
|
310
|
+
element: /* @__PURE__ */ c(E, {})
|
|
293
311
|
}),
|
|
294
|
-
/* @__PURE__ */
|
|
312
|
+
/* @__PURE__ */ c(a, {
|
|
295
313
|
path: "deck/:token",
|
|
296
|
-
element: /* @__PURE__ */
|
|
314
|
+
element: /* @__PURE__ */ c(O, {})
|
|
297
315
|
}),
|
|
298
|
-
/* @__PURE__ */
|
|
316
|
+
/* @__PURE__ */ c(a, {
|
|
299
317
|
path: "access",
|
|
300
|
-
element: /* @__PURE__ */
|
|
318
|
+
element: /* @__PURE__ */ c(i, {
|
|
301
319
|
to: "../agents?tab=targets",
|
|
302
320
|
replace: !0
|
|
303
321
|
})
|
|
304
322
|
}),
|
|
305
|
-
/* @__PURE__ */
|
|
323
|
+
/* @__PURE__ */ c(a, {
|
|
306
324
|
path: "ssh-targets",
|
|
307
|
-
element: /* @__PURE__ */
|
|
325
|
+
element: /* @__PURE__ */ c(i, {
|
|
308
326
|
to: "../agents?tab=targets",
|
|
309
327
|
replace: !0
|
|
310
328
|
})
|
|
311
329
|
}),
|
|
312
|
-
/* @__PURE__ */
|
|
330
|
+
/* @__PURE__ */ c(a, {
|
|
313
331
|
path: "ssh-terminals",
|
|
314
|
-
element: /* @__PURE__ */
|
|
332
|
+
element: /* @__PURE__ */ c(i, {
|
|
315
333
|
to: "../agents?tab=targets",
|
|
316
334
|
replace: !0
|
|
317
335
|
})
|
|
318
336
|
}),
|
|
319
|
-
/* @__PURE__ */
|
|
337
|
+
/* @__PURE__ */ c(a, {
|
|
320
338
|
path: "*",
|
|
321
|
-
element: /* @__PURE__ */
|
|
339
|
+
element: /* @__PURE__ */ c(i, {
|
|
322
340
|
to: "",
|
|
323
341
|
replace: !0
|
|
324
342
|
})
|
|
@@ -327,6 +345,6 @@ function ne() {
|
|
|
327
345
|
});
|
|
328
346
|
}
|
|
329
347
|
//#endregion
|
|
330
|
-
export {
|
|
348
|
+
export { re as VibeControlsRoutes };
|
|
331
349
|
|
|
332
350
|
//# sourceMappingURL=VibeControlsRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeControlsRoutes.js","names":[],"sources":["../src/VibeControlsRoutes.tsx"],"sourcesContent":["import React, { Suspense, useEffect } from 'react';\nimport { Navigate, Route, Routes, useLocation, useParams } from 'react-router-dom';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTr } from './shared/hooks/useTr';\n\n// Lazy load - All pages (required for @/ alias resolution when consumed by host app)\nconst OverviewPage = React.lazy(() =>\n import('./pages/OverviewPage').then((m) => ({ default: m.OverviewPage }))\n);\n\n// Other pages\nconst AgentsLandingPage = React.lazy(() =>\n import('./pages/AgentsLandingPage').then((m) => ({ default: m.AgentsLandingPage }))\n);\nconst AgentDetailsPage = React.lazy(() =>\n import('./pages/AgentDetailsPage').then((m) => ({ default: m.AgentDetailsPage }))\n);\nconst TargetDetailsPage = React.lazy(() =>\n import('./pages/TargetDetailsPage').then((m) => ({ default: m.TargetDetailsPage }))\n);\nconst SessionsPage = React.lazy(() =>\n import('./pages/SessionsPage').then((m) => ({ default: m.SessionsPage }))\n);\nconst SessionDetailsPage = React.lazy(() =>\n import('./pages/SessionDetailsPage').then((m) => ({ default: m.SessionDetailsPage }))\n);\nconst VibesPage = React.lazy(() =>\n import('./pages/VibesPage').then((m) => ({ default: m.VibesPage }))\n);\nconst VibeDetailsPage = React.lazy(() =>\n import('./pages/VibeDetailsPage').then((m) => ({ default: m.VibeDetailsPage }))\n);\nconst NoteDetailsPage = React.lazy(() =>\n import('./pages/NoteDetailsPage').then((m) => ({ default: m.NoteDetailsPage }))\n);\nconst TunnelsLandingPage = React.lazy(() =>\n import('./pages/TunnelsLandingPage').then((m) => ({ default: m.TunnelsLandingPage }))\n);\nconst TunnelDetailsPage = React.lazy(() =>\n import('./pages/tunnels/TunnelDetailsPage').then((m) => ({ default: m.TunnelDetailsPage }))\n);\nconst TunnelCreateWizard = React.lazy(() =>\n import('./components/tunnels/TunnelCreateWizard').then((m) => ({ default: m.TunnelCreateWizard }))\n);\nconst SettingsPage = React.lazy(() =>\n import('./pages/SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\nconst HealthPage = React.lazy(() =>\n import('./pages/HealthPage').then((m) => ({ default: m.HealthPage }))\n);\nconst GettingStartedPage = React.lazy(() =>\n import('./pages/GettingStartedPage').then((m) => ({ default: m.GettingStartedPage }))\n);\nconst SharedSessionPage = React.lazy(() =>\n import('./pages/SharedSessionPage').then((m) => ({ default: m.SharedSessionPage }))\n);\nconst VibeDeckPage = React.lazy(() =>\n import('./pages/VibeDeckPage').then((m) => ({ default: m.VibeDeckPage }))\n);\nconst SharedVibeDeckPage = React.lazy(() =>\n import('./pages/SharedVibeDeckPage').then((m) => ({ default: m.SharedVibeDeckPage }))\n);\nconst VibeCalendarPage = React.lazy(() =>\n import('./pages/VibeCalendarPage').then((m) => ({ default: m.VibeCalendarPage }))\n);\nconst VibeTaskDetailPage = React.lazy(() =>\n import('./pages/VibeTaskDetailPage').then((m) => ({ default: m.VibeTaskDetailPage }))\n);\nconst ActionsPage = React.lazy(() =>\n import('./pages/ActionsPage').then((m) => ({ default: m.ActionsPage }))\n);\nconst VibeAuditPage = React.lazy(() =>\n import('./pages/VibeAuditPage').then((m) => ({ default: m.VibeAuditPage }))\n);\nconst AnalyticsPage = React.lazy(() =>\n import('./pages/AnalyticsPage').then((m) => ({ default: m.AnalyticsPage }))\n);\nconst VibeDocsPage = React.lazy(() =>\n import('./pages/VibeDocsPage').then((m) => ({ default: m.VibeDocsPage }))\n);\nconst LogsPage = React.lazy(() =>\n import('./pages/LogsPage').then((m) => ({ default: m.LogsPage }))\n);\n\n// Catalog, Components, Templates pages\nconst CatalogPage = React.lazy(() =>\n import('./pages/CatalogPage').then((m) => ({ default: m.CatalogPage }))\n);\nconst CatalogDetailPage = React.lazy(() =>\n import('./pages/CatalogDetailPage').then((m) => ({ default: m.CatalogDetailPage }))\n);\nconst CatalogDocsPage = React.lazy(() =>\n import('./pages/CatalogDocsPage').then((m) => ({ default: m.CatalogDocsPage }))\n);\nconst ComponentsPage = React.lazy(() =>\n import('./pages/ComponentsPage').then((m) => ({ default: m.ComponentsPage }))\n);\nconst ComponentDetailPage = React.lazy(() =>\n import('./pages/ComponentDetailPage').then((m) => ({ default: m.ComponentDetailPage }))\n);\nconst ComponentDocsPage = React.lazy(() =>\n import('./pages/ComponentDocsPage').then((m) => ({ default: m.ComponentDocsPage }))\n);\nconst TemplatesPage = React.lazy(() =>\n import('./pages/TemplatesPage').then((m) => ({ default: m.TemplatesPage }))\n);\nconst TemplateDetailPage = React.lazy(() =>\n import('./pages/TemplateDetailPage').then((m) => ({ default: m.TemplateDetailPage }))\n);\nconst PluginStandalonePage = React.lazy(() =>\n import('./pages/PluginStandalonePage').then((m) => ({ default: m.PluginStandalonePage }))\n);\n\n// AI pages\nconst AIPage = React.lazy(() => import('./pages/ai/AIPage').then((m) => ({ default: m.AIPage })));\nconst AISessionDetailPage = React.lazy(() =>\n import('./pages/ai/AISessionDetailPage').then((m) => ({ default: m.AISessionDetailPage }))\n);\nconst AgentManagerPage = React.lazy(() =>\n import('./pages/ai/AgentManagerPage').then((m) => ({ default: m.AgentManagerPage }))\n);\nconst AIBookmarksPage = React.lazy(() =>\n import('./pages/ai/AIBookmarksPage').then((m) => ({ default: m.AIBookmarksPage }))\n);\n\n// Loading fallback component\nfunction PageLoadingFallback() {\n return (\n <div className=\"flex items-center justify-center h-full min-h-[200px]\">\n <div className=\"animate-pulse bg-muted rounded w-full h-full\" />\n </div>\n );\n}\n\n/**\n * Internal router for the VibeControls microfrontend.\n * This component handles routing within the microfrontend using React Router v7.\n *\n * Routes:\n * - / → Overview page (dashboard)\n * - /agents → Agents management page\n * - /agents/:id → Agent details page\n * - /sessions → Sessions management page\n * - /sessions/:id → Session details page\n * - /vibes → Vibes (projects) management page\n * - /vibes/:id → Vibe details page (includes Notes tab)\n * - /settings → Settings page\n * - /webhooks → Legacy redirect to Developer Portal webhooks\n * - /health → Health monitoring page\n * - /* → Catch-all redirects to overview\n */\nfunction ScrollToTop() {\n const { pathname } = useLocation();\n useEffect(() => {\n // The scrollable container is the <main> element with overflow-auto\n // inside AppShellLayout, not the window itself.\n const main = document.querySelector('main');\n if (main) main.scrollTop = 0;\n }, [pathname]);\n return null;\n}\n\n/**\n * Legacy redirect: /ai-tools/<tab> → /ai-tools/ai/<tab>.\n *\n * Before the Plan / AI mode toggle the page was reachable directly at\n * /ai-tools/<tab>. New shape is /ai-tools/<mode>/<tab>. We keep the\n * legacy links working by mapping the captured `:tab` param: if it\n * resolves to a known AI sub-tab, redirect there; if it's literally\n * \"plan\", route to the Plan page; otherwise fall back to AI overview.\n */\nconst VALID_AI_TABS = new Set<string>([\n 'overview',\n 'templates',\n 'contexts',\n 'prompts',\n 'sessions',\n 'tasks',\n 'stats',\n 'playground',\n 'config',\n]);\n\nfunction LegacyAIToolsRedirect() {\n const { tab } = useParams<{ tab?: string }>();\n if (tab === 'plan') {\n return <Navigate to=\"/vibecontrols/ai-tools/plan\" replace />;\n }\n if (tab && VALID_AI_TABS.has(tab)) {\n return <Navigate to={`/vibecontrols/ai-tools/ai/${tab}`} replace />;\n }\n return <Navigate to=\"/vibecontrols/ai-tools/ai/overview\" replace />;\n}\n\n/**\n * Fallback shown when a feature flag is OFF.\n */\nfunction FeatureDisabledFallback() {\n const tr = useTr();\n return (\n <div className=\"flex items-center justify-center h-full min-h-[200px] text-text-secondary text-sm\">\n {tr(\n 'vibecontrols.pages.featureDisabled',\n 'This feature is currently disabled. You can enable it from Feature Previews.'\n )}\n </div>\n );\n}\n\n/**\n * Helper: wraps a page element in a FeatureGate.\n * defaultValue={true} means the feature shows by default (before flags are seeded).\n * Only hides when a flag is explicitly set to false.\n */\nfunction gated(flag: string, element: React.ReactNode, defaultValue = true): React.ReactElement {\n return (\n <FeatureGate flag={flag} defaultValue={defaultValue} fallback={<FeatureDisabledFallback />}>\n {element}\n </FeatureGate>\n );\n}\n\nexport function VibeControlsRoutes() {\n return (\n <Suspense fallback={<PageLoadingFallback />}>\n <ScrollToTop />\n <Routes>\n {/* Default route - overview page */}\n <Route index element={gated('vibecontrols.overview', <OverviewPage />)} />\n\n {/* Core pages */}\n {/* PR-9 standalone plugin route — deep-link any contribution\n from any mount point as a full-page view. Wrapped in the\n same `gated()` envelope as every other authenticated route\n for consistent authz; the page-level\n `vibes.tabs.iframe-host` feature flag still gates rendering\n once the user is past the entitlement check. */}\n <Route\n path=\"plugin/:pluginKey\"\n element={gated('vibecontrols.vibes', <PluginStandalonePage />)}\n />\n\n <Route path=\"agents\" element={gated('vibecontrols.agents', <AgentsLandingPage />)} />\n <Route path=\"agents/:id\" element={gated('vibecontrols.agents', <AgentDetailsPage />)} />\n <Route path=\"sessions\" element={gated('vibecontrols.sessions', <SessionsPage />)} />\n <Route path=\"vibes\" element={gated('vibecontrols.vibes', <VibesPage />)} />\n <Route path=\"vibes/:id\" element={gated('vibecontrols.vibes', <VibeDetailsPage />)} />\n <Route path=\"vibes/:id/docs/*\" element={gated('vibecontrols.vibes', <VibeDocsPage />)} />\n <Route path=\"notes/:id\" element={gated('vibecontrols.vibes', <NoteDetailsPage />)} />\n <Route\n path=\"sessions/:id\"\n element={gated('vibecontrols.sessions', <SessionDetailsPage />)}\n />\n {/* Agent Manager — multi-session tabbed UI (replaces old AI page) */}\n <Route path=\"ai\" element={gated('vibecontrols.ai', <AgentManagerPage />)} />\n {/* Saved messages — listed BEFORE ai/:tab so \"bookmarks\" is not consumed as a tab. */}\n <Route path=\"ai/bookmarks\" element={gated('vibecontrols.ai', <AIBookmarksPage />)} />\n <Route path=\"ai/:tab\" element={gated('vibecontrols.ai', <AgentManagerPage />)} />\n <Route\n path=\"ai/sessions/:sessionId\"\n element={gated('vibecontrols.ai', <AgentManagerPage />)}\n />\n {/* AI Tools — Plan / AI modes:\n /ai-tools → /ai-tools/ai/overview (redirect)\n /ai-tools/plan → Plan mode (plannotator iframe)\n /ai-tools/ai → /ai-tools/ai/overview (redirect)\n /ai-tools/ai/:tab → AI mode with active sub-tab\n Legacy /ai-tools/<tab> URLs from before the Plan mode rollout\n redirect into the new shape via LegacyAIToolsRedirect. */}\n <Route path=\"ai-tools\" element={<Navigate to=\"ai/overview\" replace />} />\n <Route path=\"ai-tools/plan\" element={gated('vibecontrols.ai', <AIPage />)} />\n <Route path=\"ai-tools/ai\" element={<Navigate to=\"overview\" replace />} />\n <Route path=\"ai-tools/ai/:tab\" element={gated('vibecontrols.ai', <AIPage />)} />\n <Route path=\"ai-tools/:tab\" element={<LegacyAIToolsRedirect />} />\n <Route\n path=\"ai-tools/sessions/:sessionId\"\n element={gated('vibecontrols.ai', <AISessionDetailPage />)}\n />\n\n {/* Targets list lives in the Targets & Agents landing; per-target\n detail is its own page (mirrors agents/:id). */}\n <Route path=\"targets\" element={<Navigate to=\"../agents?tab=targets\" replace />} />\n <Route path=\"targets/:id\" element={gated('vibecontrols.agents', <TargetDetailsPage />)} />\n {/* Agent Graph is also a tab inside the Targets & Agents landing. */}\n <Route path=\"agent-graph\" element={<Navigate to=\"../agents?tab=graph\" replace />} />\n\n {/* Catalog */}\n <Route path=\"catalogs\" element={gated('vibecontrols.catalogs', <CatalogPage />)} />\n <Route\n path=\"catalogs/:id\"\n element={gated('vibecontrols.catalogs', <CatalogDetailPage />)}\n />\n <Route\n path=\"catalogs/:id/docs/*\"\n element={gated('vibecontrols.catalogs', <CatalogDocsPage />)}\n />\n <Route path=\"components\" element={gated('vibecontrols.components', <ComponentsPage />)} />\n <Route\n path=\"components/:id\"\n element={gated('vibecontrols.components', <ComponentDetailPage />)}\n />\n <Route\n path=\"components/:id/docs/*\"\n element={gated('vibecontrols.components', <ComponentDocsPage />)}\n />\n <Route path=\"templates\" element={gated('vibecontrols.templates', <TemplatesPage />)} />\n <Route\n path=\"templates/:id\"\n element={gated('vibecontrols.templates', <TemplateDetailPage />)}\n />\n\n {/* Automation */}\n <Route path=\"actions\" element={gated('vibecontrols.actions', <ActionsPage />)} />\n <Route path=\"vibedeck\" element={gated('vibecontrols.vibedeck', <VibeDeckPage />)} />\n <Route path=\"calendar\" element={gated('vibecontrols.calendar', <VibeCalendarPage />)} />\n <Route\n path=\"calendar/:viewType\"\n element={gated('vibecontrols.calendar', <VibeCalendarPage />)}\n />\n <Route\n path=\"calendar/task/:taskId\"\n element={gated('vibecontrols.calendar', <VibeTaskDetailPage />)}\n />\n <Route path=\"webhooks\" element={<Navigate to=\"/devportal/webhooks\" replace />} />\n <Route path=\"webhooks/new\" element={<Navigate to=\"/devportal/webhooks/new\" replace />} />\n <Route path=\"webhooks/:id\" element={<Navigate to=\"/devportal/webhooks\" replace />} />\n {/* GitOps consolidated into Vibe detail tab — old /gitops routes redirect to vibes list. */}\n <Route path=\"gitops\" element={<Navigate to=\"../vibes\" replace />} />\n <Route path=\"gitops/:tab\" element={<Navigate to=\"../vibes\" replace />} />\n\n {/* Infrastructure */}\n <Route path=\"tunnels\" element={gated('vibecontrols.tunnels', <TunnelsLandingPage />)} />\n <Route path=\"tunnels/new\" element={gated('vibecontrols.tunnels', <TunnelCreateWizard />)} />\n <Route\n path=\"tunnels/:tunnelId\"\n element={gated('vibecontrols.tunnels', <TunnelDetailsPage />)}\n />\n\n {/* Insights */}\n <Route path=\"health\" element={gated('vibecontrols.health', <HealthPage />)} />\n <Route path=\"analytics\" element={gated('vibecontrols.analytics', <AnalyticsPage />)} />\n <Route path=\"audit\" element={gated('vibecontrols.audit-log', <VibeAuditPage />, false)} />\n <Route path=\"logs\" element={gated('vibecontrols.agents', <LogsPage />)} />\n\n {/* Settings */}\n <Route path=\"settings\" element={gated('vibecontrols.settings', <SettingsPage />)} />\n\n {/* Setup */}\n {/* Not gated — onboarding flow must always be reachable */}\n <Route path=\"getting-started\" element={<GettingStartedPage />} />\n\n {/* Shared public routes (no gating — accessible via public links) */}\n <Route path=\"share/:token\" element={<SharedSessionPage />} />\n <Route path=\"deck/:token\" element={<SharedVibeDeckPage />} />\n\n {/* Legacy redirects */}\n <Route path=\"access\" element={<Navigate to=\"../agents?tab=targets\" replace />} />\n <Route path=\"ssh-targets\" element={<Navigate to=\"../agents?tab=targets\" replace />} />\n <Route path=\"ssh-terminals\" element={<Navigate to=\"../agents?tab=targets\" replace />} />\n\n {/* Catch-all route - redirect to overview */}\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VibeControlsRoutes.js","names":[],"sources":["../src/VibeControlsRoutes.tsx"],"sourcesContent":["import React, { Suspense, useEffect } from 'react';\nimport { Navigate, Route, Routes, useLocation, useParams } from 'react-router-dom';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTr } from './shared/hooks/useTr';\n\n// Lazy load - All pages (required for @/ alias resolution when consumed by host app)\nconst OverviewPage = React.lazy(() =>\n import('./pages/OverviewPage').then((m) => ({ default: m.OverviewPage }))\n);\n\n// Other pages\nconst AgentsLandingPage = React.lazy(() =>\n import('./pages/AgentsLandingPage').then((m) => ({ default: m.AgentsLandingPage }))\n);\nconst AgentDetailsPage = React.lazy(() =>\n import('./pages/AgentDetailsPage').then((m) => ({ default: m.AgentDetailsPage }))\n);\nconst TargetDetailsPage = React.lazy(() =>\n import('./pages/TargetDetailsPage').then((m) => ({ default: m.TargetDetailsPage }))\n);\nconst SessionsPage = React.lazy(() =>\n import('./pages/SessionsPage').then((m) => ({ default: m.SessionsPage }))\n);\nconst SessionDetailsPage = React.lazy(() =>\n import('./pages/SessionDetailsPage').then((m) => ({ default: m.SessionDetailsPage }))\n);\nconst VibesPage = React.lazy(() =>\n import('./pages/VibesPage').then((m) => ({ default: m.VibesPage }))\n);\nconst VibeDetailsPage = React.lazy(() =>\n import('./pages/VibeDetailsPage').then((m) => ({ default: m.VibeDetailsPage }))\n);\nconst NoteDetailsPage = React.lazy(() =>\n import('./pages/NoteDetailsPage').then((m) => ({ default: m.NoteDetailsPage }))\n);\nconst TunnelsLandingPage = React.lazy(() =>\n import('./pages/TunnelsLandingPage').then((m) => ({ default: m.TunnelsLandingPage }))\n);\nconst TunnelDetailsPage = React.lazy(() =>\n import('./pages/tunnels/TunnelDetailsPage').then((m) => ({ default: m.TunnelDetailsPage }))\n);\nconst TunnelCreateWizard = React.lazy(() =>\n import('./components/tunnels/TunnelCreateWizard').then((m) => ({ default: m.TunnelCreateWizard }))\n);\nconst SettingsPage = React.lazy(() =>\n import('./pages/SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\nconst HealthPage = React.lazy(() =>\n import('./pages/HealthPage').then((m) => ({ default: m.HealthPage }))\n);\nconst GettingStartedPage = React.lazy(() =>\n import('./pages/GettingStartedPage').then((m) => ({ default: m.GettingStartedPage }))\n);\nconst SharedSessionPage = React.lazy(() =>\n import('./pages/SharedSessionPage').then((m) => ({ default: m.SharedSessionPage }))\n);\nconst VibeDeckPage = React.lazy(() =>\n import('./pages/VibeDeckPage').then((m) => ({ default: m.VibeDeckPage }))\n);\nconst SharedVibeDeckPage = React.lazy(() =>\n import('./pages/SharedVibeDeckPage').then((m) => ({ default: m.SharedVibeDeckPage }))\n);\nconst VibeCalendarPage = React.lazy(() =>\n import('./pages/VibeCalendarPage').then((m) => ({ default: m.VibeCalendarPage }))\n);\nconst VibeTaskDetailPage = React.lazy(() =>\n import('./pages/VibeTaskDetailPage').then((m) => ({ default: m.VibeTaskDetailPage }))\n);\nconst ActionsPage = React.lazy(() =>\n import('./pages/ActionsPage').then((m) => ({ default: m.ActionsPage }))\n);\nconst VibeAuditPage = React.lazy(() =>\n import('./pages/VibeAuditPage').then((m) => ({ default: m.VibeAuditPage }))\n);\nconst AnalyticsPage = React.lazy(() =>\n import('./pages/AnalyticsPage').then((m) => ({ default: m.AnalyticsPage }))\n);\nconst VibeDocsPage = React.lazy(() =>\n import('./pages/VibeDocsPage').then((m) => ({ default: m.VibeDocsPage }))\n);\nconst LogsPage = React.lazy(() =>\n import('./pages/LogsPage').then((m) => ({ default: m.LogsPage }))\n);\n\n// Catalog, Components, Templates pages\nconst CatalogPage = React.lazy(() =>\n import('./pages/CatalogPage').then((m) => ({ default: m.CatalogPage }))\n);\nconst CatalogDetailPage = React.lazy(() =>\n import('./pages/CatalogDetailPage').then((m) => ({ default: m.CatalogDetailPage }))\n);\nconst CatalogDocsPage = React.lazy(() =>\n import('./pages/CatalogDocsPage').then((m) => ({ default: m.CatalogDocsPage }))\n);\nconst ComponentsPage = React.lazy(() =>\n import('./pages/ComponentsPage').then((m) => ({ default: m.ComponentsPage }))\n);\nconst ComponentDetailPage = React.lazy(() =>\n import('./pages/ComponentDetailPage').then((m) => ({ default: m.ComponentDetailPage }))\n);\nconst ComponentDocsPage = React.lazy(() =>\n import('./pages/ComponentDocsPage').then((m) => ({ default: m.ComponentDocsPage }))\n);\nconst TemplatesPage = React.lazy(() =>\n import('./pages/TemplatesPage').then((m) => ({ default: m.TemplatesPage }))\n);\nconst TemplateDetailPage = React.lazy(() =>\n import('./pages/TemplateDetailPage').then((m) => ({ default: m.TemplateDetailPage }))\n);\nconst PluginStandalonePage = React.lazy(() =>\n import('./pages/PluginStandalonePage').then((m) => ({ default: m.PluginStandalonePage }))\n);\nconst PluginsCatalogPage = React.lazy(() =>\n import('./pages/PluginsCatalogPage').then((m) => ({ default: m.PluginsCatalogPage }))\n);\n\n// AI pages\nconst AIPage = React.lazy(() => import('./pages/ai/AIPage').then((m) => ({ default: m.AIPage })));\nconst AISessionDetailPage = React.lazy(() =>\n import('./pages/ai/AISessionDetailPage').then((m) => ({ default: m.AISessionDetailPage }))\n);\nconst AgentManagerPage = React.lazy(() =>\n import('./pages/ai/AgentManagerPage').then((m) => ({ default: m.AgentManagerPage }))\n);\nconst AIBookmarksPage = React.lazy(() =>\n import('./pages/ai/AIBookmarksPage').then((m) => ({ default: m.AIBookmarksPage }))\n);\n\n// Loading fallback component\nfunction PageLoadingFallback() {\n return (\n <div className=\"flex items-center justify-center h-full min-h-[200px]\">\n <div className=\"animate-pulse bg-muted rounded w-full h-full\" />\n </div>\n );\n}\n\n/**\n * Internal router for the VibeControls microfrontend.\n * This component handles routing within the microfrontend using React Router v7.\n *\n * Routes:\n * - / → Overview page (dashboard)\n * - /agents → Agents management page\n * - /agents/:id → Agent details page\n * - /sessions → Sessions management page\n * - /sessions/:id → Session details page\n * - /vibes → Vibes (projects) management page\n * - /vibes/:id → Vibe details page (includes Notes tab)\n * - /settings → Settings page\n * - /webhooks → Legacy redirect to Developer Portal webhooks\n * - /health → Health monitoring page\n * - /* → Catch-all redirects to overview\n */\nfunction ScrollToTop() {\n const { pathname } = useLocation();\n useEffect(() => {\n // The scrollable container is the <main> element with overflow-auto\n // inside AppShellLayout, not the window itself.\n const main = document.querySelector('main');\n if (main) main.scrollTop = 0;\n }, [pathname]);\n return null;\n}\n\n/**\n * Legacy redirect: /ai-tools/<tab> → /ai-tools/ai/<tab>.\n *\n * Before the Plan / AI mode toggle the page was reachable directly at\n * /ai-tools/<tab>. New shape is /ai-tools/<mode>/<tab>. We keep the\n * legacy links working by mapping the captured `:tab` param: if it\n * resolves to a known AI sub-tab, redirect there; if it's literally\n * \"plan\", route to the Plan page; otherwise fall back to AI overview.\n */\nconst VALID_AI_TABS = new Set<string>([\n 'overview',\n 'templates',\n 'contexts',\n 'prompts',\n 'sessions',\n 'tasks',\n 'stats',\n 'playground',\n 'config',\n]);\n\nfunction LegacyAIToolsRedirect() {\n const { tab } = useParams<{ tab?: string }>();\n if (tab === 'plan') {\n return <Navigate to=\"/vibecontrols/ai-tools/plan\" replace />;\n }\n if (tab && VALID_AI_TABS.has(tab)) {\n return <Navigate to={`/vibecontrols/ai-tools/ai/${tab}`} replace />;\n }\n return <Navigate to=\"/vibecontrols/ai-tools/ai/overview\" replace />;\n}\n\n/**\n * Fallback shown when a feature flag is OFF.\n */\nfunction FeatureDisabledFallback() {\n const tr = useTr();\n return (\n <div className=\"flex items-center justify-center h-full min-h-[200px] text-text-secondary text-sm\">\n {tr(\n 'vibecontrols.pages.featureDisabled',\n 'This feature is currently disabled. You can enable it from Feature Previews.'\n )}\n </div>\n );\n}\n\n/**\n * Helper: wraps a page element in a FeatureGate.\n * defaultValue={true} means the feature shows by default (before flags are seeded).\n * Only hides when a flag is explicitly set to false.\n */\nfunction gated(flag: string, element: React.ReactNode, defaultValue = true): React.ReactElement {\n return (\n <FeatureGate flag={flag} defaultValue={defaultValue} fallback={<FeatureDisabledFallback />}>\n {element}\n </FeatureGate>\n );\n}\n\nexport function VibeControlsRoutes() {\n return (\n <Suspense fallback={<PageLoadingFallback />}>\n <ScrollToTop />\n <Routes>\n {/* Default route - overview page */}\n <Route index element={gated('vibecontrols.overview', <OverviewPage />)} />\n\n {/* Core pages */}\n {/* PR-9 standalone plugin route — deep-link any contribution\n from any mount point as a full-page view. Wrapped in the\n same `gated()` envelope as every other authenticated route\n for consistent authz; the page-level\n `vibes.tabs.iframe-host` feature flag still gates rendering\n once the user is past the entitlement check. */}\n <Route\n path=\"plugin/:pluginKey\"\n element={gated('vibecontrols.vibes', <PluginStandalonePage />)}\n />\n {/* Plugins catalog — searchable grid of every published plugin. */}\n <Route path=\"plugins\" element={gated('vibecontrols.vibes', <PluginsCatalogPage />)} />\n\n <Route path=\"agents\" element={gated('vibecontrols.agents', <AgentsLandingPage />)} />\n <Route path=\"agents/new\" element={<Navigate to=\"../agents?create=true\" replace />} />\n <Route path=\"agents/:id\" element={gated('vibecontrols.agents', <AgentDetailsPage />)} />\n <Route path=\"sessions\" element={gated('vibecontrols.sessions', <SessionsPage />)} />\n <Route path=\"vibes\" element={gated('vibecontrols.vibes', <VibesPage />)} />\n <Route path=\"vibes/new\" element={<Navigate to=\"../vibes?create=true\" replace />} />\n <Route path=\"vibes/:id\" element={gated('vibecontrols.vibes', <VibeDetailsPage />)} />\n <Route path=\"vibes/:id/docs/*\" element={gated('vibecontrols.vibes', <VibeDocsPage />)} />\n <Route path=\"notes/:id\" element={gated('vibecontrols.vibes', <NoteDetailsPage />)} />\n <Route\n path=\"sessions/:id\"\n element={gated('vibecontrols.sessions', <SessionDetailsPage />)}\n />\n {/* Agent Manager — multi-session tabbed UI (replaces old AI page) */}\n <Route path=\"ai\" element={gated('vibecontrols.ai', <AgentManagerPage />)} />\n {/* Saved messages — listed BEFORE ai/:tab so \"bookmarks\" is not consumed as a tab. */}\n <Route path=\"ai/bookmarks\" element={gated('vibecontrols.ai', <AIBookmarksPage />)} />\n <Route path=\"ai/:tab\" element={gated('vibecontrols.ai', <AgentManagerPage />)} />\n <Route\n path=\"ai/sessions/:sessionId\"\n element={gated('vibecontrols.ai', <AgentManagerPage />)}\n />\n {/* AI Tools — Plan / AI modes:\n /ai-tools → /ai-tools/ai/overview (redirect)\n /ai-tools/plan → Plan mode (plannotator iframe)\n /ai-tools/ai → /ai-tools/ai/overview (redirect)\n /ai-tools/ai/:tab → AI mode with active sub-tab\n Legacy /ai-tools/<tab> URLs from before the Plan mode rollout\n redirect into the new shape via LegacyAIToolsRedirect. */}\n <Route path=\"ai-tools\" element={<Navigate to=\"ai/overview\" replace />} />\n <Route path=\"ai-tools/plan\" element={gated('vibecontrols.ai', <AIPage />)} />\n <Route path=\"ai-tools/ai\" element={<Navigate to=\"overview\" replace />} />\n <Route path=\"ai-tools/ai/:tab\" element={gated('vibecontrols.ai', <AIPage />)} />\n <Route path=\"ai-tools/:tab\" element={<LegacyAIToolsRedirect />} />\n <Route\n path=\"ai-tools/sessions/:sessionId\"\n element={gated('vibecontrols.ai', <AISessionDetailPage />)}\n />\n\n {/* Targets list lives in the Targets & Agents landing; per-target\n detail is its own page (mirrors agents/:id). */}\n <Route path=\"targets\" element={<Navigate to=\"../agents?tab=targets\" replace />} />\n <Route path=\"targets/:id\" element={gated('vibecontrols.agents', <TargetDetailsPage />)} />\n {/* Agent Graph is also a tab inside the Targets & Agents landing. */}\n <Route path=\"agent-graph\" element={<Navigate to=\"../agents?tab=graph\" replace />} />\n\n {/* Catalog */}\n <Route path=\"catalogs\" element={gated('vibecontrols.catalogs', <CatalogPage />)} />\n <Route\n path=\"catalogs/:id\"\n element={gated('vibecontrols.catalogs', <CatalogDetailPage />)}\n />\n <Route\n path=\"catalogs/:id/docs/*\"\n element={gated('vibecontrols.catalogs', <CatalogDocsPage />)}\n />\n <Route path=\"components\" element={gated('vibecontrols.components', <ComponentsPage />)} />\n <Route\n path=\"components/:id\"\n element={gated('vibecontrols.components', <ComponentDetailPage />)}\n />\n <Route\n path=\"components/:id/docs/*\"\n element={gated('vibecontrols.components', <ComponentDocsPage />)}\n />\n <Route path=\"templates\" element={gated('vibecontrols.templates', <TemplatesPage />)} />\n <Route\n path=\"templates/:id\"\n element={gated('vibecontrols.templates', <TemplateDetailPage />)}\n />\n\n {/* Automation */}\n <Route path=\"actions\" element={gated('vibecontrols.actions', <ActionsPage />)} />\n <Route path=\"vibedeck\" element={gated('vibecontrols.vibedeck', <VibeDeckPage />)} />\n <Route path=\"calendar\" element={gated('vibecontrols.calendar', <VibeCalendarPage />)} />\n <Route\n path=\"calendar/:viewType\"\n element={gated('vibecontrols.calendar', <VibeCalendarPage />)}\n />\n <Route\n path=\"calendar/task/:taskId\"\n element={gated('vibecontrols.calendar', <VibeTaskDetailPage />)}\n />\n <Route path=\"webhooks\" element={<Navigate to=\"/devportal/webhooks\" replace />} />\n <Route path=\"webhooks/new\" element={<Navigate to=\"/devportal/webhooks/new\" replace />} />\n <Route path=\"webhooks/:id\" element={<Navigate to=\"/devportal/webhooks\" replace />} />\n {/* GitOps consolidated into Vibe detail tab — old /gitops routes redirect to vibes list. */}\n <Route path=\"gitops\" element={<Navigate to=\"../vibes\" replace />} />\n <Route path=\"gitops/:tab\" element={<Navigate to=\"../vibes\" replace />} />\n\n {/* Infrastructure */}\n <Route path=\"tunnels\" element={gated('vibecontrols.tunnels', <TunnelsLandingPage />)} />\n <Route path=\"tunnels/new\" element={gated('vibecontrols.tunnels', <TunnelCreateWizard />)} />\n <Route\n path=\"tunnels/:tunnelId\"\n element={gated('vibecontrols.tunnels', <TunnelDetailsPage />)}\n />\n\n {/* Insights */}\n <Route path=\"health\" element={gated('vibecontrols.health', <HealthPage />)} />\n <Route path=\"analytics\" element={gated('vibecontrols.analytics', <AnalyticsPage />)} />\n <Route path=\"audit\" element={gated('vibecontrols.audit-log', <VibeAuditPage />, false)} />\n <Route path=\"logs\" element={gated('vibecontrols.agents', <LogsPage />)} />\n\n {/* Settings */}\n <Route path=\"settings\" element={gated('vibecontrols.settings', <SettingsPage />)} />\n\n {/* Setup */}\n {/* Not gated — onboarding flow must always be reachable */}\n <Route path=\"getting-started\" element={<GettingStartedPage />} />\n\n {/* Shared public routes (no gating — accessible via public links) */}\n <Route path=\"share/:token\" element={<SharedSessionPage />} />\n <Route path=\"deck/:token\" element={<SharedVibeDeckPage />} />\n\n {/* Legacy redirects */}\n <Route path=\"access\" element={<Navigate to=\"../agents?tab=targets\" replace />} />\n <Route path=\"ssh-targets\" element={<Navigate to=\"../agents?tab=targets\" replace />} />\n <Route path=\"ssh-terminals\" element={<Navigate to=\"../agents?tab=targets\" replace />} />\n\n {/* Catch-all route - redirect to overview */}\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|