@cluesmith/codev 2.0.2 → 2.0.3

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 (209) hide show
  1. package/dashboard/dist/assets/{index-b38SaXk5.js → index-UsH9ixz1.js} +20 -20
  2. package/dashboard/dist/assets/index-UsH9ixz1.js.map +1 -0
  3. package/dashboard/dist/index.html +1 -1
  4. package/dist/agent-farm/cli.js +1 -1
  5. package/dist/agent-farm/cli.js.map +1 -1
  6. package/dist/agent-farm/commands/architect.d.ts +1 -1
  7. package/dist/agent-farm/commands/architect.js +3 -3
  8. package/dist/agent-farm/commands/architect.js.map +1 -1
  9. package/dist/agent-farm/commands/attach.js +1 -1
  10. package/dist/agent-farm/commands/attach.js.map +1 -1
  11. package/dist/agent-farm/commands/cleanup.js +6 -6
  12. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  13. package/dist/agent-farm/commands/open.js +5 -5
  14. package/dist/agent-farm/commands/open.js.map +1 -1
  15. package/dist/agent-farm/commands/send.js +5 -5
  16. package/dist/agent-farm/commands/send.js.map +1 -1
  17. package/dist/agent-farm/commands/shell.js +5 -5
  18. package/dist/agent-farm/commands/shell.js.map +1 -1
  19. package/dist/agent-farm/commands/spawn-worktree.d.ts +1 -1
  20. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  21. package/dist/agent-farm/commands/spawn-worktree.js +8 -8
  22. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  23. package/dist/agent-farm/commands/spawn.js +3 -3
  24. package/dist/agent-farm/commands/spawn.js.map +1 -1
  25. package/dist/agent-farm/commands/start.d.ts +4 -4
  26. package/dist/agent-farm/commands/start.js +16 -16
  27. package/dist/agent-farm/commands/start.js.map +1 -1
  28. package/dist/agent-farm/commands/status.d.ts +1 -1
  29. package/dist/agent-farm/commands/status.js +16 -16
  30. package/dist/agent-farm/commands/status.js.map +1 -1
  31. package/dist/agent-farm/commands/stop.d.ts +4 -4
  32. package/dist/agent-farm/commands/stop.js +9 -9
  33. package/dist/agent-farm/commands/stop.js.map +1 -1
  34. package/dist/agent-farm/db/index.d.ts.map +1 -1
  35. package/dist/agent-farm/db/index.js +82 -7
  36. package/dist/agent-farm/db/index.js.map +1 -1
  37. package/dist/agent-farm/db/schema.d.ts +2 -2
  38. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  39. package/dist/agent-farm/db/schema.js +21 -4
  40. package/dist/agent-farm/db/schema.js.map +1 -1
  41. package/dist/agent-farm/lib/tower-client.d.ts +20 -20
  42. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  43. package/dist/agent-farm/lib/tower-client.js +25 -25
  44. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  45. package/dist/agent-farm/lib/tunnel-client.d.ts +12 -2
  46. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
  47. package/dist/agent-farm/lib/tunnel-client.js +59 -1
  48. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  49. package/dist/agent-farm/servers/tower-instances.d.ts +18 -18
  50. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  51. package/dist/agent-farm/servers/tower-instances.js +89 -89
  52. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  53. package/dist/agent-farm/servers/tower-routes.d.ts +1 -1
  54. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  55. package/dist/agent-farm/servers/tower-routes.js +184 -162
  56. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  57. package/dist/agent-farm/servers/tower-server.js +23 -19
  58. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  59. package/dist/agent-farm/servers/tower-terminals.d.ts +27 -29
  60. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  61. package/dist/agent-farm/servers/tower-terminals.js +95 -116
  62. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  63. package/dist/agent-farm/servers/tower-tunnel.d.ts +2 -2
  64. package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
  65. package/dist/agent-farm/servers/tower-tunnel.js +12 -12
  66. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  67. package/dist/agent-farm/servers/tower-types.d.ts +8 -10
  68. package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
  69. package/dist/agent-farm/servers/tower-utils.d.ts +9 -9
  70. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  71. package/dist/agent-farm/servers/tower-utils.js +18 -18
  72. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  73. package/dist/agent-farm/servers/tower-websocket.d.ts +2 -2
  74. package/dist/agent-farm/servers/tower-websocket.js +14 -14
  75. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  76. package/dist/agent-farm/types.d.ts +2 -2
  77. package/dist/agent-farm/types.d.ts.map +1 -1
  78. package/dist/agent-farm/utils/config.d.ts +1 -1
  79. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  80. package/dist/agent-farm/utils/config.js +16 -16
  81. package/dist/agent-farm/utils/config.js.map +1 -1
  82. package/dist/agent-farm/utils/file-tabs.d.ts +3 -3
  83. package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -1
  84. package/dist/agent-farm/utils/file-tabs.js +9 -9
  85. package/dist/agent-farm/utils/file-tabs.js.map +1 -1
  86. package/dist/agent-farm/utils/gate-status.d.ts +2 -2
  87. package/dist/agent-farm/utils/gate-status.d.ts.map +1 -1
  88. package/dist/agent-farm/utils/gate-status.js +3 -3
  89. package/dist/agent-farm/utils/gate-status.js.map +1 -1
  90. package/dist/agent-farm/utils/index.d.ts +0 -1
  91. package/dist/agent-farm/utils/index.d.ts.map +1 -1
  92. package/dist/agent-farm/utils/index.js +0 -1
  93. package/dist/agent-farm/utils/index.js.map +1 -1
  94. package/dist/agent-farm/utils/notifications.d.ts +4 -4
  95. package/dist/agent-farm/utils/notifications.d.ts.map +1 -1
  96. package/dist/agent-farm/utils/notifications.js +18 -18
  97. package/dist/agent-farm/utils/notifications.js.map +1 -1
  98. package/dist/commands/adopt.d.ts +2 -2
  99. package/dist/commands/adopt.d.ts.map +1 -1
  100. package/dist/commands/adopt.js +13 -3
  101. package/dist/commands/adopt.js.map +1 -1
  102. package/dist/commands/consult/index.d.ts +1 -1
  103. package/dist/commands/consult/index.d.ts.map +1 -1
  104. package/dist/commands/consult/index.js +52 -51
  105. package/dist/commands/consult/index.js.map +1 -1
  106. package/dist/commands/doctor.js +6 -6
  107. package/dist/commands/doctor.js.map +1 -1
  108. package/dist/commands/import.js +4 -4
  109. package/dist/commands/import.js.map +1 -1
  110. package/dist/commands/init.d.ts +2 -2
  111. package/dist/commands/init.d.ts.map +1 -1
  112. package/dist/commands/init.js +13 -3
  113. package/dist/commands/init.js.map +1 -1
  114. package/dist/commands/porch/index.d.ts +6 -6
  115. package/dist/commands/porch/index.d.ts.map +1 -1
  116. package/dist/commands/porch/index.js +37 -37
  117. package/dist/commands/porch/index.js.map +1 -1
  118. package/dist/commands/porch/next.d.ts +1 -1
  119. package/dist/commands/porch/next.d.ts.map +1 -1
  120. package/dist/commands/porch/next.js +43 -40
  121. package/dist/commands/porch/next.js.map +1 -1
  122. package/dist/commands/porch/notify.d.ts +11 -0
  123. package/dist/commands/porch/notify.d.ts.map +1 -0
  124. package/dist/commands/porch/notify.js +30 -0
  125. package/dist/commands/porch/notify.js.map +1 -0
  126. package/dist/commands/porch/plan.d.ts +1 -1
  127. package/dist/commands/porch/plan.d.ts.map +1 -1
  128. package/dist/commands/porch/plan.js +3 -3
  129. package/dist/commands/porch/plan.js.map +1 -1
  130. package/dist/commands/porch/prompts.d.ts +1 -1
  131. package/dist/commands/porch/prompts.d.ts.map +1 -1
  132. package/dist/commands/porch/prompts.js +13 -13
  133. package/dist/commands/porch/prompts.js.map +1 -1
  134. package/dist/commands/porch/protocol.d.ts +1 -1
  135. package/dist/commands/porch/protocol.d.ts.map +1 -1
  136. package/dist/commands/porch/protocol.js +6 -6
  137. package/dist/commands/porch/protocol.js.map +1 -1
  138. package/dist/commands/porch/state.d.ts +6 -6
  139. package/dist/commands/porch/state.d.ts.map +1 -1
  140. package/dist/commands/porch/state.js +11 -11
  141. package/dist/commands/porch/state.js.map +1 -1
  142. package/dist/commands/update.d.ts.map +1 -1
  143. package/dist/commands/update.js +10 -1
  144. package/dist/commands/update.js.map +1 -1
  145. package/dist/lib/scaffold.d.ts +13 -0
  146. package/dist/lib/scaffold.d.ts.map +1 -1
  147. package/dist/lib/scaffold.js +34 -0
  148. package/dist/lib/scaffold.js.map +1 -1
  149. package/dist/lib/skeleton.d.ts +7 -7
  150. package/dist/lib/skeleton.d.ts.map +1 -1
  151. package/dist/lib/skeleton.js +10 -10
  152. package/dist/lib/skeleton.js.map +1 -1
  153. package/dist/terminal/pty-manager.d.ts +1 -1
  154. package/dist/terminal/pty-manager.d.ts.map +1 -1
  155. package/dist/terminal/pty-manager.js +3 -3
  156. package/dist/terminal/pty-manager.js.map +1 -1
  157. package/package.json +1 -1
  158. package/templates/open.html +13 -13
  159. package/templates/tower.html +54 -54
  160. package/templates/vendor/marked.min.js +6 -0
  161. package/templates/vendor/prism-bash.min.js +1 -0
  162. package/templates/vendor/prism-css.min.js +1 -0
  163. package/templates/vendor/prism-javascript.min.js +1 -0
  164. package/templates/vendor/prism-json.min.js +1 -0
  165. package/templates/vendor/prism-markdown.min.js +1 -0
  166. package/templates/vendor/prism-markup.min.js +1 -0
  167. package/templates/vendor/prism-python.min.js +1 -0
  168. package/templates/vendor/prism-tomorrow.min.css +1 -0
  169. package/templates/vendor/prism-typescript.min.js +1 -0
  170. package/templates/vendor/prism-yaml.min.js +1 -0
  171. package/templates/vendor/prism.min.js +1 -0
  172. package/templates/vendor/purify.min.js +3 -0
  173. package/dashboard/dist/assets/index-b38SaXk5.js.map +0 -1
  174. package/dist/agent-farm/hq-connector.d.ts +0 -19
  175. package/dist/agent-farm/hq-connector.d.ts.map +0 -1
  176. package/dist/agent-farm/hq-connector.js +0 -351
  177. package/dist/agent-farm/hq-connector.js.map +0 -1
  178. package/dist/agent-farm/utils/deps.d.ts +0 -51
  179. package/dist/agent-farm/utils/deps.d.ts.map +0 -1
  180. package/dist/agent-farm/utils/deps.js +0 -162
  181. package/dist/agent-farm/utils/deps.js.map +0 -1
  182. package/dist/agent-farm/utils/gate-watcher.d.ts +0 -38
  183. package/dist/agent-farm/utils/gate-watcher.d.ts.map +0 -1
  184. package/dist/agent-farm/utils/gate-watcher.js +0 -122
  185. package/dist/agent-farm/utils/gate-watcher.js.map +0 -1
  186. package/dist/agent-farm/utils/session.d.ts +0 -32
  187. package/dist/agent-farm/utils/session.d.ts.map +0 -1
  188. package/dist/agent-farm/utils/session.js +0 -57
  189. package/dist/agent-farm/utils/session.js.map +0 -1
  190. package/dist/lib/projectlist-parser.d.ts +0 -70
  191. package/dist/lib/projectlist-parser.d.ts.map +0 -1
  192. package/dist/lib/projectlist-parser.js +0 -200
  193. package/dist/lib/projectlist-parser.js.map +0 -1
  194. package/templates/dashboard/css/dialogs.css +0 -149
  195. package/templates/dashboard/css/files.css +0 -558
  196. package/templates/dashboard/css/layout.css +0 -133
  197. package/templates/dashboard/css/projects.css +0 -501
  198. package/templates/dashboard/css/statusbar.css +0 -23
  199. package/templates/dashboard/css/tabs.css +0 -314
  200. package/templates/dashboard/css/utilities.css +0 -50
  201. package/templates/dashboard/css/variables.css +0 -45
  202. package/templates/dashboard/index.html +0 -149
  203. package/templates/dashboard/js/dialogs.js +0 -368
  204. package/templates/dashboard/js/files.js +0 -448
  205. package/templates/dashboard/js/main.js +0 -476
  206. package/templates/dashboard/js/projects.js +0 -544
  207. package/templates/dashboard/js/state.js +0 -91
  208. package/templates/dashboard/js/tabs.js +0 -518
  209. package/templates/dashboard/js/utils.js +0 -191
@@ -1,314 +0,0 @@
1
- /* Tab Bar, Tab Buttons, Overflow Menu */
2
-
3
- /* Tab bar */
4
- .tab-bar {
5
- display: flex;
6
- align-items: center;
7
- background: var(--bg-secondary);
8
- border-bottom: 1px solid var(--border);
9
- min-height: 40px;
10
- overflow: visible; /* Allow overflow menu dropdown to be visible */
11
- position: relative; /* Position context for overflow menu */
12
- }
13
-
14
- .tabs-scroll {
15
- display: flex;
16
- overflow-x: auto;
17
- flex: 1;
18
- scrollbar-width: none;
19
- }
20
-
21
- .tabs-scroll::-webkit-scrollbar {
22
- display: none;
23
- }
24
-
25
- .tab {
26
- display: flex;
27
- align-items: center;
28
- gap: 6px;
29
- padding: 8px 12px;
30
- cursor: pointer;
31
- border-right: 1px solid var(--border);
32
- border-bottom: 2px solid transparent; /* Reserve space for active indicator */
33
- white-space: nowrap;
34
- flex-shrink: 0;
35
- position: relative;
36
- }
37
-
38
- .tab:hover {
39
- background: var(--tab-hover);
40
- }
41
-
42
- .tab.active {
43
- background: var(--bg-tertiary);
44
- border-bottom: 2px solid var(--accent); /* Blue accent line */
45
- }
46
-
47
- .tab.new-tab {
48
- animation: tab-pulse 0.5s ease-out;
49
- }
50
-
51
- @keyframes tab-pulse {
52
- 0% { background: var(--accent); }
53
- 100% { background: var(--tab-active); }
54
- }
55
-
56
- .tab .icon {
57
- font-size: 14px;
58
- }
59
-
60
- .tab .name {
61
- font-size: 13px;
62
- max-width: 120px;
63
- overflow: hidden;
64
- text-overflow: ellipsis;
65
- color: var(--text-secondary);
66
- }
67
-
68
- .tab.active .name {
69
- color: var(--text-primary);
70
- }
71
-
72
- .tab .status-dot {
73
- width: 6px;
74
- height: 6px;
75
- border-radius: 50%;
76
- }
77
-
78
- /* Shape modifiers for accessibility (not just color) */
79
- .tab .status-dot--diamond {
80
- border-radius: 1px;
81
- transform: rotate(45deg);
82
- }
83
-
84
- /* Ring shape for pr-ready (accessibility: distinct from circle) */
85
- .tab .status-dot--ring {
86
- box-shadow: inset 0 0 0 1.5px currentColor;
87
- background: transparent !important;
88
- color: var(--status-waiting);
89
- }
90
-
91
- /* Distinct animations per status category (spec 0019) */
92
- @keyframes status-pulse {
93
- /* Pulsing: Active/working (spawning, implementing) */
94
- 0%, 100% { opacity: 1; transform: scale(1); }
95
- 50% { opacity: 0.7; transform: scale(0.9); }
96
- }
97
-
98
- @keyframes status-blink-slow {
99
- /* Slow blink: Idle/waiting (pr-ready) */
100
- 0%, 100% { opacity: 1; }
101
- 50% { opacity: 0.3; }
102
- }
103
-
104
- @keyframes status-blink-fast {
105
- /* Fast blink: Error/blocked */
106
- 0%, 100% { opacity: 1; }
107
- 50% { opacity: 0.2; }
108
- }
109
-
110
- .tab .status-dot--pulse {
111
- animation: status-pulse 2s ease-in-out infinite;
112
- }
113
-
114
- .tab .status-dot--blink-slow {
115
- animation: status-blink-slow 3s ease-in-out infinite;
116
- }
117
-
118
- .tab .status-dot--blink-fast {
119
- animation: status-blink-fast 0.8s ease-in-out infinite;
120
- }
121
-
122
- /* Respect reduced motion preference (WCAG 2.3.3) */
123
- /* Motion-independent differentiators remain: diamond for blocked, ring for pr-ready */
124
- @media (prefers-reduced-motion: reduce) {
125
- .tab .status-dot--pulse,
126
- .tab .status-dot--blink-slow,
127
- .tab .status-dot--blink-fast {
128
- animation: none;
129
- }
130
- }
131
-
132
- .tab .close {
133
- opacity: 0.6; /* Always clearly visible */
134
- margin-left: 6px;
135
- font-size: 16px;
136
- font-weight: 500;
137
- color: var(--text-secondary);
138
- padding: 4px 8px;
139
- border-radius: 4px;
140
- cursor: pointer;
141
- line-height: 1;
142
- min-width: 24px;
143
- min-height: 24px;
144
- display: flex;
145
- align-items: center;
146
- justify-content: center;
147
- }
148
-
149
- .tab:hover .close {
150
- opacity: 0.9;
151
- }
152
-
153
- .tab .close:hover {
154
- opacity: 1;
155
- background: rgba(239, 68, 68, 0.2); /* Red tint on hover */
156
- color: #ef4444;
157
- }
158
-
159
- /* Add buttons */
160
- .add-buttons {
161
- display: flex;
162
- gap: 4px;
163
- padding: 0 8px;
164
- flex-shrink: 0;
165
- }
166
-
167
- .add-btn {
168
- padding: 4px 8px;
169
- border-radius: 4px;
170
- border: 1px dashed var(--border);
171
- background: transparent;
172
- color: var(--text-muted);
173
- cursor: pointer;
174
- font-size: 12px;
175
- display: flex;
176
- align-items: center;
177
- gap: 4px;
178
- }
179
-
180
- .add-btn:hover {
181
- border-style: solid;
182
- color: var(--text-secondary);
183
- background: var(--bg-tertiary);
184
- }
185
-
186
- /* Overflow indicator */
187
- .overflow-btn {
188
- padding: 8px 12px;
189
- background: var(--bg-tertiary);
190
- border: none;
191
- border-left: 1px solid var(--border);
192
- color: var(--text-secondary);
193
- cursor: pointer;
194
- display: none; /* Hidden by default, shown via JS */
195
- align-items: center;
196
- gap: 4px;
197
- flex-shrink: 0;
198
- }
199
-
200
- .overflow-btn:hover {
201
- background: var(--tab-hover);
202
- }
203
-
204
- .overflow-btn:focus {
205
- outline: 2px solid var(--accent);
206
- outline-offset: -2px;
207
- }
208
-
209
- .overflow-count {
210
- font-size: 11px;
211
- background: var(--accent);
212
- color: white;
213
- padding: 1px 5px;
214
- border-radius: 8px;
215
- }
216
-
217
- /* Overflow menu dropdown */
218
- .overflow-menu {
219
- position: absolute;
220
- right: 0;
221
- top: 100%;
222
- background: var(--bg-secondary);
223
- border: 1px solid var(--border);
224
- border-radius: 4px;
225
- box-shadow: 0 4px 12px rgba(0,0,0,0.3);
226
- max-height: 300px;
227
- overflow-y: auto;
228
- min-width: 200px;
229
- z-index: 100;
230
- }
231
-
232
- .overflow-menu.hidden {
233
- display: none;
234
- }
235
-
236
- .overflow-menu-item {
237
- padding: 8px 12px;
238
- cursor: pointer;
239
- display: flex;
240
- align-items: center;
241
- gap: 8px;
242
- font-size: 13px;
243
- }
244
-
245
- .overflow-menu-item:hover,
246
- .overflow-menu-item:focus {
247
- background: var(--tab-hover);
248
- outline: none;
249
- }
250
-
251
- .overflow-menu-item.active {
252
- background: var(--tab-active);
253
- border-left: 2px solid var(--accent);
254
- }
255
-
256
- .overflow-menu-item .icon {
257
- font-size: 14px;
258
- }
259
-
260
- .overflow-menu-item .name {
261
- flex: 1;
262
- overflow: hidden;
263
- text-overflow: ellipsis;
264
- white-space: nowrap;
265
- }
266
-
267
- .overflow-menu-item .open-external {
268
- opacity: 0.5;
269
- cursor: pointer;
270
- padding: 2px 6px;
271
- font-size: 12px;
272
- border-radius: 3px;
273
- }
274
-
275
- .overflow-menu-item .open-external:hover {
276
- opacity: 1;
277
- background: rgba(255, 255, 255, 0.1);
278
- }
279
-
280
- /* Tab content */
281
- .tab-content {
282
- flex: 1;
283
- display: flex;
284
- flex-direction: column;
285
- overflow: hidden;
286
- }
287
-
288
- .tab-content iframe {
289
- flex: 1;
290
- width: 100%;
291
- border: none;
292
- background: #000;
293
- }
294
-
295
- .empty-state {
296
- flex: 1;
297
- display: flex;
298
- flex-direction: column;
299
- align-items: center;
300
- justify-content: center;
301
- color: var(--text-muted);
302
- gap: 12px;
303
- }
304
-
305
- .empty-state .hint {
306
- font-size: 13px;
307
- text-align: center;
308
- max-width: 300px;
309
- }
310
-
311
- /* Projects tab without close button */
312
- .tab.tab-uncloseable .close {
313
- display: none;
314
- }
@@ -1,50 +0,0 @@
1
- /* Utility Classes and Miscellaneous Styles */
2
-
3
- /* Hidden utility */
4
- .hidden {
5
- display: none !important;
6
- }
7
-
8
- /* Accessibility: Screen reader only */
9
- .sr-only {
10
- position: absolute;
11
- width: 1px;
12
- height: 1px;
13
- padding: 0;
14
- margin: -1px;
15
- overflow: hidden;
16
- clip: rect(0, 0, 0, 0);
17
- white-space: nowrap;
18
- border: 0;
19
- }
20
-
21
- /* Focus visible for keyboard navigation */
22
- :focus-visible {
23
- outline: 2px solid var(--accent);
24
- outline-offset: 2px;
25
- }
26
-
27
- /* Scrollbar styling */
28
- ::-webkit-scrollbar {
29
- width: 8px;
30
- height: 8px;
31
- }
32
-
33
- ::-webkit-scrollbar-track {
34
- background: var(--bg-primary);
35
- }
36
-
37
- ::-webkit-scrollbar-thumb {
38
- background: var(--border);
39
- border-radius: 4px;
40
- }
41
-
42
- ::-webkit-scrollbar-thumb:hover {
43
- background: var(--text-muted);
44
- }
45
-
46
- /* Selection color */
47
- ::selection {
48
- background: var(--accent);
49
- color: white;
50
- }
@@ -1,45 +0,0 @@
1
- /* Dashboard CSS Variables */
2
-
3
- * {
4
- box-sizing: border-box;
5
- margin: 0;
6
- padding: 0;
7
- }
8
-
9
- :root {
10
- --bg-primary: #1a1a1a;
11
- --bg-secondary: #252525;
12
- --bg-tertiary: #2a2a2a;
13
- --border: #333;
14
- --text-primary: #fff;
15
- --text-secondary: #ccc;
16
- --text-muted: #666;
17
- --accent: #3b82f6;
18
- --tab-active: #333;
19
- --tab-hover: #2a2a2a;
20
- /* Status indicator colors per spec 0019 */
21
- --status-active: #22c55e; /* Green: spawning, implementing */
22
- --status-waiting: #eab308; /* Yellow: pr-ready (waiting for review) */
23
- --status-error: #ef4444; /* Red: blocked */
24
- --status-complete: #9e9e9e; /* Gray: complete */
25
- /* Project lifecycle status colors per spec 0045 */
26
- --project-conceived: #eab308; /* Yellow */
27
- --project-specified: #3b82f6; /* Blue */
28
- --project-planned: #3b82f6; /* Blue */
29
- --project-implementing: #f97316; /* Orange */
30
- --project-implemented: #a855f7; /* Purple */
31
- --project-committed: #22c55e; /* Green */
32
- --project-integrated: #9e9e9e; /* Gray */
33
- --project-abandoned: #ef4444; /* Red */
34
- --project-on-hold: #9e9e9e; /* Gray */
35
- }
36
-
37
- body {
38
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
39
- background: var(--bg-primary);
40
- color: var(--text-primary);
41
- height: 100vh;
42
- display: flex;
43
- flex-direction: column;
44
- overflow: hidden;
45
- }
@@ -1,149 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>AF: {{PROJECT_NAME}}</title>
7
- <!-- CSS files loaded in dependency order (relative paths for proxy compatibility) -->
8
- <link rel="stylesheet" href="dashboard/css/variables.css">
9
- <link rel="stylesheet" href="dashboard/css/layout.css">
10
- <link rel="stylesheet" href="dashboard/css/tabs.css">
11
- <link rel="stylesheet" href="dashboard/css/statusbar.css">
12
- <link rel="stylesheet" href="dashboard/css/dialogs.css">
13
- <link rel="stylesheet" href="dashboard/css/projects.css">
14
- <link rel="stylesheet" href="dashboard/css/files.css">
15
- <link rel="stylesheet" href="dashboard/css/utilities.css">
16
- </head>
17
- <body>
18
- <header class="header">
19
- <h1>Agent Farm - {{PROJECT_NAME}}</h1>
20
- </header>
21
-
22
- <main class="main">
23
- <!-- Left pane: Architect terminal -->
24
- <div class="left-pane">
25
- <div class="pane-header">
26
- <span class="status-dot" id="architect-status"></span>
27
- <span>Architect</span>
28
- </div>
29
- <div id="architect-content"></div>
30
- </div>
31
-
32
- <!-- Right pane: Tabbed interface -->
33
- <div class="right-pane">
34
- <div class="tab-bar">
35
- <div class="tabs-scroll" id="tabs-container"></div>
36
- <button class="overflow-btn" id="overflow-btn" onclick="toggleOverflowMenu()" aria-haspopup="true" aria-expanded="false" title="Show all tabs">
37
- <span>...</span>
38
- <span class="overflow-count" id="overflow-count">+0</span>
39
- </button>
40
- <div class="overflow-menu hidden" id="overflow-menu" role="menu"></div>
41
- </div>
42
- <div class="tab-content" id="tab-content"></div>
43
- </div>
44
- </main>
45
-
46
- <footer class="status-bar">
47
- <div class="status-item" id="status-architect">
48
- <span class="dot" style="background: var(--text-muted)"></span>
49
- <span>Architect: stopped</span>
50
- </div>
51
- <div class="status-item" id="status-builders">
52
- <span>0 builders</span>
53
- </div>
54
- <div class="status-item" id="status-shells">
55
- <span>0 shells</span>
56
- </div>
57
- <div class="status-item" id="status-files">
58
- <span>0 files</span>
59
- </div>
60
- </footer>
61
-
62
- <!-- File picker dialog -->
63
- <div class="dialog-overlay hidden" id="file-dialog">
64
- <div class="dialog">
65
- <h3>Open File</h3>
66
- <div class="quick-paths">
67
- <button class="quick-path" onclick="setFilePath('codev/specs/')">codev/specs/</button>
68
- <button class="quick-path" onclick="setFilePath('codev/plans/')">codev/plans/</button>
69
- <button class="quick-path" onclick="setFilePath('codev/reviews/')">codev/reviews/</button>
70
- </div>
71
- <input type="text" id="file-path-input" placeholder="Enter file path..." />
72
- <div class="dialog-actions">
73
- <button class="btn" onclick="hideFileDialog()">Cancel</button>
74
- <button class="btn" onclick="openFile()">Open</button>
75
- </div>
76
- </div>
77
- </div>
78
-
79
- <!-- Create file dialog (Bugfix #131) -->
80
- <div class="dialog-overlay hidden" id="create-file-dialog">
81
- <div class="dialog">
82
- <h3>Create New File</h3>
83
- <div class="quick-paths">
84
- <button class="quick-path" onclick="setCreateFilePath('codev/specs/')">codev/specs/</button>
85
- <button class="quick-path" onclick="setCreateFilePath('codev/plans/')">codev/plans/</button>
86
- <button class="quick-path" onclick="setCreateFilePath('src/')">src/</button>
87
- </div>
88
- <input type="text" id="create-file-path-input" placeholder="Enter file path (e.g., src/utils/helper.ts)" />
89
- <div class="dialog-actions">
90
- <button class="btn" onclick="hideCreateFileDialog()">Cancel</button>
91
- <button class="btn btn-primary" onclick="createFile()">Create</button>
92
- </div>
93
- </div>
94
- </div>
95
-
96
- <!-- Close confirmation dialog -->
97
- <div class="dialog-overlay hidden" id="close-dialog">
98
- <div class="dialog">
99
- <h3 id="close-dialog-title">Close tab?</h3>
100
- <p id="close-dialog-message" style="color: var(--text-secondary); margin-bottom: 16px; font-size: 14px;"></p>
101
- <div class="dialog-actions">
102
- <button class="btn" onclick="hideCloseDialog()">Cancel</button>
103
- <button class="btn btn-danger" onclick="confirmClose()">Close</button>
104
- </div>
105
- </div>
106
- </div>
107
-
108
- <!-- Context menu -->
109
- <div class="context-menu hidden" id="context-menu" role="menu">
110
- <div class="context-menu-item" role="menuitem" tabindex="0" data-action="openContextTab" onclick="openContextTab()" onkeydown="handleContextMenuKeydown(event)">Open in New Tab</div>
111
- <div class="context-menu-item" role="menuitem" tabindex="-1" data-action="reloadContextTab" id="context-reload" onclick="reloadContextTab()" onkeydown="handleContextMenuKeydown(event)">Reload</div>
112
- <div class="context-menu-item" role="menuitem" tabindex="-1" data-action="closeActiveTab" onclick="closeActiveTab()" onkeydown="handleContextMenuKeydown(event)">Close</div>
113
- <div class="context-menu-item" role="menuitem" tabindex="-1" data-action="closeOtherTabs" onclick="closeOtherTabs()" onkeydown="handleContextMenuKeydown(event)">Close Others</div>
114
- <div class="context-menu-item danger" role="menuitem" tabindex="-1" data-action="closeAllTabs" onclick="closeAllTabs()" onkeydown="handleContextMenuKeydown(event)">Close All</div>
115
- </div>
116
-
117
- <!-- Toast container -->
118
- <div class="toast-container" id="toast-container"></div>
119
-
120
- <!-- File search palette (Cmd+P) - Spec 0058 -->
121
- <div id="file-palette" class="file-palette hidden">
122
- <div class="file-palette-backdrop" onclick="closePalette()"></div>
123
- <div class="file-palette-container">
124
- <input type="text"
125
- id="palette-input"
126
- class="file-palette-input"
127
- placeholder="Search files by name..."
128
- oninput="onPaletteInput(this.value)"
129
- onkeydown="onPaletteKeydown(event)" />
130
- <div id="palette-results" class="file-palette-results"></div>
131
- </div>
132
- </div>
133
-
134
- <!-- State injection (replaced by server) -->
135
- <script>
136
- // STATE_INJECTION_POINT
137
- </script>
138
-
139
- <!-- JavaScript files loaded in dependency order -->
140
- <!-- JS files (relative paths for proxy compatibility) -->
141
- <script src="dashboard/js/state.js"></script>
142
- <script src="dashboard/js/utils.js"></script>
143
- <script src="dashboard/js/tabs.js"></script>
144
- <script src="dashboard/js/dialogs.js"></script>
145
- <script src="dashboard/js/projects.js"></script>
146
- <script src="dashboard/js/files.js"></script>
147
- <script src="dashboard/js/main.js"></script>
148
- </body>
149
- </html>