Skip to content
Closed
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
30 changes: 27 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,37 @@ changes accumulate. Track in-flight protocol changes via PRs touching
`NOTIFICATION_INTRODUCED_IN` maps in
[`types/version/registry.ts`](types/version/registry.ts).

## [0.10.0] — Unreleased
## [1.1.0] — Unreleased

Spec version: `0.10.0`
Spec version: `1.1.0`

## [1.0.0] — 2026-10-02

Spec version: `1.0.0`

### Added

- Chat-owned canvas references and experimental per-canvas channels for live presentation state and source URLs.
- `AuthenticateParams.expiresIn` carries an OAuth access token's remaining lifetime in seconds.
- `SessionSummary.chats`, `SessionChatSummary.interactivity`, and `SessionSummary.defaultChat` expose lightweight chat navigation data without requiring a session subscription.
- `chat/isArchivedChanged` action for archiving a chat independently of its session.
- `ChatState.changesets` and `chat/changesetsChanged` expose each chat's changeset catalogue through the subscribed chat channel.
- `AutomationDefinition.disableConditions` supports `afterRuns` (`max`) and `afterDate` (`date`) rules combined with logical OR, with at most one condition per kind. Host-owned `AutomationEntry.runCount` tracks the current scheduled-run allowance. Edit conditions through `automation/updateRequested`: omission leaves them unchanged, an array replaces them, and `[]` removes all conditions without re-enabling the automation.
- `ChangesetStatus.Recomputing` distinguishes refreshes of a completed result from initial changeset computation.
- `ConfigPropertySchema.minItems` and `ConfigPropertySchema.maxItems` express array cardinality for `type: "array"` config properties. (#432)
- `McpServerStartingState.blocking` flag indicating that message processing may be held on the server, and the client-dispatchable `session/mcpServerBackgroundRequested` action asking the host to background such a startup.
- `AutomationSessionTemplate.customizations` lets automations carry client plugins (skills, agents, prompts, rules) that the host captures when the definition is saved, with the host-owned copies reported in `AutomationEntry.customizations` and support advertised by `AutomationCapabilities.customizations`.
- Hosts can advertise chat-owned canvas channel references and synchronize live presentation metadata and source URLs on experimental per-canvas channels.
- Atomic stable-URI `moveChat` transfer and same-session ordering for host-authorized chats, with per-chat `movable` discovery and durable authoritative catalogs.
- Expose chat-owned background work (background shells and subagents) in chat state, with `chat/backgroundWorkSet` and `chat/backgroundWorkRemoved` actions independent of turn lifetime.
- `ChatSummary.changes` and `ChatState.changes` provide aggregate file-change counts without requiring a changeset subscription.
- `SessionChatSummary.status` exposes per-chat archived state via `SessionStatus.IsArchived` in the lightweight chat catalog without requiring a session subscription.
- `chat/isReadChanged` action and optional `SessionChatSummary.status` projection for independently tracking the status of any known chat, including the default chat; the status bitset replaces the unreleased `isRead` and `archived` catalog fields.
- `SessionChatSummary.changes` exposes per-chat change counts in the lightweight chat catalog without requiring a session subscription.

### Changed

- Historical `ToolResultTerminalContent.resource` subscriptions return lazily reconstructed exited terminal state with retained output.
- `FileEdit` and preview `edits` now use named models in generated SDKs. This breaks affected SDK APIs but keeps JSON shapes unchanged.

## [0.9.0] — 2026-08-28

Expand Down
484 changes: 28 additions & 456 deletions clients/dotnet/CHANGELOG.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion clients/dotnet/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.9.0
1.0.0
4 changes: 3 additions & 1 deletion clients/dotnet/release-metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"client": "dotnet",
"packageVersion": "0.9.0",
"packageVersion": "1.0.0",
"supportedProtocolVersions": [
"1.1.0",
"1.0.0",
"0.10.0",
"0.9.0",
"0.8.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ public static class ProtocolVersion
/// The current protocol version (SemVer MAJOR.MINOR.PATCH) this
/// generated source speaks.
/// </summary>
public const string Current = "0.10.0";
public const string Current = "1.1.0";

private static readonly string[] s_supported =
{
"1.1.0",
"1.0.0",
"0.10.0",
"0.9.0",
"0.8.0",
Expand Down
28 changes: 28 additions & 0 deletions clients/go/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,34 @@ tag whose matching `## [X.Y.Z]` heading is missing from this file.

## [Unreleased]

## [1.0.0] — 2026-10-02

Implements AHP 1.0.0.

### Added

- `AuthenticateParams.expiresIn` carries an OAuth access token's remaining lifetime in seconds.
- `SessionSummary.chats`, `SessionChatSummary.interactivity`, and `SessionSummary.defaultChat` expose lightweight chat navigation data without requiring a session subscription.
- `chat/isArchivedChanged` action for archiving a chat independently of its session.
- `ChatState.changesets` and `chat/changesetsChanged` expose each chat's changeset catalogue through the subscribed chat channel.
- `AutomationDefinition.disableConditions` supports `afterRuns` (`max`) and `afterDate` (`date`) rules combined with logical OR, with at most one condition per kind. Host-owned `AutomationEntry.runCount` tracks the current scheduled-run allowance. Edit conditions through `automation/updateRequested`: omission leaves them unchanged, an array replaces them, and `[]` removes all conditions without re-enabling the automation.
- `ChangesetStatus.Recomputing` distinguishes refreshes of a completed result from initial changeset computation.
- `ConfigPropertySchema.minItems` and `ConfigPropertySchema.maxItems` express array cardinality for `type: "array"` config properties. (#432)
- `McpServerStartingState.blocking` flag indicating that message processing may be held on the server, and the client-dispatchable `session/mcpServerBackgroundRequested` action asking the host to background such a startup.
- `AutomationSessionTemplate.customizations` lets automations carry client plugins (skills, agents, prompts, rules) that the host captures when the definition is saved, with the host-owned copies reported in `AutomationEntry.customizations` and support advertised by `AutomationCapabilities.customizations`.
- Hosts can advertise chat-owned canvas channel references and synchronize live presentation metadata and source URLs on experimental per-canvas channels.
- Atomic stable-URI `moveChat` transfer and same-session ordering for host-authorized chats, with per-chat `movable` discovery and durable authoritative catalogs.
- Expose chat-owned background work (background shells and subagents) in chat state, with `chat/backgroundWorkSet` and `chat/backgroundWorkRemoved` actions independent of turn lifetime.
- `ChatSummary.changes` and `ChatState.changes` provide aggregate file-change counts without requiring a changeset subscription.
- `SessionChatSummary.status` exposes per-chat archived state via `SessionStatus.IsArchived` in the lightweight chat catalog without requiring a session subscription.
- `chat/isReadChanged` action and optional `SessionChatSummary.status` projection for independently tracking the status of any known chat, including the default chat; the status bitset replaces the unreleased `isRead` and `archived` catalog fields.
- `SessionChatSummary.changes` exposes per-chat change counts in the lightweight chat catalog without requiring a session subscription.

### Changed

- Historical `ToolResultTerminalContent.resource` subscriptions return lazily reconstructed exited terminal state with retained output.
- `FileEdit` and preview `edits` now use named models in generated SDKs. This breaks affected SDK APIs but keeps JSON shapes unchanged.

## [0.9.0] — 2026-08-28

Implements AHP 0.9.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.9.0
1.0.0
4 changes: 3 additions & 1 deletion clients/go/ahptypes/version.generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ package ahptypes

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

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

## [Unreleased]

## [1.0.0] — 2026-10-02

Implements AHP 1.0.0.

### Added

- `AuthenticateParams.expiresIn` carries an OAuth access token's remaining lifetime in seconds.
- `SessionSummary.chats`, `SessionChatSummary.interactivity`, and `SessionSummary.defaultChat` expose lightweight chat navigation data without requiring a session subscription.
- `chat/isArchivedChanged` action for archiving a chat independently of its session.
- `ChatState.changesets` and `chat/changesetsChanged` expose each chat's changeset catalogue through the subscribed chat channel.
- `AutomationDefinition.disableConditions` supports `afterRuns` (`max`) and `afterDate` (`date`) rules combined with logical OR, with at most one condition per kind. Host-owned `AutomationEntry.runCount` tracks the current scheduled-run allowance. Edit conditions through `automation/updateRequested`: omission leaves them unchanged, an array replaces them, and `[]` removes all conditions without re-enabling the automation.
- `ChangesetStatus.Recomputing` distinguishes refreshes of a completed result from initial changeset computation.
- `ConfigPropertySchema.minItems` and `ConfigPropertySchema.maxItems` express array cardinality for `type: "array"` config properties. (#432)
- `McpServerStartingState.blocking` flag indicating that message processing may be held on the server, and the client-dispatchable `session/mcpServerBackgroundRequested` action asking the host to background such a startup.
- `AutomationSessionTemplate.customizations` lets automations carry client plugins (skills, agents, prompts, rules) that the host captures when the definition is saved, with the host-owned copies reported in `AutomationEntry.customizations` and support advertised by `AutomationCapabilities.customizations`.
- Hosts can advertise chat-owned canvas channel references and synchronize live presentation metadata and source URLs on experimental per-canvas channels.
- Atomic stable-URI `moveChat` transfer and same-session ordering for host-authorized chats, with per-chat `movable` discovery and durable authoritative catalogs.
- Expose chat-owned background work (background shells and subagents) in chat state, with `chat/backgroundWorkSet` and `chat/backgroundWorkRemoved` actions independent of turn lifetime.
- `ChatSummary.changes` and `ChatState.changes` provide aggregate file-change counts without requiring a changeset subscription.
- `SessionChatSummary.status` exposes per-chat archived state via `SessionStatus.IsArchived` in the lightweight chat catalog without requiring a session subscription.
- `chat/isReadChanged` action and optional `SessionChatSummary.status` projection for independently tracking the status of any known chat, including the default chat; the status bitset replaces the unreleased `isRead` and `archived` catalog fields.
- `SessionChatSummary.changes` exposes per-chat change counts in the lightweight chat catalog without requiring a session subscription.

### Changed

- Historical `ToolResultTerminalContent.resource` subscriptions return lazily reconstructed exited terminal state with retained output.
- `FileEdit` and preview `edits` now use named models in generated SDKs. This breaks affected SDK APIs but keeps JSON shapes unchanged.

## [0.9.0] — 2026-08-28

Implements AHP 0.9.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.9.0
VERSION_NAME=1.0.0
POM_NAME=agent-host-protocol
POM_DESCRIPTION=Kotlin/JVM client for the Agent Host Protocol (AHP)
POM_INCEPTION_YEAR=2026
Expand Down
4 changes: 3 additions & 1 deletion clients/kotlin/release-metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"client": "kotlin",
"packageVersion": "0.9.0",
"packageVersion": "1.0.0",
"supportedProtocolVersions": [
"1.1.0",
"1.0.0",
"0.10.0",
"0.9.0",
"0.8.0",
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.10.0"
public const val PROTOCOL_VERSION: String = "1.1.0"

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

## [Unreleased]

## [1.0.0] — 2026-10-02

Implements AHP 1.0.0.

### Added

- `AuthenticateParams.expiresIn` carries an OAuth access token's remaining lifetime in seconds.
- `SessionSummary.chats`, `SessionChatSummary.interactivity`, and `SessionSummary.defaultChat` expose lightweight chat navigation data without requiring a session subscription.
- `chat/isArchivedChanged` action for archiving a chat independently of its session.
- `ChatState.changesets` and `chat/changesetsChanged` expose each chat's changeset catalogue through the subscribed chat channel.
- `AutomationDefinition.disableConditions` supports `afterRuns` (`max`) and `afterDate` (`date`) rules combined with logical OR, with at most one condition per kind. Host-owned `AutomationEntry.runCount` tracks the current scheduled-run allowance. Edit conditions through `automation/updateRequested`: omission leaves them unchanged, an array replaces them, and `[]` removes all conditions without re-enabling the automation.
- `ChangesetStatus.Recomputing` distinguishes refreshes of a completed result from initial changeset computation.
- `ConfigPropertySchema.minItems` and `ConfigPropertySchema.maxItems` express array cardinality for `type: "array"` config properties. (#432)
- `McpServerStartingState.blocking` flag indicating that message processing may be held on the server, and the client-dispatchable `session/mcpServerBackgroundRequested` action asking the host to background such a startup.
- `AutomationSessionTemplate.customizations` lets automations carry client plugins (skills, agents, prompts, rules) that the host captures when the definition is saved, with the host-owned copies reported in `AutomationEntry.customizations` and support advertised by `AutomationCapabilities.customizations`.
- Hosts can advertise chat-owned canvas channel references and synchronize live presentation metadata and source URLs on experimental per-canvas channels.
- Atomic stable-URI `moveChat` transfer and same-session ordering for host-authorized chats, with per-chat `movable` discovery and durable authoritative catalogs.
- Expose chat-owned background work (background shells and subagents) in chat state, with `chat/backgroundWorkSet` and `chat/backgroundWorkRemoved` actions independent of turn lifetime.
- `ChatSummary.changes` and `ChatState.changes` provide aggregate file-change counts without requiring a changeset subscription.
- `SessionChatSummary.status` exposes per-chat archived state via `SessionStatus.IsArchived` in the lightweight chat catalog without requiring a session subscription.
- `chat/isReadChanged` action and optional `SessionChatSummary.status` projection for independently tracking the status of any known chat, including the default chat; the status bitset replaces the unreleased `isRead` and `archived` catalog fields.
- `SessionChatSummary.changes` exposes per-chat change counts in the lightweight chat catalog without requiring a session subscription.

### Changed

- Historical `ToolResultTerminalContent.resource` subscriptions return lazily reconstructed exited terminal state with retained output.
- `FileEdit` and preview `edits` now use named models in generated SDKs. This breaks affected SDK APIs but keeps JSON shapes unchanged.

### Fixed

- `ClientPluginCustomization` now serializes its `"type": "plugin"` discriminant, so plugins published in `SessionActiveClient.customizations` are no longer sent without `type`.

## [0.9.0] — 2026-08-28

Implements AHP 0.9.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.9.0"
version = "1.0.0"
edition = "2021"
rust-version = "1.75"
license = "MIT"
Expand All @@ -27,5 +27,5 @@ tokio-util = "0.7"
futures-util = "0.3"
tracing = "0.1"
jiff = { version = "0.2", default-features = false, features = ["std"] }
ahp-types = { path = "crates/ahp-types", version = "0.9.0" }
ahp = { path = "crates/ahp", version = "0.9.0" }
ahp-types = { path = "crates/ahp-types", version = "1.0.0" }
ahp = { path = "crates/ahp", version = "1.0.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,7 +5,7 @@
#![allow(missing_docs)]

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

/// Every protocol version this crate is willing to negotiate, ordered
/// most-preferred-first. The first entry equals [`PROTOCOL_VERSION`].
Expand All @@ -14,5 +14,5 @@ pub const PROTOCOL_VERSION: &str = "0.10.0";
/// 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.10.0", "0.9.0", "0.8.0", "0.7.0", "0.6.0", "0.5.2", "0.5.1",
"1.1.0", "1.0.0", "0.10.0", "0.9.0", "0.8.0", "0.7.0", "0.6.0", "0.5.2", "0.5.1",
];
4 changes: 3 additions & 1 deletion clients/rust/release-metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"client": "rust",
"packageVersion": "0.9.0",
"packageVersion": "1.0.0",
"supportedProtocolVersions": [
"1.1.0",
"1.0.0",
"0.10.0",
"0.9.0",
"0.8.0",
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.10.0"
public let PROTOCOL_VERSION: String = "1.1.0"

/// Every protocol version this package is willing to negotiate,
/// ordered most-preferred-first. The first entry equals
Expand All @@ -13,6 +13,8 @@ public let PROTOCOL_VERSION: String = "0.10.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] = [
"1.1.0",
"1.0.0",
"0.10.0",
"0.9.0",
"0.8.0",
Expand Down
Loading
Loading