groove-dev 0.27.72 → 0.27.74

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 (140) hide show
  1. package/CLAUDE.md +7 -0
  2. package/node_modules/@groove-dev/cli/package.json +1 -1
  3. package/node_modules/@groove-dev/daemon/package.json +1 -1
  4. package/node_modules/@groove-dev/daemon/src/api.js +10 -7
  5. package/node_modules/@groove-dev/daemon/src/providers/claude-code.js +2 -1
  6. package/node_modules/@groove-dev/daemon/src/providers/codex.js +3 -1
  7. package/node_modules/@groove-dev/daemon/src/providers/gemini.js +2 -1
  8. package/node_modules/@groove-dev/daemon/src/providers/index.js +21 -8
  9. package/node_modules/@groove-dev/gui/dist/assets/{index-CHSXqfwy.js → index-DFP3r2yE.js} +167 -167
  10. package/node_modules/@groove-dev/gui/dist/assets/index-QR7lyguO.css +1 -0
  11. package/node_modules/@groove-dev/gui/dist/index.html +2 -2
  12. package/node_modules/@groove-dev/gui/package.json +1 -1
  13. package/node_modules/@groove-dev/gui/src/components/editor/editor-tabs.jsx +5 -5
  14. package/node_modules/@groove-dev/gui/src/components/settings/ProviderSetupWizard.jsx +7 -2
  15. package/node_modules/@groove-dev/gui/src/stores/groove.js +41 -52
  16. package/node_modules/@groove-dev/gui/src/views/editor.jsx +2 -9
  17. package/node_modules/@groove-dev/gui/src/views/settings.jsx +79 -9
  18. package/package.json +1 -1
  19. package/packages/cli/package.json +1 -1
  20. package/packages/daemon/package.json +1 -1
  21. package/packages/daemon/src/api.js +10 -7
  22. package/packages/daemon/src/providers/claude-code.js +2 -1
  23. package/packages/daemon/src/providers/codex.js +3 -1
  24. package/packages/daemon/src/providers/gemini.js +2 -1
  25. package/packages/daemon/src/providers/index.js +21 -8
  26. package/packages/gui/dist/assets/{index-CHSXqfwy.js → index-DFP3r2yE.js} +167 -167
  27. package/packages/gui/dist/assets/index-QR7lyguO.css +1 -0
  28. package/packages/gui/dist/index.html +2 -2
  29. package/packages/gui/package.json +1 -1
  30. package/packages/gui/src/components/editor/editor-tabs.jsx +5 -5
  31. package/packages/gui/src/components/settings/ProviderSetupWizard.jsx +7 -2
  32. package/packages/gui/src/stores/groove.js +41 -52
  33. package/packages/gui/src/views/editor.jsx +2 -9
  34. package/packages/gui/src/views/settings.jsx +79 -9
  35. package/node_modules/@groove-dev/gui/dist/assets/index-74E3YTkT.css +0 -1
  36. package/packages/gui/dist/assets/index-74E3YTkT.css +0 -1
  37. package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js +0 -68
  38. package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js.map +0 -7
  39. package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js +0 -1420
  40. package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js.map +0 -7
  41. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js +0 -17
  42. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js.map +0 -7
  43. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js +0 -22
  44. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js.map +0 -7
  45. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js +0 -34
  46. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js.map +0 -7
  47. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js +0 -101
  48. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js.map +0 -7
  49. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js +0 -2534
  50. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js.map +0 -7
  51. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js +0 -789
  52. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js.map +0 -7
  53. package/packages/gui/node_modules/.vite/deps/@codemirror_language.js +0 -115
  54. package/packages/gui/node_modules/.vite/deps/@codemirror_language.js.map +0 -7
  55. package/packages/gui/node_modules/.vite/deps/@codemirror_search.js +0 -1136
  56. package/packages/gui/node_modules/.vite/deps/@codemirror_search.js.map +0 -7
  57. package/packages/gui/node_modules/.vite/deps/@codemirror_state.js +0 -63
  58. package/packages/gui/node_modules/.vite/deps/@codemirror_state.js.map +0 -7
  59. package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js +0 -179
  60. package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js.map +0 -7
  61. package/packages/gui/node_modules/.vite/deps/@codemirror_view.js +0 -104
  62. package/packages/gui/node_modules/.vite/deps/@codemirror_view.js.map +0 -7
  63. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-context-menu.js +0 -1202
  64. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-context-menu.js.map +0 -7
  65. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-dialog.js +0 -365
  66. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-dialog.js.map +0 -7
  67. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-scroll-area.js +0 -757
  68. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-scroll-area.js.map +0 -7
  69. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tabs.js +0 -219
  70. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tabs.js.map +0 -7
  71. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tooltip.js +0 -562
  72. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tooltip.js.map +0 -7
  73. package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js +0 -46
  74. package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js.map +0 -7
  75. package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js +0 -121
  76. package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js.map +0 -7
  77. package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js +0 -9237
  78. package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js.map +0 -7
  79. package/packages/gui/node_modules/.vite/deps/@xyflow_react.js +0 -9934
  80. package/packages/gui/node_modules/.vite/deps/@xyflow_react.js.map +0 -7
  81. package/packages/gui/node_modules/.vite/deps/_metadata.json +0 -259
  82. package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js +0 -5169
  83. package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js.map +0 -7
  84. package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js +0 -2000
  85. package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js.map +0 -7
  86. package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js +0 -1776
  87. package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js.map +0 -7
  88. package/packages/gui/node_modules/.vite/deps/chunk-4JHIKDUF.js +0 -435
  89. package/packages/gui/node_modules/.vite/deps/chunk-4JHIKDUF.js.map +0 -7
  90. package/packages/gui/node_modules/.vite/deps/chunk-ACEP5X2F.js +0 -292
  91. package/packages/gui/node_modules/.vite/deps/chunk-ACEP5X2F.js.map +0 -7
  92. package/packages/gui/node_modules/.vite/deps/chunk-CDLO3JFW.js +0 -1004
  93. package/packages/gui/node_modules/.vite/deps/chunk-CDLO3JFW.js.map +0 -7
  94. package/packages/gui/node_modules/.vite/deps/chunk-FOR2E6IR.js +0 -105
  95. package/packages/gui/node_modules/.vite/deps/chunk-FOR2E6IR.js.map +0 -7
  96. package/packages/gui/node_modules/.vite/deps/chunk-HPXOV7QR.js +0 -23
  97. package/packages/gui/node_modules/.vite/deps/chunk-HPXOV7QR.js.map +0 -7
  98. package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js +0 -1062
  99. package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js.map +0 -7
  100. package/packages/gui/node_modules/.vite/deps/chunk-PGL3TTJA.js +0 -1115
  101. package/packages/gui/node_modules/.vite/deps/chunk-PGL3TTJA.js.map +0 -7
  102. package/packages/gui/node_modules/.vite/deps/chunk-PGMATLPZ.js +0 -2294
  103. package/packages/gui/node_modules/.vite/deps/chunk-PGMATLPZ.js.map +0 -7
  104. package/packages/gui/node_modules/.vite/deps/chunk-PR4QN5HX.js +0 -42
  105. package/packages/gui/node_modules/.vite/deps/chunk-PR4QN5HX.js.map +0 -7
  106. package/packages/gui/node_modules/.vite/deps/chunk-QX3PPTYO.js +0 -315
  107. package/packages/gui/node_modules/.vite/deps/chunk-QX3PPTYO.js.map +0 -7
  108. package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js +0 -10985
  109. package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js.map +0 -7
  110. package/packages/gui/node_modules/.vite/deps/chunk-SPKVQGZX.js +0 -701
  111. package/packages/gui/node_modules/.vite/deps/chunk-SPKVQGZX.js.map +0 -7
  112. package/packages/gui/node_modules/.vite/deps/chunk-YAD7VOVN.js +0 -280
  113. package/packages/gui/node_modules/.vite/deps/chunk-YAD7VOVN.js.map +0 -7
  114. package/packages/gui/node_modules/.vite/deps/chunk-YEUURE4V.js +0 -264
  115. package/packages/gui/node_modules/.vite/deps/chunk-YEUURE4V.js.map +0 -7
  116. package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js +0 -3459
  117. package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js.map +0 -7
  118. package/packages/gui/node_modules/.vite/deps/chunk-Z5NIFSCT.js +0 -1106
  119. package/packages/gui/node_modules/.vite/deps/chunk-Z5NIFSCT.js.map +0 -7
  120. package/packages/gui/node_modules/.vite/deps/clsx.js +0 -22
  121. package/packages/gui/node_modules/.vite/deps/clsx.js.map +0 -7
  122. package/packages/gui/node_modules/.vite/deps/framer-motion.js +0 -12732
  123. package/packages/gui/node_modules/.vite/deps/framer-motion.js.map +0 -7
  124. package/packages/gui/node_modules/.vite/deps/lucide-react.js +0 -29653
  125. package/packages/gui/node_modules/.vite/deps/lucide-react.js.map +0 -7
  126. package/packages/gui/node_modules/.vite/deps/package.json +0 -3
  127. package/packages/gui/node_modules/.vite/deps/react-dom.js +0 -6
  128. package/packages/gui/node_modules/.vite/deps/react-dom.js.map +0 -7
  129. package/packages/gui/node_modules/.vite/deps/react-dom_client.js +0 -20217
  130. package/packages/gui/node_modules/.vite/deps/react-dom_client.js.map +0 -7
  131. package/packages/gui/node_modules/.vite/deps/react.js +0 -5
  132. package/packages/gui/node_modules/.vite/deps/react.js.map +0 -7
  133. package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js +0 -278
  134. package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +0 -7
  135. package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js +0 -6
  136. package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js.map +0 -7
  137. package/packages/gui/node_modules/.vite/deps/tailwind-merge.js +0 -3263
  138. package/packages/gui/node_modules/.vite/deps/tailwind-merge.js.map +0 -7
  139. package/packages/gui/node_modules/.vite/deps/zustand.js +0 -56
  140. package/packages/gui/node_modules/.vite/deps/zustand.js.map +0 -7
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 -->
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groove-dev/cli",
3
- "version": "0.27.72",
3
+ "version": "0.27.74",
4
4
  "description": "GROOVE CLI — manage AI coding agents from your terminal",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groove-dev/daemon",
3
- "version": "0.27.72",
3
+ "version": "0.27.74",
4
4
  "description": "GROOVE daemon — agent orchestration engine",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -5658,20 +5658,23 @@ Keep responses concise. Help them think, don't lecture them about the system the
5658
5658
  } catch { /* non-fatal */ }
5659
5659
  };
5660
5660
 
5661
- // Serve GUI static files (built GUI) — no-cache headers to prevent stale bundles
5661
+ // Serve GUI static files (built GUI) — no-cache headers prevent stale bundles on SSH reconnect
5662
5662
  const guiPath = process.env.GROOVE_GUI_PATH || resolve(__dirname, '../../gui/dist');
5663
- app.use(express.static(guiPath, { etag: false, maxAge: 0, lastModified: false }));
5664
- app.use((req, res, next) => {
5665
- if (!req.path.startsWith('/api/')) {
5663
+ app.use(express.static(guiPath, {
5664
+ etag: false,
5665
+ maxAge: 0,
5666
+ lastModified: false,
5667
+ setHeaders: (res) => {
5666
5668
  res.set('Cache-Control', 'no-store, no-cache, must-revalidate');
5667
5669
  res.set('Pragma', 'no-cache');
5668
- }
5669
- next();
5670
- });
5670
+ },
5671
+ }));
5671
5672
 
5672
5673
  // SPA fallback
5673
5674
  app.get('*', (req, res, next) => {
5674
5675
  if (req.path.startsWith('/api/')) return next();
5676
+ res.set('Cache-Control', 'no-store, no-cache, must-revalidate');
5677
+ res.set('Pragma', 'no-cache');
5675
5678
  res.sendFile(resolve(guiPath, 'index.html'), (err) => {
5676
5679
  if (err) res.status(404).json({ error: 'GUI not built yet. Run: npm run build:gui' });
5677
5680
  });
@@ -46,7 +46,8 @@ export class ClaudeCodeProvider extends Provider {
46
46
 
47
47
  static isInstalled() {
48
48
  try {
49
- execSync('which claude', { stdio: 'ignore' });
49
+ const cmd = process.platform === 'win32' ? 'where claude' : 'which claude';
50
+ execSync(cmd, { stdio: 'ignore' });
50
51
  return true;
51
52
  } catch {
52
53
  return false;
@@ -36,6 +36,7 @@ export class CodexProvider extends Provider {
36
36
  // Auth hint — Codex uses its own auth system, not just env vars
37
37
  static authHint = 'Codex requires `codex login` — run: echo "YOUR_KEY" | codex login --with-api-key';
38
38
  static models = [
39
+ { id: 'gpt-5.5', name: 'GPT-5.5', tier: 'heavy', maxContext: 200000, pricing: { input: 0.03, output: 0.12 } },
39
40
  { id: 'gpt-5.4-pro', name: 'GPT-5.4 Pro', tier: 'heavy', maxContext: 200000, pricing: { input: 0.015, output: 0.06 } },
40
41
  { id: 'gpt-5.4', name: 'GPT-5.4', tier: 'heavy', maxContext: 200000, pricing: { input: 0.005, output: 0.02 } },
41
42
  { id: 'gpt-5.4-mini', name: 'GPT-5.4 Mini', tier: 'medium', maxContext: 200000, pricing: { input: 0.001, output: 0.004 } },
@@ -46,7 +47,8 @@ export class CodexProvider extends Provider {
46
47
 
47
48
  static isInstalled() {
48
49
  try {
49
- execSync('which codex', { stdio: 'ignore' });
50
+ const cmd = process.platform === 'win32' ? 'where codex' : 'which codex';
51
+ execSync(cmd, { stdio: 'ignore' });
50
52
  return true;
51
53
  } catch {
52
54
  return false;
@@ -40,7 +40,8 @@ export class GeminiProvider extends Provider {
40
40
 
41
41
  static isInstalled() {
42
42
  try {
43
- execSync('which gemini', { stdio: 'ignore' });
43
+ const cmd = process.platform === 'win32' ? 'where gemini' : 'which gemini';
44
+ execSync(cmd, { stdio: 'ignore' });
44
45
  return true;
45
46
  } catch {
46
47
  return false;
@@ -37,17 +37,30 @@ export function getProviderPath(id) {
37
37
  }
38
38
 
39
39
  (function augmentPath() {
40
- const extra = ['/usr/local/bin', '/opt/homebrew/bin'];
40
+ const isWin = process.platform === 'win32';
41
+ const extra = isWin ? [] : ['/usr/local/bin', '/opt/homebrew/bin'];
41
42
  try {
42
- const npmPrefix = execSync('npm config get prefix 2>/dev/null', { encoding: 'utf8', timeout: 5000 }).trim();
43
- const npmGlobal = npmPrefix ? `${npmPrefix}/bin` : '';
44
- if (npmGlobal) extra.push(npmGlobal);
43
+ const suppressErr = isWin ? '2>NUL' : '2>/dev/null';
44
+ const npmPrefix = execSync(`npm config get prefix ${suppressErr}`, { encoding: 'utf8', timeout: 5000 }).trim();
45
+ if (npmPrefix) {
46
+ extra.push(isWin ? npmPrefix : `${npmPrefix}/bin`);
47
+ }
45
48
  } catch { /* npm itself may not be in PATH yet */ }
46
- const home = process.env.HOME || '';
47
- if (home) extra.push(`${home}/.npm-global/bin`);
49
+ const home = process.env.HOME || process.env.USERPROFILE || '';
50
+ if (home) {
51
+ if (isWin) {
52
+ extra.push(`${home}\\AppData\\Roaming\\npm`);
53
+ } else {
54
+ extra.push(`${home}/.npm-global/bin`);
55
+ }
56
+ }
57
+ if (isWin) {
58
+ const pf = process.env.ProgramFiles || 'C:\\Program Files';
59
+ extra.push(`${pf}\\nodejs`);
60
+ }
48
61
  const cur = process.env.PATH || '';
49
- const toAdd = extra.filter(p => p && !cur.split(':').includes(p));
50
- if (toAdd.length) process.env.PATH = [...toAdd, cur].join(':');
62
+ const toAdd = extra.filter(p => p && !cur.split(pathDelimiter).includes(p));
63
+ if (toAdd.length) process.env.PATH = [...toAdd, cur].join(pathDelimiter);
51
64
  })();
52
65
 
53
66
  const providers = {