@builderos/create-agent-os 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/README.md +39 -0
  2. package/bin/cli.js +133 -0
  3. package/package.json +40 -0
  4. package/src/template/App.tsx +68 -0
  5. package/src/template/agent-os/commands/create-tasks/1-get-spec-requirements.md +19 -0
  6. package/src/template/agent-os/commands/create-tasks/2-create-tasks-list.md +234 -0
  7. package/src/template/agent-os/commands/create-tasks/create-tasks.md +254 -0
  8. package/src/template/agent-os/commands/design-screen/design-screen.md +32 -0
  9. package/src/template/agent-os/commands/design-shell/design-shell.md +34 -0
  10. package/src/template/agent-os/commands/design-tokens/design-tokens.md +36 -0
  11. package/src/template/agent-os/commands/export-product/export-product.md +44 -0
  12. package/src/template/agent-os/commands/implement-tasks/1-determine-tasks.md +13 -0
  13. package/src/template/agent-os/commands/implement-tasks/2-implement-tasks.md +63 -0
  14. package/src/template/agent-os/commands/implement-tasks/3-verify-implementation.md +113 -0
  15. package/src/template/agent-os/commands/implement-tasks/implement-tasks.md +207 -0
  16. package/src/template/agent-os/commands/initialize-design/initialize-design.md +54 -0
  17. package/src/template/agent-os/commands/orchestrate-tasks/orchestrate-tasks.md +180 -0
  18. package/src/template/agent-os/commands/plan-product/1-product-concept.md +53 -0
  19. package/src/template/agent-os/commands/plan-product/2-create-mission.md +78 -0
  20. package/src/template/agent-os/commands/plan-product/3-create-roadmap.md +73 -0
  21. package/src/template/agent-os/commands/plan-product/4-create-tech-stack.md +46 -0
  22. package/src/template/agent-os/commands/plan-product/plan-product.md +241 -0
  23. package/src/template/agent-os/commands/sample-data/sample-data.md +51 -0
  24. package/src/template/agent-os/commands/scaffold-implementation/scaffold-implementation.md +36 -0
  25. package/src/template/agent-os/commands/screenshot-design/screenshot-design.md +21 -0
  26. package/src/template/agent-os/commands/shape-spec/1-initialize-spec.md +95 -0
  27. package/src/template/agent-os/commands/shape-spec/2-shape-spec.md +300 -0
  28. package/src/template/agent-os/commands/shape-spec/shape-spec.md +40 -0
  29. package/src/template/agent-os/commands/write-spec/write-spec.md +134 -0
  30. package/src/template/agent-os/config.yml +13 -0
  31. package/src/template/agent-os/product/mission.md +29 -0
  32. package/src/template/agent-os/product/roadmap.md +9 -0
  33. package/src/template/agent-os/product/tech-stack.md +14 -0
  34. package/src/template/agent-os/specs/README.md +1 -0
  35. package/src/template/agent-os/standards/backend/api.md +10 -0
  36. package/src/template/agent-os/standards/backend/migrations.md +9 -0
  37. package/src/template/agent-os/standards/backend/models.md +10 -0
  38. package/src/template/agent-os/standards/backend/queries.md +9 -0
  39. package/src/template/agent-os/standards/frontend/accessibility.md +10 -0
  40. package/src/template/agent-os/standards/frontend/components.md +11 -0
  41. package/src/template/agent-os/standards/frontend/css.md +7 -0
  42. package/src/template/agent-os/standards/frontend/responsive.md +11 -0
  43. package/src/template/agent-os/standards/global/coding-style.md +10 -0
  44. package/src/template/agent-os/standards/global/commenting.md +5 -0
  45. package/src/template/agent-os/standards/global/conventions.md +11 -0
  46. package/src/template/agent-os/standards/global/error-handling.md +9 -0
  47. package/src/template/agent-os/standards/global/tech-stack.md +31 -0
  48. package/src/template/agent-os/standards/global/validation.md +11 -0
  49. package/src/template/agent-os/standards/testing/test-writing.md +9 -0
  50. package/src/template/agent-os-ui/README.md +73 -0
  51. package/src/template/agent-os-ui/package-lock.json +5028 -0
  52. package/src/template/agent-os-ui/package.json +52 -0
  53. package/src/template/agent-os-ui/postcss.config.js +6 -0
  54. package/src/template/agent-os-ui/src/components/AgentShell.tsx +31 -0
  55. package/src/template/agent-os-ui/src/components/AgentSidebar.tsx +65 -0
  56. package/src/template/agent-os-ui/src/components/GuidanceCard.tsx +75 -0
  57. package/src/template/agent-os-ui/src/components/MarkdownViewer.tsx +25 -0
  58. package/src/template/agent-os-ui/src/components/PromptButton.tsx +28 -0
  59. package/src/template/agent-os-ui/src/components/StatusItem.tsx +45 -0
  60. package/src/template/agent-os-ui/src/components/ThemeToggle.tsx +72 -0
  61. package/src/template/agent-os-ui/src/index.ts +11 -0
  62. package/src/template/agent-os-ui/src/style.css +3 -0
  63. package/src/template/agent-os-ui/tailwind.config.js +50 -0
  64. package/src/template/agent-os-ui/tsconfig.json +33 -0
  65. package/src/template/agent-os-ui/vite.config.ts +32 -0
  66. package/src/template/control-center/backend/backend.log +2 -0
  67. package/src/template/control-center/backend/index.js +228 -0
  68. package/src/template/control-center/backend/package-lock.json +951 -0
  69. package/src/template/control-center/backend/package.json +19 -0
  70. package/src/template/control-center/frontend/README.md +73 -0
  71. package/src/template/control-center/frontend/eslint.config.js +23 -0
  72. package/src/template/control-center/frontend/index.html +21 -0
  73. package/src/template/control-center/frontend/package-lock.json +5752 -0
  74. package/src/template/control-center/frontend/package.json +42 -0
  75. package/src/template/control-center/frontend/public/runtime-config.json +11 -0
  76. package/src/template/control-center/frontend/public/vite.svg +1 -0
  77. package/src/template/control-center/frontend/src/App.css +42 -0
  78. package/src/template/control-center/frontend/src/App.tsx +738 -0
  79. package/src/template/control-center/frontend/src/assets/react.svg +1 -0
  80. package/src/template/control-center/frontend/src/components/ThemeToggle.tsx +64 -0
  81. package/src/template/control-center/frontend/src/components/ui/ToastContext.tsx +81 -0
  82. package/src/template/control-center/frontend/src/index.css +194 -0
  83. package/src/template/control-center/frontend/src/main.tsx +14 -0
  84. package/src/template/control-center/frontend/src/vite-env.d.ts +1 -0
  85. package/src/template/control-center/frontend/tsconfig.app.json +28 -0
  86. package/src/template/control-center/frontend/tsconfig.json +7 -0
  87. package/src/template/control-center/frontend/tsconfig.node.json +26 -0
  88. package/src/template/control-center/frontend/vite.config.ts +22 -0
  89. package/src/template/design/.claude/commands/design-os/data-model.md +122 -0
  90. package/src/template/design/.claude/commands/design-os/design-screen.md +309 -0
  91. package/src/template/design/.claude/commands/design-os/design-shell.md +238 -0
  92. package/src/template/design/.claude/commands/design-os/design-tokens.md +166 -0
  93. package/src/template/design/.claude/commands/design-os/export-product.md +1105 -0
  94. package/src/template/design/.claude/commands/design-os/product-roadmap.md +121 -0
  95. package/src/template/design/.claude/commands/design-os/product-vision.md +99 -0
  96. package/src/template/design/.claude/commands/design-os/sample-data.md +263 -0
  97. package/src/template/design/.claude/commands/design-os/screenshot-design.md +112 -0
  98. package/src/template/design/.claude/commands/design-os/shape-section.md +138 -0
  99. package/src/template/design/.claude/skills/frontend-design/SKILL.md +42 -0
  100. package/src/template/design/.github/CODE_OF_CONDUCT.md +5 -0
  101. package/src/template/design/.github/CONTRIBUTING.md +51 -0
  102. package/src/template/design/.github/ISSUE_TEMPLATE/config.yml +22 -0
  103. package/src/template/design/.github/PULL_REQUEST_TEMPLATE.md +20 -0
  104. package/src/template/design/.github/SECURITY.yml +5 -0
  105. package/src/template/design/.github/SUPPORT.md +19 -0
  106. package/src/template/design/.github/workflows/pr-decline.yml +135 -0
  107. package/src/template/design/.github/workflows/stale.yml +25 -0
  108. package/src/template/design/CHANGELOG.md +13 -0
  109. package/src/template/design/LICENSE +21 -0
  110. package/src/template/design/README.md +54 -0
  111. package/src/template/design/agents.md +218 -0
  112. package/src/template/design/claude.md +1 -0
  113. package/src/template/design/components.json +22 -0
  114. package/src/template/design/docs/codebase-implementation.md +153 -0
  115. package/src/template/design/docs/design-section.md +135 -0
  116. package/src/template/design/docs/export.md +149 -0
  117. package/src/template/design/docs/getting-started.md +59 -0
  118. package/src/template/design/docs/index.md +56 -0
  119. package/src/template/design/docs/product-planning.md +113 -0
  120. package/src/template/design/docs/requirements.md +22 -0
  121. package/src/template/design/docs/usage.md +62 -0
  122. package/src/template/design/eslint.config.js +23 -0
  123. package/src/template/design/index.html +21 -0
  124. package/src/template/design/package-lock.json +5473 -0
  125. package/src/template/design/package.json +47 -0
  126. package/src/template/design/product-plan.zip +0 -0
  127. package/src/template/design/public/vite.svg +1 -0
  128. package/src/template/design/src/assets/react.svg +1 -0
  129. package/src/template/design/src/components/AppLayout.tsx +95 -0
  130. package/src/template/design/src/components/DataCard.tsx +139 -0
  131. package/src/template/design/src/components/DataModelPage.tsx +120 -0
  132. package/src/template/design/src/components/DesignPage.tsx +284 -0
  133. package/src/template/design/src/components/EmptyState.tsx +155 -0
  134. package/src/template/design/src/components/ExportPage.tsx +344 -0
  135. package/src/template/design/src/components/NextPhaseButton.tsx +33 -0
  136. package/src/template/design/src/components/PhaseNav.tsx +152 -0
  137. package/src/template/design/src/components/PhaseWarningBanner.tsx +81 -0
  138. package/src/template/design/src/components/ProductOverviewCard.tsx +102 -0
  139. package/src/template/design/src/components/ProductPage.tsx +97 -0
  140. package/src/template/design/src/components/ScreenDesignPage.tsx +370 -0
  141. package/src/template/design/src/components/ScreenDesignsCard.tsx +49 -0
  142. package/src/template/design/src/components/SectionPage.tsx +256 -0
  143. package/src/template/design/src/components/SectionsCard.tsx +47 -0
  144. package/src/template/design/src/components/SectionsPage.tsx +181 -0
  145. package/src/template/design/src/components/ShellCard.tsx +85 -0
  146. package/src/template/design/src/components/ShellDesignPage.tsx +242 -0
  147. package/src/template/design/src/components/SpecCard.tsx +121 -0
  148. package/src/template/design/src/components/StepIndicator.tsx +75 -0
  149. package/src/template/design/src/components/ThemeToggle.tsx +86 -0
  150. package/src/template/design/src/components/ui/ToastContext.tsx +81 -0
  151. package/src/template/design/src/components/ui/avatar.tsx +53 -0
  152. package/src/template/design/src/components/ui/badge.tsx +46 -0
  153. package/src/template/design/src/components/ui/button.tsx +60 -0
  154. package/src/template/design/src/components/ui/card.tsx +92 -0
  155. package/src/template/design/src/components/ui/collapsible.tsx +48 -0
  156. package/src/template/design/src/components/ui/dialog.tsx +143 -0
  157. package/src/template/design/src/components/ui/dropdown-menu.tsx +255 -0
  158. package/src/template/design/src/components/ui/input.tsx +21 -0
  159. package/src/template/design/src/components/ui/label.tsx +22 -0
  160. package/src/template/design/src/components/ui/progress.tsx +24 -0
  161. package/src/template/design/src/components/ui/scroll-area.tsx +18 -0
  162. package/src/template/design/src/components/ui/select.tsx +67 -0
  163. package/src/template/design/src/components/ui/separator.tsx +28 -0
  164. package/src/template/design/src/components/ui/sheet.tsx +137 -0
  165. package/src/template/design/src/components/ui/skeleton.tsx +13 -0
  166. package/src/template/design/src/components/ui/switch.tsx +46 -0
  167. package/src/template/design/src/components/ui/table.tsx +116 -0
  168. package/src/template/design/src/components/ui/tabs.tsx +64 -0
  169. package/src/template/design/src/index.css +284 -0
  170. package/src/template/design/src/lib/data-model-loader.ts +91 -0
  171. package/src/template/design/src/lib/design-system-loader.ts +101 -0
  172. package/src/template/design/src/lib/product-loader.ts +221 -0
  173. package/src/template/design/src/lib/router.tsx +52 -0
  174. package/src/template/design/src/lib/section-loader.ts +272 -0
  175. package/src/template/design/src/lib/shell-loader.ts +175 -0
  176. package/src/template/design/src/lib/utils.ts +6 -0
  177. package/src/template/design/src/main.tsx +15 -0
  178. package/src/template/design/src/sections/.gitkeep +0 -0
  179. package/src/template/design/src/sections/ai-orchestration-engine-oai/OrchestrationEngine.tsx +348 -0
  180. package/src/template/design/src/sections/core-platform-shell/AppShell.tsx +403 -0
  181. package/src/template/design/src/sections/gemini-live-integration/GeminiIntegration.tsx +332 -0
  182. package/src/template/design/src/sections/interactive-2d-canvas/WhiteboardCanvas.tsx +334 -0
  183. package/src/template/design/src/sections/participation-equity-tracker/EquityTracker.tsx +383 -0
  184. package/src/template/design/src/sections/persistent-memory-system/PersistentMemory.tsx +308 -0
  185. package/src/template/design/src/sections/real-time-communication-layer/VideoSession.tsx +342 -0
  186. package/src/template/design/src/sections/visual-intelligence-agents/VisualAgents.tsx +311 -0
  187. package/src/template/design/src/types/product.ts +97 -0
  188. package/src/template/design/src/types/section.ts +33 -0
  189. package/src/template/design/tsconfig.app.json +34 -0
  190. package/src/template/design/tsconfig.json +13 -0
  191. package/src/template/design/tsconfig.node.json +26 -0
  192. package/src/template/design/vite.config.ts +18 -0
  193. package/src/template/package.json +27 -0
  194. package/src/template/vite.config.ts +16 -0
@@ -0,0 +1,311 @@
1
+ import React, { useState } from 'react';
2
+ import {
3
+ Bot,
4
+ Sparkles,
5
+ Layers,
6
+ List,
7
+ Check,
8
+ X,
9
+ MoreHorizontal,
10
+ MousePointer2,
11
+ Brain,
12
+ Zap,
13
+ Clock
14
+ } from 'lucide-react';
15
+ import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter } from '@/components/ui/card';
16
+ import { Button } from '@/components/ui/button';
17
+ import { Badge } from '@/components/ui/badge';
18
+ import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
19
+ import { ScrollArea } from '@/components/ui/scroll-area';
20
+ import { Separator } from '@/components/ui/separator';
21
+ import { cn } from '@/lib/utils';
22
+
23
+ // Mock Data Types
24
+ interface Position {
25
+ x: number;
26
+ y: number;
27
+ }
28
+
29
+ interface Agent {
30
+ id: string;
31
+ name: string;
32
+ status: string;
33
+ currentAction: string;
34
+ position: Position;
35
+ color: string;
36
+ }
37
+
38
+ interface QueueItem {
39
+ id: string;
40
+ type: string;
41
+ content: string;
42
+ confidence: number;
43
+ generatedBy: string;
44
+ }
45
+
46
+ interface Cluster {
47
+ id: string;
48
+ label: string;
49
+ itemIds: string[];
50
+ bounds: { x: number, y: number, width: number, height: number };
51
+ color: string;
52
+ }
53
+
54
+ interface ActivityLog {
55
+ id: string;
56
+ timestamp: string;
57
+ agentId: string;
58
+ message: string;
59
+ }
60
+
61
+ const MOCK_DATA = {
62
+ "agents": [
63
+ {
64
+ "id": "ag_1",
65
+ "name": "Scribe Bot",
66
+ "status": "listening",
67
+ "currentAction": "Transcribing insights...",
68
+ "position": { "x": 120, "y": 280 },
69
+ "color": "indigo"
70
+ },
71
+ {
72
+ "id": "ag_2",
73
+ "name": "Cluster Bot",
74
+ "status": "working",
75
+ "currentAction": "grouping_notes",
76
+ "position": { "x": 450, "y": 180 },
77
+ "color": "emerald"
78
+ }
79
+ ] as Agent[],
80
+ "generationQueue": [
81
+ {
82
+ "id": "q_1",
83
+ "type": "sticky",
84
+ "content": "Risk: Legacy database migration timeline",
85
+ "confidence": 0.95,
86
+ "generatedBy": "ag_1"
87
+ },
88
+ {
89
+ "id": "q_2",
90
+ "type": "sticky",
91
+ "content": "Opportunity: Use GraphQL for new frontend",
92
+ "confidence": 0.88,
93
+ "generatedBy": "ag_1"
94
+ }
95
+ ] as QueueItem[],
96
+ "clusters": [
97
+ {
98
+ "id": "c_1",
99
+ "label": "Backend Architecture",
100
+ "itemIds": ["n_10", "n_11", "n_12"],
101
+ "bounds": { "x": 380, "y": 120, "width": 320, "height": 240 },
102
+ "color": "blue"
103
+ }
104
+ ] as Cluster[],
105
+ "activityLogs": [
106
+ {
107
+ "id": "l_1",
108
+ "timestamp": "2023-11-20T14:35:10Z",
109
+ "agentId": "ag_1",
110
+ "message": "Captured 2 new insights regarding 'Middleware'."
111
+ },
112
+ {
113
+ "id": "l_2",
114
+ "timestamp": "2023-11-20T14:35:15Z",
115
+ "agentId": "ag_2",
116
+ "message": "Detected theme 'API Security' (Similarity: 92%)."
117
+ },
118
+ {
119
+ "id": "l_3",
120
+ "timestamp": "2023-11-20T14:35:20Z",
121
+ "agentId": "ag_2",
122
+ "message": "Auto-grouped 3 items under 'Backend Architecture'."
123
+ }
124
+ ] as ActivityLog[]
125
+ };
126
+
127
+ const AgentCursor = ({ agent }: { agent: Agent }) => {
128
+ const colorMap = {
129
+ indigo: "text-indigo-600 fill-indigo-600 bg-indigo-100 border-indigo-200",
130
+ emerald: "text-emerald-600 fill-emerald-600 bg-emerald-100 border-emerald-200",
131
+ blue: "text-blue-600 fill-blue-600 bg-blue-100 border-blue-200",
132
+ };
133
+
134
+ const style = (colorMap as any)[agent.color] || colorMap.blue;
135
+
136
+ return (
137
+ <div
138
+ className="absolute flex flex-col items-start gap-1 transition-all duration-1000 ease-in-out z-20"
139
+ style={{ left: agent.position.x, top: agent.position.y }}
140
+ >
141
+ <MousePointer2 className={cn("h-5 w-5 -rotate-12", style.split(" ")[0], style.split(" ")[1])} />
142
+ <div className={cn("text-[10px] font-medium px-2 py-0.5 rounded-full shadow-sm border whitespace-nowrap flex items-center gap-1", style.split(" ").slice(2).join(" "))}>
143
+ {agent.name}
144
+ {agent.status === 'working' && <span className="animate-spin text-xs">⚙️</span>}
145
+ </div>
146
+ </div>
147
+ );
148
+ };
149
+
150
+ export default function VisualAgents() {
151
+ const [queue, setQueue] = useState(MOCK_DATA.generationQueue);
152
+
153
+ const handleApprove = (id: string) => {
154
+ setQueue(prev => prev.filter(item => item.id !== id));
155
+ };
156
+
157
+ return (
158
+ <div className="flex h-screen w-full bg-stone-50 dark:bg-stone-950 font-sans overflow-hidden">
159
+
160
+ {/* Canvas Area */}
161
+ <div className="flex-1 relative overflow-hidden bg-stone-100 dark:bg-stone-900/50">
162
+ {/* Grid Pattern */}
163
+ <div className="absolute inset-0 opacity-[0.2]"
164
+ style={{ backgroundImage: 'radial-gradient(#a1a1aa 1px, transparent 1px)', backgroundSize: '20px 20px' }}
165
+ />
166
+
167
+ {/* Mock Existing Notes (Background) */}
168
+ <div className="absolute top-40 left-32 w-32 h-32 bg-yellow-100 dark:bg-yellow-900/20 shadow-sm border border-yellow-200 dark:border-yellow-800 p-2 rotate-1 text-[10px] text-stone-600 dark:text-stone-400 font-handwriting">
169
+ Need to clarify the user roles before starting the sprint.
170
+ </div>
171
+ <div className="absolute top-80 left-96 w-32 h-32 bg-yellow-100 dark:bg-yellow-900/20 shadow-sm border border-yellow-200 dark:border-yellow-800 p-2 -rotate-2 text-[10px] text-stone-600 dark:text-stone-400 font-handwriting">
172
+ Auth service needs an update.
173
+ </div>
174
+
175
+ {/* Clusters */}
176
+ {MOCK_DATA.clusters.map(cluster => (
177
+ <div
178
+ key={cluster.id}
179
+ className="absolute border-2 border-dashed border-blue-300 dark:border-blue-700 rounded-3xl bg-blue-50/30 dark:bg-blue-900/10 flex flex-col items-center justify-start pt-2"
180
+ style={{
181
+ left: cluster.bounds.x,
182
+ top: cluster.bounds.y,
183
+ width: cluster.bounds.width,
184
+ height: cluster.bounds.height
185
+ }}
186
+ >
187
+ <span className="bg-blue-100 dark:bg-blue-900/50 text-blue-700 dark:text-blue-300 text-[10px] font-bold px-2 py-0.5 rounded-full mb-2">
188
+ {cluster.label}
189
+ </span>
190
+ {/* Mock Items inside cluster */}
191
+ <div className="grid grid-cols-2 gap-4 w-full px-4">
192
+ <div className="w-full bg-white dark:bg-stone-800 shadow-sm p-2 text-[8px] h-16 border border-stone-200 dark:border-stone-700">Microservices</div>
193
+ <div className="w-full bg-white dark:bg-stone-800 shadow-sm p-2 text-[8px] h-16 border border-stone-200 dark:border-stone-700">API Gateway</div>
194
+ <div className="w-full bg-white dark:bg-stone-800 shadow-sm p-2 text-[8px] h-16 border border-stone-200 dark:border-stone-700">Database Sharding</div>
195
+ </div>
196
+ </div>
197
+ ))}
198
+
199
+ {/* Agents */}
200
+ {MOCK_DATA.agents.map(agent => (
201
+ <AgentCursor key={agent.id} agent={agent} />
202
+ ))}
203
+
204
+ {/* Floating Generation Queue */}
205
+ <div className="absolute top-6 right-6 w-80 z-30 flex flex-col gap-3">
206
+ <div className="flex items-center gap-2 mb-1 pl-1">
207
+ <Sparkles size={16} className="text-indigo-500 fill-indigo-100" />
208
+ <h3 className="text-sm font-semibold text-stone-700 dark:text-stone-300 shadow-sm bg-white/50 dark:bg-stone-900/50 backdrop-blur px-2 py-0.5 rounded">Insight Generation Queue</h3>
209
+ </div>
210
+
211
+ {queue.map(item => (
212
+ <div key={item.id} className="bg-white dark:bg-stone-900 border border-indigo-100 dark:border-indigo-900/30 shadow-lg rounded-lg overflow-hidden animate-in slide-in-from-right-10 fade-in duration-500">
213
+ <div className="p-3">
214
+ <div className="flex justify-between items-start mb-2">
215
+ <Badge variant="outline" className="text-[10px] font-normal border-indigo-200 text-indigo-600 bg-indigo-50 dark:bg-indigo-900/20">
216
+ {item.type}
217
+ </Badge>
218
+ <span className="text-[10px] text-stone-400">{Math.round(item.confidence * 100)}% conf</span>
219
+ </div>
220
+ <p className="text-sm text-stone-800 dark:text-stone-200 font-medium leading-snug">
221
+ "{item.content}"
222
+ </p>
223
+ </div>
224
+ <div className="flex border-t border-indigo-50 dark:border-indigo-900/20">
225
+ <button className="flex-1 py-2 text-xs font-medium text-stone-500 hover:bg-stone-50 dark:hover:bg-stone-800 transition-colors" onClick={() => handleApprove(item.id)}>
226
+ <X size={14} className="inline mr-1" /> Dismiss
227
+ </button>
228
+ <div className="w-px bg-indigo-50 dark:bg-indigo-900/20" />
229
+ <button
230
+ className="flex-1 py-2 text-xs font-medium text-indigo-600 hover:bg-indigo-50 dark:hover:bg-indigo-900/20 transition-colors"
231
+ onClick={() => handleApprove(item.id)}
232
+ >
233
+ <Check size={14} className="inline mr-1" /> Add to Canvas
234
+ </button>
235
+ </div>
236
+ </div>
237
+ ))}
238
+ {queue.length === 0 && (
239
+ <div className="bg-white/50 dark:bg-stone-800/50 backdrop-blur border border-stone-200 dark:border-stone-700 rounded-lg p-4 text-center text-xs text-stone-500">
240
+ Waiting for new insights...
241
+ </div>
242
+ )}
243
+ </div>
244
+
245
+ </div>
246
+
247
+ {/* Right Sidebar: Agent Activity */}
248
+ <aside className="w-72 bg-white dark:bg-stone-900 border-l border-stone-200 dark:border-stone-800 flex flex-col z-10 shadow-xl">
249
+ <div className="p-4 border-b border-stone-100 dark:border-stone-800">
250
+ <h2 className="font-semibold flex items-center gap-2">
251
+ <Bot size={18} className="text-indigo-600" />
252
+ Active Agents
253
+ </h2>
254
+ </div>
255
+
256
+ <div className="p-4 space-y-4">
257
+ {MOCK_DATA.agents.map(agent => (
258
+ <div key={agent.id} className="flex items-start gap-3">
259
+ <div className={cn("w-8 h-8 rounded-lg flex items-center justify-center shrink-0",
260
+ agent.color === 'indigo' ? "bg-indigo-100 text-indigo-600" : "bg-emerald-100 text-emerald-600"
261
+ )}>
262
+ <Bot size={16} />
263
+ </div>
264
+ <div className="flex-1 min-w-0">
265
+ <div className="flex justify-between items-center mb-0.5">
266
+ <span className="text-sm font-medium">{agent.name}</span>
267
+ <span className="text-[10px] uppercase text-stone-400 font-bold">{agent.status}</span>
268
+ </div>
269
+ <p className="text-xs text-stone-500 truncate">{agent.currentAction}</p>
270
+ <div className="mt-2 h-1 w-full bg-stone-100 dark:bg-stone-800 rounded-full overflow-hidden">
271
+ <div className={cn("h-full w-2/3 animate-pulse",
272
+ agent.color === 'indigo' ? "bg-indigo-500" : "bg-emerald-500"
273
+ )} />
274
+ </div>
275
+ </div>
276
+ </div>
277
+ ))}
278
+ </div>
279
+
280
+ <Separator />
281
+
282
+ <div className="flex-1 flex flex-col min-h-0">
283
+ <div className="p-4 bg-stone-50 dark:bg-stone-900/50 border-b border-stone-100 dark:border-stone-800">
284
+ <h3 className="text-xs font-semibold uppercase tracking-wider text-stone-500">Activity Log</h3>
285
+ </div>
286
+ <ScrollArea className="flex-1">
287
+ <div className="divide-y divide-stone-100 dark:divide-stone-800">
288
+ {MOCK_DATA.activityLogs.map(log => (
289
+ <div key={log.id} className="p-4 text-xs">
290
+ <div className="flex items-center gap-2 mb-1 text-stone-400">
291
+ <Clock size={10} />
292
+ <span className="font-mono">
293
+ {new Date(log.timestamp).toLocaleTimeString([], { hour12: false, hour: '2-digit', minute: '2-digit' })}
294
+ </span>
295
+ </div>
296
+ <p className="text-stone-700 dark:text-stone-300 leading-relaxed">
297
+ <span className="font-medium text-emerald-600 dark:text-emerald-400">
298
+ {MOCK_DATA.agents.find(a => a.id === log.agentId)?.name || 'Agent'}:
299
+ </span>{' '}
300
+ {log.message}
301
+ </p>
302
+ </div>
303
+ ))}
304
+ </div>
305
+ </ScrollArea>
306
+ </div>
307
+
308
+ </aside>
309
+ </div>
310
+ );
311
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Product types for Design OS v2
3
+ */
4
+
5
+ // =============================================================================
6
+ // Product Overview
7
+ // =============================================================================
8
+
9
+ export interface Problem {
10
+ title: string
11
+ solution: string
12
+ }
13
+
14
+ export interface ProductOverview {
15
+ name: string
16
+ description: string
17
+ problems: Problem[]
18
+ features: string[]
19
+ }
20
+
21
+ // =============================================================================
22
+ // Product Roadmap
23
+ // =============================================================================
24
+
25
+ export interface Section {
26
+ id: string // slug derived from title
27
+ title: string
28
+ description: string
29
+ order: number
30
+ }
31
+
32
+ export interface ProductRoadmap {
33
+ sections: Section[]
34
+ }
35
+
36
+ // =============================================================================
37
+ // Data Model
38
+ // =============================================================================
39
+
40
+ export interface Entity {
41
+ name: string
42
+ description: string
43
+ }
44
+
45
+ export interface DataModel {
46
+ entities: Entity[]
47
+ relationships: string[]
48
+ }
49
+
50
+ // =============================================================================
51
+ // Design System
52
+ // =============================================================================
53
+
54
+ export interface ColorTokens {
55
+ primary: string
56
+ secondary: string
57
+ neutral: string
58
+ }
59
+
60
+ export interface TypographyTokens {
61
+ heading: string
62
+ body: string
63
+ mono: string
64
+ }
65
+
66
+ export interface DesignSystem {
67
+ colors: ColorTokens | null
68
+ typography: TypographyTokens | null
69
+ }
70
+
71
+ // =============================================================================
72
+ // Application Shell
73
+ // =============================================================================
74
+
75
+ export interface ShellSpec {
76
+ raw: string
77
+ overview: string
78
+ navigationItems: string[]
79
+ layoutPattern: string
80
+ }
81
+
82
+ export interface ShellInfo {
83
+ spec: ShellSpec | null
84
+ hasComponents: boolean
85
+ }
86
+
87
+ // =============================================================================
88
+ // Combined Product Data
89
+ // =============================================================================
90
+
91
+ export interface ProductData {
92
+ overview: ProductOverview | null
93
+ roadmap: ProductRoadmap | null
94
+ dataModel: DataModel | null
95
+ designSystem: DesignSystem | null
96
+ shell: ShellInfo | null
97
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Section types for Design OS v2
3
+ */
4
+
5
+ export interface SectionData {
6
+ sectionId: string
7
+ spec: string | null
8
+ specParsed: ParsedSpec | null
9
+ data: Record<string, unknown> | null
10
+ screenDesigns: ScreenDesignInfo[]
11
+ screenshots: ScreenshotInfo[]
12
+ }
13
+
14
+ export interface ParsedSpec {
15
+ title: string
16
+ overview: string
17
+ userFlows: string[]
18
+ uiRequirements: string[]
19
+ /** Whether screen designs for this section should be wrapped in the app shell. Defaults to true. */
20
+ useShell: boolean
21
+ }
22
+
23
+ export interface ScreenDesignInfo {
24
+ name: string
25
+ path: string
26
+ componentName: string
27
+ }
28
+
29
+ export interface ScreenshotInfo {
30
+ name: string
31
+ path: string
32
+ url: string
33
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
+ "target": "ES2022",
5
+ "useDefineForClassFields": true,
6
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
7
+ "module": "ESNext",
8
+ "types": ["vite/client"],
9
+ "skipLibCheck": true,
10
+
11
+ /* Bundler mode */
12
+ "moduleResolution": "bundler",
13
+ "allowImportingTsExtensions": true,
14
+ "verbatimModuleSyntax": true,
15
+ "moduleDetection": "force",
16
+ "noEmit": true,
17
+ "jsx": "react-jsx",
18
+
19
+ /* Linting */
20
+ "strict": true,
21
+ "noUnusedLocals": true,
22
+ "noUnusedParameters": true,
23
+ "erasableSyntaxOnly": true,
24
+ "noFallthroughCasesInSwitch": true,
25
+ "noUncheckedSideEffectImports": true,
26
+
27
+ /* Path aliases */
28
+ "baseUrl": ".",
29
+ "paths": {
30
+ "@/*": ["./src/*"]
31
+ }
32
+ },
33
+ "include": ["src"]
34
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ { "path": "./tsconfig.app.json" },
5
+ { "path": "./tsconfig.node.json" }
6
+ ],
7
+ "compilerOptions": {
8
+ "baseUrl": ".",
9
+ "paths": {
10
+ "@/*": ["./src/*"]
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
+ "target": "ES2023",
5
+ "lib": ["ES2023"],
6
+ "module": "ESNext",
7
+ "types": ["node"],
8
+ "skipLibCheck": true,
9
+
10
+ /* Bundler mode */
11
+ "moduleResolution": "bundler",
12
+ "allowImportingTsExtensions": true,
13
+ "verbatimModuleSyntax": true,
14
+ "moduleDetection": "force",
15
+ "noEmit": true,
16
+
17
+ /* Linting */
18
+ "strict": true,
19
+ "noUnusedLocals": true,
20
+ "noUnusedParameters": true,
21
+ "erasableSyntaxOnly": true,
22
+ "noFallthroughCasesInSwitch": true,
23
+ "noUncheckedSideEffectImports": true
24
+ },
25
+ "include": ["vite.config.ts"]
26
+ }
@@ -0,0 +1,18 @@
1
+ import { defineConfig } from 'vite'
2
+ import react from '@vitejs/plugin-react'
3
+ import tailwindcss from '@tailwindcss/vite'
4
+ import path from 'path'
5
+
6
+ // https://vite.dev/config/
7
+ export default defineConfig({
8
+ plugins: [react(), tailwindcss()],
9
+ resolve: {
10
+ alias: {
11
+ '@': path.resolve(__dirname, './src'),
12
+ },
13
+ },
14
+ server: {
15
+ port: parseInt(process.env.PORT || '3000'),
16
+ strictPort: true,
17
+ },
18
+ })
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "agent-os-app",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "workspaces": [
7
+ "app",
8
+ "control-center/frontend",
9
+ "control-center/backend",
10
+ "design-system",
11
+ "agent-os-ui"
12
+ ],
13
+ "scripts": {
14
+ "dev": "npm run build:ui && npm run start:all",
15
+ "build:ui": "cd agent-os-ui && npm run build",
16
+ "start:all": "concurrently \"npm run start:api\" \"npm run start:design\" \"npm run start:control\" \"npm run start:app\"",
17
+ "start:api": "cd control-center/backend && PORT=3003 npm start",
18
+ "start:design": "cd design-system && npm run dev -- --port 3000",
19
+ "start:control": "cd control-center/frontend && npm run dev -- --port 3001",
20
+ "start:app": "cd app && npm run dev -- --port 3002",
21
+ "build": "npm run build --workspaces",
22
+ "test": "npm run test --workspaces"
23
+ },
24
+ "devDependencies": {
25
+ "concurrently": "^8.2.2"
26
+ }
27
+ }
@@ -0,0 +1,16 @@
1
+ import { defineConfig } from 'vite'
2
+ import react from '@vitejs/plugin-react'
3
+ import path from 'path'
4
+
5
+ // https://vitejs.dev/config/
6
+ export default defineConfig({
7
+ plugins: [react()],
8
+ resolve: {
9
+ alias: {
10
+ // Robustness: Force usage of the local node_modules' React to prevent duplicates
11
+ // when using linked packages or monorepos.
12
+ react: path.resolve('./node_modules/react'),
13
+ 'react-dom': path.resolve('./node_modules/react-dom'),
14
+ },
15
+ },
16
+ })