Skip to content

Commit 2d5a7ad

Browse files
committed
chore: update API docs from spoon-ai-sdk
1 parent 019df8f commit 2d5a7ad

File tree

112 files changed

+18706
-278
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+18706
-278
lines changed

docs/api-reference/index.md

Lines changed: 112 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,115 @@
22

33
Generated from spoon_ai sources. Each module below has its own page.
44

5-
- [spoon_ai](./spoon_ai.md)
5+
- [spoon_ai](./spoon_ai/)
6+
- [spoon_ai.agents](./spoon_ai/agents/)
7+
- [spoon_ai.agents.base](./spoon_ai/agents/base.md)
8+
- [spoon_ai.agents.custom_agent](./spoon_ai/agents/custom_agent.md)
9+
- [spoon_ai.agents.graph_agent](./spoon_ai/agents/graph_agent.md)
10+
- [spoon_ai.agents.mcp_client_mixin](./spoon_ai/agents/mcp_client_mixin.md)
11+
- [spoon_ai.agents.monitor](./spoon_ai/agents/monitor.md)
12+
- [spoon_ai.agents.rag](./spoon_ai/agents/rag.md)
13+
- [spoon_ai.agents.react](./spoon_ai/agents/react.md)
14+
- [spoon_ai.agents.spoon_react](./spoon_ai/agents/spoon_react.md)
15+
- [spoon_ai.agents.spoon_react_mcp](./spoon_ai/agents/spoon_react_mcp.md)
16+
- [spoon_ai.agents.toolcall](./spoon_ai/agents/toolcall.md)
17+
- [spoon_ai.bridge](./spoon_ai/bridge/)
18+
- [spoon_ai.bridge.eth_neofs_indexer](./spoon_ai/bridge/eth_neofs_indexer.md)
19+
- [spoon_ai.callbacks](./spoon_ai/callbacks/)
20+
- [spoon_ai.callbacks.base](./spoon_ai/callbacks/base.md)
21+
- [spoon_ai.callbacks.manager](./spoon_ai/callbacks/manager.md)
22+
- [spoon_ai.callbacks.statistics](./spoon_ai/callbacks/statistics.md)
23+
- [spoon_ai.callbacks.stream_event](./spoon_ai/callbacks/stream_event.md)
24+
- [spoon_ai.callbacks.streaming_stdout](./spoon_ai/callbacks/streaming_stdout.md)
25+
- [spoon_ai.chat](./spoon_ai/chat.md)
26+
- [spoon_ai.graph](./spoon_ai/graph/)
27+
- [spoon_ai.graph.agent](./spoon_ai/graph/agent.md)
28+
- [spoon_ai.graph.builder](./spoon_ai/graph/builder.md)
29+
- [spoon_ai.graph.checkpointer](./spoon_ai/graph/checkpointer.md)
30+
- [spoon_ai.graph.config](./spoon_ai/graph/config.md)
31+
- [spoon_ai.graph.decorators](./spoon_ai/graph/decorators.md)
32+
- [spoon_ai.graph.engine](./spoon_ai/graph/engine.md)
33+
- [spoon_ai.graph.exceptions](./spoon_ai/graph/exceptions.md)
34+
- [spoon_ai.graph.mcp_integration](./spoon_ai/graph/mcp_integration.md)
35+
- [spoon_ai.graph.reducers](./spoon_ai/graph/reducers.md)
36+
- [spoon_ai.graph.types](./spoon_ai/graph/types.md)
37+
- [spoon_ai.identity](./spoon_ai/identity/)
38+
- [spoon_ai.identity.attestation](./spoon_ai/identity/attestation.md)
39+
- [spoon_ai.identity.did_models](./spoon_ai/identity/did_models.md)
40+
- [spoon_ai.identity.did_resolver](./spoon_ai/identity/did_resolver.md)
41+
- [spoon_ai.identity.erc8004_abi](./spoon_ai/identity/erc8004_abi.md)
42+
- [spoon_ai.identity.erc8004_client](./spoon_ai/identity/erc8004_client.md)
43+
- [spoon_ai.identity.storage_client](./spoon_ai/identity/storage_client.md)
44+
- [spoon_ai.llm](./spoon_ai/llm/)
45+
- [spoon_ai.llm.base](./spoon_ai/llm/base.md)
46+
- [spoon_ai.llm.cache](./spoon_ai/llm/cache.md)
47+
- [spoon_ai.llm.config](./spoon_ai/llm/config.md)
48+
- [spoon_ai.llm.errors](./spoon_ai/llm/errors.md)
49+
- [spoon_ai.llm.factory](./spoon_ai/llm/factory.md)
50+
- [spoon_ai.llm.interface](./spoon_ai/llm/interface.md)
51+
- [spoon_ai.llm.manager](./spoon_ai/llm/manager.md)
52+
- [spoon_ai.llm.monitoring](./spoon_ai/llm/monitoring.md)
53+
- [spoon_ai.llm.providers](./spoon_ai/llm/providers/)
54+
- [spoon_ai.llm.providers.anthropic_provider](./spoon_ai/llm/providers/anthropic_provider.md)
55+
- [spoon_ai.llm.providers.deepseek_provider](./spoon_ai/llm/providers/deepseek_provider.md)
56+
- [spoon_ai.llm.providers.gemini_provider](./spoon_ai/llm/providers/gemini_provider.md)
57+
- [spoon_ai.llm.providers.ollama_provider](./spoon_ai/llm/providers/ollama_provider.md)
58+
- [spoon_ai.llm.providers.openai_compatible_provider](./spoon_ai/llm/providers/openai_compatible_provider.md)
59+
- [spoon_ai.llm.providers.openai_provider](./spoon_ai/llm/providers/openai_provider.md)
60+
- [spoon_ai.llm.providers.openrouter_provider](./spoon_ai/llm/providers/openrouter_provider.md)
61+
- [spoon_ai.llm.registry](./spoon_ai/llm/registry.md)
62+
- [spoon_ai.llm.response_normalizer](./spoon_ai/llm/response_normalizer.md)
63+
- [spoon_ai.memory](./spoon_ai/memory/)
64+
- [spoon_ai.memory.mem0_client](./spoon_ai/memory/mem0_client.md)
65+
- [spoon_ai.memory.remove_message](./spoon_ai/memory/remove_message.md)
66+
- [spoon_ai.memory.short_term_manager](./spoon_ai/memory/short_term_manager.md)
67+
- [spoon_ai.memory.utils](./spoon_ai/memory/utils.md)
68+
- [spoon_ai.neofs](./spoon_ai/neofs/)
69+
- [spoon_ai.neofs.client](./spoon_ai/neofs/client.md)
70+
- [spoon_ai.neofs.models](./spoon_ai/neofs/models.md)
71+
- [spoon_ai.neofs.utils](./spoon_ai/neofs/utils.md)
72+
- [spoon_ai.payments](./spoon_ai/payments/)
73+
- [spoon_ai.payments.app](./spoon_ai/payments/app.md)
74+
- [spoon_ai.payments.cli](./spoon_ai/payments/cli.md)
75+
- [spoon_ai.payments.config](./spoon_ai/payments/config.md)
76+
- [spoon_ai.payments.exceptions](./spoon_ai/payments/exceptions.md)
77+
- [spoon_ai.payments.facilitator_client](./spoon_ai/payments/facilitator_client.md)
78+
- [spoon_ai.payments.models](./spoon_ai/payments/models.md)
79+
- [spoon_ai.payments.server](./spoon_ai/payments/server.md)
80+
- [spoon_ai.payments.x402_service](./spoon_ai/payments/x402_service.md)
81+
- [spoon_ai.prompts](./spoon_ai/prompts/)
82+
- [spoon_ai.prompts.spoon_react](./spoon_ai/prompts/spoon_react.md)
83+
- [spoon_ai.prompts.toolcall](./spoon_ai/prompts/toolcall.md)
84+
- [spoon_ai.rag](./spoon_ai/rag/)
85+
- [spoon_ai.rag.config](./spoon_ai/rag/config.md)
86+
- [spoon_ai.rag.embeddings](./spoon_ai/rag/embeddings.md)
87+
- [spoon_ai.rag.index](./spoon_ai/rag/index.md)
88+
- [spoon_ai.rag.loader](./spoon_ai/rag/loader.md)
89+
- [spoon_ai.rag.qa](./spoon_ai/rag/qa.md)
90+
- [spoon_ai.rag.retriever](./spoon_ai/rag/retriever.md)
91+
- [spoon_ai.rag.vectorstores](./spoon_ai/rag/vectorstores/)
92+
- [spoon_ai.rag.vectorstores.base](./spoon_ai/rag/vectorstores/base.md)
93+
- [spoon_ai.rag.vectorstores.chroma_store](./spoon_ai/rag/vectorstores/chroma_store.md)
94+
- [spoon_ai.rag.vectorstores.faiss_store](./spoon_ai/rag/vectorstores/faiss_store.md)
95+
- [spoon_ai.rag.vectorstores.pinecone_store](./spoon_ai/rag/vectorstores/pinecone_store.md)
96+
- [spoon_ai.rag.vectorstores.qdrant_store](./spoon_ai/rag/vectorstores/qdrant_store.md)
97+
- [spoon_ai.rag.vectorstores.registry](./spoon_ai/rag/vectorstores/registry.md)
98+
- [spoon_ai.runnables](./spoon_ai/runnables/)
99+
- [spoon_ai.runnables.base](./spoon_ai/runnables/base.md)
100+
- [spoon_ai.runnables.events](./spoon_ai/runnables/events.md)
101+
- [spoon_ai.schema](./spoon_ai/schema.md)
102+
- [spoon_ai.tools](./spoon_ai/tools/)
103+
- [spoon_ai.tools.base](./spoon_ai/tools/base.md)
104+
- [spoon_ai.tools.mcp_tool](./spoon_ai/tools/mcp_tool.md)
105+
- [spoon_ai.tools.neofs_tools](./spoon_ai/tools/neofs_tools.md)
106+
- [spoon_ai.tools.rag_tools](./spoon_ai/tools/rag_tools.md)
107+
- [spoon_ai.tools.tool_manager](./spoon_ai/tools/tool_manager.md)
108+
- [spoon_ai.tools.turnkey_tools](./spoon_ai/tools/turnkey_tools.md)
109+
- [spoon_ai.tools.x402_payment](./spoon_ai/tools/x402_payment.md)
110+
- [spoon_ai.turnkey](./spoon_ai/turnkey/)
111+
- [spoon_ai.turnkey.client](./spoon_ai/turnkey/client.md)
112+
- [spoon_ai.utils](./spoon_ai/utils/)
113+
- [spoon_ai.utils.config](./spoon_ai/utils/config.md)
114+
- [spoon_ai.utils.config_manager](./spoon_ai/utils/config_manager.md)
115+
- [spoon_ai.utils.streaming](./spoon_ai/utils/streaming.md)
116+
- [spoon_ai.utils.utils](./spoon_ai/utils/utils.md)
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
---
2+
id: spoon_ai.agents.base
3+
slug: /api-reference/spoon_ai/agents/base
4+
title: spoon_ai.agents.base
5+
---
6+
7+
# Table of Contents
8+
9+
* [spoon\_ai.agents.base](#spoon_ai.agents.base)
10+
* [ThreadSafeOutputQueue](#spoon_ai.agents.base.ThreadSafeOutputQueue)
11+
* [get](#spoon_ai.agents.base.ThreadSafeOutputQueue.get)
12+
* [BaseAgent](#spoon_ai.agents.base.BaseAgent)
13+
* [add\_message](#spoon_ai.agents.base.BaseAgent.add_message)
14+
* [state\_context](#spoon_ai.agents.base.BaseAgent.state_context)
15+
* [run](#spoon_ai.agents.base.BaseAgent.run)
16+
* [step](#spoon_ai.agents.base.BaseAgent.step)
17+
* [is\_stuck](#spoon_ai.agents.base.BaseAgent.is_stuck)
18+
* [handle\_stuck\_state](#spoon_ai.agents.base.BaseAgent.handle_stuck_state)
19+
* [add\_documents](#spoon_ai.agents.base.BaseAgent.add_documents)
20+
* [save\_chat\_history](#spoon_ai.agents.base.BaseAgent.save_chat_history)
21+
* [stream](#spoon_ai.agents.base.BaseAgent.stream)
22+
* [process\_mcp\_message](#spoon_ai.agents.base.BaseAgent.process_mcp_message)
23+
* [shutdown](#spoon_ai.agents.base.BaseAgent.shutdown)
24+
* [get\_diagnostics](#spoon_ai.agents.base.BaseAgent.get_diagnostics)
25+
26+
<a id="spoon_ai.agents.base"></a>
27+
28+
# Module `spoon_ai.agents.base`
29+
30+
<a id="spoon_ai.agents.base.ThreadSafeOutputQueue"></a>
31+
32+
## `ThreadSafeOutputQueue` Objects
33+
34+
```python
35+
class ThreadSafeOutputQueue()
36+
```
37+
38+
Thread-safe output queue with fair access and timeout protection
39+
40+
<a id="spoon_ai.agents.base.ThreadSafeOutputQueue.get"></a>
41+
42+
#### `get`
43+
44+
```python
45+
async def get(timeout: Optional[float] = 30.0) -> Any
46+
```
47+
48+
Get item with timeout and fair access
49+
50+
<a id="spoon_ai.agents.base.BaseAgent"></a>
51+
52+
## `BaseAgent` Objects
53+
54+
```python
55+
class BaseAgent(BaseModel, ABC)
56+
```
57+
58+
Thread-safe base class for all agents with proper concurrency handling.
59+
60+
<a id="spoon_ai.agents.base.BaseAgent.add_message"></a>
61+
62+
#### `add_message`
63+
64+
```python
65+
async def add_message(role: Literal["user", "assistant", "tool"],
66+
content: str,
67+
tool_call_id: Optional[str] = None,
68+
tool_calls: Optional[List[ToolCall]] = None,
69+
tool_name: Optional[str] = None,
70+
timeout: Optional[float] = None) -> None
71+
```
72+
73+
Thread-safe message addition with timeout protection
74+
75+
<a id="spoon_ai.agents.base.BaseAgent.state_context"></a>
76+
77+
#### `state_context`
78+
79+
```python
80+
@asynccontextmanager
81+
async def state_context(new_state: AgentState,
82+
timeout: Optional[float] = None)
83+
```
84+
85+
Thread-safe state context manager with deadlock prevention.
86+
Acquires the state lock only to perform quick transitions, not for the
87+
duration of the work inside the context, avoiding long-held locks and
88+
false timeouts during network calls.
89+
90+
<a id="spoon_ai.agents.base.BaseAgent.run"></a>
91+
92+
#### `run`
93+
94+
```python
95+
async def run(request: Optional[str] = None,
96+
timeout: Optional[float] = None) -> str
97+
```
98+
99+
Thread-safe run method with proper concurrency control and callback support.
100+
101+
<a id="spoon_ai.agents.base.BaseAgent.step"></a>
102+
103+
#### `step`
104+
105+
```python
106+
async def step(run_id: Optional[uuid.UUID] = None) -> str
107+
```
108+
109+
Override this method in subclasses - now with step-level locking and callback support.
110+
111+
<a id="spoon_ai.agents.base.BaseAgent.is_stuck"></a>
112+
113+
#### `is_stuck`
114+
115+
```python
116+
async def is_stuck() -> bool
117+
```
118+
119+
Thread-safe stuck detection
120+
121+
<a id="spoon_ai.agents.base.BaseAgent.handle_stuck_state"></a>
122+
123+
#### `handle_stuck_state`
124+
125+
```python
126+
async def handle_stuck_state()
127+
```
128+
129+
Thread-safe stuck state handling
130+
131+
<a id="spoon_ai.agents.base.BaseAgent.add_documents"></a>
132+
133+
#### `add_documents`
134+
135+
```python
136+
def add_documents(documents) -> None
137+
```
138+
139+
Store documents on the agent so CLI load-docs works without RAG mixin.
140+
141+
This default implementation keeps the documents in-memory under
142+
self._loaded_documents. Agents that support retrieval should override
143+
this method to index documents into their vector store.
144+
145+
<a id="spoon_ai.agents.base.BaseAgent.save_chat_history"></a>
146+
147+
#### `save_chat_history`
148+
149+
```python
150+
def save_chat_history()
151+
```
152+
153+
Thread-safe chat history saving
154+
155+
<a id="spoon_ai.agents.base.BaseAgent.stream"></a>
156+
157+
#### `stream`
158+
159+
```python
160+
async def stream(timeout: Optional[float] = None)
161+
```
162+
163+
Thread-safe streaming with proper cleanup and timeout
164+
165+
<a id="spoon_ai.agents.base.BaseAgent.process_mcp_message"></a>
166+
167+
#### `process_mcp_message`
168+
169+
```python
170+
async def process_mcp_message(content: Any,
171+
sender: str,
172+
message: Dict[str, Any],
173+
agent_id: str,
174+
timeout: Optional[float] = None)
175+
```
176+
177+
Thread-safe MCP message processing with timeout protection
178+
179+
<a id="spoon_ai.agents.base.BaseAgent.shutdown"></a>
180+
181+
#### `shutdown`
182+
183+
```python
184+
async def shutdown(timeout: float = 30.0)
185+
```
186+
187+
Graceful shutdown with cleanup of active operations
188+
189+
<a id="spoon_ai.agents.base.BaseAgent.get_diagnostics"></a>
190+
191+
#### `get_diagnostics`
192+
193+
```python
194+
def get_diagnostics() -> Dict[str, Any]
195+
```
196+
197+
Get diagnostic information about the agent's state
198+

0 commit comments

Comments
 (0)