Skip to content

acpmux MCP: initialize negotiates its version; offer titles carry the 80-char limit; suggest_tasks offers all or none - #28709

Merged
cmux-bot[bot] merged 9 commits into
feat-cmux-nextfrom
lane/ao-mcp-version-offer-title
Oct 31, 2026
Merged

cmux-bot[bot] merged 9 commits into
feat-cmux-nextfrom
lane/ao-mcp-version-offer-title

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes manaflow-ai/cmuxterm-hq#4978

For Leo's ask to productionize the acpmux daemon ("do we have more productionized stuff wrt the daemon ... let's go set up more fellas on it"), this fixes three places where acpmux's MCP servers don't follow the MCP contract.

What

  • initialize returns a version the server supports. The secret_mcp::serve servers (secrets, sessions/offers, subsessions, forum, acpmux) and the CUA v2 server used to echo whatever protocolVersion the client sent, so a client could ask for 2099-01-01 and get it back. Now they return the client's version when we support it, and our newest otherwise. That is what cmux mcp already did. The version list (acpmux::secret_mcp::PROTOCOL_VERSIONS) and protocol_version() are now the single source, and cmux mcp uses them too instead of keeping its own copy.
  • Offer titles carry the 80-character limit in their schema. offer_session.title and suggest_tasks.tasks[].title get "minLength": 1, "maxLength": 80. The limit comes from one constant (offer_mcp::MAX_TITLE_CHARS), which the daemon's check in hub/offers.rs now reads too. The daemon already refused longer titles with title must be 1 to 80 characters.
  • suggest_tasks no longer leaves half a card. It used to offer tasks one at a time, so a too-long title in task 3 left tasks 1 and 2 on the card. Now it checks every task's title and prompt against the daemon's limits before offering any: task 2 title must be 1 to 80 characters (none was offered). A refusal that only the daemon can make (for example, a chat already holding 8 open offers) can still leave earlier tasks offered. That error now returns structuredContent {groupId, offers}, so the agent knows which offers are open. Its text already gave the count.

Test

Red commit 08c1fc9 changes only suggested_tasks_tool_offers_each_task_in_one_group: initialize asks for 2099-01-01 and expects 2025-06-18, and a two-task call whose second title is 81 characters expects task 2 title must be 1 to 80 characters (none was offered) with no fourth offer recorded.

  • Red (08c1fc9): not run. The broker refused the run at the red commit (GitHub quota 403, then busy), and an earlier attempt timed out (a 40 s limit). The reviewer confirmed by reading that it fails on base: base echoes 2099-01-01, and the 81-character task's sibling is offered, so the text is task 2 was refused (the first 1 were offered): ....
  • Green at head 9f0fa5d (fast-checks run 41160088205): cargo test -p acpmux --test hub_integration -- session_offers 6 passed, including suggested_tasks_tool_offers_each_task_in_one_group; cargo test -p acpmux --lib -- secret_mcp offer_mcp 3 passed.

New unit tests: secret_mcp::tests::initialize_answers_a_version_we_speak, offer_mcp::tests::a_task_is_checked_as_the_daemon_checks_it, offer_mcp::tests::both_titles_carry_the_limit_in_the_schema. The existing cmux mcp test json_rpc_lifecycle_and_errors (supported version echoed, unknown version answered with the newest) now reads the shared list.

Not run

  • The full acpmux and cmux-tui suites and clippy (CI runs them). cli::mcp::tests::json_rpc_lifecycle_and_errors (cmux-tui) needs the ghostty submodule, so it runs in this PR's CI only.

Review

Independent review (Codex gpt-6-astra, high): SHIP at 9f0fa5d.

Changelog

  • Fixed: an agent's suggested-tasks card no longer shows only some of the tasks when one task's title is too long.

Agent session: agent session

🤖 Generated with Claude Code

teamleaderleo and others added 2 commits October 31, 2026 01:29
…otiates its version (red)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7016b1d4ce75ef44bdc7
…y their 80-character limit; suggest_tasks checks every task before offering any

Fixes manaflow-ai/cmuxterm-hq#4978

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7016b1d4ce75ef44bdc7
@github-actions github-actions Bot added the risk:low Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Found 1 test failure on Blacksmith runners:

Failure

Test View Logs
test_every_listed_hook_is_one_glaeda_released_with_the_check (main.SigningHooksInSt
epWithGlaedaTests.test_every_listed_hook_is_one_glaeda_released_with_the_check)/
test_every_listed_hook_is_one_glaeda_released_with_the_check (main.SigningHooksInSt
epWithGlaedaTests.test_every_listed_hook_is_one_glaeda_released_with_the_check)
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 7a9ef9e: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr28709 -f ref=lane/ao-mcp-version-offer-title -f platform=macos -f backend_mode=local

web and size checks: green

Shipped in:

@teamleaderleo

teamleaderleo commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator Author

Review (the owner lane's independent review, at its land request): SHIP at 9f0fa5d

Recorded by lane-gh-broker from this PR's owner lane, which asked to land this exact head after its independent review. next-autoland lands it once every red is the base's; a BLOCK at this head, a HOLD line or a hold label still stops it.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Independent review (gpt-6.1-sol high) at ec44615: SHIP. No correctness findings.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent October 31, 2026 08:02 Inactive
@teamleaderleo teamleaderleo removed the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at fd9f3c0

Reviewer: codex gpt-6-astra high, fast tier.

SHIP at fd9f3c0

Visual verdict: no images; Leo tries the build

No findings.

Follow-ups: none

@teamleaderleo teamleaderleo removed the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
…ic ratchet)

protocol_version falls back to NEWEST_PROTOCOL_VERSION instead of
&PROTOCOL_VERSIONS[0], an indexing_slicing hit the ratchet denies.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7e68dca28911d1051663
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at 7a9ef9e

SHIP at 7a9ef9e

Visual verdict: no images; Leo tries the build

Follow-ups:

  • [P2] [follow-up] No after screenshots were provided, so visual comparison was unavailable.

@teamleaderleo teamleaderleo removed the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
cmux-bot[bot]
cmux-bot Bot previously approved these changes Oct 31, 2026

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmux-bot approves 7a9ef9e: an independent review passed this exact head (next-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent October 31, 2026 20:06 Inactive
@cmux-bot
cmux-bot Bot dismissed their stale review October 31, 2026 20:11

A newer verdict blocks e61b32f (no independent SHIP at the head).

@cmux-bot
cmux-bot Bot merged commit e5b7d44 into feat-cmux-next Oct 31, 2026
212 checks passed
@cmux-bot
cmux-bot Bot deleted the lane/ao-mcp-version-offer-title branch October 31, 2026 20:21

This branch was previously deployed

3 inactive deployments
artifacts — e61b32ff Deployed Oct 31, 2026 by cmux-bot[bot] via add the Windows daemon to the tree #91241
ci-routing-agent — e61b32ff Deployed Oct 31, 2026 by github-actions[bot] via cmux-next macOS placement #55411
sentry-dsyms — e61b32ff Deployed Oct 31, 2026 by cmux-bot[bot] via upload cmux-tui dSYMs to Sentry #91241
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant