Skip to content

feat: replace Vexor with Probe for code search#91

Merged
maxritter merged 3 commits intomainfrom
dev
Mar 8, 2026
Merged

feat: replace Vexor with Probe for code search#91
maxritter merged 3 commits intomainfrom
dev

Conversation

@maxritter
Copy link
Owner

@maxritter maxritter commented Mar 8, 2026

Summary

Replace Vexor (semantic code search) with Probe across the entire codebase.

What changed

  • Search tool: Probe MCP (search_code/extract_code) is the primary search tool, CLI is secondary fallback
  • Installer: Removed ~300 lines of Vexor install code (MLX/CUDA/model management), replaced with simple npm install -g @probelabs/probe
  • Console dashboard: Replaced VexorStatus widget with UsageSummary (daily/monthly costs), removed VexorRoutes API endpoints
  • Rules & commands: Updated all 7 rules files, 4 command files, hook + tests
  • Docs site: Updated 9 TSX components
  • README & uninstall: Updated all references
  • Bundles: Rebuilt worker-service.cjs and viewer-bundle.js

Stats

  • 68 files changed, +451/-1626 lines
  • All 1128 Python tests pass
  • All 1049 Console tests pass
  • TypeScript typecheck clean
  • Zero Vexor references in source files

Install

npm install -g @probelabs/probe

MCP config (already in pilot/.mcp.json):

{"probe": {"command": "npx", "args": ["-y", "@probelabs/probe@latest", "agent", "--mcp"]}}

Summary by CodeRabbit

  • Documentation

    • Replaced Vexor with Probe across docs and site content; clarified Probe-based code search and updated UI text.
    • Explicitly described /spec as replacing Claude Code's built-in plan mode and added guidance to use /spec when a plan is needed.
  • Refactor

    • Switched installer flow and messaging from Vexor to Probe and simplified dependency setup.
    • Removed several interactive installer prompts to streamline non-interactive installs.
    • Updated installer final steps and uninstall messaging for Probe.

- Replace Vexor semantic search with Probe (MCP agent + CLI) across entire codebase
- MCP (search_code/extract_code) is primary search tool, CLI is secondary fallback
- Remove ~300 lines of Vexor install code (MLX/CUDA/model management), add simple npm install
- Replace VexorStatus dashboard widget with UsageSummary (daily/monthly costs)
- Remove VexorRoutes API endpoints from Console worker service
- Update all rules, commands, hooks, installer, docs site, README, and uninstall script
- Rebuild generated bundles (worker-service.cjs, viewer-bundle.js)
- Install via: npm install -g @probelabs/probe
- All 1128 Python tests and 1049 Console tests pass
@vercel
Copy link

vercel bot commented Mar 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
pilot-shell Ignored Ignored Preview Mar 8, 2026 10:10am

Request Review

@coderabbitai
Copy link

coderabbitai bot commented Mar 8, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: c2a2eec6-090f-4ddf-bcf6-1e0045488409

📥 Commits

Reviewing files that changed from the base of the PR and between 5dc256a and 0db341b.

📒 Files selected for processing (3)
  • README.md
  • docs/site/src/pages/docs/SyncSection.tsx
  • installer/steps/dependencies.py
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/site/src/pages/docs/SyncSection.tsx

Walkthrough

The PR replaces Vexor with Probe across docs and installer, swaps the Vexor MLX installation flow for a simplified Probe npm-based install, removes several interactive Console methods, updates uninstall/finalize messaging, and adjusts tests to the Probe-focused flows.

Changes

Cohort / File(s) Summary
Documentation Content Updates
README.md, docs/site/index.html, docs/site/src/components/DeepDiveSection.tsx, docs/site/src/components/FAQSection.tsx, docs/site/src/components/TechStack.tsx, docs/site/src/components/WorkflowSteps.tsx, docs/site/src/pages/docs/HooksSection.tsx, docs/site/src/pages/docs/InstallationSection.tsx, docs/site/src/pages/docs/McpServersSection.tsx, docs/site/src/pages/docs/QuickModeSection.tsx, docs/site/src/pages/docs/RulesSection.tsx, docs/site/src/pages/docs/SpecSection.tsx, docs/site/src/pages/docs/SyncSection.tsx
Replaced Vexor references with Probe; added explicit guidance that /spec replaces Claude Code's plan mode; adjusted copy, headers, and small formatting refinements across UI text.
Installer Dependency Refactor
installer/steps/dependencies.py
Removed Vexor/MLX-specific installation and index logic; added Probe-focused npm install flow (install_probe(), _is_probe_installed(), _install_probe_with_ui()); updated dependency orchestration to report probe.
Installer UI & Finalize
installer/steps/finalize.py, installer/ui.py, uninstall.sh
Finalizer step titles/commands lost emoji prefixes and updated /spec wording; removed interactive Console methods (confirm, select, password, close, newline); updated uninstall messaging to reference Probe instead of Vexor.
Tests
installer/tests/unit/steps/test_dependencies.py, installer/tests/unit/test_ui.py
Renamed/rewired tests from Vexor→Probe (TestVexorInstallTestProbeInstall, install_vexorinstall_probe, _is_vexor_installed_is_probe_installed); removed Vexor MLX-related tests and two non-interactive UI tests.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

released

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: replacing Vexor with Probe for code search functionality across the codebase.
Docstring Coverage ✅ Passed Docstring coverage is 88.24% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@claude
Copy link

claude bot commented Mar 8, 2026

Claude finished @maxritter's task in 2m 5s —— View job


Code Review: Replace Vexor with Probe

  • Gather context and read relevant files
  • Review installer changes (installer/)
  • Review pilot rules, commands, and hooks (pilot/)
  • Review docs site changes (docs/site/)
  • Review README and uninstall script
  • Post final review summary

Overall this is a clean, well-scoped migration. The simplification from ~300 lines of Vexor MLX/CUDA/model-management code to ~20 lines of npm install -g @probelabs/probe is a significant maintenance win. A few issues worth addressing:

Issues

1. README.md — </br> wrapped in backticks (regression)

README.md:9

-Start a task, grab a coffee, come back to production-grade code.</br>
+Start a task, grab a coffee, come back to production-grade code.`</br>`

The </br> tag is now rendered as inline code instead of a line break. This is a formatting regression — looks like an accidental edit during a bulk find-replace pass.

Fix this →

2. README.md — two more whitespace regressions

README.md (pilot commands table, licensing table):

-| Same as above, with optional flags (e.g., `--skip-update-check`)  |
+| Same as above, with optional flags (e.g.,`--skip-update-check`) |   # missing space before backtick
-community support via [GitHub Issues][gh-issues]
+community support via[GitHub Issues][gh-issues]   # missing space before link

Neither is critical but both look like artifacts from a formatting pass.

3. _is_probe_installed() — missing subprocess timeout

installer/steps/dependencies.py:111

result = subprocess.run(
    ["npm", "list", "-g", "@probelabs/probe", "--depth=0"],
    capture_output=True,
    text=True,
    # no timeout!
)

All other subprocess.run calls in this file include timeout=10 or similar. npm list -g can hang if npm is slow or locked. Should add timeout=15 for consistency and safety.

Fix this →

4. installer/ui.py — removed general-purpose methods

confirm(), select(), password(), close(), and newline() were removed because they were only used by the Vexor installation flow. The test coverage for them was also cleaned up correctly. This is fine if they're truly only needed for Vexor, but worth noting for anyone who added calls to Console.confirm() or Console.select() in downstream or untracked code — those would now break silently.

5. installer/steps/finalize.py — emoji removal unrelated to migration

-steps.append(("👨✈️ Launch Pilot Shell", "Run: pilot (in your project folder)"))
+steps.append(("Launch Pilot Shell", "Run: pilot (in your project folder)"))

This is a cosmetic change unrelated to the Vexor→Probe swap, and not mentioned in the PR description. Not a blocker, but it changes the installer's post-install UX appearance.

Positives

  • No remaining Vexor references in non-encrypted source files — clean migration confirmed.
  • Probe needs no pre-indexing, which removes the "first-time indexing can take 5-15 minutes" friction in /sync Phase 2. Big UX win.
  • install_probe() is correctly idempotent: checks via npm list -g before installing.
  • MCP-first, CLI-fallback hierarchy in research-tools.md and mcp-servers.md is well-documented and consistent.
  • Test coverage was correctly updated: old Vexor tests replaced with equivalent Probe tests, removed-method tests cleaned up alongside the methods.
  • uninstall.sh correctly updated the cleanup instructions to npm uninstall -g @probelabs/probe.
  • The docs site changes (SpecSection.tsx, QuickModeSection.tsx, WorkflowSteps.tsx) correctly add the /spec vs. plan mode messaging alongside the Probe reference update — useful context for users.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/site/src/pages/docs/SyncSection.tsx`:
- Around line 12-14: Update the explanatory paragraph in the SyncSection
component to match the Phase 2 entry that states "no indexing required": locate
the SyncSection.tsx component (where the phases array and the explanatory text
live) and change the sentence that says "build a semantic search index" (around
the paragraph referenced) to instead reflect Probe's no-indexing workflow—for
example, remove the phrase or replace it with wording like "use Probe without
building a semantic search index" so the paragraph aligns with the action "Check
Probe availability (no indexing required)" in the phases list.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 68516205-02f2-4364-8fb7-9d8f59499ea7

📥 Commits

Reviewing files that changed from the base of the PR and between 120aa50 and 5dc256a.

⛔ Files ignored due to path filters (49)
  • console/src/services/worker-service.ts is excluded by !console/**
  • console/src/services/worker/http/routes/TeamsRoutes.ts is excluded by !console/**
  • console/src/services/worker/http/routes/VexorRoutes.ts is excluded by !console/**
  • console/src/ui/viewer/hooks/useStats.ts is excluded by !console/**
  • console/src/ui/viewer/hooks/useTeams.ts is excluded by !console/**
  • console/src/ui/viewer/views/Dashboard/UsageSummary.tsx is excluded by !console/**
  • console/src/ui/viewer/views/Dashboard/VexorStatus.tsx is excluded by !console/**
  • console/src/ui/viewer/views/Dashboard/index.tsx is excluded by !console/**
  • console/src/ui/viewer/views/Teams/index.tsx is excluded by !console/**
  • console/tests/ui/search-removal.test.ts is excluded by !console/**
  • console/tests/ui/vexor-status-widget.test.ts is excluded by !console/**
  • console/tests/vexor/vexor-routes.test.ts is excluded by !console/**
  • console/tests/worker/teams-routes.test.ts is excluded by !console/**
  • console/tests/worker/vexor-removal.test.ts is excluded by !console/**
  • launcher/config.py is excluded by !launcher/**
  • launcher/helper.py is excluded by !launcher/**
  • launcher/model_config.py is excluded by !launcher/**
  • launcher/notify.py is excluded by !launcher/**
  • launcher/statusline/formatter.py is excluded by !launcher/**
  • launcher/statusline/providers.py is excluded by !launcher/**
  • launcher/statusline/widgets.py is excluded by !launcher/**
  • launcher/tests/unit/statusline/test_formatter.py is excluded by !launcher/**
  • launcher/tests/unit/statusline/test_plan_provider.py is excluded by !launcher/**
  • launcher/tests/unit/statusline/test_widgets.py is excluded by !launcher/**
  • launcher/tests/unit/test_helper.py is excluded by !launcher/**
  • launcher/tests/unit/test_model_config.py is excluded by !launcher/**
  • launcher/tests/unit/test_notify.py is excluded by !launcher/**
  • launcher/tests/unit/test_tool_redirect.py is excluded by !launcher/**
  • launcher/tests/unit/test_updater.py is excluded by !launcher/**
  • launcher/updater.py is excluded by !launcher/**
  • launcher/wrapper.py is excluded by !launcher/**
  • pilot/.mcp.json is excluded by !pilot/**
  • pilot/commands/spec-bugfix-plan.md is excluded by !pilot/**
  • pilot/commands/spec-implement.md is excluded by !pilot/**
  • pilot/commands/spec-plan.md is excluded by !pilot/**
  • pilot/commands/sync.md is excluded by !pilot/**
  • pilot/hooks/tests/test__util.py is excluded by !pilot/**
  • pilot/hooks/tool_redirect.py is excluded by !pilot/**
  • pilot/rules/cli-tools.md is excluded by !pilot/**
  • pilot/rules/code-review-reception.md is excluded by !pilot/**
  • pilot/rules/development-practices.md is excluded by !pilot/**
  • pilot/rules/mcp-servers.md is excluded by !pilot/**
  • pilot/rules/research-tools.md is excluded by !pilot/**
  • pilot/rules/task-and-workflow.md is excluded by !pilot/**
  • pilot/rules/testing.md is excluded by !pilot/**
  • pilot/scripts/worker-service.cjs is excluded by !pilot/**
  • pilot/settings.json is excluded by !pilot/**
  • pilot/ui/viewer-bundle.js is excluded by !pilot/**
  • pilot/ui/viewer.css is excluded by !pilot/**
📒 Files selected for processing (19)
  • README.md
  • docs/site/index.html
  • docs/site/src/components/DeepDiveSection.tsx
  • docs/site/src/components/FAQSection.tsx
  • docs/site/src/components/TechStack.tsx
  • docs/site/src/components/WorkflowSteps.tsx
  • docs/site/src/pages/docs/HooksSection.tsx
  • docs/site/src/pages/docs/InstallationSection.tsx
  • docs/site/src/pages/docs/McpServersSection.tsx
  • docs/site/src/pages/docs/QuickModeSection.tsx
  • docs/site/src/pages/docs/RulesSection.tsx
  • docs/site/src/pages/docs/SpecSection.tsx
  • docs/site/src/pages/docs/SyncSection.tsx
  • installer/steps/dependencies.py
  • installer/steps/finalize.py
  • installer/tests/unit/steps/test_dependencies.py
  • installer/tests/unit/test_ui.py
  • installer/ui.py
  • uninstall.sh
💤 Files with no reviewable changes (2)
  • installer/tests/unit/test_ui.py
  • installer/ui.py

- Fix README formatting regressions (backtick-wrapped </br>, missing spaces)
- Add timeout=15 to _is_probe_installed() subprocess call
- Remove stale 'build semantic search index' text from SyncSection
@claude
Copy link

claude bot commented Mar 8, 2026

Claude finished @maxritter's task in 1m 38s —— View job


Incremental Code Review

Reviewing changes pushed to: README.md, docs/site/src/pages/docs/SyncSection.tsx, installer/steps/dependencies.py


✅ Resolved from prior review

  • README.md line 9</br> backtick regression fixed. Tag renders correctly now.
  • README.md whitespace regressions — Space before `--skip-update-check` and space before [GitHub Issues] link are both present and correct.
  • _is_probe_installed() timeouttimeout=15 is now present (dependencies.py:115). Matches the pattern used elsewhere in the file.
  • SyncSection.tsx paragraph — The "build a semantic search index" phrase has been removed from SyncSection.tsx:55–65. The paragraph now reads "explore your project structure, discover your conventions and undocumented patterns..." which is consistent with Probe's no-indexing approach. CodeRabbit's inline comment is addressed.

🔴 New issue

README.md:162 — "builds a search index" is a leftover Vexor reference

| `/sync`  | Explores your codebase, discovers conventions, builds a search index, updates project rules. ... |

The /sync command table still says "builds a search index." This contradicts the Phase 2 entry in SyncSection.tsx ("Check Probe availability (no indexing required)") and the general Probe migration messaging. The SyncSection paragraph was fixed in this push but the README table was missed.

Fix this →


Still open (from prior review, no changes in this push)

  • installer/steps/finalize.py — emoji removal is cosmetic and unrelated to the Vexor→Probe migration (not a blocker)
  • installer/ui.pyconfirm(), select(), password() removed; downstream callers of these methods would break silently (worth noting for awareness)

@maxritter maxritter merged commit 7ccf96d into main Mar 8, 2026
13 checks passed
github-actions bot pushed a commit that referenced this pull request Mar 8, 2026
# [7.3.0](v7.2.2...v7.3.0) (2026-03-08)

### Features

* replace Vexor with Probe for code search ([#91](#91)) ([7ccf96d](7ccf96d))
@github-actions
Copy link
Contributor

github-actions bot commented Mar 8, 2026

🎉 This PR is included in version 7.3.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@maxritter maxritter deleted the dev branch March 8, 2026 10:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant