Files
pi_harness/packages/agent/julia_implementation/IMPLEMENTATION.md
T
2026-07-28 07:12:13 +07:00

4.0 KiB

Julia Implementation - AgentCore

This directory contains a Julia reimplementation of the @earendil-works/pi-agent-core package.

Project Structure

julia_implementation/
├── src/
│   ├── AgentCore.jl           # Main module entry point
│   ├── types.jl               # Core type definitions
│   ├── stream_fn.jl           # Stream function utilities
│   ├── agent_loop.jl          # Low-level agent loop
│   ├── agent.jl               # High-level Agent struct
│   ├── harness_types.jl       # Extended types for AgentHarness
│   ├── messages.jl            # Custom message types
│   ├── system_prompt.jl       # System prompt formatting
│   ├── skills.jl              # Skill loading and formatting
│   ├── prompt_templates.jl    # Prompt template handling
│   ├── agent_harness.jl       # AgentHarness implementation
│   │
│   ├── session/
│   │   ├── session.jl         # Session class
│   │   ├── jsonl_storage.jl   # JSONL storage
│   │   ├── jsonl_repo.jl      # JSONL repository
│   │   ├── memory_storage.jl  # In-memory storage
│   │   ├── memory_repo.jl     # In-memory repository
│   │   └── repo_utils.jl      # Repository utilities
│   │
│   ├── tools/
│   │   ├── index.jl           # Tool exports
│   │   ├── bash.jl            # Bash execution tool
│   │   ├── read.jl            # File read tool
│   │   ├── write.jl           # File write tool
│   │   ├── edit.jl            # File edit tool
│   │   ├── edit_diff.jl       # Diff computation
│   │   ├── image.jl           # Image utilities
│   │   ├── path_utils.jl      # Path resolution
│   │   └── file_mutation_queue.jl  # File mutation serialization
│   │
│   ├── compaction/
│   │   ├── compaction.jl      # Context compaction
│   │   ├── utils.jl           # Compaction utilities
│   │   └── branch_summarization.jl  # Branch summarization
│   │
│   ├── utils/
│   │   ├── truncate.jl        # Output truncation
│   │   └── shell_output.jl    # Shell output capture
│   │
│   ├── proxy.jl               # Proxy stream function
│   └── utils.jl               # Utility functions
│
├── test/
├── Project.toml
├── Manifest.toml
└── README.md

Key Features

Core Architecture

The implementation follows the same layered architecture as the TypeScript version:

  1. Low-level (agent_loop.jl): Pure agent loop logic that works with AgentMessage[]
  2. High-level (agent.jl): Stateful wrapper with event streaming and queueing
  3. Harness (agent_harness.jl): Session persistence, resource management, hooks
  4. Session (session/): Conversation history with compaction and branching
  5. Tools (tools/): Built-in execution tools (bash, read, write, edit)

Julia-Specific Features

  • Type system: Uses Julia's parametric types for type-safe tool definitions
  • Multiple dispatch: Extensible via multiple dispatch for custom message types
  • Async primitives: Leverages Julia's @async and @spawn for concurrent operations
  • Error handling: Julia exceptions with typed error codes

Building

using Pkg
Pkg.activate("julia_implementation")
Pkg.instantiate()

Usage Example

using AgentCore

# Create an agent
agent = Agent()

# Subscribe to events
subscribe(agent) do event, signal
    if event isa MessageEndEvent
        println("Message: $(event.message)")
    end
end

# Run a prompt
prompt(agent, "Hello, world!")

Compatibility

This implementation aims for API compatibility with the TypeScript version while providing idiomatic Julia abstractions.

Status

This is an active implementation. Core functionality is in place, with ongoing work on:

  • Complete tool implementations
  • Full session repository functionality
  • Test suite

License

MIT