groove-dev 0.27.113 → 0.27.116
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.
- package/CENTRAL_COMMAND_REBUILD.md +689 -0
- package/EMBEDDING_DIAGNOSTIC.md +197 -0
- package/TRAINING_DATA_v4.md +6 -0
- package/node_modules/@groove-dev/cli/package.json +1 -1
- package/node_modules/@groove-dev/cli/src/commands/team.js +59 -2
- package/node_modules/@groove-dev/daemon/package.json +1 -1
- package/node_modules/@groove-dev/daemon/src/api.js +27 -2
- package/node_modules/@groove-dev/daemon/src/filewatcher.js +45 -0
- package/node_modules/@groove-dev/daemon/src/index.js +14 -2
- package/node_modules/@groove-dev/daemon/src/process.js +254 -208
- package/node_modules/@groove-dev/daemon/src/teams.js +143 -20
- package/node_modules/@groove-dev/daemon/src/tunnel-manager.js +78 -45
- package/node_modules/@groove-dev/gui/dist/assets/index-DdN9RVnC.css +1 -0
- package/node_modules/@groove-dev/gui/dist/assets/{index-BYh6iHqL.js → index-fq--PD7_.js} +1731 -1731
- package/node_modules/@groove-dev/gui/dist/index.html +2 -2
- package/node_modules/@groove-dev/gui/package.json +1 -1
- package/node_modules/@groove-dev/gui/src/components/agents/workspace-mode.jsx +0 -22
- package/node_modules/@groove-dev/gui/src/components/layout/status-bar.jsx +43 -45
- package/node_modules/@groove-dev/gui/src/components/settings/quick-connect.jsx +2 -1
- package/node_modules/@groove-dev/gui/src/components/teams/team-removal-dialog.jsx +156 -0
- package/node_modules/@groove-dev/gui/src/stores/groove.js +57 -12
- package/node_modules/@groove-dev/gui/src/views/agents.jsx +23 -4
- package/node_modules/@groove-dev/gui/src/views/editor.jsx +1 -20
- package/node_modules/@groove-dev/gui/src/views/teams.jsx +84 -5
- package/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/cli/src/commands/team.js +59 -2
- package/packages/daemon/package.json +1 -1
- package/packages/daemon/src/api.js +27 -2
- package/packages/daemon/src/filewatcher.js +45 -0
- package/packages/daemon/src/index.js +14 -2
- package/packages/daemon/src/process.js +254 -208
- package/packages/daemon/src/teams.js +143 -20
- package/packages/daemon/src/tunnel-manager.js +78 -45
- package/packages/gui/dist/assets/index-DdN9RVnC.css +1 -0
- package/packages/gui/dist/assets/{index-BYh6iHqL.js → index-fq--PD7_.js} +1731 -1731
- package/packages/gui/dist/index.html +2 -2
- package/packages/gui/package.json +1 -1
- package/packages/gui/src/components/agents/workspace-mode.jsx +0 -22
- package/packages/gui/src/components/layout/status-bar.jsx +43 -45
- package/packages/gui/src/components/settings/quick-connect.jsx +2 -1
- package/packages/gui/src/components/teams/team-removal-dialog.jsx +156 -0
- package/packages/gui/src/stores/groove.js +57 -12
- package/packages/gui/src/views/agents.jsx +23 -4
- package/packages/gui/src/views/editor.jsx +1 -20
- package/packages/gui/src/views/teams.jsx +84 -5
- package/TRAINING_DATA_v3.md +0 -11
- package/codex-test/offroad-nitro-racer/dist/assets/index-CuvdKK6U.js +0 -44
- package/codex-test/offroad-nitro-racer/dist/assets/index-DvHn2Thu.css +0 -1
- package/codex-test/offroad-nitro-racer/dist/index.html +0 -23
- package/codex-test/offroad-nitro-racer/index.html +0 -21
- package/codex-test/offroad-nitro-racer/package-lock.json +0 -841
- package/codex-test/offroad-nitro-racer/package.json +0 -15
- package/codex-test/offroad-nitro-racer/src/game/AI.ts +0 -28
- package/codex-test/offroad-nitro-racer/src/game/Audio.ts +0 -63
- package/codex-test/offroad-nitro-racer/src/game/Car.ts +0 -247
- package/codex-test/offroad-nitro-racer/src/game/Effects.ts +0 -62
- package/codex-test/offroad-nitro-racer/src/game/Game.ts +0 -229
- package/codex-test/offroad-nitro-racer/src/game/Input.ts +0 -45
- package/codex-test/offroad-nitro-racer/src/game/Renderer.ts +0 -224
- package/codex-test/offroad-nitro-racer/src/game/Track.ts +0 -158
- package/codex-test/offroad-nitro-racer/src/game/UI.ts +0 -96
- package/codex-test/offroad-nitro-racer/src/game/math.ts +0 -42
- package/codex-test/offroad-nitro-racer/src/main.ts +0 -24
- package/codex-test/offroad-nitro-racer/src/style.css +0 -291
- package/codex-test/offroad-nitro-racer/src/vite-env.d.ts +0 -1
- package/codex-test/offroad-nitro-racer/tsconfig.json +0 -18
- package/codex-test/offroad-nitro-racer/vite.config.ts +0 -7
- package/node_modules/@groove-dev/gui/dist/assets/index-DAlSbVyK.css +0 -1
- package/packages/gui/dist/assets/index-DAlSbVyK.css +0 -1
|
@@ -12,17 +12,30 @@ import { cn } from '../lib/cn';
|
|
|
12
12
|
import {
|
|
13
13
|
Clock, CheckCircle, XCircle, AlertTriangle, ShieldCheck, ShieldX,
|
|
14
14
|
Users, Folder, Cpu, Trash2, Play, Pause, LayoutDashboard, ListChecks, Calendar,
|
|
15
|
+
Archive, RotateCcw, ChevronRight,
|
|
15
16
|
} from 'lucide-react';
|
|
17
|
+
import { TeamRemovalDialog, PurgeConfirmDialog } from '../components/teams/team-removal-dialog';
|
|
16
18
|
|
|
17
19
|
// ── Team Dashboard ────────────────────────────────────────────
|
|
18
20
|
function TeamsDashboard() {
|
|
19
21
|
const teams = useGrooveStore((s) => s.teams);
|
|
20
22
|
const agents = useGrooveStore((s) => s.agents);
|
|
21
23
|
const activeTeamId = useGrooveStore((s) => s.activeTeamId);
|
|
22
|
-
const
|
|
24
|
+
const archiveTeam = useGrooveStore((s) => s.archiveTeam);
|
|
25
|
+
const deleteTeamPermanently = useGrooveStore((s) => s.deleteTeamPermanently);
|
|
23
26
|
const addToast = useGrooveStore((s) => s.addToast);
|
|
27
|
+
const archivedTeams = useGrooveStore((s) => s.archivedTeams);
|
|
28
|
+
const fetchArchivedTeams = useGrooveStore((s) => s.fetchArchivedTeams);
|
|
29
|
+
const restoreTeam = useGrooveStore((s) => s.restoreTeam);
|
|
30
|
+
const purgeTeam = useGrooveStore((s) => s.purgeTeam);
|
|
24
31
|
|
|
25
|
-
|
|
32
|
+
const [archiveConfirm, setArchiveConfirm] = useState(null);
|
|
33
|
+
const [purgeConfirm, setPurgeConfirm] = useState(null);
|
|
34
|
+
const [archivedOpen, setArchivedOpen] = useState(false);
|
|
35
|
+
|
|
36
|
+
useEffect(() => { fetchArchivedTeams(); }, []);
|
|
37
|
+
|
|
38
|
+
if (teams.length === 0 && archivedTeams.length === 0) {
|
|
26
39
|
return (
|
|
27
40
|
<div className="flex-1 flex items-center justify-center">
|
|
28
41
|
<div className="text-center space-y-2">
|
|
@@ -70,14 +83,14 @@ function TeamsDashboard() {
|
|
|
70
83
|
</div>
|
|
71
84
|
<button
|
|
72
85
|
onClick={() => {
|
|
73
|
-
if (teamAgents.some((a) => a.status === 'running')) {
|
|
86
|
+
if (teamAgents.some((a) => a.status === 'running' || a.status === 'starting')) {
|
|
74
87
|
addToast('error', 'Stop running agents first');
|
|
75
88
|
return;
|
|
76
89
|
}
|
|
77
|
-
|
|
90
|
+
setArchiveConfirm(team);
|
|
78
91
|
}}
|
|
79
92
|
className="p-1.5 text-text-4 hover:text-danger rounded transition-colors cursor-pointer"
|
|
80
|
-
title="
|
|
93
|
+
title="Archive team"
|
|
81
94
|
>
|
|
82
95
|
<Trash2 size={13} />
|
|
83
96
|
</button>
|
|
@@ -112,6 +125,72 @@ function TeamsDashboard() {
|
|
|
112
125
|
);
|
|
113
126
|
})}
|
|
114
127
|
</div>
|
|
128
|
+
|
|
129
|
+
{/* Archived Teams */}
|
|
130
|
+
{archivedTeams.length > 0 && (
|
|
131
|
+
<div className="border-t border-border-subtle">
|
|
132
|
+
<button
|
|
133
|
+
onClick={() => setArchivedOpen(!archivedOpen)}
|
|
134
|
+
className="w-full flex items-center gap-2 px-5 py-3 text-left cursor-pointer hover:bg-surface-5/30 transition-colors"
|
|
135
|
+
>
|
|
136
|
+
<ChevronRight
|
|
137
|
+
size={12}
|
|
138
|
+
className={cn('text-text-4 transition-transform duration-200', archivedOpen && 'rotate-90')}
|
|
139
|
+
/>
|
|
140
|
+
<Archive size={13} className="text-text-3" />
|
|
141
|
+
<span className="text-xs font-semibold text-text-2 font-sans uppercase tracking-wider flex-1">
|
|
142
|
+
Archived Teams
|
|
143
|
+
</span>
|
|
144
|
+
<span className="text-2xs font-mono text-text-4 bg-surface-4 px-1.5 py-0.5 rounded">
|
|
145
|
+
{archivedTeams.length}
|
|
146
|
+
</span>
|
|
147
|
+
</button>
|
|
148
|
+
{archivedOpen && (
|
|
149
|
+
<div className="px-4 pb-4 space-y-2">
|
|
150
|
+
{archivedTeams.map((at) => (
|
|
151
|
+
<div key={at.id} className="flex items-center gap-3 px-3 py-2.5 rounded-md bg-surface-0 border border-border-subtle">
|
|
152
|
+
<Archive size={13} className="text-text-4 flex-shrink-0" />
|
|
153
|
+
<div className="flex-1 min-w-0">
|
|
154
|
+
<span className="text-xs font-semibold text-text-1 font-sans">{at.originalName || at.name}</span>
|
|
155
|
+
{(at.deletedAt || at.archivedAt) && (
|
|
156
|
+
<div className="text-2xs text-text-4 font-mono mt-0.5">Archived {timeAgo(at.deletedAt || at.archivedAt)}</div>
|
|
157
|
+
)}
|
|
158
|
+
</div>
|
|
159
|
+
<button
|
|
160
|
+
onClick={() => restoreTeam(at.id)}
|
|
161
|
+
className="p-1.5 text-text-3 hover:text-accent rounded transition-colors cursor-pointer"
|
|
162
|
+
title="Restore team"
|
|
163
|
+
>
|
|
164
|
+
<RotateCcw size={13} />
|
|
165
|
+
</button>
|
|
166
|
+
<button
|
|
167
|
+
onClick={() => setPurgeConfirm(at)}
|
|
168
|
+
className="p-1.5 text-text-4 hover:text-danger rounded transition-colors cursor-pointer"
|
|
169
|
+
title="Permanently delete"
|
|
170
|
+
>
|
|
171
|
+
<Trash2 size={13} />
|
|
172
|
+
</button>
|
|
173
|
+
</div>
|
|
174
|
+
))}
|
|
175
|
+
</div>
|
|
176
|
+
)}
|
|
177
|
+
</div>
|
|
178
|
+
)}
|
|
179
|
+
|
|
180
|
+
<TeamRemovalDialog
|
|
181
|
+
team={archiveConfirm}
|
|
182
|
+
open={!!archiveConfirm}
|
|
183
|
+
onOpenChange={(open) => !open && setArchiveConfirm(null)}
|
|
184
|
+
onArchive={archiveTeam}
|
|
185
|
+
onDeletePermanently={deleteTeamPermanently}
|
|
186
|
+
/>
|
|
187
|
+
|
|
188
|
+
<PurgeConfirmDialog
|
|
189
|
+
team={purgeConfirm}
|
|
190
|
+
open={!!purgeConfirm}
|
|
191
|
+
onOpenChange={(open) => !open && setPurgeConfirm(null)}
|
|
192
|
+
onPurge={purgeTeam}
|
|
193
|
+
/>
|
|
115
194
|
</div>
|
|
116
195
|
);
|
|
117
196
|
}
|