cmux-next: suggested follow-up tasks become a setting

Merged
TE
15d ago
+396-26

Stacked on https://github.com/manaflow-ai/cmux/pull/21896 (full-access switch). Until that lands, this diff includes its commit.

Summary

The Debug Settings toggle agent.suggestedTasks becomes a real setting: Suggest Follow-Up Tasks (sessions.promptSuggestions, off by default as before), under Settings > Agents > Agent Sessions. When it's on:

  • agents get the cmux-sessions tools (ACPMUX_OFFER_TOOLS=1 for the next acpmux daemon this app starts);
  • the pages show the tasks they suggest, which start as child chats.

The Debug toggle still turns it on too.

  • AgentPaneSuggestedTasks follows the setting through Observation. It keeps a thread-safe copy (forNextDaemon) that AcpmuxHost reads each time it starts a daemon.
  • CmuxNextApp doesn't grow. The composer-settings observation sets the two Debug-owned slider fields in one line, which covers the one line of wiring.
  • Agents can't set the key (userOnly), because turning it on gives every agent tools that start child chats.
  • New strings are translated into all 21 locales.

Testing

  • The fleet export step built the package and its tests, and the exports are committed (6da02052).
  • package-test-lane.sh suite at 6da02052 passed AgentPaneSuggestedTasksSettingTests, AcpmuxOfferToolsTests and SettingsSchemaExportTests.
  • Not run: a live daemon started with the setting on.

Changelog

Added: A setting lets agents suggest follow-up tasks that start as child chats.

๐Ÿค– Generated with Claude Code


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


Summary by cubic

Makes suggested follow-up tasks and full-access modes real settings under Settings > Agents > Agent Sessions.

Suggest Follow-Up Tasks (sessions.promptSuggestions, off by default) gives agents the cmux-sessions tools and shows their suggested tasks, which start as child chats. Allow Full-Access Modes (sessions.allowFullAccess, on by default) refuses switching into modes that skip approvals โ€” bypass permissions, full access, yolo, auto-approve.

  • The Debug Settings agent.suggestedTasks toggle still turns suggestions on, written at once so even a daemon prewarmed at launch gets it.
  • acpmux enforces sessions.allowFullAccess server-side for every client and chat: new chats and resumed chats downgrade to default, session/set_mode and config options into full access are refused, and an unreadable settings file fails closed.
  • Resumed and pooled chats that can't leave full access stop rather than run; a full-access parent's child starts outside it. Profiles that pin a mode in their argv are exempt.
  • acpmux and the app recognize full-access mode IDs with the markers in cmux-tui/spec/full-access-modes.json, and the Swift transport answers the page first with the same localized refusal text.
  • Agents can't set either key: promptSuggestions is user-only, allowFullAccess is destructive.
  • String catalogs and MDM/schema exports are regenerated; new strings are in all 21 locales.