Skip to content

PR back to Optum#10

Merged
Esity merged 1133 commits into
Optum:mainfrom
LegionIO:main
Jun 25, 2026
Merged

PR back to Optum#10
Esity merged 1133 commits into
Optum:mainfrom
LegionIO:main

Conversation

@Esity

@Esity Esity commented Apr 17, 2026

Copy link
Copy Markdown
Member

No description provided.

Esity and others added 30 commits April 9, 2026 18:11
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
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>
Esity added 28 commits June 2, 2026 17:48
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.
- 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
…tting to legionio — prevents bleed into non-proxy sessions
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
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 Esity merged commit 9810de5 into Optum:main Jun 25, 2026
14 checks passed
Esity added a commit that referenced this pull request Jun 25, 2026
fix config scaffold writing to wrong default directory
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants