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
32 changes: 31 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,40 @@ changes accumulate. Track in-flight protocol changes via PRs touching
`NOTIFICATION_INTRODUCED_IN` maps in
[`types/version/registry.ts`](types/version/registry.ts).

## [0.7.0] — Unreleased
## [0.8.0] — Unreleased

Spec version: `0.8.0`

## [0.7.0] — 2026-07-31

Spec version: `0.7.0`

### Added

- Capability-gated side chats can start from a chat turn and return bounded chat transcripts as message attachments.
- Multiroot session support: `AgentCapabilities.multipleWorkingDirectories` capability (with `immutablePrimary`, which pins `workingDirectories[0]` as a fixed primary root that clients MUST NOT remove or reorder), `CreateSessionParams.workingDirectories` and `SessionMetadata.workingDirectories` (equal-peer set, mirrored onto `SessionState`/`SessionSummary`), `CreateChatParams.workingDirectories` and `ChatState`/`ChatSummary.workingDirectories` (a subset of the session's set), and the client-dispatchable `session/workingDirectorySet` / `session/workingDirectoryRemoved` and `chat/workingDirectorySet` / `chat/workingDirectoryRemoved` actions for mutating those sets. (#337)
- `result` on `ToolResultTerminalContent` (`exitCode`, `preview`, `truncated`), present once the command exits. (#323)
- Optional `isPty` metadata on `ToolResultTerminalContent` and `TerminalState` indicating whether a terminal resource is PTY-backed. (#322)
- Side-chat sources and origins can now carry an immutable selected-text snapshot with optional response-part provenance.

### Changed

- Side-chat sources and origins now carry stable `turnId` references instead of nested active/completed turn snapshots.
- `MessageChatAttachment.endTurn` is optional; hosts pin the latest completed turn when it is omitted, and chat attachments may reference chats in other sessions.
- `chat/toolCallReady` may finalize a tool call's provisional contributor and intention without changing client execution ownership.
- Final tool input may be inline or a lazy `ContentRef`, and streaming deltas may include partial parameters.

### Removed

- `ToolResultTerminalCompleteContent`; command completion data now lives on `ToolResultTerminalContent`. (#322, #323)
- Non-standard `resource_encryption_alg_values_supported` and `resource_encryption_enc_values_supported` fields from `ProtectedResourceMetadata`. (#368)

### Fixed

- `createChat.source` is once again a fully discriminated union: fork and side-chat sources both require a `kind`, and missing or unknown kinds are rejected.
- JSON Schema no longer marks properties declared as `T | undefined` (`ActionEnvelope.origin`, `Turn.usage`, `ActiveTurn.usage`, `SessionActivityChangedAction.activity`, `SessionMetaChangedAction._meta`, `SessionChangesetsChangedAction.changesets`, `ChangesetOperationsChangedAction.operations`) as `required`. Such properties are absent on the wire and every client emits them as optional, so the published schemas rejected valid protocol traffic.
- Restored authentication documentation in the `authenticate` command and `McpAuthRequirement` that a secret-scanner had redacted, including a corrupted `WWW-Authenticate: Bearer scope="…"` header example.

## [0.6.0] — 2026-07-20

Spec version: `0.6.0`
Expand Down
30 changes: 30 additions & 0 deletions clients/go/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,36 @@ tag whose matching `## [X.Y.Z]` heading is missing from this file.

## [Unreleased]

## [0.7.0] — 2026-07-31

Implements AHP 0.7.0.

### Added

- Capability-gated side chats can start from a chat turn and return bounded chat transcripts as message attachments.
- Multiroot session support: `AgentCapabilities.multipleWorkingDirectories` capability (with `immutablePrimary`, which pins `workingDirectories[0]` as a fixed primary root that clients MUST NOT remove or reorder), `CreateSessionParams.workingDirectories` and `SessionMetadata.workingDirectories` (equal-peer set, mirrored onto `SessionState`/`SessionSummary`), `CreateChatParams.workingDirectories` and `ChatState`/`ChatSummary.workingDirectories` (a subset of the session's set), and the client-dispatchable `session/workingDirectorySet` / `session/workingDirectoryRemoved` and `chat/workingDirectorySet` / `chat/workingDirectoryRemoved` actions for mutating those sets. (#337)
- `Client.Completions()` and `Client.SessionConfigCompletions()` typed wrappers for the `completions` / `sessionConfigCompletions` commands, matching the existing `resource*` convenience methods. (#340)
- `result` on `ToolResultTerminalContent` (`exitCode`, `preview`, `truncated`), present once the command exits. (#323)
- Optional `isPty` metadata on `ToolResultTerminalContent` and `TerminalState` indicating whether a terminal resource is PTY-backed. (#322)
- Side-chat sources and origins can now carry an immutable selected-text snapshot with optional response-part provenance.

### Changed

- Side-chat sources and origins now carry stable `turnId` references instead of nested active/completed turn snapshots.
- `MessageChatAttachment.endTurn` is optional; hosts pin the latest completed turn when it is omitted, and chat attachments may reference chats in other sessions.
- `chat/toolCallReady` may finalize a tool call's provisional contributor and intention without changing client execution ownership.
- Final tool input may be inline or a lazy `ContentRef`, and streaming deltas may include partial parameters.

### Removed

- `ToolResultTerminalCompleteContent`; command completion data now lives on `ToolResultTerminalContent`. (#322, #323)
- Non-standard `resource_encryption_alg_values_supported` and `resource_encryption_enc_values_supported` fields from `ProtectedResourceMetadata`. (#368)

### Fixed

- `createChat.source` is once again a fully discriminated union: fork and side-chat sources both require a `kind`, and missing or unknown kinds are rejected.
- Restored authentication documentation in the `authenticate` command and `McpAuthRequirement` that a secret-scanner had redacted, including a corrupted `WWW-Authenticate: Bearer scope="…"` header example.

## [0.6.0] — 2026-07-20

Implements AHP 0.6.0.
Expand Down
2 changes: 1 addition & 1 deletion clients/go/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.6.0
0.7.0
3 changes: 2 additions & 1 deletion clients/go/ahptypes/version.generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ package ahptypes

// ProtocolVersion is the current protocol version (SemVer
// MAJOR.MINOR.PATCH) that this generated source speaks.
const ProtocolVersion = "0.7.0"
const ProtocolVersion = "0.8.0"

// supportedProtocolVersions backs [SupportedProtocolVersions] — held
// in an unexported slice so callers cannot accidentally mutate the
// shared backing array.
var supportedProtocolVersions = []string{
"0.8.0",
"0.7.0",
"0.6.0",
"0.5.2",
Expand Down
3 changes: 2 additions & 1 deletion clients/go/release-metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"client": "go",
"packageVersion": "0.6.0",
"packageVersion": "0.7.0",
"supportedProtocolVersions": [
"0.8.0",
"0.7.0",
"0.6.0",
"0.5.2",
Expand Down
29 changes: 29 additions & 0 deletions clients/kotlin/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,35 @@ versions (`*-SNAPSHOT`) are explicitly rejected by the publish pipeline; bump

## [Unreleased]

## [0.7.0] — 2026-07-31

Implements AHP 0.7.0.

### Added

- Capability-gated side chats can start from a chat turn and return bounded chat transcripts as message attachments.
- Multiroot session support: `AgentCapabilities.multipleWorkingDirectories` capability (with `immutablePrimary`, which pins `workingDirectories[0]` as a fixed primary root that clients MUST NOT remove or reorder), `CreateSessionParams.workingDirectories` and `SessionMetadata.workingDirectories` (equal-peer set, mirrored onto `SessionState`/`SessionSummary`), `CreateChatParams.workingDirectories` and `ChatState`/`ChatSummary.workingDirectories` (a subset of the session's set), and the client-dispatchable `session/workingDirectorySet` / `session/workingDirectoryRemoved` and `chat/workingDirectorySet` / `chat/workingDirectoryRemoved` actions for mutating those sets. (#337)
- `result` on `ToolResultTerminalContent` (`exitCode`, `preview`, `truncated`), present once the command exits. (#323)
- Optional `isPty` metadata on `ToolResultTerminalContent` and `TerminalState` indicating whether a terminal resource is PTY-backed. (#322)
- Side-chat sources and origins can now carry an immutable selected-text snapshot with optional response-part provenance.

### Changed

- Side-chat sources and origins now carry stable `turnId` references instead of nested active/completed turn snapshots.
- `MessageChatAttachment.endTurn` is optional; hosts pin the latest completed turn when it is omitted, and chat attachments may reference chats in other sessions.
- `chat/toolCallReady` may finalize a tool call's provisional contributor and intention without changing client execution ownership.
- Final tool input may be inline or a lazy `ContentRef`, and streaming deltas may include partial parameters.

### Removed

- `ToolResultTerminalCompleteContent`; command completion data now lives on `ToolResultTerminalContent`. (#322, #323)
- Non-standard `resource_encryption_alg_values_supported` and `resource_encryption_enc_values_supported` fields from `ProtectedResourceMetadata`. (#368)

### Fixed

- `createChat.source` is once again a fully discriminated union: fork and side-chat sources both require a `kind`, and missing or unknown kinds are rejected.
- Restored authentication documentation in the `authenticate` command and `McpAuthRequirement` that a secret-scanner had redacted, including a corrupted `WWW-Authenticate: Bearer scope="…"` header example.

## [0.6.0] — 2026-07-20

Implements AHP 0.6.0.
Expand Down
2 changes: 1 addition & 1 deletion clients/kotlin/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ kotlin.code.style=official
# Maven coordinates — consumed by build.gradle.kts and validated by the
# publish workflow against the `kotlin/v*` git tag.
GROUP=com.microsoft.agenthostprotocol
VERSION_NAME=0.6.0
VERSION_NAME=0.7.0
POM_NAME=agent-host-protocol
POM_DESCRIPTION=Kotlin/JVM client for the Agent Host Protocol (AHP)
POM_INCEPTION_YEAR=2026
Expand Down
3 changes: 2 additions & 1 deletion clients/kotlin/release-metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"client": "kotlin",
"packageVersion": "0.6.0",
"packageVersion": "0.7.0",
"supportedProtocolVersions": [
"0.8.0",
"0.7.0",
"0.6.0",
"0.5.2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ package com.microsoft.agenthostprotocol.generated
/**
* Current protocol version (SemVer `MAJOR.MINOR.PATCH`).
*/
public const val PROTOCOL_VERSION: String = "0.7.0"
public const val PROTOCOL_VERSION: String = "0.8.0"

/**
* Every protocol version this library is willing to negotiate, ordered
Expand All @@ -16,6 +16,7 @@ public const val PROTOCOL_VERSION: String = "0.7.0"
* protocol versions if the host doesn't accept the newest one.
*/
public val SUPPORTED_PROTOCOL_VERSIONS: List<String> = listOf(
"0.8.0",
"0.7.0",
"0.6.0",
"0.5.2",
Expand Down
30 changes: 30 additions & 0 deletions clients/rust/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,36 @@ matching `## [X.Y.Z]` heading is missing from this file.

## [Unreleased]

## [0.7.0] — 2026-07-31

Implements AHP 0.7.0.

### Added

- Capability-gated side chats can start from a chat turn and return bounded chat transcripts as message attachments.
- Multiroot session support: `AgentCapabilities.multipleWorkingDirectories` capability (with `immutablePrimary`, which pins `workingDirectories[0]` as a fixed primary root that clients MUST NOT remove or reorder), `CreateSessionParams.workingDirectories` and `SessionMetadata.workingDirectories` (equal-peer set, mirrored onto `SessionState`/`SessionSummary`), `CreateChatParams.workingDirectories` and `ChatState`/`ChatSummary.workingDirectories` (a subset of the session's set), and the client-dispatchable `session/workingDirectorySet` / `session/workingDirectoryRemoved` and `chat/workingDirectorySet` / `chat/workingDirectoryRemoved` actions for mutating those sets. (#337)
- `Client::completions()` and `Client::session_config_completions()` typed wrappers for the `completions` / `sessionConfigCompletions` commands, matching the existing `resource_*` convenience methods. (#340)
- `result` on `ToolResultTerminalContent` (`exitCode`, `preview`, `truncated`), present once the command exits. (#323)
- Optional `isPty` metadata on `ToolResultTerminalContent` and `TerminalState` indicating whether a terminal resource is PTY-backed. (#322)
- Side-chat sources and origins can now carry an immutable selected-text snapshot with optional response-part provenance.

### Changed

- Side-chat sources and origins now carry stable `turnId` references instead of nested active/completed turn snapshots.
- `MessageChatAttachment.endTurn` is optional; hosts pin the latest completed turn when it is omitted, and chat attachments may reference chats in other sessions.
- `chat/toolCallReady` may finalize a tool call's provisional contributor and intention without changing client execution ownership.
- Final tool input may be inline or a lazy `ContentRef`, and streaming deltas may include partial parameters.

### Removed

- `ToolResultTerminalCompleteContent`; command completion data now lives on `ToolResultTerminalContent`. (#322, #323)
- Non-standard `resource_encryption_alg_values_supported` and `resource_encryption_enc_values_supported` fields from `ProtectedResourceMetadata`. (#368)

### Fixed

- `createChat.source` is once again a fully discriminated union: fork and side-chat sources both require a `kind`, and missing or unknown kinds are rejected.
- Restored authentication documentation in the `authenticate` command and `McpAuthRequirement` that a secret-scanner had redacted, including a corrupted `WWW-Authenticate: Bearer scope="…"` header example.

## [0.6.0] — 2026-07-20

Implements AHP 0.6.0.
Expand Down
6 changes: 3 additions & 3 deletions clients/rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions clients/rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ members = [
]

[workspace.package]
version = "0.6.0"
version = "0.7.0"
edition = "2021"
rust-version = "1.75"
license = "MIT"
Expand All @@ -22,5 +22,5 @@ tokio = { version = "1", features = ["sync", "rt", "macros", "time"] }
tokio-util = "0.7"
futures-util = "0.3"
tracing = "0.1"
ahp-types = { path = "crates/ahp-types", version = "0.6.0" }
ahp = { path = "crates/ahp", version = "0.6.0" }
ahp-types = { path = "crates/ahp-types", version = "0.7.0" }
ahp = { path = "crates/ahp", version = "0.7.0" }
4 changes: 2 additions & 2 deletions clients/rust/crates/ahp-types/src/version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
#![allow(missing_docs)]

/// Current protocol version (SemVer `MAJOR.MINOR.PATCH`).
pub const PROTOCOL_VERSION: &str = "0.7.0";
pub const PROTOCOL_VERSION: &str = "0.8.0";

/// Every protocol version this crate is willing to negotiate, ordered
/// most-preferred-first. The first entry equals [`PROTOCOL_VERSION`].
///
/// Consumers building `InitializeParams` should pass this slice (or a
/// derived `Vec<String>`) so the same client binary can fall back to
/// older protocol versions if the host doesn't accept the newest one.
pub const SUPPORTED_PROTOCOL_VERSIONS: &[&str] = &["0.7.0", "0.6.0", "0.5.2", "0.5.1"];
pub const SUPPORTED_PROTOCOL_VERSIONS: &[&str] = &["0.8.0", "0.7.0", "0.6.0", "0.5.2", "0.5.1"];
3 changes: 2 additions & 1 deletion clients/rust/release-metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"client": "rust",
"packageVersion": "0.6.0",
"packageVersion": "0.7.0",
"supportedProtocolVersions": [
"0.8.0",
"0.7.0",
"0.6.0",
"0.5.2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import Foundation

/// Current protocol version (SemVer `MAJOR.MINOR.PATCH`).
public let PROTOCOL_VERSION: String = "0.7.0"
public let PROTOCOL_VERSION: String = "0.8.0"

/// Every protocol version this package is willing to negotiate,
/// ordered most-preferred-first. The first entry equals
Expand All @@ -13,6 +13,7 @@ public let PROTOCOL_VERSION: String = "0.7.0"
/// `InitializeParams` so the same client binary can fall back to older
/// protocol versions if the host doesn't accept the newest one.
public let SUPPORTED_PROTOCOL_VERSIONS: [String] = [
"0.8.0",
"0.7.0",
"0.6.0",
"0.5.2",
Expand Down
30 changes: 30 additions & 0 deletions clients/swift/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,36 @@ the tag matches the version pinned in [`VERSION`](VERSION).

## [Unreleased]

## [0.7.0] — 2026-07-31

Implements AHP 0.7.0.

### Added

- Capability-gated side chats can start from a chat turn and return bounded chat transcripts as message attachments.
- Multiroot session support: `AgentCapabilities.multipleWorkingDirectories` capability (with `immutablePrimary`, which pins `workingDirectories[0]` as a fixed primary root that clients MUST NOT remove or reorder), `CreateSessionParams.workingDirectories` and `SessionMetadata.workingDirectories` (equal-peer set, mirrored onto `SessionState`/`SessionSummary`), `CreateChatParams.workingDirectories` and `ChatState`/`ChatSummary.workingDirectories` (a subset of the session's set), and the client-dispatchable `session/workingDirectorySet` / `session/workingDirectoryRemoved` and `chat/workingDirectorySet` / `chat/workingDirectoryRemoved` actions for mutating those sets. (#337)
- `AHPClient.completions()` and `AHPClient.sessionConfigCompletions()` convenience methods, plus `AHPCommands.completions(id:)` / `AHPCommands.sessionConfigCompletions(id:)` request factories, giving the generated `Completions*` / `SessionConfigCompletions*` types a typed entry point. (#340)
- `result` on `ToolResultTerminalContent` (`exitCode`, `preview`, `truncated`), present once the command exits. (#323)
- Optional `isPty` metadata on `ToolResultTerminalContent` and `TerminalState` indicating whether a terminal resource is PTY-backed. (#322)
- Side-chat sources and origins can now carry an immutable selected-text snapshot with optional response-part provenance.

### Changed

- Side-chat sources and origins now carry stable `turnId` references instead of nested active/completed turn snapshots.
- `MessageChatAttachment.endTurn` is optional; hosts pin the latest completed turn when it is omitted, and chat attachments may reference chats in other sessions.
- `chat/toolCallReady` may finalize a tool call's provisional contributor and intention without changing client execution ownership.
- Final tool input may be inline or a lazy `ContentRef`, and streaming deltas may include partial parameters.

### Removed

- `ToolResultTerminalCompleteContent`; command completion data now lives on `ToolResultTerminalContent`. (#322, #323)
- Non-standard `resource_encryption_alg_values_supported` and `resource_encryption_enc_values_supported` fields from `ProtectedResourceMetadata`. (#368)

### Fixed

- `createChat.source` is once again a fully discriminated union: fork and side-chat sources both require a `kind`, and missing or unknown kinds are rejected.
- Restored authentication documentation in the `authenticate` command and `McpAuthRequirement` that a secret-scanner had redacted, including a corrupted `WWW-Authenticate: Bearer scope="…"` header example.

## [0.6.0] — 2026-07-20

Implements AHP 0.6.0.
Expand Down
2 changes: 1 addition & 1 deletion clients/swift/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.6.0
0.7.0
3 changes: 2 additions & 1 deletion clients/swift/release-metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"client": "swift",
"packageVersion": "0.6.0",
"packageVersion": "0.7.0",
"supportedProtocolVersions": [
"0.8.0",
"0.7.0",
"0.6.0",
"0.5.2",
Expand Down
Loading
Loading