groove-dev 0.27.44 → 0.27.47
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/default/groovedev-beta-auth-endpoint.md +166 -0
- package/node_modules/@groove-dev/cli/package.json +1 -1
- package/node_modules/@groove-dev/daemon/package.json +1 -1
- package/node_modules/@groove-dev/daemon/src/api.js +619 -0
- package/node_modules/@groove-dev/daemon/src/firstrun.js +11 -0
- package/node_modules/@groove-dev/daemon/src/index.js +28 -0
- package/node_modules/@groove-dev/daemon/src/integrations.js +2 -2
- package/node_modules/@groove-dev/daemon/src/providers/claude-code.js +1 -1
- package/node_modules/@groove-dev/daemon/src/providers/groove-network.js +114 -0
- package/node_modules/@groove-dev/daemon/src/providers/index.js +2 -0
- package/node_modules/@groove-dev/gui/dist/assets/index-B9oPxmNj.js +8607 -0
- package/node_modules/@groove-dev/gui/dist/assets/index-CyVj0fHl.css +1 -0
- 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/app.jsx +3 -0
- package/node_modules/@groove-dev/gui/src/components/layout/activity-bar.jsx +7 -2
- package/node_modules/@groove-dev/gui/src/components/network/network-status.jsx +164 -0
- package/node_modules/@groove-dev/gui/src/components/network/node-details.jsx +66 -0
- package/node_modules/@groove-dev/gui/src/components/network/node-toggle.jsx +172 -0
- package/node_modules/@groove-dev/gui/src/stores/groove.js +190 -0
- package/node_modules/@groove-dev/gui/src/views/network.jsx +227 -0
- package/node_modules/@groove-dev/gui/src/views/settings.jsx +93 -5
- package/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/daemon/package.json +1 -1
- package/packages/daemon/src/api.js +619 -0
- package/packages/daemon/src/firstrun.js +11 -0
- package/packages/daemon/src/index.js +28 -0
- package/packages/daemon/src/integrations.js +2 -2
- package/packages/daemon/src/providers/claude-code.js +1 -1
- package/packages/daemon/src/providers/groove-network.js +114 -0
- package/packages/daemon/src/providers/index.js +2 -0
- package/packages/gui/dist/assets/index-B9oPxmNj.js +8607 -0
- package/packages/gui/dist/assets/index-CyVj0fHl.css +1 -0
- package/packages/gui/dist/index.html +2 -2
- package/packages/gui/package.json +1 -1
- package/packages/gui/src/app.jsx +3 -0
- package/packages/gui/src/components/layout/activity-bar.jsx +7 -2
- package/packages/gui/src/components/network/network-status.jsx +164 -0
- package/packages/gui/src/components/network/node-details.jsx +66 -0
- package/packages/gui/src/components/network/node-toggle.jsx +172 -0
- package/packages/gui/src/stores/groove.js +190 -0
- package/packages/gui/src/views/network.jsx +227 -0
- package/packages/gui/src/views/settings.jsx +93 -5
- package/node_modules/@groove-dev/gui/dist/assets/index-B5Uor698.js +0 -8607
- package/node_modules/@groove-dev/gui/dist/assets/index-VGmIZurO.css +0 -1
- package/packages/gui/dist/assets/index-B5Uor698.js +0 -8607
- package/packages/gui/dist/assets/index-VGmIZurO.css +0 -1
|
@@ -15,7 +15,7 @@ import { fmtUptime } from '../lib/format';
|
|
|
15
15
|
import {
|
|
16
16
|
Key, Eye, EyeOff, Check, Cpu,
|
|
17
17
|
FolderOpen, FolderSearch, Users, Gauge,
|
|
18
|
-
ShieldCheck, Settings,
|
|
18
|
+
ShieldCheck, Settings, Lock,
|
|
19
19
|
Newspaper, Radio, Send, MessageSquare, MessageCircle,
|
|
20
20
|
Plus, Trash2, Plug, PlugZap, TestTube, X, HelpCircle, ExternalLink,
|
|
21
21
|
} from 'lucide-react';
|
|
@@ -940,6 +940,91 @@ function AddGatewayCard({ existingTypes, onAdd }) {
|
|
|
940
940
|
);
|
|
941
941
|
}
|
|
942
942
|
|
|
943
|
+
/* ── Early Access Section ─────────────────────────────────── */
|
|
944
|
+
|
|
945
|
+
function EarlyAccessSection() {
|
|
946
|
+
const networkUnlocked = useGrooveStore((s) => s.networkUnlocked);
|
|
947
|
+
const activateBeta = useGrooveStore((s) => s.activateBeta);
|
|
948
|
+
const deactivateBeta = useGrooveStore((s) => s.deactivateBeta);
|
|
949
|
+
const [code, setCode] = useState('');
|
|
950
|
+
const [submitting, setSubmitting] = useState(false);
|
|
951
|
+
const [error, setError] = useState('');
|
|
952
|
+
|
|
953
|
+
useEffect(() => {
|
|
954
|
+
if (!error) return;
|
|
955
|
+
const t = setTimeout(() => setError(''), 3000);
|
|
956
|
+
return () => clearTimeout(t);
|
|
957
|
+
}, [error]);
|
|
958
|
+
|
|
959
|
+
async function handleSubmit() {
|
|
960
|
+
const trimmed = code.trim();
|
|
961
|
+
if (!trimmed || submitting) return;
|
|
962
|
+
setSubmitting(true);
|
|
963
|
+
setError('');
|
|
964
|
+
try {
|
|
965
|
+
await activateBeta(trimmed);
|
|
966
|
+
setCode('');
|
|
967
|
+
} catch (err) {
|
|
968
|
+
setError(err.message || 'Invalid code');
|
|
969
|
+
} finally {
|
|
970
|
+
setSubmitting(false);
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
async function handleDeactivate() {
|
|
975
|
+
try { await deactivateBeta(); } catch { /* toast handled in store */ }
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
return (
|
|
979
|
+
<div>
|
|
980
|
+
<div className="flex items-center gap-2 mb-2.5 px-0.5">
|
|
981
|
+
<span className="text-2xs font-semibold text-text-3 font-sans uppercase tracking-wider">Early Access</span>
|
|
982
|
+
<div className="flex-1 h-px bg-border-subtle" />
|
|
983
|
+
</div>
|
|
984
|
+
<div className="rounded-lg border border-border-subtle bg-surface-1 px-4 py-3.5 max-w-md">
|
|
985
|
+
{networkUnlocked ? (
|
|
986
|
+
<div className="flex items-center gap-2.5">
|
|
987
|
+
<div className="w-6 h-6 rounded-full bg-success/10 flex items-center justify-center flex-shrink-0">
|
|
988
|
+
<Check size={12} className="text-success" />
|
|
989
|
+
</div>
|
|
990
|
+
<div className="flex-1 text-xs font-sans text-text-1">Early access enabled</div>
|
|
991
|
+
<button
|
|
992
|
+
onClick={handleDeactivate}
|
|
993
|
+
className="text-2xs text-text-4 hover:text-danger cursor-pointer font-sans"
|
|
994
|
+
>
|
|
995
|
+
Deactivate
|
|
996
|
+
</button>
|
|
997
|
+
</div>
|
|
998
|
+
) : (
|
|
999
|
+
<div className="flex items-center gap-2">
|
|
1000
|
+
<Lock size={12} className="text-text-4 flex-shrink-0" />
|
|
1001
|
+
<input
|
|
1002
|
+
value={code}
|
|
1003
|
+
onChange={(e) => setCode(e.target.value)}
|
|
1004
|
+
onKeyDown={(e) => e.key === 'Enter' && handleSubmit()}
|
|
1005
|
+
type="text"
|
|
1006
|
+
placeholder="Enter invite code"
|
|
1007
|
+
className="flex-1 h-8 px-2.5 text-xs bg-surface-0 border border-border rounded-md text-text-0 font-mono placeholder:text-text-4 focus:outline-none focus:ring-1 focus:ring-accent"
|
|
1008
|
+
/>
|
|
1009
|
+
<Button
|
|
1010
|
+
variant="primary"
|
|
1011
|
+
size="sm"
|
|
1012
|
+
onClick={handleSubmit}
|
|
1013
|
+
disabled={!code.trim() || submitting}
|
|
1014
|
+
className="h-8 text-xs px-3"
|
|
1015
|
+
>
|
|
1016
|
+
{submitting ? '...' : 'Submit'}
|
|
1017
|
+
</Button>
|
|
1018
|
+
</div>
|
|
1019
|
+
)}
|
|
1020
|
+
{error && !networkUnlocked && (
|
|
1021
|
+
<div className="mt-2 text-2xs text-danger font-sans">{error}</div>
|
|
1022
|
+
)}
|
|
1023
|
+
</div>
|
|
1024
|
+
</div>
|
|
1025
|
+
);
|
|
1026
|
+
}
|
|
1027
|
+
|
|
943
1028
|
/* ── Main Settings View ────────────────────────────────────── */
|
|
944
1029
|
|
|
945
1030
|
export default function SettingsView() {
|
|
@@ -996,7 +1081,8 @@ export default function SettingsView() {
|
|
|
996
1081
|
);
|
|
997
1082
|
}
|
|
998
1083
|
|
|
999
|
-
const
|
|
1084
|
+
const visibleProviders = providers.filter((p) => p.id !== 'groove-network');
|
|
1085
|
+
const connectedCount = visibleProviders.filter((p) => {
|
|
1000
1086
|
if (p.authType === 'local') return p.installed;
|
|
1001
1087
|
if (p.authType === 'subscription') return p.installed;
|
|
1002
1088
|
return p.installed && p.hasKey;
|
|
@@ -1032,10 +1118,10 @@ export default function SettingsView() {
|
|
|
1032
1118
|
<div className="flex items-center gap-2 mb-2.5 px-0.5">
|
|
1033
1119
|
<span className="text-2xs font-semibold text-text-3 font-sans uppercase tracking-wider">Providers</span>
|
|
1034
1120
|
<div className="flex-1 h-px bg-border-subtle" />
|
|
1035
|
-
<span className="text-2xs text-text-4 font-sans">{connectedCount}/{
|
|
1121
|
+
<span className="text-2xs text-text-4 font-sans">{connectedCount}/{visibleProviders.length} connected</span>
|
|
1036
1122
|
</div>
|
|
1037
1123
|
<div className="grid grid-cols-4 gap-3">
|
|
1038
|
-
{
|
|
1124
|
+
{visibleProviders.map((p) => (
|
|
1039
1125
|
<ProviderCard key={p.id} provider={p} onKeyChange={loadProviders} />
|
|
1040
1126
|
))}
|
|
1041
1127
|
</div>
|
|
@@ -1074,7 +1160,7 @@ export default function SettingsView() {
|
|
|
1074
1160
|
onChange={(e) => updateConfig('defaultProvider', e.target.value)}
|
|
1075
1161
|
className="w-full h-8 px-2.5 text-xs bg-surface-0 border border-border-subtle rounded-md text-text-0 font-mono focus:outline-none focus:ring-1 focus:ring-accent cursor-pointer"
|
|
1076
1162
|
>
|
|
1077
|
-
{
|
|
1163
|
+
{visibleProviders.filter((p) => p.installed && (p.authType === 'local' || p.authType === 'subscription' || p.hasKey)).map((p) => (
|
|
1078
1164
|
<option key={p.id} value={p.id}>{p.name}</option>
|
|
1079
1165
|
))}
|
|
1080
1166
|
</select>
|
|
@@ -1200,6 +1286,8 @@ export default function SettingsView() {
|
|
|
1200
1286
|
</div>
|
|
1201
1287
|
)}
|
|
1202
1288
|
|
|
1289
|
+
{/* ═══════ EARLY ACCESS ═══════ */}
|
|
1290
|
+
<EarlyAccessSection />
|
|
1203
1291
|
|
|
1204
1292
|
</div>
|
|
1205
1293
|
</ScrollArea>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "groove-dev",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.47",
|
|
4
4
|
"description": "Open-source agent orchestration layer — the AI company OS. Local model agent engine (GGUF/Ollama/llama-server), HuggingFace model browser, MCP integrations (Slack, Gmail, Stripe, 15+), agent scheduling (cron), business roles (CMO, CFO, EA). GUI dashboard, multi-agent coordination, zero cold-start, infinite sessions. Works with Claude Code, Codex, Gemini CLI, Ollama, any local model.",
|
|
5
5
|
"license": "FSL-1.1-Apache-2.0",
|
|
6
6
|
"author": "Groove Dev <hello@groovedev.ai> (https://groovedev.ai)",
|