Skip to content

fix(acp): goal-unavailable notice gating on resume#503

Merged
CSRessel merged 4 commits into
feat/nori-client-mcp-cleanupfrom
chore/browser-cdp-cleanup-fixups
Jun 8, 2026
Merged

fix(acp): goal-unavailable notice gating on resume#503
CSRessel merged 4 commits into
feat/nori-client-mcp-cleanupfrom
chore/browser-cdp-cleanup-fixups

Conversation

@CSRessel

@CSRessel CSRessel commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Goal-notice fixes for nori-client MCP goal resume, split out from the original combined cleanup PR (the browser-CDP fixes now live in #505 targeting main).

  • Surface the goal-unavailable notice for all in-play goals on resume, not just the first.
  • Stop recording the goal-unavailable notice to the transcript (it is a transient UI notice, not conversation history).
  • Document the goal-notice gating and non-recording-on-resume behavior.
  • Share a panic-safe EnvGuard across the goal resume tests.

Targets feat/nori-client-mcp-cleanup.

Test plan

  • cargo test -p nori-acp (574 pass, with the feat-branch mock agent built)
  • cargo clippy -p nori-acp --tests (clean)
  • cargo fmt --check

CSRessel added 4 commits June 8, 2026 01:10
…sume

On resume into a non-MCP session, only Active goals emitted the
"/goal is unavailable" notice; Paused/Blocked/UsageLimited goals fell
through to resume_notice, which suggests `/goal resume` even though
`/goal` is disabled for non-MCP agents. Centralize the decision in a
new ThreadGoalState::resume_notice_for that surfaces the unavailable
notice for any in-play goal when automation is absent.
emit_goal_unavailable routed through emit_client_event, which records
SessionUpdateInfo to the transcript. Since the transcript replays on
resume, every /goal op in a non-MCP session accumulated a duplicate
"unavailable" notice — contradicting the design where resume notices
are deliberately not persisted. Emit it directly to the client channel
instead, like the resume-notice path.
Reflect the resume_notice_for gating (unavailable notice for any in-play
goal in a non-MCP session, never a misleading /goal resume affordance)
and that op-time/resume goal notices are emitted directly to the client
without transcript recording.
Move EnvGuard from part5 into tests/mod.rs so the goal resume tests in
part4 can use it instead of a manual restore closure that leaks
MOCK_AGENT_MCP_HTTP into later #[serial] tests if an assertion panics
before the restore runs.
@nori-sessions nori-sessions Bot force-pushed the chore/browser-cdp-cleanup-fixups branch from 2f44df8 to 8f05bbd Compare June 8, 2026 01:30
@nori-sessions nori-sessions Bot changed the title fix(acp): browser CDP cleanup + goal-gating fixups from PR review fix(acp): goal-unavailable notice gating on resume Jun 8, 2026
@CSRessel CSRessel merged commit 6383f26 into feat/nori-client-mcp-cleanup Jun 8, 2026
2 checks passed
@CSRessel CSRessel deleted the chore/browser-cdp-cleanup-fixups branch June 8, 2026 01:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant