Class: Legion::API

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/legion/api.rb,
lib/legion/api/acp.rb,
lib/legion/api/llm.rb,
lib/legion/api/auth.rb,
lib/legion/api/gaia.rb,
lib/legion/api/logs.rb,
lib/legion/api/mesh.rb,
lib/legion/api/rbac.rb,
lib/legion/api/audit.rb,
lib/legion/api/costs.rb,
lib/legion/api/nodes.rb,
lib/legion/api/stats.rb,
lib/legion/api/tasks.rb,
lib/legion/api/token.rb,
lib/legion/api/apollo.rb,
lib/legion/api/chains.rb,
lib/legion/api/events.rb,
lib/legion/api/router.rb,
lib/legion/api/skills.rb,
lib/legion/api/traces.rb,
lib/legion/api/catalog.rb,
lib/legion/api/codegen.rb,
lib/legion/api/graphql.rb,
lib/legion/api/helpers.rb,
lib/legion/api/metrics.rb,
lib/legion/api/openapi.rb,
lib/legion/api/prompts.rb,
lib/legion/api/tenants.rb,
lib/legion/api/workers.rb,
lib/legion/api/capacity.rb,
lib/legion/api/metering.rb,
lib/legion/api/settings.rb,
lib/legion/api/webhooks.rb,
lib/legion/api/workflow.rb,
lib/legion/api/absorbers.rb,
lib/legion/api/auth_saml.rb,
lib/legion/api/coldstart.rb,
lib/legion/api/knowledge.rb,
lib/legion/api/org_chart.rb,
lib/legion/api/schedules.rb,
lib/legion/api/transport.rb,
lib/legion/api/auth_human.rb,
lib/legion/api/auth_teams.rb,
lib/legion/api/extensions.rb,
lib/legion/api/governance.rb,
lib/legion/api/validators.rb,
lib/legion/api/auth_worker.rb,
lib/legion/api/marketplace.rb,
lib/legion/api/lex_dispatch.rb,
lib/legion/api/tbi_patterns.rb,
lib/legion/api/relationships.rb,
lib/legion/api/sync_dispatch.rb,
lib/legion/api/graphql/schema.rb,
lib/legion/api/identity_audit.rb,
lib/legion/api/library_routes.rb,
lib/legion/api/middleware/auth.rb,
lib/legion/api/default_settings.rb,
lib/legion/api/inbound_webhooks.rb,
lib/legion/api/middleware/tenant.rb,
lib/legion/api/middleware/body_limit.rb,
lib/legion/api/middleware/rate_limit.rb,
lib/legion/api/graphql/resolvers/node.rb,
lib/legion/api/middleware/api_version.rb,
lib/legion/api/graphql/resolvers/tasks.rb,
lib/legion/api/graphql/types/node_type.rb,
lib/legion/api/graphql/types/task_type.rb,
lib/legion/api/graphql/types/query_type.rb,
lib/legion/api/graphql/resolvers/workers.rb,
lib/legion/api/graphql/types/base_object.rb,
lib/legion/api/graphql/types/worker_type.rb,
lib/legion/api/middleware/request_logger.rb,
lib/legion/api/graphql/resolvers/extensions.rb,
lib/legion/api/graphql/types/extension_type.rb

Defined Under Namespace

Modules: GraphQL, Helpers, Middleware, OpenAPI, Routes, Settings, SyncDispatch, Token, Validators Classes: Router

Class Method Summary collapse

Class Method Details

.mount_library_routes(gem_name, fallback_module, preferred_constant_path) ⇒ Object



156
157
158
159
160
161
162
163
164
165
# File 'lib/legion/api.rb', line 156

def mount_library_routes(gem_name, fallback_module, preferred_constant_path)
  preferred = constant_from_path(preferred_constant_path)
  if preferred.is_a?(Module)
    register_library_routes(gem_name, preferred)
  elsif router.library_names.include?(gem_name)
    register_library_routes(gem_name, router.library_routes.fetch(gem_name))
  else
    register fallback_module
  end
end

.register_library_routes(gem_name, routes_module) ⇒ Object

Register a library gem’s route module with the tier-aware router and mount it on this Sinatra app.

Call from the library gem’s boot/start method:

Legion::API.register_library_routes('llm', Legion::LLM::Routes) if defined?(Legion::API)

Parameters:

  • gem_name (String)

    short name for the library (e.g. ‘llm’, ‘apollo’)

  • routes_module (Module)

    a Sinatra::Extension module to register



13
14
15
16
17
18
19
# File 'lib/legion/api/library_routes.rb', line 13

def self.register_library_routes(gem_name, routes_module)
  existing = router.library_routes[gem_name.to_s]
  return routes_module if existing == routes_module

  router.register_library(gem_name, routes_module)
  register routes_module
end

.routerObject



152
153
154
# File 'lib/legion/api.rb', line 152

def router
  @router ||= Legion::API::Router.new
end