moon add colmugx/acpimport {
"colmugx/acp"
}///|
fn agent_endpoint() -> @acp.AgentEndpoint {
let spec = @acp.agent_spec(
info={
name: "my-agent",
title: @acp.ProtocolNullable::Omitted,
version: "0.1.0",
meta: @acp.ProtocolNullable::Omitted,
},
sessions=@acp.agent_session_service(new_session~, prompt~, cancel~),
support=@acp.agent_support(),
).unwrap()
@acp.agent_endpoint_from_spec(spec)
}
///|
fn agent_initial_state(endpoint : @acp.AgentEndpoint) -> @acp.AgentAdapterState {
let config : @acp.AgentProtocolConfig = {
agent_capabilities: @acp.ProtocolNullable::Value(endpoint.capabilities()),
auth_methods: endpoint.auth_methods(),
agent_info: @acp.ProtocolNullable::Omitted,
}
@acp.agent_adapter_state_new(protocol=@acp.agent_protocol_state_new(config~))
}
///|
async fn new_session(
_context : @acp.AgentContext,
_params : @acp.NewSessionParams,
) -> @acp.NewSessionResult {
{
session_id: "session-1",
modes: @acp.ProtocolNullable::Omitted,
config_options: @acp.ProtocolNullable::Omitted,
meta: @acp.ProtocolNullable::Omitted,
}
}
///|
async fn prompt(
context : @acp.AgentContext,
_params : @acp.PromptParams,
) -> @acp.PromptResult {
context.session_update({
session_id: "session-1",
update: @acp.SessionUpdate::AgentMessageChunk({
content: @acp.ContentBlock::Text({
annotations: @acp.ProtocolNullable::Omitted,
text: "Working on it...",
meta: @acp.ProtocolNullable::Omitted,
}),
message_id: @acp.ProtocolNullable::Value("message-1"),
meta: @acp.ProtocolNullable::Omitted,
}),
meta: @acp.ProtocolNullable::Omitted,
})
let permission = context.request_permission(permission_request())
let _selected = match permission.outcome {
@acp.RequestPermissionOutcome::Selected(outcome) => outcome.option_id
@acp.RequestPermissionOutcome::Cancelled => "cancelled"
}
{
stop_reason: @acp.StopReason::EndTurn,
meta: @acp.ProtocolNullable::Omitted,
}
}
///|
async fn cancel(
_context : @acp.AgentContext,
_params : @acp.CancelParams,
) -> Unit {
()
}
///|
async fn main {
let endpoint = agent_endpoint()
@acp.agent_serve_stdio_with_outbound(
endpoint~,
context_factory=channel => @acp.agent_context_over_channel(channel~),
initial_state=agent_initial_state(endpoint),
)
}import {
"colmugx/acp"
"colmugx/reader"
"moonbitlang/async"
"moonbitlang/async/aqueue" @aqueue
"moonbitlang/core/json" @json
}///|
fn client_endpoint(
updates : Array[@acp.SessionUpdateParams],
) -> @acp.ClientEndpoint {
let spec = @acp.client_spec(
info={
name: "my-client",
title: @acp.ProtocolNullable::Omitted,
version: "0.1.0",
meta: @acp.ProtocolNullable::Omitted,
},
session=@acp.client_session_service(
session_update=async fn(params : @acp.SessionUpdateParams) {
updates.push(params) // typed update, in wire order
},
request_permission=async fn(
request : @acp.RequestPermissionRequest,
) -> @acp.RequestPermissionResponse {
{
outcome: @acp.RequestPermissionOutcome::Selected({
option_id: request.options[0].option_id,
meta: @acp.ProtocolNullable::Omitted,
}),
meta: @acp.ProtocolNullable::Omitted,
}
},
),
).unwrap()
@reader.Reader::run(@acp.client_program(@reader.Reader::pure(spec)), ()).unwrap()
}
///|
async fn main {
let updates : Array[@acp.SessionUpdateParams] = []
let endpoint = client_endpoint(updates)
let connections : @aqueue.Queue[@acp.ClientConnection] = Queue(kind=Unbounded)
@async.with_task_group(group => {
let driver = group.spawn(() => {
let connection = connections.get()
connection.initialize({
protocol_version: 1,
client_capabilities: @acp.ProtocolNullable::Omitted,
client_info: @acp.ProtocolNullable::Omitted,
meta: @acp.ProtocolNullable::Omitted,
})
let session = connection.new_session({
cwd: "/",
additional_directories: @acp.ProtocolNullable::Omitted,
mcp_servers: [],
meta: @acp.ProtocolNullable::Omitted,
})
let result = connection.prompt({
session_id: session.session_id,
prompt: [],
meta: @acp.ProtocolNullable::Omitted,
})
ignore(result) // result.stop_reason / result.meta carry the typed outcome
})
@acp.client_connect_process(
endpoint_factory=channel => {
let _ = connections.try_put(
@acp.client_connection_over_channel(channel~),
) catch {
_ => false
}
endpoint
},
initial_state=@acp.client_adapter_state_new(
protocol=@acp.client_protocol_state_ready(
capabilities=@acp.ProtocolNullable::Value(endpoint.capabilities()),
),
),
handlers={
request: _ => {
@acp.RuntimeHandlerResult::HandlerSuccess(@json.Json::null())
},
notification: _ => (),
response: _ => (),
outbound_failure: None,
},
command="path/to/agent-binary",
)
driver.wait()
})
// Fold the recorded updates with the pure consumer fold: chunks sharing
// one messageId aggregate into one message and tool-call updates patch
// the tracked call (used end to end in tests/interop/interop_test.mbt).
let folded = @acp.session_update_fold(known_modes=[])
println("messages: \{folded.agent_messages.length()}")
}| Concern | Facade exports |
|---|---|
| JSON-RPC envelope & framing | JsonRpcRequest, JsonRpcMessage, jsonrpc_encode, jsonrpc_decode, framing_feed, framing_finish |
| ACP v1 models & codecs | typed *_from_json / *_to_json per model, decode_agent_request, decode_client_request, acp_v1_method_manifest |
| Agent composition | agent_spec, agent_session_service, agent_support, agent_auth_service, agent_endpoint_from_spec, AgentContext |
| Client composition | client_spec, client_session_service, client_file_system_service, client_terminal_service, client_elicitation_service, client_program |
| Connections & outbound | ClientConnection, client_connection_over_channel, agent_context_over_channel |
| Runners | agent_serve_stdio(_with_outbound), client_connect_process, agent_runtime_run, client_runtime_run, connection_runtime_run_owner(_with_outbound) |
| Initial state & fold | agent_protocol_state_new, agent_adapter_state_new, client_protocol_state_new, client_protocol_state_ready, client_adapter_state_new, session_update_fold |
| Ports & trace | runtime_stdio_ports, runtime_process_ports, RuntimeHandlerPort, runtime_default_options, runtime_stderr_trace |
| Errors | HandlerError, AgentCompositionError, ClientCompositionError, AgentContextError, ClientConnectionError, RuntimeError |
type AgentContextRequestBroker = async (ClientRequest) -> Result[AgentOutboundReply, AgentContextError]type AgentSetConfigOptionHandler = async (AgentContext, SetSessionConfigOptionParams) -> SetSessionConfigOptionResulttype ClientTerminalWaitForExitHandler = async (TerminalWaitForExitParams) -> TerminalWaitForExitResultlet JSON_RPC_VERSION : Stringfn agent_auth_capabilities_from_json(value : Json, path? : String) -> AgentAuthCapabilities raise ProtocolDecodeErrorfn agent_auth_service(methods~ : Array[AuthMethod], authenticate~ : async (AgentContext, AuthenticateParams) -> AuthenticateResult, logout? : async (AgentContext, LogoutParams) -> LogoutResult) -> AgentAuthService raise AgentCompositionErrorfn agent_capabilities_from_json(value : Json, path? : String) -> AgentCapabilities raise ProtocolDecodeErrorfn agent_context(request_broker~ : async (ClientRequest) -> Result[AgentOutboundReply, AgentContextError], notification_broker~ : async (ClientNotification) -> Result[Unit, AgentContextError]) -> AgentContextfn agent_mcp_capabilities_from_json(value : Json, path? : String) -> AgentMcpCapabilities raise ProtocolDecodeErrorfn[Env] agent_program(spec_program : Reader[Env, Result[AgentSpec, AgentCompositionError]]) -> Reader[Env, Result[AgentEndpoint, AgentCompositionError]]fn[Env] agent_program_from(project : (Env) -> Result[AgentSpec, AgentCompositionError]) -> Reader[Env, Result[AgentEndpoint, AgentCompositionError]]fn agent_prompt_capabilities_from_json(value : Json, path? : String) -> AgentPromptCapabilities raise ProtocolDecodeErrorfn agent_prompt_capabilities_to_json(value : AgentPromptCapabilities) -> Json raise ProtocolDecodeErrorfn agent_runtime_owner_port(endpoint~ : AgentEndpoint, context~ : AgentContext, initial_state~ : AgentAdapterState) -> RuntimeOwnerPort[AgentAdapterState, AgentAdapterInvocation, AgentAdapterCompletion, AgentAdapterCommand]async fn agent_runtime_run(endpoint~ : AgentEndpoint, context~ : AgentContext, initial_state~ : AgentAdapterState, ports~ : RuntimePorts, options~ : RuntimeOptions) -> Unitasync fn agent_serve_stdio(endpoint~ : AgentEndpoint, context~ : AgentContext, initial_state~ : AgentAdapterState, options? : RuntimeOptions, trace? : (RuntimeTraceEvent) -> Unit) -> Unitasync fn agent_serve_stdio_with_outbound(endpoint~ : AgentEndpoint, context_factory~ : (RuntimeOutboundChannel[AgentAdapterCompletion]) -> AgentContext, initial_state~ : AgentAdapterState, options? : RuntimeOptions, trace? : (RuntimeTraceEvent) -> Unit) -> Unitfn agent_session_capabilities_from_json(value : Json, path? : String) -> AgentSessionCapabilities raise ProtocolDecodeErrorfn agent_session_capabilities_to_json(value : AgentSessionCapabilities) -> Json raise ProtocolDecodeErrorfn agent_session_service(new_session~ : async (AgentContext, NewSessionParams) -> NewSessionResult, prompt~ : async (AgentContext, PromptParams) -> PromptResult, cancel~ : async (AgentContext, CancelParams) -> Unit, load? : async (AgentContext, LoadSessionParams) -> LoadSessionResult, resume_session? : async (AgentContext, ResumeSessionParams) -> ResumeSessionResult, list? : async (AgentContext, ListSessionsParams) -> ListSessionsResult, delete? : async (AgentContext, DeleteSessionParams) -> DeleteSessionResult, close? : async (AgentContext, CloseSessionParams) -> CloseSessionResult, set_mode? : async (AgentContext, SetSessionModeParams) -> SetSessionModeResult, set_config_option? : async (AgentContext, SetSessionConfigOptionParams) -> SetSessionConfigOptionResult) -> AgentSessionServicefn agent_spec(info~ : Implementation, sessions~ : AgentSessionService, support~ : AgentSupport, auth? : AgentAuthService) -> Result[AgentSpec, AgentCompositionError]fn agent_support(prompt_image? : Bool, prompt_audio? : Bool, prompt_embedded_context? : Bool, mcp_http? : Bool, mcp_sse? : Bool, additional_directories? : Bool) -> AgentSupportfn authenticate_params_from_json(value : Json, path? : String) -> AuthenticateParams raise ProtocolDecodeErrorfn authenticate_result_from_json(value : Json, path? : String) -> AuthenticateResult raise ProtocolDecodeErrorfn available_command_input_from_json(value : Json, path? : String) -> AvailableCommandInput raise ProtocolDecodeErrorfn available_commands_update_from_json(value : Json, path? : String) -> AvailableCommandsUpdate raise ProtocolDecodeErrorfn available_commands_update_to_json(value : AvailableCommandsUpdate) -> Json raise ProtocolDecodeErrorfn blob_resource_contents_from_json(value : Json, path? : String) -> BlobResourceContents raise ProtocolDecodeErrorfn capability_marker_from_json(value : Json, path? : String) -> CapabilityMarker raise ProtocolDecodeErrorfn client_capabilities_from_json(value : Json, path? : String) -> ClientCapabilities raise ProtocolDecodeErrorfn client_config_option_capabilities_from_json(value : Json, path? : String) -> ClientConfigOptionCapabilities raise ProtocolDecodeErrorfn client_config_option_capabilities_to_json(value : ClientConfigOptionCapabilities) -> Json raise ProtocolDecodeErrorasync fn client_connect_process(endpoint_factory~ : (RuntimeOutboundChannel[ClientAdapterCompletion]) -> ClientEndpoint, initial_state~ : ClientAdapterState, handlers~ : RuntimeHandlerPort, command~ : String, args? : Array[String], extra_env? : Map[String, String], inherit_env? : Bool, spawned? : (RuntimeProcessPorts) -> Unit, options? : RuntimeOptions, trace? : (RuntimeTraceEvent) -> Unit) -> Unitfn client_connection(request_broker~ : async (AgentRequest) -> Result[ClientReply, ClientConnectionError], notification_broker~ : (AgentNotification) -> Result[Unit, ClientConnectionError]) -> ClientConnectionfn client_elicitation_capabilities_from_json(value : Json, path? : String) -> ClientElicitationCapabilities raise ProtocolDecodeErrorfn client_elicitation_capabilities_to_json(value : ClientElicitationCapabilities) -> Json raise ProtocolDecodeErrorfn client_elicitation_service(form? : async (ElicitationFormParams) -> ElicitationCreateResult, url? : async (ElicitationUrlParams) -> ElicitationCreateResult, complete? : async (ElicitationCompleteParams) -> Unit) -> ClientElicitationService raise ClientCompositionErrorfn client_file_system_capabilities_from_json(value : Json, path? : String) -> ClientFileSystemCapabilities raise ProtocolDecodeErrorfn client_file_system_capabilities_to_json(value : ClientFileSystemCapabilities) -> Json raise ProtocolDecodeErrorfn client_file_system_service(read? : async (ReadTextFileParams) -> ReadTextFileResult, write? : async (WriteTextFileParams) -> WriteTextFileResult) -> ClientFileSystemService raise ClientCompositionErrorfn[Env] client_program(spec_program : Reader[Env, Result[ClientSpec, ClientCompositionError]]) -> Reader[Env, Result[ClientEndpoint, ClientCompositionError]]fn[Env] client_program_from(project : (Env) -> Result[ClientSpec, ClientCompositionError]) -> Reader[Env, Result[ClientEndpoint, ClientCompositionError]]fn client_protocol_state_new(capabilities~ : ProtocolNullable[ClientCapabilities]) -> ClientProtocolStatefn client_protocol_state_ready(capabilities~ : ProtocolNullable[ClientCapabilities]) -> ClientProtocolStatefn client_runtime_owner_port(endpoint~ : ClientEndpoint, initial_state~ : ClientAdapterState) -> RuntimeOwnerPort[ClientAdapterState, ClientAdapterInvocation, ClientAdapterCompletion, ClientAdapterCommand]async fn client_runtime_run(endpoint~ : ClientEndpoint, initial_state~ : ClientAdapterState, ports~ : RuntimePorts, options~ : RuntimeOptions) -> Unitfn client_session_capabilities_from_json(value : Json, path? : String) -> ClientSessionCapabilities raise ProtocolDecodeErrorfn client_session_capabilities_to_json(value : ClientSessionCapabilities) -> Json raise ProtocolDecodeErrorfn client_session_service(session_update~ : async (SessionUpdateParams) -> Unit, request_permission~ : async (RequestPermissionRequest) -> RequestPermissionResponse) -> ClientSessionServicefn client_spec(info~ : Implementation, session~ : ClientSessionService, file_system? : ClientFileSystemService, terminal? : ClientTerminalService, elicitation? : ClientElicitationService) -> Result[ClientSpec, ClientCompositionError]fn client_terminal_service(create~ : async (TerminalCreateParams) -> TerminalCreateResult, output~ : async (TerminalOutputParams) -> TerminalOutputResult, wait_for_exit~ : async (TerminalWaitForExitParams) -> TerminalWaitForExitResult, kill~ : async (TerminalKillParams) -> TerminalKillResult, release~ : async (TerminalReleaseParams) -> TerminalReleaseResult) -> ClientTerminalServicefn close_session_params_from_json(value : Json, path? : String) -> CloseSessionParams raise ProtocolDecodeErrorfn close_session_result_from_json(value : Json, path? : String) -> CloseSessionResult raise ProtocolDecodeErrorfn config_option_update_from_json(value : Json, path? : String) -> ConfigOptionUpdate raise ProtocolDecodeErrorasync fn[S, I, C, E] connection_runtime_run_owner(ports : RuntimePorts, options : RuntimeOptions, owner_port : RuntimeOwnerPort[S, I, C, E]) -> Unitasync fn[S, I, C, E] connection_runtime_run_owner_with_outbound(ports : RuntimePorts, options : RuntimeOptions, channel_factory : (RuntimeOutboundChannel[C]) -> RuntimeOwnerPort[S, I, C, E]) -> Unitfn current_mode_update_from_json(value : Json, path? : String) -> CurrentModeUpdate raise ProtocolDecodeErrorfn decode_agent_notification(method_name : String, params : Json?) -> AgentNotification raise AgentMessageErrorfn decode_agent_request(method_name : String, params : Json?) -> AgentRequest raise AgentMessageErrorfn decode_client_notification(method_name : String, params : Json?) -> ClientNotification raise ClientMessageErrorfn decode_client_request(method_name : String, params : Json?) -> ClientRequest raise ClientMessageErrorfn delete_session_params_from_json(value : Json, path? : String) -> DeleteSessionParams raise ProtocolDecodeErrorfn delete_session_result_from_json(value : Json, path? : String) -> DeleteSessionResult raise ProtocolDecodeErrorfn elicitation_complete_params_from_json(value : Json, path? : String) -> ElicitationCompleteParams raise ProtocolDecodeErrorfn elicitation_complete_params_to_json(value : ElicitationCompleteParams) -> Json raise ProtocolDecodeErrorfn elicitation_create_params_from_json(value : Json, path? : String) -> ElicitationCreateParams raise ProtocolDecodeErrorfn elicitation_create_params_to_json(value : ElicitationCreateParams) -> Json raise ProtocolDecodeErrorfn elicitation_create_result_from_json(value : Json, path? : String) -> ElicitationCreateResult raise ProtocolDecodeErrorfn elicitation_create_result_to_json(value : ElicitationCreateResult) -> Json raise ProtocolDecodeErrorfn embedded_resource_from_json(value : Json, path? : String) -> EmbeddedResource raise ProtocolDecodeErrorfn embedded_resource_resource_from_json(value : Json, path? : String) -> EmbeddedResourceResource raise ProtocolDecodeErrorfn embedded_resource_resource_to_json(value : EmbeddedResourceResource) -> Json raise ProtocolDecodeErrorfn implementation_from_json(value : Json, path? : String) -> Implementation raise ProtocolDecodeErrorfn initialize_params_from_json(value : Json, path? : String) -> InitializeParams raise ProtocolDecodeErrorfn initialize_result_from_json(value : Json, path? : String) -> InitializeResult raise ProtocolDecodeErrorfn jsonrpc_decode_int64(value : Double, repr : String?, path~ : String) -> Int64 raise JsonRpcCodecErrorfn list_sessions_params_from_json(value : Json, path? : String) -> ListSessionsParams raise ProtocolDecodeErrorfn list_sessions_result_from_json(value : Json, path? : String) -> ListSessionsResult raise ProtocolDecodeErrorfn load_session_params_from_json(value : Json, path? : String) -> LoadSessionParams raise ProtocolDecodeErrorfn load_session_result_from_json(value : Json, path? : String) -> LoadSessionResult raise ProtocolDecodeErrorfn new_session_params_from_json(value : Json, path? : String) -> NewSessionParams raise ProtocolDecodeErrorfn new_session_result_from_json(value : Json, path? : String) -> NewSessionResult raise ProtocolDecodeErrorfn permission_option_from_json(value : Json, path? : String) -> PermissionOption raise ProtocolDecodeErrorfn read_text_file_params_from_json(value : Json, path? : String) -> ReadTextFileParams raise ProtocolDecodeErrorfn read_text_file_result_from_json(value : Json, path? : String) -> ReadTextFileResult raise ProtocolDecodeErrorfn request_permission_outcome_from_json(value : Json, path? : String) -> RequestPermissionOutcome raise ProtocolDecodeErrorfn request_permission_outcome_to_json(value : RequestPermissionOutcome) -> Json raise ProtocolDecodeErrorfn request_permission_request_from_json(value : Json, path? : String) -> RequestPermissionRequest raise ProtocolDecodeErrorfn request_permission_request_to_json(value : RequestPermissionRequest) -> Json raise ProtocolDecodeErrorfn request_permission_response_from_json(value : Json, path? : String) -> RequestPermissionResponse raise ProtocolDecodeErrorfn request_permission_response_to_json(value : RequestPermissionResponse) -> Json raise ProtocolDecodeErrorfn resume_session_params_from_json(value : Json, path? : String) -> ResumeSessionParams raise ProtocolDecodeErrorfn resume_session_result_from_json(value : Json, path? : String) -> ResumeSessionResult raise ProtocolDecodeErrorasync fn[G] runtime_process_ports(group : TaskGroup[G], handlers~ : RuntimeHandlerPort, command~ : String, args? : Array[String], extra_env? : Map[String, String], inherit_env? : Bool, cancel_outbound? : async (RequestId) -> Unit?, trace? : (RuntimeTraceEvent) -> Unit) -> RuntimeProcessPorts raise RuntimeErrorfn runtime_trace_event(direction : String, phase : String, request_id : String, method_name : String, error_kind : String) -> RuntimeTraceEventfn selected_permission_outcome_from_json(value : Json, path? : String) -> SelectedPermissionOutcome raise ProtocolDecodeErrorfn selected_permission_outcome_to_json(value : SelectedPermissionOutcome) -> Json raise ProtocolDecodeErrorfn session_config_option_category_from_json(value : Json, path? : String) -> SessionConfigOptionCategory raise ProtocolDecodeErrorfn session_config_option_from_json(value : Json, path? : String) -> SessionConfigOption raise ProtocolDecodeErrorfn session_config_select_group_from_json(value : Json, path? : String) -> SessionConfigSelectGroup raise ProtocolDecodeErrorfn session_config_select_group_to_json(value : SessionConfigSelectGroup) -> Json raise ProtocolDecodeErrorfn session_config_select_option_from_json(value : Json, path? : String) -> SessionConfigSelectOption raise ProtocolDecodeErrorfn session_config_select_option_to_json(value : SessionConfigSelectOption) -> Json raise ProtocolDecodeErrorfn session_config_select_options_from_json(value : Json, path? : String) -> SessionConfigSelectOptions raise ProtocolDecodeErrorfn session_config_select_options_to_json(value : SessionConfigSelectOptions) -> Json raise ProtocolDecodeErrorfn session_info_update_from_json(value : Json, path? : String) -> SessionInfoUpdate raise ProtocolDecodeErrorfn session_mode_state_from_json(value : Json, path? : String) -> SessionModeState raise ProtocolDecodeErrorfn session_update_from_json(value : Json, path? : String) -> SessionUpdate raise ProtocolDecodeErrorfn session_update_params_from_json(value : Json, path? : String) -> SessionUpdateParams raise ProtocolDecodeErrorfn set_session_config_option_params_from_json(value : Json, path? : String) -> SetSessionConfigOptionParams raise ProtocolDecodeErrorfn set_session_config_option_params_to_json(value : SetSessionConfigOptionParams) -> Json raise ProtocolDecodeErrorfn set_session_config_option_result_from_json(value : Json, path? : String) -> SetSessionConfigOptionResult raise ProtocolDecodeErrorfn set_session_config_option_result_to_json(value : SetSessionConfigOptionResult) -> Json raise ProtocolDecodeErrorfn set_session_mode_params_from_json(value : Json, path? : String) -> SetSessionModeParams raise ProtocolDecodeErrorfn set_session_mode_result_from_json(value : Json, path? : String) -> SetSessionModeResult raise ProtocolDecodeErrorfn terminal_create_params_from_json(value : Json, path? : String) -> TerminalCreateParams raise ProtocolDecodeErrorfn terminal_create_result_from_json(value : Json, path? : String) -> TerminalCreateResult raise ProtocolDecodeErrorfn terminal_kill_params_from_json(value : Json, path? : String) -> TerminalKillParams raise ProtocolDecodeErrorfn terminal_kill_result_from_json(value : Json, path? : String) -> TerminalKillResult raise ProtocolDecodeErrorfn terminal_output_params_from_json(value : Json, path? : String) -> TerminalOutputParams raise ProtocolDecodeErrorfn terminal_output_result_from_json(value : Json, path? : String) -> TerminalOutputResult raise ProtocolDecodeErrorfn terminal_release_params_from_json(value : Json, path? : String) -> TerminalReleaseParams raise ProtocolDecodeErrorfn terminal_release_result_from_json(value : Json, path? : String) -> TerminalReleaseResult raise ProtocolDecodeErrorfn terminal_wait_for_exit_params_from_json(value : Json, path? : String) -> TerminalWaitForExitParams raise ProtocolDecodeErrorfn terminal_wait_for_exit_params_to_json(value : TerminalWaitForExitParams) -> Json raise ProtocolDecodeErrorfn terminal_wait_for_exit_result_from_json(value : Json, path? : String) -> TerminalWaitForExitResult raise ProtocolDecodeErrorfn terminal_wait_for_exit_result_to_json(value : TerminalWaitForExitResult) -> Json raise ProtocolDecodeErrorfn text_resource_contents_from_json(value : Json, path? : String) -> TextResourceContents raise ProtocolDecodeErrorfn tool_call_content_from_json(value : Json, path? : String) -> ToolCallContent raise ProtocolDecodeErrorfn tool_call_location_from_json(value : Json, path? : String) -> ToolCallLocation raise ProtocolDecodeErrorfn tool_call_update_from_json(value : Json, path? : String) -> ToolCallUpdate raise ProtocolDecodeErrorfn unstructured_command_input_from_json(value : Json, path? : String) -> UnstructuredCommandInput raise ProtocolDecodeErrorfn unstructured_command_input_to_json(value : UnstructuredCommandInput) -> Json raise ProtocolDecodeErrorfn write_text_file_params_from_json(value : Json, path? : String) -> WriteTextFileParams raise ProtocolDecodeErrorfn write_text_file_result_from_json(value : Json, path? : String) -> WriteTextFileResult raise ProtocolDecodeErrorDependencies