groove-dev 0.17.8 → 0.18.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.
- package/node_modules/@groove-dev/cli/package.json +4 -3
- package/node_modules/@groove-dev/daemon/google-oauth.json +5 -0
- package/node_modules/@groove-dev/daemon/integrations-registry.json +0 -40
- package/node_modules/@groove-dev/daemon/package.json +4 -3
- package/node_modules/@groove-dev/daemon/src/api.js +212 -21
- package/node_modules/@groove-dev/daemon/src/index.js +68 -1
- package/node_modules/@groove-dev/daemon/src/integrations.js +59 -20
- package/node_modules/@groove-dev/daemon/src/process.js +83 -11
- package/node_modules/@groove-dev/daemon/src/providers/claude-code.js +4 -0
- package/node_modules/@groove-dev/daemon/src/registry.js +1 -1
- package/node_modules/@groove-dev/gui/.groove/audit.log +1 -0
- package/node_modules/@groove-dev/gui/.groove/codebase-index.json +64 -0
- package/node_modules/@groove-dev/gui/.groove/config.json +10 -0
- package/node_modules/@groove-dev/gui/.groove/coordination.md +5 -0
- package/node_modules/@groove-dev/gui/.groove/credentials.json +6 -0
- package/node_modules/@groove-dev/gui/.groove/daemon.port +1 -0
- package/node_modules/@groove-dev/gui/.groove/federation/identity.key +3 -0
- package/node_modules/@groove-dev/gui/.groove/federation/identity.pub +3 -0
- package/node_modules/@groove-dev/gui/.groove/integrations/package.json +6 -0
- package/node_modules/@groove-dev/gui/.groove/state.json +3 -0
- package/node_modules/@groove-dev/gui/dist/assets/index-x5suAiK7.js +182 -0
- package/node_modules/@groove-dev/gui/dist/index.html +1 -1
- package/node_modules/@groove-dev/gui/package.json +5 -4
- package/node_modules/@groove-dev/gui/src/App.jsx +149 -76
- package/node_modules/@groove-dev/gui/src/components/AgentActions.jsx +130 -1
- package/node_modules/@groove-dev/gui/src/components/AgentChat.jsx +47 -7
- package/node_modules/@groove-dev/gui/src/components/AgentNode.jsx +13 -83
- package/node_modules/@groove-dev/gui/src/components/SpawnPanel.jsx +918 -580
- package/node_modules/@groove-dev/gui/src/stores/groove.js +31 -2
- package/node_modules/@groove-dev/gui/src/views/AgentTree.jsx +133 -67
- package/node_modules/@groove-dev/gui/src/views/FileEditor.jsx +85 -1
- package/node_modules/@groove-dev/gui/src/views/IntegrationsStore.jsx +121 -44
- package/package.json +1 -2
- package/packages/cli/package.json +4 -3
- package/packages/daemon/integrations-registry.json +0 -40
- package/packages/daemon/package.json +4 -3
- package/packages/daemon/src/api.js +212 -21
- package/packages/daemon/src/index.js +68 -1
- package/packages/daemon/src/integrations.js +59 -20
- package/packages/daemon/src/process.js +83 -11
- package/packages/daemon/src/providers/claude-code.js +4 -0
- package/packages/daemon/src/registry.js +1 -1
- package/packages/gui/dist/assets/index-x5suAiK7.js +182 -0
- package/packages/gui/dist/index.html +1 -1
- package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js +68 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js +1420 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js +17 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js +22 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js +34 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js +101 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js +2534 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js +789 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_language.js +115 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_language.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_search.js +1136 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_search.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_state.js +63 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_state.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js +179 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_view.js +104 -0
- package/packages/gui/node_modules/.vite/deps/@codemirror_view.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js +46 -0
- package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js +121 -0
- package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js +9237 -0
- package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/@xyflow_react.js +9934 -0
- package/packages/gui/node_modules/.vite/deps/@xyflow_react.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/_metadata.json +184 -0
- package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js +5169 -0
- package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js +2000 -0
- package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-3LBP22MX.js +1115 -0
- package/packages/gui/node_modules/.vite/deps/chunk-3LBP22MX.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-3Q7HT7ZF.js +701 -0
- package/packages/gui/node_modules/.vite/deps/chunk-3Q7HT7ZF.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js +1776 -0
- package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-5RZAEUNX.js +280 -0
- package/packages/gui/node_modules/.vite/deps/chunk-5RZAEUNX.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-5WRI5ZAA.js +30 -0
- package/packages/gui/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-7FYDPZIO.js +1004 -0
- package/packages/gui/node_modules/.vite/deps/chunk-7FYDPZIO.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-BX6POZPY.js +292 -0
- package/packages/gui/node_modules/.vite/deps/chunk-BX6POZPY.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js +1062 -0
- package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js +10985 -0
- package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js +3459 -0
- package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/package.json +3 -0
- package/packages/gui/node_modules/.vite/deps/react-dom.js +6 -0
- package/packages/gui/node_modules/.vite/deps/react-dom.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/react-dom_client.js +20217 -0
- package/packages/gui/node_modules/.vite/deps/react-dom_client.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/react.js +5 -0
- package/packages/gui/node_modules/.vite/deps/react.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js +278 -0
- package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js +6 -0
- package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js.map +7 -0
- package/packages/gui/node_modules/.vite/deps/zustand.js +56 -0
- package/packages/gui/node_modules/.vite/deps/zustand.js.map +7 -0
- package/packages/gui/package.json +5 -4
- package/packages/gui/src/App.jsx +149 -76
- package/packages/gui/src/components/AgentActions.jsx +130 -1
- package/packages/gui/src/components/AgentChat.jsx +47 -7
- package/packages/gui/src/components/AgentNode.jsx +13 -83
- package/packages/gui/src/components/SpawnPanel.jsx +918 -580
- package/packages/gui/src/stores/groove.js +31 -2
- package/packages/gui/src/views/AgentTree.jsx +133 -67
- package/packages/gui/src/views/FileEditor.jsx +85 -1
- package/packages/gui/src/views/IntegrationsStore.jsx +121 -44
- package/docs/FILE-EDITOR-PLAN.md +0 -253
- package/docs/GUI_DESIGN_SPEC.md +0 -402
- package/docs/SKILLS-API-SPEC.md +0 -277
- package/node_modules/@groove-dev/gui/dist/assets/index-D5dtDQf0.js +0 -156
- package/packages/gui/dist/assets/index-D5dtDQf0.js +0 -156
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// GROOVE GUI — Agent Node Component
|
|
2
2
|
// FSL-1.1-Apache-2.0 — see LICENSE
|
|
3
3
|
|
|
4
|
-
import React
|
|
4
|
+
import React from 'react';
|
|
5
5
|
import { Handle, Position } from '@xyflow/react';
|
|
6
|
-
import { useGrooveStore } from '../stores/groove';
|
|
7
6
|
|
|
8
7
|
const STATUS_COLORS = {
|
|
9
8
|
running: '#4ae168',
|
|
@@ -42,10 +41,12 @@ export default function AgentNode({ data }) {
|
|
|
42
41
|
? data.scope[0].replace(/\/\*\*$/, '').replace(/^src\//, '')
|
|
43
42
|
: data.role;
|
|
44
43
|
|
|
44
|
+
const bg = sel ? '#1a1e24' : '#282c34';
|
|
45
|
+
|
|
45
46
|
return (
|
|
46
47
|
<div style={{
|
|
47
|
-
background:
|
|
48
|
-
border:
|
|
48
|
+
background: bg,
|
|
49
|
+
border: '1px solid #3e4451',
|
|
49
50
|
borderRadius: 10,
|
|
50
51
|
width: 210,
|
|
51
52
|
padding: 0,
|
|
@@ -54,10 +55,10 @@ export default function AgentNode({ data }) {
|
|
|
54
55
|
fontSize: 10,
|
|
55
56
|
overflow: 'hidden',
|
|
56
57
|
}}>
|
|
57
|
-
<Handle type="target" position={Position.Top} style={{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}} />
|
|
58
|
+
<Handle id="top" type="target" position={Position.Top} style={{ background: '#282c34', border: '2px solid #3e4451', width: 6, height: 6, borderRadius: '50%', top: -3, opacity: 0 }} />
|
|
59
|
+
<Handle id="bottom" type="target" position={Position.Bottom} style={{ background: '#282c34', border: '2px solid #3e4451', width: 6, height: 6, borderRadius: '50%', bottom: -3, opacity: 0 }} />
|
|
60
|
+
<Handle id="left" type="target" position={Position.Left} style={{ background: '#282c34', border: '2px solid #3e4451', width: 6, height: 6, borderRadius: '50%', left: -3, opacity: 0 }} />
|
|
61
|
+
<Handle id="right" type="target" position={Position.Right} style={{ background: '#282c34', border: '2px solid #3e4451', width: 6, height: 6, borderRadius: '50%', right: -3, opacity: 0 }} />
|
|
61
62
|
|
|
62
63
|
<div style={{ padding: '10px 12px 8px' }}>
|
|
63
64
|
{/* Name + status dot */}
|
|
@@ -101,82 +102,11 @@ export default function AgentNode({ data }) {
|
|
|
101
102
|
</div>
|
|
102
103
|
</div>
|
|
103
104
|
|
|
104
|
-
{
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
<Handle type="source" position={Position.
|
|
108
|
-
background: '#282c34', border: '2px solid #3e4451',
|
|
109
|
-
width: 8, height: 8, borderRadius: '50%', bottom: -4,
|
|
110
|
-
}} />
|
|
105
|
+
<Handle id="s-top" type="source" position={Position.Top} style={{ opacity: 0, width: 1, height: 1, top: -1 }} />
|
|
106
|
+
<Handle id="s-bottom" type="source" position={Position.Bottom} style={{ opacity: 0, width: 1, height: 1, bottom: -1 }} />
|
|
107
|
+
<Handle id="s-left" type="source" position={Position.Left} style={{ opacity: 0, width: 1, height: 1, left: -1 }} />
|
|
108
|
+
<Handle id="s-right" type="source" position={Position.Right} style={{ opacity: 0, width: 1, height: 1, right: -1 }} />
|
|
111
109
|
</div>
|
|
112
110
|
);
|
|
113
111
|
}
|
|
114
112
|
|
|
115
|
-
// ── HEARTBEAT — Mini real-time token line chart ──
|
|
116
|
-
|
|
117
|
-
function Heartbeat({ agentId, color }) {
|
|
118
|
-
const canvasRef = useRef();
|
|
119
|
-
const tokenTimeline = useGrooveStore((s) => s.tokenTimeline);
|
|
120
|
-
|
|
121
|
-
useEffect(() => {
|
|
122
|
-
const canvas = canvasRef.current;
|
|
123
|
-
if (!canvas) return;
|
|
124
|
-
|
|
125
|
-
const dpr = window.devicePixelRatio || 1;
|
|
126
|
-
const w = 210;
|
|
127
|
-
const h = 24;
|
|
128
|
-
canvas.width = w * dpr;
|
|
129
|
-
canvas.height = h * dpr;
|
|
130
|
-
const ctx = canvas.getContext('2d');
|
|
131
|
-
ctx.scale(dpr, dpr);
|
|
132
|
-
ctx.clearRect(0, 0, w, h);
|
|
133
|
-
|
|
134
|
-
const pts = tokenTimeline[agentId] || [];
|
|
135
|
-
if (pts.length < 2) {
|
|
136
|
-
// Flat baseline
|
|
137
|
-
ctx.strokeStyle = '#2c313a';
|
|
138
|
-
ctx.lineWidth = 0.5;
|
|
139
|
-
ctx.beginPath();
|
|
140
|
-
ctx.moveTo(0, h / 2);
|
|
141
|
-
ctx.lineTo(w, h / 2);
|
|
142
|
-
ctx.stroke();
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Use last 40 data points
|
|
147
|
-
const data = pts.slice(-40);
|
|
148
|
-
const vals = data.map((p) => p.v);
|
|
149
|
-
const min = Math.min(...vals);
|
|
150
|
-
const max = Math.max(...vals);
|
|
151
|
-
const range = max - min || 1;
|
|
152
|
-
|
|
153
|
-
const padY = 4;
|
|
154
|
-
const usableH = h - padY * 2;
|
|
155
|
-
const step = w / (data.length - 1);
|
|
156
|
-
|
|
157
|
-
// Line
|
|
158
|
-
ctx.beginPath();
|
|
159
|
-
data.forEach((p, i) => {
|
|
160
|
-
const x = i * step;
|
|
161
|
-
const y = padY + usableH - ((p.v - min) / range) * usableH;
|
|
162
|
-
i === 0 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);
|
|
163
|
-
});
|
|
164
|
-
ctx.strokeStyle = color;
|
|
165
|
-
ctx.lineWidth = 1;
|
|
166
|
-
ctx.stroke();
|
|
167
|
-
|
|
168
|
-
// End dot
|
|
169
|
-
const lastX = (data.length - 1) * step;
|
|
170
|
-
const lastY = padY + usableH - ((data[data.length - 1].v - min) / range) * usableH;
|
|
171
|
-
ctx.beginPath();
|
|
172
|
-
ctx.arc(lastX, lastY, 2, 0, Math.PI * 2);
|
|
173
|
-
ctx.fillStyle = color;
|
|
174
|
-
ctx.fill();
|
|
175
|
-
}, [tokenTimeline, agentId, color]);
|
|
176
|
-
|
|
177
|
-
return (
|
|
178
|
-
<div style={{ borderTop: '1px solid #2c313a', background: '#1e222a' }}>
|
|
179
|
-
<canvas ref={canvasRef} style={{ display: 'block', width: 210, height: 24 }} />
|
|
180
|
-
</div>
|
|
181
|
-
);
|
|
182
|
-
}
|