From 7470866d12845ed4b56bf3449d058e65df96b1c1 Mon Sep 17 00:00:00 2001 From: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com> Date: Thu, 21 May 2026 14:32:41 -0400 Subject: [PATCH] chore(docs): Update changelogs and increment version (#713) --- CHANGELOG.md | 77 +- CLAUDE.md | 7 +- README.md | 46 +- docs/changelog/compatibility-guide.mdx | 7 +- docs/changelog/introduction.mdx | 81 +- docs/docs.json | 2 +- docs/v3/openapi.json | 2322 +++++------------------- pyproject.toml | 2 +- sdks/python/CHANGELOG.md | 7 +- sdks/python/pyproject.toml | 2 +- sdks/typescript/CHANGELOG.md | 10 +- sdks/typescript/package.json | 2 +- uv.lock | 6 +- 13 files changed, 643 insertions(+), 1928 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 901265ef..60085e5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,39 +5,74 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## [Unreleased] +## [3.0.7] - 2026-05-21 ### Added -- New `src/llm/` package as the single owner of provider runtime: clients, backends, history adapters, tool loop, request builder, credentials, and caching policy -- `AttemptPlan` dataclass captures per-retry provider selection (client, model, reasoning_effort, thinking_budget_tokens, selected_config) and pins it across stream-final retries so streaming doesn't bounce back to primary after the tool loop has settled on fallback -- Gemini JSON-schema sanitizer for `function_declarations` — strips keywords Gemini's validator rejects (`additionalProperties`, `allOf`, etc.) while preserving semantics for all other backends -- Dreamer specialists derive `effective_max_tokens` from `model_config.max_output_tokens` with a per-specialist default fallback -- Regression tests covering fallback-config thinking-param reach, provider_params → extra_params boundary, OpenAI reasoning-model parameter routing, Gemini blocked finish_reason handling, and fail-fast `max_tool_iterations` validation +- New `src/llm/` module as the single owner of provider runtime: clients, backends, history adapters, tool loop, request builder, credentials, and caching policy (#459) +- `AttemptPlan` dataclass captures per-retry provider selection (client, model, reasoning_effort, thinking_budget_tokens, selected_config) and pins it across stream-final retries so streaming doesn't bounce back to primary after the tool loop has settled on fallback (#459) +- Gemini JSON-schema sanitizer for `function_declarations` — strips keywords Gemini's validator rejects (`additionalProperties`, `allOf`, etc.) while preserving semantics for all other backends (#459) +- Dreamer specialists derive `effective_max_tokens` from `model_config.max_output_tokens` with a per-specialist default fallback (#459) +- New cloudevent `LLMCallCompletedEvent` (`llm.call.completed`) fires once per provider hit with full cost-attribution context: transport/provider_label, model, token counts with cache breakdown, finish_reason, outcome, `is_final_attempt`, retry/fallback state, duration, tool-call shape, streaming flag, and agent correlation (`run_id` + iteration). Includes a `CallPurpose` closed enum (`deriver.representation`, `dialectic.answer`, `dream.deduction|induction`, `summary.short|long`) (#637) +- `RepresentationCompletedEvent` now carries `total_input_tokens` for full-trace cost attribution (#637) +- Per-emitter `honcho_version` injection on all CloudEvents plus emitter health metrics (#637) +- `TelemetrySettings.HIGH_VOLUME_SAMPLE_RATE` (default 1.0) — deterministic per-`run_id` sampler so an entire agent trace is kept or dropped together; aggregate envelopes bypass the sampler (#637) +- Deriver custom instructions: per-workspace/peer guidance threaded into the deriver prompt with a `MAX_CUSTOM_INSTRUCTIONS_TOKENS` budget (default 2000); deriver `MAX_INPUT_TOKENS` raised 23000 → 25000 to make room (#609) +- Configurable embedding dimensions: `EMBEDDING_MODEL_CONFIG__DIMENSIONS_MODE` (`auto`/`always`/`never`) controls whether the OpenAI `dimensions=` parameter is forwarded; `auto` (default) sends it when the operator explicitly set `EMBEDDING_VECTOR_DIMENSIONS` and the model is not on the known-rejecting allowlist (#678) +- New `honcho-cli` package — Python CLI for inspecting and managing peers, sessions, and configuration against a Honcho deployment (#424) +- `HONCHO_API_URL` env var support in the MCP Worker, enabling self-hosted Honcho deployments to point the Worker at their own instance instead of `https://api.honcho.dev` (#575) +- API ID `max_length` increased from 100 to 512 across `WorkspaceCreate`, `PeerCreate`, and `SessionCreate` to align the API contract with the underlying DB schema (#684) +- Regression tests covering fallback-config thinking-param reach, provider_params → extra_params boundary, OpenAI reasoning-model parameter routing, Gemini blocked finish_reason handling, and fail-fast `max_tool_iterations` validation (#459) ### Changed -- All LLM orchestration moved out of `src/utils/clients.py` into `src/llm/` with modules split by responsibility (api, executor, tool_loop, runtime, registry, conversation, request_builder, credentials, caching, backends, history_adapters) -- Default `ModelConfig` factories (deriver, summary, dreamer specialists, dialectic levels) normalized to `openai/gpt-5.4-mini` with no extra parameters set by default; operators add transport/thinking overrides explicitly -- OpenAI reasoning-model routing widened via `_uses_max_completion_tokens` heuristic covering `gpt-5.x` and `o1/o3/o4` — these models receive `max_completion_tokens` instead of `max_tokens` -- Override client factories switched from unbounded `@cache` to `@lru_cache(maxsize=128)` for predictable memory growth on long-running processes -- `get_backend` now delegates to `client_for_model_config`, so the live-test path and production path share one missing-API-key validation -- Blocked Gemini responses (`SAFETY`, `RECITATION`, `PROHIBITED_CONTENT`, `BLOCKLIST`) raise `LLMError` in the streaming path too (previously only the non-streaming path), ensuring retry/fallback logic fires uniformly -- Transport-change env overrides now strip transport-specific thinking params (thinking_budget_tokens vs. reasoning_effort) during config merge, including at the dialectic-level merge, so switching from Anthropic → OpenAI doesn't leave orphaned Anthropic-only params that the OpenAI backend would reject -- `max_tool_iterations` out-of-range inputs now raise `ValidationException` instead of being silently clamped -- Troubleshooting docs updated to reflect nested-env-var form for per-component thinking-budget overrides +- All LLM orchestration moved out of `src/utils/clients.py` into `src/llm/` with modules split by responsibility (api, executor, tool_loop, runtime, registry, conversation, request_builder, credentials, caching, backends, history_adapters) (#459) +- Default `ModelConfig` factories (deriver, summary, dreamer specialists, dialectic levels) normalized to `openai/gpt-5.4-mini` with no extra parameters set by default; operators add transport/thinking overrides explicitly (#459) +- OpenAI reasoning-model routing widened via `_uses_max_completion_tokens` heuristic covering `gpt-5.x` and `o1/o3/o4` — these models receive `max_completion_tokens` instead of `max_tokens` (#459) +- Override client factories switched from unbounded `@cache` to `@lru_cache(maxsize=128)` for predictable memory growth on long-running processes (#459) +- `get_backend` now delegates to `client_for_model_config`, so the live-test path and production path share one missing-API-key validation (#459) +- Blocked Gemini responses (`SAFETY`, `RECITATION`, `PROHIBITED_CONTENT`, `BLOCKLIST`) raise `LLMError` in the streaming path too (previously only the non-streaming path), ensuring retry/fallback logic fires uniformly (#459) +- Transport-change env overrides now strip transport-specific thinking params (thinking_budget_tokens vs. reasoning_effort) during config merge, including at the dialectic-level merge, so switching from Anthropic → OpenAI doesn't leave orphaned Anthropic-only params that the OpenAI backend would reject (#459) +- `max_tool_iterations` out-of-range inputs now raise `ValidationException` instead of being silently clamped (#459) +- Public API schemas (`WorkspaceCreate`, `PeerCreate`, `SessionCreate`) and SDK validation (`api_types.py`, `validation.ts`) accept IDs up to 512 chars (was 100) (#684) +- Peer card prompts reframed as stable identity markers (replaces the prior "biographical/profile facts" language). Induction specialist is now opted out of peer card writes (`can_update_peer_card = False`) so only deduction touches the card (#686) +- Vector store queries no longer fetch embedding vectors — only document metadata is returned, reducing payload size and DB load (pgvector, lancedb, turbopuffer) (#682) +- Langfuse trace metadata now includes `namespace`, `model`, and `provider` so traces can be filtered by deployment slice (#565) +- Deriver: model-aware tokenizer (replaces the previously hardcoded encoding) and explicit guard on empty message content (#647) +- Dialectic level defaults now merge correctly with per-level overrides in `src/config` (DEV-1733) (#656) +- Default dialectic tool choice switched from forced/required to `auto` (#630) +- Vector sync given a substantial retry budget to tolerate transient embedding provider outages (#604) +- `AgentToolConclusionsDeletedEvent` payload now carries `levels` for parity with the rest of the conclusion event surface (#612) +- Turbopuffer vector store: `InternalServerError` caught and surfaced as a warning rather than a hard failure; unused `upsert_with_retry` and `VectorUpsertResult` removed; explicit silent and explicit-error paths for vector DB server errors (#561) +- Troubleshooting docs updated to reflect nested-env-var form for per-component thinking-budget overrides (#459) +- README refresh (#681) +- CLAUDE.md refreshed against the current `src/` layout (#680) ### Fixed -- Fallback `ModelConfig` temperature and `thinking_budget_tokens` reach the backend on the final retry — previously the primary's values were pre-populated into caller kwargs early and clobbered fallback values via `effective_config_for_call(update=...)` -- Stream-final retries pin to the `AttemptPlan` that succeeded rather than re-running provider selection through the outer `current_attempt` ContextVar (which could roll streaming back to primary after the tool loop had already switched to fallback) -- OpenAI structured-output calls continue to use `chat.completions.parse()` with strict schema enforcement, while tool-calling paths use `chat.completions.create()` without `strict:True` for broader proxy compatibility (OpenRouter, vLLM, Ollama) -- Gemini `cached_content` reuse keys now include `system_instruction` and `tool_config` so cache hits don't cross configurations that differ only in those fields -- `reverse` query parameter is now honored on the v3 workspace list (`POST /v3/workspaces/list`), peer list (`POST /v3/workspaces/{workspace_id}/peers/list`), workspace-scoped session list (`POST /v3/workspaces/{workspace_id}/sessions/list`), and peer-scoped session list (`POST /v3/workspaces/{workspace_id}/peers/{peer_id}/sessions`). Honcho SDKs at 2.1.0+ were already sending `reverse=true` for these routes but the server silently ignored it. Ties on `created_at` now fall back to the internal nanoid `id` so ordering remains stable across pages. +- Fallback `ModelConfig` temperature and `thinking_budget_tokens` reach the backend on the final retry — previously the primary's values were pre-populated into caller kwargs early and clobbered fallback values via `effective_config_for_call(update=...)` (#459) +- Stream-final retries pin to the `AttemptPlan` that succeeded rather than re-running provider selection through the outer `current_attempt` ContextVar (which could roll streaming back to primary after the tool loop had already switched to fallback) (#459) +- OpenAI structured-output calls continue to use `chat.completions.parse()` with strict schema enforcement, while tool-calling paths use `chat.completions.create()` without `strict:True` for broader proxy compatibility (OpenRouter, vLLM, Ollama) (#459) +- Gemini `cached_content` reuse keys now include `system_instruction` and `tool_config` so cache hits don't cross configurations that differ only in those fields (#459) +- Removed strict parameter validation for thinking params on Anthropic and OpenAI transports — was rejecting valid per-transport configs (#686) +- `reverse` query parameter is now honored on the v3 workspace list (`POST /v3/workspaces/list`), peer list (`POST /v3/workspaces/{workspace_id}/peers/list`), workspace-scoped session list (`POST /v3/workspaces/{workspace_id}/sessions/list`), and peer-scoped session list (`POST /v3/workspaces/{workspace_id}/peers/{peer_id}/sessions`). Honcho SDKs at 2.1.0+ were already sending `reverse=true` for these routes but the server silently ignored it. Ties on `created_at` now fall back to the internal nanoid `id` so ordering remains stable across pages (#685) +- LLM client factories now receive `base_url` from `LLMSettings` for default providers — previously the override path honored `base_url` but the default path didn't, so operators pointing at OpenAI-compatible proxies via `LLM__OPENAI_BASE_URL` were ignored (#643, fixes #641) +- Internal N+1 query in dialectic agent tool execution (DEV-1721) — collapsed per-iteration DB lookups into a single fetch (#652) +- Dreamer threshold and time-guard semantics: `check_and_schedule_dream` count filter now includes only `documents.level == 'explicit'` (dreamer-created levels are output, not input, and were inflating the threshold and creating a feedback loop); `last_dream_at` write relocated from `enqueue_dream` into `process_dream` so duplicate enqueues or failed runs no longer reset the 8-hour time guard (#573) +- Deriver: blank observations are filtered out before embedding (previously triggered noisy embedding calls and persisted empty rows); blank-observation filtering unified across tool paths (#615) +- Surprisal module: filter for level observations changed from `{"level": levels}` to `{"level": {"in": levels}}` — `apply_filter()` requires operator syntax, so the prior call silently returned 0 results and made the entire Surprisal phase of the Dream cycle a no-op (#581, fixes #559) +- Removed hardcoded `stop_sequences` override from Deriver `ModelConfig` (was clobbering operator-configured stop sequences) (#587) +- Removed stale `stop_sequences` from tests (#607) +- Embedding client: `embed()` now wraps single-string input in an array, restoring compatibility with OpenAI-compatible third-party providers that reject scalar input (#586) +- Docker Compose: deriver service startup gated on the API service healthcheck (prevents races where the deriver starts before the API has run migrations) (#689) +- Docker image: `HEALTHCHECK` directive removed from the shared base image — it probed an HTTP endpoint only the API serves, permanently marking deriver containers as unhealthy. Service-level health checks now belong in each service's own configuration (k8s readiness/liveness probes on the API Deployment only) (#530) +- `tests/unified`: `--test-dir`/`--test-file` arguments now use an argparse mutually-exclusive group instead of manual validation (#650) +- CrewAI example updated for the latest CrewAI protocol (#631) ### Removed -- `src/utils/clients.py` deleted; its responsibilities are split across `src/llm/registry.py`, `src/llm/credentials.py`, and the backend-specific modules +- `src/utils/clients.py` deleted; its responsibilities are split across `src/llm/registry.py`, `src/llm/credentials.py`, and the backend-specific modules (#459) +- `HEALTHCHECK` directive removed from the shared Docker image (#530) ## [3.0.6] - 2026-04-10 diff --git a/CLAUDE.md b/CLAUDE.md index 6fa9ce2f..fbd05871 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -140,6 +140,7 @@ The Deriver processes batches of incoming messages and extracts conclusions abou - **Output**: Explicit conclusions (direct facts) and deductive conclusions (inferences) saved to `(observer, observed)` collections. - **Entry point**: `src/deriver/__main__.py` → `queue_manager.main()`. - **Prompts**: `src/deriver/prompts.py` (`minimal_deriver_prompt`). +- **Custom instructions**: per-workspace/peer guidance can be threaded into the prompt via reasoning configuration; `DERIVER__MAX_CUSTOM_INSTRUCTIONS_TOKENS` caps the addition (default 2000) and `DERIVER__MAX_INPUT_TOKENS` defaults to 25000 to make room. #### 2. Dialectic (`src/dialectic/`) @@ -177,8 +178,9 @@ The Dreamer is an orchestrated multi-specialist system that runs during schedule #### Shared Agent Infrastructure - **Tool definitions** (`src/utils/agent_tools.py`): unified `TOOLS` dict; per-agent lists (`DIALECTIC_TOOLS`, `DIALECTIC_TOOLS_MINIMAL`, `DREAMER_TOOLS`, `DEDUCTION_SPECIALIST_TOOLS`, `INDUCTION_SPECIALIST_TOOLS`). -- **LLM subsystem** (`src/llm/`): provider-agnostic `honcho_llm_call()`. Backends in `src/llm/backends/` (`anthropic.py`, `gemini.py`, `openai.py`). Includes prompt caching (`caching.py`), structured output (`structured_output.py`), tool loop (`tool_loop.py`), history adapters for cross-provider message formats, and a model registry. +- **LLM subsystem** (`src/llm/`): provider-agnostic `honcho_llm_call()`. Backends in `src/llm/backends/` (`anthropic.py`, `gemini.py`, `openai.py`). Includes prompt caching (`caching.py`), structured output (`structured_output.py`), tool loop (`tool_loop.py`), history adapters for cross-provider message formats, and a model registry. Per-retry provider selection is pinned via an `AttemptPlan` so stream-final retries don't bounce back to primary after the tool loop has settled on fallback. - **Per-agent model config**: each agent has its own `MODEL_CONFIG` in `src/config.py` with fallback chains (see `ConfiguredModelSettings`, `FallbackModelSettings`). +- **Telemetry**: cloudevents in `src/telemetry/events/` cover API routes, dialectic, dream, deletion, reconciliation, representation, and per-call LLM accounting (`llm.py` — `LLMCallCompletedEvent` fires once per provider hit with full cost-attribution context). High-volume events are sampled deterministically per `run_id` via `TelemetrySettings.HIGH_VOLUME_SAMPLE_RATE`. ### Project Structure @@ -192,7 +194,8 @@ src/ ├── dependencies.py # FastAPI DI (tracked_db, etc.) ├── exceptions.py # Custom exception types (HonchoException + subclasses) ├── security.py # JWT authentication -├── embedding_client.py # Embedding provider client +├── embedding_client.py # Embedding provider client (configurable dimensions +│ # via EMBEDDING_MODEL_CONFIG__DIMENSIONS_MODE) ├── schemas/ # Pydantic schemas │ ├── api.py # Public API request/response schemas │ ├── configuration.py # Per-resource configuration schemas diff --git a/README.md b/README.md index 140104b6..3aa3810a 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ --- -![Static Badge](https://img.shields.io/badge/Server-3.0.6-blue) +![Static Badge](https://img.shields.io/badge/Server-3.0.7-blue) [![PyPI version](https://img.shields.io/pypi/v/honcho-ai.svg)](https://pypi.org/project/honcho-ai/) [![NPM version](https://img.shields.io/npm/v/@honcho-ai/sdk.svg)](https://npmjs.org/package/@honcho-ai/sdk) [![Discord](https://img.shields.io/discord/1016845111637839922?style=flat&logo=discord&logoColor=23ffffff&label=Plastic%20Labs&labelColor=235865F2)](https://discord.gg/honcho) @@ -43,21 +43,21 @@ The Honcho project is split between several repositories, with this one hosting ## Start Here -| I want to... | Path | Get started | -|---|---|---| +| I want to... | Path | Get started | +| -------------------------------------- | ---------------------------------------------------------- | ----------------------------- | | Give my coding agent persistent memory | Claude Code, OpenCode, OpenClaw, Hermes, or any MCP client | [Integrations](#integrations) | -| Add memory to my product | Python or TypeScript SDK | [Quickstart](#quickstart) | -| Self-host Honcho | Docker / local development | [Self-hosting](#self-hosting) | +| Add memory to my product | Python or TypeScript SDK | [Quickstart](#quickstart) | +| Self-host Honcho | Docker / local development | [Self-hosting](#self-hosting) | ## Why Honcho -| Capability | What it means | -|---|---| -| Reasoning-first memory | Extracts conclusions from conversations and events, not just matching chunks. | -| Peer-centric model | Tracks users, agents, groups, projects, and ideas as entities that change over time. | -| Multi-peer perspective | Models what one peer knows about another when configured. | -| Managed or self-hosted | Use `api.honcho.dev` or run the FastAPI server yourself. | -| Agent-tool integrations | MCP, Claude Code, OpenCode, OpenClaw, Hermes, Cursor-compatible clients. | +| Capability | What it means | +| ----------------------- | ------------------------------------------------------------------------------------ | +| Reasoning-first memory | Extracts conclusions from conversations and events, not just matching chunks. | +| Peer-centric model | Tracks users, agents, groups, projects, and ideas as entities that change over time. | +| Multi-peer perspective | Models what one peer knows about another when configured. | +| Managed or self-hosted | Use `api.honcho.dev` or run the FastAPI server yourself. | +| Agent-tool integrations | MCP, Claude Code, OpenCode, OpenClaw, Hermes, Cursor-compatible clients. | ## The Honcho Loop @@ -139,7 +139,9 @@ await session.addMessages([ tutor.message("Absolutely. Send me your first problem!"), ]); -const answer = await alice.chat("What learning styles does the user respond to best?"); +const answer = await alice.chat( + "What learning styles does the user respond to best?", +); const context = await session.context({ summary: true, tokens: 10_000 }); const openai = new OpenAI(); @@ -153,15 +155,15 @@ const completion = await openai.chat.completions.create({ ## What Honcho Gives You -| Need | API | -|---|---| -| Save interaction history | `session.add_messages(...)` | -| Ask what Honcho knows about a peer | `peer.chat(...)` | -| Get prompt-ready context | `session.context(...).to_openai(...)` / `.to_anthropic(...)` | -| Hybrid search (BM25 + vector) | `peer.search(...)`, `session.search(...)`, `honcho.search(...)` | -| Low-latency static representations | `peer.representation(...)`, `session.representation(...)` | -| Import documents | `session.upload_file(...)` | -| Inspect background processing | `honcho.queue_status(...)` | +| Need | API | +| ---------------------------------- | --------------------------------------------------------------- | +| Save interaction history | `session.add_messages(...)` | +| Ask what Honcho knows about a peer | `peer.chat(...)` | +| Get prompt-ready context | `session.context(...).to_openai(...)` / `.to_anthropic(...)` | +| Hybrid search (BM25 + vector) | `peer.search(...)`, `session.search(...)`, `honcho.search(...)` | +| Low-latency static representations | `peer.representation(...)`, `session.representation(...)` | +| Import documents | `session.upload_file(...)` | +| Inspect background processing | `honcho.queue_status(...)` | See the full [SDK Reference](https://honcho.dev/docs/v3/documentation/reference/sdk) and [API Reference](https://honcho.dev/docs/v3/api-reference/introduction). diff --git a/docs/changelog/compatibility-guide.mdx b/docs/changelog/compatibility-guide.mdx index 17fd55c9..f12d3cee 100644 --- a/docs/changelog/compatibility-guide.mdx +++ b/docs/changelog/compatibility-guide.mdx @@ -10,14 +10,14 @@ This guide helps you match the right SDK version to your Honcho API version. New - **Latest:** v2.1.1 + **Latest:** v2.1.2 ```bash npm install @honcho-ai/sdk ``` - **Latest:** v2.1.1 + **Latest:** v2.1.2 ```bash pip install honcho-ai @@ -30,7 +30,8 @@ This guide helps you match the right SDK version to your Honcho API version. New | Honcho API Version | TypeScript SDK | Python SDK | |-------------------|---------------|------------| -| v3.0.6 (Current) | v2.1.1 | v2.1.1 | +| v3.0.7 (Current) | v2.1.2 | v2.1.2 | +| v3.0.6 | v2.1.1 | v2.1.1 | | v3.0.5 | v2.1.0 | v2.1.0 | | v3.0.4 | v2.1.0 | v2.1.0 | | v3.0.3 | v2.1.0 | v2.1.0 | diff --git a/docs/changelog/introduction.mdx b/docs/changelog/introduction.mdx index d2d31331..29c15fdf 100644 --- a/docs/changelog/introduction.mdx +++ b/docs/changelog/introduction.mdx @@ -27,7 +27,59 @@ Welcome to the Honcho changelog! This section documents all notable changes to t ### Honcho API and SDK Changelogs - + + ### Added + + - New `src/llm/` package as the single owner of provider runtime: clients, backends, history adapters, tool loop, request builder, credentials, and caching policy (#459) + - New cloudevent `LLMCallCompletedEvent` (`llm.call.completed`) fires once per provider hit with full cost-attribution context: transport/provider_label, model, token counts with cache breakdown, finish_reason, outcome, retry/fallback state, duration, tool-call shape, streaming flag, and agent correlation (`run_id` + iteration) (#637) + - `RepresentationCompletedEvent` now carries `total_input_tokens` for full-trace cost attribution; per-emitter `honcho_version` injection; deterministic per-`run_id` high-volume sampler via `TelemetrySettings.HIGH_VOLUME_SAMPLE_RATE` (#637) + - Deriver custom instructions: per-workspace/peer guidance threaded into the deriver prompt with a `MAX_CUSTOM_INSTRUCTIONS_TOKENS` budget (default 2000); deriver `MAX_INPUT_TOKENS` raised 23000 → 25000 (#609) + - Configurable embedding dimensions: `EMBEDDING_MODEL_CONFIG__DIMENSIONS_MODE` (`auto`/`always`/`never`) controls whether OpenAI `dimensions=` is forwarded (#678) + - New `honcho-cli` package — Python CLI for inspecting and managing peers, sessions, and configuration against a Honcho deployment (#424) + - `HONCHO_API_URL` env var support in the MCP Worker for self-hosted deployments (#575) + - API ID `max_length` increased from 100 to 512 across `WorkspaceCreate`, `PeerCreate`, and `SessionCreate` to align with the DB schema (#684) + - `AttemptPlan` dataclass pins per-retry provider selection across stream-final retries so streaming doesn't bounce back to primary after the tool loop has settled on fallback (#459) + - Gemini JSON-schema sanitizer for `function_declarations` — strips keywords Gemini's validator rejects while preserving semantics for other backends (#459) + + ### Changed + + - All LLM orchestration moved out of `src/utils/clients.py` into `src/llm/` with modules split by responsibility (#459) + - Default `ModelConfig` factories (deriver, summary, dreamer specialists, dialectic levels) normalized with no extra parameters set by default; operators add transport/thinking overrides explicitly (#459) + - OpenAI reasoning-model routing widened to cover `gpt-5.x` and `o1/o3/o4` — these models receive `max_completion_tokens` instead of `max_tokens` (#459) + - Peer card prompts reframed as stable identity markers; induction specialist now opts out of peer card writes so only deduction touches the card (#686) + - Vector store queries no longer fetch embedding vectors — only document metadata is returned, reducing payload size and DB load (pgvector, lancedb, turbopuffer) (#682) + - Langfuse trace metadata now includes `namespace`, `model`, and `provider` so traces can be filtered by deployment slice (#565) + - Deriver: model-aware tokenizer (replaces the previously hardcoded encoding) and explicit guard on empty message content (#647) + - Dialectic level defaults now merge correctly with per-level overrides (#656) + - Default dialectic tool choice switched to `auto` (#630) + - Vector sync given a substantial retry budget to tolerate transient embedding provider outages (#604) + - `AgentToolConclusionsDeletedEvent` payload now carries `levels` (#612) + - Turbopuffer: `InternalServerError` caught and surfaced as a warning rather than a hard failure; vector store sync errors downgraded to warnings (#561) + + ### Fixed + + - `reverse` query parameter is now honored on the v3 workspace list, peer list, workspace-scoped session list, and peer-scoped session list. Honcho SDKs at 2.1.0+ were already sending `reverse=true` for these routes but the server silently ignored it. Ties on `created_at` now fall back to the internal nanoid `id` for stable ordering across pages (#685) + - LLM client factories now receive `base_url` from `LLMSettings` for default providers — operators pointing at OpenAI-compatible proxies via `LLM__OPENAI_BASE_URL` were previously ignored on the default path (#643, fixes #641) + - Internal N+1 query in dialectic agent tool execution — collapsed per-iteration DB lookups into a single fetch (#652) + - Dreamer threshold and time-guard semantics: count filter now includes only `documents.level == 'explicit'` (was inflating threshold via dreamer-created levels and creating a feedback loop); `last_dream_at` write relocated from enqueue to process so duplicate enqueues or failed runs no longer reset the 8-hour time guard (#573) + - Deriver: blank observations are filtered out before embedding (previously triggered noisy embedding calls and persisted empty rows) (#615) + - Surprisal module: filter format corrected from `{"level": levels}` to `{"level": {"in": levels}}` — the prior call silently returned 0 results and made the entire Surprisal phase of the Dream cycle a no-op (#581, fixes #559) + - Removed hardcoded `stop_sequences` override from Deriver `ModelConfig` (was clobbering operator-configured stop sequences) (#587) + - Embedding client: `embed()` now wraps single-string input in an array, restoring compatibility with OpenAI-compatible third-party providers that reject scalar input (#586) + - Docker Compose: deriver service startup gated on the API service healthcheck — prevents races where the deriver starts before the API has run migrations (#689) + - Docker image: `HEALTHCHECK` directive removed from the shared base image; service-level health checks now belong in each service's own configuration (#530) + - Removed strict parameter validation for thinking params on Anthropic and OpenAI transports — was rejecting valid per-transport configs (#686) + - Stream-final retries pin to the `AttemptPlan` that succeeded rather than re-running provider selection through the outer `current_attempt` ContextVar (#459) + - Gemini `cached_content` reuse keys now include `system_instruction` and `tool_config` so cache hits don't cross configurations (#459) + - CrewAI example updated for the latest CrewAI protocol (#631) + + ### Removed + + - `src/utils/clients.py` deleted; its responsibilities are split across `src/llm/registry.py`, `src/llm/credentials.py`, and the backend-specific modules (#459) + - `HEALTHCHECK` directive from the shared Docker image (#530) + + + ### Changed - Tightened transaction scopes across search, agent tools, queue manager, and webhook delivery to minimize DB connection hold time during external operations (#525) @@ -558,7 +610,17 @@ Welcome to the Honcho changelog! This section documents all notable changes to t [Python SDK](https://pypi.org/project/honcho-ai/) - + + ### Added + + - `page`, `size`, and `reverse` pagination parameters on `Honcho.workspaces()` and `HonchoAio.workspaces()`, closing the gap from 2.1.0 which added these to other list methods but not to `workspaces()`. Honoring `reverse` on the workspace/peer/session list routes also requires a Honcho server with the matching API fix; older servers silently ignore the parameter. + - `peers` parameter on `Honcho.session()` and `HonchoAio.session()` — attach peers to a session at creation time instead of needing a follow-up `session.add_peers()` call. Accepts the same shapes as `Session.add_peers` (peer ID string, `Peer` object, list of either, or tuples with `SessionPeerConfig`). + + ### Changed + + - `WorkspaceCreateParams`, `PeerCreateParams`, and `SessionCreateParams` now accept IDs up to 512 characters (was 100), matching the server-side schema change in Honcho v3.0.7. + + ### Fixed - Broadened HTTP retry logic to cover `httpx.NetworkError` and `httpx.RemoteProtocolError` in addition to `httpx.TimeoutException` and `httpx.ConnectError`, improving resilience against transient network failures @@ -700,7 +762,20 @@ Welcome to the Honcho changelog! This section documents all notable changes to t [TypeScript SDK](https://www.npmjs.com/package/@honcho-ai/sdk) - + + ### Added + + - `peers` option on `Honcho.session()` — attach peers to a session at creation time instead of needing a follow-up `session.addPeers()` call. Accepts the same `PeerAddition` shape as `session.addPeers()` (peer ID strings, `Peer` objects, arrays of either, or a record with per-peer `observe_me`/`observe_others` config). + + ### Changed + + - ID validation in `validation.ts` now accepts workspace, peer, and session IDs up to 512 characters (was 100), matching the server-side schema change in Honcho v3.0.7. + + ### Fixed + + - `Honcho.workspaces()` now actually forwards the `reverse` option to the server. The 2.1.0 changelog listed `workspaces()` among the list methods that gained `reverse`, but `client.ts` was missing the field on the params type and request builder, so the option was silently dropped. Honoring `reverse` on the workspace/peer/session list routes also requires a Honcho server with the matching API fix; older servers silently ignore the parameter. + + ### Fixed - Broadened fetch error retry logic to catch all `TypeError` network failures (connection resets, DNS errors, etc.) instead of only those with `'fetch'` in the message, improving resilience across runtimes (Node, Bun, browsers) diff --git a/docs/docs.json b/docs/docs.json index 6287bf44..5ccb4166 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -24,7 +24,7 @@ "navigation": { "versions": [ { - "version": "v3.0.6", + "version": "v3.0.7", "api": { "openapi": ["v3/openapi.json"] }, diff --git a/docs/v3/openapi.json b/docs/v3/openapi.json index 161cafc5..adcd9d29 100644 --- a/docs/v3/openapi.json +++ b/docs/v3/openapi.json @@ -9,11 +9,7 @@ "url": "https://honcho.dev/", "email": "hello@plasticlabs.ai" }, - "license": { - "name": "GNU Affero General Public License v3.0", - "url": "https://github.com/plastic-labs/honcho/blob/main/LICENSE" - }, - "version": "3.0.3" + "version": "3.0.7" }, "servers": [ { @@ -48,9 +44,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Workspace" - } + "schema": { "$ref": "#/components/schemas/Workspace" } } } }, @@ -58,19 +52,12 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, - "security": [ - { - "HTTPBearer": [] - }, - {} - ] + "security": [{ "HTTPBearer": [] }] } }, "/v3/workspaces/list": { @@ -79,13 +66,20 @@ "summary": "Get All Workspaces", "description": "Get all Workspaces, paginated with optional filters.", "operationId": "get_all_workspaces_v3_workspaces_list_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ + { + "name": "reverse", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Whether to reverse the order of results", + "default": false, + "title": "Reverse" + }, + "description": "Whether to reverse the order of results" + }, { "name": "page", "in": "query", @@ -99,25 +93,6 @@ }, "description": "Page number" }, - { - "name": "reverse", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "Whether to reverse the order of results", - "default": false, - "title": "Reverse" - }, - "description": "Whether to reverse the order of results" - }, { "name": "size", "in": "query", @@ -138,12 +113,8 @@ "application/json": { "schema": { "anyOf": [ - { - "$ref": "#/components/schemas/WorkspaceGet" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/WorkspaceGet" }, + { "type": "null" } ], "description": "Filtering and pagination options for the workspaces list", "title": "Options" @@ -156,9 +127,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Page_Workspace_" - } + "schema": { "$ref": "#/components/schemas/Page_Workspace_" } } } }, @@ -166,9 +135,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -181,21 +148,13 @@ "summary": "Update Workspace", "description": "Update Workspace metadata and/or configuration.", "operationId": "update_workspace_v3_workspaces__workspace_id__put", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } } ], "requestBody": { @@ -214,9 +173,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Workspace" - } + "schema": { "$ref": "#/components/schemas/Workspace" } } } }, @@ -224,9 +181,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -237,39 +192,25 @@ "summary": "Delete Workspace", "description": "Delete a Workspace. This accepts the deletion request and processes it in the background,\npermanently deleting all peers, messages, conclusions, and other resources associated\nwith the workspace.\n\nReturns 409 Conflict if the workspace contains active sessions.\nDelete all sessions first, then delete the workspace.\n\nThis action cannot be undone.", "operationId": "delete_workspace_v3_workspaces__workspace_id__delete", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } } ], "responses": { "202": { "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } + "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -282,21 +223,13 @@ "summary": "Search Workspace", "description": "Search messages in a Workspace using optional filters. Use `limit` to control the number of\nresults returned.", "operationId": "search_workspace_v3_workspaces__workspace_id__search_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } } ], "requestBody": { @@ -317,9 +250,7 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Message" - }, + "items": { "$ref": "#/components/schemas/Message" }, "title": "Response Search Workspace V3 Workspaces Workspace Id Search Post" } } @@ -329,9 +260,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -344,35 +273,20 @@ "summary": "Get Queue Status", "description": "Get the processing queue status for a Workspace, optionally scoped to an observer, sender,\nand/or session.\n\nOnly tracks user-facing task types (representation, summary, dream).\nInternal infrastructure tasks (reconciler, webhook, deletion) are excluded.\nNote: completed counts reflect items since the last periodic queue cleanup,\nnot lifetime totals.", "operationId": "get_queue_status_v3_workspaces__workspace_id__queue_status_get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "observer_id", "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "Optional observer ID to filter by", "title": "Observer Id" }, @@ -383,14 +297,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "Optional sender ID to filter by", "title": "Sender Id" }, @@ -401,14 +308,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "Optional session ID to filter by", "title": "Session Id" }, @@ -420,9 +320,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/QueueStatus" - } + "schema": { "$ref": "#/components/schemas/QueueStatus" } } } }, @@ -430,9 +328,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -445,21 +341,13 @@ "summary": "Schedule Dream", "description": "Manually schedule a dream task for a specific collection.\n\nThis endpoint bypasses all automatic dream conditions (document threshold,\nminimum hours between dreams) and schedules the dream task for a future execution.\n\nCurrently this endpoint only supports scheduling immediate dreams. In the future,\nusers may pass a cron-style expression to schedule dreams at specific times.", "operationId": "schedule_dream_v3_workspaces__workspace_id__schedule_dream_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } } ], "requestBody": { @@ -474,16 +362,12 @@ } }, "responses": { - "204": { - "description": "Successful Response" - }, + "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -496,35 +380,20 @@ "summary": "Get Peers", "description": "Get all Peers for a Workspace, paginated with optional filters.", "operationId": "get_peers_v3_workspaces__workspace_id__peers_list_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "reverse", "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "type": "boolean", "description": "Whether to reverse the order of results", "default": false, "title": "Reverse" @@ -564,12 +433,8 @@ "application/json": { "schema": { "anyOf": [ - { - "$ref": "#/components/schemas/PeerGet" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/PeerGet" }, + { "type": "null" } ], "description": "Filtering options for the peers list", "title": "Options" @@ -582,9 +447,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Page_Peer_" - } + "schema": { "$ref": "#/components/schemas/Page_Peer_" } } } }, @@ -592,9 +455,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -607,21 +468,13 @@ "summary": "Get Or Create Peer", "description": "Get a Peer by ID or create a new Peer with the given ID.\n\nIf peer_id is provided as a query parameter, it uses that (must match JWT workspace_id).\nOtherwise, it uses the peer_id from the JWT.", "operationId": "get_or_create_peer_v3_workspaces__workspace_id__peers_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } } ], "requestBody": { @@ -640,9 +493,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Peer" - } + "schema": { "$ref": "#/components/schemas/Peer" } } } }, @@ -650,9 +501,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -665,30 +514,19 @@ "summary": "Update Peer", "description": "Update a Peer's metadata and/or configuration.", "operationId": "update_peer_v3_workspaces__workspace_id__peers__peer_id__put", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "peer_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Peer Id" - } + "schema": { "type": "string", "title": "Peer Id" } } ], "requestBody": { @@ -707,9 +545,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Peer" - } + "schema": { "$ref": "#/components/schemas/Peer" } } } }, @@ -717,9 +553,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -732,44 +566,26 @@ "summary": "Get Sessions For Peer", "description": "Get all Sessions for a Peer, paginated with optional filters.", "operationId": "get_sessions_for_peer_v3_workspaces__workspace_id__peers__peer_id__sessions_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "peer_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Peer Id" - } + "schema": { "type": "string", "title": "Peer Id" } }, { "name": "reverse", "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "type": "boolean", "description": "Whether to reverse the order of results", "default": false, "title": "Reverse" @@ -809,12 +625,8 @@ "application/json": { "schema": { "anyOf": [ - { - "$ref": "#/components/schemas/SessionGet" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/SessionGet" }, + { "type": "null" } ], "description": "Filtering options for the sessions list", "title": "Options" @@ -827,9 +639,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Page_Session_" - } + "schema": { "$ref": "#/components/schemas/Page_Session_" } } } }, @@ -837,9 +647,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -849,42 +657,29 @@ "/v3/workspaces/{workspace_id}/peers/{peer_id}/chat": { "post": { "tags": ["peers"], - "summary": "Query a Peer's representation using natural language", + "summary": "Chat", "description": "Query a Peer's representation using natural language. Performs agentic search and reasoning to comprehensively\nanswer the query based on all latent knowledge gathered about the peer from their messages and conclusions.", "operationId": "chat_v3_workspaces__workspace_id__peers__peer_id__chat_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "peer_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Peer Id" - } + "schema": { "type": "string", "title": "Peer Id" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/DialecticOptions" - } + "schema": { "$ref": "#/components/schemas/DialecticOptions" } } } }, @@ -896,14 +691,7 @@ "schema": { "properties": { "content": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Content" } }, @@ -919,9 +707,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -934,30 +720,19 @@ "summary": "Get Representation", "description": "Get a curated subset of a Peer's Representation. A Representation is always a subset of the total\nknowledge about the Peer. The subset can be scoped and filtered in various ways.\n\n\nIf a session_id is provided in the body, we get the Representation of the Peer scoped to that Session.\nIf a target is provided, we get the Representation of the target from the perspective of the Peer.\nIf no target is provided, we get the omniscient Honcho Representation of the Peer.", "operationId": "get_representation_v3_workspaces__workspace_id__peers__peer_id__representation_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "peer_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Peer Id" - } + "schema": { "type": "string", "title": "Peer Id" } } ], "requestBody": { @@ -986,9 +761,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1001,21 +774,13 @@ "summary": "Get Peer Card", "description": "Get a peer card for a specific peer relationship.\n\nReturns the peer card that the observer peer has for the target peer if it exists.\nIf no target is specified, returns the observer's own peer card.", "operationId": "get_peer_card_v3_workspaces__workspace_id__peers__peer_id__card_get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "peer_id", @@ -1033,14 +798,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "Optional target peer to retrieve a card for, from the observer's perspective. If not provided, returns the observer's own card", "title": "Target" }, @@ -1052,9 +810,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/PeerCardResponse" - } + "schema": { "$ref": "#/components/schemas/PeerCardResponse" } } } }, @@ -1062,9 +818,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1075,21 +829,13 @@ "summary": "Set Peer Card", "description": "Set a peer card for a specific peer relationship.\n\nSets the peer card that the observer peer has for the target peer.\nIf no target is specified, sets the observer's own peer card.", "operationId": "set_peer_card_v3_workspaces__workspace_id__peers__peer_id__card_put", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "peer_id", @@ -1107,14 +853,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "Optional target peer to set a card for, from the observer's perspective. If not provided, sets the observer's own card", "title": "Target" }, @@ -1137,9 +876,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/PeerCardResponse" - } + "schema": { "$ref": "#/components/schemas/PeerCardResponse" } } } }, @@ -1147,9 +884,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1162,21 +897,13 @@ "summary": "Get Peer Context", "description": "Get context for a peer, including their representation and peer card.\n\nThis endpoint returns a curated subset of the representation and peer card for a peer.\nIf a target is specified, returns the context for the target from the\nobserver peer's perspective. If no target is specified, returns the\npeer's own context (self-observation).\n\nThis is useful for getting all the context needed about a peer without\nmaking multiple API calls.", "operationId": "get_peer_context_v3_workspaces__workspace_id__peers__peer_id__context_get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "peer_id", @@ -1194,14 +921,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "Optional target peer to get context for, from the observer's perspective. If not provided, returns the observer's own context (self-observation)", "title": "Target" }, @@ -1212,14 +932,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "Optional query to curate the representation around semantic search results", "title": "Search Query" }, @@ -1231,14 +944,8 @@ "required": false, "schema": { "anyOf": [ - { - "type": "integer", - "maximum": 100, - "minimum": 1 - }, - { - "type": "null" - } + { "type": "integer", "maximum": 100, "minimum": 1 }, + { "type": "null" } ], "description": "Only used if `search_query` is provided. Number of semantic-search-retrieved conclusions to include", "title": "Search Top K" @@ -1251,14 +958,8 @@ "required": false, "schema": { "anyOf": [ - { - "type": "number", - "maximum": 1.0, - "minimum": 0.0 - }, - { - "type": "null" - } + { "type": "number", "maximum": 1.0, "minimum": 0.0 }, + { "type": "null" } ], "description": "Only used if `search_query` is provided. Maximum distance for semantically relevant conclusions", "title": "Search Max Distance" @@ -1283,14 +984,8 @@ "required": false, "schema": { "anyOf": [ - { - "type": "integer", - "maximum": 100, - "minimum": 1 - }, - { - "type": "null" - } + { "type": "integer", "maximum": 100, "minimum": 1 }, + { "type": "null" } ], "description": "Maximum number of conclusions to include in the representation", "title": "Max Conclusions" @@ -1303,9 +998,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/PeerContext" - } + "schema": { "$ref": "#/components/schemas/PeerContext" } } } }, @@ -1313,9 +1006,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1328,30 +1019,19 @@ "summary": "Search Peer", "description": "Search a Peer's messages, optionally filtered by various criteria.", "operationId": "search_peer_v3_workspaces__workspace_id__peers__peer_id__search_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "peer_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Peer Id" - } + "schema": { "type": "string", "title": "Peer Id" } } ], "requestBody": { @@ -1372,9 +1052,7 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Message" - }, + "items": { "$ref": "#/components/schemas/Message" }, "title": "Response Search Peer V3 Workspaces Workspace Id Peers Peer Id Search Post" } } @@ -1384,9 +1062,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1399,35 +1075,20 @@ "summary": "Get Sessions", "description": "Get all Sessions for a Workspace, paginated with optional filters.", "operationId": "get_sessions_v3_workspaces__workspace_id__sessions_list_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "reverse", "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "type": "boolean", "description": "Whether to reverse the order of results", "default": false, "title": "Reverse" @@ -1467,12 +1128,8 @@ "application/json": { "schema": { "anyOf": [ - { - "$ref": "#/components/schemas/SessionGet" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/SessionGet" }, + { "type": "null" } ], "description": "Filtering and pagination options for the sessions list", "title": "Options" @@ -1485,9 +1142,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Page_Session_" - } + "schema": { "$ref": "#/components/schemas/Page_Session_" } } } }, @@ -1495,9 +1150,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1510,21 +1163,13 @@ "summary": "Get Or Create Session", "description": "Get a Session by ID or create a new Session with the given ID.\n\nIf Session ID is provided as a parameter, it verifies the Session is in the Workspace.\nOtherwise, it uses the session_id from the JWT for verification.", "operationId": "get_or_create_session_v3_workspaces__workspace_id__sessions_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } } ], "requestBody": { @@ -1543,9 +1188,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Session" - } + "schema": { "$ref": "#/components/schemas/Session" } } } }, @@ -1553,9 +1196,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1568,30 +1209,19 @@ "summary": "Update Session", "description": "Update a Session's metadata and/or configuration.", "operationId": "update_session_v3_workspaces__workspace_id__sessions__session_id__put", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } } ], "requestBody": { @@ -1610,9 +1240,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Session" - } + "schema": { "$ref": "#/components/schemas/Session" } } } }, @@ -1620,9 +1248,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1633,48 +1259,31 @@ "summary": "Delete Session", "description": "Delete a Session and all associated messages.\n\nThe Session is marked as inactive immediately and returns 202 Accepted. The actual\ndeletion of all related data happens asynchronously via the queue with retry support.\n\nThis action cannot be undone.", "operationId": "delete_session_v3_workspaces__workspace_id__sessions__session_id__delete", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } } ], "responses": { "202": { "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } + "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1687,44 +1296,26 @@ "summary": "Clone Session", "description": "Clone a Session, optionally up to a specific message ID.", "operationId": "clone_session_v3_workspaces__workspace_id__sessions__session_id__clone_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } }, { "name": "message_id", "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "Message ID to cut off the clone at", "title": "Message Id" }, @@ -1736,9 +1327,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Session" - } + "schema": { "$ref": "#/components/schemas/Session" } } } }, @@ -1746,9 +1335,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1761,30 +1348,19 @@ "summary": "Add Peers To Session", "description": "Add Peers to a Session. If a Peer does not yet exist, it will be created automatically.", "operationId": "add_peers_to_session_v3_workspaces__workspace_id__sessions__session_id__peers_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } } ], "requestBody": { @@ -1807,9 +1383,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Session" - } + "schema": { "$ref": "#/components/schemas/Session" } } } }, @@ -1817,9 +1391,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1830,30 +1402,19 @@ "summary": "Set Session Peers", "description": "Set the Peers in a Session. If a Peer does not yet exist, it will be created automatically.\n\nThis will fully replace the current set of Peers in the Session.", "operationId": "set_session_peers_v3_workspaces__workspace_id__sessions__session_id__peers_put", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } } ], "requestBody": { @@ -1876,9 +1437,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Session" - } + "schema": { "$ref": "#/components/schemas/Session" } } } }, @@ -1886,9 +1445,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1899,30 +1456,19 @@ "summary": "Remove Peers From Session", "description": "Remove Peers by ID from a Session.", "operationId": "remove_peers_from_session_v3_workspaces__workspace_id__sessions__session_id__peers_delete", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } } ], "requestBody": { @@ -1931,9 +1477,7 @@ "application/json": { "schema": { "type": "array", - "items": { - "type": "string" - }, + "items": { "type": "string" }, "description": "List of peer IDs to remove from the session", "title": "Peers" } @@ -1945,9 +1489,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Session" - } + "schema": { "$ref": "#/components/schemas/Session" } } } }, @@ -1955,9 +1497,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -1968,30 +1508,19 @@ "summary": "Get Session Peers", "description": "Get all Peers in a Session. Results are paginated.", "operationId": "get_session_peers_v3_workspaces__workspace_id__sessions__session_id__peers_get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } }, { "name": "page", @@ -2026,9 +1555,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Page_Peer_" - } + "schema": { "$ref": "#/components/schemas/Page_Peer_" } } } }, @@ -2036,9 +1563,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2051,39 +1576,25 @@ "summary": "Get Peer Config", "description": "Get the configuration for a Peer in a Session.", "operationId": "get_peer_config_v3_workspaces__workspace_id__sessions__session_id__peers__peer_id__config_get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } }, { "name": "peer_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Peer Id" - } + "schema": { "type": "string", "title": "Peer Id" } } ], "responses": { @@ -2091,9 +1602,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/SessionPeerConfig" - } + "schema": { "$ref": "#/components/schemas/SessionPeerConfig" } } } }, @@ -2101,9 +1610,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2114,39 +1621,25 @@ "summary": "Set Peer Config", "description": "Set the configuration for a Peer in a Session.", "operationId": "set_peer_config_v3_workspaces__workspace_id__sessions__session_id__peers__peer_id__config_put", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } }, { "name": "peer_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Peer Id" - } + "schema": { "type": "string", "title": "Peer Id" } } ], "requestBody": { @@ -2161,16 +1654,12 @@ } }, "responses": { - "204": { - "description": "Successful Response" - }, + "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2183,30 +1672,19 @@ "summary": "Get Session Context", "description": "Produce a context object from the Session. The caller provides an optional token limit which the entire context must fit into.\nIf not provided, the context will be exhaustive (within configured max tokens). To do this, we allocate 40% of the token limit\nto the summary, and 60% to recent messages -- as many as can fit. Note that the summary will usually take up less space than\nthis. If the caller does not want a summary, we allocate all the tokens to recent messages.", "operationId": "get_session_context_v3_workspaces__workspace_id__sessions__session_id__context_get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } }, { "name": "tokens", @@ -2214,13 +1692,8 @@ "required": false, "schema": { "anyOf": [ - { - "type": "integer", - "maximum": 100000 - }, - { - "type": "null" - } + { "type": "integer", "maximum": 100000 }, + { "type": "null" } ], "description": "Number of tokens to use for the context. Includes summary if set to true. Includes representation and peer card if they are included in the response. If not provided, the context will be exhaustive (within 100000 tokens)", "title": "Tokens" @@ -2232,14 +1705,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "A query string used to fetch semantically relevant conclusions", "title": "Search Query" }, @@ -2262,14 +1728,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "The target of the perspective. If given without `peer_perspective`, will get the Honcho-level representation and peer card for this peer. If given with `peer_perspective`, will get the representation and card for this peer *from the perspective of that peer*.", "title": "Peer Target" }, @@ -2280,14 +1739,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "A peer to get context for. If given, response will attempt to include representation and card from the perspective of that peer. Must be provided with `peer_target`.", "title": "Peer Perspective" }, @@ -2311,14 +1763,8 @@ "required": false, "schema": { "anyOf": [ - { - "type": "integer", - "maximum": 100, - "minimum": 1 - }, - { - "type": "null" - } + { "type": "integer", "maximum": 100, "minimum": 1 }, + { "type": "null" } ], "description": "Only used if `search_query` is provided. The number of semantic-search-retrieved conclusions to include in the representation", "title": "Search Top K" @@ -2331,14 +1777,8 @@ "required": false, "schema": { "anyOf": [ - { - "type": "number", - "maximum": 1.0, - "minimum": 0.0 - }, - { - "type": "null" - } + { "type": "number", "maximum": 1.0, "minimum": 0.0 }, + { "type": "null" } ], "description": "Only used if `search_query` is provided. The maximum distance to search for semantically relevant conclusions", "title": "Search Max Distance" @@ -2363,14 +1803,8 @@ "required": false, "schema": { "anyOf": [ - { - "type": "integer", - "maximum": 100, - "minimum": 1 - }, - { - "type": "null" - } + { "type": "integer", "maximum": 100, "minimum": 1 }, + { "type": "null" } ], "description": "Only used if `search_query` is provided. The maximum number of conclusions to include in the representation", "title": "Max Conclusions" @@ -2383,9 +1817,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/SessionContext" - } + "schema": { "$ref": "#/components/schemas/SessionContext" } } } }, @@ -2393,9 +1825,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2408,30 +1838,19 @@ "summary": "Get Session Summaries", "description": "Get available summaries for a Session.\n\nReturns both short and long summaries if available, including metadata like\nthe message ID they cover up to, creation timestamp, and token count.", "operationId": "get_session_summaries_v3_workspaces__workspace_id__sessions__session_id__summaries_get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } } ], "responses": { @@ -2439,9 +1858,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/SessionSummaries" - } + "schema": { "$ref": "#/components/schemas/SessionSummaries" } } } }, @@ -2449,9 +1866,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2464,30 +1879,19 @@ "summary": "Search Session", "description": "Search a Session with optional filters. Use `limit` to control the number of results returned.", "operationId": "search_session_v3_workspaces__workspace_id__sessions__session_id__search_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } } ], "requestBody": { @@ -2508,9 +1912,7 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Message" - }, + "items": { "$ref": "#/components/schemas/Message" }, "title": "Response Search Session V3 Workspaces Workspace Id Sessions Session Id Search Post" } } @@ -2520,9 +1922,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2535,39 +1935,26 @@ "summary": "Create Messages For Session", "description": "Add new message(s) to a session.", "operationId": "create_messages_for_session_v3_workspaces__workspace_id__sessions__session_id__messages_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/MessageBatchCreate" - } + "schema": { "$ref": "#/components/schemas/MessageBatchCreate" } } } }, @@ -2578,9 +1965,7 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Message" - }, + "items": { "$ref": "#/components/schemas/Message" }, "title": "Response Create Messages For Session V3 Workspaces Workspace Id Sessions Session Id Messages Post" } } @@ -2590,9 +1975,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2605,30 +1988,19 @@ "summary": "Create Messages With File", "description": "Create messages from uploaded files. Files are converted to text and split into multiple messages.", "operationId": "create_messages_with_file_v3_workspaces__workspace_id__sessions__session_id__messages_upload_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } } ], "requestBody": { @@ -2648,9 +2020,7 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Message" - }, + "items": { "$ref": "#/components/schemas/Message" }, "title": "Response Create Messages With File V3 Workspaces Workspace Id Sessions Session Id Messages Upload Post" } } @@ -2660,9 +2030,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2675,44 +2043,26 @@ "summary": "Get Messages", "description": "Get all messages for a Session with optional filters. Results are paginated.", "operationId": "get_messages_v3_workspaces__workspace_id__sessions__session_id__messages_list_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } }, { "name": "reverse", "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "description": "Whether to reverse the order of results", "default": false, "title": "Reverse" @@ -2752,12 +2102,8 @@ "application/json": { "schema": { "anyOf": [ - { - "$ref": "#/components/schemas/MessageGet" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/MessageGet" }, + { "type": "null" } ], "description": "Filtering options for the message list", "title": "Options" @@ -2770,9 +2116,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Page_Message_" - } + "schema": { "$ref": "#/components/schemas/Page_Message_" } } } }, @@ -2780,9 +2124,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2795,39 +2137,25 @@ "summary": "Get Message", "description": "Get a single message by ID from a Session.", "operationId": "get_message_v3_workspaces__workspace_id__sessions__session_id__messages__message_id__get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } }, { "name": "message_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Message Id" - } + "schema": { "type": "string", "title": "Message Id" } } ], "responses": { @@ -2835,9 +2163,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Message" - } + "schema": { "$ref": "#/components/schemas/Message" } } } }, @@ -2845,9 +2171,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2858,39 +2182,25 @@ "summary": "Update Message", "description": "Update the metadata of a message.\n\nThis will overwrite any existing metadata for the message.", "operationId": "update_message_v3_workspaces__workspace_id__sessions__session_id__messages__message_id__put", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "session_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Session Id" - } + "schema": { "type": "string", "title": "Session Id" } }, { "name": "message_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Message Id" - } + "schema": { "type": "string", "title": "Message Id" } } ], "requestBody": { @@ -2909,9 +2219,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Message" - } + "schema": { "$ref": "#/components/schemas/Message" } } } }, @@ -2919,9 +2227,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2934,21 +2240,13 @@ "summary": "Create Conclusions", "description": "Create one or more Conclusions.\n\nConclusions are logical certainties derived from interactions between Peers. They form the basis of a Peer's Representation.", "operationId": "create_conclusions_v3_workspaces__workspace_id__conclusions_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } } ], "requestBody": { @@ -2969,9 +2267,7 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Conclusion" - }, + "items": { "$ref": "#/components/schemas/Conclusion" }, "title": "Response Create Conclusions V3 Workspaces Workspace Id Conclusions Post" } } @@ -2981,9 +2277,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -2996,35 +2290,20 @@ "summary": "List Conclusions", "description": "List Conclusions using optional filters, ordered by recency unless `reverse` is true. Results are paginated.", "operationId": "list_conclusions_v3_workspaces__workspace_id__conclusions_list_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "reverse", "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "description": "Whether to reverse the order of results", "default": false, "title": "Reverse" @@ -3064,12 +2343,8 @@ "application/json": { "schema": { "anyOf": [ - { - "$ref": "#/components/schemas/ConclusionGet" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/ConclusionGet" }, + { "type": "null" } ], "description": "Filtering options for the Conclusions list", "title": "Options" @@ -3082,9 +2357,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/Page_Conclusion_" - } + "schema": { "$ref": "#/components/schemas/Page_Conclusion_" } } } }, @@ -3092,9 +2365,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -3107,21 +2378,13 @@ "summary": "Query Conclusions", "description": "Query Conclusions using semantic search. Use `top_k` to control the number of results returned.", "operationId": "query_conclusions_v3_workspaces__workspace_id__conclusions_query_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } } ], "requestBody": { @@ -3142,9 +2405,7 @@ "application/json": { "schema": { "type": "array", - "items": { - "$ref": "#/components/schemas/Conclusion" - }, + "items": { "$ref": "#/components/schemas/Conclusion" }, "title": "Response Query Conclusions V3 Workspaces Workspace Id Conclusions Query Post" } } @@ -3154,9 +2415,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -3169,43 +2428,28 @@ "summary": "Delete Conclusion", "description": "Delete a single Conclusion by ID.\n\nThis action cannot be undone.", "operationId": "delete_conclusion_v3_workspaces__workspace_id__conclusions__conclusion_id__delete", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } + "schema": { "type": "string", "title": "Workspace Id" } }, { "name": "conclusion_id", "in": "path", "required": true, - "schema": { - "type": "string", - "title": "Conclusion Id" - } + "schema": { "type": "string", "title": "Conclusion Id" } } ], "responses": { - "204": { - "description": "Successful Response" - }, + "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -3218,26 +2462,14 @@ "summary": "Create Key", "description": "Create a new Key", "operationId": "create_key_v3_keys_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "ID of the workspace to scope the key to", "title": "Workspace Id" }, @@ -3248,14 +2480,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "ID of the peer to scope the key to", "title": "Peer Id" }, @@ -3266,14 +2491,7 @@ "in": "query", "required": false, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "description": "ID of the session to scope the key to", "title": "Session Id" }, @@ -3285,13 +2503,8 @@ "required": false, "schema": { "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } + { "type": "string", "format": "date-time" }, + { "type": "null" } ], "title": "Expires At" } @@ -3300,19 +2513,13 @@ "responses": { "200": { "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } + "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -3325,12 +2532,7 @@ "summary": "Get Or Create Webhook Endpoint", "description": "Get or create a webhook endpoint URL.", "operationId": "get_or_create_webhook_endpoint_v3_workspaces__workspace_id__webhooks_post", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", @@ -3360,9 +2562,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/WebhookEndpoint" - } + "schema": { "$ref": "#/components/schemas/WebhookEndpoint" } } } }, @@ -3370,9 +2570,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -3383,12 +2581,7 @@ "summary": "List Webhook Endpoints", "description": "List all webhook endpoints, optionally filtered by workspace.", "operationId": "list_webhook_endpoints_v3_workspaces__workspace_id__webhooks_get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", @@ -3444,9 +2637,7 @@ "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -3459,12 +2650,7 @@ "summary": "Delete Webhook Endpoint", "description": "Delete a specific webhook endpoint.", "operationId": "delete_webhook_endpoint_v3_workspaces__workspace_id__webhooks__endpoint_id__delete", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", @@ -3490,16 +2676,12 @@ } ], "responses": { - "204": { - "description": "Successful Response" - }, + "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } @@ -3512,12 +2694,7 @@ "summary": "Test Emit", "description": "Test publishing a webhook event.", "operationId": "test_emit_v3_workspaces__workspace_id__webhooks_test_get", - "security": [ - { - "HTTPBearer": [] - }, - {} - ], + "security": [{ "HTTPBearer": [] }], "parameters": [ { "name": "workspace_id", @@ -3534,24 +2711,31 @@ "responses": { "200": { "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } + "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } + "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } + }, + "/health": { + "get": { + "summary": "Health Check", + "description": "Health check endpoint for monitoring and container orchestration.", + "operationId": "health_check_health_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { "application/json": { "schema": {} } } + } + } + } } }, "components": { @@ -3563,41 +2747,17 @@ "contentMediaType": "application/octet-stream", "title": "File" }, - "peer_id": { - "type": "string", - "title": "Peer Id" - }, + "peer_id": { "type": "string", "title": "Peer Id" }, "metadata": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Metadata" }, "configuration": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Configuration" }, "created_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Created At" } }, @@ -3607,14 +2767,8 @@ }, "Conclusion": { "properties": { - "id": { - "type": "string", - "title": "Id" - }, - "content": { - "type": "string", - "title": "Content" - }, + "id": { "type": "string", "title": "Id" }, + "content": { "type": "string", "title": "Content" }, "observer_id": { "type": "string", "title": "Observer Id", @@ -3626,14 +2780,7 @@ "description": "The peer the conclusion is about" }, "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Session Id" }, "created_at": { @@ -3656,9 +2803,7 @@ "ConclusionBatchCreate": { "properties": { "conclusions": { - "items": { - "$ref": "#/components/schemas/ConclusionCreate" - }, + "items": { "$ref": "#/components/schemas/ConclusionCreate" }, "type": "array", "maxItems": 100, "minItems": 1, @@ -3689,14 +2834,7 @@ "description": "The peer the conclusion is about" }, "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Session Id", "description": "A session ID to store the conclusion in, if specified" } @@ -3710,13 +2848,8 @@ "properties": { "filters": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Filters" } @@ -3742,27 +2875,16 @@ }, "distance": { "anyOf": [ - { - "type": "number", - "maximum": 1.0, - "minimum": 0.0 - }, - { - "type": "null" - } + { "type": "number", "maximum": 1.0, "minimum": 0.0 }, + { "type": "null" } ], "title": "Distance", "description": "Maximum cosine distance threshold for results" }, "filters": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Filters", "description": "Additional filters to apply" @@ -3776,26 +2898,12 @@ "DialecticOptions": { "properties": { "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Session Id", "description": "ID of the session to scope the representation to" }, "target": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Target", "description": "Optional peer to get the representation for, from the perspective of this peer" }, @@ -3806,11 +2914,7 @@ "title": "Query", "description": "Dialectic API Prompt" }, - "stream": { - "type": "boolean", - "title": "Stream", - "default": false - }, + "stream": { "type": "boolean", "title": "Stream", "default": false }, "reasoning_level": { "type": "string", "enum": ["minimal", "low", "medium", "high", "max"], @@ -3826,14 +2930,7 @@ "DreamConfiguration": { "properties": { "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "title": "Enabled", "description": "Whether to enable dream functionality. If reasoning is disabled, dreams will also be disabled and this setting will be ignored." } @@ -3850,9 +2947,7 @@ "HTTPValidationError": { "properties": { "detail": { - "items": { - "$ref": "#/components/schemas/ValidationError" - }, + "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } @@ -3862,22 +2957,10 @@ }, "Message": { "properties": { - "id": { - "type": "string", - "title": "Id" - }, - "content": { - "type": "string", - "title": "Content" - }, - "peer_id": { - "type": "string", - "title": "Peer Id" - }, - "session_id": { - "type": "string", - "title": "Session Id" - }, + "id": { "type": "string", "title": "Id" }, + "content": { "type": "string", "title": "Content" }, + "peer_id": { "type": "string", "title": "Peer Id" }, + "session_id": { "type": "string", "title": "Session Id" }, "metadata": { "additionalProperties": true, "type": "object", @@ -3888,14 +2971,8 @@ "format": "date-time", "title": "Created At" }, - "workspace_id": { - "type": "string", - "title": "Workspace Id" - }, - "token_count": { - "type": "integer", - "title": "Token Count" - } + "workspace_id": { "type": "string", "title": "Workspace Id" }, + "token_count": { "type": "integer", "title": "Token Count" } }, "type": "object", "required": [ @@ -3912,9 +2989,7 @@ "MessageBatchCreate": { "properties": { "messages": { - "items": { - "$ref": "#/components/schemas/MessageCreate" - }, + "items": { "$ref": "#/components/schemas/MessageCreate" }, "type": "array", "maxItems": 100, "minItems": 1, @@ -3930,12 +3005,8 @@ "properties": { "reasoning": { "anyOf": [ - { - "$ref": "#/components/schemas/ReasoningConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/ReasoningConfiguration" }, + { "type": "null" } ], "description": "Configuration for reasoning functionality." } @@ -3952,41 +3023,24 @@ "minLength": 0, "title": "Content" }, - "peer_id": { - "type": "string", - "title": "Peer Id" - }, + "peer_id": { "type": "string", "title": "Peer Id" }, "metadata": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Metadata" }, "configuration": { "anyOf": [ - { - "$ref": "#/components/schemas/MessageConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/MessageConfiguration" }, + { "type": "null" } ] }, "created_at": { "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } + { "type": "string", "format": "date-time" }, + { "type": "null" } ], "title": "Created At" } @@ -3999,13 +3053,8 @@ "properties": { "filters": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Filters" } @@ -4022,13 +3071,8 @@ }, "filters": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Filters", "description": "Filters to scope the search" @@ -4050,13 +3094,8 @@ "properties": { "metadata": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Metadata" } @@ -4067,32 +3106,14 @@ "Page_Conclusion_": { "properties": { "items": { - "items": { - "$ref": "#/components/schemas/Conclusion" - }, + "items": { "$ref": "#/components/schemas/Conclusion" }, "type": "array", "title": "Items" }, - "total": { - "type": "integer", - "minimum": 0.0, - "title": "Total" - }, - "page": { - "type": "integer", - "minimum": 1.0, - "title": "Page" - }, - "size": { - "type": "integer", - "minimum": 1.0, - "title": "Size" - }, - "pages": { - "type": "integer", - "minimum": 0.0, - "title": "Pages" - } + "total": { "type": "integer", "minimum": 0.0, "title": "Total" }, + "page": { "type": "integer", "minimum": 1.0, "title": "Page" }, + "size": { "type": "integer", "minimum": 1.0, "title": "Size" }, + "pages": { "type": "integer", "minimum": 0.0, "title": "Pages" } }, "type": "object", "required": ["items", "total", "page", "size", "pages"], @@ -4101,32 +3122,14 @@ "Page_Message_": { "properties": { "items": { - "items": { - "$ref": "#/components/schemas/Message" - }, + "items": { "$ref": "#/components/schemas/Message" }, "type": "array", "title": "Items" }, - "total": { - "type": "integer", - "minimum": 0.0, - "title": "Total" - }, - "page": { - "type": "integer", - "minimum": 1.0, - "title": "Page" - }, - "size": { - "type": "integer", - "minimum": 1.0, - "title": "Size" - }, - "pages": { - "type": "integer", - "minimum": 0.0, - "title": "Pages" - } + "total": { "type": "integer", "minimum": 0.0, "title": "Total" }, + "page": { "type": "integer", "minimum": 1.0, "title": "Page" }, + "size": { "type": "integer", "minimum": 1.0, "title": "Size" }, + "pages": { "type": "integer", "minimum": 0.0, "title": "Pages" } }, "type": "object", "required": ["items", "total", "page", "size", "pages"], @@ -4135,32 +3138,14 @@ "Page_Peer_": { "properties": { "items": { - "items": { - "$ref": "#/components/schemas/Peer" - }, + "items": { "$ref": "#/components/schemas/Peer" }, "type": "array", "title": "Items" }, - "total": { - "type": "integer", - "minimum": 0.0, - "title": "Total" - }, - "page": { - "type": "integer", - "minimum": 1.0, - "title": "Page" - }, - "size": { - "type": "integer", - "minimum": 1.0, - "title": "Size" - }, - "pages": { - "type": "integer", - "minimum": 0.0, - "title": "Pages" - } + "total": { "type": "integer", "minimum": 0.0, "title": "Total" }, + "page": { "type": "integer", "minimum": 1.0, "title": "Page" }, + "size": { "type": "integer", "minimum": 1.0, "title": "Size" }, + "pages": { "type": "integer", "minimum": 0.0, "title": "Pages" } }, "type": "object", "required": ["items", "total", "page", "size", "pages"], @@ -4169,32 +3154,14 @@ "Page_Session_": { "properties": { "items": { - "items": { - "$ref": "#/components/schemas/Session" - }, + "items": { "$ref": "#/components/schemas/Session" }, "type": "array", "title": "Items" }, - "total": { - "type": "integer", - "minimum": 0.0, - "title": "Total" - }, - "page": { - "type": "integer", - "minimum": 1.0, - "title": "Page" - }, - "size": { - "type": "integer", - "minimum": 1.0, - "title": "Size" - }, - "pages": { - "type": "integer", - "minimum": 0.0, - "title": "Pages" - } + "total": { "type": "integer", "minimum": 0.0, "title": "Total" }, + "page": { "type": "integer", "minimum": 1.0, "title": "Page" }, + "size": { "type": "integer", "minimum": 1.0, "title": "Size" }, + "pages": { "type": "integer", "minimum": 0.0, "title": "Pages" } }, "type": "object", "required": ["items", "total", "page", "size", "pages"], @@ -4203,32 +3170,14 @@ "Page_WebhookEndpoint_": { "properties": { "items": { - "items": { - "$ref": "#/components/schemas/WebhookEndpoint" - }, + "items": { "$ref": "#/components/schemas/WebhookEndpoint" }, "type": "array", "title": "Items" }, - "total": { - "type": "integer", - "minimum": 0.0, - "title": "Total" - }, - "page": { - "type": "integer", - "minimum": 1.0, - "title": "Page" - }, - "size": { - "type": "integer", - "minimum": 1.0, - "title": "Size" - }, - "pages": { - "type": "integer", - "minimum": 0.0, - "title": "Pages" - } + "total": { "type": "integer", "minimum": 0.0, "title": "Total" }, + "page": { "type": "integer", "minimum": 1.0, "title": "Page" }, + "size": { "type": "integer", "minimum": 1.0, "title": "Size" }, + "pages": { "type": "integer", "minimum": 0.0, "title": "Pages" } }, "type": "object", "required": ["items", "total", "page", "size", "pages"], @@ -4237,32 +3186,14 @@ "Page_Workspace_": { "properties": { "items": { - "items": { - "$ref": "#/components/schemas/Workspace" - }, + "items": { "$ref": "#/components/schemas/Workspace" }, "type": "array", "title": "Items" }, - "total": { - "type": "integer", - "minimum": 0.0, - "title": "Total" - }, - "page": { - "type": "integer", - "minimum": 1.0, - "title": "Page" - }, - "size": { - "type": "integer", - "minimum": 1.0, - "title": "Size" - }, - "pages": { - "type": "integer", - "minimum": 0.0, - "title": "Pages" - } + "total": { "type": "integer", "minimum": 0.0, "title": "Total" }, + "page": { "type": "integer", "minimum": 1.0, "title": "Page" }, + "size": { "type": "integer", "minimum": 1.0, "title": "Size" }, + "pages": { "type": "integer", "minimum": 0.0, "title": "Pages" } }, "type": "object", "required": ["items", "total", "page", "size", "pages"], @@ -4270,14 +3201,8 @@ }, "Peer": { "properties": { - "id": { - "type": "string", - "title": "Id" - }, - "workspace_id": { - "type": "string", - "title": "Workspace Id" - }, + "id": { "type": "string", "title": "Id" }, + "workspace_id": { "type": "string", "title": "Workspace Id" }, "created_at": { "type": "string", "format": "date-time", @@ -4301,26 +3226,12 @@ "PeerCardConfiguration": { "properties": { "use": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "title": "Use", "description": "Whether to use peer card related to this peer during reasoning process." }, "create": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "title": "Create", "description": "Whether to generate peer card based on content." } @@ -4332,15 +3243,8 @@ "properties": { "peer_card": { "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } + { "items": { "type": "string" }, "type": "array" }, + { "type": "null" } ], "title": "Peer Card", "description": "The peer card content, or None if not found" @@ -4352,9 +3256,7 @@ "PeerCardSet": { "properties": { "peer_card": { - "items": { - "type": "string" - }, + "items": { "type": "string" }, "type": "array", "title": "Peer Card", "description": "The peer card content to set" @@ -4377,28 +3279,14 @@ "description": "The ID of the target peer being observed" }, "representation": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Representation", "description": "A curated subset of the representation of the target peer from the observer's perspective" }, "peer_card": { "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } + { "items": { "type": "string" }, "type": "array" }, + { "type": "null" } ], "title": "Peer Card", "description": "The peer card for the target peer from the observer's perspective" @@ -4413,32 +3301,22 @@ "properties": { "id": { "type": "string", - "maxLength": 100, + "maxLength": 512, "minLength": 1, "pattern": "^[a-zA-Z0-9_-]+$", "title": "Id" }, "metadata": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Metadata" }, "configuration": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Configuration" } @@ -4451,13 +3329,8 @@ "properties": { "filters": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Filters" } @@ -4468,91 +3341,45 @@ "PeerRepresentationGet": { "properties": { "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Session Id", "description": "Optional session ID within which to scope the representation" }, "target": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Target", "description": "Optional peer ID to get the representation for, from the perspective of this peer" }, "search_query": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Search Query", "description": "Optional input to curate the representation around semantic search results" }, "search_top_k": { "anyOf": [ - { - "type": "integer", - "maximum": 100.0, - "minimum": 1.0 - }, - { - "type": "null" - } + { "type": "integer", "maximum": 100.0, "minimum": 1.0 }, + { "type": "null" } ], "title": "Search Top K", "description": "Only used if `search_query` is provided. Number of semantic-search-retrieved conclusions to include in the representation" }, "search_max_distance": { "anyOf": [ - { - "type": "number", - "maximum": 1.0, - "minimum": 0.0 - }, - { - "type": "null" - } + { "type": "number", "maximum": 1.0, "minimum": 0.0 }, + { "type": "null" } ], "title": "Search Max Distance", "description": "Only used if `search_query` is provided. Maximum distance to search for semantically relevant conclusions" }, "include_most_frequent": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "title": "Include Most Frequent", "description": "Only used if `search_query` is provided. Whether to include the most frequent conclusions in the representation" }, "max_conclusions": { "anyOf": [ - { - "type": "integer", - "maximum": 100.0, - "minimum": 1.0 - }, - { - "type": "null" - } + { "type": "integer", "maximum": 100.0, "minimum": 1.0 }, + { "type": "null" } ], "title": "Max Conclusions", "description": "Only used if `search_query` is provided. Maximum number of conclusions to include in the representation", @@ -4566,25 +3393,15 @@ "properties": { "metadata": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Metadata" }, "configuration": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Configuration" } @@ -4622,9 +3439,7 @@ }, "type": "object" }, - { - "type": "null" - } + { "type": "null" } ], "title": "Sessions", "description": "Per-session status when not filtered by session" @@ -4643,28 +3458,14 @@ "ReasoningConfiguration": { "properties": { "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "title": "Enabled", "description": "Whether to enable reasoning functionality." }, "custom_instructions": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Custom Instructions", - "description": "TODO: currently unused. Custom instructions to use for the reasoning system on this workspace/session/message." + "description": "Optional custom instructions for the reasoning system on this workspace/session/message. Rejected if they exceed the deriver custom-instruction token cap." } }, "type": "object", @@ -4672,10 +3473,7 @@ }, "RepresentationResponse": { "properties": { - "representation": { - "type": "string", - "title": "Representation" - } + "representation": { "type": "string", "title": "Representation" } }, "type": "object", "required": ["representation"], @@ -4689,14 +3487,7 @@ "description": "Observer peer name" }, "observed": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Observed", "description": "Observed peer name (defaults to observer if not specified)" }, @@ -4705,14 +3496,7 @@ "description": "Type of dream to schedule" }, "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Session Id", "description": "Session ID to scope the dream to if specified" } @@ -4723,18 +3507,9 @@ }, "Session": { "properties": { - "id": { - "type": "string", - "title": "Id" - }, - "is_active": { - "type": "boolean", - "title": "Is Active" - }, - "workspace_id": { - "type": "string", - "title": "Workspace Id" - }, + "id": { "type": "string", "title": "Id" }, + "is_active": { "type": "boolean", "title": "Is Active" }, + "workspace_id": { "type": "string", "title": "Workspace Id" }, "metadata": { "additionalProperties": true, "type": "object", @@ -4759,45 +3534,29 @@ "properties": { "reasoning": { "anyOf": [ - { - "$ref": "#/components/schemas/ReasoningConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/ReasoningConfiguration" }, + { "type": "null" } ], "description": "Configuration for reasoning functionality." }, "peer_card": { "anyOf": [ - { - "$ref": "#/components/schemas/PeerCardConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/PeerCardConfiguration" }, + { "type": "null" } ], "description": "Configuration for peer card functionality. If reasoning is disabled, peer cards will also be disabled and these settings will be ignored." }, "summary": { "anyOf": [ - { - "$ref": "#/components/schemas/SummaryConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/SummaryConfiguration" }, + { "type": "null" } ], "description": "Configuration for summary functionality." }, "dream": { "anyOf": [ - { - "$ref": "#/components/schemas/DreamConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/DreamConfiguration" }, + { "type": "null" } ], "description": "Configuration for dream functionality. If reasoning is disabled, dreams will also be disabled and these settings will be ignored." } @@ -4809,51 +3568,28 @@ }, "SessionContext": { "properties": { - "id": { - "type": "string", - "title": "Id" - }, + "id": { "type": "string", "title": "Id" }, "messages": { - "items": { - "$ref": "#/components/schemas/Message" - }, + "items": { "$ref": "#/components/schemas/Message" }, "type": "array", "title": "Messages" }, "summary": { "anyOf": [ - { - "$ref": "#/components/schemas/Summary" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/Summary" }, + { "type": "null" } ], "description": "The summary if available" }, "peer_representation": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Peer Representation", "description": "A curated subset of a peer representation, if context is requested from a specific perspective" }, "peer_card": { "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } + { "items": { "type": "string" }, "type": "array" }, + { "type": "null" } ], "title": "Peer Card", "description": "The peer card, if context is requested from a specific perspective" @@ -4867,20 +3603,15 @@ "properties": { "id": { "type": "string", - "maxLength": 100, + "maxLength": 512, "minLength": 1, "pattern": "^[a-zA-Z0-9_-]+$", "title": "Id" }, "metadata": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Metadata" }, @@ -4892,20 +3623,14 @@ }, "type": "object" }, - { - "type": "null" - } + { "type": "null" } ], "title": "Peers" }, "configuration": { "anyOf": [ - { - "$ref": "#/components/schemas/SessionConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/SessionConfiguration" }, + { "type": "null" } ] } }, @@ -4917,13 +3642,8 @@ "properties": { "filters": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Filters" } @@ -4934,26 +3654,12 @@ "SessionPeerConfig": { "properties": { "observe_me": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "title": "Observe Me", "description": "Whether Honcho will use reasoning to form a representation of this peer" }, "observe_others": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "title": "Observe Others", "description": "Whether this peer should form a session-level theory-of-mind representation of other peers in the session" } @@ -4964,14 +3670,7 @@ "SessionQueueStatus": { "properties": { "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Session Id", "description": "Session ID if filtered by session" }, @@ -5008,29 +3707,18 @@ }, "SessionSummaries": { "properties": { - "id": { - "type": "string", - "title": "Id" - }, + "id": { "type": "string", "title": "Id" }, "short_summary": { "anyOf": [ - { - "$ref": "#/components/schemas/Summary" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/Summary" }, + { "type": "null" } ], "description": "The short summary if available" }, "long_summary": { "anyOf": [ - { - "$ref": "#/components/schemas/Summary" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/Summary" }, + { "type": "null" } ], "description": "The long summary if available" } @@ -5043,24 +3731,15 @@ "properties": { "metadata": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Metadata" }, "configuration": { "anyOf": [ - { - "$ref": "#/components/schemas/SessionConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/SessionConfiguration" }, + { "type": "null" } ] } }, @@ -5108,39 +3787,22 @@ "SummaryConfiguration": { "properties": { "enabled": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "boolean" }, { "type": "null" }], "title": "Enabled", "description": "Whether to enable summary functionality." }, "messages_per_short_summary": { "anyOf": [ - { - "type": "integer", - "minimum": 10.0 - }, - { - "type": "null" - } + { "type": "integer", "minimum": 10.0 }, + { "type": "null" } ], "title": "Messages Per Short Summary", "description": "Number of messages per short summary. Must be positive, greater than or equal to 10, and less than messages_per_long_summary." }, "messages_per_long_summary": { "anyOf": [ - { - "type": "integer", - "minimum": 20.0 - }, - { - "type": "null" - } + { "type": "integer", "minimum": 20.0 }, + { "type": "null" } ], "title": "Messages Per Long Summary", "description": "Number of messages per long summary. Must be positive, greater than or equal to 20, and greater than messages_per_short_summary." @@ -5152,34 +3814,14 @@ "ValidationError": { "properties": { "loc": { - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ] - }, + "items": { "anyOf": [{ "type": "string" }, { "type": "integer" }] }, "type": "array", "title": "Location" }, - "msg": { - "type": "string", - "title": "Message" - }, - "type": { - "type": "string", - "title": "Error Type" - }, - "input": { - "title": "Input" - }, - "ctx": { - "type": "object", - "title": "Context" - } + "msg": { "type": "string", "title": "Message" }, + "type": { "type": "string", "title": "Error Type" }, + "input": { "title": "Input" }, + "ctx": { "type": "object", "title": "Context" } }, "type": "object", "required": ["loc", "msg", "type"], @@ -5187,25 +3829,12 @@ }, "WebhookEndpoint": { "properties": { - "id": { - "type": "string", - "title": "Id" - }, + "id": { "type": "string", "title": "Id" }, "workspace_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], + "anyOf": [{ "type": "string" }, { "type": "null" }], "title": "Workspace Id" }, - "url": { - "type": "string", - "title": "Url" - }, + "url": { "type": "string", "title": "Url" }, "created_at": { "type": "string", "format": "date-time", @@ -5217,22 +3846,14 @@ "title": "WebhookEndpoint" }, "WebhookEndpointCreate": { - "properties": { - "url": { - "type": "string", - "title": "Url" - } - }, + "properties": { "url": { "type": "string", "title": "Url" } }, "type": "object", "required": ["url"], "title": "WebhookEndpointCreate" }, "Workspace": { "properties": { - "id": { - "type": "string", - "title": "Id" - }, + "id": { "type": "string", "title": "Id" }, "metadata": { "additionalProperties": true, "type": "object", @@ -5257,45 +3878,29 @@ "properties": { "reasoning": { "anyOf": [ - { - "$ref": "#/components/schemas/ReasoningConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/ReasoningConfiguration" }, + { "type": "null" } ], "description": "Configuration for reasoning functionality." }, "peer_card": { "anyOf": [ - { - "$ref": "#/components/schemas/PeerCardConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/PeerCardConfiguration" }, + { "type": "null" } ], "description": "Configuration for peer card functionality. If reasoning is disabled, peer cards will also be disabled and these settings will be ignored." }, "summary": { "anyOf": [ - { - "$ref": "#/components/schemas/SummaryConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/SummaryConfiguration" }, + { "type": "null" } ], "description": "Configuration for summary functionality." }, "dream": { "anyOf": [ - { - "$ref": "#/components/schemas/DreamConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/DreamConfiguration" }, + { "type": "null" } ], "description": "Configuration for dream functionality. If reasoning is disabled, dreams will also be disabled and these settings will be ignored." } @@ -5309,7 +3914,7 @@ "properties": { "id": { "type": "string", - "maxLength": 100, + "maxLength": 512, "minLength": 1, "pattern": "^[a-zA-Z0-9_-]+$", "title": "Id" @@ -5332,13 +3937,8 @@ "properties": { "filters": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Filters" } @@ -5350,24 +3950,15 @@ "properties": { "metadata": { "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } + { "additionalProperties": true, "type": "object" }, + { "type": "null" } ], "title": "Metadata" }, "configuration": { "anyOf": [ - { - "$ref": "#/components/schemas/WorkspaceConfiguration" - }, - { - "type": "null" - } + { "$ref": "#/components/schemas/WorkspaceConfiguration" }, + { "type": "null" } ] } }, @@ -5375,11 +3966,6 @@ "title": "WorkspaceUpdate" } }, - "securitySchemes": { - "HTTPBearer": { - "type": "http", - "scheme": "bearer" - } - } + "securitySchemes": { "HTTPBearer": { "type": "http", "scheme": "bearer" } } } } diff --git a/pyproject.toml b/pyproject.toml index a2913ea5..31581efb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "honcho" -version = "3.0.6" +version = "3.0.7" description = "Honcho Server" authors = [ {name = "Plastic Labs", email = "hello@plasticlabs.ai"}, diff --git a/sdks/python/CHANGELOG.md b/sdks/python/CHANGELOG.md index a7056000..2c8d3f91 100644 --- a/sdks/python/CHANGELOG.md +++ b/sdks/python/CHANGELOG.md @@ -5,11 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## [Unreleased] +## [2.1.2] - 2026-05-21 ### Added - `page`, `size`, and `reverse` pagination parameters on `Honcho.workspaces()` and `HonchoAio.workspaces()`, closing the gap from 2.1.0 which added these to `peers()`, `sessions()`, `messages()`, and `conclusions.list()` but not to `workspaces()`. Honoring `reverse` on the workspace/peer/session list routes also requires a Honcho server with the matching API fix; older servers silently ignore the parameter. +- `peers` parameter on `Honcho.session()` and `HonchoAio.session()` — attach peers to a session at creation time instead of needing a follow-up `session.add_peers()` call. Accepts the same shapes as `Session.add_peers` (peer ID string, `Peer` object, list of either, or tuples with `SessionPeerConfig`). + +### Changed + +- `WorkspaceCreateParams`, `PeerCreateParams`, and `SessionCreateParams` now accept IDs up to 512 characters (was 100), matching the server-side schema change in Honcho v3.0.7. ## [2.1.1] - 2026-04-01 diff --git a/sdks/python/pyproject.toml b/sdks/python/pyproject.toml index 07b532f8..0e6ad9ba 100644 --- a/sdks/python/pyproject.toml +++ b/sdks/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "honcho-ai" -version = "2.1.1" +version = "2.1.2" description = "Official DX Optimized Python SDK for Honcho" dynamic = ["readme"] license = "Apache-2.0" diff --git a/sdks/typescript/CHANGELOG.md b/sdks/typescript/CHANGELOG.md index e5ab73ac..bd6dd844 100644 --- a/sdks/typescript/CHANGELOG.md +++ b/sdks/typescript/CHANGELOG.md @@ -5,7 +5,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## [Unreleased] +## [2.1.2] - 2026-05-21 + +### Added + +- `peers` option on `Honcho.session()` — attach peers to a session at creation time instead of needing a follow-up `session.addPeers()` call. Accepts the same `PeerAddition` shape as `session.addPeers()` (peer ID strings, `Peer` objects, arrays of either, or a record with per-peer `observe_me`/`observe_others` config). + +### Changed + +- ID validation in `validation.ts` now accepts workspace, peer, and session IDs up to 512 characters (was 100), matching the server-side schema change in Honcho v3.0.7. ### Fixed diff --git a/sdks/typescript/package.json b/sdks/typescript/package.json index 136b716a..4ac6cea4 100644 --- a/sdks/typescript/package.json +++ b/sdks/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@honcho-ai/sdk", - "version": "2.1.1", + "version": "2.1.2", "description": "Official DX Optimized TypeScript SDK for Honcho", "author": "Plastic Labs ", "license": "Apache-2.0", diff --git a/uv.lock b/uv.lock index 75a59f80..d577957f 100644 --- a/uv.lock +++ b/uv.lock @@ -8,7 +8,7 @@ resolution-markers = [ ] [options] -exclude-newer = "2026-05-09T19:09:35.818254Z" +exclude-newer = "2026-05-16T17:58:57.678125Z" exclude-newer-span = "P5D" [manifest] @@ -1159,7 +1159,7 @@ wheels = [ [[package]] name = "honcho" -version = "3.0.6" +version = "3.0.7" source = { virtual = "." } dependencies = [ { name = "alembic" }, @@ -1270,7 +1270,7 @@ dev = [ [[package]] name = "honcho-ai" -version = "2.1.1" +version = "2.1.2" source = { editable = "sdks/python" } dependencies = [ { name = "httpx" },