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.
Files changed (131) hide show
  1. package/node_modules/@groove-dev/cli/package.json +4 -3
  2. package/node_modules/@groove-dev/daemon/google-oauth.json +5 -0
  3. package/node_modules/@groove-dev/daemon/integrations-registry.json +0 -40
  4. package/node_modules/@groove-dev/daemon/package.json +4 -3
  5. package/node_modules/@groove-dev/daemon/src/api.js +212 -21
  6. package/node_modules/@groove-dev/daemon/src/index.js +68 -1
  7. package/node_modules/@groove-dev/daemon/src/integrations.js +59 -20
  8. package/node_modules/@groove-dev/daemon/src/process.js +83 -11
  9. package/node_modules/@groove-dev/daemon/src/providers/claude-code.js +4 -0
  10. package/node_modules/@groove-dev/daemon/src/registry.js +1 -1
  11. package/node_modules/@groove-dev/gui/.groove/audit.log +1 -0
  12. package/node_modules/@groove-dev/gui/.groove/codebase-index.json +64 -0
  13. package/node_modules/@groove-dev/gui/.groove/config.json +10 -0
  14. package/node_modules/@groove-dev/gui/.groove/coordination.md +5 -0
  15. package/node_modules/@groove-dev/gui/.groove/credentials.json +6 -0
  16. package/node_modules/@groove-dev/gui/.groove/daemon.port +1 -0
  17. package/node_modules/@groove-dev/gui/.groove/federation/identity.key +3 -0
  18. package/node_modules/@groove-dev/gui/.groove/federation/identity.pub +3 -0
  19. package/node_modules/@groove-dev/gui/.groove/integrations/package.json +6 -0
  20. package/node_modules/@groove-dev/gui/.groove/state.json +3 -0
  21. package/node_modules/@groove-dev/gui/dist/assets/index-x5suAiK7.js +182 -0
  22. package/node_modules/@groove-dev/gui/dist/index.html +1 -1
  23. package/node_modules/@groove-dev/gui/package.json +5 -4
  24. package/node_modules/@groove-dev/gui/src/App.jsx +149 -76
  25. package/node_modules/@groove-dev/gui/src/components/AgentActions.jsx +130 -1
  26. package/node_modules/@groove-dev/gui/src/components/AgentChat.jsx +47 -7
  27. package/node_modules/@groove-dev/gui/src/components/AgentNode.jsx +13 -83
  28. package/node_modules/@groove-dev/gui/src/components/SpawnPanel.jsx +918 -580
  29. package/node_modules/@groove-dev/gui/src/stores/groove.js +31 -2
  30. package/node_modules/@groove-dev/gui/src/views/AgentTree.jsx +133 -67
  31. package/node_modules/@groove-dev/gui/src/views/FileEditor.jsx +85 -1
  32. package/node_modules/@groove-dev/gui/src/views/IntegrationsStore.jsx +121 -44
  33. package/package.json +1 -2
  34. package/packages/cli/package.json +4 -3
  35. package/packages/daemon/integrations-registry.json +0 -40
  36. package/packages/daemon/package.json +4 -3
  37. package/packages/daemon/src/api.js +212 -21
  38. package/packages/daemon/src/index.js +68 -1
  39. package/packages/daemon/src/integrations.js +59 -20
  40. package/packages/daemon/src/process.js +83 -11
  41. package/packages/daemon/src/providers/claude-code.js +4 -0
  42. package/packages/daemon/src/registry.js +1 -1
  43. package/packages/gui/dist/assets/index-x5suAiK7.js +182 -0
  44. package/packages/gui/dist/index.html +1 -1
  45. package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js +68 -0
  46. package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js.map +7 -0
  47. package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js +1420 -0
  48. package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js.map +7 -0
  49. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js +17 -0
  50. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js.map +7 -0
  51. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js +22 -0
  52. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js.map +7 -0
  53. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js +34 -0
  54. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js.map +7 -0
  55. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js +101 -0
  56. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js.map +7 -0
  57. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js +2534 -0
  58. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js.map +7 -0
  59. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js +789 -0
  60. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js.map +7 -0
  61. package/packages/gui/node_modules/.vite/deps/@codemirror_language.js +115 -0
  62. package/packages/gui/node_modules/.vite/deps/@codemirror_language.js.map +7 -0
  63. package/packages/gui/node_modules/.vite/deps/@codemirror_search.js +1136 -0
  64. package/packages/gui/node_modules/.vite/deps/@codemirror_search.js.map +7 -0
  65. package/packages/gui/node_modules/.vite/deps/@codemirror_state.js +63 -0
  66. package/packages/gui/node_modules/.vite/deps/@codemirror_state.js.map +7 -0
  67. package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js +179 -0
  68. package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js.map +7 -0
  69. package/packages/gui/node_modules/.vite/deps/@codemirror_view.js +104 -0
  70. package/packages/gui/node_modules/.vite/deps/@codemirror_view.js.map +7 -0
  71. package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js +46 -0
  72. package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js.map +7 -0
  73. package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js +121 -0
  74. package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js.map +7 -0
  75. package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js +9237 -0
  76. package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js.map +7 -0
  77. package/packages/gui/node_modules/.vite/deps/@xyflow_react.js +9934 -0
  78. package/packages/gui/node_modules/.vite/deps/@xyflow_react.js.map +7 -0
  79. package/packages/gui/node_modules/.vite/deps/_metadata.json +184 -0
  80. package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js +5169 -0
  81. package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js.map +7 -0
  82. package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js +2000 -0
  83. package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js.map +7 -0
  84. package/packages/gui/node_modules/.vite/deps/chunk-3LBP22MX.js +1115 -0
  85. package/packages/gui/node_modules/.vite/deps/chunk-3LBP22MX.js.map +7 -0
  86. package/packages/gui/node_modules/.vite/deps/chunk-3Q7HT7ZF.js +701 -0
  87. package/packages/gui/node_modules/.vite/deps/chunk-3Q7HT7ZF.js.map +7 -0
  88. package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js +1776 -0
  89. package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js.map +7 -0
  90. package/packages/gui/node_modules/.vite/deps/chunk-5RZAEUNX.js +280 -0
  91. package/packages/gui/node_modules/.vite/deps/chunk-5RZAEUNX.js.map +7 -0
  92. package/packages/gui/node_modules/.vite/deps/chunk-5WRI5ZAA.js +30 -0
  93. package/packages/gui/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map +7 -0
  94. package/packages/gui/node_modules/.vite/deps/chunk-7FYDPZIO.js +1004 -0
  95. package/packages/gui/node_modules/.vite/deps/chunk-7FYDPZIO.js.map +7 -0
  96. package/packages/gui/node_modules/.vite/deps/chunk-BX6POZPY.js +292 -0
  97. package/packages/gui/node_modules/.vite/deps/chunk-BX6POZPY.js.map +7 -0
  98. package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js +1062 -0
  99. package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js.map +7 -0
  100. package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js +10985 -0
  101. package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js.map +7 -0
  102. package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js +3459 -0
  103. package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js.map +7 -0
  104. package/packages/gui/node_modules/.vite/deps/package.json +3 -0
  105. package/packages/gui/node_modules/.vite/deps/react-dom.js +6 -0
  106. package/packages/gui/node_modules/.vite/deps/react-dom.js.map +7 -0
  107. package/packages/gui/node_modules/.vite/deps/react-dom_client.js +20217 -0
  108. package/packages/gui/node_modules/.vite/deps/react-dom_client.js.map +7 -0
  109. package/packages/gui/node_modules/.vite/deps/react.js +5 -0
  110. package/packages/gui/node_modules/.vite/deps/react.js.map +7 -0
  111. package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js +278 -0
  112. package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
  113. package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js +6 -0
  114. package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js.map +7 -0
  115. package/packages/gui/node_modules/.vite/deps/zustand.js +56 -0
  116. package/packages/gui/node_modules/.vite/deps/zustand.js.map +7 -0
  117. package/packages/gui/package.json +5 -4
  118. package/packages/gui/src/App.jsx +149 -76
  119. package/packages/gui/src/components/AgentActions.jsx +130 -1
  120. package/packages/gui/src/components/AgentChat.jsx +47 -7
  121. package/packages/gui/src/components/AgentNode.jsx +13 -83
  122. package/packages/gui/src/components/SpawnPanel.jsx +918 -580
  123. package/packages/gui/src/stores/groove.js +31 -2
  124. package/packages/gui/src/views/AgentTree.jsx +133 -67
  125. package/packages/gui/src/views/FileEditor.jsx +85 -1
  126. package/packages/gui/src/views/IntegrationsStore.jsx +121 -44
  127. package/docs/FILE-EDITOR-PLAN.md +0 -253
  128. package/docs/GUI_DESIGN_SPEC.md +0 -402
  129. package/docs/SKILLS-API-SPEC.md +0 -277
  130. package/node_modules/@groove-dev/gui/dist/assets/index-D5dtDQf0.js +0 -156
  131. 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, { useRef, useEffect } from '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: '#282c34',
48
- border: sel ? '1px solid #33afbc' : '1px solid #3e4451',
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
- background: '#282c34', border: '2px solid #3e4451',
59
- width: 8, height: 8, borderRadius: '50%', top: -4,
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
- {/* Live heartbeat real-time token line chart */}
105
- {alive && <Heartbeat agentId={data.id} color={statusColor} />}
106
-
107
- <Handle type="source" position={Position.Bottom} style={{
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
- }