feat: honcho 3.0, sdks 2.0, excise stainless, update v3 docs, changelogs (#331)
* chore: 3.0 honcho and 2.0 sdks changelog fix: use PeerContextResponse in peer.ts * chore: move docs to /v3/, build SDKs * chore: code review * feat: [WIP] migrate away from stainless in typescript sdk * chore: move api from /v2/ to /v3/ * feat: no-stainless typescript with real tests * feat: migrate python sdk off of stainless * feat: clean typescript sdk * chore: add tests for ts http client * fix: rewrite entire python sdk in new format, update typescript sdk to use `configuration` not `config` for consistency with API * fix: clean up SDKs, synchronize * chore: update sdk examples * chore: update OpenAPI documentation and SDK examples to reflect changes * fix: better test * fix: install deps in test runner, improve robustness of streaming in sdk, coderabbit nits * fix: standardize around camelCase in TS SDK * refactor: update configuration handling in SDKs to use typed models for workspace, session, and peer configurations * docs: clarify queue status usage and remove polling methods from SDKs add claude skills for migrations * chore: fix links in docs * feat: add deriver flush mode to bypass batch token threshold - Introduced `is_deriver_flush_enabled` function to check if flush mode is active. - Updated `QueueManager` to conditionally apply batch token thresholds based on flush mode. - Enhanced `UnifiedTestExecutor` to enable flush mode via Redis. - Added `flush` parameter to test cases to facilitate testing of flush mode behavior. - Updated various test cases to utilize the new flush functionality. * feat: implement schedule_dream functionality in SDKs, use in unified test runner - Added `schedule_dream` method to both Python and TypeScript SDKs for scheduling dream tasks. - Updated HTTP routes to include endpoint for scheduling dreams. - Enhanced test runner to utilize the new `schedule_dream` method for scheduling actions. - Updated TypeScript client to support the new scheduling functionality with appropriate parameters. * feat: update single deriver task to support multiple observers - Changed the `observer` parameter to `observers` as a list in multiple functions across the deriver module. - Updated the processing logic to handle multiple observers for representation tasks. - Adjusted related payload and queue management functions to accommodate the new observers structure. - Modified tests to reflect changes in the representation task handling and ensure proper functionality. * refactor: update enqueue tests to support deduplication of queue items with multiple observers - Modified tests in `test_enqueue.py` to reflect changes in the queue item structure, where each message now results in a single queue item containing a list of observers. - Updated assertions to validate that the `observers` field correctly includes all relevant peers, ensuring proper functionality of the deduplication logic. - Removed redundant payload matching logic to streamline test cases and improve clarity. * fix: add backwards compatibility for representation work unit keys and payload observers * feat: update dialectic configuration and introduce cost calculator - Adjusted LLM and dialectic settings in `.env.template`, `config.toml.example`, and `src/config.py` to reduce maximum tool output characters and session history tokens for cost efficiency. - Implemented a new `dialectic_cost_calculator.py` script to estimate costs based on reasoning levels and model pricing. - Enhanced `DialecticAgent` to utilize minimal tools and adjusted output token settings based on reasoning level to optimize performance and reduce costs. * feat: add reasoning level to chat input in unified test runner - Enhanced the `UnifiedTestExecutor` to include a `reasoning_level` parameter in the chat method call. - Updated the `QueryAction` model to support the new `reasoning_level` attribute, allowing for more nuanced chat interactions. * feat: run deriver once for multiple observers (#335) * feat: update single deriver task to support multiple observers - Changed the `observer` parameter to `observers` as a list in multiple functions across the deriver module. - Updated the processing logic to handle multiple observers for representation tasks. - Adjusted related payload and queue management functions to accommodate the new observers structure. - Modified tests to reflect changes in the representation task handling and ensure proper functionality. * refactor: update enqueue tests to support deduplication of queue items with multiple observers - Modified tests in `test_enqueue.py` to reflect changes in the queue item structure, where each message now results in a single queue item containing a list of observers. - Updated assertions to validate that the `observers` field correctly includes all relevant peers, ensuring proper functionality of the deduplication logic. - Removed redundant payload matching logic to streamline test cases and improve clarity. * fix: add backwards compatibility for representation work unit keys and payload observers * feat: refactor benchmark runners to share common functionality - Introduced a new `runner_common.py` module containing shared utilities for benchmark test runners, including common argument parsing, client creation, and queue management. - Updated `BEAMRunner`, `LoCoMoRunner`, and `LongMemEvalRunner` to inherit from `RunnerMixin`, leveraging shared functionality for metrics collection and logging. - Added `reasoning_level` and `redis_url` parameters to runner constructors for enhanced configuration. - Streamlined argument parsing by utilizing `add_common_arguments` for shared command-line options across all runners. * fix: update last_user_message handling to use message content instead of ID * fix: standardize config vs configuration --------- Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com>
This commit is contained in:
parent
6b3ecef601
commit
dce96889bc
|
|
@ -0,0 +1,478 @@
|
||||||
|
# Detailed API Changes
|
||||||
|
|
||||||
|
## 1. Async Client Architecture (Major Change)
|
||||||
|
|
||||||
|
The separate `AsyncHoncho`, `AsyncPeer`, and `AsyncSession` classes have been removed. Use the `.aio` accessor instead.
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho import Honcho, AsyncHoncho, AsyncPeer, AsyncSession
|
||||||
|
|
||||||
|
# Sync client
|
||||||
|
client = Honcho()
|
||||||
|
|
||||||
|
# Async client - separate class
|
||||||
|
async_client = AsyncHoncho()
|
||||||
|
peer = await async_client.peer("user-123")
|
||||||
|
response = await peer.chat("query")
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho import Honcho
|
||||||
|
|
||||||
|
# Single client with .aio accessor for async operations
|
||||||
|
client = Honcho()
|
||||||
|
|
||||||
|
# Sync operations
|
||||||
|
peer = client.peer("user-123")
|
||||||
|
response = peer.chat("query")
|
||||||
|
|
||||||
|
# Async operations via .aio accessor
|
||||||
|
peer = await client.aio.peer("user-123")
|
||||||
|
response = await peer.aio.chat("query")
|
||||||
|
|
||||||
|
# Async iteration
|
||||||
|
async for p in client.aio.peers():
|
||||||
|
print(p.id)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Migration steps:**
|
||||||
|
|
||||||
|
1. Remove all `AsyncHoncho`, `AsyncPeer`, `AsyncSession` imports
|
||||||
|
2. Replace `AsyncHoncho()` with `Honcho()` and use `.aio` accessor
|
||||||
|
3. Replace `AsyncPeer` type hints with `Peer`
|
||||||
|
4. Replace `AsyncSession` type hints with `Session`
|
||||||
|
5. Access async methods via `.aio` property on instances
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Observations → Conclusions (Terminology Change)
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho import Observation, ObservationScope, AsyncObservationScope
|
||||||
|
|
||||||
|
# Access observations
|
||||||
|
scope = peer.observations
|
||||||
|
scope = peer.observations_of("other-peer")
|
||||||
|
|
||||||
|
# List observations
|
||||||
|
obs_list = scope.list()
|
||||||
|
|
||||||
|
# Query observations
|
||||||
|
results = scope.query("preferences")
|
||||||
|
|
||||||
|
# Create observations
|
||||||
|
scope.create([{"content": "User likes dark mode", "session_id": "sess-1"}])
|
||||||
|
|
||||||
|
# Get representation from observations
|
||||||
|
rep = scope.get_representation()
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho import Conclusion, ConclusionScope, ConclusionScopeAio
|
||||||
|
|
||||||
|
# Access conclusions
|
||||||
|
scope = peer.conclusions
|
||||||
|
scope = peer.conclusions_of("other-peer")
|
||||||
|
|
||||||
|
# List conclusions (now returns SyncPage, not list)
|
||||||
|
conclusions_page = scope.list()
|
||||||
|
for conclusion in conclusions_page:
|
||||||
|
print(conclusion.content)
|
||||||
|
|
||||||
|
# Query conclusions
|
||||||
|
results = scope.query("preferences")
|
||||||
|
|
||||||
|
# Create conclusions
|
||||||
|
scope.create([{"content": "User likes dark mode", "session_id": "sess-1"}])
|
||||||
|
|
||||||
|
# Get representation from conclusions
|
||||||
|
rep = scope.representation() # Returns str, not Representation object
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Representation Type Change (Major Change)
|
||||||
|
|
||||||
|
The `Representation` class has been removed. Representations are now simple strings.
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho import Representation, ExplicitObservation, DeductiveObservation
|
||||||
|
|
||||||
|
# Get working representation
|
||||||
|
rep: Representation = peer.working_rep()
|
||||||
|
|
||||||
|
# Access explicit and deductive observations
|
||||||
|
for obs in rep.explicit:
|
||||||
|
print(obs.content, obs.created_at)
|
||||||
|
|
||||||
|
for obs in rep.deductive:
|
||||||
|
print(obs.conclusion, obs.premises)
|
||||||
|
|
||||||
|
# Check if empty
|
||||||
|
if rep.is_empty():
|
||||||
|
print("No observations")
|
||||||
|
|
||||||
|
# Merge representations
|
||||||
|
rep.merge_representation(other_rep)
|
||||||
|
|
||||||
|
# Diff representations
|
||||||
|
diff = rep.diff_representation(other_rep)
|
||||||
|
|
||||||
|
# String formatting
|
||||||
|
print(str(rep))
|
||||||
|
print(rep.str_no_timestamps())
|
||||||
|
print(rep.format_as_markdown())
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Get representation - now returns str directly
|
||||||
|
rep: str = peer.representation()
|
||||||
|
|
||||||
|
# It's just a string now
|
||||||
|
print(rep)
|
||||||
|
|
||||||
|
# Check if empty
|
||||||
|
if not rep:
|
||||||
|
print("No conclusions")
|
||||||
|
```
|
||||||
|
|
||||||
|
**Removed methods:**
|
||||||
|
|
||||||
|
- `.explicit` property
|
||||||
|
- `.deductive` property
|
||||||
|
- `.is_empty()`
|
||||||
|
- `.merge_representation()`
|
||||||
|
- `.diff_representation()`
|
||||||
|
- `.str_no_timestamps()`
|
||||||
|
- `.format_as_markdown()`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Configuration Parameter Rename
|
||||||
|
|
||||||
|
All `config` parameters have been renamed to `configuration`, and configuration types are now strongly typed.
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Creating resources with config
|
||||||
|
peer = client.peer("user-1", config={"observe_me": True})
|
||||||
|
session = client.session("sess-1", config={"some_setting": True})
|
||||||
|
|
||||||
|
# Getting/setting config
|
||||||
|
config = peer.get_config()
|
||||||
|
peer.set_config({"observe_me": False})
|
||||||
|
|
||||||
|
config = session.get_config()
|
||||||
|
session.set_config({"some_setting": False})
|
||||||
|
|
||||||
|
config = client.get_config()
|
||||||
|
client.set_config({"workspace_setting": True})
|
||||||
|
|
||||||
|
# Message config parameter
|
||||||
|
msg = peer.message("Hello", config={"reasoning": {"enabled": True}})
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho.api_types import PeerConfig, SessionConfiguration, WorkspaceConfiguration
|
||||||
|
|
||||||
|
# Creating resources with configuration (typed)
|
||||||
|
peer = client.peer("user-1", configuration=PeerConfig(observe_me=True))
|
||||||
|
session = client.session("sess-1", configuration=SessionConfiguration())
|
||||||
|
|
||||||
|
# Getting/setting configuration (returns typed objects)
|
||||||
|
config: PeerConfig = peer.get_configuration()
|
||||||
|
peer.set_configuration(PeerConfig(observe_me=False))
|
||||||
|
|
||||||
|
config: SessionConfiguration = session.get_configuration()
|
||||||
|
session.set_configuration(SessionConfiguration())
|
||||||
|
|
||||||
|
config: WorkspaceConfiguration = client.get_configuration()
|
||||||
|
client.set_configuration(WorkspaceConfiguration())
|
||||||
|
|
||||||
|
# Message configuration parameter
|
||||||
|
msg = peer.message("Hello", configuration={"reasoning": {"enabled": True}})
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Streaming Chat API Change
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Streaming via parameter
|
||||||
|
response = peer.chat("query", stream=True)
|
||||||
|
for chunk in response:
|
||||||
|
print(chunk, end="")
|
||||||
|
|
||||||
|
final = response.get_final_response()
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Streaming via separate method
|
||||||
|
stream = peer.chat_stream("query")
|
||||||
|
for chunk in stream:
|
||||||
|
print(chunk, end="")
|
||||||
|
|
||||||
|
final = stream.get_final_response()
|
||||||
|
|
||||||
|
# Non-streaming (no stream parameter needed)
|
||||||
|
response = peer.chat("query")
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Deriver Status → Queue Status
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho_core.types import DeriverStatus
|
||||||
|
|
||||||
|
# Get status
|
||||||
|
status: DeriverStatus = client.get_deriver_status()
|
||||||
|
status = session.get_deriver_status()
|
||||||
|
|
||||||
|
# Poll until complete
|
||||||
|
status = client.poll_deriver_status(timeout=300.0)
|
||||||
|
status = session.poll_deriver_status(timeout=300.0)
|
||||||
|
|
||||||
|
# Access fields
|
||||||
|
print(status.pending_work_units)
|
||||||
|
print(status.in_progress_work_units)
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho.api_types import QueueStatusResponse
|
||||||
|
|
||||||
|
# Get status
|
||||||
|
status: QueueStatusResponse = client.queue_status()
|
||||||
|
status = session.queue_status()
|
||||||
|
|
||||||
|
# Access fields (same as before)
|
||||||
|
print(status.pending_work_units)
|
||||||
|
print(status.in_progress_work_units)
|
||||||
|
|
||||||
|
# poll_deriver_status has been removed - implement polling manually if needed:
|
||||||
|
import time
|
||||||
|
|
||||||
|
def poll_until_complete(client, timeout=300.0):
|
||||||
|
start = time.time()
|
||||||
|
while time.time() - start < timeout:
|
||||||
|
status = client.queue_status()
|
||||||
|
if status.pending_work_units == 0 and status.in_progress_work_units == 0:
|
||||||
|
return status
|
||||||
|
time.sleep(1)
|
||||||
|
raise TimeoutError("Queue processing did not complete in time")
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. PeerContext Changes
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho import PeerContext
|
||||||
|
|
||||||
|
context: PeerContext = peer.get_context()
|
||||||
|
|
||||||
|
# Access representation (was Representation object)
|
||||||
|
rep: Representation = context.representation
|
||||||
|
if rep:
|
||||||
|
print(rep.explicit)
|
||||||
|
print(rep.deductive)
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho.api_types import PeerContextResponse
|
||||||
|
|
||||||
|
context: PeerContextResponse = peer.context()
|
||||||
|
|
||||||
|
# Access representation (now str)
|
||||||
|
rep: str | None = context.representation
|
||||||
|
if rep:
|
||||||
|
print(rep)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Card Method Return Type Change
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# card() returned str (joined with newlines)
|
||||||
|
card: str = peer.card()
|
||||||
|
print(card) # "line1\nline2\nline3"
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# card() returns list[str] | None
|
||||||
|
card: list[str] | None = peer.card()
|
||||||
|
if card:
|
||||||
|
print("\n".join(card)) # Join manually if needed
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Message Update Location Change
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Update message via client
|
||||||
|
updated = client.update_message(
|
||||||
|
message=msg,
|
||||||
|
metadata={"key": "value"},
|
||||||
|
session="session-id" # Required if message is string ID
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Update message via session
|
||||||
|
updated = session.update_message(
|
||||||
|
message=msg,
|
||||||
|
metadata={"key": "value"}
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Removed: `core` Property
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Access underlying Stainless-generated client
|
||||||
|
core_client = client.core
|
||||||
|
workspace = client.core.workspaces.get_or_create(id="custom-workspace")
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# The `core` property has been removed
|
||||||
|
# The SDK no longer uses a Stainless-generated client internally
|
||||||
|
# Use the SDK's public API directly
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Environment Changes
|
||||||
|
|
||||||
|
### Before (v1.6.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Three environments available
|
||||||
|
client = Honcho(environment="local")
|
||||||
|
client = Honcho(environment="production")
|
||||||
|
client = Honcho(environment="demo")
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (v2.0.0)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Only two environments
|
||||||
|
client = Honcho(environment="local")
|
||||||
|
client = Honcho(environment="production")
|
||||||
|
# "demo" environment has been removed
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. Reasoning Level Parameter (New Feature)
|
||||||
|
|
||||||
|
The chat method now supports a `reasoning_level` parameter:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# New in v2.0.0
|
||||||
|
response = peer.chat(
|
||||||
|
"complex query",
|
||||||
|
reasoning_level="high" # "minimal", "low", "medium", "high", "max"
|
||||||
|
)
|
||||||
|
|
||||||
|
stream = peer.chat_stream(
|
||||||
|
"complex query",
|
||||||
|
reasoning_level="max"
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. Import Changes Summary
|
||||||
|
|
||||||
|
### Removed Imports
|
||||||
|
|
||||||
|
```python
|
||||||
|
# These no longer exist in v2.0.0
|
||||||
|
from honcho import AsyncHoncho # Use Honcho with .aio accessor
|
||||||
|
from honcho import AsyncPeer # Use Peer with .aio accessor
|
||||||
|
from honcho import AsyncSession # Use Session with .aio accessor
|
||||||
|
from honcho import Observation # Renamed to Conclusion
|
||||||
|
from honcho import ObservationScope # Renamed to ConclusionScope
|
||||||
|
from honcho import AsyncObservationScope # Renamed to ConclusionScopeAio
|
||||||
|
from honcho import Representation # Removed (now str)
|
||||||
|
from honcho import ExplicitObservation # Removed
|
||||||
|
from honcho import DeductiveObservation # Removed
|
||||||
|
from honcho import PeerContext # Use PeerContextResponse from api_types
|
||||||
|
```
|
||||||
|
|
||||||
|
### New Imports
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho import Conclusion, ConclusionScope
|
||||||
|
from honcho import ConclusionScopeAio
|
||||||
|
from honcho import HonchoAio, PeerAio, SessionAio # For type hints
|
||||||
|
from honcho import MessageCreateParams, Message
|
||||||
|
|
||||||
|
# Typed configuration classes
|
||||||
|
from honcho.api_types import (
|
||||||
|
PeerConfig,
|
||||||
|
SessionConfiguration,
|
||||||
|
WorkspaceConfiguration,
|
||||||
|
SessionPeerConfig,
|
||||||
|
QueueStatusResponse,
|
||||||
|
PeerContextResponse,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Message Type Import Changes
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
from honcho_core.types.workspaces.sessions import MessageCreateParam
|
||||||
|
from honcho_core.types.workspaces.sessions.message import Message
|
||||||
|
from honcho.session import SessionPeerConfig
|
||||||
|
|
||||||
|
# After
|
||||||
|
from honcho import Message, MessageCreateParams # Note: plural "Params"
|
||||||
|
from honcho.api_types import SessionPeerConfig
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** `MessageCreateParam` (singular) is now `MessageCreateParams` (plural).
|
||||||
|
|
@ -0,0 +1,121 @@
|
||||||
|
# Migration Checklist
|
||||||
|
|
||||||
|
Use this checklist to track migration progress. Copy into your working notes and check off items as completed.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
- [ ] Update `honcho` package to v2.0.0
|
||||||
|
- [ ] Remove any `honcho-core` imports
|
||||||
|
|
||||||
|
## Async Architecture Changes
|
||||||
|
|
||||||
|
- [ ] Remove `AsyncHoncho` imports → use `Honcho` with `.aio` accessor
|
||||||
|
- [ ] Remove `AsyncPeer` imports → use `Peer` with `.aio` accessor
|
||||||
|
- [ ] Remove `AsyncSession` imports → use `Session` with `.aio` accessor
|
||||||
|
- [ ] Update all async client usage to use `.aio` accessor pattern
|
||||||
|
- [ ] Update type hints: `AsyncPeer` → `Peer`, `AsyncSession` → `Session`
|
||||||
|
|
||||||
|
## Terminology: Observations → Conclusions
|
||||||
|
|
||||||
|
- [ ] Replace `Observation` import with `Conclusion`
|
||||||
|
- [ ] Replace `ObservationScope` import with `ConclusionScope`
|
||||||
|
- [ ] Replace `AsyncObservationScope` import with `ConclusionScopeAio`
|
||||||
|
- [ ] Replace `.observations` property with `.conclusions`
|
||||||
|
- [ ] Replace `.observations_of()` method with `.conclusions_of()`
|
||||||
|
- [ ] Replace `.get_representation()` with `.representation()`
|
||||||
|
|
||||||
|
## Representation Changes
|
||||||
|
|
||||||
|
- [ ] Remove `Representation` import (now returns `str`)
|
||||||
|
- [ ] Remove `ExplicitObservation` import
|
||||||
|
- [ ] Remove `DeductiveObservation` import
|
||||||
|
- [ ] Replace `working_rep()` with `representation()`
|
||||||
|
- [ ] Update type hints from `Representation` to `str`
|
||||||
|
- [ ] Remove `.explicit` property access
|
||||||
|
- [ ] Remove `.deductive` property access
|
||||||
|
- [ ] Replace `.is_empty()` checks with `not rep`
|
||||||
|
- [ ] Remove `.merge_representation()` calls
|
||||||
|
- [ ] Remove `.diff_representation()` calls
|
||||||
|
- [ ] Remove `.str_no_timestamps()` calls
|
||||||
|
- [ ] Remove `.format_as_markdown()` calls
|
||||||
|
|
||||||
|
## Configuration Changes
|
||||||
|
|
||||||
|
- [ ] Replace all `config=` parameters with `configuration=`
|
||||||
|
- [ ] Replace `.get_config()` with `.get_configuration()`
|
||||||
|
- [ ] Replace `.set_config()` with `.set_configuration()`
|
||||||
|
- [ ] Rename `.get_peer_config()` → `.get_peer_configuration()`
|
||||||
|
- [ ] Rename `.set_peer_config()` → `.set_peer_configuration()`
|
||||||
|
- [ ] Import typed config classes from `honcho.api_types` if needed:
|
||||||
|
- [ ] `PeerConfig`
|
||||||
|
- [ ] `SessionConfiguration`
|
||||||
|
- [ ] `WorkspaceConfiguration`
|
||||||
|
|
||||||
|
## Method Renames
|
||||||
|
|
||||||
|
### Peer Methods
|
||||||
|
|
||||||
|
- [ ] `peer.working_rep()` → `peer.representation()`
|
||||||
|
- [ ] `peer.get_context()` → `peer.context()`
|
||||||
|
- [ ] `peer.get_sessions()` → `peer.sessions()`
|
||||||
|
- [ ] `peer.chat(stream=True)` → `peer.chat_stream()`
|
||||||
|
|
||||||
|
### Session Methods
|
||||||
|
|
||||||
|
- [ ] `session.get_context()` → `session.context()`
|
||||||
|
- [ ] `session.get_summaries()` → `session.summaries()`
|
||||||
|
- [ ] `session.get_messages()` → `session.messages()`
|
||||||
|
- [ ] `session.get_peers()` → `session.peers()`
|
||||||
|
- [ ] `session.get_peer_config()` → `session.get_peer_configuration()`
|
||||||
|
- [ ] `session.set_peer_config()` → `session.set_peer_configuration()`
|
||||||
|
- [ ] `session.working_rep()` → `session.representation()`
|
||||||
|
- [ ] `session.get_deriver_status()` → `session.queue_status()`
|
||||||
|
- [ ] Remove `session.poll_deriver_status()` calls
|
||||||
|
|
||||||
|
### Client Methods
|
||||||
|
|
||||||
|
- [ ] `client.get_peers()` → `client.peers()`
|
||||||
|
- [ ] `client.get_sessions()` → `client.sessions()`
|
||||||
|
- [ ] `client.get_workspaces()` → `client.workspaces()`
|
||||||
|
- [ ] `client.get_deriver_status()` → `client.queue_status()`
|
||||||
|
- [ ] Remove `client.poll_deriver_status()` calls
|
||||||
|
- [ ] Move `client.update_message()` → `session.update_message()`
|
||||||
|
|
||||||
|
## Parameter Renames
|
||||||
|
|
||||||
|
- [ ] `include_most_derived=` → `include_most_frequent=`
|
||||||
|
- [ ] `max_observations=` → `max_conclusions=`
|
||||||
|
|
||||||
|
## Return Type Changes
|
||||||
|
|
||||||
|
- [ ] Handle `card()` returning `list[str] | None` instead of `str`
|
||||||
|
- [ ] Handle `.list()` on conclusions returning `SyncPage` instead of `list`
|
||||||
|
|
||||||
|
## Removed Features
|
||||||
|
|
||||||
|
- [ ] Remove any usage of `client.core` property
|
||||||
|
- [ ] Remove usage of `"demo"` environment (only `"local"` and `"production"` remain)
|
||||||
|
- [ ] Implement custom polling if you were using `poll_deriver_status()`
|
||||||
|
|
||||||
|
## Type Import Updates
|
||||||
|
|
||||||
|
- [ ] Replace `PeerContext` import with `PeerContextResponse` from `honcho.api_types`
|
||||||
|
- [ ] Replace `DeriverStatus` import with `QueueStatusResponse` from `honcho.api_types`
|
||||||
|
- [ ] Replace `MessageCreateParam` with `MessageCreateParams` (plural)
|
||||||
|
- [ ] Move `SessionPeerConfig` import from `honcho.session` to `honcho.api_types`
|
||||||
|
|
||||||
|
## Exception Handling (Optional)
|
||||||
|
|
||||||
|
- [ ] Update exception handling to use new exception types if needed:
|
||||||
|
- `HonchoError`, `APIError`, `BadRequestError`, `AuthenticationError`
|
||||||
|
- `PermissionDeniedError`, `NotFoundError`, `ConflictError`
|
||||||
|
- `UnprocessableEntityError`, `RateLimitError`, `ServerError`
|
||||||
|
- `TimeoutError`, `ConnectionError`
|
||||||
|
|
||||||
|
## Final Verification
|
||||||
|
|
||||||
|
- [ ] Run type checker (mypy/pyright) with no errors
|
||||||
|
- [ ] Run tests
|
||||||
|
- [ ] Verify async operations work with `.aio` accessor
|
||||||
|
- [ ] Verify streaming functionality works with `chat_stream()`
|
||||||
|
- [ ] Verify configuration changes take effect
|
||||||
|
|
@ -0,0 +1,277 @@
|
||||||
|
---
|
||||||
|
name: migrate-honcho
|
||||||
|
description: Migrates Honcho Python SDK code from v1.6.0 to v2.0.0. Use when upgrading honcho package, fixing breaking changes after upgrade, or when errors mention AsyncHoncho, observations, Representation class, .core property, or get_config methods.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Honcho Python SDK Migration (v1.6.0 → v2.0.0)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This skill migrates code from `honcho` Python SDK v1.6.0 to v2.0.0 (required for Honcho 3.0.0).
|
||||||
|
|
||||||
|
**Key breaking changes:**
|
||||||
|
|
||||||
|
- `AsyncHoncho`/`AsyncPeer`/`AsyncSession` removed → use `.aio` accessor
|
||||||
|
- "Observation" → "Conclusion" terminology
|
||||||
|
- `Representation` class removed (returns `str` now)
|
||||||
|
- `get_config`/`set_config` → `get_configuration`/`set_configuration`
|
||||||
|
- Streaming via `chat_stream()` instead of `chat(stream=True)`
|
||||||
|
- `poll_deriver_status()` removed
|
||||||
|
- `.core` property removed
|
||||||
|
|
||||||
|
## Quick Migration
|
||||||
|
|
||||||
|
### 1. Update async architecture
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
from honcho import AsyncHoncho, AsyncPeer, AsyncSession
|
||||||
|
|
||||||
|
async_client = AsyncHoncho()
|
||||||
|
peer = await async_client.peer("user-123")
|
||||||
|
response = await peer.chat("query")
|
||||||
|
|
||||||
|
# After
|
||||||
|
from honcho import Honcho
|
||||||
|
|
||||||
|
client = Honcho()
|
||||||
|
peer = await client.aio.peer("user-123")
|
||||||
|
response = await peer.aio.chat("query")
|
||||||
|
|
||||||
|
# Async iteration
|
||||||
|
async for p in client.aio.peers():
|
||||||
|
print(p.id)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Replace observations with conclusions
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
from honcho import Observation, ObservationScope, AsyncObservationScope
|
||||||
|
|
||||||
|
scope = peer.observations
|
||||||
|
scope = peer.observations_of("other-peer")
|
||||||
|
rep = scope.get_representation()
|
||||||
|
|
||||||
|
# After
|
||||||
|
from honcho import Conclusion, ConclusionScope, ConclusionScopeAio
|
||||||
|
|
||||||
|
scope = peer.conclusions
|
||||||
|
scope = peer.conclusions_of("other-peer")
|
||||||
|
rep = scope.representation() # Returns str
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Update representation handling
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
from honcho import Representation, ExplicitObservation, DeductiveObservation
|
||||||
|
|
||||||
|
rep: Representation = peer.working_rep()
|
||||||
|
print(rep.explicit)
|
||||||
|
print(rep.deductive)
|
||||||
|
if rep.is_empty():
|
||||||
|
print("No observations")
|
||||||
|
|
||||||
|
# After
|
||||||
|
rep: str = peer.representation()
|
||||||
|
print(rep) # Just a string now
|
||||||
|
if not rep:
|
||||||
|
print("No conclusions")
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Rename configuration methods
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
config = peer.get_config()
|
||||||
|
peer.set_config({"observe_me": False})
|
||||||
|
session.get_config()
|
||||||
|
client.get_config()
|
||||||
|
|
||||||
|
# After
|
||||||
|
from honcho.api_types import PeerConfig, SessionConfiguration, WorkspaceConfiguration
|
||||||
|
|
||||||
|
config = peer.get_configuration()
|
||||||
|
peer.set_configuration(PeerConfig(observe_me=False))
|
||||||
|
session.get_configuration()
|
||||||
|
client.get_configuration()
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Update method names
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
peer.working_rep()
|
||||||
|
peer.get_context()
|
||||||
|
peer.get_sessions()
|
||||||
|
session.get_context()
|
||||||
|
session.get_summaries()
|
||||||
|
session.get_messages()
|
||||||
|
session.get_peers()
|
||||||
|
session.get_peer_config()
|
||||||
|
client.get_peers()
|
||||||
|
client.get_sessions()
|
||||||
|
client.get_workspaces()
|
||||||
|
|
||||||
|
# After
|
||||||
|
peer.representation()
|
||||||
|
peer.context()
|
||||||
|
peer.sessions()
|
||||||
|
session.context()
|
||||||
|
session.summaries()
|
||||||
|
session.messages()
|
||||||
|
session.peers()
|
||||||
|
session.get_peer_configuration()
|
||||||
|
client.peers()
|
||||||
|
client.sessions()
|
||||||
|
client.workspaces()
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Update streaming
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
response = peer.chat("query", stream=True)
|
||||||
|
for chunk in response:
|
||||||
|
print(chunk, end="")
|
||||||
|
|
||||||
|
# After
|
||||||
|
stream = peer.chat_stream("query")
|
||||||
|
for chunk in stream:
|
||||||
|
print(chunk, end="")
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Update queue status (formerly deriver)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
from honcho_core.types import DeriverStatus
|
||||||
|
|
||||||
|
status = client.get_deriver_status()
|
||||||
|
status = client.poll_deriver_status(timeout=300.0) # Removed!
|
||||||
|
|
||||||
|
# After
|
||||||
|
from honcho.api_types import QueueStatusResponse
|
||||||
|
|
||||||
|
status = client.queue_status()
|
||||||
|
# poll_deriver_status removed - implement polling manually if needed
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8. Update representation parameters
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
rep = peer.working_rep(
|
||||||
|
include_most_derived=True,
|
||||||
|
max_observations=50
|
||||||
|
)
|
||||||
|
|
||||||
|
# After
|
||||||
|
rep = peer.representation(
|
||||||
|
include_most_frequent=True,
|
||||||
|
max_conclusions=50
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9. Move update_message to session
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
updated = client.update_message(message=msg, metadata={"key": "value"}, session="sess-id")
|
||||||
|
|
||||||
|
# After
|
||||||
|
updated = session.update_message(message=msg, metadata={"key": "value"})
|
||||||
|
```
|
||||||
|
|
||||||
|
### 10. Update card() return type
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Before
|
||||||
|
card: str = peer.card() # Returns str
|
||||||
|
|
||||||
|
# After
|
||||||
|
card: list[str] | None = peer.card() # Returns list[str] | None
|
||||||
|
if card:
|
||||||
|
print("\n".join(card))
|
||||||
|
```
|
||||||
|
|
||||||
|
## Quick Reference Table
|
||||||
|
|
||||||
|
| v1.6.0 | v2.0.0 |
|
||||||
|
|--------|--------|
|
||||||
|
| `AsyncHoncho()` | `Honcho()` + `.aio` accessor |
|
||||||
|
| `AsyncPeer` | `Peer` + `.aio` accessor |
|
||||||
|
| `AsyncSession` | `Session` + `.aio` accessor |
|
||||||
|
| `Observation` | `Conclusion` |
|
||||||
|
| `ObservationScope` | `ConclusionScope` |
|
||||||
|
| `AsyncObservationScope` | `ConclusionScopeAio` |
|
||||||
|
| `Representation` | `str` |
|
||||||
|
| `.observations` | `.conclusions` |
|
||||||
|
| `.observations_of()` | `.conclusions_of()` |
|
||||||
|
| `.get_config()` | `.get_configuration()` |
|
||||||
|
| `.set_config()` | `.set_configuration()` |
|
||||||
|
| `.working_rep()` | `.representation()` |
|
||||||
|
| `.get_context()` | `.context()` |
|
||||||
|
| `.get_sessions()` | `.sessions()` |
|
||||||
|
| `.get_peers()` | `.peers()` |
|
||||||
|
| `.get_messages()` | `.messages()` |
|
||||||
|
| `.get_summaries()` | `.summaries()` |
|
||||||
|
| `.get_deriver_status()` | `.queue_status()` |
|
||||||
|
| `.poll_deriver_status()` | *(removed)* |
|
||||||
|
| `.get_peer_config()` | `.get_peer_configuration()` |
|
||||||
|
| `.set_peer_config()` | `.set_peer_configuration()` |
|
||||||
|
| `client.update_message()` | `session.update_message()` |
|
||||||
|
| `chat(stream=True)` | `chat_stream()` |
|
||||||
|
| `include_most_derived=` | `include_most_frequent=` |
|
||||||
|
| `max_observations=` | `max_conclusions=` |
|
||||||
|
| `config=` | `configuration=` |
|
||||||
|
| `PeerContext` | `PeerContextResponse` |
|
||||||
|
| `DeriverStatus` | `QueueStatusResponse` |
|
||||||
|
| `client.core` | *(removed)* |
|
||||||
|
|
||||||
|
## Detailed Reference
|
||||||
|
|
||||||
|
For comprehensive details on each change, see:
|
||||||
|
|
||||||
|
- [DETAILED-CHANGES.md](DETAILED-CHANGES.md) - Full API change documentation
|
||||||
|
- [MIGRATION-CHECKLIST.md](MIGRATION-CHECKLIST.md) - Step-by-step checklist
|
||||||
|
|
||||||
|
## New Exception Types
|
||||||
|
|
||||||
|
```python
|
||||||
|
from honcho import (
|
||||||
|
HonchoError,
|
||||||
|
APIError,
|
||||||
|
BadRequestError,
|
||||||
|
AuthenticationError,
|
||||||
|
PermissionDeniedError,
|
||||||
|
NotFoundError,
|
||||||
|
ConflictError,
|
||||||
|
UnprocessableEntityError,
|
||||||
|
RateLimitError,
|
||||||
|
ServerError,
|
||||||
|
TimeoutError,
|
||||||
|
ConnectionError,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
## New Import Locations
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Configuration types
|
||||||
|
from honcho.api_types import (
|
||||||
|
PeerConfig,
|
||||||
|
SessionConfiguration,
|
||||||
|
WorkspaceConfiguration,
|
||||||
|
SessionPeerConfig,
|
||||||
|
QueueStatusResponse,
|
||||||
|
PeerContextResponse,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Async type hints
|
||||||
|
from honcho import HonchoAio, PeerAio, SessionAio
|
||||||
|
|
||||||
|
# Message types (note: Params is plural now)
|
||||||
|
from honcho import Message, MessageCreateParams
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,432 @@
|
||||||
|
# Detailed API Changes
|
||||||
|
|
||||||
|
## Client Changes
|
||||||
|
|
||||||
|
### `.core` Property Removed
|
||||||
|
|
||||||
|
The `.core` property (which exposed the raw `@honcho-ai/core` client) has been removed. Use `.http` for advanced HTTP access.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const workspace = await client.core.workspaces.getOrCreate({ id: 'my-workspace' })
|
||||||
|
|
||||||
|
// After - SDK handles workspace creation automatically
|
||||||
|
// For advanced usage:
|
||||||
|
const response = await client.http.post('/v3/workspaces', { body: { id: 'my-workspace' } })
|
||||||
|
```
|
||||||
|
|
||||||
|
### Listing Methods Return Type Changes
|
||||||
|
|
||||||
|
- `workspaces()` now returns `Page<string>` instead of `string[]`
|
||||||
|
- `session.peers()` now returns `Peer[]` instead of `Page<Peer>`
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const workspacePage = await honcho.workspaces()
|
||||||
|
for (const id of workspacePage.items) {
|
||||||
|
console.log(id)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### `updateMessage()` Moved to Session
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
await honcho.updateMessage(message, { key: 'value' }, session)
|
||||||
|
|
||||||
|
// After
|
||||||
|
await session.updateMessage(message, { key: 'value' })
|
||||||
|
```
|
||||||
|
|
||||||
|
### `config` Option Renamed to `configuration`
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const peer = await honcho.peer('user-id', { config: { observe_me: true } })
|
||||||
|
const session = await honcho.session('session-id', { config: { ... } })
|
||||||
|
|
||||||
|
// After
|
||||||
|
const peer = await honcho.peer('user-id', { configuration: { observeMe: true } })
|
||||||
|
const session = await honcho.session('session-id', { configuration: { reasoning: { enabled: true } } })
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Peer Changes
|
||||||
|
|
||||||
|
### Streaming API
|
||||||
|
|
||||||
|
The `stream` option on `chat()` has been removed. Use `chatStream()` instead.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const stream = await peer.chat('Hello', { stream: true })
|
||||||
|
for await (const chunk of stream) {
|
||||||
|
process.stdout.write(chunk)
|
||||||
|
}
|
||||||
|
|
||||||
|
// After
|
||||||
|
const stream = await peer.chatStream('Hello')
|
||||||
|
for await (const chunk of stream) {
|
||||||
|
process.stdout.write(chunk)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Non-streaming `chat()` now only returns `string | null`:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const response = await peer.chat('Hello') // Returns string | null
|
||||||
|
```
|
||||||
|
|
||||||
|
### New `reasoningLevel` Option
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const response = await peer.chat('Complex question', {
|
||||||
|
reasoningLevel: 'high' // 'minimal' | 'low' | 'medium' | 'high' | 'max'
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### `workingRep()` Renamed to `representation()`
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const rep = await peer.workingRep(session, target, options)
|
||||||
|
console.log(rep.toString())
|
||||||
|
console.log(rep.explicit)
|
||||||
|
console.log(rep.deductive)
|
||||||
|
|
||||||
|
// After
|
||||||
|
const rep = await peer.representation({
|
||||||
|
session,
|
||||||
|
target,
|
||||||
|
searchQuery: options?.searchQuery,
|
||||||
|
maxConclusions: options?.maxObservations,
|
||||||
|
includeMostFrequent: options?.includeMostDerived,
|
||||||
|
})
|
||||||
|
console.log(rep) // Returns string directly
|
||||||
|
```
|
||||||
|
|
||||||
|
### `getContext()` Renamed to `context()`
|
||||||
|
|
||||||
|
Options are now passed as a single object:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const ctx = await peer.getContext(target, options)
|
||||||
|
|
||||||
|
// After
|
||||||
|
const ctx = await peer.context({ target, ...options })
|
||||||
|
```
|
||||||
|
|
||||||
|
### `card()` Return Type Changed
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const card = await peer.card(target) // Returns string
|
||||||
|
|
||||||
|
// After
|
||||||
|
const card = await peer.card(target) // Returns string[] | null
|
||||||
|
```
|
||||||
|
|
||||||
|
### `message()` Options Changed
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const msg = peer.message('Hello', {
|
||||||
|
metadata: { key: 'value' },
|
||||||
|
configuration: { deriver: { enabled: true } },
|
||||||
|
created_at: '2024-01-01T00:00:00Z'
|
||||||
|
})
|
||||||
|
// Returns ValidatedMessageCreate with peer_id, created_at
|
||||||
|
|
||||||
|
// After
|
||||||
|
const msg = peer.message('Hello', {
|
||||||
|
metadata: { key: 'value' },
|
||||||
|
configuration: { reasoning: { enabled: true } },
|
||||||
|
createdAt: '2024-01-01T00:00:00Z'
|
||||||
|
})
|
||||||
|
// Returns MessageInput with peerId, createdAt
|
||||||
|
```
|
||||||
|
|
||||||
|
### `PeerContext.representation` Type Changed
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const ctx = await peer.getContext()
|
||||||
|
if (ctx.representation) {
|
||||||
|
console.log(ctx.representation.explicit) // Representation object
|
||||||
|
console.log(ctx.representation.deductive)
|
||||||
|
}
|
||||||
|
|
||||||
|
// After
|
||||||
|
const ctx = await peer.context()
|
||||||
|
if (ctx.representation) {
|
||||||
|
console.log(ctx.representation) // Now a string
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Session Changes
|
||||||
|
|
||||||
|
### `getPeers()` Return Type Changed
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const peers = await session.getPeers() // Returns Page<Peer>
|
||||||
|
|
||||||
|
// After
|
||||||
|
const peers = await session.peers() // Returns Peer[]
|
||||||
|
```
|
||||||
|
|
||||||
|
### `getContext()` Renamed to `context()`
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const ctx = await session.getContext({
|
||||||
|
summary: true,
|
||||||
|
peerTarget: user,
|
||||||
|
peerPerspective: assistant,
|
||||||
|
representationOptions: {
|
||||||
|
maxObservations: 50,
|
||||||
|
includeMostDerived: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// After
|
||||||
|
const ctx = await session.context({
|
||||||
|
summary: true,
|
||||||
|
peerTarget: user,
|
||||||
|
peerPerspective: assistant,
|
||||||
|
representationOptions: {
|
||||||
|
maxConclusions: 50,
|
||||||
|
includeMostFrequent: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### `SessionPeerConfig` Uses camelCase and Methods Renamed
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
await session.setPeerConfig(peer, {
|
||||||
|
observe_me: true,
|
||||||
|
observe_others: false
|
||||||
|
})
|
||||||
|
const config = await session.peerConfig(peer)
|
||||||
|
|
||||||
|
// After
|
||||||
|
await session.setPeerConfiguration(peer, {
|
||||||
|
observeMe: true,
|
||||||
|
observeOthers: false
|
||||||
|
})
|
||||||
|
const config = await session.getPeerConfiguration(peer)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Message Changes
|
||||||
|
|
||||||
|
### Message Properties Use camelCase
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before (from @honcho-ai/core)
|
||||||
|
message.peer_id
|
||||||
|
message.session_id
|
||||||
|
message.workspace_id
|
||||||
|
message.created_at
|
||||||
|
message.token_count
|
||||||
|
|
||||||
|
// After
|
||||||
|
message.peerId
|
||||||
|
message.sessionId
|
||||||
|
message.workspaceId
|
||||||
|
message.createdAt
|
||||||
|
message.tokenCount
|
||||||
|
```
|
||||||
|
|
||||||
|
### MessageInput Type
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
interface ValidatedMessageCreate {
|
||||||
|
peer_id: string
|
||||||
|
content: string
|
||||||
|
metadata?: Record<string, unknown>
|
||||||
|
configuration?: Record<string, unknown>
|
||||||
|
created_at?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// After
|
||||||
|
interface MessageInput {
|
||||||
|
peerId: string
|
||||||
|
content: string
|
||||||
|
metadata?: Record<string, unknown>
|
||||||
|
configuration?: MessageConfiguration
|
||||||
|
createdAt?: string
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Streaming Changes
|
||||||
|
|
||||||
|
### `DialecticStreamDelta` Removed
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
import { DialecticStreamDelta, DialecticStreamChunk } from '@honcho-ai/sdk'
|
||||||
|
|
||||||
|
// After
|
||||||
|
import { DialecticStreamChunk, DialecticStreamResponse } from '@honcho-ai/sdk'
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration Changes
|
||||||
|
|
||||||
|
### Workspace Configuration
|
||||||
|
|
||||||
|
Configurations are now strongly typed objects instead of `Record<string, unknown>`.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
await honcho.setConfig({
|
||||||
|
deriver: { enabled: true },
|
||||||
|
some_custom_key: 'value'
|
||||||
|
})
|
||||||
|
|
||||||
|
// After
|
||||||
|
await honcho.setConfiguration({
|
||||||
|
reasoning: {
|
||||||
|
enabled: true,
|
||||||
|
customInstructions: 'Be concise'
|
||||||
|
},
|
||||||
|
peerCard: {
|
||||||
|
use: true,
|
||||||
|
create: true
|
||||||
|
},
|
||||||
|
summary: {
|
||||||
|
enabled: true,
|
||||||
|
messagesPerShortSummary: 20,
|
||||||
|
messagesPerLongSummary: 60
|
||||||
|
},
|
||||||
|
dream: {
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### Peer Configuration
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
await peer.setConfig({ observe_me: false })
|
||||||
|
|
||||||
|
// After
|
||||||
|
await peer.setConfiguration({ observeMe: false })
|
||||||
|
```
|
||||||
|
|
||||||
|
### Message Configuration
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
peer.message('Hello', {
|
||||||
|
configuration: {
|
||||||
|
deriver: { enabled: true }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// After
|
||||||
|
peer.message('Hello', {
|
||||||
|
configuration: {
|
||||||
|
reasoning: {
|
||||||
|
enabled: true,
|
||||||
|
customInstructions: 'Focus on emotions'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Type Changes
|
||||||
|
|
||||||
|
### Removed Exports
|
||||||
|
|
||||||
|
- `Observation` (use `Conclusion`)
|
||||||
|
- `ObservationScope` (use `ConclusionScope`)
|
||||||
|
- `ObservationData`, `ObservationCreateParam`, `ObservationQueryParams`
|
||||||
|
- `Representation`, `RepresentationData`, `RepresentationOptions` (class removed)
|
||||||
|
- `ExplicitObservation`, `DeductiveObservation`
|
||||||
|
- `DialecticStreamDelta`
|
||||||
|
- `DeriverStatusOptions` (use `QueueStatusOptions`)
|
||||||
|
- `MessageCreate` (use `MessageInput`)
|
||||||
|
- `WorkingRepParams`
|
||||||
|
|
||||||
|
### New Exports
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import {
|
||||||
|
// Domain classes
|
||||||
|
Conclusion,
|
||||||
|
ConclusionScope,
|
||||||
|
ConclusionCreateParams,
|
||||||
|
|
||||||
|
// Error types
|
||||||
|
HonchoError,
|
||||||
|
AuthenticationError,
|
||||||
|
BadRequestError,
|
||||||
|
NotFoundError,
|
||||||
|
PermissionDeniedError,
|
||||||
|
RateLimitError,
|
||||||
|
ConflictError,
|
||||||
|
UnprocessableEntityError,
|
||||||
|
ServerError,
|
||||||
|
ConnectionError,
|
||||||
|
TimeoutError,
|
||||||
|
|
||||||
|
// Message types
|
||||||
|
Message,
|
||||||
|
MessageInput,
|
||||||
|
|
||||||
|
// Configuration types
|
||||||
|
WorkspaceConfig,
|
||||||
|
SessionConfig,
|
||||||
|
PeerConfig,
|
||||||
|
SessionPeerConfig,
|
||||||
|
MessageConfiguration,
|
||||||
|
ReasoningConfig,
|
||||||
|
PeerCardConfig,
|
||||||
|
SummaryConfig,
|
||||||
|
DreamConfig,
|
||||||
|
|
||||||
|
// API response types
|
||||||
|
QueueStatus,
|
||||||
|
QueueStatusOptions,
|
||||||
|
RepresentationOptions,
|
||||||
|
ConclusionQueryParams,
|
||||||
|
ConclusionResponse,
|
||||||
|
} from '@honcho-ai/sdk'
|
||||||
|
```
|
||||||
|
|
||||||
|
### SummaryData Type Changed
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
interface SummaryData {
|
||||||
|
content: string
|
||||||
|
message_id: string
|
||||||
|
summary_type: string
|
||||||
|
created_at: string
|
||||||
|
token_count: number
|
||||||
|
}
|
||||||
|
|
||||||
|
// After
|
||||||
|
interface SummaryData {
|
||||||
|
content: string
|
||||||
|
messageId: string
|
||||||
|
summaryType: string
|
||||||
|
createdAt: string
|
||||||
|
tokenCount: number
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,108 @@
|
||||||
|
# Migration Checklist
|
||||||
|
|
||||||
|
Use this checklist to track migration progress. Copy into your working notes and check off items as completed.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
- [ ] Remove `@honcho-ai/core` from dependencies
|
||||||
|
- [ ] Update `@honcho-ai/sdk` to v2.0.0
|
||||||
|
|
||||||
|
## Client-Level Changes
|
||||||
|
|
||||||
|
- [ ] Replace all `.core` usages with `.http` or remove
|
||||||
|
- [ ] Rename `getConfig()` → `getConfiguration()`
|
||||||
|
- [ ] Rename `setConfig()` → `setConfiguration()`
|
||||||
|
- [ ] Rename `getPeers()` → `peers()`
|
||||||
|
- [ ] Rename `getSessions()` → `sessions()`
|
||||||
|
- [ ] Rename `getWorkspaces()` → `workspaces()` (returns `Page<string>` now)
|
||||||
|
- [ ] Rename `getDeriverStatus()` → `queueStatus()`
|
||||||
|
- [ ] Remove `pollDeriverStatus()` calls entirely (no replacement—do not rely on queue being empty)
|
||||||
|
- [ ] Move `updateMessage()` calls from client to session
|
||||||
|
|
||||||
|
## Peer-Level Changes
|
||||||
|
|
||||||
|
- [ ] Replace `peer.chat(q, { stream: true })` with `peer.chatStream(q)`
|
||||||
|
- [ ] Rename `getSessions()` → `sessions()`
|
||||||
|
- [ ] Rename `getConfig()` → `getConfiguration()`
|
||||||
|
- [ ] Rename `setConfig()` → `setConfiguration()`
|
||||||
|
- [ ] Rename `peerConfig()` → `getPeerConfiguration()`
|
||||||
|
- [ ] Rename `setPeerConfig()` → `setPeerConfiguration()`
|
||||||
|
- [ ] Rename `workingRep()` → `representation()` (returns string now)
|
||||||
|
- [ ] Rename `getContext()` → `context()`
|
||||||
|
- [ ] Replace `observations` → `conclusions`
|
||||||
|
- [ ] Replace `observationsOf()` → `conclusionsOf()`
|
||||||
|
- [ ] Handle `card()` returning `string[] | null` instead of `string`
|
||||||
|
|
||||||
|
## Session-Level Changes
|
||||||
|
|
||||||
|
- [ ] Rename `getPeers()` → `peers()` (returns `Peer[]` now, not `Page<Peer>`)
|
||||||
|
- [ ] Rename `getMessages()` → `messages()`
|
||||||
|
- [ ] Rename `getConfig()` → `getConfiguration()`
|
||||||
|
- [ ] Rename `setConfig()` → `setConfiguration()`
|
||||||
|
- [ ] Rename `getContext()` → `context()`
|
||||||
|
- [ ] Rename `getSummaries()` → `summaries()`
|
||||||
|
- [ ] Rename `getDeriverStatus()` → `queueStatus()`
|
||||||
|
- [ ] Remove `pollDeriverStatus()` calls entirely (no replacement—do not rely on queue being empty)
|
||||||
|
- [ ] Rename `workingRep()` → `representation()` (returns string now)
|
||||||
|
|
||||||
|
## Terminology Changes
|
||||||
|
|
||||||
|
- [ ] Rename `maxObservations` → `maxConclusions`
|
||||||
|
- [ ] Rename `includeMostDerived` → `includeMostFrequent`
|
||||||
|
- [ ] Rename `Observation` type → `Conclusion`
|
||||||
|
- [ ] Rename `ObservationScope` type → `ConclusionScope`
|
||||||
|
|
||||||
|
## snake_case → camelCase
|
||||||
|
|
||||||
|
- [ ] Update all `{ config: ... }` to `{ configuration: ... }`
|
||||||
|
- [ ] Update `observe_me` → `observeMe`
|
||||||
|
- [ ] Update `observe_others` → `observeOthers`
|
||||||
|
- [ ] Update `created_at` → `createdAt`
|
||||||
|
- [ ] Update message property access:
|
||||||
|
- [ ] `peer_id` → `peerId`
|
||||||
|
- [ ] `session_id` → `sessionId`
|
||||||
|
- [ ] `workspace_id` → `workspaceId`
|
||||||
|
- [ ] `created_at` → `createdAt`
|
||||||
|
- [ ] `token_count` → `tokenCount`
|
||||||
|
- [ ] Update summary property access:
|
||||||
|
- [ ] `message_id` → `messageId`
|
||||||
|
- [ ] `summary_type` → `summaryType`
|
||||||
|
|
||||||
|
## Configuration Objects
|
||||||
|
|
||||||
|
- [ ] Update workspace configuration to typed structure
|
||||||
|
- [ ] Update session configuration to typed structure
|
||||||
|
- [ ] Update peer configuration to typed structure
|
||||||
|
- [ ] Replace `deriver` config with `reasoning` config
|
||||||
|
|
||||||
|
## Error Handling
|
||||||
|
|
||||||
|
- [ ] Update error handling to use new error types if needed
|
||||||
|
|
||||||
|
## Type Imports
|
||||||
|
|
||||||
|
- [ ] Remove imports of deleted types:
|
||||||
|
- `Observation`, `ObservationScope`, `ObservationData`
|
||||||
|
- `Representation`, `RepresentationData`
|
||||||
|
- `ExplicitObservation`, `DeductiveObservation`
|
||||||
|
- `DialecticStreamDelta`
|
||||||
|
- `DeriverStatusOptions`
|
||||||
|
- `MessageCreate`, `ValidatedMessageCreate`
|
||||||
|
- `WorkingRepParams`
|
||||||
|
- [ ] Add imports of new types as needed:
|
||||||
|
- `Conclusion`, `ConclusionScope`
|
||||||
|
- `MessageInput`
|
||||||
|
- `QueueStatusOptions`
|
||||||
|
- Error types
|
||||||
|
|
||||||
|
## Representation Handling
|
||||||
|
|
||||||
|
- [ ] Remove usage of `Representation` class methods (`.explicit`, `.deductive`, `.isEmpty()`, `.diff()`)
|
||||||
|
- [ ] Handle representation as plain string
|
||||||
|
|
||||||
|
## Final Verification
|
||||||
|
|
||||||
|
- [ ] Run TypeScript compiler with no errors
|
||||||
|
- [ ] Run tests
|
||||||
|
- [ ] Verify streaming functionality works
|
||||||
|
- [ ] Verify configuration changes take effect
|
||||||
|
|
@ -0,0 +1,227 @@
|
||||||
|
---
|
||||||
|
name: migrate-honcho-ts
|
||||||
|
description: Migrates Honcho TypeScript SDK code from v1.6.0 to v2.0.0. Use when upgrading @honcho-ai/sdk, fixing breaking changes after upgrade, or when errors mention removed APIs like .core, getConfig, observations, or snake_case properties.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Honcho TypeScript SDK Migration (v1.6.0 → v2.0.0)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This skill migrates code from `@honcho-ai/sdk` v1.6.0 to v2.0.0 (required for Honcho 3.0.0).
|
||||||
|
|
||||||
|
**Key breaking changes:**
|
||||||
|
|
||||||
|
- `@honcho-ai/core` dependency removed
|
||||||
|
- "Observation" → "Conclusion" terminology
|
||||||
|
- "Deriver" → "Queue" terminology
|
||||||
|
- `getConfig`/`setConfig` → `getConfiguration`/`setConfiguration`
|
||||||
|
- `snake_case` → `camelCase` throughout
|
||||||
|
- Streaming via `chatStream()` instead of `chat({ stream: true })`
|
||||||
|
- `Representation` class removed (returns string now)
|
||||||
|
|
||||||
|
## Quick Migration
|
||||||
|
|
||||||
|
### 1. Update dependencies
|
||||||
|
|
||||||
|
Remove `@honcho-ai/core` from package.json. The SDK now has its own HTTP client.
|
||||||
|
|
||||||
|
### 2. Replace `.core` with `.http`
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const workspace = await client.core.workspaces.getOrCreate({ id: 'my-workspace' })
|
||||||
|
|
||||||
|
// After
|
||||||
|
const response = await client.http.post('/v3/workspaces', { body: { id: 'my-workspace' } })
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Rename configuration methods
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
await honcho.getConfig()
|
||||||
|
await honcho.setConfig({ key: 'value' })
|
||||||
|
await peer.getConfig()
|
||||||
|
await session.getConfig()
|
||||||
|
|
||||||
|
// After
|
||||||
|
await honcho.getConfiguration()
|
||||||
|
await honcho.setConfiguration({ reasoning: { enabled: true } })
|
||||||
|
await peer.getConfiguration()
|
||||||
|
await session.getConfiguration()
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Rename listing methods
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const peers = await honcho.getPeers()
|
||||||
|
const sessions = await honcho.getSessions()
|
||||||
|
const workspaces = await honcho.getWorkspaces() // string[]
|
||||||
|
|
||||||
|
// After
|
||||||
|
const peers = await honcho.peers()
|
||||||
|
const sessions = await honcho.sessions()
|
||||||
|
const workspaces = await honcho.workspaces() // Page<string>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Update streaming
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const stream = await peer.chat('Hello', { stream: true })
|
||||||
|
|
||||||
|
// After
|
||||||
|
const stream = await peer.chatStream('Hello')
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Update observations → conclusions
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
peer.observations
|
||||||
|
peer.observationsOf('bob')
|
||||||
|
maxObservations: 50
|
||||||
|
includeMostDerived: true
|
||||||
|
|
||||||
|
// After
|
||||||
|
peer.conclusions
|
||||||
|
peer.conclusionsOf('bob')
|
||||||
|
maxConclusions: 50
|
||||||
|
includeMostFrequent: true
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Update queue status methods
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
await honcho.getDeriverStatus({ observer: peer })
|
||||||
|
await honcho.pollDeriverStatus({ timeoutMs: 60000 }) // REMOVE - see note below
|
||||||
|
|
||||||
|
// After
|
||||||
|
await honcho.queueStatus({ observer: peer })
|
||||||
|
// pollDeriverStatus() has no replacement - see note below
|
||||||
|
```
|
||||||
|
|
||||||
|
**Important:** `pollDeriverStatus()` and its polling pattern have been removed entirely. Do not rely on the queue ever being empty. The queue is a continuous processing system—new messages may arrive at any time, and waiting for "completion" is not a valid pattern. If your code previously polled for queue completion, redesign it to work without that assumption.
|
||||||
|
|
||||||
|
### 8. Convert snake_case to camelCase
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
message.peer_id
|
||||||
|
message.session_id
|
||||||
|
message.created_at
|
||||||
|
message.token_count
|
||||||
|
{ observe_me: true, observe_others: false }
|
||||||
|
{ created_at: '2024-01-01' }
|
||||||
|
|
||||||
|
// After
|
||||||
|
message.peerId
|
||||||
|
message.sessionId
|
||||||
|
message.createdAt
|
||||||
|
message.tokenCount
|
||||||
|
{ observeMe: true, observeOthers: false }
|
||||||
|
{ createdAt: '2024-01-01' }
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9. Update representation calls
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const rep = await peer.workingRep(session, target, options)
|
||||||
|
console.log(rep.explicit) // ExplicitObservation[]
|
||||||
|
console.log(rep.deductive) // DeductiveObservation[]
|
||||||
|
|
||||||
|
// After
|
||||||
|
const rep = await peer.representation({ session, target, ...options })
|
||||||
|
console.log(rep) // string
|
||||||
|
```
|
||||||
|
|
||||||
|
### 10. Move updateMessage to session
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
await honcho.updateMessage(message, metadata, session)
|
||||||
|
|
||||||
|
// After
|
||||||
|
await session.updateMessage(message, metadata)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Quick Reference Table
|
||||||
|
|
||||||
|
| v1.6.0 | v2.0.0 |
|
||||||
|
|--------|--------|
|
||||||
|
| `client.core` | `client.http` |
|
||||||
|
| `getConfig()` | `getConfiguration()` |
|
||||||
|
| `setConfig()` | `setConfiguration()` |
|
||||||
|
| `getPeers()` | `peers()` |
|
||||||
|
| `getSessions()` | `sessions()` |
|
||||||
|
| `getWorkspaces()` | `workspaces()` |
|
||||||
|
| `getDeriverStatus()` | `queueStatus()` |
|
||||||
|
| `pollDeriverStatus()` | *Removed - do not poll* |
|
||||||
|
| `peer.chat(q, { stream: true })` | `peer.chatStream(q)` |
|
||||||
|
| `peer.workingRep()` | `peer.representation()` |
|
||||||
|
| `peer.getContext()` | `peer.context()` |
|
||||||
|
| `peer.observations` | `peer.conclusions` |
|
||||||
|
| `peer.observationsOf()` | `peer.conclusionsOf()` |
|
||||||
|
| `session.getPeers()` | `session.peers()` |
|
||||||
|
| `session.getMessages()` | `session.messages()` |
|
||||||
|
| `session.getSummaries()` | `session.summaries()` |
|
||||||
|
| `session.getContext()` | `session.context()` |
|
||||||
|
| `session.workingRep()` | `session.representation()` |
|
||||||
|
| `session.peerConfig()` | `session.getPeerConfiguration()` |
|
||||||
|
| `session.setPeerConfig()` | `session.setPeerConfiguration()` |
|
||||||
|
| `{ timeoutMs: 60000 }` | `{ timeout: 60 }` |
|
||||||
|
| `{ maxObservations: 50 }` | `{ maxConclusions: 50 }` |
|
||||||
|
| `{ includeMostDerived }` | `{ includeMostFrequent }` |
|
||||||
|
| `{ config: ... }` | `{ configuration: ... }` |
|
||||||
|
| `message.peer_id` | `message.peerId` |
|
||||||
|
| `message.created_at` | `message.createdAt` |
|
||||||
|
| `Observation` | `Conclusion` |
|
||||||
|
| `ObservationScope` | `ConclusionScope` |
|
||||||
|
|
||||||
|
## Detailed Reference
|
||||||
|
|
||||||
|
For comprehensive details on each change, see:
|
||||||
|
|
||||||
|
- [DETAILED-CHANGES.md](DETAILED-CHANGES.md) - Full API change documentation
|
||||||
|
- [MIGRATION-CHECKLIST.md](MIGRATION-CHECKLIST.md) - Step-by-step checklist
|
||||||
|
|
||||||
|
## New Error Types
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import {
|
||||||
|
HonchoError,
|
||||||
|
AuthenticationError,
|
||||||
|
BadRequestError,
|
||||||
|
NotFoundError,
|
||||||
|
PermissionDeniedError,
|
||||||
|
RateLimitError,
|
||||||
|
ConflictError,
|
||||||
|
UnprocessableEntityError,
|
||||||
|
ServerError,
|
||||||
|
ConnectionError,
|
||||||
|
TimeoutError
|
||||||
|
} from '@honcho-ai/sdk'
|
||||||
|
```
|
||||||
|
|
||||||
|
## New Configuration Types
|
||||||
|
|
||||||
|
Configurations are now strongly typed:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
await honcho.setConfiguration({
|
||||||
|
reasoning: {
|
||||||
|
enabled: true,
|
||||||
|
customInstructions: 'Be concise'
|
||||||
|
},
|
||||||
|
peerCard: { use: true, create: true },
|
||||||
|
summary: {
|
||||||
|
enabled: true,
|
||||||
|
messagesPerShortSummary: 20,
|
||||||
|
messagesPerLongSummary: 60
|
||||||
|
},
|
||||||
|
dream: { enabled: true }
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
@ -85,7 +85,7 @@ LLM_ANTHROPIC_API_KEY=your-anthropic-api-key-here
|
||||||
# Global LLM settings
|
# Global LLM settings
|
||||||
# LLM_DEFAULT_MAX_TOKENS=2500
|
# LLM_DEFAULT_MAX_TOKENS=2500
|
||||||
# LLM_EMBEDDING_PROVIDER=openai
|
# LLM_EMBEDDING_PROVIDER=openai
|
||||||
# LLM_MAX_TOOL_OUTPUT_CHARS=30000 # Max chars for tool output (~7500 tokens)
|
# LLM_MAX_TOOL_OUTPUT_CHARS=10000 # Max chars for tool output (~2500 tokens)
|
||||||
# LLM_MAX_MESSAGE_CONTENT_CHARS=2000 # Max chars per message in tool results
|
# LLM_MAX_MESSAGE_CONTENT_CHARS=2000 # Max chars per message in tool results
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
@ -121,43 +121,47 @@ LLM_ANTHROPIC_API_KEY=your-anthropic-api-key-here
|
||||||
# DIALECTIC_MAX_OUTPUT_TOKENS=8192
|
# DIALECTIC_MAX_OUTPUT_TOKENS=8192
|
||||||
# DIALECTIC_MAX_INPUT_TOKENS=100000
|
# DIALECTIC_MAX_INPUT_TOKENS=100000
|
||||||
# DIALECTIC_HISTORY_TOKEN_LIMIT=8192
|
# DIALECTIC_HISTORY_TOKEN_LIMIT=8192
|
||||||
# DIALECTIC_SESSION_HISTORY_MAX_TOKENS=16384
|
# DIALECTIC_SESSION_HISTORY_MAX_TOKENS=4096
|
||||||
|
|
||||||
# Per-level settings (reasoning_level parameter in API)
|
# Per-level settings (reasoning_level parameter in API)
|
||||||
# Each level can have its own provider, model, thinking budget, and tool iterations
|
# Each level can have its own provider, model, thinking budget, tool iterations, and max output tokens
|
||||||
|
# MAX_OUTPUT_TOKENS is optional per level; if not set, uses global DIALECTIC_MAX_OUTPUT_TOKENS
|
||||||
|
|
||||||
# Minimal level
|
# Minimal level
|
||||||
# DIALECTIC_LEVELS__minimal__PROVIDER=google
|
# DIALECTIC_LEVELS__minimal__PROVIDER=google
|
||||||
# DIALECTIC_LEVELS__minimal__MODEL=gemini-2.5-flash-lite
|
# DIALECTIC_LEVELS__minimal__MODEL=gemini-2.5-flash-lite
|
||||||
# DIALECTIC_LEVELS__minimal__THINKING_BUDGET_TOKENS=0
|
# DIALECTIC_LEVELS__minimal__THINKING_BUDGET_TOKENS=0
|
||||||
# DIALECTIC_LEVELS__minimal__MAX_TOOL_ITERATIONS=5
|
# DIALECTIC_LEVELS__minimal__MAX_TOOL_ITERATIONS=1
|
||||||
# DIALECTIC_LEVELS__minimal__TOOL_CHOICE=any
|
# DIALECTIC_LEVELS__minimal__MAX_OUTPUT_TOKENS=250 # Reduced output for cost savings
|
||||||
|
|
||||||
# Low level
|
# Low level
|
||||||
# DIALECTIC_LEVELS__low__PROVIDER=google
|
# DIALECTIC_LEVELS__low__PROVIDER=google
|
||||||
# DIALECTIC_LEVELS__low__MODEL=gemini-3-flash-preview
|
# DIALECTIC_LEVELS__low__MODEL=gemini-2.5-flash-lite
|
||||||
# DIALECTIC_LEVELS__low__THINKING_BUDGET_TOKENS=0
|
# DIALECTIC_LEVELS__low__THINKING_BUDGET_TOKENS=0
|
||||||
# DIALECTIC_LEVELS__low__MAX_TOOL_ITERATIONS=5
|
# DIALECTIC_LEVELS__low__MAX_TOOL_ITERATIONS=5
|
||||||
# DIALECTIC_LEVELS__low__TOOL_CHOICE=any
|
# DIALECTIC_LEVELS__low__MAX_OUTPUT_TOKENS=8192 # Optional: override global default
|
||||||
|
|
||||||
# Medium level
|
# Medium level
|
||||||
# DIALECTIC_LEVELS__medium__PROVIDER=anthropic
|
# DIALECTIC_LEVELS__medium__PROVIDER=anthropic
|
||||||
# DIALECTIC_LEVELS__medium__MODEL=claude-haiku-4-5
|
# DIALECTIC_LEVELS__medium__MODEL=claude-haiku-4-5
|
||||||
# DIALECTIC_LEVELS__medium__THINKING_BUDGET_TOKENS=1024
|
# DIALECTIC_LEVELS__medium__THINKING_BUDGET_TOKENS=1024
|
||||||
# DIALECTIC_LEVELS__medium__MAX_TOOL_ITERATIONS=4
|
# DIALECTIC_LEVELS__medium__MAX_TOOL_ITERATIONS=2
|
||||||
|
# DIALECTIC_LEVELS__medium__MAX_OUTPUT_TOKENS=8192 # Optional: override global default
|
||||||
# DIALECTIC_LEVELS__medium__TOOL_CHOICE=
|
# DIALECTIC_LEVELS__medium__TOOL_CHOICE=
|
||||||
|
|
||||||
# High level
|
# High level
|
||||||
# DIALECTIC_LEVELS__high__PROVIDER=anthropic
|
# DIALECTIC_LEVELS__high__PROVIDER=anthropic
|
||||||
# DIALECTIC_LEVELS__high__MODEL=claude-opus-4-5
|
# DIALECTIC_LEVELS__high__MODEL=claude-haiku-4-5
|
||||||
# DIALECTIC_LEVELS__high__THINKING_BUDGET_TOKENS=0
|
# DIALECTIC_LEVELS__high__THINKING_BUDGET_TOKENS=1024
|
||||||
# DIALECTIC_LEVELS__high__MAX_TOOL_ITERATIONS=4
|
# DIALECTIC_LEVELS__high__MAX_TOOL_ITERATIONS=4
|
||||||
|
# DIALECTIC_LEVELS__high__MAX_OUTPUT_TOKENS=8192 # Optional: override global default
|
||||||
|
|
||||||
# Max level
|
# Max level
|
||||||
# DIALECTIC_LEVELS__max__PROVIDER=anthropic
|
# DIALECTIC_LEVELS__max__PROVIDER=anthropic
|
||||||
# DIALECTIC_LEVELS__max__MODEL=claude-opus-4-5
|
# DIALECTIC_LEVELS__max__MODEL=claude-haiku-4-5
|
||||||
# DIALECTIC_LEVELS__max__THINKING_BUDGET_TOKENS=2048
|
# DIALECTIC_LEVELS__max__THINKING_BUDGET_TOKENS=2048
|
||||||
# DIALECTIC_LEVELS__max__MAX_TOOL_ITERATIONS=10
|
# DIALECTIC_LEVELS__max__MAX_TOOL_ITERATIONS=10
|
||||||
|
# DIALECTIC_LEVELS__max__MAX_OUTPUT_TOKENS=8192 # Optional: override global default
|
||||||
# Optional backup per level (must set both or neither):
|
# Optional backup per level (must set both or neither):
|
||||||
# DIALECTIC_LEVELS__max__BACKUP_PROVIDER=google
|
# DIALECTIC_LEVELS__max__BACKUP_PROVIDER=google
|
||||||
# DIALECTIC_LEVELS__max__BACKUP_MODEL=gemini-2.5-pro
|
# DIALECTIC_LEVELS__max__BACKUP_MODEL=gemini-2.5-pro
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,6 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
python: ${{ steps.filter.outputs.python }}
|
python: ${{ steps.filter.outputs.python }}
|
||||||
typescript: ${{ steps.filter.outputs.typescript }}
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: dorny/paths-filter@v3
|
- uses: dorny/paths-filter@v3
|
||||||
|
|
@ -50,8 +49,6 @@ jobs:
|
||||||
- 'pyproject.toml'
|
- 'pyproject.toml'
|
||||||
- 'uv.lock'
|
- 'uv.lock'
|
||||||
- 'migrations/**'
|
- 'migrations/**'
|
||||||
- '.github/workflows/unittest.yml'
|
|
||||||
typescript:
|
|
||||||
- 'sdks/typescript/**'
|
- 'sdks/typescript/**'
|
||||||
- '.github/workflows/unittest.yml'
|
- '.github/workflows/unittest.yml'
|
||||||
|
|
||||||
|
|
@ -90,6 +87,13 @@ jobs:
|
||||||
with:
|
with:
|
||||||
python-version-file: "pyproject.toml"
|
python-version-file: "pyproject.toml"
|
||||||
|
|
||||||
|
- name: Install bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
|
||||||
|
- name: Install TypeScript SDK dependencies
|
||||||
|
run: bun install
|
||||||
|
working-directory: sdks/typescript
|
||||||
|
|
||||||
- name: Install the project
|
- name: Install the project
|
||||||
run: uv sync --all-extras --dev
|
run: uv sync --all-extras --dev
|
||||||
|
|
||||||
|
|
@ -130,37 +134,11 @@ jobs:
|
||||||
SUMMARY_PROVIDER: openai
|
SUMMARY_PROVIDER: openai
|
||||||
SUMMARY_MODEL: test
|
SUMMARY_MODEL: test
|
||||||
|
|
||||||
test-typescript:
|
|
||||||
needs: changes
|
|
||||||
if: ${{ needs.changes.outputs.typescript == 'true' }}
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup bun
|
|
||||||
uses: oven-sh/setup-bun@v1
|
|
||||||
with:
|
|
||||||
bun-version: latest
|
|
||||||
|
|
||||||
- name: Install TypeScript SDK dependencies
|
|
||||||
run: |
|
|
||||||
cd sdks/typescript
|
|
||||||
bun install
|
|
||||||
|
|
||||||
- name: Run TypeScript SDK tests
|
|
||||||
run: |
|
|
||||||
cd sdks/typescript
|
|
||||||
bun run test
|
|
||||||
env:
|
|
||||||
HONCHO_API_KEY: test-key
|
|
||||||
HONCHO_BASE_URL: http://localhost:8000
|
|
||||||
|
|
||||||
# Status check for branch protection rules
|
# Status check for branch protection rules
|
||||||
# This job always runs and reports success only if all required jobs pass
|
# This job always runs and reports success only if all required jobs pass
|
||||||
test-status:
|
test-status:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [changes, test-python, test-typescript]
|
needs: [changes, test-python]
|
||||||
if: always()
|
if: always()
|
||||||
steps:
|
steps:
|
||||||
- name: Check test results
|
- name: Check test results
|
||||||
|
|
@ -169,8 +147,4 @@ jobs:
|
||||||
echo "Python tests failed or were cancelled"
|
echo "Python tests failed or were cancelled"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [[ "${{ needs.changes.outputs.typescript }}" == "true" && "${{ needs.test-typescript.result }}" != "success" && "${{ needs.test-typescript.result }}" != "skipped" ]]; then
|
|
||||||
echo "TypeScript tests failed or were cancelled"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "All required tests passed!"
|
echo "All required tests passed!"
|
||||||
|
|
|
||||||
|
|
@ -99,10 +99,10 @@ repos:
|
||||||
stages: [pre-push]
|
stages: [pre-push]
|
||||||
pass_filenames: false
|
pass_filenames: false
|
||||||
|
|
||||||
# # TypeScript build/test with bun
|
# TypeScript build with bun (tests run via pytest)
|
||||||
- id: typescript-check
|
- id: typescript-check
|
||||||
name: TypeScript build and test
|
name: TypeScript build
|
||||||
entry: bash -c 'if [ -f "sdks/typescript/package.json" ]; then cd sdks/typescript && bun run build && bun run test; fi'
|
entry: bash -c 'if [ -f "sdks/typescript/package.json" ]; then cd sdks/typescript && bun run build; fi'
|
||||||
language: system
|
language: system
|
||||||
files: ^sdks/typescript/.*\.(js|ts|jsx|tsx|json)$
|
files: ^sdks/typescript/.*\.(js|ts|jsx|tsx|json)$
|
||||||
stages: [pre-push]
|
stages: [pre-push]
|
||||||
|
|
|
||||||
26
CHANGELOG.md
26
CHANGELOG.md
|
|
@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
|
||||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
## [3.0.0] - 2026-01-19
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Agentic Dreamer for intelligent memory consolidation using LLM agents
|
||||||
|
- Agentic Dialectic for query answering using LLM agents with tool use
|
||||||
|
- Reasoning levels configuration for dialectic (`minimal`, `low`, `medium`, `high`, `max`)
|
||||||
|
- Prometheus token tracking for deriver and dialectic operations
|
||||||
|
- n8n integration
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- API route renaming for consistency
|
||||||
|
- Dreamer and dialectic now respect peer card configuration settings
|
||||||
|
- Observations renamed to Conclusions across API and SDKs
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Dream scheduling bugs
|
||||||
|
- Summary creation when start_message_id > end_message_id
|
||||||
|
- Cashews upgrade to prevent NoScriptError
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Peer card configuration from message configuration; peer cards no longer created/updated in deriver process
|
||||||
|
|
||||||
## [2.5.1] - 2025-12-15
|
## [2.5.1] - 2025-12-15
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
||||||
21
CLAUDE.md
21
CLAUDE.md
|
|
@ -84,6 +84,27 @@ All API routes follow the pattern: `/v1/{resource}/{id}/{action}`
|
||||||
- Typechecking: `uv run basedpyright`
|
- Typechecking: `uv run basedpyright`
|
||||||
- Format code: `uv run ruff format src/`
|
- Format code: `uv run ruff format src/`
|
||||||
|
|
||||||
|
### SDK Testing
|
||||||
|
|
||||||
|
#### TypeScript SDK
|
||||||
|
|
||||||
|
**🚨 DO NOT RUN `bun test` DIRECTLY. IT WILL NOT WORK. 🚨**
|
||||||
|
|
||||||
|
The TypeScript SDK tests require a running Honcho server with database and Redis. Running `bun test` alone will fail immediately because there's no server. The tests are orchestrated via pytest which handles all the infrastructure setup.
|
||||||
|
|
||||||
|
**The ONLY way to run TypeScript SDK tests:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# From the monorepo root (not from sdks/typescript/)
|
||||||
|
uv run pytest tests/ -k typescript
|
||||||
|
```
|
||||||
|
|
||||||
|
**To type-check the TypeScript SDK (this is fine to run directly):**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd sdks/typescript && bun run tsc --noEmit
|
||||||
|
```
|
||||||
|
|
||||||
### Code Style
|
### Code Style
|
||||||
|
|
||||||
- Follow isort conventions with absolute imports preferred
|
- Follow isort conventions with absolute imports preferred
|
||||||
|
|
|
||||||
16
README.md
16
README.md
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||

|

|
||||||
[](https://pypi.org/project/honcho-ai/)
|
[](https://pypi.org/project/honcho-ai/)
|
||||||
[](https://npmjs.org/package/@honcho-ai/sdk)
|
[](https://npmjs.org/package/@honcho-ai/sdk)
|
||||||
[](https://discord.gg/plasticlabs)
|
[](https://discord.gg/plasticlabs)
|
||||||
|
|
@ -127,22 +127,14 @@ The Honcho project is split between several repositories with this one hosting
|
||||||
the core service logic. This is implemented as a FastAPI server/API to store
|
the core service logic. This is implemented as a FastAPI server/API to store
|
||||||
data about an application's state.
|
data about an application's state.
|
||||||
|
|
||||||
There are also client sdks in implemented in the `sdks/` directory with support
|
There are also client SDKs implemented in the `sdks/` directory with support
|
||||||
for Python and TypeScript. These SDKs wrap core SDKs that are generated using
|
for Python and TypeScript.
|
||||||
[Stainless](https://www.stainlessapi.com/).
|
|
||||||
|
|
||||||
- [Python](https://pypi.org/project/honcho-ai/)
|
- [Python](https://pypi.org/project/honcho-ai/)
|
||||||
- [TypeScript](https://www.npmjs.com/package/@honcho-ai/sdk)
|
- [TypeScript](https://www.npmjs.com/package/@honcho-ai/sdk)
|
||||||
|
|
||||||
We recommend using the official client SDKs instead of the core ones for better
|
|
||||||
developer experience, however for any custom use cases you can still access the
|
|
||||||
core SDKs in their own repos:
|
|
||||||
|
|
||||||
- [Honcho Core Python](https://github.com/plastic-labs/honcho-python-core)
|
|
||||||
- [Honcho Core TypeScript](https://github.com/plastic-labs/honcho-node-core)
|
|
||||||
|
|
||||||
Examples on how to use the SDK are located within each SDK folder and in the
|
Examples on how to use the SDK are located within each SDK folder and in the
|
||||||
[SDK Reference](https://docs.honcho.dev/v2/documentation/tutorial/SDK)
|
[SDK Reference](https://docs.honcho.dev/v3/documentation/tutorial/SDK)
|
||||||
|
|
||||||
There are also documented examples of how to use the core SDKs in the
|
There are also documented examples of how to use the core SDKs in the
|
||||||
[API Reference](https://docs.honcho.dev/api-reference/introduction) section of
|
[API Reference](https://docs.honcho.dev/api-reference/introduction) section of
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ PROFILES_SAMPLE_RATE = 0.1
|
||||||
[llm]
|
[llm]
|
||||||
DEFAULT_MAX_TOKENS = 2500
|
DEFAULT_MAX_TOKENS = 2500
|
||||||
EMBEDDING_PROVIDER = "openai"
|
EMBEDDING_PROVIDER = "openai"
|
||||||
MAX_TOOL_OUTPUT_CHARS = 30000 # Max chars for tool output (~7500 tokens)
|
MAX_TOOL_OUTPUT_CHARS = 10000 # Max chars for tool output (~2500 tokens)
|
||||||
MAX_MESSAGE_CONTENT_CHARS = 2000 # Max chars per message in tool results
|
MAX_MESSAGE_CONTENT_CHARS = 2000 # Max chars per message in tool results
|
||||||
|
|
||||||
# API Keys for LLM providers
|
# API Keys for LLM providers
|
||||||
|
|
@ -96,41 +96,44 @@ ENABLED = true
|
||||||
MAX_OUTPUT_TOKENS = 8192
|
MAX_OUTPUT_TOKENS = 8192
|
||||||
MAX_INPUT_TOKENS = 100000
|
MAX_INPUT_TOKENS = 100000
|
||||||
HISTORY_TOKEN_LIMIT = 8192
|
HISTORY_TOKEN_LIMIT = 8192
|
||||||
SESSION_HISTORY_MAX_TOKENS = 16384
|
SESSION_HISTORY_MAX_TOKENS = 4096
|
||||||
|
|
||||||
# Per-level settings for reasoning levels
|
# Per-level settings for reasoning levels
|
||||||
|
# MAX_OUTPUT_TOKENS is optional per level; if not set, uses global MAX_OUTPUT_TOKENS
|
||||||
[dialectic.levels.minimal]
|
[dialectic.levels.minimal]
|
||||||
PROVIDER = "google"
|
PROVIDER = "google"
|
||||||
MODEL = "gemini-2.5-flash-lite"
|
MODEL = "gemini-2.5-flash-lite"
|
||||||
THINKING_BUDGET_TOKENS = 0
|
THINKING_BUDGET_TOKENS = 0
|
||||||
MAX_TOOL_ITERATIONS = 5
|
MAX_TOOL_ITERATIONS = 1
|
||||||
TOOL_CHOICE = "any"
|
MAX_OUTPUT_TOKENS = 250
|
||||||
|
|
||||||
[dialectic.levels.low]
|
[dialectic.levels.low]
|
||||||
PROVIDER = "google"
|
PROVIDER = "google"
|
||||||
MODEL = "gemini-3-flash-preview"
|
MODEL = "gemini-2.5-flash-lite"
|
||||||
THINKING_BUDGET_TOKENS = 0
|
THINKING_BUDGET_TOKENS = 0
|
||||||
MAX_TOOL_ITERATIONS = 5
|
MAX_TOOL_ITERATIONS = 5
|
||||||
TOOL_CHOICE = "any"
|
# MAX_OUTPUT_TOKENS = 8192 # Optional: override global default
|
||||||
|
|
||||||
[dialectic.levels.medium]
|
[dialectic.levels.medium]
|
||||||
PROVIDER = "anthropic"
|
PROVIDER = "anthropic"
|
||||||
MODEL = "claude-haiku-4-5"
|
MODEL = "claude-haiku-4-5"
|
||||||
THINKING_BUDGET_TOKENS = 1024
|
THINKING_BUDGET_TOKENS = 1024
|
||||||
MAX_TOOL_ITERATIONS = 4
|
MAX_TOOL_ITERATIONS = 2
|
||||||
# TOOL_CHOICE = "any" # Optional: None/auto lets model decide
|
# MAX_OUTPUT_TOKENS = 8192 # Optional: override global default
|
||||||
|
|
||||||
[dialectic.levels.high]
|
[dialectic.levels.high]
|
||||||
PROVIDER = "anthropic"
|
PROVIDER = "anthropic"
|
||||||
MODEL = "claude-opus-4-5"
|
MODEL = "claude-haiku-4-5"
|
||||||
THINKING_BUDGET_TOKENS = 0
|
THINKING_BUDGET_TOKENS = 1024
|
||||||
MAX_TOOL_ITERATIONS = 4
|
MAX_TOOL_ITERATIONS = 4
|
||||||
|
# MAX_OUTPUT_TOKENS = 8192 # Optional: override global default
|
||||||
|
|
||||||
[dialectic.levels.max]
|
[dialectic.levels.max]
|
||||||
PROVIDER = "anthropic"
|
PROVIDER = "anthropic"
|
||||||
MODEL = "claude-opus-4-5"
|
MODEL = "claude-haiku-4-5"
|
||||||
THINKING_BUDGET_TOKENS = 2048
|
THINKING_BUDGET_TOKENS = 2048
|
||||||
MAX_TOOL_ITERATIONS = 10
|
MAX_TOOL_ITERATIONS = 10
|
||||||
|
# MAX_OUTPUT_TOKENS = 8192 # Optional: override global default
|
||||||
# Backup provider example (optional, must set both or neither):
|
# Backup provider example (optional, must set both or neither):
|
||||||
# BACKUP_PROVIDER = "google"
|
# BACKUP_PROVIDER = "google"
|
||||||
# BACKUP_MODEL = "gemini-2.5-pro"
|
# BACKUP_MODEL = "gemini-2.5-pro"
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ Use Glob and Grep to find:
|
||||||
|
|
||||||
After exploring the codebase, use the **AskUserQuestion** tool to clarify integration requirements. Ask these questions (adapt based on what you learned in Phase 1):
|
After exploring the codebase, use the **AskUserQuestion** tool to clarify integration requirements. Ask these questions (adapt based on what you learned in Phase 1):
|
||||||
|
|
||||||
**Question Set 1 - Entities & Peers**
|
#### Question Set 1 - Entities & Peers
|
||||||
|
|
||||||
Ask about which entities should be Honcho peers:
|
Ask about which entities should be Honcho peers:
|
||||||
|
|
||||||
|
|
@ -41,7 +41,7 @@ Ask about which entities should be Honcho peers:
|
||||||
- options based on what you found (e.g., "End users only", "Users + AI assistant", "Users + multiple AI agents", "All participants including third-party services")
|
- options based on what you found (e.g., "End users only", "Users + AI assistant", "Users + multiple AI agents", "All participants including third-party services")
|
||||||
- Include a follow-up if they have multiple AI agents: should any AI peers be observed?
|
- Include a follow-up if they have multiple AI agents: should any AI peers be observed?
|
||||||
|
|
||||||
**Question Set 2 - Integration Pattern**
|
#### Question Set 2 - Integration Pattern
|
||||||
|
|
||||||
Ask how they want to use Honcho context:
|
Ask how they want to use Honcho context:
|
||||||
|
|
||||||
|
|
@ -53,7 +53,7 @@ Ask how they want to use Honcho context:
|
||||||
- "get_context()" - "Include conversation history and representations in prompt"
|
- "get_context()" - "Include conversation history and representations in prompt"
|
||||||
- "Multiple patterns" - "Combine approaches for different use cases"
|
- "Multiple patterns" - "Combine approaches for different use cases"
|
||||||
|
|
||||||
**Question Set 3 - Session Structure**
|
#### Question Set 3 - Session Structure
|
||||||
|
|
||||||
Ask about conversation structure:
|
Ask about conversation structure:
|
||||||
|
|
||||||
|
|
@ -61,7 +61,7 @@ Ask about conversation structure:
|
||||||
- question: "How should conversations map to Honcho sessions?"
|
- question: "How should conversations map to Honcho sessions?"
|
||||||
- options based on their app (e.g., "One session per chat thread", "One session per user", "Multiple users per session (group chat)", "Custom session logic")
|
- options based on their app (e.g., "One session per chat thread", "One session per user", "Multiple users per session (group chat)", "Custom session logic")
|
||||||
|
|
||||||
**Question Set 4 - Specific Queries (if using pre-fetch pattern)**
|
#### Question Set 4 - Specific Queries (if using pre-fetch pattern)
|
||||||
|
|
||||||
If they chose pre-fetch, ask what context matters:
|
If they chose pre-fetch, ask what context matters:
|
||||||
|
|
||||||
|
|
@ -449,4 +449,4 @@ When integrating Honcho into an existing codebase:
|
||||||
|
|
||||||
- Documentation: <https://docs.honcho.dev>
|
- Documentation: <https://docs.honcho.dev>
|
||||||
- Latest SDK versions: <https://docs.honcho.dev/changelog/introduction>
|
- Latest SDK versions: <https://docs.honcho.dev/changelog/introduction>
|
||||||
- API Reference: <https://docs.honcho.dev/v2/api-reference/introduction>
|
- API Reference: <https://docs.honcho.dev/v3/api-reference/introduction>
|
||||||
|
|
|
||||||
|
|
@ -8,23 +8,23 @@ This guide helps you understand which versions of Honcho's API are compatible wi
|
||||||
|
|
||||||
## Version Compatibility
|
## Version Compatibility
|
||||||
|
|
||||||
### Honcho API v2.5.1 (Current)
|
### Honcho API v3.0.0 (Current)
|
||||||
|
|
||||||
<CardGroup cols={2}>
|
<CardGroup cols={2}>
|
||||||
<Card title="TypeScript SDK" icon="js">
|
<Card title="TypeScript SDK" icon="js">
|
||||||
**Compatible Version:** v1.6.0
|
**Compatible Version:** v2.0.0
|
||||||
|
|
||||||
Install with:
|
Install with:
|
||||||
```bash
|
```bash
|
||||||
npm install @honcho-ai/sdk@1.6.0
|
npm install @honcho-ai/sdk@2.0.0
|
||||||
```
|
```
|
||||||
</Card>
|
</Card>
|
||||||
<Card title="Python SDK" icon="python">
|
<Card title="Python SDK" icon="python">
|
||||||
**Compatible Version:** v1.6.0
|
**Compatible Version:** v2.0.0
|
||||||
|
|
||||||
Install with:
|
Install with:
|
||||||
```bash
|
```bash
|
||||||
pip install honcho-ai==1.6.0
|
pip install honcho-ai==2.0.0
|
||||||
```
|
```
|
||||||
</Card>
|
</Card>
|
||||||
</CardGroup>
|
</CardGroup>
|
||||||
|
|
@ -34,7 +34,8 @@ This guide helps you understand which versions of Honcho's API are compatible wi
|
||||||
|
|
||||||
| Honcho API Version | TypeScript SDK | Python SDK |
|
| Honcho API Version | TypeScript SDK | Python SDK |
|
||||||
|-------------------|---------------|------------|
|
|-------------------|---------------|------------|
|
||||||
| v2.5.1 (Current) | v1.6.0 | v1.6.0 |
|
| v3.0.0 (Current) | v2.0.0 | v2.0.0 |
|
||||||
|
| v2.5.1 | v1.6.0 | v1.6.0 |
|
||||||
| v2.5.0 | v1.6.0 | v1.6.0 |
|
| v2.5.0 | v1.6.0 | v1.6.0 |
|
||||||
| v2.4.3 | v1.5.0 | v1.5.0 |
|
| v2.4.3 | v1.5.0 | v1.5.0 |
|
||||||
| v2.4.2 | v1.5.0 | v1.5.0 |
|
| v2.4.2 | v1.5.0 | v1.5.0 |
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,13 @@ Welcome to the Honcho changelog! This section documents all notable changes to t
|
||||||
### Honcho API and SDK Changelogs
|
### Honcho API and SDK Changelogs
|
||||||
<Tabs>
|
<Tabs>
|
||||||
<Tab title="Honcho API">
|
<Tab title="Honcho API">
|
||||||
<Update label="v2.5.1 (Current)">
|
<Update label="v3.0.0 (Current)">
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Major version release
|
||||||
|
</Update>
|
||||||
|
|
||||||
|
<Update label="v2.5.1">
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Backwards compatibility for `message_ids` field in documents to handle legacy tuple format
|
- Backwards compatibility for `message_ids` field in documents to handle legacy tuple format
|
||||||
|
|
@ -142,7 +148,7 @@ Welcome to the Honcho changelog! This section documents all notable changes to t
|
||||||
<Update label="v2.3.2">
|
<Update label="v2.3.2">
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Get peer cards endpoint (`GET /v2/peers/{peer_id}/peer-card`) for retrieving targeted peer context information
|
- Get peer cards endpoint (`GET /v3/peers/{peer_id}/peer-card`) for retrieving targeted peer context information
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|
@ -406,7 +412,12 @@ Welcome to the Honcho changelog! This section documents all notable changes to t
|
||||||
|
|
||||||
<Tab title="Python SDK">
|
<Tab title="Python SDK">
|
||||||
[Python SDK](https://pypi.org/project/honcho-ai/)
|
[Python SDK](https://pypi.org/project/honcho-ai/)
|
||||||
<Update label="v1.6.0 (Current)">
|
<Update label="v2.0.0 (Current)">
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Major version release
|
||||||
|
</Update>
|
||||||
|
<Update label="v1.6.0">
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- metadata and configuration fields to Workspace, Peer, Session, and Message objects
|
- metadata and configuration fields to Workspace, Peer, Session, and Message objects
|
||||||
|
|
@ -493,7 +504,12 @@ Welcome to the Honcho changelog! This section documents all notable changes to t
|
||||||
|
|
||||||
<Tab title="TypeScript SDK">
|
<Tab title="TypeScript SDK">
|
||||||
[TypeScript SDK](https://www.npmjs.com/package/@honcho-ai/sdk)
|
[TypeScript SDK](https://www.npmjs.com/package/@honcho-ai/sdk)
|
||||||
<Update label="v1.6.0 (Current)">
|
<Update label="v2.0.0 (Current)">
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Major version release
|
||||||
|
</Update>
|
||||||
|
<Update label="v1.6.0">
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- metadata and configuration fields to Workspace, Peer, Session, and Message objects
|
- metadata and configuration fields to Workspace, Peer, Session, and Message objects
|
||||||
|
|
|
||||||
222
docs/docs.json
222
docs/docs.json
|
|
@ -5,7 +5,7 @@
|
||||||
"redirects": [
|
"redirects": [
|
||||||
{
|
{
|
||||||
"source": "/",
|
"source": "/",
|
||||||
"destination": "/v2/documentation/introduction/overview"
|
"destination": "/v3/documentation/introduction/overview"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"colors": {
|
"colors": {
|
||||||
|
|
@ -15,14 +15,21 @@
|
||||||
},
|
},
|
||||||
"favicon": "/favicon.svg",
|
"favicon": "/favicon.svg",
|
||||||
"contextual": {
|
"contextual": {
|
||||||
"options": ["copy", "view", "chatgpt", "claude"]
|
"options": [
|
||||||
|
"copy",
|
||||||
|
"view",
|
||||||
|
"chatgpt",
|
||||||
|
"claude"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"navigation": {
|
"navigation": {
|
||||||
"versions": [
|
"versions": [
|
||||||
{
|
{
|
||||||
"version": "v2.5.1",
|
"version": "v2.5.1",
|
||||||
"api": {
|
"api": {
|
||||||
"openapi": ["openapi.json"]
|
"openapi": [
|
||||||
|
"openapi.json"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"tabs": [
|
"tabs": [
|
||||||
{
|
{
|
||||||
|
|
@ -69,11 +76,15 @@
|
||||||
"groups": [
|
"groups": [
|
||||||
{
|
{
|
||||||
"group": "Getting Started",
|
"group": "Getting Started",
|
||||||
"pages": ["v2/guides/overview"]
|
"pages": [
|
||||||
|
"v2/guides/overview"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Migrations",
|
"group": "Migrations",
|
||||||
"pages": ["v2/migrations/from-mem0"]
|
"pages": [
|
||||||
|
"v2/migrations/from-mem0"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Integrations",
|
"group": "Integrations",
|
||||||
|
|
@ -86,7 +97,10 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Application Interfaces",
|
"group": "Application Interfaces",
|
||||||
"pages": ["v2/guides/discord", "v2/guides/telegram"]
|
"pages": [
|
||||||
|
"v2/guides/discord",
|
||||||
|
"v2/guides/telegram"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -95,7 +109,9 @@
|
||||||
"groups": [
|
"groups": [
|
||||||
{
|
{
|
||||||
"group": "API Documentation",
|
"group": "API Documentation",
|
||||||
"pages": ["v2/api-reference/introduction"]
|
"pages": [
|
||||||
|
"v2/api-reference/introduction"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "workspaces",
|
"group": "workspaces",
|
||||||
|
|
@ -209,9 +225,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": "v2.6.0-alpha",
|
"version": "v3.0.0",
|
||||||
"api": {
|
"api": {
|
||||||
"openapi": ["openapi.json"]
|
"openapi": [
|
||||||
|
"openapi.json"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"tabs": [
|
"tabs": [
|
||||||
{
|
{
|
||||||
|
|
@ -220,35 +238,35 @@
|
||||||
{
|
{
|
||||||
"group": "Introduction",
|
"group": "Introduction",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/documentation/introduction/overview",
|
"v3/documentation/introduction/overview",
|
||||||
"v2.6.0-alpha/documentation/introduction/quickstart",
|
"v3/documentation/introduction/quickstart",
|
||||||
"v2.6.0-alpha/documentation/introduction/vibecoding"
|
"v3/documentation/introduction/vibecoding"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Core Concepts",
|
"group": "Core Concepts",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/documentation/core-concepts/architecture",
|
"v3/documentation/core-concepts/architecture",
|
||||||
"v2.6.0-alpha/documentation/core-concepts/reasoning",
|
"v3/documentation/core-concepts/reasoning",
|
||||||
"v2.6.0-alpha/documentation/core-concepts/representation"
|
"v3/documentation/core-concepts/representation"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Features",
|
"group": "Features",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/documentation/features/get-context",
|
"v3/documentation/features/get-context",
|
||||||
"v2.6.0-alpha/documentation/features/chat",
|
"v3/documentation/features/chat",
|
||||||
{
|
{
|
||||||
"group": "Advanced",
|
"group": "Advanced",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/documentation/features/advanced/overview",
|
"v3/documentation/features/advanced/overview",
|
||||||
"v2.6.0-alpha/documentation/features/advanced/queue-status",
|
"v3/documentation/features/advanced/queue-status",
|
||||||
"v2.6.0-alpha/documentation/features/advanced/reasoning-configuration",
|
"v3/documentation/features/advanced/reasoning-configuration",
|
||||||
"v2.6.0-alpha/documentation/features/advanced/representation-scopes",
|
"v3/documentation/features/advanced/representation-scopes",
|
||||||
"v2.6.0-alpha/documentation/features/advanced/summarizer",
|
"v3/documentation/features/advanced/summarizer",
|
||||||
"v2.6.0-alpha/documentation/features/advanced/search",
|
"v3/documentation/features/advanced/search",
|
||||||
"v2.6.0-alpha/documentation/features/advanced/using-filters",
|
"v3/documentation/features/advanced/using-filters",
|
||||||
"v2.6.0-alpha/documentation/features/advanced/streaming-response"
|
"v3/documentation/features/advanced/streaming-response"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -256,8 +274,8 @@
|
||||||
{
|
{
|
||||||
"group": "Reference",
|
"group": "Reference",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/documentation/reference/platform",
|
"v3/documentation/reference/platform",
|
||||||
"v2.6.0-alpha/documentation/reference/sdk"
|
"v3/documentation/reference/sdk"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -268,28 +286,30 @@
|
||||||
{
|
{
|
||||||
"group": "Overview",
|
"group": "Overview",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/guides/overview",
|
"v3/guides/overview",
|
||||||
"v2.6.0-alpha/guides/file-uploads",
|
"v3/guides/file-uploads",
|
||||||
"v2.6.0-alpha/guides/storing-data"
|
"v3/guides/storing-data"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Integrations",
|
"group": "Integrations",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/guides/integrations/crewai",
|
"v3/guides/integrations/crewai",
|
||||||
"v2.6.0-alpha/guides/integrations/langgraph",
|
"v3/guides/integrations/langgraph",
|
||||||
"v2.6.0-alpha/guides/integrations/mcp"
|
"v3/guides/integrations/mcp"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Migrations",
|
"group": "Migrations",
|
||||||
"pages": ["v2.6.0-alpha/guides/migrations/mem0"]
|
"pages": [
|
||||||
|
"v3/guides/migrations/mem0"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Chatbots",
|
"group": "Chatbots",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/guides/discord",
|
"v3/guides/discord",
|
||||||
"v2.6.0-alpha/guides/telegram"
|
"v3/guides/telegram"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -300,15 +320,15 @@
|
||||||
{
|
{
|
||||||
"group": "Self-Hosting",
|
"group": "Self-Hosting",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/contributing/self-hosting",
|
"v3/contributing/self-hosting",
|
||||||
"v2.6.0-alpha/contributing/configuration"
|
"v3/contributing/configuration"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Contributing",
|
"group": "Contributing",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/contributing/guidelines",
|
"v3/contributing/guidelines",
|
||||||
"v2.6.0-alpha/contributing/license"
|
"v3/contributing/license"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -318,87 +338,89 @@
|
||||||
"groups": [
|
"groups": [
|
||||||
{
|
{
|
||||||
"group": "API Documentation",
|
"group": "API Documentation",
|
||||||
"pages": ["v2.6.0-alpha/api-reference/introduction"]
|
"pages": [
|
||||||
|
"v3/api-reference/introduction"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "workspaces",
|
"group": "workspaces",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/api-reference/endpoint/workspaces/get-or-create-workspace",
|
"v3/api-reference/endpoint/workspaces/get-or-create-workspace",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/workspaces/get-all-workspaces",
|
"v3/api-reference/endpoint/workspaces/get-all-workspaces",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/workspaces/update-workspace",
|
"v3/api-reference/endpoint/workspaces/update-workspace",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/workspaces/delete-workspace",
|
"v3/api-reference/endpoint/workspaces/delete-workspace",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/workspaces/search-workspace",
|
"v3/api-reference/endpoint/workspaces/search-workspace",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/workspaces/get-deriver-status",
|
"v3/api-reference/endpoint/workspaces/get-deriver-status",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/workspaces/trigger-dream"
|
"v3/api-reference/endpoint/workspaces/trigger-dream"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "peers",
|
"group": "peers",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/get-peers",
|
"v3/api-reference/endpoint/peers/get-peers",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/get-or-create-peer",
|
"v3/api-reference/endpoint/peers/get-or-create-peer",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/update-peer",
|
"v3/api-reference/endpoint/peers/update-peer",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/get-sessions-for-peer",
|
"v3/api-reference/endpoint/peers/get-sessions-for-peer",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/chat",
|
"v3/api-reference/endpoint/peers/chat",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/get-working-representation",
|
"v3/api-reference/endpoint/peers/get-working-representation",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/get-peer-card",
|
"v3/api-reference/endpoint/peers/get-peer-card",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/set-peer-card",
|
"v3/api-reference/endpoint/peers/set-peer-card",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/get-peer-context",
|
"v3/api-reference/endpoint/peers/get-peer-context",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/peers/search-peer"
|
"v3/api-reference/endpoint/peers/search-peer"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "sessions",
|
"group": "sessions",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/get-or-create-session",
|
"v3/api-reference/endpoint/sessions/get-or-create-session",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/get-sessions",
|
"v3/api-reference/endpoint/sessions/get-sessions",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/update-session",
|
"v3/api-reference/endpoint/sessions/update-session",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/delete-session",
|
"v3/api-reference/endpoint/sessions/delete-session",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/clone-session",
|
"v3/api-reference/endpoint/sessions/clone-session",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/get-session-peers",
|
"v3/api-reference/endpoint/sessions/get-session-peers",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/set-session-peers",
|
"v3/api-reference/endpoint/sessions/set-session-peers",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/add-peers-to-session",
|
"v3/api-reference/endpoint/sessions/add-peers-to-session",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/remove-peers-from-session",
|
"v3/api-reference/endpoint/sessions/remove-peers-from-session",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/get-peer-config",
|
"v3/api-reference/endpoint/sessions/get-peer-config",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/set-peer-config",
|
"v3/api-reference/endpoint/sessions/set-peer-config",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/get-session-context",
|
"v3/api-reference/endpoint/sessions/get-session-context",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/get-session-summaries",
|
"v3/api-reference/endpoint/sessions/get-session-summaries",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/sessions/search-session"
|
"v3/api-reference/endpoint/sessions/search-session"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "messages",
|
"group": "messages",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/api-reference/endpoint/messages/create-messages-for-session",
|
"v3/api-reference/endpoint/messages/create-messages-for-session",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/messages/get-messages",
|
"v3/api-reference/endpoint/messages/get-messages",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/messages/get-message",
|
"v3/api-reference/endpoint/messages/get-message",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/messages/update-message",
|
"v3/api-reference/endpoint/messages/update-message",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/messages/create-messages-with-file"
|
"v3/api-reference/endpoint/messages/create-messages-with-file"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "observations",
|
"group": "observations",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/api-reference/endpoint/observations/create-observations",
|
"v3/api-reference/endpoint/observations/create-observations",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/observations/list-observations",
|
"v3/api-reference/endpoint/observations/list-observations",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/observations/query-observations",
|
"v3/api-reference/endpoint/observations/query-observations",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/observations/delete-observation"
|
"v3/api-reference/endpoint/observations/delete-observation"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "webhooks",
|
"group": "webhooks",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/api-reference/endpoint/webhooks/list-webhook-endpoints",
|
"v3/api-reference/endpoint/webhooks/list-webhook-endpoints",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/webhooks/get-or-create-webhook-endpoint",
|
"v3/api-reference/endpoint/webhooks/get-or-create-webhook-endpoint",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/webhooks/delete-webhook-endpoint",
|
"v3/api-reference/endpoint/webhooks/delete-webhook-endpoint",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/webhooks/test-emit"
|
"v3/api-reference/endpoint/webhooks/test-emit"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "miscellaneous",
|
"group": "miscellaneous",
|
||||||
"pages": [
|
"pages": [
|
||||||
"v2.6.0-alpha/api-reference/endpoint/keys/create-key",
|
"v3/api-reference/endpoint/keys/create-key",
|
||||||
"v2.6.0-alpha/api-reference/endpoint/metrics"
|
"v3/api-reference/endpoint/metrics"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -420,7 +442,9 @@
|
||||||
{
|
{
|
||||||
"version": "v1.1.0",
|
"version": "v1.1.0",
|
||||||
"api": {
|
"api": {
|
||||||
"openapi": ["openapi.json"]
|
"openapi": [
|
||||||
|
"openapi.json"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"tabs": [
|
"tabs": [
|
||||||
{
|
{
|
||||||
|
|
@ -450,15 +474,23 @@
|
||||||
"groups": [
|
"groups": [
|
||||||
{
|
{
|
||||||
"group": "Getting Started",
|
"group": "Getting Started",
|
||||||
"pages": ["v1/guides/overview", "v1/guides/streaming-response"]
|
"pages": [
|
||||||
|
"v1/guides/overview",
|
||||||
|
"v1/guides/streaming-response"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Application Interfaces",
|
"group": "Application Interfaces",
|
||||||
"pages": ["v1/guides/discord", "v1/guides/honcho-mcp"]
|
"pages": [
|
||||||
|
"v1/guides/discord",
|
||||||
|
"v1/guides/honcho-mcp"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Personal Memory",
|
"group": "Personal Memory",
|
||||||
"pages": ["v1/guides/dialectic-endpoint"]
|
"pages": [
|
||||||
|
"v1/guides/dialectic-endpoint"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -467,7 +499,9 @@
|
||||||
"groups": [
|
"groups": [
|
||||||
{
|
{
|
||||||
"group": "API Documentation",
|
"group": "API Documentation",
|
||||||
"pages": ["v1/api-reference/introduction"]
|
"pages": [
|
||||||
|
"v1/api-reference/introduction"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "apps",
|
"group": "apps",
|
||||||
|
|
@ -515,7 +549,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "keys",
|
"group": "keys",
|
||||||
"pages": ["v1/api-reference/endpoint/keys/create-key"]
|
"pages": [
|
||||||
|
"v1/api-reference/endpoint/keys/create-key"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "metamessages",
|
"group": "metamessages",
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
"main": ".pnp.js",
|
"main": ".pnp.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "mint dev",
|
"dev": "mint dev",
|
||||||
"openapi": "npx @mintlify/scraping openapi-file v2/openapi.json -o v2/api-reference/endpoint",
|
"openapi": "npx @mintlify/scraping openapi-file v3/openapi.json -o v3/api-reference/endpoint",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/keys
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/messages/
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/messages/upload
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/messages/{message_id}
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/messages/list
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: put /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/messages/{message_id}
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/observations
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: delete /v2.6.0-alpha/workspaces/{workspace_id}/observations/{observation_id}
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/observations/list
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/observations/query
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/peers/{peer_id}/chat
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/peers
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/peers/{peer_id}/card
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/peers/{peer_id}/context
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/peers/list
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/peers/{peer_id}/sessions
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/peers/{peer_id}/representation
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/peers/{peer_id}/search
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: put /v2.6.0-alpha/workspaces/{workspace_id}/peers/{peer_id}/card
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: put /v2.6.0-alpha/workspaces/{workspace_id}/peers/{peer_id}
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/peers
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/clone
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: delete /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/sessions
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/peers/{peer_id}/config
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/context
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/peers
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/summaries
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/sessions/list
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: delete /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/peers
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/search
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/peers/{peer_id}/config
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: put /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}/peers
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: put /v2.6.0-alpha/workspaces/{workspace_id}/sessions/{session_id}
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: delete /v2.6.0-alpha/workspaces/{workspace_id}/webhooks/{endpoint_id}
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/webhooks
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/webhooks
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/webhooks/test
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: delete /v2.6.0-alpha/workspaces/{workspace_id}
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/list
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: get /v2.6.0-alpha/workspaces/{workspace_id}/deriver/status
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/search
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: post /v2.6.0-alpha/workspaces/{workspace_id}/trigger_dream
|
|
||||||
---
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
openapi: put /v2.6.0-alpha/workspaces/{workspace_id}
|
|
||||||
---
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
title: "Advanced Features"
|
|
||||||
icon: "brain"
|
|
||||||
description: "Advanced configuration and monitoring options for Honcho"
|
|
||||||
sidebarTitle: "Overview"
|
|
||||||
---
|
|
||||||
|
|
||||||
Advanced features give you fine-grained control over Honcho's behavior and implementation.
|
|
||||||
|
|
||||||
## Configuration & Monitoring
|
|
||||||
|
|
||||||
- [Queue Status](/v2.6.0-alpha/documentation/features/advanced/queue-status) - Monitor background processing and reasoning tasks
|
|
||||||
- [Configuration](/v2.6.0-alpha/documentation/features/advanced/toggle-reasoning) - Configure reasoning models and behavior
|
|
||||||
- [Summarizer](/v2.6.0-alpha/documentation/features/advanced/summarizer) - Automatic session summarization
|
|
||||||
|
|
||||||
## Querying & Filtering
|
|
||||||
|
|
||||||
- [Search](/v2.6.0-alpha/documentation/features/advanced/search) - Search across peers, sessions, and messages
|
|
||||||
- [Filters](/v2.6.0-alpha/documentation/features/advanced/using-filters) - Filter queries with advanced parameters
|
|
||||||
- [Streaming Responses](/v2.6.0-alpha/documentation/features/advanced/streaming-response) - Stream dialectic responses in real-time
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/keys
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/sessions/{session_id}/messages/
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/sessions/{session_id}/messages/upload
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: get /v3/workspaces/{workspace_id}/sessions/{session_id}/messages/{message_id}
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/sessions/{session_id}/messages/list
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: put /v3/workspaces/{workspace_id}/sessions/{session_id}/messages/{message_id}
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/observations
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: delete /v3/workspaces/{workspace_id}/observations/{observation_id}
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/observations/list
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/observations/query
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/peers/{peer_id}/chat
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/peers
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: get /v3/workspaces/{workspace_id}/peers/{peer_id}/card
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: get /v3/workspaces/{workspace_id}/peers/{peer_id}/context
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/peers/list
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/peers/{peer_id}/sessions
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/peers/{peer_id}/representation
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/peers/{peer_id}/search
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: put /v3/workspaces/{workspace_id}/peers/{peer_id}/card
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: put /v3/workspaces/{workspace_id}/peers/{peer_id}
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/sessions/{session_id}/peers
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: get /v3/workspaces/{workspace_id}/sessions/{session_id}/clone
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: delete /v3/workspaces/{workspace_id}/sessions/{session_id}
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/sessions
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: get /v3/workspaces/{workspace_id}/sessions/{session_id}/peers/{peer_id}/config
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: get /v3/workspaces/{workspace_id}/sessions/{session_id}/context
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: get /v3/workspaces/{workspace_id}/sessions/{session_id}/peers
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: get /v3/workspaces/{workspace_id}/sessions/{session_id}/summaries
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/sessions/list
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: delete /v3/workspaces/{workspace_id}/sessions/{session_id}/peers
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/sessions/{session_id}/search
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: post /v3/workspaces/{workspace_id}/sessions/{session_id}/peers/{peer_id}/config
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: put /v3/workspaces/{workspace_id}/sessions/{session_id}/peers
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
openapi: put /v3/workspaces/{workspace_id}/sessions/{session_id}
|
||||||
|
---
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue