What Kind of Data Does Prime Agent Process? A Complete Data Flow Analysis

Prime Agent processes ten distinct data types spanning user prompts, system instructions, LLM responses, tool calls, tool results, images, markdown/LaTeX, usage statistics, streaming events, and telemetry diagnostics.

Prime Agent is a multi-modal AI-driven assistant developed by PrimeIntellect that orchestrates complex conversations between users, language models, and external tools. Understanding what data Prime Agent processes reveals how it transforms raw user input into actionable tool executions and rich terminal-based outputs. This analysis examines the complete data lifecycle as implemented in the PrimeIntellect-ai/prime-agent repository.

User Prompts and System Instructions

Prime Agent begins every interaction with two foundational text inputs that establish context and intent.

User Prompts

The user prompt is the raw text a user types into the terminal interface. In packages/tui/src/components/editor.ts, the prompt field captures this input and forwards it to the model. Users typically prefix commands with > to distinguish prompts from shell commands, such as > ask about solar flares.

System Prompts

The system prompt is a long, static instruction set generated in packages/coding-agent/src/core/system-prompt.ts. This prompt defines the agent's capabilities, catalogs available tools (read, write, bash, ipython), and establishes operational policies. Unlike the dynamic user prompt, the system prompt remains consistent across conversations, modified only when tools are added or configured.

LLM Response Data

Prime Agent processes several response formats from underlying language model providers.

Assistant Messages

In packages/ai/src/providers/openai-responses.ts, assistant messages stream from providers like OpenAI, Anthropic, and Google. These messages contain:

  • Plain text responses for direct answers
  • Tool-call JSON for invoking external capabilities
  • Thinking annotations that expose the model's reasoning process

Streaming Events

The packages/ai/src/utils/event-stream.ts module unifies all provider-specific formats into a standard event taxonomy: text, tool_call, thinking, usage, and stop. This abstraction allows Prime Agent's UI and tooling layers to remain provider-agnostic.

Tool Interaction Data

The core extensibility of Prime Agent relies on structured tool-call and tool-result protocols.

Tool-Call Events

Defined in scripts/tool-stats.ts, the ToolCallContent interface structures requests for external action:

interface ToolCallContent {
  type: "toolCall";
  id: string;
  name: string;
  arguments: Record<string, unknown>;
}

Common tool calls include read (file access), write (file modification), bash (shell execution), and ipython (Python evaluation).

Tool-Result Events

The scripts/session-transcripts.ts file handles tool_execution_start and tool_result event types. Tool results carry heterogeneous payloads:

  • Text output from command-line tools
  • Base64-encoded images from file reads or plotting tools
  • Binary data from specialized operations

The ImageContent interface in scripts/tool-stats.ts formalizes image handling:

interface ImageContent {
  type: "image";
  data: string;        // base64-encoded
  mimeType?: string;   // e.g., "image/png"
}

Terminal UI Rendering Data

Prime Agent's terminal user interface processes rich formatting data for human-readable display.

Markdown and LaTeX

Two specialized modules handle text rendering:

This dual capability enables Prime Agent to display everything from API documentation to research papers directly in the terminal.

Analytics and Telemetry Data

Prime Agent collects operational metrics for cost control and performance optimization.

Usage-Cost Statistics

The scripts/cost.ts module defines DayCost and Stats interfaces that aggregate:

  • Token consumption (prompt and completion)
  • Session duration
  • Estimated monetary cost per provider

These statistics enable billing transparency and budget enforcement for multi-user deployments.

Telemetry and Diagnostics

The packages/ai/src/utils/diagnostics.ts module captures runtime metadata:

  • Model latency per request and per token
  • Token usage breakdowns by model and operation type
  • Error rates and exception classifications

This telemetry supports debugging, performance profiling, and capacity planning without exposing sensitive prompt content.

Complete Data Flow Example

The following sequence illustrates how these data types interact in a typical session:


# User submits prompt via CLI

pi --mode json --tools read,write -p "Summarize the contents of ./report.md"

Prime Agent constructs the conversation context and streams to the LLM. The model responds with a tool call:

{
  "type": "toolCall",
  "id": "tc-1",
  "name": "read",
  "arguments": { "path": "./report.md" }
}

The read tool executes and returns mixed content:

{
  "type": "toolResult",
  "toolCallId": "tc-1",
  "toolName": "read",
  "content": [
    { "type": "text", "text": "File header: Q4 Financial Report" },
    { "type": "image", "data": "data:image/png;base64,iVBORw0...", "mimeType": "image/png" }
  ]
}

Finally, the assistant generates a response incorporating both the text summary and image description:

{
  "type": "assistant",
  "content": "The Q4 report shows 23% revenue growth. The attached chart illustrates quarterly trends..."
}

Throughout this exchange, event-stream.ts normalizes provider-specific formats, diagnostics.ts records latency metrics, and cost.ts accumulates token usage for billing.

Key Implementation Files

The data processing architecture spans eight critical files:

File Data Responsibility
packages/tui/src/components/editor.ts User prompt capture and history
packages/coding-agent/src/core/system-prompt.ts System instruction generation
packages/ai/src/providers/openai-responses.ts Provider response parsing
scripts/tool-stats.ts Tool-call and image content definitions
scripts/session-transcripts.ts Tool execution lifecycle formatting
packages/tui/src/components/markdown.ts Rich text terminal rendering
packages/ai/src/utils/event-stream.ts Unified event type system
scripts/cost.ts Usage and cost aggregation
packages/ai/src/utils/diagnostics.ts Performance telemetry

Summary

Prime Agent processes a sophisticated multi-modal data ecosystem:

  • Conversational data: User prompts, system instructions, and assistant responses flow through packages/ai/src/providers/ and packages/coding-agent/src/core/
  • Tool data: Structured tool calls and heterogeneous results (text, images, binary) are defined in scripts/tool-stats.ts and scripts/session-transcripts.ts
  • Presentation data: Markdown and LaTeX rendering in packages/tui/src/components/ enables terminal-native rich output
  • Operational data: Usage costs (scripts/cost.ts) and diagnostics (packages/ai/src/utils/diagnostics.ts) support production deployments

Frequently Asked Questions

Does Prime Agent support image processing?

Yes. Prime Agent handles base64-encoded images through the ImageContent interface defined in scripts/tool-stats.ts. Tools like read return image data when processing image files, and these payloads flow back to the LLM as part of the conversation context. The terminal UI can render inline images where terminal capabilities permit.

How does Prime Agent track API costs?

Cost tracking is implemented in scripts/cost.ts through the DayCost and Stats interfaces. The system aggregates token counts per model and applies provider-specific pricing to estimate session costs. This data enables budget alerts and usage reporting for team deployments.

What streaming event types does Prime Agent use?

The unified event system in packages/ai/src/utils/event-stream.ts defines five core types: text (incremental response content), tool_call (structured tool invocations), thinking (model reasoning annotations), usage (token consumption metrics), and stop (completion signals). These abstract over provider-specific streaming formats from OpenAI, Anthropic, and Google.

Can Prime Agent work with multiple LLM providers simultaneously?

Prime Agent's architecture supports multiple providers through the abstraction layer in packages/ai/src/providers/. While a single session typically uses one provider, the event-stream normalization allows consistent handling of assistant, tool_call, and other data types regardless of whether the underlying model comes from OpenAI, Anthropic, Google, or other supported APIs.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →