Each server.py search/rebuild invocation was a fresh process that reloaded
the embedding and reranker models from disk before answering a single
query. Add an optional daemon (server.py daemon) that keeps both models
resident in memory and serves repeated queries, across repository roots,
over a local socket/pipe.
search and rebuild now try the daemon first, spawn one on a cache miss
(guarded by an exclusive lock file to avoid duplicate spawns), and fall
back to the original one-shot in-process worker if the daemon cannot be
reached or started, so behavior is unchanged when the daemon is
unavailable. The daemon exits on its own after 30 minutes of inactivity.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Pin the Qwen embedding/reranker models to specific commit revisions (and
sentence-transformers to the exact version already in use) so index
builds are reproducible instead of floating on each model's main branch.
Also move the encoder and reranker instances to module-level singletons
shared by every Index, instead of one pair per instance, so a process
serving multiple repository roots only loads each model once.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Repositories with more than 2000 indexable files silently lost the
remainder during indexing. Make the cap configurable via
SEMANTIC_RETRIEVAL_MAX_FILES (default unchanged) and print an explicit
stderr warning naming the repository when it is reached, instead of
truncating without any signal.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The reviewer agent's tools field now resolves to Bash or PowerShell
depending on the package, so assert against the shell-specific value
instead of the old invalid Read,Diff,Search profile.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Check every generated agent's tools frontmatter against the set of real
Claude Code tool names, so an unrecognized name fails validate-config.py
(and therefore the build) instead of silently shipping a broken agent.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Mirror the PowerShell build's __SHELL__ resolution so both entry points
stay behaviorally equivalent.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replace __SHELL__ in each generated Claude agent's tools field with
PowerShell or Bash depending on the package being built, so a role that
needs shell execution only gets the one matching its target shell.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The entrypoint test now supplies a fourth answer for the "Uninstall
... and reinstall via npm?" prompt install.ps1/install.sh ask after
the existing three install options.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
install.sh now asks whether to uninstall and reinstall the selected
client CLI(s) via npm, using the helpers added to install-options.sh.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
install.ps1 now asks whether to uninstall and reinstall the selected
client CLI(s) via npm, using the helpers added to install-options.ps1.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
global_npm_package, cli_npm_package, read_cli_reinstall_option, and
invoke_cli_reinstall are the Bash equivalent of the PowerShell npm
reinstall helpers. Not wired into install.sh yet.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Test-GlobalNpmPackage, Get-CliNpmPackage, Read-CliReinstallOption, and
Invoke-CliReinstall let install.ps1 offer uninstalling and reinstalling
a client CLI through npm. Not wired into install.ps1 yet.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bash equivalent of uninstall.ps1: removes managed files, extension/
skill ledger entries, semantic retrieval, and the saved Quickupdate
selection for a selected client.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Removes managed files, extension/skill ledger entries, semantic
retrieval, and the saved Quickupdate selection for a selected client,
reusing the same manifest-sync backup and warn-and-retain semantics as
install and update.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>