[0.3.0] — 2026-06-05
Implements AHP 0.3.0.
Added
McpServerCustomizationnow exposes the full MCP lifecycle:enabled,
the discriminatedMcpServerStateenum
(.starting/.ready/.authRequired/.error/.stopped), optional
channelURI for themcp://side-channel, and optionalmcpApp
block carryingAhpMcpUiHostCapabilitiesfor MCP Apps.McpServerAuthRequiredStatecarriesProtectedResourceMetadata
plusreason/requiredScopes/descriptionso the existing
authenticatecommand can drive per-server auth.Customization.mcpServertop-level case — hosts MAY surface bare
MCP servers directly rather than only inside a plugin or directory.SessionMcpServerStateChangedActionand matching reducer arm —
narrow upsert ofstate+channelon an existing MCP
server customization by id. Wired through bothReducers.swiftand
the protocol-basedNativeReducer.swift.ClientCapabilitiesstruct onInitializeParams.capabilitieswith
first entrymcpApps.changeKindfield onChangeset(well-known values:'session',
'branch','uncommitted','turn','compare-turns').statusanderrorfields onChangesetOperationand the
changeset/operationStatusChangedaction, tracking the
idle → running → errorlifecycle of a changeset operation.AgentCustomization._metaprovider metadata field.- Optional
changesfield onSessionSummary(ChangesSummarywith optionaladditions,deletions, andfilescounts) summarising a session's file-change footprint.
Changed
- Renamed the
ChangesetSummarytype toChangeset. The on-the-wire shape is unchanged. - Moved the
changesetscatalogue fromSessionSummarytoSessionState. Thesession/changesetsChangedaction now updatesstate.changesetsdirectly instead ofstate.summary.changesets.
Removed
- Removed the
additions,deletions, andfilesfields fromChangesetSummary. Aggregate counts now live onSessionSummary.changes; per-changeset views derive their own totals fromChangesetState.files.
Changed
ToolCallBase.toolClientId: String?replaced by
ToolCallBase.contributor: ToolCallContributor?(enum with
.client(ToolCallClientContributor)and.mcp(ToolCallMcpContributor)
cases).SessionToolCallStartActioncarries the newcontributor
field as well.Reducers.swift,NativeReducer.swift, and
ToolCallStateExtensions.swiftfollow the rename.