Agent-Native Capability Map
This map is the public UI-to-system boundary for AssistantWorkspace*Controller callbacks exported by @maya/assistant-ui/workspace.
Statuses:
implemented: the callback is wired through a protocol helper or typed protocol payload to a backend route, with committed evidence or verifier coverage.local-ui: the callback intentionally updates local/browser UI state and has no direct backend mutation.manual-boundary: the callback opens or prefetches a user-driven boundary where the user completes the external selection or flow.
| Controller | Callback | Protocol | Backend | Evidence | Status |
|---|---|---|---|---|---|
| AssistantWorkspaceShellController | onRouteChange | workspace route helpers, settings route helpers | snapshot and route prefetch fan-out | startup-reload, sidebar-surface, projects-list-detail, settings-visual | implemented |
| AssistantWorkspaceShellController | onSidebarOpenChange | workspace sidebar preference helpers | none: browser preference state | sidebar-surface | local-ui |
| AssistantWorkspaceShellController | onWorkspaceRetry | workspace shell status view-model contract | none: host-owned availability refresh callback | ui-stories, ui-a11y | local-ui |
| AssistantWorkspaceShellController | onSearchChange | list query params for conversations, projects, connectors, skills, plugins | GET chat_conversations_v2, GET projects_v2, directory list routes | projects-list-detail, customize-surface, settings-visual | implemented |
| AssistantWorkspaceShellController | onRouteItemSelectionChange | selection state contract | none: local selection state | sidebar-surface | local-ui |
| AssistantWorkspaceShellController | onRouteSelectionSelectAll | selection state contract | none: local selection state | sidebar-surface | local-ui |
| AssistantWorkspaceShellController | onRouteSelectionClear | selection state contract | none: local selection state | sidebar-surface | local-ui |
| AssistantWorkspaceShellController | onRouteSelectionArchive | officialConversationUpdateRequestBody, officialProjectMutationRequestBody, officialArtifactUpdateRequestBody | PATCH chat_conversations, PUT projects, PATCH artifacts | projects-list-detail, artifacts-route | implemented |
| AssistantWorkspaceShellController | onRouteSelectionRestore | officialConversationUpdateRequestBody, officialProjectMutationRequestBody, officialArtifactUpdateRequestBody | PATCH chat_conversations, PUT projects, PATCH artifacts | projects-list-detail, artifacts-route | implemented |
| AssistantWorkspaceShellController | onRouteSelectionDelete | official delete payloads | DELETE chat_conversations, DELETE projects, DELETE artifacts | projects-list-detail, artifacts-route | implemented |
| AssistantWorkspaceChatController | onComposerChange | composer state contract | none: local composer state | chat-browser-smoke | local-ui |
| AssistantWorkspaceChatController | onMenuChange | menu state contract | none: local menu state | chat-browser-smoke, customize-surface | local-ui |
| AssistantWorkspaceChatController | onSendMessage | ChatRequest, officialChatCompletionRequestBody, officialChatCompletionFollowupRequestBody | POST chat_conversations/:id/completion SSE | chat-browser-smoke, chat-simple, project-chat | implemented |
| AssistantWorkspaceChatController | onIncognitoChange | ChatRequest.isTemporary, create_conversation_params.is_temporary | completion route with temporary conversation params | anonymous-qna, official-live-incognito-chat-chrome-2026-06-23 | implemented |
| AssistantWorkspaceChatController | onSuggestionSelect | suggestion-to-composer state contract | none: local composer state | chat-browser-smoke | local-ui |
| AssistantWorkspaceChatController | onAttachmentCreate | officialAttachmentCreateRequestBody, ChatRequest.attachments | POST attachments; incognito uses temporary local attachment | chat-attachment | implemented |
| AssistantWorkspaceChatController | onAttachmentCancel | upload abort state contract | none: local abort controller | chat-attachment | local-ui |
| AssistantWorkspaceChatController | onAttachmentDownload | OfficialAttachmentDownloadPayload | GET attachments/:id/download | chat-attachment | implemented |
| AssistantWorkspaceChatController | onAttachmentRemove | pending attachment state contract | none: local pending attachment list | chat-attachment | local-ui |
| AssistantWorkspaceChatController | onAttachmentRetry | officialAttachmentCreateRequestBody | POST attachments retry path | chat-attachment | implemented |
| AssistantWorkspaceChatController | onConversationSelect | OfficialConversationDetailPayload | GET chat_conversations/:id | chat-browser-smoke, projects-list-detail | implemented |
| AssistantWorkspaceChatController | onConversationRename | officialConversationUpdateRequestBody | PATCH chat_conversations/:id | chat-message-actions | implemented |
| AssistantWorkspaceChatController | onConversationMoveToProject | officialConversationUpdateRequestBody | PATCH chat_conversations/:id with project id | projects-list-detail | implemented |
| AssistantWorkspaceChatController | onConversationStar | officialConversationUpdateRequestBody | PATCH chat_conversations/:id with starred state | projects-list-detail, sidebar-surface | implemented |
| AssistantWorkspaceChatController | onConversationArchive | officialConversationUpdateRequestBody | PATCH chat_conversations/:id with archived state | chat-message-actions, projects-list-detail | implemented |
| AssistantWorkspaceChatController | onConversationRestore | officialConversationUpdateRequestBody | PATCH chat_conversations/:id with archived false | projects-list-detail | implemented |
| AssistantWorkspaceChatController | onConversationDelete | OfficialConversationDeletePayload | DELETE chat_conversations/:id | projects-list-detail | implemented |
| AssistantWorkspaceChatController | onConversationShare | OfficialSharedChatResponsePayload | POST chat_conversations/:id/share | sharing | implemented |
| AssistantWorkspaceChatController | onSharedChatRevoke | OfficialSharedChatResponsePayload | DELETE shared_chats/:id | sharing | implemented |
| AssistantWorkspaceChatController | onMessageEdit | message-to-composer state contract | none: local composer focus and draft state | chat-message-actions | local-ui |
| AssistantWorkspaceChatController | onMessageFeedback | officialMessageUpdateRequestBody | PATCH chat_conversations/:id/messages/:messageId | chat-message-actions | implemented |
| AssistantWorkspaceChatController | onMessageReadAloud | officialMessageUpdateRequestBody with read-aloud timestamp | browser speech synthesis plus PATCH messages/:messageId | chat-message-actions | implemented |
| AssistantWorkspaceChatController | onMessageRetry | retry-to-composer state contract | none: local composer focus and draft state | chat-stop-retry-stop, chat-stop-retry-version | local-ui |
| AssistantWorkspaceChatController | onMessageVersionChange | officialMessageUpdateRequestBody with active version index | PATCH chat_conversations/:id/messages/:messageId | chat-stop-retry-version | implemented |
| AssistantWorkspaceChatController | onActivityAction | tool approval activity view-model contract | none: local activity action state until a host endpoint is available | ui-stories, ui-a11y | local-ui |
| AssistantWorkspaceProjectsController | onProjectCreate | officialProjectMutationRequestBody | POST projects | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectCreateOpen | OfficialStarterProjectPayload | GET starter_project prefetch | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectUpdate | officialProjectMutationRequestBody | PUT projects/:projectId | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectKnowledgeCreate | officialProjectKnowledgeCreateRequestBody, officialProjectDocumentCreateRequestBody | POST projects/:id/knowledge, POST projects/:id/docs | projects-list-detail, project-chat | implemented |
| AssistantWorkspaceProjectsController | onProjectKnowledgeDelete | OfficialProjectKnowledgeDeletePayload | DELETE project_knowledge/:knowledgeId | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectGitHubBrowse | GitHub sync auth and repo payloads | GET sync/github/auth, GET sync/github/repos, GET projects/:id | projects-list-detail | manual-boundary |
| AssistantWorkspaceProjectsController | onProjectGitHubImport | officialProjectSyncCreateRequestBody, GitHub sync config keys | POST projects/:id/syncs | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectDirectoryBrowse | marketplace, connector, plugin, MCP bootstrap payloads | marketplace list routes, GET mcp/v2/connectors, GET mcp/v2/bootstrap | projects-list-detail, customize-surface | manual-boundary |
| AssistantWorkspaceProjectsController | onProjectDirectoryConnectorSyncCreate | officialProjectSyncCreateRequestBody | POST projects/:id/syncs | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectCustomConnectorOpen | directory server payload | GET /api/directory/servers | projects-list-detail, connectors-skills | manual-boundary |
| AssistantWorkspaceProjectsController | onProjectCustomConnectorSubmit | officialRemoteServerCreateRequestBody, MCP bootstrap SSE event types | POST mcp/remote_servers, GET mcp/v2/bootstrap SSE | projects-list-detail, connectors-skills | implemented |
| AssistantWorkspaceProjectsController | onProjectSelect | OfficialProjectDetailPayload bundle | GET projects/:id plus detail fan-out | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectStar | officialProjectMutationRequestBody | PUT projects/:projectId with starred state | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectArchive | officialProjectMutationRequestBody | PUT projects/:projectId with archived state | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectDelete | OfficialProjectDeletePayload | DELETE projects/:projectId | projects-list-detail | implemented |
| AssistantWorkspaceProjectsController | onProjectSortChange | projects route query contract | GET projects_v2 with order_by | projects-list-detail | implemented |
| AssistantWorkspaceSettingsController | onSettingsModalChange | settings route helpers | settings section prefetch fan-out | settings-visual | implemented |
| AssistantWorkspaceSettingsController | onSettingsSectionChange | OfficialSettingsSectionKey, settings route helpers | section-specific settings prefetch fan-out | settings-visual | implemented |
| AssistantWorkspaceSettingsController | onSettingsSave | officialSettingsUpdateRequestBody | PUT sync/settings | settings-general-account, settings-privacy, settings-capabilities-developer | implemented |
| AssistantWorkspaceSettingsController | onSettingsPatch | officialSettingsUpdateRequestBody | PUT sync/settings partial save path | settings-general-account, settings-privacy, settings-capabilities-developer | implemented |
| AssistantWorkspaceSettingsController | onSettingsDataExport | OfficialDataExportResponsePayload | GET settings/export | settings-privacy | implemented |
| AssistantWorkspaceSettingsController | onSettingsAction | officialSettingsActionRequestBody, settingsActionIds | POST settings/actions | settings-general-account, settings-privacy, settings-capabilities-developer | implemented |
| AssistantWorkspaceArtifactsController | onArtifactSelect | artifact selection state contract | none: local active artifact state | artifacts-route | local-ui |
| AssistantWorkspaceArtifactsController | onArtifactSave | officialArtifactUpdateRequestBody | PATCH artifacts/:artifactId | artifacts-route | implemented |
| AssistantWorkspaceArtifactsController | onArtifactDownload | OfficialArtifactDownloadPayload | GET artifacts/:artifactId/download | artifacts-route | implemented |
| AssistantWorkspaceArtifactsController | onArtifactsDownload | officialArtifactDownloadBundleRequestBody | POST artifacts/download-bundle | artifacts-route | implemented |
| AssistantWorkspaceArtifactsController | onArtifactArchive | officialArtifactUpdateRequestBody | PATCH artifacts/:artifactId with archived state | artifacts-route | implemented |
| AssistantWorkspaceArtifactsController | onArtifactDelete | OfficialArtifactDeletePayload | DELETE artifacts/:artifactId | artifacts-route | implemented |
| AssistantWorkspaceArtifactsController | onArtifactCreate | officialArtifactCreateRequestBody | POST artifacts | artifacts-route | implemented |
| AssistantWorkspaceDirectoryController | onConnectorDirectoryBrowse | marketplace, connector, plugin, MCP bootstrap payloads | marketplace list routes, GET mcp/v2/connectors, GET mcp/v2/bootstrap | customize-surface, connectors-skills | manual-boundary |
| AssistantWorkspaceDirectoryController | onCustomConnectorOpen | directory server payload | GET /api/directory/servers | customize-surface, connectors-skills | manual-boundary |
| AssistantWorkspaceDirectoryController | onCustomConnectorSubmit | officialRemoteServerCreateRequestBody, MCP bootstrap SSE event types | POST mcp/remote_servers, GET mcp/v2/bootstrap SSE | customize-surface, connectors-skills | implemented |
| AssistantWorkspaceDirectoryController | onConnectorCreate | officialConnectorCreateRequestBody | POST mcp/v2/connectors | customize-surface, connectors-skills | implemented |
| AssistantWorkspaceDirectoryController | onConnectorStatusChange | officialConnectorUpdateRequestBody | PATCH mcp/v2/connectors/:connectorId | customize-surface, connectors-skills | implemented |
| AssistantWorkspaceDirectoryController | onSkillCreate | officialSkillCreateRequestBody | POST skills | customize-surface, connectors-skills | implemented |
| AssistantWorkspaceDirectoryController | onSkillStatusChange | officialSkillUpdateRequestBody | PATCH skills/:skillId | customize-surface, connectors-skills | implemented |
| AssistantWorkspaceDirectoryController | onPluginCreate | officialPluginCreateRequestBody | POST plugins | customize-surface | implemented |
| AssistantWorkspaceDirectoryController | onPluginStatusChange | officialPluginUpdateRequestBody | PATCH plugins/:pluginId | customize-surface | implemented |