diff --git a/LifeOS/GETTING-STARTED.md b/LifeOS/GETTING-STARTED.md index 67d91ecf79..396aee2fef 100644 --- a/LifeOS/GETTING-STARTED.md +++ b/LifeOS/GETTING-STARTED.md @@ -29,6 +29,24 @@ Run it whenever anything feels off. Every ❌ line carries its own fix command. - **Auth:** none. - **Verify:** `Doctor.ts` → interceptor ✅ (skill present + browser found). +## ripgrep — fast filesystem search + +**Powers:** ContextSearch queries, the work sweep, and the model-drift scan. LifeOS treats the filesystem as its index instead of a vector store, so shipped tools shell out to `rg` directly. + +- **Install:** `brew install ripgrep` (Linux: `sudo apt-get install ripgrep`) +- **Auth:** none. +- **Verify:** `Doctor.ts` → ripgrep ✅ +- **Note:** the built-in `Grep` tool is already ripgrep-backed and works regardless; this is for the tools that spawn `rg` themselves. + +## ImageMagick — image inspection + +**Powers:** Interceptor's blank-frame guard, its measured zoom, and Art's composition steps. + +- **Install:** `brew install imagemagick` (Linux: `sudo apt-get install imagemagick`) +- **Auth:** none. +- **Verify:** `Doctor.ts` → imagemagick ✅ +- **Note:** without it, `Capture.sh` still returns a screenshot but prints `BLANK-FRAME GUARD SKIPPED` — the capture is then unchecked for a black or blank frame, so don't cite it as pixel-verified without looking at it yourself. + ## Cloudflare / wrangler — scheduled cloud flows **Powers:** the "runs while you sleep" layer (Arbol) and Worker deploys. diff --git a/LifeOS/install/LIFEOS/TOOLS/Doctor.ts b/LifeOS/install/LIFEOS/TOOLS/Doctor.ts index ae29aa60a1..1ad0868fa8 100644 --- a/LifeOS/install/LIFEOS/TOOLS/Doctor.ts +++ b/LifeOS/install/LIFEOS/TOOLS/Doctor.ts @@ -161,6 +161,30 @@ const CAPS: CapSpec[] = [ }, fixCmd: 'install Google Chrome (or Brave), then re-run: bun LIFEOS/TOOLS/Doctor.ts', }, + { + id: 'ripgrep', + title: 'Fast filesystem search (ripgrep)', + powers: 'ContextSearch queries, work sweeps, and the model-drift scan', + ttlHours: 24 * 7, + configured: () => true, // shipped code shells out to `rg`; absence is broken, not unconfigured + probeOffline: async () => + which('rg') + ? { ok: true, detail: 'rg on PATH' } + : { ok: false, detail: 'rg not on PATH — tools that shell out to it will fail' }, + fixCmd: 'brew install ripgrep (Linux: sudo apt-get install ripgrep)', + }, + { + id: 'imagemagick', + title: 'Image inspection (ImageMagick)', + powers: "Interceptor's blank-frame guard, measured zoom, and Art composition", + ttlHours: 24 * 7, + configured: () => true, // the capture guard and Art both shell out to `magick` + probeOffline: async () => + which('magick') + ? { ok: true, detail: 'magick on PATH' } + : { ok: false, detail: 'magick not on PATH — the blank-frame guard skips and captures go unchecked' }, + fixCmd: 'brew install imagemagick (Linux: sudo apt-get install imagemagick)', + }, { id: 'cloudflare', title: 'Scheduled cloud flows (Cloudflare/wrangler)',