groove-dev 0.27.163 → 0.27.164

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 CHANGED
@@ -295,3 +295,10 @@ Audit-driven release. Multi-agent orchestration system with 7 coordination layer
295
295
  - Dashboard: routing donut, cache panel, context health gauges
296
296
  - Monitor/QC agent mode (stay active, loop)
297
297
  - Distribution: demo video, HN launch, Twitter content
298
+
299
+ <!-- GROOVE:START -->
300
+ ## GROOVE Orchestration (auto-injected)
301
+ Active agents: 0
302
+ See AGENTS_REGISTRY.md for full agent state.
303
+ **Memory policy:** GROOVE manages project memory automatically. Do not read or write MEMORY.md or .groove/memory/ files directly.
304
+ <!-- GROOVE:END -->
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groove-dev/cli",
3
- "version": "0.27.163",
3
+ "version": "0.27.164",
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.163",
3
+ "version": "0.27.164",
4
4
  "description": "GROOVE daemon — agent orchestration engine",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -8,6 +8,7 @@ import { homedir } from 'os';
8
8
  import { spawn } from 'child_process';
9
9
  import { LlamaServerManager } from './llama-server.js';
10
10
  import { MLXServerManager } from './mlx-server.js';
11
+ import { OllamaProvider } from './providers/ollama.js';
11
12
  const RUNTIME_TYPES = ['ollama', 'vllm', 'llama-cpp', 'mlx', 'tgi', 'openai-compatible'];
12
13
  const DEFAULT_OLLAMA_ENDPOINT = 'http://localhost:11434';
13
14
  const GLOBAL_GROOVE_DIR = resolve(homedir(), '.groove');
@@ -698,11 +699,13 @@ export class ModelLab {
698
699
 
699
700
  listLocalModels() {
700
701
  const models = [];
702
+ const seen = new Set();
701
703
 
702
704
  // GGUF models from ModelManager
703
705
  const mm = this.daemon.modelManager;
704
706
  if (mm) {
705
707
  for (const m of mm.getInstalled().filter((m) => m.exists)) {
708
+ seen.add(m.id);
706
709
  models.push({ ...m, type: 'gguf', compatibleBackends: ['llama-cpp'] });
707
710
  }
708
711
  }
@@ -711,10 +714,22 @@ export class ModelLab {
711
714
  try {
712
715
  const hfModels = MLXServerManager.scanModels();
713
716
  for (const m of hfModels) {
717
+ seen.add(m.id);
714
718
  models.push(m);
715
719
  }
716
720
  } catch { /* scan may fail */ }
717
721
 
722
+ // Ollama installed models
723
+ try {
724
+ if (OllamaProvider.isInstalled()) {
725
+ for (const m of OllamaProvider.getInstalledModels()) {
726
+ if (seen.has(m.id)) continue;
727
+ seen.add(m.id);
728
+ models.push({ ...m, type: 'ollama', compatibleBackends: ['ollama'] });
729
+ }
730
+ }
731
+ } catch { /* ollama may not be available */ }
732
+
718
733
  return models;
719
734
  }
720
735
 
@@ -453,7 +453,7 @@ export class TunnelManager {
453
453
  try {
454
454
  this.daemon.broadcast({ type: 'tunnel.status', data: { id, step: 'checking' } });
455
455
 
456
- // Get remote daemon version
456
+ // Get remote daemon version through the already-open tunnel
457
457
  const resp = await fetch(`http://localhost:${localPort}/api/status`, {
458
458
  signal: AbortSignal.timeout(5000),
459
459
  });
@@ -462,15 +462,11 @@ export class TunnelManager {
462
462
  const remoteVer = status.version;
463
463
  if (!remoteVer) return;
464
464
 
465
- // Check latest version on npm (from the remote server)
466
- const target = `${config.user}@${config.host}`;
467
- const keyArgs = config.sshKeyPath ? ['-i', config.sshKeyPath] : [];
468
- const sshBase = [...keyArgs, '-p', String(config.port || 22), '-o', 'ConnectTimeout=10', '-o', 'BatchMode=yes', target];
469
-
465
+ // Check latest version on npm locally (same registry everywhere, no extra SSH)
470
466
  let npmVer;
471
467
  try {
472
- npmVer = execFileSync('ssh', [...sshBase, sshCmd('npm view groove-dev version 2>/dev/null')], {
473
- encoding: 'utf8', timeout: 15000, stdio: ['pipe', 'pipe', 'pipe'],
468
+ npmVer = execFileSync('npm', ['view', 'groove-dev', 'version'], {
469
+ encoding: 'utf8', timeout: 10000, stdio: ['pipe', 'pipe', 'pipe'],
474
470
  }).trim();
475
471
  } catch { return; }
476
472