Skip to content

write pack install markers for brew upgrade reinstall#6

Closed
Esity wants to merge 733 commits intoOptum:mainfrom
LegionIO:feature/pack-install-markers
Closed

write pack install markers for brew upgrade reinstall#6
Esity wants to merge 733 commits intoOptum:mainfrom
LegionIO:feature/pack-install-markers

Conversation

@Esity
Copy link
Copy Markdown
Member

@Esity Esity commented Mar 31, 2026

Summary

  • legionio setup <pack> now writes ~/.legionio/.packs/<name> marker file and updates ~/.legionio/settings/packs.json on successful install
  • Markers are also written when re-running setup and all gems are already present
  • packs.json is sorted and handles corrupt JSON gracefully

Companion PR

Test plan

  • legionio setup agentic → verify ~/.legionio/.packs/agentic exists
  • Verify ~/.legionio/settings/packs.json contains {"packs": ["agentic"]}
  • Re-run legionio setup agentic → markers still present, reports already installed
  • legionio setup llm → both agentic and llm in packs.json
  • 4084 specs passing, 0 failures, rubocop clean

Esity added 30 commits March 23, 2026 13:59
restrict settings search paths to canonical directories (#25)
apply copilot review followup fixes (#25)
…al modules

- api/llm.rb sync path: caller: { source: 'api', path: request.path }
- api/prompts.rb: caller: { source: 'api', endpoint: 'prompts' }
- cli/commit, pr, review: caller: { source: 'cli', command: '<cmd>' }
- cli/prompt, image: caller: { source: 'cli', command: '<cmd>' }
- notebook/generator: caller: { source: 'cli', command: 'notebook' }
- trace_search: caller: { source: 'cli', command: 'trace' }
- extensions llm runner: caller: { source: 'extension', command: 'llm_runner' }
- update specs: chat_direct -> chat stubs, hash_including for caller kwarg
- Replace private Legion::LLM.chat_single call with public Legion::LLM.chat
- Add Guardrails::SYSTEM_CALLER constant using requested_by: nesting required
  by Pipeline::Profile.derive to resolve :system profile
- :system profile skips rbac, classification, billing, gaia_advisory,
  rag_context, and context_load steps, breaking the recursion loop where
  guardrails (called from inside the pipeline) would re-enter the pipeline
- Extend guardrails_spec with SYSTEM_CALLER structure tests and LLM call
  behavior specs using stub_const
Migrates the final unmigrated LLM call site in LegionIO.
`CLI::ChatCommand#create_chat` now passes `caller: { source: 'cli', command: 'chat' }`
completing Wave 5 of the caller identity migration.
- :lite ProcessRole: all subsystems enabled except crypt (no Vault)
- --lite CLI flag sets LEGION_MODE=lite and LEGION_LOCAL=true env vars
- Service#lite_mode? checks env var and settings[:mode]
- setup_local_mode handles lite mode with Transport::Local + mock_vault
- 3 new specs (1 lite role + 2 service lite_mode?)
Routes free-text intents to the best matching Capability Registry
entry. Tries daemon HTTP API first, falls back to in-process
Registry.find_by_intent + Ingress.run.

Examples:
  legion do "check consul health"
  legion do "list running tasks"
when keyword matching returns no results, classifies intent via
Legion::LLM.ask against the Capability Registry catalog. graceful
degradation when LLM is not available.
do_command try_llm_classify, api/costs metering_available?,
api/apollo apollo_data_connected? now log at debug level
instead of silently returning nil/false.
ModelComparison#cost_tracker_pricing, SystemStatus#fetch_health,
SystemStatus#fetch_ready, SessionStore#generate_summary,
SessionStore#read_session_meta, SaveMemory#ingest_to_apollo,
GenerateInsights#scheduling_status, GenerateInsights#llm_status
stub_const Legion::Extensions::MindGrowth::Client (not loaded
without lex-mind-growth gem), use plain double instead of
instance_double since real class is unavailable in test env
legion-transport >= 1.3.11: InProcess adapter, shutdown hang fix, Helper mixin
legion-tty >= 0.4.34: latest fixes
- legion setup agentic: one command for full cognitive stack
- legion setup llm: LLM routing only
- legion setup channels: Slack + Teams adapters
- legion setup packs: show installed/missing packs
- legion detect: recommends setup agentic when gaia/llm missing
- comment out Bootsnap.setup in exe/legion (matches exe/legionio)
…n-data >= 1.5.0

- overhaul `legionio check` with namespace labels and connection details
- add Legion::Cache::Local and Legion::Data::Local checks
- fix dependency skip cascade (skip-on-skip, not just skip-on-fail)
- `legionio version` lists all 13 legion-* gems, --full shows lex versions
- runner log output tagged with extension name
- transport and routes builders use tagged log helper
- require legion-data >= 1.5.0
Esity added 29 commits March 30, 2026 00:12
add workflow manifests for autofix, mind-growth, and factory pipelines
- fix version.rb downgrade: restore to 1.6.35 (was incorrectly set to 1.6.21 by swarm)
- fix guardrail score nil check: use unless .nil? so score of 0/0.0 is recorded
- add specs for retriever_span, reranker_span, and guardrail_span helpers
- take VERSION 1.6.36 from main
- fix Routes::Events::BUFFER_SIZE unqualified constant reference in openapi.rb
- move top-level stub constants into before block using stub_const to
  avoid cross-spec pollution
- change pending to skip in ownership transfer and queue drain examples
  so placeholder examples halt immediately instead of executing against
  missing production methods
lex-cortex has been fully replaced by legion-gaia. Having it in the
agentic pack causes a deprecation warning on every boot when GAIA is
running.
…ic-pack

remove deprecated lex-cortex from agentic setup pack
…ap-clean

add config reset command and bootstrap --clean flag
Helpers::Lex now automatically includes Cache, Transport, Task, and
Data helpers so actors, runners, absorbers, and hooks get methods like
cache_connected?, transport_connected?, and generate_task_id without
explicit opt-in. Absorbers::Base now includes Helpers::Lex (previously
included zero helper modules).
include all core helpers in Helpers::Lex and Absorbers::Base
write_pack_marker creates ~/.legionio/.packs/<name> touch file
and updates ~/.legionio/settings/packs.json with installed pack
names. markers are written on both fresh install and re-run when
all gems are already present.

companion to LegionIO/homebrew-tap#19 which reads these markers
during brew upgrade to reinstall packs after a Cellar wipe.
@Esity Esity closed this Mar 31, 2026
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.

1 participant