groove-dev 0.27.45 → 0.27.48
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/CLAUDE.md +7 -0
- package/default/fix-beta-endpoint-deployment.md +68 -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 +1 -1
- package/node_modules/@groove-dev/daemon/src/integrations.js +2 -2
- package/node_modules/@groove-dev/daemon/src/providers/groove-network.js +3 -3
- package/node_modules/@groove-dev/gui/dist/assets/{index-BoIbnaqa.js → index-B9oPxmNj.js} +21 -21
- package/node_modules/@groove-dev/gui/dist/index.html +1 -1
- package/node_modules/@groove-dev/gui/package.json +1 -1
- package/node_modules/@groove-dev/gui/src/views/settings.jsx +5 -4
- 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 +1 -1
- package/packages/daemon/src/integrations.js +2 -2
- package/packages/daemon/src/providers/groove-network.js +3 -3
- package/packages/gui/dist/assets/{index-BoIbnaqa.js → index-B9oPxmNj.js} +21 -21
- package/packages/gui/dist/index.html +1 -1
- package/packages/gui/package.json +1 -1
- package/packages/gui/src/views/settings.jsx +5 -4
package/CLAUDE.md
CHANGED
|
@@ -263,3 +263,10 @@ Audit-driven release. Multi-agent orchestration system with 7 coordination layer
|
|
|
263
263
|
- Dashboard: routing donut, cache panel, context health gauges
|
|
264
264
|
- Monitor/QC agent mode (stay active, loop)
|
|
265
265
|
- Distribution: demo video, HN launch, Twitter content
|
|
266
|
+
|
|
267
|
+
<!-- GROOVE:START -->
|
|
268
|
+
## GROOVE Orchestration (auto-injected)
|
|
269
|
+
Active agents: 0
|
|
270
|
+
See AGENTS_REGISTRY.md for full agent state.
|
|
271
|
+
**Memory policy:** GROOVE manages project memory automatically. Do not read or write MEMORY.md or .groove/memory/ files directly.
|
|
272
|
+
<!-- GROOVE:END -->
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# BUG: POST /api/beta/validate returns 404 — not deployed
|
|
2
|
+
|
|
3
|
+
From: Groove UI Team
|
|
4
|
+
To: groovedev.ai Team
|
|
5
|
+
Date: 2026-04-18
|
|
6
|
+
Priority: BLOCKING
|
|
7
|
+
|
|
8
|
+
## The Problem
|
|
9
|
+
|
|
10
|
+
The beta invite code validation endpoint is returning 404 from nginx. The route handler was built (routes/beta.js, mounted in server.js) but it's not reachable in production.
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
curl -s https://groovedev.ai/api/beta/validate \
|
|
14
|
+
-H 'Content-Type: application/json' \
|
|
15
|
+
-d '{"code":"GROOVE-NET-ALPHA-001","machineId":"test"}'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
```html
|
|
20
|
+
<center>nginx/1.24.0 (Ubuntu)</center>
|
|
21
|
+
404
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
This is an nginx 404, not an app-level 404. The request never reaches the Node.js server.
|
|
25
|
+
|
|
26
|
+
## What Should Happen
|
|
27
|
+
|
|
28
|
+
The endpoint should return:
|
|
29
|
+
```json
|
|
30
|
+
{"valid": true, "expiresAt": "2026-07-18T00:00:00Z", "features": ["network-node", "network-consumer"], "message": "Welcome to the Groove Network beta"}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Or for invalid codes:
|
|
34
|
+
```json
|
|
35
|
+
{"valid": false, "message": "Invalid invite code"}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Likely Causes
|
|
39
|
+
|
|
40
|
+
1. Nginx isn't proxying /api/beta/* to the Node.js app — needs a location block or the existing proxy_pass doesn't cover this path
|
|
41
|
+
2. The Node.js server isn't running or was restarted without the new routes
|
|
42
|
+
3. The route is mounted at a different path than /api/beta/validate
|
|
43
|
+
|
|
44
|
+
## What to Check
|
|
45
|
+
|
|
46
|
+
1. Nginx config — does it proxy /api/* to the Node.js backend? If routes are whitelisted individually, add /api/beta/*
|
|
47
|
+
2. Is the Node.js server running? Check with: `pm2 status` or `systemctl status groovedev` (whatever process manager is used)
|
|
48
|
+
3. Did server.js get deployed with the beta route mount? Verify the deployed code includes: `app.use('/api/beta', betaRoutes)` or equivalent
|
|
49
|
+
4. Test locally on the server: `curl http://localhost:<app-port>/api/beta/validate -H 'Content-Type: application/json' -d '{"code":"test","machineId":"test"}'` — if this works, it's purely an nginx issue
|
|
50
|
+
|
|
51
|
+
## Impact
|
|
52
|
+
|
|
53
|
+
Every Groove app trying to activate a beta invite code fails. We have a hardcoded fallback for 5 ALPHA codes, but any codes generated through the admin portal (like GROOVE-NET-SWIFT-899) are completely broken until this is fixed. Beta testers cannot activate.
|
|
54
|
+
|
|
55
|
+
## Expected Nginx Config
|
|
56
|
+
|
|
57
|
+
Something like this should work (adjust upstream port):
|
|
58
|
+
```nginx
|
|
59
|
+
location /api/beta/ {
|
|
60
|
+
proxy_pass http://127.0.0.1:3000;
|
|
61
|
+
proxy_set_header Host $host;
|
|
62
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
63
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
64
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Or if there's already a catch-all /api/ proxy, make sure it's not being overridden by a more specific location block.
|
|
@@ -4002,7 +4002,7 @@ Keep responses concise. Help them think, don't lecture them about the system the
|
|
|
4002
4002
|
|
|
4003
4003
|
let proc;
|
|
4004
4004
|
try {
|
|
4005
|
-
proc = spawn('
|
|
4005
|
+
proc = spawn('python3.12', args, {
|
|
4006
4006
|
cwd: deployPath,
|
|
4007
4007
|
env: { ...process.env, PYTHONUNBUFFERED: '1' },
|
|
4008
4008
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
@@ -128,7 +128,7 @@ export class IntegrationStore {
|
|
|
128
128
|
|
|
129
129
|
if (entry.npmPackage) {
|
|
130
130
|
try {
|
|
131
|
-
execFileSync('npm', ['install', entry.npmPackage], {
|
|
131
|
+
execFileSync('npm', ['install', '--legacy-peer-deps', entry.npmPackage], {
|
|
132
132
|
cwd: this.integrationsDir,
|
|
133
133
|
stdio: 'pipe',
|
|
134
134
|
timeout: 120_000,
|
|
@@ -165,7 +165,7 @@ export class IntegrationStore {
|
|
|
165
165
|
const entry = this.registry.find((s) => s.id === integrationId);
|
|
166
166
|
if (entry?.npmPackage) {
|
|
167
167
|
try {
|
|
168
|
-
execFileSync('npm', ['uninstall', entry.npmPackage], {
|
|
168
|
+
execFileSync('npm', ['uninstall', '--legacy-peer-deps', entry.npmPackage], {
|
|
169
169
|
cwd: this.integrationsDir,
|
|
170
170
|
stdio: 'pipe',
|
|
171
171
|
timeout: 60_000,
|
|
@@ -26,7 +26,7 @@ function getConfig() {
|
|
|
26
26
|
export class GrooveNetworkProvider extends Provider {
|
|
27
27
|
static name = 'groove-network';
|
|
28
28
|
static displayName = 'Groove Network';
|
|
29
|
-
static command = '
|
|
29
|
+
static command = 'python3.12';
|
|
30
30
|
static authType = 'none';
|
|
31
31
|
|
|
32
32
|
static models = [
|
|
@@ -60,7 +60,7 @@ export class GrooveNetworkProvider extends Provider {
|
|
|
60
60
|
];
|
|
61
61
|
|
|
62
62
|
return {
|
|
63
|
-
command: '
|
|
63
|
+
command: 'python3.12',
|
|
64
64
|
args,
|
|
65
65
|
env: { PYTHONUNBUFFERED: '1' },
|
|
66
66
|
cwd: deployPath,
|
|
@@ -73,7 +73,7 @@ export class GrooveNetworkProvider extends Provider {
|
|
|
73
73
|
const m = model || GrooveNetworkProvider.models[0].id;
|
|
74
74
|
const deployPath = expandHome(cfg.deployPath) || resolve(homedir(), 'Desktop/groove-deploy');
|
|
75
75
|
return {
|
|
76
|
-
command: '
|
|
76
|
+
command: 'python3.12',
|
|
77
77
|
args: [
|
|
78
78
|
'-m', 'src.consumer.client',
|
|
79
79
|
'--relay', relay,
|