@friggframework/devtools 2.0.0-next.4 → 2.0.0-next.40

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 (197) hide show
  1. package/frigg-cli/.eslintrc.js +141 -0
  2. package/frigg-cli/__tests__/jest.config.js +102 -0
  3. package/frigg-cli/__tests__/unit/commands/build.test.js +483 -0
  4. package/frigg-cli/__tests__/unit/commands/install.test.js +418 -0
  5. package/frigg-cli/__tests__/unit/commands/ui.test.js +592 -0
  6. package/frigg-cli/__tests__/utils/command-tester.js +170 -0
  7. package/frigg-cli/__tests__/utils/mock-factory.js +270 -0
  8. package/frigg-cli/__tests__/utils/test-fixtures.js +463 -0
  9. package/frigg-cli/__tests__/utils/test-setup.js +286 -0
  10. package/frigg-cli/build-command/index.js +54 -0
  11. package/frigg-cli/deploy-command/index.js +175 -0
  12. package/frigg-cli/generate-command/__tests__/generate-command.test.js +312 -0
  13. package/frigg-cli/generate-command/azure-generator.js +43 -0
  14. package/frigg-cli/generate-command/gcp-generator.js +47 -0
  15. package/frigg-cli/generate-command/index.js +332 -0
  16. package/frigg-cli/generate-command/terraform-generator.js +555 -0
  17. package/frigg-cli/generate-iam-command.js +115 -0
  18. package/frigg-cli/index.js +47 -1
  19. package/frigg-cli/index.test.js +1 -4
  20. package/frigg-cli/init-command/backend-first-handler.js +756 -0
  21. package/frigg-cli/init-command/index.js +93 -0
  22. package/frigg-cli/init-command/template-handler.js +143 -0
  23. package/frigg-cli/install-command/index.js +1 -4
  24. package/frigg-cli/package.json +51 -0
  25. package/frigg-cli/start-command/index.js +24 -4
  26. package/frigg-cli/test/init-command.test.js +180 -0
  27. package/frigg-cli/test/npm-registry.test.js +319 -0
  28. package/frigg-cli/ui-command/index.js +154 -0
  29. package/frigg-cli/utils/app-resolver.js +319 -0
  30. package/frigg-cli/utils/backend-path.js +16 -17
  31. package/frigg-cli/utils/npm-registry.js +167 -0
  32. package/frigg-cli/utils/process-manager.js +199 -0
  33. package/frigg-cli/utils/repo-detection.js +405 -0
  34. package/infrastructure/DEPLOYMENT-INSTRUCTIONS.md +268 -0
  35. package/infrastructure/GENERATE-IAM-DOCS.md +278 -0
  36. package/infrastructure/IAM-POLICY-TEMPLATES.md +176 -0
  37. package/infrastructure/README.md +443 -0
  38. package/infrastructure/WEBSOCKET-CONFIGURATION.md +105 -0
  39. package/infrastructure/__tests__/fixtures/mock-aws-resources.js +391 -0
  40. package/infrastructure/__tests__/helpers/test-utils.js +277 -0
  41. package/infrastructure/aws-discovery.js +1176 -0
  42. package/infrastructure/aws-discovery.test.js +1220 -0
  43. package/infrastructure/build-time-discovery.js +206 -0
  44. package/infrastructure/build-time-discovery.test.js +378 -0
  45. package/infrastructure/create-frigg-infrastructure.js +3 -5
  46. package/infrastructure/env-validator.js +77 -0
  47. package/infrastructure/frigg-deployment-iam-stack.yaml +401 -0
  48. package/infrastructure/iam-generator.js +836 -0
  49. package/infrastructure/iam-generator.test.js +172 -0
  50. package/infrastructure/iam-policy-basic.json +218 -0
  51. package/infrastructure/iam-policy-full.json +288 -0
  52. package/infrastructure/integration.test.js +383 -0
  53. package/infrastructure/run-discovery.js +110 -0
  54. package/infrastructure/serverless-template.js +1472 -138
  55. package/infrastructure/serverless-template.test.js +1759 -0
  56. package/management-ui/.eslintrc.js +22 -0
  57. package/management-ui/README.md +203 -0
  58. package/management-ui/components.json +21 -0
  59. package/management-ui/docs/phase2-integration-guide.md +320 -0
  60. package/management-ui/index.html +13 -0
  61. package/management-ui/package-lock.json +16517 -0
  62. package/management-ui/package.json +76 -0
  63. package/management-ui/packages/devtools/frigg-cli/ui-command/index.js +302 -0
  64. package/management-ui/postcss.config.js +6 -0
  65. package/management-ui/server/api/backend.js +256 -0
  66. package/management-ui/server/api/cli.js +315 -0
  67. package/management-ui/server/api/codegen.js +663 -0
  68. package/management-ui/server/api/connections.js +857 -0
  69. package/management-ui/server/api/discovery.js +185 -0
  70. package/management-ui/server/api/environment/index.js +1 -0
  71. package/management-ui/server/api/environment/router.js +378 -0
  72. package/management-ui/server/api/environment.js +328 -0
  73. package/management-ui/server/api/integrations.js +876 -0
  74. package/management-ui/server/api/logs.js +248 -0
  75. package/management-ui/server/api/monitoring.js +282 -0
  76. package/management-ui/server/api/open-ide.js +31 -0
  77. package/management-ui/server/api/project.js +1029 -0
  78. package/management-ui/server/api/users/sessions.js +371 -0
  79. package/management-ui/server/api/users/simulation.js +254 -0
  80. package/management-ui/server/api/users.js +362 -0
  81. package/management-ui/server/api-contract.md +275 -0
  82. package/management-ui/server/index.js +873 -0
  83. package/management-ui/server/middleware/errorHandler.js +93 -0
  84. package/management-ui/server/middleware/security.js +32 -0
  85. package/management-ui/server/processManager.js +296 -0
  86. package/management-ui/server/server.js +346 -0
  87. package/management-ui/server/services/aws-monitor.js +413 -0
  88. package/management-ui/server/services/npm-registry.js +347 -0
  89. package/management-ui/server/services/template-engine.js +538 -0
  90. package/management-ui/server/utils/cliIntegration.js +220 -0
  91. package/management-ui/server/utils/environment/auditLogger.js +471 -0
  92. package/management-ui/server/utils/environment/awsParameterStore.js +264 -0
  93. package/management-ui/server/utils/environment/encryption.js +278 -0
  94. package/management-ui/server/utils/environment/envFileManager.js +286 -0
  95. package/management-ui/server/utils/import-commonjs.js +28 -0
  96. package/management-ui/server/utils/response.js +83 -0
  97. package/management-ui/server/websocket/handler.js +325 -0
  98. package/management-ui/src/App.jsx +109 -0
  99. package/management-ui/src/assets/FriggLogo.svg +1 -0
  100. package/management-ui/src/components/AppRouter.jsx +65 -0
  101. package/management-ui/src/components/Button.jsx +70 -0
  102. package/management-ui/src/components/Card.jsx +97 -0
  103. package/management-ui/src/components/EnvironmentCompare.jsx +400 -0
  104. package/management-ui/src/components/EnvironmentEditor.jsx +372 -0
  105. package/management-ui/src/components/EnvironmentImportExport.jsx +469 -0
  106. package/management-ui/src/components/EnvironmentSchema.jsx +491 -0
  107. package/management-ui/src/components/EnvironmentSecurity.jsx +463 -0
  108. package/management-ui/src/components/ErrorBoundary.jsx +73 -0
  109. package/management-ui/src/components/IntegrationCard.jsx +481 -0
  110. package/management-ui/src/components/IntegrationCardEnhanced.jsx +770 -0
  111. package/management-ui/src/components/IntegrationExplorer.jsx +379 -0
  112. package/management-ui/src/components/IntegrationStatus.jsx +336 -0
  113. package/management-ui/src/components/Layout.jsx +716 -0
  114. package/management-ui/src/components/LoadingSpinner.jsx +113 -0
  115. package/management-ui/src/components/RepositoryPicker.jsx +248 -0
  116. package/management-ui/src/components/SessionMonitor.jsx +350 -0
  117. package/management-ui/src/components/StatusBadge.jsx +208 -0
  118. package/management-ui/src/components/UserContextSwitcher.jsx +212 -0
  119. package/management-ui/src/components/UserSimulation.jsx +327 -0
  120. package/management-ui/src/components/Welcome.jsx +434 -0
  121. package/management-ui/src/components/codegen/APIEndpointGenerator.jsx +637 -0
  122. package/management-ui/src/components/codegen/APIModuleSelector.jsx +227 -0
  123. package/management-ui/src/components/codegen/CodeGenerationWizard.jsx +247 -0
  124. package/management-ui/src/components/codegen/CodePreviewEditor.jsx +316 -0
  125. package/management-ui/src/components/codegen/DynamicModuleForm.jsx +271 -0
  126. package/management-ui/src/components/codegen/FormBuilder.jsx +737 -0
  127. package/management-ui/src/components/codegen/IntegrationGenerator.jsx +855 -0
  128. package/management-ui/src/components/codegen/ProjectScaffoldWizard.jsx +797 -0
  129. package/management-ui/src/components/codegen/SchemaBuilder.jsx +303 -0
  130. package/management-ui/src/components/codegen/TemplateSelector.jsx +586 -0
  131. package/management-ui/src/components/codegen/index.js +10 -0
  132. package/management-ui/src/components/connections/ConnectionConfigForm.jsx +362 -0
  133. package/management-ui/src/components/connections/ConnectionHealthMonitor.jsx +182 -0
  134. package/management-ui/src/components/connections/ConnectionTester.jsx +200 -0
  135. package/management-ui/src/components/connections/EntityRelationshipMapper.jsx +292 -0
  136. package/management-ui/src/components/connections/OAuthFlow.jsx +204 -0
  137. package/management-ui/src/components/connections/index.js +5 -0
  138. package/management-ui/src/components/index.js +21 -0
  139. package/management-ui/src/components/monitoring/APIGatewayMetrics.jsx +222 -0
  140. package/management-ui/src/components/monitoring/LambdaMetrics.jsx +169 -0
  141. package/management-ui/src/components/monitoring/MetricsChart.jsx +197 -0
  142. package/management-ui/src/components/monitoring/MonitoringDashboard.jsx +393 -0
  143. package/management-ui/src/components/monitoring/SQSMetrics.jsx +246 -0
  144. package/management-ui/src/components/monitoring/index.js +6 -0
  145. package/management-ui/src/components/monitoring/monitoring.css +218 -0
  146. package/management-ui/src/components/theme-provider.jsx +52 -0
  147. package/management-ui/src/components/theme-toggle.jsx +39 -0
  148. package/management-ui/src/components/ui/badge.tsx +36 -0
  149. package/management-ui/src/components/ui/button.test.jsx +56 -0
  150. package/management-ui/src/components/ui/button.tsx +57 -0
  151. package/management-ui/src/components/ui/card.tsx +76 -0
  152. package/management-ui/src/components/ui/dropdown-menu.tsx +199 -0
  153. package/management-ui/src/components/ui/select.tsx +157 -0
  154. package/management-ui/src/components/ui/skeleton.jsx +15 -0
  155. package/management-ui/src/hooks/useFrigg.jsx +601 -0
  156. package/management-ui/src/hooks/useSocket.jsx +58 -0
  157. package/management-ui/src/index.css +193 -0
  158. package/management-ui/src/lib/utils.ts +6 -0
  159. package/management-ui/src/main.jsx +10 -0
  160. package/management-ui/src/pages/CodeGeneration.jsx +14 -0
  161. package/management-ui/src/pages/Connections.jsx +252 -0
  162. package/management-ui/src/pages/ConnectionsEnhanced.jsx +633 -0
  163. package/management-ui/src/pages/Dashboard.jsx +311 -0
  164. package/management-ui/src/pages/Environment.jsx +314 -0
  165. package/management-ui/src/pages/IntegrationConfigure.jsx +669 -0
  166. package/management-ui/src/pages/IntegrationDiscovery.jsx +567 -0
  167. package/management-ui/src/pages/IntegrationTest.jsx +742 -0
  168. package/management-ui/src/pages/Integrations.jsx +253 -0
  169. package/management-ui/src/pages/Monitoring.jsx +17 -0
  170. package/management-ui/src/pages/Simulation.jsx +155 -0
  171. package/management-ui/src/pages/Users.jsx +492 -0
  172. package/management-ui/src/services/api.js +41 -0
  173. package/management-ui/src/services/apiModuleService.js +193 -0
  174. package/management-ui/src/services/websocket-handlers.js +120 -0
  175. package/management-ui/src/test/api/project.test.js +273 -0
  176. package/management-ui/src/test/components/Welcome.test.jsx +378 -0
  177. package/management-ui/src/test/mocks/server.js +178 -0
  178. package/management-ui/src/test/setup.js +61 -0
  179. package/management-ui/src/test/utils/test-utils.jsx +134 -0
  180. package/management-ui/src/utils/repository.js +98 -0
  181. package/management-ui/src/utils/repository.test.js +118 -0
  182. package/management-ui/src/workflows/phase2-integration-workflows.js +884 -0
  183. package/management-ui/tailwind.config.js +63 -0
  184. package/management-ui/tsconfig.json +37 -0
  185. package/management-ui/tsconfig.node.json +10 -0
  186. package/management-ui/vite.config.js +26 -0
  187. package/management-ui/vitest.config.js +38 -0
  188. package/package.json +20 -9
  189. package/infrastructure/app-handler-helpers.js +0 -57
  190. package/infrastructure/backend-utils.js +0 -90
  191. package/infrastructure/routers/auth.js +0 -26
  192. package/infrastructure/routers/integration-defined-routers.js +0 -37
  193. package/infrastructure/routers/middleware/loadUser.js +0 -15
  194. package/infrastructure/routers/middleware/requireLoggedInUser.js +0 -12
  195. package/infrastructure/routers/user.js +0 -41
  196. package/infrastructure/routers/websocket.js +0 -55
  197. package/infrastructure/workers/integration-defined-workers.js +0 -24
@@ -0,0 +1,716 @@
1
+ import React from 'react'
2
+ import { Link, useLocation } from 'react-router-dom'
3
+ <<<<<<< HEAD
4
+ <<<<<<< HEAD
5
+ =======
6
+ <<<<<<< HEAD
7
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
8
+ =======
9
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
10
+ import {
11
+ Home,
12
+ Plug,
13
+ Settings,
14
+ Users,
15
+ <<<<<<< HEAD
16
+ <<<<<<< HEAD
17
+ =======
18
+ =======
19
+ import {
20
+ Home,
21
+ Plug,
22
+ Settings,
23
+ Users,
24
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
25
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
26
+ =======
27
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
28
+ Link as LinkIcon,
29
+ ChevronRight,
30
+ Menu,
31
+ X,
32
+ <<<<<<< HEAD
33
+ <<<<<<< HEAD
34
+ =======
35
+ <<<<<<< HEAD
36
+ <<<<<<< HEAD
37
+ =======
38
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
39
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
40
+ =======
41
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
42
+ Zap,
43
+ BarChart3,
44
+ Code,
45
+ Layers
46
+ <<<<<<< HEAD
47
+ <<<<<<< HEAD
48
+ =======
49
+ <<<<<<< HEAD
50
+ =======
51
+ Zap
52
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
53
+ =======
54
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
55
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
56
+ =======
57
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
58
+ } from 'lucide-react'
59
+ import { useFrigg } from '../hooks/useFrigg'
60
+ import StatusBadge from './StatusBadge'
61
+ import UserContextSwitcher from './UserContextSwitcher'
62
+ <<<<<<< HEAD
63
+ <<<<<<< HEAD
64
+ =======
65
+ <<<<<<< HEAD
66
+ <<<<<<< HEAD
67
+ =======
68
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
69
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
70
+ =======
71
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
72
+ import RepositoryPicker from './RepositoryPicker'
73
+ import { ThemeToggle } from './theme-toggle'
74
+ import { cn } from '../lib/utils'
75
+ import FriggLogo from '../assets/FriggLogo.svg'
76
+ <<<<<<< HEAD
77
+ <<<<<<< HEAD
78
+ =======
79
+ <<<<<<< HEAD
80
+ =======
81
+ import { cn } from '../utils/cn'
82
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
83
+ =======
84
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
85
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
86
+ =======
87
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
88
+
89
+ const Layout = ({ children }) => {
90
+ const location = useLocation()
91
+ const { status, environment, users, currentUser, switchUserContext } = useFrigg()
92
+ const [sidebarOpen, setSidebarOpen] = React.useState(false)
93
+ <<<<<<< HEAD
94
+ <<<<<<< HEAD
95
+ =======
96
+ <<<<<<< HEAD
97
+ <<<<<<< HEAD
98
+ =======
99
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
100
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
101
+ =======
102
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
103
+ const [currentRepository, setCurrentRepository] = React.useState(null)
104
+
105
+ // Get initial repository info from API
106
+ React.useEffect(() => {
107
+ const fetchCurrentRepo = async () => {
108
+ try {
109
+ const response = await fetch('/api/repository/current')
110
+ const data = await response.json()
111
+ if (data.data?.repository) {
112
+ setCurrentRepository(data.data.repository)
113
+ }
114
+ } catch (e) {
115
+ console.error('Failed to fetch repository info:', e)
116
+ }
117
+ }
118
+ fetchCurrentRepo()
119
+ }, [])
120
+ <<<<<<< HEAD
121
+ <<<<<<< HEAD
122
+ =======
123
+ <<<<<<< HEAD
124
+ =======
125
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
126
+ =======
127
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
128
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
129
+ =======
130
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
131
+
132
+ const navigation = [
133
+ { name: 'Dashboard', href: '/dashboard', icon: Home },
134
+ { name: 'Integrations', href: '/integrations', icon: Plug },
135
+ <<<<<<< HEAD
136
+ <<<<<<< HEAD
137
+ { name: 'Code Generation', href: '/code-generation', icon: Code },
138
+ =======
139
+ <<<<<<< HEAD
140
+ <<<<<<< HEAD
141
+ { name: 'Code Generation', href: '/code-generation', icon: Code },
142
+ =======
143
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
144
+ =======
145
+ { name: 'Code Generation', href: '/code-generation', icon: Code },
146
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
147
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
148
+ =======
149
+ { name: 'Code Generation', href: '/code-generation', icon: Code },
150
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
151
+ { name: 'Environment', href: '/environment', icon: Settings },
152
+ { name: 'Users', href: '/users', icon: Users },
153
+ { name: 'Connections', href: '/connections', icon: LinkIcon },
154
+ { name: 'Simulation', href: '/simulation', icon: Zap },
155
+ <<<<<<< HEAD
156
+ <<<<<<< HEAD
157
+ { name: 'Monitoring', href: '/monitoring', icon: BarChart3 },
158
+ =======
159
+ <<<<<<< HEAD
160
+ <<<<<<< HEAD
161
+ { name: 'Monitoring', href: '/monitoring', icon: BarChart3 },
162
+ =======
163
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
164
+ =======
165
+ { name: 'Monitoring', href: '/monitoring', icon: BarChart3 },
166
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
167
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
168
+ =======
169
+ { name: 'Monitoring', href: '/monitoring', icon: BarChart3 },
170
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
171
+ ]
172
+
173
+ const closeSidebar = () => setSidebarOpen(false)
174
+
175
+ return (
176
+ <<<<<<< HEAD
177
+ <<<<<<< HEAD
178
+ =======
179
+ <<<<<<< HEAD
180
+ <<<<<<< HEAD
181
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
182
+ =======
183
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
184
+ <div className="min-h-screen bg-background">
185
+ {/* Mobile sidebar overlay */}
186
+ {sidebarOpen && (
187
+ <div
188
+ className="fixed inset-0 z-40 bg-black/50 backdrop-blur-sm lg:hidden"
189
+ <<<<<<< HEAD
190
+ <<<<<<< HEAD
191
+ =======
192
+ =======
193
+ <div className="min-h-screen bg-gray-50">
194
+ {/* Mobile sidebar overlay */}
195
+ {sidebarOpen && (
196
+ <div
197
+ className="fixed inset-0 z-40 bg-black bg-opacity-50 lg:hidden"
198
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
199
+ =======
200
+ <div className="min-h-screen bg-background">
201
+ {/* Mobile sidebar overlay */}
202
+ {sidebarOpen && (
203
+ <div
204
+ className="fixed inset-0 z-40 bg-black/50 backdrop-blur-sm lg:hidden"
205
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
206
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
207
+ =======
208
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
209
+ onClick={closeSidebar}
210
+ />
211
+ )}
212
+
213
+ <<<<<<< HEAD
214
+ <<<<<<< HEAD
215
+ =======
216
+ <<<<<<< HEAD
217
+ <<<<<<< HEAD
218
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
219
+ =======
220
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
221
+ {/* Header with industrial design */}
222
+ <header className="fixed w-full top-0 z-30 bg-card/90 backdrop-blur-md border-b industrial-border industrial-shadow">
223
+ <div className="px-4 sm:px-6 lg:px-8">
224
+ <div className="flex justify-between items-center py-3">
225
+ <div className="flex items-center">
226
+ <button
227
+ onClick={() => setSidebarOpen(true)}
228
+ className="p-2 text-muted-foreground hover:text-foreground hover:bg-accent/50 industrial-transition lg:hidden sharp-button"
229
+ >
230
+ <Menu size={24} />
231
+ </button>
232
+
233
+ {/* Frigg Logo and Title */}
234
+ <div className="flex items-center gap-3 ml-2 lg:ml-0">
235
+ <img
236
+ src={FriggLogo}
237
+ alt="Frigg"
238
+ className="h-8 w-auto"
239
+ />
240
+ <div className="flex items-center gap-2">
241
+ <h1 className="text-xl font-bold text-foreground">
242
+ Frigg
243
+ </h1>
244
+ <span className="text-sm font-medium text-muted-foreground">
245
+ Management UI
246
+ </span>
247
+ </div>
248
+ </div>
249
+
250
+ <<<<<<< HEAD
251
+ <<<<<<< HEAD
252
+ =======
253
+ =======
254
+ {/* Header */}
255
+ <header className="bg-white shadow-sm border-b border-gray-200 fixed w-full top-0 z-30">
256
+ =======
257
+ {/* Header with industrial design */}
258
+ <header className="fixed w-full top-0 z-30 bg-card/90 backdrop-blur-md border-b industrial-border industrial-shadow">
259
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
260
+ <div className="px-4 sm:px-6 lg:px-8">
261
+ <div className="flex justify-between items-center py-3">
262
+ <div className="flex items-center">
263
+ <button
264
+ onClick={() => setSidebarOpen(true)}
265
+ className="p-2 text-muted-foreground hover:text-foreground hover:bg-accent/50 industrial-transition lg:hidden sharp-button"
266
+ >
267
+ <Menu size={24} />
268
+ </button>
269
+ <<<<<<< HEAD
270
+ <h1 className="text-2xl font-bold text-gray-900 ml-2 lg:ml-0">
271
+ Frigg Management UI
272
+ </h1>
273
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
274
+ =======
275
+
276
+ {/* Frigg Logo and Title */}
277
+ <div className="flex items-center gap-3 ml-2 lg:ml-0">
278
+ <img
279
+ src={FriggLogo}
280
+ alt="Frigg"
281
+ className="h-8 w-auto"
282
+ />
283
+ <div className="flex items-center gap-2">
284
+ <h1 className="text-xl font-bold text-foreground">
285
+ Frigg
286
+ </h1>
287
+ <span className="text-sm font-medium text-muted-foreground">
288
+ Management UI
289
+ </span>
290
+ </div>
291
+ </div>
292
+
293
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
294
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
295
+ =======
296
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
297
+ <div className="ml-4">
298
+ <StatusBadge status={status} />
299
+ </div>
300
+ </div>
301
+ <<<<<<< HEAD
302
+ <<<<<<< HEAD
303
+ =======
304
+ <<<<<<< HEAD
305
+ <<<<<<< HEAD
306
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
307
+ =======
308
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
309
+
310
+ <div className="flex items-center gap-3">
311
+ <RepositoryPicker
312
+ currentRepo={currentRepository}
313
+ onRepoChange={setCurrentRepository}
314
+ />
315
+ <UserContextSwitcher
316
+ <<<<<<< HEAD
317
+ <<<<<<< HEAD
318
+ =======
319
+ =======
320
+ <div className="flex items-center space-x-4">
321
+ =======
322
+
323
+ <div className="flex items-center gap-3">
324
+ <RepositoryPicker
325
+ currentRepo={currentRepository}
326
+ onRepoChange={setCurrentRepository}
327
+ />
328
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
329
+ <UserContextSwitcher
330
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
331
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
332
+ =======
333
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
334
+ users={users}
335
+ currentUser={currentUser}
336
+ onUserSwitch={switchUserContext}
337
+ />
338
+ <select
339
+ className="h-9 px-3 text-sm bg-background border industrial-border industrial-input focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:opacity-50 industrial-transition"
340
+ <<<<<<< HEAD
341
+ =======
342
+ <<<<<<< HEAD
343
+ <select
344
+ className="h-9 px-3 text-sm bg-background border industrial-border industrial-input focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:opacity-50 industrial-transition"
345
+ =======
346
+ <select
347
+ <<<<<<< HEAD
348
+ className="block w-32 py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 sm:text-sm"
349
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
350
+ =======
351
+ className="h-9 px-3 text-sm bg-background border industrial-border industrial-input focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:opacity-50 industrial-transition"
352
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
353
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
354
+ =======
355
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
356
+ value={environment}
357
+ disabled
358
+ >
359
+ <option value="local">Local</option>
360
+ <option value="staging">Staging</option>
361
+ <option value="production">Production</option>
362
+ </select>
363
+ <<<<<<< HEAD
364
+ <<<<<<< HEAD
365
+ <ThemeToggle />
366
+ =======
367
+ <<<<<<< HEAD
368
+ <<<<<<< HEAD
369
+ <ThemeToggle />
370
+ =======
371
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
372
+ =======
373
+ <ThemeToggle />
374
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
375
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
376
+ =======
377
+ <ThemeToggle />
378
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
379
+ </div>
380
+ </div>
381
+ </div>
382
+ </header>
383
+
384
+ <<<<<<< HEAD
385
+ <<<<<<< HEAD
386
+ =======
387
+ <<<<<<< HEAD
388
+ <<<<<<< HEAD
389
+ =======
390
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
391
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
392
+ =======
393
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
394
+ <div className="flex h-screen pt-14">
395
+ {/* Desktop Sidebar with industrial styling */}
396
+ <nav className="hidden lg:block w-64 bg-card border-r industrial-border industrial-shadow-lg">
397
+ <div className="px-3 py-4">
398
+ {/* Industrial accent line */}
399
+ <div className="h-1 w-full bg-gradient-to-r from-primary/20 via-primary to-primary/20 rounded-full mb-4" />
400
+
401
+ <ul className="space-y-1">
402
+ <<<<<<< HEAD
403
+ =======
404
+ <<<<<<< HEAD
405
+
406
+ <ul className="space-y-1">
407
+ =======
408
+ <div className="flex h-screen pt-16">
409
+ {/* Desktop Sidebar */}
410
+ <nav className="hidden lg:block w-64 bg-white shadow-sm border-r border-gray-200">
411
+ <div className="px-4 py-4">
412
+ <ul className="space-y-2">
413
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
414
+ =======
415
+
416
+ <ul className="space-y-1">
417
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
418
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
419
+ =======
420
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
421
+ {navigation.map((item) => {
422
+ const isActive = location.pathname === item.href
423
+ const Icon = item.icon
424
+ return (
425
+ <li key={item.name}>
426
+ <Link
427
+ to={item.href}
428
+ className={cn(
429
+ <<<<<<< HEAD
430
+ <<<<<<< HEAD
431
+ =======
432
+ <<<<<<< HEAD
433
+ <<<<<<< HEAD
434
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
435
+ =======
436
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
437
+ 'flex items-center px-3 py-2 text-sm font-medium industrial-transition group relative overflow-hidden sharp-button',
438
+ isActive
439
+ ? 'bg-primary text-primary-foreground shadow-md'
440
+ : 'text-muted-foreground hover:text-foreground hover:bg-accent'
441
+ )}
442
+ >
443
+ {/* Industrial hover effect */}
444
+ {!isActive && (
445
+ <div className="absolute inset-0 bg-gradient-to-r from-transparent via-primary/10 to-transparent translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-700" />
446
+ )}
447
+
448
+ <Icon size={18} className="mr-3" />
449
+ <<<<<<< HEAD
450
+ <<<<<<< HEAD
451
+ =======
452
+ =======
453
+ 'flex items-center px-4 py-2 text-sm font-medium rounded-md transition-colors group',
454
+ =======
455
+ 'flex items-center px-3 py-2 text-sm font-medium industrial-transition group relative overflow-hidden sharp-button',
456
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
457
+ isActive
458
+ ? 'bg-primary text-primary-foreground shadow-md'
459
+ : 'text-muted-foreground hover:text-foreground hover:bg-accent'
460
+ )}
461
+ >
462
+ <<<<<<< HEAD
463
+ <Icon size={20} className="mr-3" />
464
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
465
+ =======
466
+ {/* Industrial hover effect */}
467
+ {!isActive && (
468
+ <div className="absolute inset-0 bg-gradient-to-r from-transparent via-primary/10 to-transparent translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-700" />
469
+ )}
470
+
471
+ <Icon size={18} className="mr-3" />
472
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
473
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
474
+ =======
475
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
476
+ {item.name}
477
+ {isActive && (
478
+ <ChevronRight size={16} className="ml-auto" />
479
+ )}
480
+ </Link>
481
+ </li>
482
+ )
483
+ })}
484
+ </ul>
485
+ <<<<<<< HEAD
486
+ <<<<<<< HEAD
487
+
488
+ =======
489
+ <<<<<<< HEAD
490
+ <<<<<<< HEAD
491
+
492
+ =======
493
+
494
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
495
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
496
+ =======
497
+
498
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
499
+ {/* Bottom industrial accent */}
500
+ <div className="mt-8 pt-8 border-t industrial-border">
501
+ <div className="flex items-center justify-center text-muted-foreground">
502
+ <Layers size={16} className="mr-2" />
503
+ <span className="text-xs font-medium uppercase tracking-wider">
504
+ Powered by Frigg
505
+ </span>
506
+ </div>
507
+ </div>
508
+ <<<<<<< HEAD
509
+ <<<<<<< HEAD
510
+ =======
511
+ <<<<<<< HEAD
512
+ =======
513
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
514
+ =======
515
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
516
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
517
+ =======
518
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
519
+ </div>
520
+ </nav>
521
+
522
+ {/* Mobile Sidebar */}
523
+ <nav className={cn(
524
+ <<<<<<< HEAD
525
+ <<<<<<< HEAD
526
+ =======
527
+ <<<<<<< HEAD
528
+ <<<<<<< HEAD
529
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
530
+ =======
531
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
532
+ 'fixed inset-y-0 left-0 z-50 w-64 bg-card border-r industrial-border transform transition-transform duration-300 ease-in-out lg:hidden',
533
+ sidebarOpen ? 'translate-x-0' : '-translate-x-full'
534
+ )}>
535
+ <div className="px-3 py-4 pt-20">
536
+ <button
537
+ onClick={closeSidebar}
538
+ className="absolute top-4 right-4 p-2 text-muted-foreground hover:text-foreground hover:bg-accent industrial-transition sharp-button"
539
+ >
540
+ <X size={24} />
541
+ </button>
542
+
543
+ {/* Industrial accent line */}
544
+ <div className="h-1 w-full bg-gradient-to-r from-primary/20 via-primary to-primary/20 rounded-full mb-4" />
545
+
546
+ <ul className="space-y-1">
547
+ <<<<<<< HEAD
548
+ <<<<<<< HEAD
549
+ =======
550
+ =======
551
+ 'fixed inset-y-0 left-0 z-50 w-64 bg-white shadow-sm border-r border-gray-200 transform transition-transform duration-300 ease-in-out lg:hidden',
552
+ =======
553
+ 'fixed inset-y-0 left-0 z-50 w-64 bg-card border-r industrial-border transform transition-transform duration-300 ease-in-out lg:hidden',
554
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
555
+ sidebarOpen ? 'translate-x-0' : '-translate-x-full'
556
+ )}>
557
+ <div className="px-3 py-4 pt-20">
558
+ <button
559
+ onClick={closeSidebar}
560
+ className="absolute top-4 right-4 p-2 text-muted-foreground hover:text-foreground hover:bg-accent industrial-transition sharp-button"
561
+ >
562
+ <X size={24} />
563
+ </button>
564
+ <<<<<<< HEAD
565
+ <ul className="space-y-2">
566
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
567
+ =======
568
+
569
+ {/* Industrial accent line */}
570
+ <div className="h-1 w-full bg-gradient-to-r from-primary/20 via-primary to-primary/20 rounded-full mb-4" />
571
+
572
+ <ul className="space-y-1">
573
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
574
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
575
+ =======
576
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
577
+ {navigation.map((item) => {
578
+ const isActive = location.pathname === item.href
579
+ const Icon = item.icon
580
+ return (
581
+ <li key={item.name}>
582
+ <Link
583
+ to={item.href}
584
+ onClick={closeSidebar}
585
+ className={cn(
586
+ <<<<<<< HEAD
587
+ <<<<<<< HEAD
588
+ =======
589
+ <<<<<<< HEAD
590
+ <<<<<<< HEAD
591
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
592
+ =======
593
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
594
+ 'flex items-center px-3 py-2 text-sm font-medium industrial-transition group relative overflow-hidden sharp-button',
595
+ isActive
596
+ ? 'bg-primary text-primary-foreground shadow-md'
597
+ : 'text-muted-foreground hover:text-foreground hover:bg-accent'
598
+ )}
599
+ >
600
+ {/* Industrial hover effect */}
601
+ {!isActive && (
602
+ <div className="absolute inset-0 bg-gradient-to-r from-transparent via-primary/10 to-transparent translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-700" />
603
+ )}
604
+
605
+ <Icon size={18} className="mr-3" />
606
+ <<<<<<< HEAD
607
+ <<<<<<< HEAD
608
+ =======
609
+ =======
610
+ 'flex items-center px-4 py-2 text-sm font-medium rounded-md transition-colors group',
611
+ =======
612
+ 'flex items-center px-3 py-2 text-sm font-medium industrial-transition group relative overflow-hidden sharp-button',
613
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
614
+ isActive
615
+ ? 'bg-primary text-primary-foreground shadow-md'
616
+ : 'text-muted-foreground hover:text-foreground hover:bg-accent'
617
+ )}
618
+ >
619
+ <<<<<<< HEAD
620
+ <Icon size={20} className="mr-3" />
621
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
622
+ =======
623
+ {/* Industrial hover effect */}
624
+ {!isActive && (
625
+ <div className="absolute inset-0 bg-gradient-to-r from-transparent via-primary/10 to-transparent translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-700" />
626
+ )}
627
+
628
+ <Icon size={18} className="mr-3" />
629
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
630
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
631
+ =======
632
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
633
+ {item.name}
634
+ {isActive && (
635
+ <ChevronRight size={16} className="ml-auto" />
636
+ )}
637
+ </Link>
638
+ </li>
639
+ )
640
+ })}
641
+ </ul>
642
+ </div>
643
+ </nav>
644
+
645
+ <<<<<<< HEAD
646
+ <<<<<<< HEAD
647
+ =======
648
+ <<<<<<< HEAD
649
+ <<<<<<< HEAD
650
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
651
+ =======
652
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
653
+ {/* Main content with industrial styling */}
654
+ <main className="flex-1 overflow-y-auto bg-background">
655
+ <div className="p-4 sm:p-6 lg:p-8">
656
+ {/* Industrial grid pattern overlay */}
657
+ <div className="fixed inset-0 pointer-events-none opacity-[0.02] dark:opacity-[0.04]" style={{
658
+ backgroundImage: `linear-gradient(to right, hsl(var(--border)) 1px, transparent 1px),
659
+ linear-gradient(to bottom, hsl(var(--border)) 1px, transparent 1px)`,
660
+ backgroundSize: '20px 20px'
661
+ }} />
662
+
663
+ <div className="relative">
664
+ {children}
665
+ </div>
666
+ <<<<<<< HEAD
667
+ <<<<<<< HEAD
668
+ =======
669
+ =======
670
+ {/* Main content */}
671
+ <main className="flex-1 overflow-y-auto">
672
+ <div className="p-4 sm:p-6 lg:p-8">
673
+ {children}
674
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
675
+ =======
676
+ {/* Main content with industrial styling */}
677
+ <main className="flex-1 overflow-y-auto bg-background">
678
+ <div className="p-4 sm:p-6 lg:p-8">
679
+ {/* Industrial grid pattern overlay */}
680
+ <div className="fixed inset-0 pointer-events-none opacity-[0.02] dark:opacity-[0.04]" style={{
681
+ backgroundImage: `linear-gradient(to right, hsl(var(--border)) 1px, transparent 1px),
682
+ linear-gradient(to bottom, hsl(var(--border)) 1px, transparent 1px)`,
683
+ backgroundSize: '20px 20px'
684
+ }} />
685
+
686
+ <div className="relative">
687
+ {children}
688
+ </div>
689
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
690
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
691
+ =======
692
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
693
+ </div>
694
+ </main>
695
+ </div>
696
+ </div>
697
+ )
698
+ }
699
+
700
+ <<<<<<< HEAD
701
+ <<<<<<< HEAD
702
+ export { Layout }
703
+ =======
704
+ <<<<<<< HEAD
705
+ <<<<<<< HEAD
706
+ export { Layout }
707
+ =======
708
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
709
+ =======
710
+ export { Layout }
711
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
712
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
713
+ =======
714
+ export { Layout }
715
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
716
+ export default Layout