Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CONCEPTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ Shared domain vocabulary for the orchid project. This file defines terms used ac
- **Provider Connection** — One user-configured account or endpoint attached to a provider definition, with its own credentials, settings, models, and usage attribution. Multiple connections may use the same provider definition.
- **Pricing Snapshot** — The immutable pricing inputs and provenance frozen when a provider request starts and retained with its accounting record.
- **Request Cost Record** — Immutable usage and billing evidence for one attributable provider request. Chain and session costs are derived from these records.
- **Provider Facet** — An optional, code-owned driver capability (quota, currency, dynamic pricing, caching, thinking, tiers) with typed metadata consumed generically by UI and accounting. Remote and user data may select among declared options but never construct requests or introduce behavior.
- **Pricing Ladder** — Cost resolution order: API-reported cost wins, then API-reported usage priced by rates resolved provider pricing API → user-set rates → catalog rates. Every resolved cost carries provenance of the rung that produced it.
- **Thinking Policy** — A per-driver/model declaration of reasoning handling: exposure (`readable`, `summary`, `opaque`, `none`), replay rule (`mandatory-in-tool-loop`, `recommended`, `impossible`), and provider request knobs. Replay artifacts are persisted with the chain and stripped on provider/model switch.
- **Service Tier Mechanism** — Provider tiering expressed either as a request parameter (e.g. OpenRouter `service_tier`) or model-name variants (e.g. Neuralwatt `-flex`/`-fast`/`-short`). Variant tiers are grouped under one base model entry with no duplicate rows; selection is per-model with session override.
- **Unified Model Listing** — The single per-connection model list that treats catalog, live-discovered, and user-custom models identically (enable/disable, pricing override, reasoning levels, tier selection), distinguished only by a provenance badge.

## Trusted Projects

Expand Down
37 changes: 37 additions & 0 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ Internal backlog for Orchid. User-facing summary lives in the [README known limi
- Interface may prevent some changes while streaming (Such as model and reasoning level) but the command pallete still allows to execute
- Interrupted subagents are being marked as complete - possibly after starting a new chain it is not preserved? - but only on some places (subagent view is correct, main agent context and main chat/session UI appears to not be)
- replace_symbol can left trailing remnants
- crashed / closed app can make the agent lose context (Subagents - on the interface they still appear, for the main againt they do not - IDs not found)
- Remove todo status change restictions - only confuses the agent
- Are read results or other tools content being scaped, with the possibility of confusing the agent?

## Agent quality

Expand All @@ -20,6 +23,40 @@ Internal backlog for Orchid. User-facing summary lives in the [README known limi
- Subagents should make it easier to follow plans end-to-end
- Skills and agents are not fully updated for the current harness capabilities

## Rework Providers / Connections
- Standardized interface for builtin provider
- For subscription quota when availiable
- For custom currency (Ex: KwH from neuralwatt)
- For multiple API types (Ex: Opencode Go uses both Openai and Anthropic depending on the model)
- For dynamic pricing (Ex: Lilac that updates every 10 minutes, NW dynamic energy pricing)
- For cache breakpoints (Ex: openai, openrouter, kimi)
- Where would those breakpoints be?
- For summarized / encoded thinking (Such as Meta - it has a very specific way of handling that, openai, anthropic, etc.)
- For priority / tiering / options (Ex: Neuralwatt flex/short/fast tiering, openrouter flex/exacto/nitro)
- Allow for setting the pricing of each model
- Still always getting and prioritizing the API returned usage and cost
- Same listing on the connection edit / add for configured and custom models
- Allow to getting the models from the API (v1/models for example) and update their information
- Provide the maximum configurability for the user
- Easy/maintainable to add new providers
- Relevant docs:
- https://portal.neuralwatt.com/docs/api/overview
- https://portal.neuralwatt.com/docs/api/chat-completions
- https://portal.neuralwatt.com/docs/api/models
- https://portal.neuralwatt.com/docs/api/usage
- https://portal.neuralwatt.com/docs/api/quota
- https://docs.getlilac.com/inference/chat-completions
- https://docs.getlilac.com/inference/responses
- https://docs.getlilac.com/inference/status
- https://opencode.ai/docs/go/
- https://developers.openai.com/api/docs/guides/prompt-caching
- https://openrouter.ai/docs/api/api-reference/chat/create-a-chat-completion.md
- https://openrouter.ai/docs/guides/best-practices/prompt-caching.md
- https://openrouter.ai/docs/guides/features/service-tiers.md
- https://dev.meta.ai/docs/reasoning
- https://dev.meta.ai/docs/prompt-caching
- https://dev.meta.ai/docs/protocols/responses

## Interface

- Verify every tool has generating and running states
Expand Down
Loading
Loading