@burdenoff/microfe-vibecontrols 2026.520.3 → 2026.521.2
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 +82 -76
- package/dist/VibeControlsRoot.js.map +1 -1
- package/dist/VibeControlsRoutes.js +50 -46
- package/dist/VibeControlsRoutes.js.map +1 -1
- package/dist/components/gitops/VibeGitOpsTab.js +33 -33
- package/dist/components/plugins/AddTabDialog.js +224 -0
- package/dist/components/plugins/AddTabDialog.js.map +1 -0
- package/dist/components/plugins/PluginIframeMount.js +134 -0
- package/dist/components/plugins/PluginIframeMount.js.map +1 -0
- package/dist/pages/AgentDetailsPage.js +830 -730
- package/dist/pages/AgentDetailsPage.js.map +1 -1
- package/dist/pages/PluginStandalonePage.js +145 -0
- package/dist/pages/PluginStandalonePage.js.map +1 -0
- package/dist/pages/VibeDetailsPage.js +677 -579
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/services/iframeToken.js +10 -3
- package/dist/services/iframeToken.js.map +1 -1
- package/dist/store/vibeControlsStore.js +35 -2
- package/dist/store/vibeControlsStore.js.map +1 -1
- package/package.json +2 -2
package/dist/VibeControlsRoot.js
CHANGED
|
@@ -4,200 +4,206 @@ import n from "./components/shared/AgentEventsConnector.js";
|
|
|
4
4
|
/* empty css */
|
|
5
5
|
import { useEffect as r } from "react";
|
|
6
6
|
import { useI18n as i } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import { useRecordProductVisit as a } from "@burdenoff/fe-libs/shared/hooks";
|
|
8
|
+
import { Activity as o, BarChart2 as s, BookOpen as c, Bot as l, Box as u, Brain as d, CalendarClock as f, FileCode as p, GitBranch as m, Globe as h, LayoutDashboard as g, LayoutGrid as _, PlayCircle as v, Plug as y, Rocket as b, Server as x, Settings as S, Shield as C, Terminal as w, Zap as T } from "lucide-react";
|
|
9
|
+
import { jsx as E, jsxs as D } from "react/jsx-runtime";
|
|
10
|
+
import { FeatureFlagProvider as O } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
10
11
|
//#region src/VibeControlsRoot.tsx
|
|
11
|
-
var
|
|
12
|
-
let { registerNavItems:
|
|
12
|
+
var k = (k) => {
|
|
13
|
+
let { registerNavItems: A, registerFooterItems: j, basePath: M = "/", workspaceId: N } = k, { t: P, locale: F } = i(), I = typeof window < "u" && /^\/vibecontrols\/(share|deck)\//.test(window.location.pathname);
|
|
14
|
+
a({
|
|
15
|
+
productSlug: "vibecontrols",
|
|
16
|
+
enabled: !I
|
|
17
|
+
});
|
|
18
|
+
let L = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
|
|
13
19
|
return r(() => {
|
|
14
|
-
if (!(!
|
|
20
|
+
if (!(!A || I)) return A([
|
|
15
21
|
{
|
|
16
22
|
id: "vibecontrols-overview",
|
|
17
|
-
label:
|
|
18
|
-
path:
|
|
19
|
-
icon: /* @__PURE__ */
|
|
23
|
+
label: P("nav.overview"),
|
|
24
|
+
path: M === "/" ? "/" : M,
|
|
25
|
+
icon: /* @__PURE__ */ E(g, { size: 20 }),
|
|
20
26
|
order: 10,
|
|
21
27
|
group: "vibecontrols"
|
|
22
28
|
},
|
|
23
29
|
{
|
|
24
30
|
id: "vibecontrols-targets",
|
|
25
|
-
label:
|
|
26
|
-
path:
|
|
27
|
-
icon: /* @__PURE__ */
|
|
31
|
+
label: P("nav.targets"),
|
|
32
|
+
path: L(M, "targets"),
|
|
33
|
+
icon: /* @__PURE__ */ E(x, { size: 20 }),
|
|
28
34
|
order: 12,
|
|
29
35
|
group: "vibecontrols"
|
|
30
36
|
},
|
|
31
37
|
{
|
|
32
38
|
id: "vibecontrols-agents",
|
|
33
|
-
label:
|
|
34
|
-
path:
|
|
35
|
-
icon: /* @__PURE__ */
|
|
39
|
+
label: P("nav.agents"),
|
|
40
|
+
path: L(M, "agents"),
|
|
41
|
+
icon: /* @__PURE__ */ E(l, { size: 20 }),
|
|
36
42
|
order: 14,
|
|
37
43
|
group: "vibecontrols"
|
|
38
44
|
},
|
|
39
45
|
{
|
|
40
46
|
id: "vibecontrols-agent-graph",
|
|
41
|
-
label:
|
|
42
|
-
path:
|
|
43
|
-
icon: /* @__PURE__ */
|
|
47
|
+
label: P("nav.agentGraph"),
|
|
48
|
+
path: L(M, "agent-graph"),
|
|
49
|
+
icon: /* @__PURE__ */ E(m, { size: 20 }),
|
|
44
50
|
order: 16,
|
|
45
51
|
group: "vibecontrols"
|
|
46
52
|
},
|
|
47
53
|
{
|
|
48
54
|
id: "vibecontrols-vibes",
|
|
49
|
-
label:
|
|
50
|
-
path:
|
|
51
|
-
icon: /* @__PURE__ */ T
|
|
55
|
+
label: P("nav.vibes"),
|
|
56
|
+
path: L(M, "vibes"),
|
|
57
|
+
icon: /* @__PURE__ */ E(T, { size: 20 }),
|
|
52
58
|
order: 20,
|
|
53
59
|
group: "vibecontrols"
|
|
54
60
|
},
|
|
55
61
|
{
|
|
56
62
|
id: "vibecontrols-catalogs",
|
|
57
|
-
label:
|
|
58
|
-
path:
|
|
59
|
-
icon: /* @__PURE__ */
|
|
63
|
+
label: P("nav.catalogs") === "nav.catalogs" ? "Catalogs" : P("nav.catalogs"),
|
|
64
|
+
path: L(M, "catalogs"),
|
|
65
|
+
icon: /* @__PURE__ */ E(c, { size: 20 }),
|
|
60
66
|
order: 21,
|
|
61
67
|
group: "vibecontrols"
|
|
62
68
|
},
|
|
63
69
|
{
|
|
64
70
|
id: "vibecontrols-components",
|
|
65
|
-
label:
|
|
66
|
-
path:
|
|
67
|
-
icon: /* @__PURE__ */
|
|
71
|
+
label: P("nav.components") === "nav.components" ? "Components" : P("nav.components"),
|
|
72
|
+
path: L(M, "components"),
|
|
73
|
+
icon: /* @__PURE__ */ E(u, { size: 20 }),
|
|
68
74
|
order: 22,
|
|
69
75
|
group: "vibecontrols"
|
|
70
76
|
},
|
|
71
77
|
{
|
|
72
78
|
id: "vibecontrols-templates",
|
|
73
|
-
label:
|
|
74
|
-
path:
|
|
75
|
-
icon: /* @__PURE__ */
|
|
79
|
+
label: P("nav.templates") === "nav.templates" ? "Templates" : P("nav.templates"),
|
|
80
|
+
path: L(M, "templates"),
|
|
81
|
+
icon: /* @__PURE__ */ E(p, { size: 20 }),
|
|
76
82
|
order: 23,
|
|
77
83
|
group: "vibecontrols"
|
|
78
84
|
},
|
|
79
85
|
{
|
|
80
86
|
id: "vibecontrols-vibedeck",
|
|
81
|
-
label:
|
|
82
|
-
path:
|
|
83
|
-
icon: /* @__PURE__ */
|
|
87
|
+
label: P("nav.vibeDeck"),
|
|
88
|
+
path: L(M, "vibedeck"),
|
|
89
|
+
icon: /* @__PURE__ */ E(_, { size: 20 }),
|
|
84
90
|
order: 25,
|
|
85
91
|
group: "vibecontrols"
|
|
86
92
|
},
|
|
87
93
|
{
|
|
88
94
|
id: "vibecontrols-sessions",
|
|
89
|
-
label:
|
|
90
|
-
path:
|
|
91
|
-
icon: /* @__PURE__ */
|
|
95
|
+
label: P("nav.sessions"),
|
|
96
|
+
path: L(M, "sessions"),
|
|
97
|
+
icon: /* @__PURE__ */ E(w, { size: 20 }),
|
|
92
98
|
order: 30,
|
|
93
99
|
group: "vibecontrols"
|
|
94
100
|
},
|
|
95
101
|
{
|
|
96
102
|
id: "vibecontrols-vibecalendar",
|
|
97
|
-
label:
|
|
98
|
-
path:
|
|
99
|
-
icon: /* @__PURE__ */
|
|
103
|
+
label: P("nav.vibeCalendar"),
|
|
104
|
+
path: L(M, "calendar"),
|
|
105
|
+
icon: /* @__PURE__ */ E(f, { size: 20 }),
|
|
100
106
|
order: 35,
|
|
101
107
|
group: "vibecontrols"
|
|
102
108
|
},
|
|
103
109
|
{
|
|
104
110
|
id: "vibecontrols-ai",
|
|
105
|
-
label:
|
|
106
|
-
path:
|
|
107
|
-
icon: /* @__PURE__ */
|
|
111
|
+
label: P("nav.ai"),
|
|
112
|
+
path: L(M, "ai"),
|
|
113
|
+
icon: /* @__PURE__ */ E(d, { size: 20 }),
|
|
108
114
|
order: 38,
|
|
109
115
|
group: "vibecontrols"
|
|
110
116
|
},
|
|
111
117
|
{
|
|
112
118
|
id: "vibecontrols-actions",
|
|
113
|
-
label:
|
|
114
|
-
path:
|
|
115
|
-
icon: /* @__PURE__ */
|
|
119
|
+
label: P("nav.actions"),
|
|
120
|
+
path: L(M, "actions"),
|
|
121
|
+
icon: /* @__PURE__ */ E(v, { size: 20 }),
|
|
116
122
|
order: 40,
|
|
117
123
|
group: "vibecontrols"
|
|
118
124
|
},
|
|
119
125
|
{
|
|
120
126
|
id: "vibecontrols-getting-started",
|
|
121
|
-
label:
|
|
122
|
-
path:
|
|
123
|
-
icon: /* @__PURE__ */
|
|
127
|
+
label: P("nav.gettingStarted"),
|
|
128
|
+
path: L(M, "getting-started"),
|
|
129
|
+
icon: /* @__PURE__ */ E(b, { size: 20 }),
|
|
124
130
|
order: 50,
|
|
125
131
|
group: "vibecontrols"
|
|
126
132
|
},
|
|
127
133
|
{
|
|
128
134
|
id: "vibecontrols-tunnels",
|
|
129
|
-
label:
|
|
130
|
-
path:
|
|
131
|
-
icon: /* @__PURE__ */
|
|
135
|
+
label: P("nav.tunnels"),
|
|
136
|
+
path: L(M, "tunnels"),
|
|
137
|
+
icon: /* @__PURE__ */ E(h, { size: 20 }),
|
|
132
138
|
order: 47,
|
|
133
139
|
group: "vibecontrols"
|
|
134
140
|
},
|
|
135
141
|
{
|
|
136
142
|
id: "vibecontrols-analytics",
|
|
137
|
-
label:
|
|
138
|
-
path:
|
|
139
|
-
icon: /* @__PURE__ */
|
|
143
|
+
label: P("nav.analytics"),
|
|
144
|
+
path: L(M, "analytics"),
|
|
145
|
+
icon: /* @__PURE__ */ E(s, { size: 20 }),
|
|
140
146
|
order: 55.5,
|
|
141
147
|
group: "vibecontrols-system"
|
|
142
148
|
},
|
|
143
149
|
{
|
|
144
150
|
id: "vibecontrols-audit",
|
|
145
|
-
label:
|
|
146
|
-
path:
|
|
147
|
-
icon: /* @__PURE__ */
|
|
151
|
+
label: P("nav.vibeAudit"),
|
|
152
|
+
path: L(M, "audit"),
|
|
153
|
+
icon: /* @__PURE__ */ E(C, { size: 20 }),
|
|
148
154
|
order: 56,
|
|
149
155
|
group: "vibecontrols-system"
|
|
150
156
|
},
|
|
151
157
|
{
|
|
152
158
|
id: "vibecontrols-health",
|
|
153
|
-
label:
|
|
154
|
-
path:
|
|
155
|
-
icon: /* @__PURE__ */
|
|
159
|
+
label: P("nav.health"),
|
|
160
|
+
path: L(M, "health"),
|
|
161
|
+
icon: /* @__PURE__ */ E(o, { size: 20 }),
|
|
156
162
|
order: 110,
|
|
157
163
|
group: "vibecontrols-system"
|
|
158
164
|
},
|
|
159
165
|
{
|
|
160
166
|
id: "vibecontrols-integrations",
|
|
161
|
-
label:
|
|
167
|
+
label: P("nav.integrations") === "nav.integrations" ? "Integrations" : P("nav.integrations"),
|
|
162
168
|
path: "/integrations",
|
|
163
|
-
icon: /* @__PURE__ */
|
|
169
|
+
icon: /* @__PURE__ */ E(y, { size: 20 }),
|
|
164
170
|
order: 115,
|
|
165
171
|
group: "vibecontrols-system"
|
|
166
172
|
},
|
|
167
173
|
{
|
|
168
174
|
id: "vibecontrols-settings",
|
|
169
|
-
label:
|
|
170
|
-
path:
|
|
171
|
-
icon: /* @__PURE__ */
|
|
175
|
+
label: P("nav.settings"),
|
|
176
|
+
path: L(M, "settings"),
|
|
177
|
+
icon: /* @__PURE__ */ E(S, { size: 20 }),
|
|
172
178
|
order: 120,
|
|
173
179
|
group: "vibecontrols-system"
|
|
174
180
|
}
|
|
175
181
|
]);
|
|
176
182
|
}, [
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
N,
|
|
183
|
+
A,
|
|
184
|
+
M,
|
|
180
185
|
P,
|
|
181
|
-
F
|
|
186
|
+
F,
|
|
187
|
+
I
|
|
182
188
|
]), r(() => {
|
|
183
|
-
if (!(!
|
|
189
|
+
if (!(!j || I)) return j([{
|
|
184
190
|
id: "vibecontrols-status",
|
|
185
191
|
label: "VibeControls Ready",
|
|
186
192
|
type: "status",
|
|
187
193
|
order: 10,
|
|
188
194
|
section: "left"
|
|
189
195
|
}]);
|
|
190
|
-
}, [
|
|
191
|
-
workspaceId:
|
|
196
|
+
}, [j, I]), /* @__PURE__ */ E(O, {
|
|
197
|
+
workspaceId: N ?? null,
|
|
192
198
|
gateway: "global",
|
|
193
199
|
defaultEnabled: !0,
|
|
194
|
-
children: /* @__PURE__ */
|
|
195
|
-
...
|
|
196
|
-
children: [
|
|
200
|
+
children: /* @__PURE__ */ D(e, {
|
|
201
|
+
...k,
|
|
202
|
+
children: [I ? null : /* @__PURE__ */ E(n, {}), /* @__PURE__ */ E(t, {})]
|
|
197
203
|
})
|
|
198
204
|
});
|
|
199
205
|
};
|
|
200
206
|
//#endregion
|
|
201
|
-
export {
|
|
207
|
+
export { k as VibeControlsRoot };
|
|
202
208
|
|
|
203
209
|
//# sourceMappingURL=VibeControlsRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeControlsRoot.js","names":[],"sources":["../src/VibeControlsRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\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 PlayCircle,\n BarChart2,\n BookOpen,\n Box,\n FileCode,\n Plug,\n} from 'lucide-react';\nimport { VibeControlsProvider } from './providers/VibeControlsProvider';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport type { NavItem, VibeControlsRootProps } from './types';\nimport { VibeControlsRoutes } from './VibeControlsRoutes';\nimport { AgentEventsConnector } from './components/shared/AgentEventsConnector';\nimport './styles/vibecontrols.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 const isPublicLinkRoute =\n typeof window !== 'undefined' &&\n /^\\/vibecontrols\\/(share|deck)\\//.test(window.location.pathname);\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-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 // 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 {\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 </VibeControlsProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":";;;;;;;;;;AA+DA,IAAa,KAA+C,MAAU;CACpE,IAAM,EAAE,qBAAkB,wBAAqB,cAAW,KAAK,mBAAgB,GACzE,EAAE,MAAG,cAAW,GAAS,EACzB,IACJ,OAAO,SAAW,OAClB,kCAAkC,KAAK,OAAO,SAAS,SAAS,EAG5D,KAAY,GAAc,OACZ,EAAK,SAAS,IAAI,GAAG,EAAK,MAAM,GAAG,GAAG,GAAG,MACzC,EAAK,WAAW,IAAI,GAAG,IAAO,IAAI;AAqNtD,QAhNA,QAAgB;AACV,SAAC,KAAoB,GAyLzB,QAHgB,EApLY;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,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;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;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,CACI,IAGE,OADF,kBAAC,GAAD,EAAwB,CAAA,EAE1B,kBAAC,GAAD,EAAsB,CAAA,CACD;;EACH,CAAA"}
|
|
1
|
+
{"version":3,"file":"VibeControlsRoot.js","names":[],"sources":["../src/VibeControlsRoot.tsx"],"sourcesContent":["import type { 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 PlayCircle,\n BarChart2,\n BookOpen,\n Box,\n FileCode,\n Plug,\n} from 'lucide-react';\nimport { VibeControlsProvider } from './providers/VibeControlsProvider';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport type { NavItem, VibeControlsRootProps } from './types';\nimport { VibeControlsRoutes } from './VibeControlsRoutes';\nimport { AgentEventsConnector } from './components/shared/AgentEventsConnector';\nimport './styles/vibecontrols.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-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 // 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 {\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 </VibeControlsProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -4,97 +4,101 @@ import { Navigate as i, Route as a, Routes as o, useLocation as s } from "react-
|
|
|
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/ActionsPage.js").then((e) => ({ default: e.ActionsPage }))), M = t.lazy(() => import("./pages/VibeAuditPage.js").then((e) => ({ default: e.VibeAuditPage }))), N = t.lazy(() => import("./pages/AnalyticsPage.js").then((e) => ({ default: e.AnalyticsPage }))), P = t.lazy(() => import("./pages/VibeDocsPage.js").then((e) => ({ default: e.VibeDocsPage }))), 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/ai/AIPage.js").then((e) => ({ default: e.AIPage }))),
|
|
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/ActionsPage.js").then((e) => ({ default: e.ActionsPage }))), M = t.lazy(() => import("./pages/VibeAuditPage.js").then((e) => ({ default: e.VibeAuditPage }))), N = t.lazy(() => import("./pages/AnalyticsPage.js").then((e) => ({ default: e.AnalyticsPage }))), P = t.lazy(() => import("./pages/VibeDocsPage.js").then((e) => ({ default: e.VibeDocsPage }))), 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 }))), G = t.lazy(() => import("./pages/ai/AISessionDetailPage.js").then((e) => ({ default: e.AISessionDetailPage }))), K = t.lazy(() => import("./pages/ai/AgentManagerPage.js").then((e) => ({ default: e.AgentManagerPage })));
|
|
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 J() {
|
|
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
|
-
function
|
|
21
|
+
function Y() {
|
|
22
22
|
return /* @__PURE__ */ c("div", {
|
|
23
23
|
className: "flex items-center justify-center h-full min-h-[200px] text-text-secondary text-sm",
|
|
24
24
|
children: e()("vibecontrols.pages.featureDisabled", "This feature is currently disabled. You can enable it from Feature Previews.")
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
-
function
|
|
27
|
+
function X(e, t, n = !0) {
|
|
28
28
|
return /* @__PURE__ */ c(u, {
|
|
29
29
|
flag: e,
|
|
30
30
|
defaultValue: n,
|
|
31
|
-
fallback: /* @__PURE__ */ c(
|
|
31
|
+
fallback: /* @__PURE__ */ c(Y, {}),
|
|
32
32
|
children: t
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
function
|
|
35
|
+
function Z() {
|
|
36
36
|
return /* @__PURE__ */ l(n, {
|
|
37
|
-
fallback: /* @__PURE__ */ c(
|
|
38
|
-
children: [/* @__PURE__ */ c(
|
|
37
|
+
fallback: /* @__PURE__ */ c(q, {}),
|
|
38
|
+
children: [/* @__PURE__ */ c(J, {}), /* @__PURE__ */ l(o, { children: [
|
|
39
39
|
/* @__PURE__ */ c(a, {
|
|
40
40
|
index: !0,
|
|
41
|
-
element:
|
|
41
|
+
element: X("vibecontrols.overview", /* @__PURE__ */ c(d, {}))
|
|
42
|
+
}),
|
|
43
|
+
/* @__PURE__ */ c(a, {
|
|
44
|
+
path: "plugin/:pluginKey",
|
|
45
|
+
element: X("vibecontrols.vibes", /* @__PURE__ */ c(U, {}))
|
|
42
46
|
}),
|
|
43
47
|
/* @__PURE__ */ c(a, {
|
|
44
48
|
path: "agents",
|
|
45
|
-
element:
|
|
49
|
+
element: X("vibecontrols.agents", /* @__PURE__ */ c(f, {}))
|
|
46
50
|
}),
|
|
47
51
|
/* @__PURE__ */ c(a, {
|
|
48
52
|
path: "agents/:id",
|
|
49
|
-
element:
|
|
53
|
+
element: X("vibecontrols.agents", /* @__PURE__ */ c(p, {}))
|
|
50
54
|
}),
|
|
51
55
|
/* @__PURE__ */ c(a, {
|
|
52
56
|
path: "sessions",
|
|
53
|
-
element:
|
|
57
|
+
element: X("vibecontrols.sessions", /* @__PURE__ */ c(h, {}))
|
|
54
58
|
}),
|
|
55
59
|
/* @__PURE__ */ c(a, {
|
|
56
60
|
path: "vibes",
|
|
57
|
-
element:
|
|
61
|
+
element: X("vibecontrols.vibes", /* @__PURE__ */ c(_, {}))
|
|
58
62
|
}),
|
|
59
63
|
/* @__PURE__ */ c(a, {
|
|
60
64
|
path: "vibes/:id",
|
|
61
|
-
element:
|
|
65
|
+
element: X("vibecontrols.vibes", /* @__PURE__ */ c(v, {}))
|
|
62
66
|
}),
|
|
63
67
|
/* @__PURE__ */ c(a, {
|
|
64
68
|
path: "vibes/:id/docs/*",
|
|
65
|
-
element:
|
|
69
|
+
element: X("vibecontrols.vibes", /* @__PURE__ */ c(P, {}))
|
|
66
70
|
}),
|
|
67
71
|
/* @__PURE__ */ c(a, {
|
|
68
72
|
path: "notes/:id",
|
|
69
|
-
element:
|
|
73
|
+
element: X("vibecontrols.vibes", /* @__PURE__ */ c(y, {}))
|
|
70
74
|
}),
|
|
71
75
|
/* @__PURE__ */ c(a, {
|
|
72
76
|
path: "sessions/:id",
|
|
73
|
-
element:
|
|
77
|
+
element: X("vibecontrols.sessions", /* @__PURE__ */ c(g, {}))
|
|
74
78
|
}),
|
|
75
79
|
/* @__PURE__ */ c(a, {
|
|
76
80
|
path: "ai",
|
|
77
|
-
element:
|
|
81
|
+
element: X("vibecontrols.ai", /* @__PURE__ */ c(K, {}))
|
|
78
82
|
}),
|
|
79
83
|
/* @__PURE__ */ c(a, {
|
|
80
84
|
path: "ai/:tab",
|
|
81
|
-
element:
|
|
85
|
+
element: X("vibecontrols.ai", /* @__PURE__ */ c(K, {}))
|
|
82
86
|
}),
|
|
83
87
|
/* @__PURE__ */ c(a, {
|
|
84
88
|
path: "ai/sessions/:sessionId",
|
|
85
|
-
element:
|
|
89
|
+
element: X("vibecontrols.ai", /* @__PURE__ */ c(K, {}))
|
|
86
90
|
}),
|
|
87
91
|
/* @__PURE__ */ c(a, {
|
|
88
92
|
path: "ai-tools",
|
|
89
|
-
element:
|
|
93
|
+
element: X("vibecontrols.ai", /* @__PURE__ */ c(W, {}))
|
|
90
94
|
}),
|
|
91
95
|
/* @__PURE__ */ c(a, {
|
|
92
96
|
path: "ai-tools/:tab",
|
|
93
|
-
element:
|
|
97
|
+
element: X("vibecontrols.ai", /* @__PURE__ */ c(W, {}))
|
|
94
98
|
}),
|
|
95
99
|
/* @__PURE__ */ c(a, {
|
|
96
100
|
path: "ai-tools/sessions/:sessionId",
|
|
97
|
-
element:
|
|
101
|
+
element: X("vibecontrols.ai", /* @__PURE__ */ c(G, {}))
|
|
98
102
|
}),
|
|
99
103
|
/* @__PURE__ */ c(a, {
|
|
100
104
|
path: "targets",
|
|
@@ -105,7 +109,7 @@ function X() {
|
|
|
105
109
|
}),
|
|
106
110
|
/* @__PURE__ */ c(a, {
|
|
107
111
|
path: "targets/:id",
|
|
108
|
-
element:
|
|
112
|
+
element: X("vibecontrols.agents", /* @__PURE__ */ c(m, {}))
|
|
109
113
|
}),
|
|
110
114
|
/* @__PURE__ */ c(a, {
|
|
111
115
|
path: "agent-graph",
|
|
@@ -116,55 +120,55 @@ function X() {
|
|
|
116
120
|
}),
|
|
117
121
|
/* @__PURE__ */ c(a, {
|
|
118
122
|
path: "catalogs",
|
|
119
|
-
element:
|
|
123
|
+
element: X("vibecontrols.catalogs", /* @__PURE__ */ c(F, {}))
|
|
120
124
|
}),
|
|
121
125
|
/* @__PURE__ */ c(a, {
|
|
122
126
|
path: "catalogs/:id",
|
|
123
|
-
element:
|
|
127
|
+
element: X("vibecontrols.catalogs", /* @__PURE__ */ c(I, {}))
|
|
124
128
|
}),
|
|
125
129
|
/* @__PURE__ */ c(a, {
|
|
126
130
|
path: "catalogs/:id/docs/*",
|
|
127
|
-
element:
|
|
131
|
+
element: X("vibecontrols.catalogs", /* @__PURE__ */ c(L, {}))
|
|
128
132
|
}),
|
|
129
133
|
/* @__PURE__ */ c(a, {
|
|
130
134
|
path: "components",
|
|
131
|
-
element:
|
|
135
|
+
element: X("vibecontrols.components", /* @__PURE__ */ c(R, {}))
|
|
132
136
|
}),
|
|
133
137
|
/* @__PURE__ */ c(a, {
|
|
134
138
|
path: "components/:id",
|
|
135
|
-
element:
|
|
139
|
+
element: X("vibecontrols.components", /* @__PURE__ */ c(z, {}))
|
|
136
140
|
}),
|
|
137
141
|
/* @__PURE__ */ c(a, {
|
|
138
142
|
path: "components/:id/docs/*",
|
|
139
|
-
element:
|
|
143
|
+
element: X("vibecontrols.components", /* @__PURE__ */ c(B, {}))
|
|
140
144
|
}),
|
|
141
145
|
/* @__PURE__ */ c(a, {
|
|
142
146
|
path: "templates",
|
|
143
|
-
element:
|
|
147
|
+
element: X("vibecontrols.templates", /* @__PURE__ */ c(V, {}))
|
|
144
148
|
}),
|
|
145
149
|
/* @__PURE__ */ c(a, {
|
|
146
150
|
path: "templates/:id",
|
|
147
|
-
element:
|
|
151
|
+
element: X("vibecontrols.templates", /* @__PURE__ */ c(H, {}))
|
|
148
152
|
}),
|
|
149
153
|
/* @__PURE__ */ c(a, {
|
|
150
154
|
path: "actions",
|
|
151
|
-
element:
|
|
155
|
+
element: X("vibecontrols.actions", /* @__PURE__ */ c(j, {}))
|
|
152
156
|
}),
|
|
153
157
|
/* @__PURE__ */ c(a, {
|
|
154
158
|
path: "vibedeck",
|
|
155
|
-
element:
|
|
159
|
+
element: X("vibecontrols.vibedeck", /* @__PURE__ */ c(D, {}))
|
|
156
160
|
}),
|
|
157
161
|
/* @__PURE__ */ c(a, {
|
|
158
162
|
path: "calendar",
|
|
159
|
-
element:
|
|
163
|
+
element: X("vibecontrols.calendar", /* @__PURE__ */ c(k, {}))
|
|
160
164
|
}),
|
|
161
165
|
/* @__PURE__ */ c(a, {
|
|
162
166
|
path: "calendar/:viewType",
|
|
163
|
-
element:
|
|
167
|
+
element: X("vibecontrols.calendar", /* @__PURE__ */ c(k, {}))
|
|
164
168
|
}),
|
|
165
169
|
/* @__PURE__ */ c(a, {
|
|
166
170
|
path: "calendar/task/:taskId",
|
|
167
|
-
element:
|
|
171
|
+
element: X("vibecontrols.calendar", /* @__PURE__ */ c(A, {}))
|
|
168
172
|
}),
|
|
169
173
|
/* @__PURE__ */ c(a, {
|
|
170
174
|
path: "webhooks",
|
|
@@ -203,27 +207,27 @@ function X() {
|
|
|
203
207
|
}),
|
|
204
208
|
/* @__PURE__ */ c(a, {
|
|
205
209
|
path: "tunnels",
|
|
206
|
-
element:
|
|
210
|
+
element: X("vibecontrols.tunnels", /* @__PURE__ */ c(b, {}))
|
|
207
211
|
}),
|
|
208
212
|
/* @__PURE__ */ c(a, {
|
|
209
213
|
path: "tunnels/new",
|
|
210
|
-
element:
|
|
214
|
+
element: X("vibecontrols.tunnels", /* @__PURE__ */ c(S, {}))
|
|
211
215
|
}),
|
|
212
216
|
/* @__PURE__ */ c(a, {
|
|
213
217
|
path: "tunnels/:tunnelId",
|
|
214
|
-
element:
|
|
218
|
+
element: X("vibecontrols.tunnels", /* @__PURE__ */ c(x, {}))
|
|
215
219
|
}),
|
|
216
220
|
/* @__PURE__ */ c(a, {
|
|
217
221
|
path: "health",
|
|
218
|
-
element:
|
|
222
|
+
element: X("vibecontrols.health", /* @__PURE__ */ c(w, {}))
|
|
219
223
|
}),
|
|
220
224
|
/* @__PURE__ */ c(a, {
|
|
221
225
|
path: "analytics",
|
|
222
|
-
element:
|
|
226
|
+
element: X("vibecontrols.analytics", /* @__PURE__ */ c(N, {}))
|
|
223
227
|
}),
|
|
224
228
|
/* @__PURE__ */ c(a, {
|
|
225
229
|
path: "audit",
|
|
226
|
-
element:
|
|
230
|
+
element: X("vibecontrols.audit-log", /* @__PURE__ */ c(M, {}), !1)
|
|
227
231
|
}),
|
|
228
232
|
/* @__PURE__ */ c(a, {
|
|
229
233
|
path: "logs",
|
|
@@ -234,7 +238,7 @@ function X() {
|
|
|
234
238
|
}),
|
|
235
239
|
/* @__PURE__ */ c(a, {
|
|
236
240
|
path: "settings",
|
|
237
|
-
element:
|
|
241
|
+
element: X("vibecontrols.settings", /* @__PURE__ */ c(C, {}))
|
|
238
242
|
}),
|
|
239
243
|
/* @__PURE__ */ c(a, {
|
|
240
244
|
path: "getting-started",
|
|
@@ -280,6 +284,6 @@ function X() {
|
|
|
280
284
|
});
|
|
281
285
|
}
|
|
282
286
|
//#endregion
|
|
283
|
-
export {
|
|
287
|
+
export { Z as VibeControlsRoutes };
|
|
284
288
|
|
|
285
289
|
//# sourceMappingURL=VibeControlsRoutes.js.map
|