@friggframework/devtools 2.0.0--canary.398.dd443c7.0 → 2.0.0--canary.402.d2f4ae6.0

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 (164) 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/generate-command/__tests__/generate-command.test.js +312 -0
  11. package/frigg-cli/generate-command/azure-generator.js +43 -0
  12. package/frigg-cli/generate-command/gcp-generator.js +47 -0
  13. package/frigg-cli/generate-command/index.js +332 -0
  14. package/frigg-cli/generate-command/terraform-generator.js +555 -0
  15. package/frigg-cli/index.js +19 -1
  16. package/frigg-cli/init-command/backend-first-handler.js +756 -0
  17. package/frigg-cli/init-command/index.js +93 -0
  18. package/frigg-cli/init-command/template-handler.js +143 -0
  19. package/frigg-cli/package.json +51 -0
  20. package/frigg-cli/test/init-command.test.js +180 -0
  21. package/frigg-cli/test/npm-registry.test.js +319 -0
  22. package/frigg-cli/ui-command/index.js +154 -0
  23. package/frigg-cli/utils/app-resolver.js +319 -0
  24. package/frigg-cli/utils/backend-path.js +25 -0
  25. package/frigg-cli/utils/npm-registry.js +167 -0
  26. package/frigg-cli/utils/process-manager.js +199 -0
  27. package/frigg-cli/utils/repo-detection.js +405 -0
  28. package/infrastructure/serverless-template.js +177 -292
  29. package/management-ui/.eslintrc.js +22 -0
  30. package/management-ui/README.md +203 -0
  31. package/management-ui/components.json +21 -0
  32. package/management-ui/docs/phase2-integration-guide.md +320 -0
  33. package/management-ui/{dist/index.html → index.html} +1 -2
  34. package/management-ui/package-lock.json +16517 -0
  35. package/management-ui/package.json +76 -0
  36. package/management-ui/packages/devtools/frigg-cli/ui-command/index.js +302 -0
  37. package/management-ui/postcss.config.js +6 -0
  38. package/management-ui/server/api/backend.js +256 -0
  39. package/management-ui/server/api/cli.js +315 -0
  40. package/management-ui/server/api/codegen.js +663 -0
  41. package/management-ui/server/api/connections.js +857 -0
  42. package/management-ui/server/api/discovery.js +185 -0
  43. package/management-ui/server/api/environment/index.js +1 -0
  44. package/management-ui/server/api/environment/router.js +378 -0
  45. package/management-ui/server/api/environment.js +328 -0
  46. package/management-ui/server/api/integrations.js +876 -0
  47. package/management-ui/server/api/logs.js +248 -0
  48. package/management-ui/server/api/monitoring.js +282 -0
  49. package/management-ui/server/api/open-ide.js +31 -0
  50. package/management-ui/server/api/project.js +1029 -0
  51. package/management-ui/server/api/users/sessions.js +371 -0
  52. package/management-ui/server/api/users/simulation.js +254 -0
  53. package/management-ui/server/api/users.js +362 -0
  54. package/management-ui/server/api-contract.md +275 -0
  55. package/management-ui/server/index.js +873 -0
  56. package/management-ui/server/middleware/errorHandler.js +93 -0
  57. package/management-ui/server/middleware/security.js +32 -0
  58. package/management-ui/server/processManager.js +296 -0
  59. package/management-ui/server/server.js +346 -0
  60. package/management-ui/server/services/aws-monitor.js +413 -0
  61. package/management-ui/server/services/npm-registry.js +347 -0
  62. package/management-ui/server/services/template-engine.js +538 -0
  63. package/management-ui/server/utils/cliIntegration.js +220 -0
  64. package/management-ui/server/utils/environment/auditLogger.js +471 -0
  65. package/management-ui/server/utils/environment/awsParameterStore.js +264 -0
  66. package/management-ui/server/utils/environment/encryption.js +278 -0
  67. package/management-ui/server/utils/environment/envFileManager.js +286 -0
  68. package/management-ui/server/utils/import-commonjs.js +28 -0
  69. package/management-ui/server/utils/response.js +83 -0
  70. package/management-ui/server/websocket/handler.js +325 -0
  71. package/management-ui/src/App.jsx +109 -0
  72. package/management-ui/src/components/AppRouter.jsx +65 -0
  73. package/management-ui/src/components/Button.jsx +70 -0
  74. package/management-ui/src/components/Card.jsx +97 -0
  75. package/management-ui/src/components/EnvironmentCompare.jsx +400 -0
  76. package/management-ui/src/components/EnvironmentEditor.jsx +372 -0
  77. package/management-ui/src/components/EnvironmentImportExport.jsx +469 -0
  78. package/management-ui/src/components/EnvironmentSchema.jsx +491 -0
  79. package/management-ui/src/components/EnvironmentSecurity.jsx +463 -0
  80. package/management-ui/src/components/ErrorBoundary.jsx +73 -0
  81. package/management-ui/src/components/IntegrationCard.jsx +481 -0
  82. package/management-ui/src/components/IntegrationCardEnhanced.jsx +770 -0
  83. package/management-ui/src/components/IntegrationExplorer.jsx +379 -0
  84. package/management-ui/src/components/IntegrationStatus.jsx +336 -0
  85. package/management-ui/src/components/Layout.jsx +716 -0
  86. package/management-ui/src/components/LoadingSpinner.jsx +113 -0
  87. package/management-ui/src/components/RepositoryPicker.jsx +248 -0
  88. package/management-ui/src/components/SessionMonitor.jsx +350 -0
  89. package/management-ui/src/components/StatusBadge.jsx +208 -0
  90. package/management-ui/src/components/UserContextSwitcher.jsx +212 -0
  91. package/management-ui/src/components/UserSimulation.jsx +327 -0
  92. package/management-ui/src/components/Welcome.jsx +434 -0
  93. package/management-ui/src/components/codegen/APIEndpointGenerator.jsx +637 -0
  94. package/management-ui/src/components/codegen/APIModuleSelector.jsx +227 -0
  95. package/management-ui/src/components/codegen/CodeGenerationWizard.jsx +247 -0
  96. package/management-ui/src/components/codegen/CodePreviewEditor.jsx +316 -0
  97. package/management-ui/src/components/codegen/DynamicModuleForm.jsx +271 -0
  98. package/management-ui/src/components/codegen/FormBuilder.jsx +737 -0
  99. package/management-ui/src/components/codegen/IntegrationGenerator.jsx +855 -0
  100. package/management-ui/src/components/codegen/ProjectScaffoldWizard.jsx +797 -0
  101. package/management-ui/src/components/codegen/SchemaBuilder.jsx +303 -0
  102. package/management-ui/src/components/codegen/TemplateSelector.jsx +586 -0
  103. package/management-ui/src/components/codegen/index.js +10 -0
  104. package/management-ui/src/components/connections/ConnectionConfigForm.jsx +362 -0
  105. package/management-ui/src/components/connections/ConnectionHealthMonitor.jsx +182 -0
  106. package/management-ui/src/components/connections/ConnectionTester.jsx +200 -0
  107. package/management-ui/src/components/connections/EntityRelationshipMapper.jsx +292 -0
  108. package/management-ui/src/components/connections/OAuthFlow.jsx +204 -0
  109. package/management-ui/src/components/connections/index.js +5 -0
  110. package/management-ui/src/components/index.js +21 -0
  111. package/management-ui/src/components/monitoring/APIGatewayMetrics.jsx +222 -0
  112. package/management-ui/src/components/monitoring/LambdaMetrics.jsx +169 -0
  113. package/management-ui/src/components/monitoring/MetricsChart.jsx +197 -0
  114. package/management-ui/src/components/monitoring/MonitoringDashboard.jsx +393 -0
  115. package/management-ui/src/components/monitoring/SQSMetrics.jsx +246 -0
  116. package/management-ui/src/components/monitoring/index.js +6 -0
  117. package/management-ui/src/components/monitoring/monitoring.css +218 -0
  118. package/management-ui/src/components/theme-provider.jsx +52 -0
  119. package/management-ui/src/components/theme-toggle.jsx +39 -0
  120. package/management-ui/src/components/ui/badge.tsx +36 -0
  121. package/management-ui/src/components/ui/button.test.jsx +56 -0
  122. package/management-ui/src/components/ui/button.tsx +57 -0
  123. package/management-ui/src/components/ui/card.tsx +76 -0
  124. package/management-ui/src/components/ui/dropdown-menu.tsx +199 -0
  125. package/management-ui/src/components/ui/select.tsx +157 -0
  126. package/management-ui/src/components/ui/skeleton.jsx +15 -0
  127. package/management-ui/src/hooks/useFrigg.jsx +601 -0
  128. package/management-ui/src/hooks/useSocket.jsx +58 -0
  129. package/management-ui/src/index.css +193 -0
  130. package/management-ui/src/lib/utils.ts +6 -0
  131. package/management-ui/src/main.jsx +10 -0
  132. package/management-ui/src/pages/CodeGeneration.jsx +14 -0
  133. package/management-ui/src/pages/Connections.jsx +252 -0
  134. package/management-ui/src/pages/ConnectionsEnhanced.jsx +633 -0
  135. package/management-ui/src/pages/Dashboard.jsx +311 -0
  136. package/management-ui/src/pages/Environment.jsx +314 -0
  137. package/management-ui/src/pages/IntegrationConfigure.jsx +669 -0
  138. package/management-ui/src/pages/IntegrationDiscovery.jsx +567 -0
  139. package/management-ui/src/pages/IntegrationTest.jsx +742 -0
  140. package/management-ui/src/pages/Integrations.jsx +253 -0
  141. package/management-ui/src/pages/Monitoring.jsx +17 -0
  142. package/management-ui/src/pages/Simulation.jsx +155 -0
  143. package/management-ui/src/pages/Users.jsx +492 -0
  144. package/management-ui/src/services/api.js +41 -0
  145. package/management-ui/src/services/apiModuleService.js +193 -0
  146. package/management-ui/src/services/websocket-handlers.js +120 -0
  147. package/management-ui/src/test/api/project.test.js +273 -0
  148. package/management-ui/src/test/components/Welcome.test.jsx +378 -0
  149. package/management-ui/src/test/mocks/server.js +178 -0
  150. package/management-ui/src/test/setup.js +61 -0
  151. package/management-ui/src/test/utils/test-utils.jsx +134 -0
  152. package/management-ui/src/utils/repository.js +98 -0
  153. package/management-ui/src/utils/repository.test.js +118 -0
  154. package/management-ui/src/workflows/phase2-integration-workflows.js +884 -0
  155. package/management-ui/tailwind.config.js +63 -0
  156. package/management-ui/tsconfig.json +37 -0
  157. package/management-ui/tsconfig.node.json +10 -0
  158. package/management-ui/vite.config.js +26 -0
  159. package/management-ui/vitest.config.js +38 -0
  160. package/package.json +5 -5
  161. package/management-ui/dist/assets/index-BA21WgFa.js +0 -1221
  162. package/management-ui/dist/assets/index-CbM64Oba.js +0 -1221
  163. package/management-ui/dist/assets/index-CkvseXTC.css +0 -1
  164. /package/management-ui/{dist/assets/FriggLogo-B7Xx8ZW1.svg → src/assets/FriggLogo.svg} +0 -0
@@ -0,0 +1,481 @@
1
+ import React, { useState } from 'react'
2
+ import { Download, CheckCircle, ExternalLink, Settings, AlertCircle } from 'lucide-react'
3
+ <<<<<<< HEAD
4
+ <<<<<<< HEAD
5
+ =======
6
+ <<<<<<< HEAD
7
+ <<<<<<< HEAD
8
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
9
+ =======
10
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
11
+ import { Card, CardContent } from './ui/card'
12
+ import { Button } from './ui/button'
13
+ import LoadingSpinner from './LoadingSpinner'
14
+ import { cn } from '../lib/utils'
15
+
16
+ <<<<<<< HEAD
17
+ <<<<<<< HEAD
18
+ =======
19
+ const IntegrationCard = ({
20
+ integration,
21
+ onInstall,
22
+ onConfigure,
23
+ onUninstall,
24
+ installing = false,
25
+ className,
26
+ ...props
27
+ }) => {
28
+ const [showDetails, setShowDetails] = useState(false)
29
+
30
+ =======
31
+ import { Card, CardContent } from './Card'
32
+ import { Button } from './Button'
33
+ =======
34
+ import { Card, CardContent } from './ui/card'
35
+ import { Button } from './ui/button'
36
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
37
+ import LoadingSpinner from './LoadingSpinner'
38
+ import { cn } from '../lib/utils'
39
+
40
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
41
+ =======
42
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
43
+ const IntegrationCard = ({
44
+ integration,
45
+ onInstall,
46
+ onConfigure,
47
+ onUninstall,
48
+ installing = false,
49
+ className,
50
+ ...props
51
+ }) => {
52
+ const [showDetails, setShowDetails] = useState(false)
53
+
54
+ <<<<<<< HEAD
55
+ <<<<<<< HEAD
56
+ =======
57
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
58
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
59
+ =======
60
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
61
+ const isInstalled = integration.installed || integration.status === 'installed'
62
+ const isInstalling = installing || integration.status === 'installing'
63
+ const hasError = integration.status === 'error'
64
+
65
+ const handleInstall = async () => {
66
+ if (onInstall && !isInstalled && !isInstalling) {
67
+ await onInstall(integration.name)
68
+ }
69
+ }
70
+
71
+ const handleConfigure = () => {
72
+ if (onConfigure && isInstalled) {
73
+ onConfigure(integration.name)
74
+ }
75
+ }
76
+
77
+ const handleUninstall = async () => {
78
+ if (onUninstall && isInstalled) {
79
+ await onUninstall(integration.name)
80
+ }
81
+ }
82
+
83
+ <<<<<<< HEAD
84
+ <<<<<<< HEAD
85
+ =======
86
+ <<<<<<< HEAD
87
+ <<<<<<< HEAD
88
+ // Filter out invalid DOM props
89
+ const { onUpdate, onTest, uninstalling, updating, error, ...cardProps } = props
90
+
91
+ return (
92
+ <Card className={cn('hover:shadow-lg industrial-transition', className)} {...cardProps}>
93
+ =======
94
+ return (
95
+ <Card className={cn('hover:shadow-md transition-shadow', className)} {...props}>
96
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
97
+ =======
98
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
99
+ =======
100
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
101
+ // Filter out invalid DOM props
102
+ const { onUpdate, onTest, uninstalling, updating, error, ...cardProps } = props
103
+
104
+ return (
105
+ <Card className={cn('hover:shadow-lg industrial-transition', className)} {...cardProps}>
106
+ <<<<<<< HEAD
107
+ <<<<<<< HEAD
108
+ =======
109
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
110
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
111
+ =======
112
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
113
+ <CardContent className="p-6">
114
+ <div className="flex items-start justify-between mb-4">
115
+ <div className="flex-1">
116
+ <div className="flex items-center mb-2">
117
+ <<<<<<< HEAD
118
+ <<<<<<< HEAD
119
+ =======
120
+ <<<<<<< HEAD
121
+ <<<<<<< HEAD
122
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
123
+ =======
124
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
125
+ <h4 className="font-semibold text-foreground text-lg">
126
+ {integration.displayName || integration.name}
127
+ </h4>
128
+ {integration.version && (
129
+ <span className="ml-2 text-xs bg-muted text-muted-foreground px-2 py-1 sharp-badge">
130
+ <<<<<<< HEAD
131
+ <<<<<<< HEAD
132
+ =======
133
+ =======
134
+ <h4 className="font-semibold text-gray-900 text-lg">
135
+ {integration.displayName || integration.name}
136
+ </h4>
137
+ {integration.version && (
138
+ <span className="ml-2 text-xs bg-gray-100 text-gray-600 px-2 py-1 rounded">
139
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
140
+ =======
141
+ <h4 className="font-semibold text-foreground text-lg">
142
+ {integration.displayName || integration.name}
143
+ </h4>
144
+ {integration.version && (
145
+ <span className="ml-2 text-xs bg-muted text-muted-foreground px-2 py-1 sharp-badge">
146
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
147
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
148
+ =======
149
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
150
+ v{integration.version}
151
+ </span>
152
+ )}
153
+ </div>
154
+ <<<<<<< HEAD
155
+ <<<<<<< HEAD
156
+ <p className="text-sm text-muted-foreground mb-3">
157
+ {integration.description || 'No description available'}
158
+ </p>
159
+
160
+ =======
161
+ <<<<<<< HEAD
162
+ <<<<<<< HEAD
163
+ =======
164
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
165
+ <p className="text-sm text-muted-foreground mb-3">
166
+ {integration.description || 'No description available'}
167
+ </p>
168
+
169
+ <<<<<<< HEAD
170
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
171
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
172
+ =======
173
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
174
+ {integration.tags && integration.tags.length > 0 && (
175
+ <div className="flex flex-wrap gap-1 mb-3">
176
+ {integration.tags.map((tag, index) => (
177
+ <span
178
+ key={index}
179
+ <<<<<<< HEAD
180
+ <<<<<<< HEAD
181
+ className="text-xs bg-primary/10 text-primary px-2 py-1 sharp-badge"
182
+ =======
183
+ <<<<<<< HEAD
184
+ <<<<<<< HEAD
185
+ className="text-xs bg-primary/10 text-primary px-2 py-1 sharp-badge"
186
+ =======
187
+ className="text-xs bg-blue-100 text-blue-700 px-2 py-1 rounded-full"
188
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
189
+ =======
190
+ className="text-xs bg-primary/10 text-primary px-2 py-1 sharp-badge"
191
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
192
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
193
+ =======
194
+ className="text-xs bg-primary/10 text-primary px-2 py-1 sharp-badge"
195
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
196
+ >
197
+ {tag}
198
+ </span>
199
+ ))}
200
+ </div>
201
+ )}
202
+ </div>
203
+ <<<<<<< HEAD
204
+ <<<<<<< HEAD
205
+
206
+ =======
207
+ <<<<<<< HEAD
208
+
209
+ =======
210
+
211
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
212
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
213
+ =======
214
+
215
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
216
+ <div className="flex items-center ml-4">
217
+ {hasError && (
218
+ <AlertCircle size={20} className="text-red-500 mr-2" />
219
+ )}
220
+ {isInstalled && !hasError && (
221
+ <CheckCircle size={20} className="text-green-500 mr-2" />
222
+ )}
223
+ {isInstalling && (
224
+ <LoadingSpinner size="sm" className="mr-2" />
225
+ )}
226
+ </div>
227
+ </div>
228
+
229
+ <div className="flex items-center justify-between">
230
+ <div className="flex items-center space-x-2">
231
+ {!isInstalled && !isInstalling && (
232
+ <Button
233
+ size="sm"
234
+ onClick={handleInstall}
235
+ disabled={isInstalling}
236
+ className="inline-flex items-center"
237
+ >
238
+ <Download size={16} className="mr-1" />
239
+ Install
240
+ </Button>
241
+ )}
242
+ <<<<<<< HEAD
243
+ <<<<<<< HEAD
244
+
245
+ =======
246
+ <<<<<<< HEAD
247
+
248
+ =======
249
+
250
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
251
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
252
+ =======
253
+
254
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
255
+ {isInstalled && !hasError && (
256
+ <Button
257
+ size="sm"
258
+ variant="outline"
259
+ onClick={handleConfigure}
260
+ className="inline-flex items-center"
261
+ >
262
+ <Settings size={16} className="mr-1" />
263
+ Configure
264
+ </Button>
265
+ )}
266
+ <<<<<<< HEAD
267
+ <<<<<<< HEAD
268
+
269
+ =======
270
+ <<<<<<< HEAD
271
+
272
+ =======
273
+
274
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
275
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
276
+ =======
277
+
278
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
279
+ {isInstalling && (
280
+ <Button size="sm" disabled className="inline-flex items-center">
281
+ <LoadingSpinner size="sm" className="mr-1" />
282
+ Installing...
283
+ </Button>
284
+ )}
285
+ <<<<<<< HEAD
286
+ <<<<<<< HEAD
287
+
288
+ =======
289
+ <<<<<<< HEAD
290
+
291
+ =======
292
+
293
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
294
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
295
+ =======
296
+
297
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
298
+ {hasError && (
299
+ <Button
300
+ size="sm"
301
+ variant="destructive"
302
+ onClick={handleInstall}
303
+ className="inline-flex items-center"
304
+ >
305
+ <AlertCircle size={16} className="mr-1" />
306
+ Retry
307
+ </Button>
308
+ )}
309
+ </div>
310
+ <<<<<<< HEAD
311
+ <<<<<<< HEAD
312
+
313
+ =======
314
+ <<<<<<< HEAD
315
+
316
+ =======
317
+
318
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
319
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
320
+ =======
321
+
322
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
323
+ <div className="flex items-center space-x-2">
324
+ {integration.docsUrl && (
325
+ <Button
326
+ size="sm"
327
+ variant="ghost"
328
+ onClick={() => window.open(integration.docsUrl, '_blank')}
329
+ className="inline-flex items-center text-xs"
330
+ >
331
+ <ExternalLink size={14} className="mr-1" />
332
+ Docs
333
+ </Button>
334
+ )}
335
+ <<<<<<< HEAD
336
+ <<<<<<< HEAD
337
+
338
+ =======
339
+ <<<<<<< HEAD
340
+
341
+ =======
342
+
343
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
344
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
345
+ =======
346
+
347
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
348
+ {isInstalled && (
349
+ <Button
350
+ size="sm"
351
+ variant="ghost"
352
+ onClick={() => setShowDetails(!showDetails)}
353
+ className="text-xs"
354
+ >
355
+ {showDetails ? 'Less' : 'More'}
356
+ </Button>
357
+ )}
358
+ </div>
359
+ </div>
360
+
361
+ {showDetails && isInstalled && (
362
+ <<<<<<< HEAD
363
+ <<<<<<< HEAD
364
+ =======
365
+ <<<<<<< HEAD
366
+ <<<<<<< HEAD
367
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
368
+ =======
369
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
370
+ <div className="mt-4 pt-4 border-t border-border">
371
+ <div className="space-y-2 text-sm">
372
+ {integration.endpoints && (
373
+ <div>
374
+ <span className="font-medium text-foreground">Endpoints:</span>
375
+ <span className="ml-2 text-muted-foreground">{integration.endpoints.length}</span>
376
+ <<<<<<< HEAD
377
+ <<<<<<< HEAD
378
+ =======
379
+ =======
380
+ <div className="mt-4 pt-4 border-t border-gray-200">
381
+ <div className="space-y-2 text-sm">
382
+ {integration.endpoints && (
383
+ <div>
384
+ <span className="font-medium text-gray-700">Endpoints:</span>
385
+ <span className="ml-2 text-gray-600">{integration.endpoints.length}</span>
386
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
387
+ =======
388
+ <div className="mt-4 pt-4 border-t border-border">
389
+ <div className="space-y-2 text-sm">
390
+ {integration.endpoints && (
391
+ <div>
392
+ <span className="font-medium text-foreground">Endpoints:</span>
393
+ <span className="ml-2 text-muted-foreground">{integration.endpoints.length}</span>
394
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
395
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
396
+ =======
397
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
398
+ </div>
399
+ )}
400
+ {integration.lastUpdated && (
401
+ <div>
402
+ <<<<<<< HEAD
403
+ <<<<<<< HEAD
404
+ <span className="font-medium text-foreground">Last Updated:</span>
405
+ <span className="ml-2 text-muted-foreground">
406
+ =======
407
+ <<<<<<< HEAD
408
+ <<<<<<< HEAD
409
+ <span className="font-medium text-foreground">Last Updated:</span>
410
+ <span className="ml-2 text-muted-foreground">
411
+ =======
412
+ <span className="font-medium text-gray-700">Last Updated:</span>
413
+ <span className="ml-2 text-gray-600">
414
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
415
+ =======
416
+ <span className="font-medium text-foreground">Last Updated:</span>
417
+ <span className="ml-2 text-muted-foreground">
418
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
419
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
420
+ =======
421
+ <span className="font-medium text-foreground">Last Updated:</span>
422
+ <span className="ml-2 text-muted-foreground">
423
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
424
+ {new Date(integration.lastUpdated).toLocaleDateString()}
425
+ </span>
426
+ </div>
427
+ )}
428
+ {integration.connections && (
429
+ <div>
430
+ <<<<<<< HEAD
431
+ <<<<<<< HEAD
432
+ =======
433
+ <<<<<<< HEAD
434
+ <<<<<<< HEAD
435
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
436
+ =======
437
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
438
+ <span className="font-medium text-foreground">Active Connections:</span>
439
+ <span className="ml-2 text-muted-foreground">{integration.connections}</span>
440
+ </div>
441
+ )}
442
+ </div>
443
+ <<<<<<< HEAD
444
+ <<<<<<< HEAD
445
+
446
+ =======
447
+
448
+ =======
449
+ <span className="font-medium text-gray-700">Active Connections:</span>
450
+ <span className="ml-2 text-gray-600">{integration.connections}</span>
451
+ =======
452
+ <span className="font-medium text-foreground">Active Connections:</span>
453
+ <span className="ml-2 text-muted-foreground">{integration.connections}</span>
454
+ >>>>>>> f153939e (refactor: clean up CLI help display and remove unused dependencies)
455
+ </div>
456
+ )}
457
+ </div>
458
+
459
+ >>>>>>> 652520a5 (Claude Flow RFC related development)
460
+ >>>>>>> 860052b4 (feat: integrate complete management-ui and additional features)
461
+ =======
462
+
463
+ >>>>>>> 7e97f01c (fix: resolve ui-command merge conflicts and update package.json)
464
+ <div className="mt-3 flex justify-end">
465
+ <Button
466
+ size="sm"
467
+ variant="destructive"
468
+ onClick={handleUninstall}
469
+ className="inline-flex items-center text-xs"
470
+ >
471
+ Uninstall
472
+ </Button>
473
+ </div>
474
+ </div>
475
+ )}
476
+ </CardContent>
477
+ </Card>
478
+ )
479
+ }
480
+
481
+ export default IntegrationCard