Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,7 @@ dotnet_diagnostic.CA1034.severity = none
# The pinned OpenAPI schemas declare these wire members as plain strings without
# format: uri. Winner: the sole protocol input's declared type; CA1056's name
# inference remains enabled for every other property.
[src/OpenCode.Sdk/**/{ConfigInfoEnterprise,ConnectionStatus,ExperimentalIntegrationWellknownAddRequest,FormExternalField,IntegrationAttempt,McpOAuthConfig,McpRemoteConfig,McpResource,McpResourceTemplate,ProjectIcon,PromptFileSourceUri,PromptInputFileAttachment,ToolFileContent,WebSearchResult}.cs]
[src/OpenCode.Sdk/**/{ConfigInfoEnterprise,ConnectionStatus,ExperimentalIntegrationWellknownAddRequest,FormExternalField,IntegrationAttempt,McpOAuthConfig,McpRemoteConfig,McpResource,McpResourceTemplate,ProjectIcon,PromptFileSourceUri,PromptInputFileAttachment,ToolFileContent,VoiceWebSocketTransport,WebSearchResult}.cs]
dotnet_diagnostic.CA1056.severity = none

# The SDK's namespaces are API surface, not placement: a public type declares OpenCode.Sdk or
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,22 @@ Nightly builds of `master` are on
[GitHub Packages](README.md#nightly-builds-github-packages) as
`0.9.0-nightly.{yyyyMMdd}.g{shortSha}`.

### ✨ Added

- **The SDK speaks opencode 2.0.32.** `ExperimentalClient.CreateVoiceSessionAsync` opens an
experimental voice session over WebRTC or WebSocket. `ConfigModelCapabilities.Reasoning` tells a
model that does not reason (`ConfigModelReasoningUnsupported`) from one that does
(`ConfigModelReasoningSupported`, with its toggle, efforts and `ConfigModelReasoningBudget`);
`ConfigModelCapabilities.Temperature` and `ModelCapabilities.Temperature` say whether a model
takes a temperature, and `ConfigModel.ReleaseDate` carries its release date.

### 🔧 Changes

- **A spawned background service's saved `env` wins after startup.**
`OpenCodeServerEnsureOptions.Environment` entries still win over the channel's service-config
`env` at spawn, but a 2.0.32 service re-applies its saved `env` when it starts, so a key set in
both takes the saved value for everything the service reads after startup.

### 🐛 Fixes

- **IntelliSense reaches implementing members and restores declared halves.** Properties that
Expand Down
6 changes: 4 additions & 2 deletions docs/architecture/protocol-and-generation.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Protocol and Generation Architecture

Date: 2026-10-17
Date: 2026-10-18

Canonical current rules for the protocol surface, generator, generated models, and runtime
materialization boundary. ADRs record why these decisions were made; dated research records the
Expand Down Expand Up @@ -122,7 +122,9 @@ evidence and may contain superseded positions.
`.generation-incomplete` marker, each carrying the bindability the same selection-path binder
finds today — `[bindable]`, or `[refused: <verbatim wall messages>]` — so wall-free drift among
pending operations surfaces as a reviewed diff instead of accumulating silently; the marker also
lists the fingerprint-pinned transport-owned operations beside them while it exists.
lists the fingerprint-pinned transport-owned operations beside them while it exists. Selected
operations are listed in `tools/generation-profile.txt`; admitting an upstream operation adds its
id there, along with its naming and owner curation rows.

## Curation boundary

Expand Down
4 changes: 2 additions & 2 deletions docs/guide/connection-modes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 🔌 Connection modes

Date: 2026-10-16
Date: 2026-10-18

There are three ways to get a client bound to a running opencode server: **let the SDK start one**,
**point it at one you already have**, or **discover the background service the opencode CLI runs
Expand Down Expand Up @@ -443,7 +443,7 @@ What it does:
| `ExpectedVersion` | The version a reused service must report. Null accepts any ready, compatible service. |
| `VersionPolicy` | What a service at another version gets: `Ignore` (the default) reuses it, `Replace` ends it and starts one at the expected version, `Error` throws without touching it. `Replace` and `Error` need `ExpectedVersion`. |
| `Command` | The service command, `opencode serve --service` by default. The first entry is resolved the way `StartAsync` resolves it. |
| `Environment` | Extra variables for a spawned service, over the channel's service-config `env`. |
| `Environment` | Extra variables for a spawned service, over the channel's service-config `env` at spawn; a 2.0.32 service re-applies its saved `env` over them once it starts, so a key set in both takes the saved value for everything read after startup: set a key in one place, the caller's `Environment` or the saved `env`, not both. |
| `OnStart` | Called at most once, before a new service process starts, with the reason (`Missing` or `VersionMismatch`) and the previous version. |

The spawned command registers where its own build and environment say. A released `opencode` build
Expand Down
2 changes: 1 addition & 1 deletion external/opencode
Submodule opencode updated 655 files
12 changes: 6 additions & 6 deletions spec/SNAPSHOT.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# OpenAPI Snapshot

Date: 2026-10-16
Date: 2026-10-17

`openapi.json` is the accepted snapshot of the upstream opencode OpenAPI 3.1 document
(ADR-0005). The SDK is built against this snapshot, never against a live branch; the pin is
Expand All @@ -13,13 +13,13 @@ their hash-pinned manifests.
| Fact | Value |
|---|---|
| Upstream file | `packages/protocol/openapi.json` |
| Upstream release tag | `v2.0.29` |
| Commit | `042d0832f5f3a73eaa039a58a7d565776f6d4290` |
| Upstream product channel | npm `@opencode/cli@latest` (channel `latest`); this tag published as `2.0.29`, installing the `opencode` command (plus the transitional `opencode2` alias) |
| Upstream release tag | `v2.0.32` |
| Commit | `843a6c514e606b436a7fe713422ace0a93ad3d61` |
| Upstream product channel | npm `@opencode/cli@latest` (channel `latest`); this tag published as `2.0.32`, installing the `opencode` command (plus the transitional `opencode2` alias) |

Upstream publishes from the `@opencode/cli` npm scope on the `latest` channel, versioned as
semver release tags (`v2.0.0`…). This pin is the release tag `v2.0.29`, so
`npm install -g @opencode/cli@2.0.29` installs a server built from exactly this commit; later
semver release tags (`v2.0.0`…). This pin is the release tag `v2.0.32`, so
`npm install -g @opencode/cli@2.0.32` installs a server built from exactly this commit; later
releases usually work but are not what this repository tests. `beta` and `dev` tags still exist
upstream but are not the release channel. The former `@opencode-ai/cli` scope is frozen: its
`next` and `latest` tags stopped at `0.0.0-beta-17823` (published 2026-08-21) and the scope
Expand Down
Loading
Loading