@burdenoff/microfe-vibecontrols 2026.608.6 → 2026.610.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.
Files changed (75) hide show
  1. package/dist/VibeControlsRoot.js +81 -59
  2. package/dist/VibeControlsRoot.js.map +1 -1
  3. package/dist/components/agents/AgentCard.js +107 -146
  4. package/dist/components/agents/AgentCard.js.map +1 -1
  5. package/dist/components/agents/AgentConnectionRecovery.js +129 -73
  6. package/dist/components/agents/AgentConnectionRecovery.js.map +1 -1
  7. package/dist/components/agents/AgentForm.js +464 -370
  8. package/dist/components/agents/AgentForm.js.map +1 -1
  9. package/dist/components/agents/AgentList.js +261 -208
  10. package/dist/components/agents/AgentList.js.map +1 -1
  11. package/dist/components/agents/AgentMaintenanceTab.js +278 -215
  12. package/dist/components/agents/AgentMaintenanceTab.js.map +1 -1
  13. package/dist/components/agents/AgentStorageConfig.js +154 -104
  14. package/dist/components/agents/AgentStorageConfig.js.map +1 -1
  15. package/dist/components/agents/ConfigureAgentDialog.js +196 -0
  16. package/dist/components/agents/ConfigureAgentDialog.js.map +1 -0
  17. package/dist/components/agents/ConnectionLogPanel.js +131 -95
  18. package/dist/components/agents/ConnectionLogPanel.js.map +1 -1
  19. package/dist/components/agents/CreateSessionDialog.js +168 -0
  20. package/dist/components/agents/CreateSessionDialog.js.map +1 -0
  21. package/dist/components/agents/GatewayAuthCard.js +279 -0
  22. package/dist/components/agents/GatewayAuthCard.js.map +1 -0
  23. package/dist/components/agents/OpenInBrowserEditorButton.js +124 -74
  24. package/dist/components/agents/OpenInBrowserEditorButton.js.map +1 -1
  25. package/dist/components/agents/OpenInEditorMenu.js +230 -177
  26. package/dist/components/agents/OpenInEditorMenu.js.map +1 -1
  27. package/dist/components/agents/PluginUIPanel.js +288 -195
  28. package/dist/components/agents/PluginUIPanel.js.map +1 -1
  29. package/dist/components/agents/RemoteTaskPermissionsCard.js +60 -45
  30. package/dist/components/agents/RemoteTaskPermissionsCard.js.map +1 -1
  31. package/dist/components/agents/index.js +3 -0
  32. package/dist/components/ai/InstructionFilesManager.js +2 -2
  33. package/dist/components/ai/InstructionFilesManager.js.map +1 -1
  34. package/dist/components/graph/ConnectionPermissionsDialog.js +83 -99
  35. package/dist/components/graph/ConnectionPermissionsDialog.js.map +1 -1
  36. package/dist/components/graph/MeshDeployWizard.js +334 -313
  37. package/dist/components/graph/MeshDeployWizard.js.map +1 -1
  38. package/dist/components/graph/MeshGraphView.js +114 -123
  39. package/dist/components/graph/MeshGraphView.js.map +1 -1
  40. package/dist/components/shared/ActionMenu.js +101 -0
  41. package/dist/components/shared/ActionMenu.js.map +1 -0
  42. package/dist/components/shared/ConfirmDialog.js +31 -37
  43. package/dist/components/shared/ConfirmDialog.js.map +1 -1
  44. package/dist/components/shared/InstallTabs.js +1 -1
  45. package/dist/components/shared/InstallTabs.js.map +1 -1
  46. package/dist/components/shared/MotionTabPanel.js +43 -0
  47. package/dist/components/shared/MotionTabPanel.js.map +1 -0
  48. package/dist/components/shared/PlatformIcon.js +37 -0
  49. package/dist/components/shared/PlatformIcon.js.map +1 -0
  50. package/dist/components/shared/PromptDialog.js +81 -0
  51. package/dist/components/shared/PromptDialog.js.map +1 -0
  52. package/dist/components/shared/index.js +4 -0
  53. package/dist/components/shared/platformIconPaths.js +10 -0
  54. package/dist/components/shared/platformIconPaths.js.map +1 -0
  55. package/dist/components/targets/TargetCard.js +119 -162
  56. package/dist/components/targets/TargetCard.js.map +1 -1
  57. package/dist/generated/wspace-types.js +3 -1
  58. package/dist/generated/wspace-types.js.map +1 -1
  59. package/dist/lib/toast.js +36 -0
  60. package/dist/lib/toast.js.map +1 -0
  61. package/dist/pages/AgentDetailsPage.js +1104 -1696
  62. package/dist/pages/AgentDetailsPage.js.map +1 -1
  63. package/dist/pages/AgentGraphPage.js +214 -238
  64. package/dist/pages/AgentGraphPage.js.map +1 -1
  65. package/dist/pages/AgentsPage.js +404 -463
  66. package/dist/pages/AgentsPage.js.map +1 -1
  67. package/dist/pages/TargetDetailsPage.js +202 -184
  68. package/dist/pages/TargetDetailsPage.js.map +1 -1
  69. package/dist/pages/TargetsPage.js +797 -867
  70. package/dist/pages/TargetsPage.js.map +1 -1
  71. package/dist/shared/hooks/useField.js +19 -0
  72. package/dist/shared/hooks/useField.js.map +1 -0
  73. package/dist/translations/en.js +821 -126
  74. package/dist/translations/en.js.map +1 -1
  75. package/package.json +2 -1
@@ -8,180 +8,181 @@ import { useI18n as i } from "@burdenoff/fe-libs/shared/providers/shell/I18nProv
8
8
  import { useRecordProductVisit as a } from "@burdenoff/fe-libs/shared/hooks";
9
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, PlayCircle as y, Plug as b, Puzzle as x, Rocket as S, Server as C, Settings as w, Shield as T, Terminal as E, Zap as D } from "lucide-react";
10
10
  import { jsx as O, jsxs as k } from "react/jsx-runtime";
11
- import { FeatureFlagProvider as A } from "@burdenoff/fe-libs/shared/feature-flags";
11
+ import { Toaster as A } from "@burdenoff/fe-libs/ui";
12
+ import { FeatureFlagProvider as j } from "@burdenoff/fe-libs/shared/feature-flags";
12
13
  //#region src/VibeControlsRoot.tsx
13
- var j = (j) => {
14
- let { registerNavItems: M, registerFooterItems: N, basePath: P = "/", workspaceId: F } = j, { t: I, locale: L } = i(), R = typeof window < "u" && /^\/vibecontrols\/(share|deck)\//.test(window.location.pathname);
14
+ var M = (M) => {
15
+ let { registerNavItems: N, registerFooterItems: P, basePath: F = "/", workspaceId: I } = M, { t: L, locale: R } = i(), z = typeof window < "u" && /^\/vibecontrols\/(share|deck)\//.test(window.location.pathname);
15
16
  a({
16
17
  productSlug: "vibecontrols",
17
- enabled: !R
18
+ enabled: !z
18
19
  });
19
- let z = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
20
+ let B = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
20
21
  return r(() => {
21
- if (!(!M || R)) return M([
22
+ if (!(!N || z)) return N([
22
23
  {
23
24
  id: "vibecontrols-overview",
24
- label: I("nav.overview"),
25
- path: P === "/" ? "/" : P,
25
+ label: L("nav.overview"),
26
+ path: F === "/" ? "/" : F,
26
27
  icon: /* @__PURE__ */ O(_, { size: 20 }),
27
28
  order: 10,
28
29
  group: "vibecontrols"
29
30
  },
30
31
  {
31
32
  id: "vibecontrols-targets",
32
- label: I("nav.targets"),
33
- path: z(P, "targets"),
33
+ label: L("nav.targets"),
34
+ path: B(F, "targets"),
34
35
  icon: /* @__PURE__ */ O(C, { size: 20 }),
35
36
  order: 12,
36
37
  group: "vibecontrols"
37
38
  },
38
39
  {
39
40
  id: "vibecontrols-agents",
40
- label: I("nav.agents"),
41
- path: z(P, "agents"),
41
+ label: L("nav.agents"),
42
+ path: B(F, "agents"),
42
43
  icon: /* @__PURE__ */ O(u, { size: 20 }),
43
44
  order: 14,
44
45
  group: "vibecontrols"
45
46
  },
46
47
  {
47
48
  id: "vibecontrols-agent-graph",
48
- label: I("nav.agentGraph"),
49
- path: z(P, "agent-graph"),
49
+ label: L("nav.agentGraph"),
50
+ path: B(F, "agent-graph"),
50
51
  icon: /* @__PURE__ */ O(h, { size: 20 }),
51
52
  order: 16,
52
53
  group: "vibecontrols"
53
54
  },
54
55
  {
55
56
  id: "vibecontrols-vibes",
56
- label: I("nav.vibes"),
57
- path: z(P, "vibes"),
57
+ label: L("nav.vibes"),
58
+ path: B(F, "vibes"),
58
59
  icon: /* @__PURE__ */ O(D, { size: 20 }),
59
60
  order: 20,
60
61
  group: "vibecontrols"
61
62
  },
62
63
  {
63
64
  id: "vibecontrols-catalogs",
64
- label: I("nav.catalogs") === "nav.catalogs" ? "Catalogs" : I("nav.catalogs"),
65
- path: z(P, "catalogs"),
65
+ label: L("nav.catalogs") === "nav.catalogs" ? "Catalogs" : L("nav.catalogs"),
66
+ path: B(F, "catalogs"),
66
67
  icon: /* @__PURE__ */ O(c, { size: 20 }),
67
68
  order: 21,
68
69
  group: "vibecontrols"
69
70
  },
70
71
  {
71
72
  id: "vibecontrols-components",
72
- label: I("nav.components") === "nav.components" ? "Components" : I("nav.components"),
73
- path: z(P, "components"),
73
+ label: L("nav.components") === "nav.components" ? "Components" : L("nav.components"),
74
+ path: B(F, "components"),
74
75
  icon: /* @__PURE__ */ O(d, { size: 20 }),
75
76
  order: 22,
76
77
  group: "vibecontrols"
77
78
  },
78
79
  {
79
80
  id: "vibecontrols-templates",
80
- label: I("nav.templates") === "nav.templates" ? "Templates" : I("nav.templates"),
81
- path: z(P, "templates"),
81
+ label: L("nav.templates") === "nav.templates" ? "Templates" : L("nav.templates"),
82
+ path: B(F, "templates"),
82
83
  icon: /* @__PURE__ */ O(m, { size: 20 }),
83
84
  order: 23,
84
85
  group: "vibecontrols"
85
86
  },
86
87
  {
87
88
  id: "vibecontrols-plugins",
88
- label: I("nav.plugins") === "nav.plugins" ? "Plugins" : I("nav.plugins"),
89
- path: z(P, "plugins"),
89
+ label: L("nav.plugins") === "nav.plugins" ? "Plugins" : L("nav.plugins"),
90
+ path: B(F, "plugins"),
90
91
  icon: /* @__PURE__ */ O(x, { size: 20 }),
91
92
  order: 24,
92
93
  group: "vibecontrols"
93
94
  },
94
95
  {
95
96
  id: "vibecontrols-vibedeck",
96
- label: I("nav.vibeDeck"),
97
- path: z(P, "vibedeck"),
97
+ label: L("nav.vibeDeck"),
98
+ path: B(F, "vibedeck"),
98
99
  icon: /* @__PURE__ */ O(v, { size: 20 }),
99
100
  order: 25,
100
101
  group: "vibecontrols"
101
102
  },
102
103
  {
103
104
  id: "vibecontrols-sessions",
104
- label: I("nav.sessions"),
105
- path: z(P, "sessions"),
105
+ label: L("nav.sessions"),
106
+ path: B(F, "sessions"),
106
107
  icon: /* @__PURE__ */ O(E, { size: 20 }),
107
108
  order: 30,
108
109
  group: "vibecontrols"
109
110
  },
110
111
  {
111
112
  id: "vibecontrols-vibecalendar",
112
- label: I("nav.vibeCalendar"),
113
- path: z(P, "calendar"),
113
+ label: L("nav.vibeCalendar"),
114
+ path: B(F, "calendar"),
114
115
  icon: /* @__PURE__ */ O(p, { size: 20 }),
115
116
  order: 35,
116
117
  group: "vibecontrols"
117
118
  },
118
119
  {
119
120
  id: "vibecontrols-ai",
120
- label: I("nav.ai"),
121
- path: z(P, "ai"),
121
+ label: L("nav.ai"),
122
+ path: B(F, "ai"),
122
123
  icon: /* @__PURE__ */ O(f, { size: 20 }),
123
124
  order: 38,
124
125
  group: "vibecontrols"
125
126
  },
126
127
  {
127
128
  id: "vibecontrols-ai-bookmarks",
128
- label: I("nav.aiBookmarks"),
129
- path: z(P, "ai/bookmarks"),
129
+ label: L("nav.aiBookmarks"),
130
+ path: B(F, "ai/bookmarks"),
130
131
  icon: /* @__PURE__ */ O(l, { size: 20 }),
131
132
  order: 38.5,
132
133
  group: "vibecontrols"
133
134
  },
134
135
  {
135
136
  id: "vibecontrols-actions",
136
- label: I("nav.actions"),
137
- path: z(P, "actions"),
137
+ label: L("nav.actions"),
138
+ path: B(F, "actions"),
138
139
  icon: /* @__PURE__ */ O(y, { size: 20 }),
139
140
  order: 40,
140
141
  group: "vibecontrols"
141
142
  },
142
143
  {
143
144
  id: "vibecontrols-getting-started",
144
- label: I("nav.gettingStarted"),
145
- path: z(P, "getting-started"),
145
+ label: L("nav.gettingStarted"),
146
+ path: B(F, "getting-started"),
146
147
  icon: /* @__PURE__ */ O(S, { size: 20 }),
147
148
  order: 50,
148
149
  group: "vibecontrols"
149
150
  },
150
151
  {
151
152
  id: "vibecontrols-tunnels",
152
- label: I("nav.tunnels"),
153
- path: z(P, "tunnels"),
153
+ label: L("nav.tunnels"),
154
+ path: B(F, "tunnels"),
154
155
  icon: /* @__PURE__ */ O(g, { size: 20 }),
155
156
  order: 47,
156
157
  group: "vibecontrols"
157
158
  },
158
159
  {
159
160
  id: "vibecontrols-analytics",
160
- label: I("nav.analytics"),
161
- path: z(P, "analytics"),
161
+ label: L("nav.analytics"),
162
+ path: B(F, "analytics"),
162
163
  icon: /* @__PURE__ */ O(s, { size: 20 }),
163
164
  order: 55.5,
164
165
  group: "vibecontrols-system"
165
166
  },
166
167
  {
167
168
  id: "vibecontrols-audit",
168
- label: I("nav.vibeAudit"),
169
- path: z(P, "audit"),
169
+ label: L("nav.vibeAudit"),
170
+ path: B(F, "audit"),
170
171
  icon: /* @__PURE__ */ O(T, { size: 20 }),
171
172
  order: 56,
172
173
  group: "vibecontrols-system"
173
174
  },
174
175
  {
175
176
  id: "vibecontrols-health",
176
- label: I("nav.health"),
177
- path: z(P, "health"),
177
+ label: L("nav.health"),
178
+ path: B(F, "health"),
178
179
  icon: /* @__PURE__ */ O(o, { size: 20 }),
179
180
  order: 110,
180
181
  group: "vibecontrols-system"
181
182
  },
182
183
  {
183
184
  id: "vibecontrols-integrations",
184
- label: I("nav.integrations") === "nav.integrations" ? "Integrations" : I("nav.integrations"),
185
+ label: L("nav.integrations") === "nav.integrations" ? "Integrations" : L("nav.integrations"),
185
186
  path: "/integrations",
186
187
  icon: /* @__PURE__ */ O(b, { size: 20 }),
187
188
  order: 115,
@@ -189,38 +190,59 @@ var j = (j) => {
189
190
  },
190
191
  {
191
192
  id: "vibecontrols-settings",
192
- label: I("nav.settings"),
193
- path: z(P, "settings"),
193
+ label: L("nav.settings"),
194
+ path: B(F, "settings"),
194
195
  icon: /* @__PURE__ */ O(w, { size: 20 }),
195
196
  order: 120,
196
197
  group: "vibecontrols-system"
197
198
  }
198
199
  ]);
199
200
  }, [
200
- M,
201
- P,
202
- I,
201
+ N,
202
+ F,
203
203
  L,
204
- R
204
+ R,
205
+ z
205
206
  ]), r(() => {
206
- if (!(!N || R)) return N([{
207
+ if (!(!P || z)) return P([{
207
208
  id: "vibecontrols-status",
208
209
  label: "VibeControls Ready",
209
210
  type: "status",
210
211
  order: 10,
211
212
  section: "left"
212
213
  }]);
213
- }, [N, R]), /* @__PURE__ */ O(A, {
214
- workspaceId: F ?? null,
214
+ }, [P, z]), /* @__PURE__ */ O(j, {
215
+ workspaceId: I ?? null,
215
216
  gateway: "global",
216
217
  defaultEnabled: !0,
217
218
  children: /* @__PURE__ */ k(e, {
218
- ...j,
219
- children: [R ? null : /* @__PURE__ */ O(n, {}), /* @__PURE__ */ O(t, {})]
219
+ ...M,
220
+ children: [
221
+ z ? null : /* @__PURE__ */ O(n, {}),
222
+ /* @__PURE__ */ O(t, {}),
223
+ /* @__PURE__ */ O(A, {
224
+ position: "bottom-right",
225
+ offset: {
226
+ bottom: 96,
227
+ right: 16
228
+ },
229
+ mobileOffset: {
230
+ bottom: 96,
231
+ left: 16,
232
+ right: 16
233
+ },
234
+ style: {
235
+ "--normal-bg": "var(--color-bg-elevated)",
236
+ "--normal-text": "var(--color-text-primary)",
237
+ "--normal-border": "var(--color-border-default)",
238
+ "--border-radius": "var(--radius-card)"
239
+ }
240
+ })
241
+ ]
220
242
  })
221
243
  });
222
244
  };
223
245
  //#endregion
224
- export { j as VibeControlsRoot };
246
+ export { M as VibeControlsRoot };
225
247
 
226
248
  //# 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 { 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} 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';\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-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 {\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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"}
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} 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-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 {\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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"}