Metadata-Version: 2.4
Name: summitsdk
Version: 0.1.2
Summary: Instrumentation layer for multi-agent AI pipelines
Home-page: https://cronys.xyz/summit
Author: Shaz Hussain
Author-email: shaz@cronys.xyz
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: anthropic
Provides-Extra: openai
Requires-Dist: openai; extra == "openai"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# summitsdk

Instrument multi-agent AI pipelines and capture
every agent-to-agent interaction as a structured
trace. Works transparently alongside your existing
Anthropic or OpenAI client -- no changes to your
agents or pipeline logic required.

## Installation

```bash
pip install summitsdk
```

Requires Python 3.8+. OpenAI support is optional:

```bash
pip install summitsdk[openai]
```

## Quickstart

### Anthropic

```python
from anthropic import Anthropic
from summitsdk.tracer import Tracer
from summitsdk.exporters.local import LocalExporter

exporter = LocalExporter(output_dir="traces/")
tracer = Tracer(exporter=exporter)

client = Anthropic()
wrapped = tracer.wrap_anthropic(
    client,
    from_agent="planner",
    to_agent="worker",
    task_id="task-001",
    round_trip=1
)

response = wrapped.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[{"role": "user", "content": "your prompt"}]
)
# trace written to traces/
```

### OpenAI

```python
from openai import OpenAI
from summitsdk.tracer import Tracer
from summitsdk.exporters.local import LocalExporter

exporter = LocalExporter(output_dir="traces/")
tracer = Tracer(exporter=exporter)

client = OpenAI()
wrapped = tracer.wrap_openai(
    client,
    from_agent="planner",
    to_agent="worker",
    task_id="task-001",
    round_trip=1
)

response = wrapped.chat.completions.create(
    model="gpt-4o-mini",
    max_tokens=1024,
    messages=[{"role": "user", "content": "your prompt"}]
)
# trace written to traces/
```

## How it works

`wrap_anthropic()` and `wrap_openai()` return a
proxy client. Every subsequent API call through
the proxy is intercepted after the response
returns, a trace is recorded, and the original
response is passed back unchanged. Your agents
never know the wrapper is there.

Each call to `wrap_*` accepts four arguments:

| Argument | Type | Description |
|---|---|---|
| `from_agent` | str | Name of the sending agent |
| `to_agent` | str | Name of the receiving agent |
| `task_id` | str | Identifier for the current task |
| `round_trip` | int | Interaction number within the task |

## Trace schema

Each interaction produces a JSON file:

```json
{
  "trace_id": "550e8400-e29b-41d4-a716-446655440000",
  "task_id": "task-001",
  "from_agent": "planner",
  "to_agent": "worker",
  "content": "response text",
  "model": "claude-sonnet-4-20250514",
  "input_tokens": 412,
  "output_tokens": 156,
  "round_trip": 1,
  "framework": "anthropic",
  "timestamp": "2026-06-10T14:07:00Z"
}
```

Traces are written to the `output_dir` specified
in `LocalExporter`. Filenames are generated from
`task_id`, agent names, round trip number, and
a short UUID fragment to avoid collisions.

## Error handling

Trace recording failures log a warning to stderr
and never raise an exception or interrupt the
underlying API call. If a trace cannot be written,
your pipeline continues unaffected.

```
[summitsdk] Warning: trace recording failed
for planner->worker: PermissionError: ...
```

Streaming is not supported. Calling
`messages.stream()` through a wrapped client
raises `NotImplementedError` with a clear message.

## Compatibility

summitsdk wraps the raw Anthropic and OpenAI
Python clients directly. It works with any
framework or orchestration layer built on top
of these clients including LangGraph, CrewAI,
AutoGen, and custom implementations.

## Summit

summitsdk is the instrumentation layer for
[Summit](https://cronys.xyz/summit).

Summit ingests the traces produced by this SDK,
scores every agent handoff across a set of
collaboration dimensions using a reward model,
and automatically rewrites agent system prompts
to fix the patterns that score lowest. The reward
model compounds in accuracy as more pipelines
are observed.

## License

MIT
