LemonCore.RunRequest (lemon_core v0.1.0)

View Source

Canonical run submission contract shared by router-facing callers.

This module centralizes normalization for run submission fields so different entry points (channels, control plane, automation) can submit consistently to the router orchestrator.

Summary

Types

origin()

@type origin() :: :channel | :control_plane | :cron | :node | :unknown | atom()

queue_mode()

@type queue_mode() ::
  :collect | :followup | :steer | :steer_backlog | :interrupt | term()

t()

@type t() :: %LemonCore.RunRequest{
  agent_id: term(),
  cwd: term(),
  engine_id: term(),
  images: [map()],
  meta: map(),
  model: term(),
  origin: origin(),
  prompt: term(),
  queue_mode: queue_mode(),
  resume: LemonCore.ResumeToken.t() | nil,
  run_id: binary() | nil,
  session_key: binary() | nil,
  tool_policy: map() | nil
}

Functions

new(attrs)

@spec new(keyword() | map()) :: t()

Build a normalized run request from a keyword list or map.

normalize(request)

@spec normalize(t() | map()) :: t()

Normalize request input into the canonical run request struct.

Accepts %RunRequest{} or maps with atom/string keys.

normalize_agent_id(agent_id, session_key)

@spec normalize_agent_id(term(), term()) :: term()

normalize_cwd(cwd)

@spec normalize_cwd(term()) :: term()

normalize_engine_id(engine_id)

@spec normalize_engine_id(term()) :: term()

normalize_images(images)

@spec normalize_images(term()) :: [map()]

normalize_meta(meta)

@spec normalize_meta(term()) :: map()

normalize_model(model)

@spec normalize_model(term()) :: term()

normalize_origin(origin)

@spec normalize_origin(term()) :: origin()

normalize_prompt(prompt)

@spec normalize_prompt(term()) :: term()

normalize_queue_mode(queue_mode)

@spec normalize_queue_mode(term()) :: queue_mode()

normalize_resume(resume)

@spec normalize_resume(term()) :: LemonCore.ResumeToken.t() | nil

normalize_run_id(run_id)

@spec normalize_run_id(term()) :: binary() | nil

normalize_session_key(session_key)

@spec normalize_session_key(term()) :: term()

normalize_tool_policy(tool_policy)

@spec normalize_tool_policy(term()) :: map() | nil