decode method

  1. @override
SessionUpdate decode(
  1. Object? value
)
override

Decodes a JSON-compatible wire value.

Implementation

@override
SessionUpdate decode(Object? value) {
  final payload = decodeAcpObject(value);
  final tag = decodeAcpString(payload['sessionUpdate']);
  switch (tag) {
    case 'user_message_chunk':
      return SessionUpdateUserMessageChunk(contentChunkCodec.decode(payload));
    case 'user_message':
      return SessionUpdateUserMessage(userMessageCodec.decode(payload));
    case 'agent_message_chunk':
      return SessionUpdateAgentMessageChunk(
        contentChunkCodec.decode(payload),
      );
    case 'agent_message':
      return SessionUpdateAgentMessage(agentMessageCodec.decode(payload));
    case 'agent_thought_chunk':
      return SessionUpdateAgentThoughtChunk(
        contentChunkCodec.decode(payload),
      );
    case 'agent_thought':
      return SessionUpdateAgentThought(agentThoughtCodec.decode(payload));
    case 'state_update':
      return SessionUpdateStateUpdate(stateUpdateCodec.decode(payload));
    case 'tool_call_content_chunk':
      return SessionUpdateToolCallContentChunk(
        toolCallContentChunkCodec.decode(payload),
      );
    case 'tool_call_update':
      return SessionUpdateToolCallUpdate(toolCallUpdateCodec.decode(payload));
    case 'terminal_update':
      return SessionUpdateTerminalUpdate(terminalUpdateCodec.decode(payload));
    case 'terminal_output_chunk':
      return SessionUpdateTerminalOutputChunk(
        terminalOutputChunkCodec.decode(payload),
      );
    case 'plan_update':
      return SessionUpdatePlanUpdate(planUpdateCodec.decode(payload));
    case 'available_commands_update':
      return SessionUpdateAvailableCommandsUpdate(
        availableCommandsUpdateCodec.decode(payload),
      );
    case 'config_option_update':
      return SessionUpdateConfigOptionUpdate(
        configOptionUpdateCodec.decode(payload),
      );
    case 'session_info_update':
      return SessionUpdateSessionInfoUpdate(
        sessionInfoUpdateCodec.decode(payload),
      );
    case 'usage_update':
      return SessionUpdateUsageUpdate(usageUpdateCodec.decode(payload));
    default:
      return SessionUpdateCustom(
        discriminator: tag,
        payload: AcpJsonObject.fromObject(payload),
      );
  }
}