You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/protocol/v1/draft/agent-plan.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ Plans are execution strategies for complex tasks that require multiple steps.
7
7
8
8
Agents may share plans with Clients through [`session/update`](/protocol/v1/draft/prompt-turn#3-agent-reports-output) notifications, providing real-time visibility into their thinking and progress.
9
9
10
-
The existing `plan` update is the baseline format. Clients that advertise `planCapabilities` during [initialization](/protocol/v1/draft/initialization#client-capabilities) can also receive identified plan operations through `plan_update` and `plan_removed`.
10
+
The existing `plan` update is the baseline format. Clients that advertise `plan` during [initialization](/protocol/v1/draft/initialization#client-capabilities) can also receive identified plan operations through `plan_update` and `plan_removed`.
11
11
12
12
## Creating Plans
13
13
@@ -50,7 +50,7 @@ When the language model creates an execution plan, the Agent **SHOULD** report i
50
50
51
51
## Plan Operations
52
52
53
-
Agents **MUST NOT** send `plan_update` or `plan_removed` unless the Client advertised `planCapabilities`. If the Client omits `planCapabilities`, the Agent **MUST** fall back to the existing `plan` update.
53
+
Agents **MUST NOT** send `plan_update` or `plan_removed` unless the Client advertised `plan`. If the Client omits `plan`, the Agent **MUST** fall back to the existing `plan` update.
54
54
55
55
`plan_update` carries a `plan` object with a `type` discriminator. Every plan format includes a required `id` so Clients can track multiple plans independently.
Copy file name to clipboardExpand all lines: docs/rfds/plan-operations.mdx
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,14 +36,14 @@ All variants carry a required `id: string` that identifies the plan, and an opti
36
36
37
37
Additionally, introduce a `plan_removed` session update type that carries only a plan `id` to signal dismissal. This keeps `plan_update` focused purely on content updates and makes removal a distinct, self-describing event.
38
38
39
-
The existing `plan` session update type is **not modified** and continues to work as before. Agents that want multi-plan support, new plan formats, or removal capabilities use `plan_update` and `plan_removed` only when the client advertises `planCapabilities`; otherwise they fall back to the existing `plan` session update type.
39
+
The existing `plan` session update type is **not modified** and continues to work as before. Agents that want multi-plan support, new plan formats, or removal capabilities use `plan_update` and `plan_removed` only when the client advertises `plan`; otherwise they fall back to the existing `plan` session update type.
40
40
41
41
### Client Capabilities
42
42
43
43
Add to `ClientCapabilities`:
44
44
45
45
```
46
-
planCapabilities?: PlanCapabilities
46
+
plan?: PlanCapabilities
47
47
```
48
48
49
49
This field is optional. When present as `{}`, it signals the client supports the `plan_update` and `plan_removed` session update types. When omitted, the client does not advertise support, and the agent must fall back to the existing `plan` session update type.
@@ -64,7 +64,7 @@ Agent sends a `plan_removed` session update with the plan's `id` to dismiss it.
64
64
65
65
> How will things will play out once this feature exists?
66
66
67
-
Agents will be able to present plans in the format most natural to them — structured checklists for step-by-step execution, markdown for free-form design docs, or file URIs for large plans generated externally. Clients that support `plan_update` can show multiple concurrent plans (e.g., a high-level strategy and a detailed implementation checklist), and dismiss plans that are no longer relevant. Clients that don't advertise `planCapabilities` continue to receive the existing `plan` updates with no changes.
67
+
Agents will be able to present plans in the format most natural to them — structured checklists for step-by-step execution, markdown for free-form design docs, or file URIs for large plans generated externally. Clients that support `plan_update` can show multiple concurrent plans (e.g., a high-level strategy and a detailed implementation checklist), and dismiss plans that are no longer relevant. Clients that don't advertise `plan` continue to receive the existing `plan` updates with no changes.
68
68
69
69
## Implementation details and plan
70
70
@@ -137,7 +137,7 @@ Removal:
137
137
138
138
### Why a new session update type instead of extending the existing `plan`?
139
139
140
-
The existing `plan` variant flattens `Plan`'s `entries` field directly into the `SessionUpdate` discriminated union object. Adding a nested `plan` field, optional `id`, and polymorphic types to the same variant would require breaking the existing format or complex dual-deserialization logic. A new `plan_update` variant avoids this, but agents must only send it to clients that advertised `planCapabilities`; clients that do not advertise support can continue to receive the existing `plan` update.
140
+
The existing `plan` variant flattens `Plan`'s `entries` field directly into the `SessionUpdate` discriminated union object. Adding a nested `plan` field, optional `id`, and polymorphic types to the same variant would require breaking the existing format or complex dual-deserialization logic. A new `plan_update` variant avoids this, but agents must only send it to clients that advertised `plan`; clients that do not advertise support can continue to receive the existing `plan` update.
141
141
142
142
### Why a separate `plan_removed` session update type instead of a removal variant inside `plan_update`?
Copy file name to clipboardExpand all lines: docs/rfds/v2/plan-variants.mdx
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ For now, v2 should stabilize only the item-based plan content variant:
25
25
}
26
26
```
27
27
28
-
The markdown, file, and removal pieces from [Plan Operations Support](/rfds/plan-operations) remain behind the unstable plan-operations feature while that RFD continues. V2 does not need a separate `planCapabilities` runtime handshake for those unstable operations.
28
+
The markdown, file, and removal pieces from [Plan Operations Support](/rfds/plan-operations) remain behind the unstable plan-operations feature while that RFD continues. V2 does not need a separate `plan` runtime handshake for those unstable operations.
29
29
30
30
## Status quo
31
31
@@ -55,10 +55,10 @@ ACP v2 should:
55
55
- Stabilize only the `plan.type: "items"` content variant for now.
56
56
- Keep unknown plan content variants parseable and preservable using the [v2 enum variant extension](/rfds/v2/enum-variant-extension) rules.
57
57
- Require every plan content variant, including unknown future/custom variants, to carry a plan `id`.
58
-
- Remove `ClientCapabilities.planCapabilities` from v2.
58
+
- Remove `ClientCapabilities.plan` from v2.
59
59
- Keep `markdown`, `file`, and `plan_removed` behind `unstable_plan_operations` until the Plan Operations RFD settles.
60
60
61
-
The stable v2 `plan_update` shape does not require a capability. The unstable plan operations remain gated by the draft unstable protocol surface, not by a v2 `planCapabilities` field.
61
+
The stable v2 `plan_update` shape does not require a capability. The unstable plan operations remain gated by the draft unstable protocol surface, not by a v2 `plan` field.
62
62
63
63
### Compatibility
64
64
@@ -93,7 +93,7 @@ Clients that only understand item-based plans can still preserve or display unkn
93
93
94
94
### Why not wait for the Plan Operations RFD to complete?
95
95
96
-
The item-based tagged shape is enough to make v2 extensible and remove the old flattened plan variant. The rest of the Plan Operations RFD can continue behind the unstable feature flag. V2 does not need `planCapabilities` because those operations are either part of the draft unstable protocol surface or absent from the stable schema.
96
+
The item-based tagged shape is enough to make v2 extensible and remove the old flattened plan variant. The rest of the Plan Operations RFD can continue behind the unstable feature flag. V2 does not need `plan` because those operations are either part of the draft unstable protocol surface or absent from the stable schema.
Copy file name to clipboardExpand all lines: schema/schema.unstable.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1025,7 +1025,7 @@
1025
1025
"description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nNES (Next Edit Suggestions) capabilities supported by the client.",
0 commit comments