Module: Terret

Defined in:
lib/terret/cli.rb,
lib/terret/boot.rb,
lib/terret/home.rb,
lib/terret/doctor.rb,
lib/terret/version.rb,
lib/terret/composition.rb,
lib/terret/schema_gems.rb

Defined Under Namespace

Modules: CLI, Composition, Doctor, Meta Classes: Boot, Home

Constant Summary collapse

SCHEMA_GEMS =

Every gem whose services declare a Hames::Schema, as require paths. This is the single source rake config:catalog and the schema tests both read, so a newly configurable gem is added in one place. Split across two lists, a gem added to only one would be silently absent from the catalog with CI green.

It is the base bundle's own requires plus the interface/adapter gems that ship schemas but are not part of terret-base (ws, mcp, morph).

%w[
  terret/store/sqlite
  terret/openrouter
  terret/exec
  terret/tools_std
  terret/sandbox/docker
  terret/ws
  terret/acp
  terret/mcp
  terret/morph
].freeze

Class Method Summary collapse

Class Method Details

.boot(profile:, patches: [], allow_config_ruby: false, home: nil) ⇒ Object

Resolve the layers, hand the row list to the Hames loader, return the booted context (docs/composition.md §7). That is the whole surface, and its shape is the embeddability goal made concrete: a Rails app calls this in an initializer and holds the ctx, with no process to supervise and no socket to speak.



31
32
33
34
# File 'lib/terret/boot.rb', line 31

def self.boot(profile:, patches: [], allow_config_ruby: false, home: nil)
  Boot.new(Composition.resolve(profile: profile, home: home, patches: patches),
           allow_config_ruby: allow_config_ruby).boot!
end