Session-oriented runtime kit for the shared Amp CLI lane.
The tagged mailbox event atom is adapter detail. Higher-level callers should
consume AmpSdk.Stream or projected AmpSdk.Types.* messages instead of
treating the underlying session tag as core identity.
Summary
Types
@type execute_input() :: String.t() | [AmpSdk.Types.UserInputMessage.t() | map()]
@type start_option() :: {:input, execute_input()} | {:options, AmpSdk.Types.Options.t()} | {:subscriber, pid() | {pid(), reference() | :legacy}} | {:metadata, map()} | {:session_event_tag, atom()}
Functions
@spec build_args(AmpSdk.Types.Options.t()) :: [String.t()]
@spec build_args(AmpSdk.Types.Options.t(), :prompt | :json_input) :: [String.t()]
@spec build_invocation(keyword()) :: {:ok, CliSubprocessCore.Command.t()} | {:error, term()}
@spec capabilities() :: [atom()]
@spec close(pid()) :: :ok
@spec project_event(CliSubprocessCore.Event.t(), map()) :: {[AmpSdk.Types.stream_message()], map()}
@spec send_input(pid(), execute_input(), keyword()) :: :ok | {:error, term()}
@spec stderr_chunk(CliSubprocessCore.Event.t()) :: String.t() | nil