@halfagiraf/clawx 0.2.0 → 0.2.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/README.md CHANGED
@@ -23,6 +23,7 @@ Clawx can create files, write code, run commands, execute over SSH, and iterate
23
23
  - **Iterates** — reads command output, fixes errors, tries again
24
24
  - **Streams output** — shows progress as the model works
25
25
  - **Falls back to chat** — models without tool support switch to chat mode automatically
26
+ - **Scouts for models** — built-in HuggingFace researcher finds GGUF models that fit your hardware
26
27
 
27
28
  ## What it doesn't do
28
29
 
@@ -527,6 +528,8 @@ clawx chat Interactive chat (no tools — works with any model)
527
528
  clawx chat -c Resume last session in chat mode
528
529
  clawx continue Resume last session
529
530
  clawx sessions List recent sessions
531
+ clawx scout AI-powered HuggingFace model researcher
532
+ clawx scout --setup-hardware Re-prompt hardware specs manually
530
533
  clawx profiles List saved profiles
531
534
  clawx add <name> Save current config as a named profile
532
535
  clawx use <name> Switch to a saved profile
@@ -574,6 +577,80 @@ Clawx runs in two modes, shown in the TUI footer:
574
577
 
575
578
  `clawx chat` (the CLI command) always starts in chat mode — it never sends tools, so it works with every model regardless of tool support.
576
579
 
580
+ ### Scout — HuggingFace Model Researcher
581
+
582
+ Scout is an AI-powered model researcher that searches HuggingFace for GGUF models that fit your hardware. It auto-detects your GPU, VRAM, and RAM, then launches an interactive session where the agent can search, inspect, and recommend models.
583
+
584
+ > **Windows only for now.** Hardware auto-detection uses `nvidia-smi` and `wmic` which are Windows-native. Linux/macOS support is partially implemented (nvidia-smi works on Linux, macOS uses system_profiler) but hasn't been tested yet.
585
+
586
+ ```bash
587
+ # First run — auto-detects hardware, saves to ~/.clawx/hardware.json
588
+ clawx scout
589
+
590
+ # Re-prompt hardware specs manually (with auto-detected defaults)
591
+ clawx scout --setup-hardware
592
+
593
+ # Use a specific model for the scout agent
594
+ clawx scout -m deepseek-chat -p deepseek
595
+ ```
596
+
597
+ On first run, Scout detects your system and auto-sends a starter message with your hardware specs. The agent immediately starts researching:
598
+
599
+ ```
600
+ ╔═╗╦ ╔═╗╦ ╦═╗╔═
601
+ ║ ║ ╠═╣║║║ ╚╝
602
+ ╚═╝╩═╝╩ ╩╚╩╝═╝╚═
603
+ v0.2.1 · deepseek-chat via deepseek
604
+ ────────────────────────────────────────
605
+
606
+ Mode: Scout (HuggingFace Model Researcher)
607
+
608
+ > My hardware: NVIDIA GeForce RTX 3060, 12GB VRAM, 64GB RAM,
609
+ Windows 10. What models would you recommend for local coding
610
+ assistance with tool calling support?
611
+ ```
612
+
613
+ The agent uses three HuggingFace tools to research models:
614
+
615
+ - **hf_search** — searches HuggingFace by query, filters (gguf, text-generation), and sort order
616
+ - **hf_model_info** — gets detailed metadata including GGUF file sizes for VRAM estimation
617
+ - **hf_readme** — reads model cards for benchmarks, prompt formats, and quant details
618
+
619
+ Here's an excerpt from a real session. The agent searched for coding models, checked file sizes, read model cards, then delivered recommendations tailored to the user's 12GB VRAM:
620
+
621
+ ```
622
+ hf_search { "search": "coder gguf", "filter": "gguf,text-generation", "sort": "downloads", "limit": 15 }
623
+
624
+ Found 15 models for "coder gguf" (sorted by downloads):
625
+ - unsloth/Qwen3-Coder-Next-GGUF 481,295 downloads
626
+ - ggml-org/Qwen3-Coder-30B-A3B-Instruct 176,570 downloads
627
+ - Qwen/Qwen2.5-Coder-32B-Instruct-GGUF 166,480 downloads
628
+ - bartowski/Qwen2.5-Coder-7B-Instruct-GGUF 104,034 downloads
629
+ ...
630
+
631
+ hf_model_info { "model_id": "unsloth/Qwen3-Coder-Next-GGUF" }
632
+ hf_readme { "model_id": "unsloth/Qwen3-Coder-Next-GGUF" }
633
+
634
+ Recommended Models for Coding + Tool Calling:
635
+
636
+ 1. Qwen3-Coder-Next (80B total, 3B activated) — BEST OVERALL
637
+ VRAM: ~4-8GB depending on quant | 256K context | Tool calling supported
638
+ Why: Specifically designed for coding agents, Feb 19 update improved tool-calling
639
+
640
+ 2. Qwen2.5-Coder-7B-Instruct — BALANCED PERFORMANCE
641
+ VRAM: Q5_K_M ~5GB, Q8_0 ~7.5GB | 104K+ downloads
642
+ Why: Proven, reliable, good quality/size balance
643
+
644
+ 3. LFM2.5-1.2B-Nova-Function-Calling — SPECIALIZED TOOL CALLING
645
+ VRAM: ~0.7-1.2GB | 97% syntax reliability for JSON
646
+ Why: Tiny but specifically fine-tuned for function calling
647
+
648
+ Would you like me to check specific file sizes or help create
649
+ an Ollama Modelfile for your chosen model?
650
+ ```
651
+
652
+ Scout uses the same model/provider flags as the main TUI. You can run it with a local model (`-m qwen2.5-coder:7b-instruct -p ollama`) or a cloud API (`-p deepseek`). The text tool parser works in scout mode too, so models that output tool calls as text (like Qwen) will still work.
653
+
577
654
  ### Basic REPL commands
578
655
 
579
656
  ```
@@ -603,22 +680,36 @@ Clawx runs in two modes, shown in the TUI footer:
603
680
 
604
681
  ```
605
682
  src/
606
- cli/ CLI entry point and REPL
607
- config/ Configuration loading (.env, JSON)
683
+ cli/
684
+ main.ts CLI entry point (Commander.js commands)
685
+ tui.ts TUI mode (pi-coding-agent InteractiveMode)
686
+ scout.ts Scout mode (HuggingFace model researcher)
687
+ repl.ts Basic readline REPL fallback
688
+ banner.ts Startup banner and version
689
+ config/
690
+ index.ts Configuration loading (.env, JSON)
691
+ hardware.ts Hardware spec detection and management
608
692
  core/
609
- agent.ts Agent orchestrator (wires pi-agent-core loop)
610
- provider.ts Model/provider resolution for local endpoints
611
- session.ts JSON-file session persistence
612
- streaming.ts Terminal output renderer
693
+ agent.ts Agent orchestrator (wires pi-agent-core loop)
694
+ provider.ts Model/provider resolution for local endpoints
695
+ session.ts JSON-file session persistence
696
+ streaming.ts Terminal output renderer
697
+ text-tool-parser.ts Text-based tool call parser (Qwen, etc.)
613
698
  extensions/
614
- chat-mode.ts TUI extension: /chat toggle, auto-detection, prompt swap
699
+ chat-mode.ts TUI extension: /chat toggle, auto-detection, prompt swap
615
700
  tools/
616
- sshRun.ts SSH execution (ssh2)
617
- gitStatus.ts Git status wrapper
618
- gitDiff.ts Git diff wrapper
701
+ sshRun.ts SSH execution (ssh2)
702
+ gitStatus.ts Git status wrapper
703
+ gitDiff.ts Git diff wrapper
619
704
  searchFiles.ts File content search (rg/grep)
620
- types/ TypeScript type definitions
621
- utils/ Logger, system prompt builder
705
+ hfSearch.ts HuggingFace model search (Scout)
706
+ hfModelInfo.ts HuggingFace model details (Scout)
707
+ hfReadme.ts HuggingFace README reader (Scout)
708
+ types/ TypeScript type definitions
709
+ utils/
710
+ system-prompt.ts System prompt builder
711
+ scout-prompt.ts Scout system prompt builder
712
+ logger.ts Structured logger
622
713
  ```
623
714
 
624
715
  ### Dependencies
@@ -1 +1 @@
1
- {"version":3,"file":"scout.d.ts","sourceRoot":"","sources":["../../src/cli/scout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgErD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,OAAO,CAAC,IAAI,CAAC,CA+Gf"}
1
+ {"version":3,"file":"scout.d.ts","sourceRoot":"","sources":["../../src/cli/scout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgErD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,OAAO,CAAC,IAAI,CAAC,CAuHf"}
package/dist/cli/scout.js CHANGED
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { createAgentSession, InteractiveMode, AuthStorage, ModelRegistry, DefaultResourceLoader, SettingsManager, } from "@mariozechner/pi-coding-agent";
8
8
  import { resolveModel } from "../core/provider.js";
9
- import { loadHardwareSpec, promptHardwareSpec } from "../config/hardware.js";
9
+ import { loadHardwareSpec, promptHardwareSpec, autoDetectAndSave } from "../config/hardware.js";
10
10
  import { createHfSearchTool } from "../tools/hfSearch.js";
11
11
  import { createHfModelInfoTool } from "../tools/hfModelInfo.js";
12
12
  import { createHfReadmeTool } from "../tools/hfReadme.js";
@@ -67,16 +67,17 @@ async function checkOllamaToolSupport(config) {
67
67
  }
68
68
  }
69
69
  export async function startScout(config, options = {}) {
70
- // Load or prompt for hardware spec
70
+ // Load or detect hardware spec
71
71
  let hardware = null;
72
72
  if (options.setupHardware) {
73
+ // --setup-hardware: manual prompts with auto-detected defaults
73
74
  hardware = await promptHardwareSpec();
74
75
  }
75
76
  else {
76
77
  hardware = loadHardwareSpec();
77
78
  if (!hardware) {
78
- console.log(" No hardware spec found. Let's set up your system info for Scout.\n");
79
- hardware = await promptHardwareSpec();
79
+ // First run: auto-detect and save (only prompts if detection fails)
80
+ hardware = await autoDetectAndSave();
80
81
  }
81
82
  }
82
83
  const model = resolveModel(config);
@@ -154,9 +155,14 @@ export async function startScout(config, options = {}) {
154
155
  if (allToolNames.length > 0) {
155
156
  session.agent.streamFn = createToolParsingStreamFn(allToolNames);
156
157
  }
158
+ // Build a welcome initial message so the agent introduces itself with hardware context
159
+ const initialMessage = `My hardware: ${hardware.gpu}, ${hardware.vram} VRAM, ${hardware.ram} RAM, ${hardware.os}` +
160
+ (hardware.notes ? `. ${hardware.notes}` : "") +
161
+ `. What models would you recommend for local coding assistance with tool calling support?`;
157
162
  // Launch interactive mode
158
163
  const mode = new InteractiveMode(session, {
159
164
  modelFallbackMessage,
165
+ initialMessage,
160
166
  verbose: options.verbose,
161
167
  });
162
168
  await mode.run();
@@ -1 +1 @@
1
- {"version":3,"file":"scout.js","sourceRoot":"","sources":["../../src/cli/scout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scout.js","sourceRoot":"","sources":["../../src/cli/scout.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Hardware spec management for Clawx Scout.
3
3
  *
4
- * Stores user's hardware info (GPU, VRAM, RAM) so the scout agent
5
- * can recommend models that actually fit the user's system.
4
+ * Auto-detects GPU, VRAM, RAM, and OS from the system.
5
+ * Falls back to manual prompts if detection fails.
6
6
  */
7
7
  export interface HardwareSpec {
8
8
  gpu: string;
@@ -13,5 +13,19 @@ export interface HardwareSpec {
13
13
  }
14
14
  export declare function loadHardwareSpec(): HardwareSpec | null;
15
15
  export declare function saveHardwareSpec(spec: HardwareSpec): void;
16
+ /**
17
+ * Auto-detect hardware specs from the system.
18
+ * Returns a HardwareSpec with best-effort values.
19
+ */
20
+ export declare function detectHardwareSpec(): HardwareSpec;
21
+ /**
22
+ * Auto-detect hardware, save it, and print what was found.
23
+ * If detection gets "Unknown" for critical fields, offer manual override.
24
+ */
25
+ export declare function autoDetectAndSave(): Promise<HardwareSpec>;
26
+ /**
27
+ * Interactive manual prompts for all fields (--setup-hardware).
28
+ * Pre-fills with auto-detected values so user can just press Enter.
29
+ */
16
30
  export declare function promptHardwareSpec(): Promise<HardwareSpec>;
17
31
  //# sourceMappingURL=hardware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hardware.d.ts","sourceRoot":"","sources":["../../src/config/hardware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAStD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAIzD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CAgChE"}
1
+ {"version":3,"file":"hardware.d.ts","sourceRoot":"","sources":["../../src/config/hardware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAStD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAIzD;AAqGD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAMjD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,YAAY,CAAC,CA8B/D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CA4BhE"}
@@ -1,19 +1,15 @@
1
1
  /**
2
2
  * Hardware spec management for Clawx Scout.
3
3
  *
4
- * Stores user's hardware info (GPU, VRAM, RAM) so the scout agent
5
- * can recommend models that actually fit the user's system.
4
+ * Auto-detects GPU, VRAM, RAM, and OS from the system.
5
+ * Falls back to manual prompts if detection fails.
6
6
  */
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
9
+ import { execSync } from "node:child_process";
10
+ import os from "node:os";
9
11
  import readline from "node:readline";
10
12
  import { getGlobalConfigDir } from "./index.js";
11
- const DEFAULTS = {
12
- gpu: "Unknown GPU",
13
- vram: "Unknown",
14
- ram: "Unknown",
15
- os: process.platform === "win32" ? "Windows" : process.platform === "darwin" ? "macOS" : "Linux",
16
- };
17
13
  function getHardwarePath() {
18
14
  return path.join(getGlobalConfigDir(), "hardware.json");
19
15
  }
@@ -34,24 +30,160 @@ export function saveHardwareSpec(spec) {
34
30
  fs.mkdirSync(dir, { recursive: true });
35
31
  fs.writeFileSync(getHardwarePath(), JSON.stringify(spec, null, 2), "utf-8");
36
32
  }
33
+ function formatBytes(bytes) {
34
+ const gb = bytes / (1024 * 1024 * 1024);
35
+ return gb >= 1 ? `${Math.round(gb)}GB` : `${Math.round(gb * 1024)}MB`;
36
+ }
37
+ function run(cmd) {
38
+ try {
39
+ return execSync(cmd, { encoding: "utf-8", timeout: 10_000, stdio: ["pipe", "pipe", "pipe"] }).trim();
40
+ }
41
+ catch {
42
+ return "";
43
+ }
44
+ }
45
+ function detectGpu() {
46
+ // Try nvidia-smi first (works on Windows + Linux)
47
+ const nvsmi = run("nvidia-smi --query-gpu=name,memory.total --format=csv,noheader,nounits");
48
+ if (nvsmi) {
49
+ const lines = nvsmi.split("\n").filter(Boolean);
50
+ const gpus = [];
51
+ let totalVram = 0;
52
+ for (const line of lines) {
53
+ const parts = line.split(",").map((s) => s.trim());
54
+ gpus.push(parts[0]);
55
+ const mb = parseInt(parts[1], 10);
56
+ if (!isNaN(mb))
57
+ totalVram += mb;
58
+ }
59
+ const gpu = gpus.join(" + ");
60
+ const vram = totalVram >= 1024 ? `${Math.round(totalVram / 1024)}GB` : `${totalVram}MB`;
61
+ return { gpu, vram };
62
+ }
63
+ if (process.platform === "win32") {
64
+ // wmic fallback for Windows (covers AMD/Intel too)
65
+ const wmic = run("wmic path win32_VideoController get Name,AdapterRAM /format:csv");
66
+ if (wmic) {
67
+ const lines = wmic.split("\n").filter((l) => l.trim() && !l.startsWith("Node"));
68
+ const gpus = [];
69
+ let totalVram = 0;
70
+ for (const line of lines) {
71
+ const parts = line.split(",").map((s) => s.trim());
72
+ // CSV format: Node,AdapterRAM,Name
73
+ const adapterRam = parseInt(parts[1], 10);
74
+ const name = parts[2];
75
+ if (name)
76
+ gpus.push(name);
77
+ if (!isNaN(adapterRam) && adapterRam > 0)
78
+ totalVram += adapterRam;
79
+ }
80
+ if (gpus.length > 0) {
81
+ return {
82
+ gpu: gpus.join(" + "),
83
+ vram: totalVram > 0 ? formatBytes(totalVram) : "Unknown",
84
+ };
85
+ }
86
+ }
87
+ }
88
+ if (process.platform === "linux") {
89
+ // lspci fallback for Linux
90
+ const lspci = run("lspci | grep -i 'vga\\|3d\\|display'");
91
+ if (lspci) {
92
+ const match = lspci.match(/:\s+(.+)/);
93
+ return { gpu: match?.[1] || lspci.split("\n")[0], vram: "Unknown" };
94
+ }
95
+ }
96
+ if (process.platform === "darwin") {
97
+ const sp = run("system_profiler SPDisplaysDataType 2>/dev/null | grep 'Chipset Model\\|VRAM'");
98
+ if (sp) {
99
+ const chipMatch = sp.match(/Chipset Model:\s+(.+)/);
100
+ const vramMatch = sp.match(/VRAM.*?:\s+(.+)/);
101
+ return {
102
+ gpu: chipMatch?.[1] || "Apple Silicon",
103
+ vram: vramMatch?.[1] || "Unified Memory",
104
+ };
105
+ }
106
+ }
107
+ return { gpu: "Unknown GPU", vram: "Unknown" };
108
+ }
109
+ function detectRam() {
110
+ const totalBytes = os.totalmem();
111
+ return formatBytes(totalBytes);
112
+ }
113
+ function detectOs() {
114
+ if (process.platform === "win32") {
115
+ const ver = run("ver");
116
+ if (ver)
117
+ return ver;
118
+ return `Windows ${os.release()}`;
119
+ }
120
+ if (process.platform === "darwin") {
121
+ const ver = run("sw_vers -productVersion");
122
+ return ver ? `macOS ${ver}` : "macOS";
123
+ }
124
+ // Linux
125
+ const pretty = run("cat /etc/os-release 2>/dev/null | grep PRETTY_NAME | cut -d= -f2 | tr -d '\"'");
126
+ return pretty || `Linux ${os.release()}`;
127
+ }
128
+ /**
129
+ * Auto-detect hardware specs from the system.
130
+ * Returns a HardwareSpec with best-effort values.
131
+ */
132
+ export function detectHardwareSpec() {
133
+ const { gpu, vram } = detectGpu();
134
+ const ram = detectRam();
135
+ const detectedOs = detectOs();
136
+ return { gpu, vram, ram, os: detectedOs };
137
+ }
138
+ /**
139
+ * Auto-detect hardware, save it, and print what was found.
140
+ * If detection gets "Unknown" for critical fields, offer manual override.
141
+ */
142
+ export async function autoDetectAndSave() {
143
+ console.log("\n Detecting hardware...\n");
144
+ const spec = detectHardwareSpec();
145
+ console.log(` GPU: ${spec.gpu}`);
146
+ console.log(` VRAM: ${spec.vram}`);
147
+ console.log(` RAM: ${spec.ram}`);
148
+ console.log(` OS: ${spec.os}`);
149
+ const hasUnknowns = spec.gpu === "Unknown GPU" || spec.vram === "Unknown";
150
+ if (hasUnknowns) {
151
+ console.log("\n Some values couldn't be auto-detected. Fill in the blanks:\n");
152
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
153
+ const ask = (q, def) => new Promise((resolve) => {
154
+ const suffix = def ? ` [${def}]` : "";
155
+ rl.question(`${q}${suffix}: `, (answer) => resolve(answer.trim() || def || ""));
156
+ });
157
+ if (spec.gpu === "Unknown GPU")
158
+ spec.gpu = await ask(" GPU", spec.gpu);
159
+ if (spec.vram === "Unknown")
160
+ spec.vram = await ask(" VRAM (e.g. 12GB)", spec.vram);
161
+ rl.close();
162
+ }
163
+ saveHardwareSpec(spec);
164
+ console.log(`\n Hardware spec saved to ${getHardwarePath()}\n`);
165
+ return spec;
166
+ }
167
+ /**
168
+ * Interactive manual prompts for all fields (--setup-hardware).
169
+ * Pre-fills with auto-detected values so user can just press Enter.
170
+ */
37
171
  export async function promptHardwareSpec() {
38
- const rl = readline.createInterface({
39
- input: process.stdin,
40
- output: process.stdout,
41
- });
172
+ const detected = detectHardwareSpec();
173
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
42
174
  const ask = (q, def) => new Promise((resolve) => {
43
175
  const suffix = def ? ` [${def}]` : "";
44
176
  rl.question(`${q}${suffix}: `, (answer) => resolve(answer.trim() || def || ""));
45
177
  });
46
- console.log("\n Hardware Setup for Scout\n");
47
- console.log(" Scout uses your hardware specs to recommend models that fit.\n");
48
- const gpu = await ask(" GPU", DEFAULTS.gpu);
49
- const vram = await ask(" VRAM (e.g. 12GB, 24GB)", DEFAULTS.vram);
50
- const ram = await ask(" System RAM (e.g. 32GB, 64GB)", DEFAULTS.ram);
51
- const os = await ask(" OS", DEFAULTS.os);
178
+ console.log("\n Hardware Setup for Scout");
179
+ console.log(" Auto-detected values shown in brackets press Enter to accept.\n");
180
+ const gpu = await ask(" GPU", detected.gpu);
181
+ const vram = await ask(" VRAM", detected.vram);
182
+ const ram = await ask(" RAM", detected.ram);
183
+ const osName = await ask(" OS", detected.os);
52
184
  const notes = await ask(" Notes (optional, e.g. 'prefer uncensored models')");
53
185
  rl.close();
54
- const spec = { gpu, vram, ram, os };
186
+ const spec = { gpu, vram, ram, os: osName };
55
187
  if (notes)
56
188
  spec.notes = notes;
57
189
  saveHardwareSpec(spec);
@@ -1 +1 @@
1
- {"version":3,"file":"hardware.js","sourceRoot":"","sources":["../../src/config/hardware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hardware.js","sourceRoot":"","sources":["../../src/config/hardware.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@halfagiraf/clawx",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Terminal-first coding agent — runs locally with Ollama, DeepSeek, OpenAI, or any OpenAI-compatible endpoint",
5
5
  "type": "module",
6
6
  "bin": {