Metadata-Version: 2.4
Name: solohq-agno
Version: 0.1.0
Summary: Agno plugin for SoloHQ Context Memory — adds persistent context memory to Agno agents
Project-URL: Repository, https://github.com/whaleventure13/solohq-agent
Author: SoloHQ
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: agno>=2.0
Requires-Dist: httpx>=0.27
Requires-Dist: solohq-memory>=0.1.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Provides-Extra: search
Requires-Dist: ddgs>=9.0; extra == 'search'
Description-Content-Type: text/markdown

# solohq-agno

[Agno](https://github.com/agno-agi/agno) framework integration for [SoloHQ](https://github.com/whaleventure13/solohq-agent) context memory.

## Installation

```bash
pip install solohq-agno
```

## Quick Start

```python
from agno.agent import Agent
from agno.models.anthropic import Claude
from solohq_memory import SqliteVecStorage
from solohq_agno import (
    AgnoContextMemory,
    AgnoLLMAdapter,
    AgnoEmbeddingAdapter,
    MemoryToolkit,
)

# Set up storage and adapters
model = Claude(id="claude-sonnet-4-6")
storage = SqliteVecStorage("memory.db", dimensions=1536)
llm_adapter = AgnoLLMAdapter(model)
embedding_adapter = AgnoEmbeddingAdapter(model)

# Create plugin
memory = AgnoContextMemory(
    storage=storage,
    llm=llm_adapter,
    embedder=embedding_adapter,
)

# Create agent with memory
agent = Agent(
    model=model,
    plugins=[memory],
    tools=[MemoryToolkit(memory)],
)

agent.print_response("What do you remember about our project?")
```

## Components

### AgnoContextMemory (Plugin)

Attaches pre/post hooks to Agno agent:
- **pre_hook** — classifies message, loads context, injects artifacts/history/blocks into system prompt
- **post_hook** — records episode, updates context state, detects relationships, creates session blocks

### MemoryToolkit (Tools)

10 agent-callable tools:
- `search_memory` — search across all contexts
- `save_artifact` — save a versioned artifact
- `list_contexts` — list all contexts
- `switch_context` — switch active context
- `recall_episode` — recall past episodes
- `index_file` — index a file (store path + summary)
- `upload_file` — upload file content to memory
- `index_directory` — index all files in a directory
- `read_indexed_file` — read an indexed file's content
- `refresh_index` — refresh stale file indexes

### Adapters

- `AgnoLLMAdapter` — wraps Agno model as `LLMProvider`
- `AgnoEmbeddingAdapter` — wraps Agno model as `EmbeddingProvider`

## License

MIT
