@burdenoff/microfe-vibecontrols 2026.611.4 → 2026.613.1
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 +103 -95
- package/dist/VibeControlsRoot.js.map +1 -1
- package/dist/VibeControlsRoutes.js +22 -18
- package/dist/VibeControlsRoutes.js.map +1 -1
- package/dist/generated/wspace-types.js +21 -19
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/lib/toast.js.map +1 -1
- package/dist/pages/ai/AIBuilderPage.js +303 -0
- package/dist/pages/ai/AIBuilderPage.js.map +1 -0
- package/package.json +1 -1
package/dist/VibeControlsRoot.js
CHANGED
|
@@ -6,237 +6,245 @@ import n from "./components/shared/AgentEventsConnector.js";
|
|
|
6
6
|
import { useEffect as r } from "react";
|
|
7
7
|
import { useI18n as i } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
8
8
|
import { useRecordProductVisit as a } from "@burdenoff/fe-libs/shared/hooks";
|
|
9
|
-
import { Activity as o, BarChart2 as s, BookOpen as c, Bookmark as l, Bot as u, Box as d, Brain as f, CalendarClock as p, FileCode as m, GitBranch as h, Globe as g, LayoutDashboard as _, LayoutGrid as v, Network as y, PlayCircle as b, Plug as x, Puzzle as S, Rocket as C, Server as w, Settings as T, Shield as E,
|
|
10
|
-
import { jsx as
|
|
11
|
-
import { Toaster as
|
|
12
|
-
import { FeatureFlagProvider as
|
|
9
|
+
import { Activity as o, BarChart2 as s, BookOpen as c, Bookmark as l, Bot as u, Box as d, Brain as f, CalendarClock as p, FileCode as m, GitBranch as h, Globe as g, LayoutDashboard as _, LayoutGrid as v, Network as y, PlayCircle as b, Plug as x, Puzzle as S, Rocket as C, Server as w, Settings as T, Shield as E, Sparkles as D, Terminal as O, Webhook as k, Zap as A } from "lucide-react";
|
|
10
|
+
import { jsx as j, jsxs as M } from "react/jsx-runtime";
|
|
11
|
+
import { Toaster as N } from "@burdenoff/fe-libs/ui";
|
|
12
|
+
import { FeatureFlagProvider as P } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
13
13
|
//#region src/VibeControlsRoot.tsx
|
|
14
|
-
var
|
|
15
|
-
let { registerNavItems:
|
|
14
|
+
var F = (F) => {
|
|
15
|
+
let { registerNavItems: I, registerFooterItems: L, basePath: R = "/", workspaceId: z, renderToaster: B = !1 } = F, { t: V, locale: H } = i(), U = typeof window < "u" && /^\/vibecontrols\/(share|deck)\//.test(window.location.pathname);
|
|
16
16
|
a({
|
|
17
17
|
productSlug: "vibecontrols",
|
|
18
|
-
enabled: !
|
|
18
|
+
enabled: !U
|
|
19
19
|
});
|
|
20
|
-
let
|
|
20
|
+
let W = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
|
|
21
21
|
return r(() => {
|
|
22
|
-
if (!(!
|
|
22
|
+
if (!(!I || U)) return I([
|
|
23
23
|
{
|
|
24
24
|
id: "vibecontrols-overview",
|
|
25
|
-
label:
|
|
26
|
-
path:
|
|
27
|
-
icon: /* @__PURE__ */
|
|
25
|
+
label: V("nav.overview"),
|
|
26
|
+
path: R === "/" ? "/" : R,
|
|
27
|
+
icon: /* @__PURE__ */ j(_, { size: 20 }),
|
|
28
28
|
order: 10,
|
|
29
29
|
group: "vibecontrols"
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
id: "vibecontrols-targets",
|
|
33
|
-
label:
|
|
34
|
-
path:
|
|
35
|
-
icon: /* @__PURE__ */
|
|
33
|
+
label: V("nav.targets"),
|
|
34
|
+
path: W(R, "targets"),
|
|
35
|
+
icon: /* @__PURE__ */ j(w, { size: 20 }),
|
|
36
36
|
order: 12,
|
|
37
37
|
group: "vibecontrols"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
id: "vibecontrols-agents",
|
|
41
|
-
label:
|
|
42
|
-
path:
|
|
43
|
-
icon: /* @__PURE__ */
|
|
41
|
+
label: V("nav.agents"),
|
|
42
|
+
path: W(R, "agents"),
|
|
43
|
+
icon: /* @__PURE__ */ j(u, { size: 20 }),
|
|
44
44
|
order: 14,
|
|
45
45
|
group: "vibecontrols"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
id: "vibecontrols-agent-graph",
|
|
49
|
-
label:
|
|
50
|
-
path:
|
|
51
|
-
icon: /* @__PURE__ */
|
|
49
|
+
label: V("nav.agentGraph"),
|
|
50
|
+
path: W(R, "agent-graph"),
|
|
51
|
+
icon: /* @__PURE__ */ j(h, { size: 20 }),
|
|
52
52
|
order: 16,
|
|
53
53
|
group: "vibecontrols"
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
id: "vibecontrols-vibes",
|
|
57
|
-
label:
|
|
58
|
-
path:
|
|
59
|
-
icon: /* @__PURE__ */ A
|
|
57
|
+
label: V("nav.vibes"),
|
|
58
|
+
path: W(R, "vibes"),
|
|
59
|
+
icon: /* @__PURE__ */ j(A, { size: 20 }),
|
|
60
60
|
order: 20,
|
|
61
61
|
group: "vibecontrols"
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
id: "vibecontrols-catalogs",
|
|
65
|
-
label:
|
|
66
|
-
path:
|
|
67
|
-
icon: /* @__PURE__ */
|
|
65
|
+
label: V("nav.catalogs") === "nav.catalogs" ? "Catalogs" : V("nav.catalogs"),
|
|
66
|
+
path: W(R, "catalogs"),
|
|
67
|
+
icon: /* @__PURE__ */ j(c, { size: 20 }),
|
|
68
68
|
order: 21,
|
|
69
69
|
group: "vibecontrols"
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
id: "vibecontrols-components",
|
|
73
|
-
label:
|
|
74
|
-
path:
|
|
75
|
-
icon: /* @__PURE__ */
|
|
73
|
+
label: V("nav.components") === "nav.components" ? "Components" : V("nav.components"),
|
|
74
|
+
path: W(R, "components"),
|
|
75
|
+
icon: /* @__PURE__ */ j(d, { size: 20 }),
|
|
76
76
|
order: 22,
|
|
77
77
|
group: "vibecontrols"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
id: "vibecontrols-templates",
|
|
81
|
-
label:
|
|
82
|
-
path:
|
|
83
|
-
icon: /* @__PURE__ */
|
|
81
|
+
label: V("nav.templates") === "nav.templates" ? "Templates" : V("nav.templates"),
|
|
82
|
+
path: W(R, "templates"),
|
|
83
|
+
icon: /* @__PURE__ */ j(m, { size: 20 }),
|
|
84
84
|
order: 23,
|
|
85
85
|
group: "vibecontrols"
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
id: "vibecontrols-environments",
|
|
89
|
-
label:
|
|
90
|
-
path:
|
|
91
|
-
icon: /* @__PURE__ */
|
|
89
|
+
label: V("nav.environments") === "nav.environments" ? "Environments" : V("nav.environments"),
|
|
90
|
+
path: W(R, "environments"),
|
|
91
|
+
icon: /* @__PURE__ */ j(y, { size: 20 }),
|
|
92
92
|
order: 23.5,
|
|
93
93
|
group: "vibecontrols"
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
id: "vibecontrols-plugins",
|
|
97
|
-
label:
|
|
98
|
-
path:
|
|
99
|
-
icon: /* @__PURE__ */
|
|
97
|
+
label: V("nav.plugins") === "nav.plugins" ? "Plugins" : V("nav.plugins"),
|
|
98
|
+
path: W(R, "plugins"),
|
|
99
|
+
icon: /* @__PURE__ */ j(S, { size: 20 }),
|
|
100
100
|
order: 24,
|
|
101
101
|
group: "vibecontrols"
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
104
|
id: "vibecontrols-vibedeck",
|
|
105
|
-
label:
|
|
106
|
-
path:
|
|
107
|
-
icon: /* @__PURE__ */
|
|
105
|
+
label: V("nav.vibeDeck"),
|
|
106
|
+
path: W(R, "vibedeck"),
|
|
107
|
+
icon: /* @__PURE__ */ j(v, { size: 20 }),
|
|
108
108
|
order: 25,
|
|
109
109
|
group: "vibecontrols"
|
|
110
110
|
},
|
|
111
111
|
{
|
|
112
112
|
id: "vibecontrols-sessions",
|
|
113
|
-
label:
|
|
114
|
-
path:
|
|
115
|
-
icon: /* @__PURE__ */
|
|
113
|
+
label: V("nav.sessions"),
|
|
114
|
+
path: W(R, "sessions"),
|
|
115
|
+
icon: /* @__PURE__ */ j(O, { size: 20 }),
|
|
116
116
|
order: 30,
|
|
117
117
|
group: "vibecontrols"
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
120
|
id: "vibecontrols-vibecalendar",
|
|
121
|
-
label:
|
|
122
|
-
path:
|
|
123
|
-
icon: /* @__PURE__ */
|
|
121
|
+
label: V("nav.vibeCalendar"),
|
|
122
|
+
path: W(R, "calendar"),
|
|
123
|
+
icon: /* @__PURE__ */ j(p, { size: 20 }),
|
|
124
124
|
order: 35,
|
|
125
125
|
group: "vibecontrols"
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
id: "vibecontrols-ai",
|
|
129
|
-
label:
|
|
130
|
-
path:
|
|
131
|
-
icon: /* @__PURE__ */
|
|
129
|
+
label: V("nav.ai"),
|
|
130
|
+
path: W(R, "ai"),
|
|
131
|
+
icon: /* @__PURE__ */ j(f, { size: 20 }),
|
|
132
132
|
order: 38,
|
|
133
133
|
group: "vibecontrols"
|
|
134
134
|
},
|
|
135
135
|
{
|
|
136
136
|
id: "vibecontrols-ai-bookmarks",
|
|
137
|
-
label:
|
|
138
|
-
path:
|
|
139
|
-
icon: /* @__PURE__ */
|
|
137
|
+
label: V("nav.aiBookmarks"),
|
|
138
|
+
path: W(R, "ai/bookmarks"),
|
|
139
|
+
icon: /* @__PURE__ */ j(l, { size: 20 }),
|
|
140
140
|
order: 38.5,
|
|
141
141
|
group: "vibecontrols"
|
|
142
142
|
},
|
|
143
|
+
{
|
|
144
|
+
id: "vibecontrols-ai-builder",
|
|
145
|
+
label: V("nav.aiBuilder") === "nav.aiBuilder" ? "AI Builder" : V("nav.aiBuilder"),
|
|
146
|
+
path: W(R, "ai-builder"),
|
|
147
|
+
icon: /* @__PURE__ */ j(D, { size: 20 }),
|
|
148
|
+
order: 38.7,
|
|
149
|
+
group: "vibecontrols"
|
|
150
|
+
},
|
|
143
151
|
{
|
|
144
152
|
id: "vibecontrols-actions",
|
|
145
|
-
label:
|
|
146
|
-
path:
|
|
147
|
-
icon: /* @__PURE__ */
|
|
153
|
+
label: V("nav.actions"),
|
|
154
|
+
path: W(R, "actions"),
|
|
155
|
+
icon: /* @__PURE__ */ j(b, { size: 20 }),
|
|
148
156
|
order: 40,
|
|
149
157
|
group: "vibecontrols"
|
|
150
158
|
},
|
|
151
159
|
{
|
|
152
160
|
id: "vibecontrols-webhooks",
|
|
153
|
-
label:
|
|
154
|
-
path:
|
|
155
|
-
icon: /* @__PURE__ */
|
|
161
|
+
label: V("nav.webhooks") === "nav.webhooks" ? "Webhooks" : V("nav.webhooks"),
|
|
162
|
+
path: W(R, "webhooks"),
|
|
163
|
+
icon: /* @__PURE__ */ j(k, { size: 20 }),
|
|
156
164
|
order: 41,
|
|
157
165
|
group: "vibecontrols"
|
|
158
166
|
},
|
|
159
167
|
{
|
|
160
168
|
id: "vibecontrols-getting-started",
|
|
161
|
-
label:
|
|
162
|
-
path:
|
|
163
|
-
icon: /* @__PURE__ */
|
|
169
|
+
label: V("nav.gettingStarted"),
|
|
170
|
+
path: W(R, "getting-started"),
|
|
171
|
+
icon: /* @__PURE__ */ j(C, { size: 20 }),
|
|
164
172
|
order: 50,
|
|
165
173
|
group: "vibecontrols"
|
|
166
174
|
},
|
|
167
175
|
{
|
|
168
176
|
id: "vibecontrols-tunnels",
|
|
169
|
-
label:
|
|
170
|
-
path:
|
|
171
|
-
icon: /* @__PURE__ */
|
|
177
|
+
label: V("nav.tunnels"),
|
|
178
|
+
path: W(R, "tunnels"),
|
|
179
|
+
icon: /* @__PURE__ */ j(g, { size: 20 }),
|
|
172
180
|
order: 47,
|
|
173
181
|
group: "vibecontrols"
|
|
174
182
|
},
|
|
175
183
|
{
|
|
176
184
|
id: "vibecontrols-analytics",
|
|
177
|
-
label:
|
|
178
|
-
path:
|
|
179
|
-
icon: /* @__PURE__ */
|
|
185
|
+
label: V("nav.analytics"),
|
|
186
|
+
path: W(R, "analytics"),
|
|
187
|
+
icon: /* @__PURE__ */ j(s, { size: 20 }),
|
|
180
188
|
order: 55.5,
|
|
181
189
|
group: "vibecontrols-system"
|
|
182
190
|
},
|
|
183
191
|
{
|
|
184
192
|
id: "vibecontrols-audit",
|
|
185
|
-
label:
|
|
186
|
-
path:
|
|
187
|
-
icon: /* @__PURE__ */
|
|
193
|
+
label: V("nav.vibeAudit"),
|
|
194
|
+
path: W(R, "audit"),
|
|
195
|
+
icon: /* @__PURE__ */ j(E, { size: 20 }),
|
|
188
196
|
order: 56,
|
|
189
197
|
group: "vibecontrols-system"
|
|
190
198
|
},
|
|
191
199
|
{
|
|
192
200
|
id: "vibecontrols-health",
|
|
193
|
-
label:
|
|
194
|
-
path:
|
|
195
|
-
icon: /* @__PURE__ */
|
|
201
|
+
label: V("nav.health"),
|
|
202
|
+
path: W(R, "health"),
|
|
203
|
+
icon: /* @__PURE__ */ j(o, { size: 20 }),
|
|
196
204
|
order: 110,
|
|
197
205
|
group: "vibecontrols-system"
|
|
198
206
|
},
|
|
199
207
|
{
|
|
200
208
|
id: "vibecontrols-integrations",
|
|
201
|
-
label:
|
|
209
|
+
label: V("nav.integrations") === "nav.integrations" ? "Integrations" : V("nav.integrations"),
|
|
202
210
|
path: "/integrations",
|
|
203
|
-
icon: /* @__PURE__ */
|
|
211
|
+
icon: /* @__PURE__ */ j(x, { size: 20 }),
|
|
204
212
|
order: 115,
|
|
205
213
|
group: "vibecontrols-system"
|
|
206
214
|
},
|
|
207
215
|
{
|
|
208
216
|
id: "vibecontrols-settings",
|
|
209
|
-
label:
|
|
210
|
-
path:
|
|
211
|
-
icon: /* @__PURE__ */
|
|
217
|
+
label: V("nav.settings"),
|
|
218
|
+
path: W(R, "settings"),
|
|
219
|
+
icon: /* @__PURE__ */ j(T, { size: 20 }),
|
|
212
220
|
order: 120,
|
|
213
221
|
group: "vibecontrols-system"
|
|
214
222
|
}
|
|
215
223
|
]);
|
|
216
224
|
}, [
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
225
|
+
I,
|
|
226
|
+
R,
|
|
227
|
+
V,
|
|
228
|
+
H,
|
|
229
|
+
U
|
|
222
230
|
]), r(() => {
|
|
223
|
-
if (!(!
|
|
231
|
+
if (!(!L || U)) return L([{
|
|
224
232
|
id: "vibecontrols-status",
|
|
225
233
|
label: "VibeControls Ready",
|
|
226
234
|
type: "status",
|
|
227
235
|
order: 10,
|
|
228
236
|
section: "left"
|
|
229
237
|
}]);
|
|
230
|
-
}, [
|
|
231
|
-
workspaceId:
|
|
238
|
+
}, [L, U]), /* @__PURE__ */ j(P, {
|
|
239
|
+
workspaceId: z ?? null,
|
|
232
240
|
gateway: "global",
|
|
233
241
|
defaultEnabled: !0,
|
|
234
|
-
children: /* @__PURE__ */
|
|
235
|
-
...
|
|
242
|
+
children: /* @__PURE__ */ M(e, {
|
|
243
|
+
...F,
|
|
236
244
|
children: [
|
|
237
|
-
|
|
238
|
-
/* @__PURE__ */
|
|
239
|
-
/* @__PURE__ */
|
|
245
|
+
U ? null : /* @__PURE__ */ j(n, {}),
|
|
246
|
+
/* @__PURE__ */ j(t, {}),
|
|
247
|
+
B ? /* @__PURE__ */ j(N, {
|
|
240
248
|
position: "bottom-right",
|
|
241
249
|
offset: {
|
|
242
250
|
bottom: 96,
|
|
@@ -253,12 +261,12 @@ var P = (P) => {
|
|
|
253
261
|
"--normal-border": "var(--color-border-default)",
|
|
254
262
|
"--border-radius": "var(--radius-card)"
|
|
255
263
|
}
|
|
256
|
-
})
|
|
264
|
+
}) : null
|
|
257
265
|
]
|
|
258
266
|
})
|
|
259
267
|
});
|
|
260
268
|
};
|
|
261
269
|
//#endregion
|
|
262
|
-
export {
|
|
270
|
+
export { F as VibeControlsRoot };
|
|
263
271
|
|
|
264
272
|
//# sourceMappingURL=VibeControlsRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeControlsRoot.js","names":[],"sources":["../src/VibeControlsRoot.tsx"],"sourcesContent":["import type { CSSProperties, FC } from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useRecordProductVisit } from '@burdenoff/fe-libs/shared/hooks';\nimport {\n LayoutDashboard,\n Bot,\n Terminal,\n Zap,\n Globe,\n Settings,\n Activity,\n Rocket,\n LayoutGrid,\n CalendarClock,\n Shield,\n Server,\n GitBranch,\n Brain,\n Bookmark,\n PlayCircle,\n BarChart2,\n BookOpen,\n Box,\n FileCode,\n Plug,\n Puzzle,\n Network,\n Webhook,\n} from 'lucide-react';\nimport { VibeControlsProvider } from './providers/VibeControlsProvider';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { Toaster } from '@burdenoff/fe-libs/ui';\nimport type { NavItem, VibeControlsRootProps } from './types';\nimport { VibeControlsRoutes } from './VibeControlsRoutes';\nimport { AgentEventsConnector } from './components/shared/AgentEventsConnector';\nimport './styles/vibecontrols.css';\nimport './styles/print.css';\n\n/**\n * Root component for the VibeControls microfrontend.\n *\n * This is the main entry point that host applications import and render.\n * It sets up the necessary providers and renders the internal routing.\n * Automatically registers navigation items with the shell if registration functions are provided.\n *\n * @example\n * ```tsx\n * import { VibeControlsRoot, type VibeControlsRootProps } from '@burdenoff/microfe-vibecontrols';\n *\n * function App() {\n * const props: VibeControlsRootProps = {\n * basePath: '/vibecontrols',\n * navigate: (path) => router.push(path),\n * currentUser: { id: '1', email: 'user@example.com', firstName: 'John', lastName: 'Doe' },\n * workspaceId: 'ws-123',\n * tenantId: 'tenant-123',\n * apiGatewayUrl: 'https://api.example.com',\n * authToken: 'token',\n * defaultView: 'agents',\n * onAgentSelect: (agent) => console.log('Agent selected:', agent),\n * onSessionStart: (session) => console.log('Session started:', session),\n * onVibeActivate: (vibe) => console.log('Vibe activated:', vibe),\n * registerNavItems: (items) => { return () => {}; },\n * };\n *\n * return <VibeControlsRoot {...props} />;\n * }\n * ```\n */\nexport const VibeControlsRoot: FC<VibeControlsRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/', workspaceId } = props;\n const { t, locale } = useI18n();\n\n const isPublicLinkRoute =\n typeof window !== 'undefined' &&\n /^\\/vibecontrols\\/(share|deck)\\//.test(window.location.pathname);\n\n useRecordProductVisit({ productSlug: 'vibecontrols', enabled: !isPublicLinkRoute });\n\n // Helper to join paths correctly, avoiding double slashes\n const joinPath = (base: string, path: string): string => {\n const cleanBase = base.endsWith('/') ? base.slice(0, -1) : base;\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n return cleanBase + cleanPath;\n };\n\n // Register navigation items with the shell\n useEffect(() => {\n if (!registerNavItems || isPublicLinkRoute) return;\n\n const navItems: NavItem[] = [\n // Main navigation\n {\n id: 'vibecontrols-overview',\n label: t('nav.overview'),\n path: basePath === '/' ? '/' : basePath,\n icon: <LayoutDashboard size={20} />,\n order: 10,\n group: 'vibecontrols',\n },\n\n // Targets first — the primary entity\n {\n id: 'vibecontrols-targets',\n label: t('nav.targets'),\n path: joinPath(basePath, 'targets'),\n icon: <Server size={20} />,\n order: 12,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-agents',\n label: t('nav.agents'),\n path: joinPath(basePath, 'agents'),\n icon: <Bot size={20} />,\n order: 14,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-agent-graph',\n label: t('nav.agentGraph'),\n path: joinPath(basePath, 'agent-graph'),\n icon: <GitBranch size={20} />,\n order: 16,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-vibes',\n label: t('nav.vibes'),\n path: joinPath(basePath, 'vibes'),\n icon: <Zap size={20} />,\n order: 20,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-catalogs',\n label: t('nav.catalogs') === 'nav.catalogs' ? 'Catalogs' : t('nav.catalogs'),\n path: joinPath(basePath, 'catalogs'),\n icon: <BookOpen size={20} />,\n order: 21,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-components',\n label: t('nav.components') === 'nav.components' ? 'Components' : t('nav.components'),\n path: joinPath(basePath, 'components'),\n icon: <Box size={20} />,\n order: 22,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-templates',\n label: t('nav.templates') === 'nav.templates' ? 'Templates' : t('nav.templates'),\n path: joinPath(basePath, 'templates'),\n icon: <FileCode size={20} />,\n order: 23,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-environments',\n label:\n t('nav.environments') === 'nav.environments' ? 'Environments' : t('nav.environments'),\n path: joinPath(basePath, 'environments'),\n icon: <Network size={20} />,\n order: 23.5,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-plugins',\n label: t('nav.plugins') === 'nav.plugins' ? 'Plugins' : t('nav.plugins'),\n path: joinPath(basePath, 'plugins'),\n icon: <Puzzle size={20} />,\n order: 24,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-vibedeck',\n label: t('nav.vibeDeck'),\n path: joinPath(basePath, 'vibedeck'),\n icon: <LayoutGrid size={20} />,\n order: 25,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-sessions',\n label: t('nav.sessions'),\n path: joinPath(basePath, 'sessions'),\n icon: <Terminal size={20} />,\n order: 30,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-vibecalendar',\n label: t('nav.vibeCalendar'),\n path: joinPath(basePath, 'calendar'),\n icon: <CalendarClock size={20} />,\n order: 35,\n group: 'vibecontrols',\n },\n // AI Vibecoding\n {\n id: 'vibecontrols-ai',\n label: t('nav.ai'),\n path: joinPath(basePath, 'ai'),\n icon: <Brain size={20} />,\n order: 38,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-ai-bookmarks',\n label: t('nav.aiBookmarks'),\n path: joinPath(basePath, 'ai/bookmarks'),\n icon: <Bookmark size={20} />,\n order: 38.5,\n group: 'vibecontrols',\n },\n\n // Actions\n {\n id: 'vibecontrols-actions',\n label: t('nav.actions'),\n path: joinPath(basePath, 'actions'),\n icon: <PlayCircle size={20} />,\n order: 40,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-webhooks',\n label: t('nav.webhooks') === 'nav.webhooks' ? 'Webhooks' : t('nav.webhooks'),\n path: joinPath(basePath, 'webhooks'),\n icon: <Webhook size={20} />,\n order: 41,\n group: 'vibecontrols',\n },\n\n {\n id: 'vibecontrols-getting-started',\n label: t('nav.gettingStarted'),\n path: joinPath(basePath, 'getting-started'),\n icon: <Rocket size={20} />,\n order: 50,\n group: 'vibecontrols',\n },\n\n // Connection management\n {\n id: 'vibecontrols-tunnels',\n label: t('nav.tunnels'),\n path: joinPath(basePath, 'tunnels'),\n icon: <Globe size={20} />,\n order: 47,\n group: 'vibecontrols',\n },\n\n {\n id: 'vibecontrols-analytics',\n label: t('nav.analytics'),\n path: joinPath(basePath, 'analytics'),\n icon: <BarChart2 size={20} />,\n order: 55.5,\n group: 'vibecontrols-system',\n },\n {\n id: 'vibecontrols-audit',\n label: t('nav.vibeAudit'),\n path: joinPath(basePath, 'audit'),\n icon: <Shield size={20} />,\n order: 56,\n group: 'vibecontrols-system',\n },\n\n // Settings & System\n {\n id: 'vibecontrols-health',\n label: t('nav.health'),\n path: joinPath(basePath, 'health'),\n icon: <Activity size={20} />,\n order: 110,\n group: 'vibecontrols-system',\n },\n {\n id: 'vibecontrols-integrations',\n label:\n t('nav.integrations') === 'nav.integrations' ? 'Integrations' : t('nav.integrations'),\n // Absolute path — links out to the host shell's /integrations route\n // (microfe-integrations, mounted by vibecontrols-app). Keeps the\n // VibeControls MFE compliant with the no-cross-MFE-import rule.\n path: '/integrations',\n icon: <Plug size={20} />,\n order: 115,\n group: 'vibecontrols-system',\n },\n {\n id: 'vibecontrols-settings',\n label: t('nav.settings'),\n path: joinPath(basePath, 'settings'),\n icon: <Settings size={20} />,\n order: 120,\n group: 'vibecontrols-system',\n },\n ];\n\n // Register and get cleanup function\n const cleanup = registerNavItems(navItems);\n\n // Return cleanup function to unregister on unmount\n return cleanup;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [registerNavItems, basePath, t, locale, isPublicLinkRoute]);\n\n // Register footer items (example: status indicator in left section)\n useEffect(() => {\n if (!registerFooterItems || isPublicLinkRoute) return;\n\n const footerItems = [\n {\n id: 'vibecontrols-status',\n label: 'VibeControls Ready',\n type: 'status' as const,\n order: 10,\n section: 'left' as const,\n },\n ];\n\n const cleanup = registerFooterItems(footerItems);\n return cleanup;\n }, [registerFooterItems, isPublicLinkRoute]);\n\n return (\n <FeatureFlagProvider workspaceId={workspaceId ?? null} gateway=\"global\" defaultEnabled={true}>\n <VibeControlsProvider {...props}>\n {!isPublicLinkRoute ? (\n /* Agent events connector - syncs active agent to WebSocket */\n <AgentEventsConnector />\n ) : null}\n <VibeControlsRoutes />\n {/* Single sonner toaster for the whole module (lib/toast.ts emits\n to it). Offset clears the shell's page-discussion FAB at\n bottom-6 right-6. The style block remaps sonner's theme vars to\n this app's semantic tokens (the fe-libs defaults reference\n shadcn vars that are not defined in this shell). */}\n <Toaster\n position=\"bottom-right\"\n offset={{ bottom: 96, right: 16 }}\n mobileOffset={{ bottom: 96, left: 16, right: 16 }}\n style={\n {\n '--normal-bg': 'var(--color-bg-elevated)',\n '--normal-text': 'var(--color-text-primary)',\n '--normal-border': 'var(--color-border-default)',\n '--border-radius': 'var(--radius-card)',\n } as CSSProperties\n }\n />\n </VibeControlsProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VibeControlsRoot.js","names":[],"sources":["../src/VibeControlsRoot.tsx"],"sourcesContent":["import type { CSSProperties, FC } from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useRecordProductVisit } from '@burdenoff/fe-libs/shared/hooks';\nimport {\n LayoutDashboard,\n Bot,\n Terminal,\n Zap,\n Globe,\n Settings,\n Activity,\n Rocket,\n LayoutGrid,\n CalendarClock,\n Shield,\n Server,\n GitBranch,\n Brain,\n Bookmark,\n PlayCircle,\n BarChart2,\n BookOpen,\n Box,\n FileCode,\n Plug,\n Puzzle,\n Network,\n Webhook,\n Sparkles,\n} from 'lucide-react';\nimport { VibeControlsProvider } from './providers/VibeControlsProvider';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { Toaster } from '@burdenoff/fe-libs/ui';\nimport type { NavItem, VibeControlsRootProps } from './types';\nimport { VibeControlsRoutes } from './VibeControlsRoutes';\nimport { AgentEventsConnector } from './components/shared/AgentEventsConnector';\nimport './styles/vibecontrols.css';\nimport './styles/print.css';\n\n/**\n * Root component for the VibeControls microfrontend.\n *\n * This is the main entry point that host applications import and render.\n * It sets up the necessary providers and renders the internal routing.\n * Automatically registers navigation items with the shell if registration functions are provided.\n *\n * @example\n * ```tsx\n * import { VibeControlsRoot, type VibeControlsRootProps } from '@burdenoff/microfe-vibecontrols';\n *\n * function App() {\n * const props: VibeControlsRootProps = {\n * basePath: '/vibecontrols',\n * navigate: (path) => router.push(path),\n * currentUser: { id: '1', email: 'user@example.com', firstName: 'John', lastName: 'Doe' },\n * workspaceId: 'ws-123',\n * tenantId: 'tenant-123',\n * apiGatewayUrl: 'https://api.example.com',\n * authToken: 'token',\n * defaultView: 'agents',\n * onAgentSelect: (agent) => console.log('Agent selected:', agent),\n * onSessionStart: (session) => console.log('Session started:', session),\n * onVibeActivate: (vibe) => console.log('Vibe activated:', vibe),\n * registerNavItems: (items) => { return () => {}; },\n * };\n *\n * return <VibeControlsRoot {...props} />;\n * }\n * ```\n */\nexport const VibeControlsRoot: FC<VibeControlsRootProps> = (props) => {\n const {\n registerNavItems,\n registerFooterItems,\n basePath = '/',\n workspaceId,\n renderToaster = false,\n } = props;\n const { t, locale } = useI18n();\n\n const isPublicLinkRoute =\n typeof window !== 'undefined' &&\n /^\\/vibecontrols\\/(share|deck)\\//.test(window.location.pathname);\n\n useRecordProductVisit({ productSlug: 'vibecontrols', enabled: !isPublicLinkRoute });\n\n // Helper to join paths correctly, avoiding double slashes\n const joinPath = (base: string, path: string): string => {\n const cleanBase = base.endsWith('/') ? base.slice(0, -1) : base;\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n return cleanBase + cleanPath;\n };\n\n // Register navigation items with the shell\n useEffect(() => {\n if (!registerNavItems || isPublicLinkRoute) return;\n\n const navItems: NavItem[] = [\n // Main navigation\n {\n id: 'vibecontrols-overview',\n label: t('nav.overview'),\n path: basePath === '/' ? '/' : basePath,\n icon: <LayoutDashboard size={20} />,\n order: 10,\n group: 'vibecontrols',\n },\n\n // Targets first — the primary entity\n {\n id: 'vibecontrols-targets',\n label: t('nav.targets'),\n path: joinPath(basePath, 'targets'),\n icon: <Server size={20} />,\n order: 12,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-agents',\n label: t('nav.agents'),\n path: joinPath(basePath, 'agents'),\n icon: <Bot size={20} />,\n order: 14,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-agent-graph',\n label: t('nav.agentGraph'),\n path: joinPath(basePath, 'agent-graph'),\n icon: <GitBranch size={20} />,\n order: 16,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-vibes',\n label: t('nav.vibes'),\n path: joinPath(basePath, 'vibes'),\n icon: <Zap size={20} />,\n order: 20,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-catalogs',\n label: t('nav.catalogs') === 'nav.catalogs' ? 'Catalogs' : t('nav.catalogs'),\n path: joinPath(basePath, 'catalogs'),\n icon: <BookOpen size={20} />,\n order: 21,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-components',\n label: t('nav.components') === 'nav.components' ? 'Components' : t('nav.components'),\n path: joinPath(basePath, 'components'),\n icon: <Box size={20} />,\n order: 22,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-templates',\n label: t('nav.templates') === 'nav.templates' ? 'Templates' : t('nav.templates'),\n path: joinPath(basePath, 'templates'),\n icon: <FileCode size={20} />,\n order: 23,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-environments',\n label:\n t('nav.environments') === 'nav.environments' ? 'Environments' : t('nav.environments'),\n path: joinPath(basePath, 'environments'),\n icon: <Network size={20} />,\n order: 23.5,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-plugins',\n label: t('nav.plugins') === 'nav.plugins' ? 'Plugins' : t('nav.plugins'),\n path: joinPath(basePath, 'plugins'),\n icon: <Puzzle size={20} />,\n order: 24,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-vibedeck',\n label: t('nav.vibeDeck'),\n path: joinPath(basePath, 'vibedeck'),\n icon: <LayoutGrid size={20} />,\n order: 25,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-sessions',\n label: t('nav.sessions'),\n path: joinPath(basePath, 'sessions'),\n icon: <Terminal size={20} />,\n order: 30,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-vibecalendar',\n label: t('nav.vibeCalendar'),\n path: joinPath(basePath, 'calendar'),\n icon: <CalendarClock size={20} />,\n order: 35,\n group: 'vibecontrols',\n },\n // AI Vibecoding\n {\n id: 'vibecontrols-ai',\n label: t('nav.ai'),\n path: joinPath(basePath, 'ai'),\n icon: <Brain size={20} />,\n order: 38,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-ai-bookmarks',\n label: t('nav.aiBookmarks'),\n path: joinPath(basePath, 'ai/bookmarks'),\n icon: <Bookmark size={20} />,\n order: 38.5,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-ai-builder',\n label: t('nav.aiBuilder') === 'nav.aiBuilder' ? 'AI Builder' : t('nav.aiBuilder'),\n path: joinPath(basePath, 'ai-builder'),\n icon: <Sparkles size={20} />,\n order: 38.7,\n group: 'vibecontrols',\n },\n\n // Actions\n {\n id: 'vibecontrols-actions',\n label: t('nav.actions'),\n path: joinPath(basePath, 'actions'),\n icon: <PlayCircle size={20} />,\n order: 40,\n group: 'vibecontrols',\n },\n {\n id: 'vibecontrols-webhooks',\n label: t('nav.webhooks') === 'nav.webhooks' ? 'Webhooks' : t('nav.webhooks'),\n path: joinPath(basePath, 'webhooks'),\n icon: <Webhook size={20} />,\n order: 41,\n group: 'vibecontrols',\n },\n\n {\n id: 'vibecontrols-getting-started',\n label: t('nav.gettingStarted'),\n path: joinPath(basePath, 'getting-started'),\n icon: <Rocket size={20} />,\n order: 50,\n group: 'vibecontrols',\n },\n\n // Connection management\n {\n id: 'vibecontrols-tunnels',\n label: t('nav.tunnels'),\n path: joinPath(basePath, 'tunnels'),\n icon: <Globe size={20} />,\n order: 47,\n group: 'vibecontrols',\n },\n\n {\n id: 'vibecontrols-analytics',\n label: t('nav.analytics'),\n path: joinPath(basePath, 'analytics'),\n icon: <BarChart2 size={20} />,\n order: 55.5,\n group: 'vibecontrols-system',\n },\n {\n id: 'vibecontrols-audit',\n label: t('nav.vibeAudit'),\n path: joinPath(basePath, 'audit'),\n icon: <Shield size={20} />,\n order: 56,\n group: 'vibecontrols-system',\n },\n\n // Settings & System\n {\n id: 'vibecontrols-health',\n label: t('nav.health'),\n path: joinPath(basePath, 'health'),\n icon: <Activity size={20} />,\n order: 110,\n group: 'vibecontrols-system',\n },\n {\n id: 'vibecontrols-integrations',\n label:\n t('nav.integrations') === 'nav.integrations' ? 'Integrations' : t('nav.integrations'),\n // Absolute path — links out to the host shell's /integrations route\n // (microfe-integrations, mounted by vibecontrols-app). Keeps the\n // VibeControls MFE compliant with the no-cross-MFE-import rule.\n path: '/integrations',\n icon: <Plug size={20} />,\n order: 115,\n group: 'vibecontrols-system',\n },\n {\n id: 'vibecontrols-settings',\n label: t('nav.settings'),\n path: joinPath(basePath, 'settings'),\n icon: <Settings size={20} />,\n order: 120,\n group: 'vibecontrols-system',\n },\n ];\n\n // Register and get cleanup function\n const cleanup = registerNavItems(navItems);\n\n // Return cleanup function to unregister on unmount\n return cleanup;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [registerNavItems, basePath, t, locale, isPublicLinkRoute]);\n\n // Register footer items (example: status indicator in left section)\n useEffect(() => {\n if (!registerFooterItems || isPublicLinkRoute) return;\n\n const footerItems = [\n {\n id: 'vibecontrols-status',\n label: 'VibeControls Ready',\n type: 'status' as const,\n order: 10,\n section: 'left' as const,\n },\n ];\n\n const cleanup = registerFooterItems(footerItems);\n return cleanup;\n }, [registerFooterItems, isPublicLinkRoute]);\n\n return (\n <FeatureFlagProvider workspaceId={workspaceId ?? null} gateway=\"global\" defaultEnabled={true}>\n <VibeControlsProvider {...props}>\n {!isPublicLinkRoute ? (\n /* Agent events connector - syncs active agent to WebSocket */\n <AgentEventsConnector />\n ) : null}\n <VibeControlsRoutes />\n {/* Toaster is owned by the HOST, not the module. Production app shells\n mount a single sonner <Toaster> via AppShellProvider; since sonner\n is a global singleton, this module's lib/toast.ts emits to it and a\n second Toaster here would render every toast twice (the AI-assistant\n \"Error fetching quota limit and usage\" double-toast). Only the\n standalone dev harness (src/dev/main.tsx) — which has no host shell —\n passes renderToaster so toasts are visible there. The style block\n remaps sonner's theme vars to this app's semantic tokens (the\n fe-libs defaults reference shadcn vars not defined in the bare dev\n harness); the offset clears the page-discussion FAB. */}\n {renderToaster ? (\n <Toaster\n position=\"bottom-right\"\n offset={{ bottom: 96, right: 16 }}\n mobileOffset={{ bottom: 96, left: 16, right: 16 }}\n style={\n {\n '--normal-bg': 'var(--color-bg-elevated)',\n '--normal-text': 'var(--color-text-primary)',\n '--normal-border': 'var(--color-border-default)',\n '--border-radius': 'var(--radius-card)',\n } as CSSProperties\n }\n />\n ) : null}\n </VibeControlsProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAuEA,IAAa,KAA+C,MAAU;CACpE,IAAM,EACJ,qBACA,wBACA,cAAW,KACX,gBACA,mBAAgB,OACd,GACE,EAAE,MAAG,cAAW,GAAS,EAEzB,IACJ,OAAO,SAAW,OAClB,kCAAkC,KAAK,OAAO,SAAS,SAAS;AAElE,GAAsB;EAAE,aAAa;EAAgB,SAAS,CAAC;EAAmB,CAAC;CAGnF,IAAM,KAAY,GAAc,OACZ,EAAK,SAAS,IAAI,GAAG,EAAK,MAAM,GAAG,GAAG,GAAG,MACzC,EAAK,WAAW,IAAI,GAAG,IAAO,IAAI;AA8PtD,QAzPA,QAAgB;AACV,SAAC,KAAoB,GAkOzB,QAHgB,EA7NY;GAE1B;IACE,IAAI;IACJ,OAAO,EAAE,eAAe;IACxB,MAAM,MAAa,MAAM,MAAM;IAC/B,MAAM,kBAAC,GAAD,EAAiB,MAAM,IAAM,CAAA;IACnC,OAAO;IACP,OAAO;IACR;GAGD;IACE,IAAI;IACJ,OAAO,EAAE,cAAc;IACvB,MAAM,EAAS,GAAU,UAAU;IACnC,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;IAC1B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,aAAa;IACtB,MAAM,EAAS,GAAU,SAAS;IAClC,MAAM,kBAAC,GAAD,EAAK,MAAM,IAAM,CAAA;IACvB,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAS,GAAU,cAAc;IACvC,MAAM,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA;IAC7B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,YAAY;IACrB,MAAM,EAAS,GAAU,QAAQ;IACjC,MAAM,kBAAC,GAAD,EAAK,MAAM,IAAM,CAAA;IACvB,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,eAAe,KAAK,iBAAiB,aAAa,EAAE,eAAe;IAC5E,MAAM,EAAS,GAAU,WAAW;IACpC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;IAC5B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,iBAAiB,KAAK,mBAAmB,eAAe,EAAE,iBAAiB;IACpF,MAAM,EAAS,GAAU,aAAa;IACtC,MAAM,kBAAC,GAAD,EAAK,MAAM,IAAM,CAAA;IACvB,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,gBAAgB,KAAK,kBAAkB,cAAc,EAAE,gBAAgB;IAChF,MAAM,EAAS,GAAU,YAAY;IACrC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;IAC5B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OACE,EAAE,mBAAmB,KAAK,qBAAqB,iBAAiB,EAAE,mBAAmB;IACvF,MAAM,EAAS,GAAU,eAAe;IACxC,MAAM,kBAAC,GAAD,EAAS,MAAM,IAAM,CAAA;IAC3B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,cAAc,KAAK,gBAAgB,YAAY,EAAE,cAAc;IACxE,MAAM,EAAS,GAAU,UAAU;IACnC,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;IAC1B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,eAAe;IACxB,MAAM,EAAS,GAAU,WAAW;IACpC,MAAM,kBAAC,GAAD,EAAY,MAAM,IAAM,CAAA;IAC9B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,eAAe;IACxB,MAAM,EAAS,GAAU,WAAW;IACpC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;IAC5B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAS,GAAU,WAAW;IACpC,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;IACjC,OAAO;IACP,OAAO;IACR;GAED;IACE,IAAI;IACJ,OAAO,EAAE,SAAS;IAClB,MAAM,EAAS,GAAU,KAAK;IAC9B,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;IACzB,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAS,GAAU,eAAe;IACxC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;IAC5B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,gBAAgB,KAAK,kBAAkB,eAAe,EAAE,gBAAgB;IACjF,MAAM,EAAS,GAAU,aAAa;IACtC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;IAC5B,OAAO;IACP,OAAO;IACR;GAGD;IACE,IAAI;IACJ,OAAO,EAAE,cAAc;IACvB,MAAM,EAAS,GAAU,UAAU;IACnC,MAAM,kBAAC,GAAD,EAAY,MAAM,IAAM,CAAA;IAC9B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,eAAe,KAAK,iBAAiB,aAAa,EAAE,eAAe;IAC5E,MAAM,EAAS,GAAU,WAAW;IACpC,MAAM,kBAAC,GAAD,EAAS,MAAM,IAAM,CAAA;IAC3B,OAAO;IACP,OAAO;IACR;GAED;IACE,IAAI;IACJ,OAAO,EAAE,qBAAqB;IAC9B,MAAM,EAAS,GAAU,kBAAkB;IAC3C,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;IAC1B,OAAO;IACP,OAAO;IACR;GAGD;IACE,IAAI;IACJ,OAAO,EAAE,cAAc;IACvB,MAAM,EAAS,GAAU,UAAU;IACnC,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;IACzB,OAAO;IACP,OAAO;IACR;GAED;IACE,IAAI;IACJ,OAAO,EAAE,gBAAgB;IACzB,MAAM,EAAS,GAAU,YAAY;IACrC,MAAM,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA;IAC7B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,gBAAgB;IACzB,MAAM,EAAS,GAAU,QAAQ;IACjC,MAAM,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;IAC1B,OAAO;IACP,OAAO;IACR;GAGD;IACE,IAAI;IACJ,OAAO,EAAE,aAAa;IACtB,MAAM,EAAS,GAAU,SAAS;IAClC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;IAC5B,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OACE,EAAE,mBAAmB,KAAK,qBAAqB,iBAAiB,EAAE,mBAAmB;IAIvF,MAAM;IACN,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;IACxB,OAAO;IACP,OAAO;IACR;GACD;IACE,IAAI;IACJ,OAAO,EAAE,eAAe;IACxB,MAAM,EAAS,GAAU,WAAW;IACpC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;IAC5B,OAAO;IACP,OAAO;IACR;GACF,CAGyC;IAKzC;EAAC;EAAkB;EAAU;EAAG;EAAQ;EAAkB,CAAC,EAG9D,QAAgB;AACV,SAAC,KAAuB,GAa5B,QADgB,EAVI,CAClB;GACE,IAAI;GACJ,OAAO;GACP,MAAM;GACN,OAAO;GACP,SAAS;GACV,CACF,CAE+C;IAE/C,CAAC,GAAqB,EAAkB,CAAC,EAG1C,kBAAC,GAAD;EAAqB,aAAa,KAAe;EAAM,SAAQ;EAAS,gBAAgB;YACtF,kBAAC,GAAD;GAAsB,GAAI;aAA1B;IACI,IAGE,OADF,kBAAC,GAAD,EAAwB,CAAA;IAE1B,kBAAC,GAAD,EAAsB,CAAA;IAWrB,IACC,kBAAC,GAAD;KACE,UAAS;KACT,QAAQ;MAAE,QAAQ;MAAI,OAAO;MAAI;KACjC,cAAc;MAAE,QAAQ;MAAI,MAAM;MAAI,OAAO;MAAI;KACjD,OACE;MACE,eAAe;MACf,iBAAiB;MACjB,mBAAmB;MACnB,mBAAmB;MACpB;KAEH,CAAA,GACA;IACiB;;EACH,CAAA"}
|
|
@@ -4,21 +4,21 @@ import { Navigate as i, Route as a, Routes as o, useLocation as s, useParams as
|
|
|
4
4
|
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
5
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 }))), j = t.lazy(() => import("./pages/ScheduledJobDetailPage.js").then((e) => ({ default: e.ScheduledJobDetailPage }))),
|
|
8
|
-
function
|
|
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 }))), j = t.lazy(() => import("./pages/ScheduledJobDetailPage.js").then((e) => ({ default: e.ScheduledJobDetailPage }))), M = t.lazy(() => import("./pages/ActionsPage.js").then((e) => ({ default: e.ActionsPage }))), N = t.lazy(() => import("./pages/VibeAuditPage.js").then((e) => ({ default: e.VibeAuditPage }))), P = t.lazy(() => import("./pages/AnalyticsPage.js").then((e) => ({ default: e.AnalyticsPage }))), F = t.lazy(() => import("./pages/VibeDocsPage.js").then((e) => ({ default: e.VibeDocsPage }))), te = t.lazy(() => import("./pages/LogsPage.js").then((e) => ({ default: e.LogsPage }))), I = t.lazy(() => import("./pages/CatalogPage.js").then((e) => ({ default: e.CatalogPage }))), L = t.lazy(() => import("./pages/CatalogDetailPage.js").then((e) => ({ default: e.CatalogDetailPage }))), R = t.lazy(() => import("./pages/CatalogDocsPage.js").then((e) => ({ default: e.CatalogDocsPage }))), z = t.lazy(() => import("./pages/ComponentsPage.js").then((e) => ({ default: e.ComponentsPage }))), B = t.lazy(() => import("./pages/EnvTopologyPage.js").then((e) => ({ default: e.EnvTopologyPage }))), V = t.lazy(() => import("./pages/WebhooksPage.js").then((e) => ({ default: e.WebhooksPage }))), H = t.lazy(() => import("./pages/ComponentDetailPage.js").then((e) => ({ default: e.ComponentDetailPage }))), U = t.lazy(() => import("./pages/ComponentDocsPage.js").then((e) => ({ default: e.ComponentDocsPage }))), W = t.lazy(() => import("./pages/TemplatesPage.js").then((e) => ({ default: e.TemplatesPage }))), G = t.lazy(() => import("./pages/TemplateDetailPage.js").then((e) => ({ default: e.TemplateDetailPage }))), K = t.lazy(() => import("./pages/PluginsCatalogPage.js").then((e) => ({ default: e.PluginsCatalogPage }))), q = t.lazy(() => import("./pages/ai/AIPage.js").then((e) => ({ default: e.AIPage }))), J = t.lazy(() => import("./pages/ai/AISessionDetailPage.js").then((e) => ({ default: e.AISessionDetailPage }))), Y = t.lazy(() => import("./pages/ai/AgentManagerPage.js").then((e) => ({ default: e.AgentManagerPage }))), X = t.lazy(() => import("./pages/ai/AIBookmarksPage.js").then((e) => ({ default: e.AIBookmarksPage }))), Z = t.lazy(() => import("./pages/ai/AIBuilderPage.js").then((e) => ({ default: e.AIBuilderPage })));
|
|
8
|
+
function Q() {
|
|
9
9
|
return /* @__PURE__ */ c("div", {
|
|
10
10
|
className: "flex items-center justify-center h-full min-h-[200px]",
|
|
11
11
|
children: /* @__PURE__ */ c("div", { className: "animate-pulse bg-muted rounded w-full h-full" })
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function ne() {
|
|
15
15
|
let { pathname: e } = s();
|
|
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 re = new Set([
|
|
22
22
|
"overview",
|
|
23
23
|
"templates",
|
|
24
24
|
"contexts",
|
|
@@ -29,12 +29,12 @@ var ne = new Set([
|
|
|
29
29
|
"playground",
|
|
30
30
|
"config"
|
|
31
31
|
]);
|
|
32
|
-
function
|
|
32
|
+
function ie() {
|
|
33
33
|
let { tab: e } = ee();
|
|
34
34
|
return e === "plan" ? /* @__PURE__ */ c(i, {
|
|
35
35
|
to: "/vibecontrols/ai-tools/plan",
|
|
36
36
|
replace: !0
|
|
37
|
-
}) : e &&
|
|
37
|
+
}) : e && re.has(e) ? /* @__PURE__ */ c(i, {
|
|
38
38
|
to: `/vibecontrols/ai-tools/ai/${e}`,
|
|
39
39
|
replace: !0
|
|
40
40
|
}) : /* @__PURE__ */ c(i, {
|
|
@@ -42,7 +42,7 @@ function re() {
|
|
|
42
42
|
replace: !0
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
-
function
|
|
45
|
+
function ae() {
|
|
46
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.")
|
|
@@ -52,14 +52,14 @@ function $(e, t, n = !0) {
|
|
|
52
52
|
return /* @__PURE__ */ c(u, {
|
|
53
53
|
flag: e,
|
|
54
54
|
defaultValue: n,
|
|
55
|
-
fallback: /* @__PURE__ */ c(
|
|
55
|
+
fallback: /* @__PURE__ */ c(ae, {}),
|
|
56
56
|
children: t
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
-
function
|
|
59
|
+
function oe() {
|
|
60
60
|
return /* @__PURE__ */ l(n, {
|
|
61
|
-
fallback: /* @__PURE__ */ c(
|
|
62
|
-
children: [/* @__PURE__ */ c(
|
|
61
|
+
fallback: /* @__PURE__ */ c(Q, {}),
|
|
62
|
+
children: [/* @__PURE__ */ c(ne, {}), /* @__PURE__ */ l(o, { children: [
|
|
63
63
|
/* @__PURE__ */ c(a, {
|
|
64
64
|
index: !0,
|
|
65
65
|
element: $("vibecontrols.overview", /* @__PURE__ */ c(d, {}))
|
|
@@ -104,7 +104,7 @@ function ae() {
|
|
|
104
104
|
}),
|
|
105
105
|
/* @__PURE__ */ c(a, {
|
|
106
106
|
path: "vibes/:id/docs/*",
|
|
107
|
-
element: $("vibecontrols.vibes", /* @__PURE__ */ c(
|
|
107
|
+
element: $("vibecontrols.vibes", /* @__PURE__ */ c(F, {}))
|
|
108
108
|
}),
|
|
109
109
|
/* @__PURE__ */ c(a, {
|
|
110
110
|
path: "notes/:id",
|
|
@@ -122,6 +122,10 @@ function ae() {
|
|
|
122
122
|
path: "ai/bookmarks",
|
|
123
123
|
element: $("vibecontrols.ai", /* @__PURE__ */ c(X, {}))
|
|
124
124
|
}),
|
|
125
|
+
/* @__PURE__ */ c(a, {
|
|
126
|
+
path: "ai-builder",
|
|
127
|
+
element: $("vibecontrols.ai", /* @__PURE__ */ c(Z, {}))
|
|
128
|
+
}),
|
|
125
129
|
/* @__PURE__ */ c(a, {
|
|
126
130
|
path: "ai/:tab",
|
|
127
131
|
element: $("vibecontrols.ai", /* @__PURE__ */ c(Y, {}))
|
|
@@ -154,7 +158,7 @@ function ae() {
|
|
|
154
158
|
}),
|
|
155
159
|
/* @__PURE__ */ c(a, {
|
|
156
160
|
path: "ai-tools/:tab",
|
|
157
|
-
element: /* @__PURE__ */ c(
|
|
161
|
+
element: /* @__PURE__ */ c(ie, {})
|
|
158
162
|
}),
|
|
159
163
|
/* @__PURE__ */ c(a, {
|
|
160
164
|
path: "ai-tools/sessions/:sessionId",
|
|
@@ -216,7 +220,7 @@ function ae() {
|
|
|
216
220
|
}),
|
|
217
221
|
/* @__PURE__ */ c(a, {
|
|
218
222
|
path: "actions",
|
|
219
|
-
element: $("vibecontrols.actions", /* @__PURE__ */ c(
|
|
223
|
+
element: $("vibecontrols.actions", /* @__PURE__ */ c(M, {}))
|
|
220
224
|
}),
|
|
221
225
|
/* @__PURE__ */ c(a, {
|
|
222
226
|
path: "vibedeck",
|
|
@@ -282,15 +286,15 @@ function ae() {
|
|
|
282
286
|
}),
|
|
283
287
|
/* @__PURE__ */ c(a, {
|
|
284
288
|
path: "analytics",
|
|
285
|
-
element: $("vibecontrols.analytics", /* @__PURE__ */ c(
|
|
289
|
+
element: $("vibecontrols.analytics", /* @__PURE__ */ c(P, {}))
|
|
286
290
|
}),
|
|
287
291
|
/* @__PURE__ */ c(a, {
|
|
288
292
|
path: "audit",
|
|
289
|
-
element: $("vibecontrols.audit-log", /* @__PURE__ */ c(
|
|
293
|
+
element: $("vibecontrols.audit-log", /* @__PURE__ */ c(N, {}), !1)
|
|
290
294
|
}),
|
|
291
295
|
/* @__PURE__ */ c(a, {
|
|
292
296
|
path: "logs",
|
|
293
|
-
element: /* @__PURE__ */ c(
|
|
297
|
+
element: /* @__PURE__ */ c(te, {})
|
|
294
298
|
}),
|
|
295
299
|
/* @__PURE__ */ c(a, {
|
|
296
300
|
path: "settings",
|
|
@@ -340,6 +344,6 @@ function ae() {
|
|
|
340
344
|
});
|
|
341
345
|
}
|
|
342
346
|
//#endregion
|
|
343
|
-
export {
|
|
347
|
+
export { oe as VibeControlsRoutes };
|
|
344
348
|
|
|
345
349
|
//# sourceMappingURL=VibeControlsRoutes.js.map
|