LemonCliRunners.OpencodeSubagent (lemon_cli_runners v0.1.0)

View Source

High-level API for using OpenCode (opencode CLI) as a collaborating subagent.

Summary

Types

An OpenCode subagent session

Normalized event from the subagent

Types

session()

@type session() :: %{
  pid: pid(),
  stream: LemonAgent.EventStream.t(),
  resume_token: LemonCore.ResumeToken.t() | nil,
  token_agent: pid() | nil,
  cwd: String.t()
}

An OpenCode subagent session

subagent_event()

@type subagent_event() ::
  {:started, LemonCore.ResumeToken.t()}
  | {:action, action :: map(), phase :: atom(), opts :: keyword()}
  | {:completed, answer :: String.t(), opts :: keyword()}
  | {:error, reason :: term()}

Normalized event from the subagent

Functions

collect_answer(session)

@spec collect_answer(session()) :: String.t()

continue(session, prompt, opts \\ [])

@spec continue(session(), String.t(), keyword()) ::
  {:ok, session()} | {:error, term()}

events(session)

@spec events(session()) :: Enumerable.t()

resume(token, opts)

@spec resume(
  LemonCore.ResumeToken.t(),
  keyword()
) :: {:ok, session()} | {:error, term()}

resume_token(session)

@spec resume_token(session()) :: LemonCore.ResumeToken.t() | nil

run!(opts)

@spec run!(keyword()) :: String.t()

start(opts)

@spec start(keyword()) :: {:ok, session()} | {:error, term()}