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
38 changes: 23 additions & 15 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,14 @@ changes accumulate. Track in-flight protocol changes via PRs touching
- `session/activeClientToolsChanged`. An active client now updates its published
tools by re-dispatching `session/activeClientSet` with its full, updated entry.

### Fixed

- Corrected the `ACTION_INTRODUCED_IN` entries for `annotations/set`,
`annotations/removed`, `annotations/entrySet`, and `annotations/entryRemoved`
from `0.3.0` to `0.4.0`. The annotations channel first shipped in the
`0.4.0` spec release (it is absent from `spec/v0.3.0`), so version
negotiation must not advertise it to peers speaking `0.3.0`.

## [0.5.0] — Unreleased

Spec version: `0.5.0`
Expand Down Expand Up @@ -82,6 +90,21 @@ Spec version: `0.4.0`
event to a specific agent (e.g. a sub-agent acting within the turn). The
tool-call actions already exposed `_meta`; this extends the same convention
to the remaining turn-scoped actions.
- Added a new annotations channel exposed on `ahp-session:/<uuid>/annotations`.
Annotations anchor to a `(turnId, resource)` pair with an optional `range`
(omitted to anchor to the entire file), carry a `resolved` flag (newly
created annotations start unresolved), and always carry at least one entry.
Clients drive every mutation by dispatching the client-dispatchable
`annotations/set`, `annotations/removed`, `annotations/entrySet`, and
`annotations/entryRemoved` state actions directly — assigning the
`Annotation.id` / `AnnotationEntry.id` themselves — rather than through RPC
commands, so annotations inherit write-ahead replay and conflict resolution.
`SessionSummary.annotations` advertises the per-session `AnnotationsSummary`
(`{ resource, annotationCount, entryCount }`) for badge UI.
- Added an `annotations` `MessageAttachment` variant
(`MessageAnnotationsAttachment`) that references annotations on a
session's annotations channel by its `resource` URI, optionally narrowed to
an `annotationIds` array (omitted to reference every annotation).
- `annotations/updated` (`AnnotationsUpdatedAction`) — a client-dispatchable
action that partially updates an existing annotation's own properties
(`turnId`, `resource`, `range`, `resolved`) without resending its entries.
Expand Down Expand Up @@ -177,21 +200,6 @@ Spec version: `0.3.0`
- Added optional `changes` field of type `ChangesSummary` to `SessionSummary`,
carrying optional `additions`, `deletions`, and `files` counts so servers
can advertise an at-a-glance view of a session's file-change footprint.
- Added a new annotations channel exposed on `ahp-session:/<uuid>/annotations`.
Annotations anchor to a `(turnId, resource)` pair with an optional `range`
(omitted to anchor to the entire file), carry a `resolved` flag (newly
created annotations start unresolved), and always carry at least one entry.
Clients drive every mutation by dispatching the client-dispatchable
`annotations/set`, `annotations/removed`, `annotations/entrySet`, and
`annotations/entryRemoved` state actions directly — assigning the
`Annotation.id` / `AnnotationEntry.id` themselves — rather than through RPC
commands, so annotations inherit write-ahead replay and conflict resolution.
`SessionSummary.annotations` advertises the per-session `AnnotationsSummary`
(`{ resource, annotationCount, entryCount }`) for badge UI.
- Added an `annotations` `MessageAttachment` variant
(`MessageAnnotationsAttachment`) that references annotations on a
session's annotations channel by its `resource` URI, optionally narrowed to
an `annotationIds` array (omitted to reference every annotation).
- Removed the `additions`, `deletions`, and `files` fields from
`ChangesetSummary`. Aggregate counts now live on `SessionSummary.changes`;
per-changeset views derive their own totals from `ChangesetState.files`.
Expand Down
24 changes: 12 additions & 12 deletions clients/go/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,18 @@ Implements AHP 0.4.0.

### Added

- New annotations channel wire types (`ahp-session:/<uuid>/annotations`):
`AnnotationsState`, `Annotation`, `AnnotationEntry`,
`AnnotationsSummary`; the client-dispatchable `AnnotationsSetAction`,
`AnnotationsRemovedAction`, `AnnotationsEntrySetAction`,
`AnnotationsEntryRemovedAction` variants — clients drive every annotation
mutation by dispatching these directly, assigning the `Annotation.Id` /
`AnnotationEntry.Id` themselves;
`ApplyActionToAnnotations` (stub mirroring `ApplyActionToChangeset`); and
`SnapshotState.Annotations`.
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `Resource`
URI, optionally narrowed to an `AnnotationIds` array.
- `AnnotationsUpdatedAction` (`annotations/updated`) — partially updates an
existing annotation's `TurnID` / `Resource` / `Range` / `Resolved` without
resending its entries. Handled by the annotations reducer (no-op on unknown
Expand Down Expand Up @@ -153,18 +165,6 @@ Implements AHP 0.3.0.
`idle → running → error` lifecycle of a changeset operation.
- `AgentCustomization._meta` provider metadata field.
- Optional `changes` field on `SessionSummary` (`ChangesSummary` with optional `additions`, `deletions`, and `files` counts) summarising a session's file-change footprint.
- New annotations channel wire types (`ahp-session:/<uuid>/annotations`):
`AnnotationsState`, `Annotation`, `AnnotationEntry`,
`AnnotationsSummary`; the client-dispatchable `AnnotationsSetAction`,
`AnnotationsRemovedAction`, `AnnotationsEntrySetAction`,
`AnnotationsEntryRemovedAction` variants — clients drive every annotation
mutation by dispatching these directly, assigning the `Annotation.Id` /
`AnnotationEntry.Id` themselves;
`ApplyActionToAnnotations` (stub mirroring `ApplyActionToChangeset`); and
`SnapshotState.Annotations`.
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `Resource`
URI, optionally narrowed to an `AnnotationIds` array.


### Changed
Expand Down
24 changes: 12 additions & 12 deletions clients/kotlin/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,18 @@ Implements AHP 0.4.0.

### Added

- New annotations channel (`ahp-session:/<uuid>/annotations`): `AnnotationsState`,
`Annotation`, `AnnotationEntry`,
`AnnotationsSummary`; the `annotationsReducer` top-level function and
`AnnotationsReducer` object; and the client-dispatchable `annotations/set`,
`annotations/removed`, `annotations/entrySet`, and `annotations/entryRemoved`
action variants — clients drive every annotation mutation by dispatching
these directly (assigning the `Annotation.id` / `AnnotationEntry.id`
themselves); and `SnapshotState.Annotations`.
`SessionSummary.annotations` surfaces the per-session `AnnotationsSummary`.
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `resource`
URI, optionally narrowed to an `annotationIds` array.
- `AnnotationsUpdatedAction` (`annotations/updated`) — partially updates an
existing annotation's `turnId` / `resource` / `range` / `resolved` without
resending its entries. Handled by the annotations reducer (no-op on unknown
Expand Down Expand Up @@ -147,18 +159,6 @@ Implements AHP 0.3.0.
`idle → running → error` lifecycle of a changeset operation.
- `AgentCustomization._meta` provider metadata field.
- Optional `changes` field on `SessionSummary` (`ChangesSummary` with optional `additions`, `deletions`, and `files` counts) summarising a session's file-change footprint.
- New annotations channel (`ahp-session:/<uuid>/annotations`): `AnnotationsState`,
`Annotation`, `AnnotationEntry`,
`AnnotationsSummary`; the `annotationsReducer` top-level function and
`AnnotationsReducer` object; and the client-dispatchable `annotations/set`,
`annotations/removed`, `annotations/entrySet`, and `annotations/entryRemoved`
action variants — clients drive every annotation mutation by dispatching
these directly (assigning the `Annotation.id` / `AnnotationEntry.id`
themselves); and `SnapshotState.Annotations`.
`SessionSummary.annotations` surfaces the per-session `AnnotationsSummary`.
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `resource`
URI, optionally narrowed to an `annotationIds` array.


### Changed
Expand Down
24 changes: 12 additions & 12 deletions clients/rust/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,18 @@ Implements AHP 0.4.0.

### Added

- New annotations channel wire types (`ahp-session:/<uuid>/annotations`):
`AnnotationsState`, `Annotation`, `AnnotationEntry`,
`AnnotationsSummary`; the client-dispatchable
`annotations/set` / `annotations/removed` / `annotations/entrySet`
/ `annotations/entryRemoved` action variants — clients drive every annotation
mutation by dispatching these directly, assigning the `Annotation.id` /
`AnnotationEntry.id` themselves;
`MultiHostStateMirror.annotations()` and `SnapshotState::Annotations`.
Reducer logic is deferred (matches the changeset stub).
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `resource`
URI, optionally narrowed to an `annotationIds` array.
- `AnnotationsUpdatedAction` (`annotations/updated`) — partially updates an
existing annotation's `turn_id` / `resource` / `range` / `resolved` without
resending its entries. Handled by the annotations reducer (no-op on unknown
Expand Down Expand Up @@ -169,18 +181,6 @@ Implements AHP 0.3.0.
`idle → running → error` lifecycle of a changeset operation.
- `AgentCustomization._meta` provider metadata field.
- Optional `changes` field on `SessionSummary` (`ChangesSummary` with optional `additions`, `deletions`, and `files` counts) summarising a session's file-change footprint.
- New annotations channel wire types (`ahp-session:/<uuid>/annotations`):
`AnnotationsState`, `Annotation`, `AnnotationEntry`,
`AnnotationsSummary`; the client-dispatchable
`annotations/set` / `annotations/removed` / `annotations/entrySet`
/ `annotations/entryRemoved` action variants — clients drive every annotation
mutation by dispatching these directly, assigning the `Annotation.id` /
`AnnotationEntry.id` themselves;
`MultiHostStateMirror.annotations()` and `SnapshotState::Annotations`.
Reducer logic is deferred (matches the changeset stub).
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `resource`
URI, optionally narrowed to an `annotationIds` array.


### Changed
Expand Down
23 changes: 11 additions & 12 deletions clients/swift/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,17 @@ Implements AHP 0.4.0.

### Added

- New annotations channel wire types (`ahp-session:/<uuid>/annotations`):
`AnnotationsState`, `Annotation`, `AnnotationEntry`,
`AnnotationsSummary`; and the client-dispatchable
`annotations/set` / `annotations/removed` / `annotations/entrySet`
/ `annotations/entryRemoved` cases on `StateAction` — clients drive every
annotation mutation by dispatching these directly, assigning the
`Annotation.id` / `AnnotationEntry.id` themselves; and
`SnapshotState.annotations`.
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `resource`
URI, optionally narrowed to an `annotationIds` array.
- `annotationsReducer` implemented; annotations conformance fixtures (210–219) now pass.

- `AnnotationsUpdatedAction` (`annotations/updated`) — partially updates an
Expand Down Expand Up @@ -188,18 +199,6 @@ Implements AHP 0.3.0.
`idle → running → error` lifecycle of a changeset operation.
- `AgentCustomization._meta` provider metadata field.
- Optional `changes` field on `SessionSummary` (`ChangesSummary` with optional `additions`, `deletions`, and `files` counts) summarising a session's file-change footprint.
- New annotations channel wire types (`ahp-session:/<uuid>/annotations`):
`AnnotationsState`, `Annotation`, `AnnotationEntry`,
`AnnotationsSummary`; and the client-dispatchable
`annotations/set` / `annotations/removed` / `annotations/entrySet`
/ `annotations/entryRemoved` cases on `StateAction` — clients drive every
annotation mutation by dispatching these directly, assigning the
`Annotation.id` / `AnnotationEntry.id` themselves; and
`SnapshotState.annotations`.
Reducer logic is deferred (matches the changeset/resource-watch parity).
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `resource`
URI, optionally narrowed to an `annotationIds` array.


### Changed
Expand Down
27 changes: 16 additions & 11 deletions clients/typescript/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ hotfix escape hatch.

- Hosted session summary caches now apply `_meta` updates from
`root/sessionSummaryChanged` notifications.
- Corrected the `ACTION_INTRODUCED_IN` entries for `annotations/set`,
`annotations/removed`, `annotations/entrySet`, and `annotations/entryRemoved`
from `0.3.0` to `0.4.0`, so `isActionKnownToVersion` no longer reports the
annotations channel as available to peers negotiating `0.3.0` (it first
shipped in `0.4.0`).

## [0.4.0] — 2026-06-19

Expand Down Expand Up @@ -107,6 +112,17 @@ Implements AHP 0.4.0.

### Added

- New annotations channel (`ahp-session:/<uuid>/annotations`): `AnnotationsState`,
`Annotation`, `AnnotationEntry`, `AnnotationsSummary`,
the `annotationsReducer`, and the client-dispatchable `annotations/set`,
`annotations/removed`, `annotations/entrySet`, and `annotations/entryRemoved`
actions — clients drive every annotation mutation by dispatching these
directly, assigning the `Annotation.id` / `AnnotationEntry.id` themselves.
`SessionSummary.annotations` surfaces the per-session `AnnotationsSummary`
for badge UI.
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `resource`
URI, optionally narrowed to an `annotationIds` array.
- `AnnotationsUpdatedAction` (`annotations/updated`) — partially updates an
existing annotation's `turnId` / `resource` / `range` / `resolved` without
resending its entries. Handled by `annotationsReducer` (no-op on unknown id).
Expand Down Expand Up @@ -159,17 +175,6 @@ Implements AHP 0.3.0.
`idle → running → error` lifecycle of a changeset operation.
- `AgentCustomization._meta` provider metadata field.
- Optional `changes` field on `SessionSummary` (`ChangesSummary` with optional `additions`, `deletions`, and `files` counts) summarising a session's file-change footprint.
- New annotations channel (`ahp-session:/<uuid>/annotations`): `AnnotationsState`,
`Annotation`, `AnnotationEntry`, `AnnotationsSummary`,
the `annotationsReducer`, and the client-dispatchable `annotations/set`,
`annotations/removed`, `annotations/entrySet`, and `annotations/entryRemoved`
actions — clients drive every annotation mutation by dispatching these
directly, assigning the `Annotation.id` / `AnnotationEntry.id` themselves.
`SessionSummary.annotations` surfaces the per-session `AnnotationsSummary`
for badge UI.
- `MessageAnnotationsAttachment` (`annotations` `MessageAttachment` variant)
referencing annotations on a session's annotations channel by `resource`
URI, optionally narrowed to an `annotationIds` array.


### Changed
Expand Down
8 changes: 4 additions & 4 deletions types/version/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,11 @@ export const ACTION_INTRODUCED_IN: { readonly [K in StateAction['type']]: string
[ActionType.ChangesetOperationsChanged]: '0.2.0',
[ActionType.ChangesetOperationStatusChanged]: '0.3.0',
[ActionType.ChangesetCleared]: '0.2.0',
[ActionType.AnnotationsSet]: '0.3.0',
[ActionType.AnnotationsSet]: '0.4.0',
[ActionType.AnnotationsUpdated]: '0.4.0',
[ActionType.AnnotationsRemoved]: '0.3.0',
[ActionType.AnnotationsEntrySet]: '0.3.0',
[ActionType.AnnotationsEntryRemoved]: '0.3.0',
[ActionType.AnnotationsRemoved]: '0.4.0',
[ActionType.AnnotationsEntrySet]: '0.4.0',
[ActionType.AnnotationsEntryRemoved]: '0.4.0',
[ActionType.RootTerminalsChanged]: '0.1.0',
[ActionType.RootConfigChanged]: '0.1.0',
[ActionType.TerminalData]: '0.1.0',
Expand Down
Loading