Metadata-Version: 2.4
Name: eager-tools-anthropic
Version: 0.3.0
Summary: Anthropic adapter for eager tool calling — wraps the Messages stream to emit SealEvents.
Project-URL: Homepage, https://github.com/cloudthinker-ai/eager-tools
Project-URL: Repository, https://github.com/cloudthinker-ai/eager-tools
Project-URL: Issues, https://github.com/cloudthinker-ai/eager-tools/discussions
Author-email: CloudThinker <hello@cloudthinker.io>
License: MIT
Keywords: agent,anthropic,claude,llm,streaming,tool-calling
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: eager-tools-core>=0.3.0
Provides-Extra: dev
Requires-Dist: anthropic>=0.39; extra == 'dev'
Requires-Dist: pyrefly>=0.1; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Description-Content-Type: text/markdown

# eager-tools-anthropic

Anthropic adapter for **eager tool calling** — wraps `anthropic.AsyncMessageStream` and dispatches each tool the instant its block seals, overlapping tool execution with ongoing LLM generation.

> For the mechanism and runtime contract, see the [top-level `METHOD.md`](../../METHOD.md).

## Status

**Alpha / scaffold.** Public API shape is locked; implementation bodies arrive in Move 3 (CloudThinker port). See [`NEXT.md`](../../NEXT.md).

## Install (once published)

```bash
pip install eager-tools-anthropic
```

## Usage

```python
import anthropic
from eager_tools_anthropic import AnthropicEagerStream

client = anthropic.AsyncAnthropic()

async with client.messages.stream(
    model="claude-opus-4-6",
    tools=[...],
    messages=[...],
) as source:
    runner = AnthropicEagerStream(source, tools=my_tools)

    async for event in runner.events():
        print(event.kind, event.tool_call)

    async for call, result in runner.results():
        print(call.name, "→", result)
```

## Supported SDK versions

- `anthropic>=0.39` (Messages streaming API).

## License

MIT. See top-level [`LICENSE`](../../LICENSE).
