PR back to Optum#10
Merged
Merged
Conversation
read LEGION_PYTHON_VENV env var for venv path override
- normalize words in TriggerIndex.match to match build_from_registry normalization - store build_async! future and attach rescue handler for error visibility
…tion feat: trigger word tool injection
Adds Legion::Extensions::Builder::Skills mixin that discovers and registers Legion::LLM skill classes from each extension's skills/ directory into Legion::LLM::Skills::Registry during autobuild. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds require, include, skills_required? default, and build_skills call in autobuild so extensions can opt-in to skills loading by overriding skills_required? to return true. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Skip loading an extension that declares skills_required? = true when Legion::LLM::Skills is not loaded, consistent with the existing llm_required? guard pattern. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…xecute Replaces file-based skill discovery and execution with Registry delegation when Legion::LLM::Skills is loaded. Removes execute method entirely — all skill execution routes through the daemon API. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds GET/DELETE /api/skills routes for Registry-backed skill listing and active-skill cancellation. Registers Routes::Skills in api.rb. Also fixes the llm.rb inference endpoint to merge caller metadata with requested_tools so skill_invoke and changed_files context flow through the pipeline. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…Chat client skill_command.rb now calls the daemon API (/api/skills, /api/skills/:ns/:name, /api/skills/invoke) instead of loading skills locally. The daemon_chat.rb file was already present with the full DaemonChat implementation. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…specs Removes Connection include, wraps private helpers in no_commands block, and updates skill_command_spec to test the daemon-API-delegating interface. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Instead of skipping config.toml when it exists, upsert profile = "legionio" at the top while preserving all existing content. Idempotent: re-running setup proxy-mode won't duplicate the profile line.
…x-legionio functions When ~/.zshrc exists, generates ~/.zsh_legionio with shell wrapper functions and appends a source line to ~/.zshrc (idempotent). ~/.zsh_legionio is always overwritten on re-run so the base_url stays current with --host/--port options.
… cannot source parent shell
…ve for enterprise users
- packs command now shows python and proxy-mode status alongside gem packs, reading from ~/.legionio/.python-venv and ~/.legionio/.packs/proxy-mode markers - setup python writes ~/.legionio/.packs/python marker so it survives brew upgrades - setup proxy-mode writes ~/.legionio/.packs/proxy-mode marker - setup proxy-mode warns when llm pack is not installed
…onio shell function
…tting to legionio — prevents bleed into non-proxy sessions
…r_spec to handle legion-llm scheduling path
…h in settings_override_spec
…e logging helper component settings lookup
feat: add ledger replay and rollback migration scripts
- Replace legacy `profile = "legionio"` key (removed by Codex) with [model_providers.legionio] block in config.toml so provider appears in both CLI and Mac app model picker - Use api_key = "legion" static value instead of env_key so users never need to set an environment variable - Fix catalog format: slug/display_name instead of id/name, add supported_reasoning_levels so Codex parses it without error - Remove model_catalog_json from config.toml top level (strict schema breaks Mac app); it stays in legionio.config.toml for --profile use - codex-legionio() shell function: --provider -> --profile legionio
…legion-llm-minimum-version
fix: Codex proxy-mode config for CLI and Mac app compatibility
All loaded extensions now publish their runner data in one batched LexRegister message after boot, eliminating N individual queue messages and DB transactions. Register#save handles both batch arrays and legacy single hashes. - flush_pending_registrations! collects all opts into a single array - Removed redundant flush call from setup_identity ensure block - Single flush point remains in reload! after load_extensions
…_identity ensure block Registration flush is now consolidated in reload! after load_extensions, not in setup_identity's ensure block. Spec updated to verify this.
…lynomial regex - setup_command.rb: move ::JSON::ParserError rescue before StandardError to prevent shadowing (Lint/ShadowedException) - runner.rb: use possessive quantifier ([A-Z]++) to prevent regex backtracking on uncontrolled input (CodeQL alert)
The LLM HTTP surface is now owned entirely by legion-llm. LegionIO no longer defines or mounts its own LLM routes: - Remove lib/legion/api/llm.rb (460 lines) and its specs; api.rb now mounts Legion::LLM::API directly (guarded by defined?, since legion-llm is optional) instead of the old in-app Routes::Llm. - Migrate chat tools (consolidate_memory, reflect), chat_command, and the memory consolidator off direct in-process LLM calls. - Update library_routes / chat-tool specs to match; delete the now-obsolete in-app LLM route specs. - Add exe/replay_ledger, a one-off ledger data migration utility. Cleanups: - Remove the dev-only Rack::Unreloader code reloader (setup_dev_reloader + its caller + Gemfile dev group) — it was local-iteration tooling, not product code. - Restore the File.exist? guard on the lex-llm-* provider gem path loop so bundle install stays portable on machines/CI without every sibling repo checked out.
…otsnap - README: centered hero with tagline + badges and a 'Why LegionIO' highlights strip (four-products-in-one-gem, zero-infra lite mode, MCP-native, full HA). Add a 'Legion Ecosystem' section that one-line-summarizes each sibling gem (legion-llm/gaia/apollo/data/transport/cache/crypt/rbac/mcp/settings/logging/tty) and links to its repo, so name-drops elsewhere have a home for newcomers. - Correct the version and the bootsnap description: bootsnap is now opt-in (LEGION_BOOTSNAP=true), not an always-on optimization. - CLAUDE.md: fix the stale always-on bootsnap line, add a 'Where things live' most-touched-files map, and note LLM routes are owned by legion-llm. - AGENTS.md: expand the stub into real agent notes — entry points, guardrails, and the gotchas that prevent bugs (Legion::JSON symbol keys, ::JSON/::Process, Thor run, lite mode, LLM-route ownership). Docs only. Full rspec 5137/0, rubocop 0 offenses.
Migrate off in-app LLM API + minimum-version / CI hardening
Esity
added a commit
that referenced
this pull request
Jun 25, 2026
fix config scaffold writing to wrong default directory
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.