Repository navigation
Conversation
|
The following comment was made by an LLM, it may be inaccurate: |
There was a problem hiding this comment.
I checked this at the translation level. On the base, the new live/replay test fails: no plan update is emitted for a tool whose metadata carries acp.plan. With this PR, the ACP suite passes (108/108), and the cli typecheck and oxlint are clean. I didn't run it end to end with a real plugin.
The change looks sound to me:
- The decoder is shared and strict, and malformed metadata is ignored without throwing.
- Normal tool updates are unchanged.
- Child plans don't reach the root unless the client opted into child updates.
- Replay only covers the root session's own messages, so child plans can't leak in that way either.
The tests are small and focused.
Two points for maintainers rather than code issues:
metadata.acp.planbecomes a new public convention for plugins, and the PR doesn't document it anywhere.- #31834 proposes building ACP plans from
todowrite. If both land, plans from the two sources would replace each other in the client.
|
Automated PR Cleanup Thank you for contributing to opencode. Due to the high volume of PRs from users and AI agents, we periodically close older PRs using automated criteria so maintainers can focus review time on the most active and community-supported contributions. This PR was closed because it matched the following cleanup criteria:
PRs created within the last month are not affected by this cleanup. If you believe this PR was closed incorrectly, or if you are still actively working on it, please leave a comment explaining why it should be reopened. A maintainer can review and reopen it if appropriate. Thanks again for taking the time to contribute. |
Issue for this PR
Closes #53928
Related user report: prevalentWare/opencode-goal-plugin#59
Type of change
What does this PR do?
Project successful plugin tool
metadata.acp.planinto ACP's standard plan notification, live and during saved-message replay. Validate ACP entry content, priority and status; ignore absent or malformed metadata. Preserve ordinary tool updates and prevent child plans from replacing the root plan when child updates are disabled. Optional_metasurvives projection.The generic convention has no goal-plugin dependency. Command lifetime and explicit Cancel are independent changes in #53913.
How did you verify your code works?
Required Bun 1.4.2: full lint and all 36 package typechecks pass. This independent slice's full ACP suite: 108 pass, 0 fail. Regressions cover live/replayed plans, child isolation, and absent/malformed metadata.
The combined implementation with #53913 and an isolated packed goal plugin was tested through native ACP against a local SSE provider: a two-phase plan retains the overall objective after parser completion, then verifies execution before completing; five live plans and five replayed plans. This PR's own unit tests require no goal plugin or provider credentials.
Screenshots / recordings
ACP notification transcripts; no client UI changes. Native Zed rendering is not asserted by the transport fixture.
Checklist
Chain Context
Independent host slice: 139 changed lines, starts at v2 434f7b2 and ends with live/replayed plan projection. Goal persistence and planning semantics remain in the plugin. #53913 fixes command lifetime independently; neither host slice depends on the other. Rollback removes the metadata decoder and plan projection only.