# rucora-core（核心抽象）

`rucora-core` 定义 rucora 的**最小稳定内核**：trait、核心类型、错误类型、事件模型。

## 设计原则

- **只放抽象，不放实现**：避免引入具体 HTTP 客户端、外部服务依赖。
- **可扩展**：第三方可以只依赖 core 实现自己的 Provider/Tool/VectorStore。
- **兼容性护栏**：提供 contract tests，约束关键 trait 的行为预期。

## 主要模块

- `provider`：`LlmProvider`、Chat 类型
- `tool`：`Tool`、ToolCall/ToolResult/ToolDefinition
- `retrieval`：`VectorStore`、向量查询/搜索结果类型
- `channel`：`ChannelEvent`（统一事件模型）
- `runtime`：`Runtime`（唯一执行入口）+ `RuntimeObserver`（统一观测协议）
- `error`：统一错误类型 + `DiagnosticError`

说明：core 不再定义 `Agent` trait。
`AgentInput/AgentOutput` 仍保留在 `agent::types` 中，作为 runtime 的稳定输入/输出类型。

## 测试

- `tests/contract_tool.rs`
- `tests/contract_provider.rs`
- `tests/contract_vector_store.rs`

这些测试用于约束第三方实现行为，避免 runtime 依赖的隐含假设被破坏。
