@burdenoff/microfe-vibecontrols 2026.521.2 → 2026.522.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 (103) hide show
  1. package/dist/VibeControlsRoot.js +86 -78
  2. package/dist/VibeControlsRoot.js.map +1 -1
  3. package/dist/VibeControlsRoutes.js +168 -125
  4. package/dist/VibeControlsRoutes.js.map +1 -1
  5. package/dist/components/agent-manager/AgentManagerBookmarksDrawer.js +174 -0
  6. package/dist/components/agent-manager/AgentManagerBookmarksDrawer.js.map +1 -0
  7. package/dist/components/agent-manager/AgentManagerChatPane.js +149 -94
  8. package/dist/components/agent-manager/AgentManagerChatPane.js.map +1 -1
  9. package/dist/components/agent-manager/AgentManagerMessageItem.js +52 -41
  10. package/dist/components/agent-manager/AgentManagerMessageItem.js.map +1 -1
  11. package/dist/components/agent-manager/AgentManagerMessageList.js +22 -15
  12. package/dist/components/agent-manager/AgentManagerMessageList.js.map +1 -1
  13. package/dist/components/agents/OpenInEditorMenu.js +241 -0
  14. package/dist/components/agents/OpenInEditorMenu.js.map +1 -0
  15. package/dist/components/agents/VibeOpenInEditorMenu.js +20 -0
  16. package/dist/components/agents/VibeOpenInEditorMenu.js.map +1 -0
  17. package/dist/components/agents/idePresets.js +148 -0
  18. package/dist/components/agents/idePresets.js.map +1 -0
  19. package/dist/components/agents/index.js +3 -0
  20. package/dist/components/ai/AIPlanPanel.js +332 -0
  21. package/dist/components/ai/AIPlanPanel.js.map +1 -0
  22. package/dist/components/assistant/AssistantMessageItem.js +55 -47
  23. package/dist/components/assistant/AssistantMessageItem.js.map +1 -1
  24. package/dist/components/audit/AuditExportButton.js +87 -41
  25. package/dist/components/audit/AuditExportButton.js.map +1 -1
  26. package/dist/components/security/SecurityEmptyState.js +33 -0
  27. package/dist/components/security/SecurityEmptyState.js.map +1 -0
  28. package/dist/components/security/SecurityEvidenceList.js +42 -0
  29. package/dist/components/security/SecurityEvidenceList.js.map +1 -0
  30. package/dist/components/security/SecurityFindingsTable.js +201 -0
  31. package/dist/components/security/SecurityFindingsTable.js.map +1 -0
  32. package/dist/components/security/SecurityHeaderStrip.js +67 -0
  33. package/dist/components/security/SecurityHeaderStrip.js.map +1 -0
  34. package/dist/components/security/SecurityLifecycleStepper.js +66 -0
  35. package/dist/components/security/SecurityLifecycleStepper.js.map +1 -0
  36. package/dist/components/security/SecurityProviderDrawer.js +112 -0
  37. package/dist/components/security/SecurityProviderDrawer.js.map +1 -0
  38. package/dist/components/security/SecurityTabPanel.js +105 -0
  39. package/dist/components/security/SecurityTabPanel.js.map +1 -0
  40. package/dist/components/security/gql.js +128 -0
  41. package/dist/components/security/gql.js.map +1 -0
  42. package/dist/components/security/index.js +8 -0
  43. package/dist/components/security/types.js +80 -0
  44. package/dist/components/security/types.js.map +1 -0
  45. package/dist/components/settings/IdePreferencesSection.js +66 -0
  46. package/dist/components/settings/IdePreferencesSection.js.map +1 -0
  47. package/dist/components/shared/PageSkeleton.js +88 -0
  48. package/dist/components/shared/PageSkeleton.js.map +1 -0
  49. package/dist/constants/pluginCatalog.js +20 -8
  50. package/dist/constants/pluginCatalog.js.map +1 -1
  51. package/dist/generated/wspace-operations.js +1350 -1262
  52. package/dist/generated/wspace-operations.js.map +1 -1
  53. package/dist/generated/wspace-types.js.map +1 -1
  54. package/dist/hooks/useToggleAgentBookmark.js +32 -0
  55. package/dist/hooks/useToggleAgentBookmark.js.map +1 -0
  56. package/dist/index.js +10 -10
  57. package/dist/pages/AgentDetailsPage.js +25 -25
  58. package/dist/pages/AgentDetailsPage.js.map +1 -1
  59. package/dist/pages/AgentsPage.js +302 -301
  60. package/dist/pages/AgentsPage.js.map +1 -1
  61. package/dist/pages/CatalogDetailPage.js +258 -249
  62. package/dist/pages/CatalogDetailPage.js.map +1 -1
  63. package/dist/pages/CatalogPage.js +22 -22
  64. package/dist/pages/CatalogPage.js.map +1 -1
  65. package/dist/pages/ComponentDetailPage.js +30 -30
  66. package/dist/pages/ComponentDetailPage.js.map +1 -1
  67. package/dist/pages/ComponentsPage.js +23 -23
  68. package/dist/pages/ComponentsPage.js.map +1 -1
  69. package/dist/pages/LogsPage.js +107 -0
  70. package/dist/pages/LogsPage.js.map +1 -0
  71. package/dist/pages/NoteDetailsPage.js +12 -12
  72. package/dist/pages/NoteDetailsPage.js.map +1 -1
  73. package/dist/pages/PluginStandalonePage.js +1 -1
  74. package/dist/pages/PluginStandalonePage.js.map +1 -1
  75. package/dist/pages/SessionDetailsPage.js +12 -12
  76. package/dist/pages/SessionDetailsPage.js.map +1 -1
  77. package/dist/pages/SessionsPage.js +68 -51
  78. package/dist/pages/SessionsPage.js.map +1 -1
  79. package/dist/pages/SettingsPage.js +60 -52
  80. package/dist/pages/SettingsPage.js.map +1 -1
  81. package/dist/pages/TargetDetailsPage.js +18 -18
  82. package/dist/pages/TargetDetailsPage.js.map +1 -1
  83. package/dist/pages/TargetsPage.js +328 -331
  84. package/dist/pages/TargetsPage.js.map +1 -1
  85. package/dist/pages/TemplateDetailPage.js +17 -17
  86. package/dist/pages/TemplateDetailPage.js.map +1 -1
  87. package/dist/pages/TemplatesPage.js +17 -17
  88. package/dist/pages/TemplatesPage.js.map +1 -1
  89. package/dist/pages/VibeDetailsPage.js +552 -535
  90. package/dist/pages/VibeDetailsPage.js.map +1 -1
  91. package/dist/pages/VibesPage.js +276 -264
  92. package/dist/pages/VibesPage.js.map +1 -1
  93. package/dist/pages/ai/AIBookmarksPage.js +184 -0
  94. package/dist/pages/ai/AIBookmarksPage.js.map +1 -0
  95. package/dist/pages/ai/AIPage.js +138 -109
  96. package/dist/pages/ai/AIPage.js.map +1 -1
  97. package/dist/services/planApi.js +18 -0
  98. package/dist/services/planApi.js.map +1 -0
  99. package/dist/store/vibeControlsStore.js +30 -3
  100. package/dist/store/vibeControlsStore.js.map +1 -1
  101. package/dist/translations/en.js +30 -1
  102. package/dist/translations/en.js.map +1 -1
  103. package/package.json +4 -4
@@ -5,205 +5,213 @@ import n from "./components/shared/AgentEventsConnector.js";
5
5
  import { useEffect as r } from "react";
6
6
  import { useI18n as i } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
7
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";
8
+ 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, Rocket as x, Server as S, Settings as C, Shield as w, Terminal as T, Zap as E } from "lucide-react";
9
+ import { jsx as D, jsxs as O } from "react/jsx-runtime";
10
+ import { FeatureFlagProvider as k } from "@burdenoff/fe-libs/shared/feature-flags";
11
11
  //#region src/VibeControlsRoot.tsx
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);
12
+ var A = (A) => {
13
+ let { registerNavItems: j, registerFooterItems: M, basePath: N = "/", workspaceId: P } = A, { t: F, locale: I } = i(), L = typeof window < "u" && /^\/vibecontrols\/(share|deck)\//.test(window.location.pathname);
14
14
  a({
15
15
  productSlug: "vibecontrols",
16
- enabled: !I
16
+ enabled: !L
17
17
  });
18
- let L = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
18
+ let R = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
19
19
  return r(() => {
20
- if (!(!A || I)) return A([
20
+ if (!(!j || L)) return j([
21
21
  {
22
22
  id: "vibecontrols-overview",
23
- label: P("nav.overview"),
24
- path: M === "/" ? "/" : M,
25
- icon: /* @__PURE__ */ E(g, { size: 20 }),
23
+ label: F("nav.overview"),
24
+ path: N === "/" ? "/" : N,
25
+ icon: /* @__PURE__ */ D(_, { size: 20 }),
26
26
  order: 10,
27
27
  group: "vibecontrols"
28
28
  },
29
29
  {
30
30
  id: "vibecontrols-targets",
31
- label: P("nav.targets"),
32
- path: L(M, "targets"),
33
- icon: /* @__PURE__ */ E(x, { size: 20 }),
31
+ label: F("nav.targets"),
32
+ path: R(N, "targets"),
33
+ icon: /* @__PURE__ */ D(S, { size: 20 }),
34
34
  order: 12,
35
35
  group: "vibecontrols"
36
36
  },
37
37
  {
38
38
  id: "vibecontrols-agents",
39
- label: P("nav.agents"),
40
- path: L(M, "agents"),
41
- icon: /* @__PURE__ */ E(l, { size: 20 }),
39
+ label: F("nav.agents"),
40
+ path: R(N, "agents"),
41
+ icon: /* @__PURE__ */ D(u, { size: 20 }),
42
42
  order: 14,
43
43
  group: "vibecontrols"
44
44
  },
45
45
  {
46
46
  id: "vibecontrols-agent-graph",
47
- label: P("nav.agentGraph"),
48
- path: L(M, "agent-graph"),
49
- icon: /* @__PURE__ */ E(m, { size: 20 }),
47
+ label: F("nav.agentGraph"),
48
+ path: R(N, "agent-graph"),
49
+ icon: /* @__PURE__ */ D(h, { size: 20 }),
50
50
  order: 16,
51
51
  group: "vibecontrols"
52
52
  },
53
53
  {
54
54
  id: "vibecontrols-vibes",
55
- label: P("nav.vibes"),
56
- path: L(M, "vibes"),
57
- icon: /* @__PURE__ */ E(T, { size: 20 }),
55
+ label: F("nav.vibes"),
56
+ path: R(N, "vibes"),
57
+ icon: /* @__PURE__ */ D(E, { size: 20 }),
58
58
  order: 20,
59
59
  group: "vibecontrols"
60
60
  },
61
61
  {
62
62
  id: "vibecontrols-catalogs",
63
- label: P("nav.catalogs") === "nav.catalogs" ? "Catalogs" : P("nav.catalogs"),
64
- path: L(M, "catalogs"),
65
- icon: /* @__PURE__ */ E(c, { size: 20 }),
63
+ label: F("nav.catalogs") === "nav.catalogs" ? "Catalogs" : F("nav.catalogs"),
64
+ path: R(N, "catalogs"),
65
+ icon: /* @__PURE__ */ D(c, { size: 20 }),
66
66
  order: 21,
67
67
  group: "vibecontrols"
68
68
  },
69
69
  {
70
70
  id: "vibecontrols-components",
71
- label: P("nav.components") === "nav.components" ? "Components" : P("nav.components"),
72
- path: L(M, "components"),
73
- icon: /* @__PURE__ */ E(u, { size: 20 }),
71
+ label: F("nav.components") === "nav.components" ? "Components" : F("nav.components"),
72
+ path: R(N, "components"),
73
+ icon: /* @__PURE__ */ D(d, { size: 20 }),
74
74
  order: 22,
75
75
  group: "vibecontrols"
76
76
  },
77
77
  {
78
78
  id: "vibecontrols-templates",
79
- label: P("nav.templates") === "nav.templates" ? "Templates" : P("nav.templates"),
80
- path: L(M, "templates"),
81
- icon: /* @__PURE__ */ E(p, { size: 20 }),
79
+ label: F("nav.templates") === "nav.templates" ? "Templates" : F("nav.templates"),
80
+ path: R(N, "templates"),
81
+ icon: /* @__PURE__ */ D(m, { size: 20 }),
82
82
  order: 23,
83
83
  group: "vibecontrols"
84
84
  },
85
85
  {
86
86
  id: "vibecontrols-vibedeck",
87
- label: P("nav.vibeDeck"),
88
- path: L(M, "vibedeck"),
89
- icon: /* @__PURE__ */ E(_, { size: 20 }),
87
+ label: F("nav.vibeDeck"),
88
+ path: R(N, "vibedeck"),
89
+ icon: /* @__PURE__ */ D(v, { size: 20 }),
90
90
  order: 25,
91
91
  group: "vibecontrols"
92
92
  },
93
93
  {
94
94
  id: "vibecontrols-sessions",
95
- label: P("nav.sessions"),
96
- path: L(M, "sessions"),
97
- icon: /* @__PURE__ */ E(w, { size: 20 }),
95
+ label: F("nav.sessions"),
96
+ path: R(N, "sessions"),
97
+ icon: /* @__PURE__ */ D(T, { size: 20 }),
98
98
  order: 30,
99
99
  group: "vibecontrols"
100
100
  },
101
101
  {
102
102
  id: "vibecontrols-vibecalendar",
103
- label: P("nav.vibeCalendar"),
104
- path: L(M, "calendar"),
105
- icon: /* @__PURE__ */ E(f, { size: 20 }),
103
+ label: F("nav.vibeCalendar"),
104
+ path: R(N, "calendar"),
105
+ icon: /* @__PURE__ */ D(p, { size: 20 }),
106
106
  order: 35,
107
107
  group: "vibecontrols"
108
108
  },
109
109
  {
110
110
  id: "vibecontrols-ai",
111
- label: P("nav.ai"),
112
- path: L(M, "ai"),
113
- icon: /* @__PURE__ */ E(d, { size: 20 }),
111
+ label: F("nav.ai"),
112
+ path: R(N, "ai"),
113
+ icon: /* @__PURE__ */ D(f, { size: 20 }),
114
114
  order: 38,
115
115
  group: "vibecontrols"
116
116
  },
117
+ {
118
+ id: "vibecontrols-ai-bookmarks",
119
+ label: F("nav.aiBookmarks"),
120
+ path: R(N, "ai/bookmarks"),
121
+ icon: /* @__PURE__ */ D(l, { size: 20 }),
122
+ order: 38.5,
123
+ group: "vibecontrols"
124
+ },
117
125
  {
118
126
  id: "vibecontrols-actions",
119
- label: P("nav.actions"),
120
- path: L(M, "actions"),
121
- icon: /* @__PURE__ */ E(v, { size: 20 }),
127
+ label: F("nav.actions"),
128
+ path: R(N, "actions"),
129
+ icon: /* @__PURE__ */ D(y, { size: 20 }),
122
130
  order: 40,
123
131
  group: "vibecontrols"
124
132
  },
125
133
  {
126
134
  id: "vibecontrols-getting-started",
127
- label: P("nav.gettingStarted"),
128
- path: L(M, "getting-started"),
129
- icon: /* @__PURE__ */ E(b, { size: 20 }),
135
+ label: F("nav.gettingStarted"),
136
+ path: R(N, "getting-started"),
137
+ icon: /* @__PURE__ */ D(x, { size: 20 }),
130
138
  order: 50,
131
139
  group: "vibecontrols"
132
140
  },
133
141
  {
134
142
  id: "vibecontrols-tunnels",
135
- label: P("nav.tunnels"),
136
- path: L(M, "tunnels"),
137
- icon: /* @__PURE__ */ E(h, { size: 20 }),
143
+ label: F("nav.tunnels"),
144
+ path: R(N, "tunnels"),
145
+ icon: /* @__PURE__ */ D(g, { size: 20 }),
138
146
  order: 47,
139
147
  group: "vibecontrols"
140
148
  },
141
149
  {
142
150
  id: "vibecontrols-analytics",
143
- label: P("nav.analytics"),
144
- path: L(M, "analytics"),
145
- icon: /* @__PURE__ */ E(s, { size: 20 }),
151
+ label: F("nav.analytics"),
152
+ path: R(N, "analytics"),
153
+ icon: /* @__PURE__ */ D(s, { size: 20 }),
146
154
  order: 55.5,
147
155
  group: "vibecontrols-system"
148
156
  },
149
157
  {
150
158
  id: "vibecontrols-audit",
151
- label: P("nav.vibeAudit"),
152
- path: L(M, "audit"),
153
- icon: /* @__PURE__ */ E(C, { size: 20 }),
159
+ label: F("nav.vibeAudit"),
160
+ path: R(N, "audit"),
161
+ icon: /* @__PURE__ */ D(w, { size: 20 }),
154
162
  order: 56,
155
163
  group: "vibecontrols-system"
156
164
  },
157
165
  {
158
166
  id: "vibecontrols-health",
159
- label: P("nav.health"),
160
- path: L(M, "health"),
161
- icon: /* @__PURE__ */ E(o, { size: 20 }),
167
+ label: F("nav.health"),
168
+ path: R(N, "health"),
169
+ icon: /* @__PURE__ */ D(o, { size: 20 }),
162
170
  order: 110,
163
171
  group: "vibecontrols-system"
164
172
  },
165
173
  {
166
174
  id: "vibecontrols-integrations",
167
- label: P("nav.integrations") === "nav.integrations" ? "Integrations" : P("nav.integrations"),
175
+ label: F("nav.integrations") === "nav.integrations" ? "Integrations" : F("nav.integrations"),
168
176
  path: "/integrations",
169
- icon: /* @__PURE__ */ E(y, { size: 20 }),
177
+ icon: /* @__PURE__ */ D(b, { size: 20 }),
170
178
  order: 115,
171
179
  group: "vibecontrols-system"
172
180
  },
173
181
  {
174
182
  id: "vibecontrols-settings",
175
- label: P("nav.settings"),
176
- path: L(M, "settings"),
177
- icon: /* @__PURE__ */ E(S, { size: 20 }),
183
+ label: F("nav.settings"),
184
+ path: R(N, "settings"),
185
+ icon: /* @__PURE__ */ D(C, { size: 20 }),
178
186
  order: 120,
179
187
  group: "vibecontrols-system"
180
188
  }
181
189
  ]);
182
190
  }, [
183
- A,
184
- M,
185
- P,
191
+ j,
192
+ N,
186
193
  F,
187
- I
194
+ I,
195
+ L
188
196
  ]), r(() => {
189
- if (!(!j || I)) return j([{
197
+ if (!(!M || L)) return M([{
190
198
  id: "vibecontrols-status",
191
199
  label: "VibeControls Ready",
192
200
  type: "status",
193
201
  order: 10,
194
202
  section: "left"
195
203
  }]);
196
- }, [j, I]), /* @__PURE__ */ E(O, {
197
- workspaceId: N ?? null,
204
+ }, [M, L]), /* @__PURE__ */ D(k, {
205
+ workspaceId: P ?? null,
198
206
  gateway: "global",
199
207
  defaultEnabled: !0,
200
- children: /* @__PURE__ */ D(e, {
201
- ...k,
202
- children: [I ? null : /* @__PURE__ */ E(n, {}), /* @__PURE__ */ E(t, {})]
208
+ children: /* @__PURE__ */ O(e, {
209
+ ...A,
210
+ children: [L ? null : /* @__PURE__ */ D(n, {}), /* @__PURE__ */ D(t, {})]
203
211
  })
204
212
  });
205
213
  };
206
214
  //#endregion
207
- export { k as VibeControlsRoot };
215
+ export { A as VibeControlsRoot };
208
216
 
209
217
  //# 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 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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"}
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} 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 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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"}