Interface AiAgentLogFormat

All Known Implementing Classes:
AcpLogFormat, AntigravityLogFormat, ClaudeCodeLogFormat, CodexLogFormat, CursorLogFormat, GrokBuildLogFormat, KiroLogFormat, OpenCodeLogFormat, PiLogFormat

public interface AiAgentLogFormat
Strategy interface for classifying a JSON log line emitted by an AI agent into a AiAgentLogParser.ParsedLine.

Each AiAgentTypeHandler returns its own AiAgentLogFormat via AiAgentTypeHandler.getLogFormat(), allowing third-party agent handlers to supply custom log parsing without modifying the core parser.

Implementations should return null for any JSON structure they do not recognise; the parser will then fall through to the shared format and generic fallback.

  • Method Details

    • classify

      AiAgentLogParser.ParsedLine classify(long lineNumber, net.sf.json.JSONObject json)
      Attempt to classify a single JSON object into a parsed event.
      Parameters:
      lineNumber - 1-based line number in the raw log file
      json - the parsed JSON object for this line
      Returns:
      a classified AiAgentLogParser.ParsedLine, or null if this format does not handle the given JSON structure
    • classifyRaw

      default List<AiAgentLogParser.ParsedLine> classifyRaw(long lineNumber, String line)
      Attempt to classify a non-JSON log line (raw text) into a parsed event.

      Implementations that handle non-JSON text lines (e.g. ANSI-colored > prefixed headless output) should override this method. The default returns null, meaning the line should be kept as-is.

      Parameters:
      lineNumber - 1-based line number in the raw log file
      line - the raw (non-JSON) text line
      Returns:
      a list of classified lines, or null if this format does not handle raw text
    • classifyAll

      default List<AiAgentLogParser.ParsedLine> classifyAll(long lineNumber, net.sf.json.JSONObject json)
      Attempt to classify a JSON object that may contain multiple displayable events.

      Implementations that emit at most one event can rely on this default. Returning null still means the format did not recognize the input; an empty list means it recognized the input but intentionally produced no visible events.