Metadata-Version: 2.4
Name: eager-tools-core
Version: 0.3.0
Summary: Provider-agnostic core for eager tool calling — seal detector + async executor pool.
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,llm,pipelining,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
Provides-Extra: dev
Requires-Dist: opentelemetry-api>=1.20; extra == 'dev'
Requires-Dist: opentelemetry-sdk>=1.20; 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'
Provides-Extra: otel
Requires-Dist: opentelemetry-api>=1.20; extra == 'otel'
Description-Content-Type: text/markdown

# eager-tools-core

Provider-agnostic core for **eager tool calling** — dispatches each tool the moment its block finishes streaming, overlapping tool execution with LLM generation on the wall clock.

> For the mechanism, runtime contract, and edge cases, see the [top-level `METHOD.md`](../../METHOD.md).
>
> For execution plan + OSS strategy, see [`ROADMAP.md`](../../ROADMAP.md) and [`NEXT.md`](../../NEXT.md).

## Status

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

## Install (once published)

```bash
pip install eager-tools-core
```

## Public API

```python
from eager_tools import (
    SealDetector,         # streaming chunk → SealEvent state machine
    ExecutorPool,         # async dispatcher for sealed tool calls
    ToolCall, SealEvent,  # data carriers
    Tool,                 # protocol every user tool implements
    ObservabilityHook,    # opt-in trace emitter (OTel / Langfuse / LangSmith)
    NonIdempotentToolError,
)
```

## Adapter contract

Each provider-specific adapter (anthropic, openai, langgraph, claude-agent) consumes `SealDetector` + `ExecutorPool` and emits normalized chunks into the detector. Adapters are separate packages — see `packages/eager-tools-<provider>/`.

## License

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