{ "version": 1, "areas": [ { "id": "install-and-launch", "audiences": [ "user", "operator" ], "stability": "stable", "docs": [ "index", "use-kandev", "cli", "desktop-app", "run-as-a-service" ], "sources": [ "apps/cli/bin/native-shim.js", "apps/backend/internal/launcher/launcher.go", "apps/desktop/src-tauri/src/lib.rs" ], "tests": [ "apps/cli/bin/native-shim.test.mjs", "apps/desktop/e2e/desktop-launch-smoke.test.mjs" ] }, { "id": "backend-configuration", "audiences": [ "operator", "contributor" ], "stability": "stable", "docs": [ "configuration", "operations", "cli" ], "sources": [ "apps/backend/internal/common/config/config.go", "apps/backend/internal/agentctl/server/config/config.go", "apps/backend/internal/profiles/profiles.go" ], "tests": [ "apps/backend/internal/common/config/config_test.go", "apps/backend/internal/agentctl/server/config/config_test.go", "apps/backend/internal/profiles/profiles_test.go" ] }, { "id": "workspaces-and-repositories", "audiences": [ "user" ], "stability": "stable", "docs": [ "use-kandev", "tasks-and-workflows", "configuration" ], "sources": [ "apps/backend/internal/task/handlers/workspace_handlers.go", "apps/backend/internal/task/service/repository_discovery.go", "apps/backend/internal/task/service/repository_discovery_state.go", "apps/backend/internal/task/repository/sqlite/desktop_discovery_root.go", "apps/web/components/app-sidebar/app-sidebar-workspace-picker.tsx", "apps/web/hooks/domains/workspace/use-repository-discovery.ts", "apps/web/app/settings/workspace/workspace-repositories-dialog.tsx" ], "tests": [ "apps/backend/internal/task/handlers/workspace_handlers_test.go", "apps/backend/internal/task/service/repository_discovery_test.go", "apps/backend/internal/task/repository/sqlite/desktop_discovery_root_test.go", "apps/web/components/app-sidebar/app-sidebar-workspace-picker.test.tsx", "apps/web/hooks/domains/workspace/use-repository-discovery.test.ts" ], "settingsRoutes": [ "/settings/workspace", "/settings/workspaces" ], "mcpTools": [ "list_repositories_kandev", "list_workspaces_kandev" ] }, { "id": "tasks-and-workflows", "audiences": [ "user" ], "stability": "stable", "docs": [ "tasks-and-workflows", "workflow-tips", "workflow-import-export", "workflow-sync" ], "sources": [ "apps/backend/internal/orchestrator/workflow_store.go", "apps/web/components/kanban-with-preview.tsx" ], "tests": [ "apps/backend/internal/orchestrator/workflow_store_test.go", "apps/web/components/kanban-with-preview.test.ts" ], "mcpTools": [ "create_workflow_kandev", "create_workflow_step_kandev", "delete_workflow_kandev", "delete_workflow_step_kandev", "export_workflow_kandev", "import_workflow_kandev", "list_workflow_steps_kandev", "list_workflows_kandev", "reorder_workflow_steps_kandev", "update_workflow_kandev", "update_workflow_step_kandev" ] }, { "id": "office-and-quorum", "audiences": [ "user", "operator" ], "stability": "beta", "docs": [ "automation-and-mcp", "tasks-and-workflows" ], "sources": [ "apps/backend/cmd/agentctl/kandev_task.go", "apps/backend/internal/office/configloader/skills/kandev-step-decision/SKILL.md", "apps/backend/internal/office/runtime/handler.go", "apps/backend/internal/office/dashboard/agent_decisions.go" ], "tests": [ "apps/backend/cmd/agentctl/kandev_task_decision_test.go", "apps/backend/internal/office/runtime/handler_decision_test.go", "apps/backend/internal/office/dashboard/agent_decisions_test.go" ], "mcpTools": [] }, { "id": "task-lifecycle", "audiences": [ "user" ], "stability": "stable", "docs": [ "tasks-and-workflows", "coordination", "git-operations" ], "sources": [ "apps/backend/internal/orchestrator/task_operations.go", "apps/backend/internal/mcp/handlers/config_task_handlers.go", "apps/backend/internal/mcp/handlers/stop_task.go", "apps/backend/internal/mcp/server/handlers.go", "apps/backend/internal/mcp/server/server.go", "apps/backend/internal/mcp/server/dependency_handlers.go", "apps/backend/internal/mcp/handlers/dependency_handlers.go", "apps/backend/internal/task/service/service_dependencies.go", "apps/backend/internal/orchestrator/event_handlers_dependencies.go", "apps/backend/internal/gateway/websocket/client.go" ], "tests": [ "apps/backend/internal/orchestrator/task_operations_test.go", "apps/backend/internal/orchestrator/coordinator_stop_test.go", "apps/backend/internal/mcp/handlers/handlers_test.go", "apps/backend/internal/mcp/handlers/stop_task_test.go", "apps/backend/internal/mcp/server/handlers_test.go", "apps/backend/internal/mcp/server/server_test.go", "apps/backend/internal/mcp/server/sysprompt_sync_test.go", "apps/backend/internal/backendapp/mcp_stop_composition_test.go", "apps/backend/internal/integration/mcp_stop_task_test.go", "apps/backend/internal/gateway/websocket/client_mcp_actions_test.go", "apps/backend/internal/task/service/service_dependencies_test.go", "apps/backend/internal/orchestrator/event_handlers_dependencies_test.go" ], "mcpTools": [ "add_branch_to_task_kandev", "add_task_dependency_kandev", "add_workspace_sources_kandev", "archive_task_kandev", "create_task_kandev", "delete_task_kandev", "list_tasks_kandev", "move_task_kandev", "remove_task_dependency_kandev", "set_task_title_kandev", "step_complete_kandev", "stop_task_kandev", "update_repository_base_branch_kandev", "update_task_kandev", "update_task_state_kandev" ] }, { "id": "sessions-and-coordination", "audiences": [ "user" ], "stability": "stable", "docs": [ "sessions-and-review", "coordination", "automation-and-mcp", "agent-communication" ], "sources": [ "apps/backend/internal/mcp/handlers/spawn_session.go", "apps/backend/internal/mcp/handlers/parent_question.go", "apps/backend/internal/mcp/handlers/agent_permissions.go", "apps/backend/internal/mcp/server/question_handlers.go", "apps/backend/internal/mcp/handlers/question_handlers.go", "apps/backend/internal/clarification/resolver.go", "apps/web/components/task/dockview-session-tabs.ts", "apps/web/components/threads/thread-task-actions.tsx", "apps/web/components/task/task-management-surface.tsx" ], "tests": [ "apps/backend/internal/mcp/handlers/spawn_session_test.go", "apps/backend/internal/mcp/handlers/parent_question_test.go", "apps/backend/internal/mcp/handlers/agent_permissions_test.go", "apps/backend/internal/integration/agent_permission_mcp_test.go", "apps/backend/internal/mcp/server/external_integration_test.go", "apps/web/components/task/dockview-session-tabs.test.ts", "apps/web/e2e/tests/task/threads-task-actions.spec.ts", "apps/web/e2e/tests/task/mobile-threads-task-actions.spec.ts" ], "mcpTools": [ "answer_question_kandev", "ask_parent_question_kandev", "ask_user_question_kandev", "get_task_conversation_kandev", "get_task_document_kandev", "list_related_tasks_kandev", "list_pending_agent_permissions_kandev", "list_pending_questions_kandev", "list_task_documents_kandev", "list_task_sessions_kandev", "message_task_kandev", "resolve_agent_permission_kandev", "spawn_session_kandev", "write_task_document_kandev" ] }, { "id": "plans-walkthroughs-and-review", "audiences": [ "user" ], "stability": "stable", "docs": [ "sessions-and-review", "developer-tools", "automation-and-mcp" ], "sources": [ "apps/backend/internal/mcp/handlers/review.go", "apps/backend/internal/mcp/handlers/task_plan_edit.go", "apps/backend/internal/mcp/handlers/task_plan_recovery.go", "apps/backend/internal/task/service/plan_exact_edit.go", "apps/backend/internal/task/service/plan_revision_recovery.go", "apps/web/components/review/review-dialog.tsx", "apps/web/components/review/walkthrough-overlay.tsx" ], "tests": [ "apps/backend/internal/mcp/handlers/review_test.go", "apps/backend/internal/mcp/handlers/task_plan_safe_edits_test.go", "apps/backend/internal/mcp/server/task_plan_safe_edits_integration_test.go", "apps/backend/internal/task/service/plan_exact_edit_test.go", "apps/backend/internal/task/service/plan_agent_recovery_test.go", "apps/web/components/review/review-dialog.build-files.test.ts", "apps/web/components/review/walkthrough-overlay.test.tsx" ], "mcpTools": [ "create_task_plan_kandev", "delete_task_plan_kandev", "delete_walkthrough_kandev", "edit_task_plan_kandev", "get_task_plan_kandev", "get_task_plan_revision_kandev", "get_walkthrough_kandev", "list_task_plan_revisions_kandev", "publish_review_findings_kandev", "restore_task_plan_revision_kandev", "show_walkthrough_kandev", "update_task_plan_kandev" ] }, { "id": "developer-workbench-and-git", "audiences": [ "user" ], "stability": "stable", "docs": [ "developer-tools", "git-operations", "sessions-and-review" ], "sources": [ "apps/web/components/session-commands.tsx", "apps/web/components/task/chat/messages/shell-output-disclosure.tsx", "apps/web/components/task/chat/token-usage-display.tsx", "apps/web/components/task/editors-menu.tsx", "apps/backend/internal/agentctl/server/process/workspace_git_status.go" ], "tests": [ "apps/web/e2e/tests/command-panel.spec.ts", "apps/web/e2e/tests/task/editors-menu-worktree-picker.spec.ts", "apps/web/hooks/domains/session/use-shell-command-output.test.ts", "apps/web/components/task/chat/token-usage-display.test.tsx", "apps/backend/internal/agentctl/server/process/workspace_git_status_test.go" ] }, { "id": "language-server-intelligence", "audiences": [ "user", "operator" ], "stability": "experimental", "docs": [ "developer-tools", "feature-status", "configuration" ], "sources": [ "apps/backend/internal/gateway/websocket/lsp_handler.go", "apps/backend/internal/agentctl/server/api/lsp.go", "apps/web/lib/lsp/lsp-client-manager.ts" ], "tests": [ "apps/backend/internal/gateway/websocket/lsp_handler_test.go", "apps/backend/internal/agentctl/server/api/lsp_test.go", "apps/web/lib/lsp/lsp-client-manager.test.ts", "apps/web/e2e/tests/lsp/lsp-file-intelligence.spec.ts", "apps/web/e2e/tests/lsp/mobile-lsp-file-intelligence.spec.ts", "apps/web/e2e/tests/docker/lsp-file-intelligence.spec.ts", "apps/web/e2e/tests/ssh/lsp-unsupported-executor.spec.ts" ] }, { "id": "agents-profiles-and-prompts", "audiences": [ "user" ], "stability": "stable", "docs": [ "agents-and-profiles", "configuration", "add-agent-cli" ], "sources": [ "apps/backend/internal/profiles/profiles.go", "apps/backend/internal/backendapp/settings_operations.go", "apps/backend/internal/settingscatalog/catalog.go", "apps/backend/internal/mcp/handlers/settings_handlers.go", "apps/backend/internal/mcp/server/settings_tools.go", "apps/web/app/settings/agents/page.tsx", "apps/web/hooks/domains/settings/use-dynamic-models.ts" ], "tests": [ "apps/backend/internal/profiles/profiles_test.go", "apps/backend/internal/backendapp/settings_operations_test.go", "apps/backend/internal/mcp/handlers/settings_handlers_test.go", "apps/backend/internal/mcp/server/settings_tools_test.go", "apps/web/components/settings/agent-profile-page.test.tsx", "apps/web/lib/settings-discovery/coverage-inventory.test.ts", "apps/web/hooks/domains/settings/use-dynamic-models.test.ts" ], "settingsRoutes": [ "/settings/agents", "/settings/agents/browse", "/settings/prompts", "/settings/utility-agents" ], "mcpTools": [ "create_agent_profile_kandev", "delete_agent_profile_kandev", "list_agent_profiles_kandev", "list_agents_kandev", "update_agent_kandev", "update_agent_profile_kandev", "search_settings_kandev", "describe_setting_kandev", "get_settings_kandev", "update_settings_kandev", "list_settings_resources_kandev" ] }, { "id": "executors-and-environments", "audiences": [ "user", "operator" ], "stability": "stable", "docs": [ "executors", "remote-cloud-environment", "docker", "k8s" ], "sources": [ "apps/backend/internal/agent/executor/executor.go", "apps/backend/internal/agent/kubernetes/config.go", "apps/backend/internal/agent/runtime/lifecycle/executor_kubernetes.go", "apps/backend/internal/kubernetes/handlers.go", "apps/web/app/settings/executors/page.tsx", "apps/web/app/settings/executors/k8s/[executorId]/page.tsx", "k8s/executor-rbac.yaml" ], "tests": [ "apps/backend/internal/agent/runtime/lifecycle/executor_kubernetes_test.go", "apps/backend/internal/kubernetes/handlers_test.go", "apps/backend/internal/task/service/service_resources_kubernetes_test.go", "apps/web/components/settings/kubernetes-config.test.ts", "apps/web/e2e/tests/docker/docker-launch.spec.ts", "apps/web/e2e/tests/settings/kubernetes-executor.spec.ts", "apps/web/e2e/tests/settings/mobile-kubernetes-executor.spec.ts", "apps/web/e2e/tests/ssh/executor-crud.spec.ts" ], "settingsRoutes": [ "/settings/executor/new", "/settings/executors" ], "mcpTools": [ "create_executor_profile_kandev", "delete_executor_profile_kandev", "list_executor_profiles_kandev", "list_executors_kandev", "update_executor_profile_kandev" ] }, { "id": "provider-integrations", "audiences": [ "user", "operator" ], "stability": "stable", "docs": [ "integrations", "configuration" ], "sources": [ "apps/web/components/app-sidebar/sections/integrations-section.tsx", "apps/backend/internal/integrations/workspacescope/workspacescope.go", "apps/backend/internal/azuredevops/service.go", "apps/web/app/azure-devops/azure-devops-page-client.tsx", "apps/backend/internal/github/app_registration_lifecycle_service.go", "apps/backend/internal/github/app_registration_import.go", "apps/web/lib/api/domains/github-auth-api.ts", "apps/backend/internal/mcp/server/server.go", "apps/backend/internal/mcp/handlers/task_change_link.go", "apps/backend/internal/backendapp/task_change_link_coordinator.go" ], "tests": [ "apps/web/components/app-sidebar/sections/integrations-section.test.tsx", "apps/backend/internal/integrations/workspacescope/workspacescope_test.go", "apps/backend/internal/azuredevops/service_test.go", "apps/web/e2e/tests/integrations/azure-devops.spec.ts", "apps/backend/internal/github/controller_app_registration_test.go", "apps/backend/internal/github/app_registration_import_test.go", "apps/web/e2e/tests/settings/github-app-registration.spec.ts", "apps/backend/internal/mcp/server/handlers_test.go", "apps/backend/internal/mcp/handlers/task_change_link_test.go", "apps/backend/internal/backendapp/task_change_link_coordinator_test.go" ], "settingsRoutes": [ "/settings/integrations", "/settings/integrations/azure-devops", "/settings/integrations/github", "/settings/integrations/gitlab", "/settings/integrations/jira", "/settings/integrations/linear", "/settings/integrations/sentry" ], "mcpTools": [ "get_task_change_requests_kandev", "manage_task_change_request_kandev", "report_change_request_auto_fix_outcome_kandev", "update_task_change_request_automation_kandev" ] }, { "id": "automations-and-external-mcp", "audiences": [ "user", "operator" ], "stability": "stable", "docs": [ "automation-and-mcp", "crashlytics-alerts", "integrations", "workflow-tips" ], "sources": [ "apps/backend/internal/automation/service.go", "apps/backend/internal/automation/webhook.go", "apps/backend/internal/automation/webhook_filters.go", "apps/backend/internal/mcp/server/server.go", "apps/backend/internal/mcp/server/config_automation_handlers.go" ], "tests": [ "apps/backend/internal/automation/service_test.go", "apps/backend/internal/automation/webhook_test.go", "apps/backend/internal/automation/webhook_filters_test.go", "apps/backend/internal/mcp/server/server_test.go", "apps/backend/internal/mcp/server/config_automation_integration_test.go" ], "settingsRoutes": [ "/settings/automations", "/settings/external-mcp" ], "mcpTools": [ "create_automation_kandev", "get_mcp_config_kandev", "update_mcp_config_kandev", "list_shared_prompts_kandev", "get_shared_prompt_kandev" ] }, { "id": "personal-settings-and-secrets", "audiences": [ "user" ], "stability": "stable", "docs": [ "security", "configuration", "developer-tools", "operations", "sessions-and-review" ], "sources": [ "apps/web/src/settings-routes.tsx", "apps/web/components/settings/settings-index.tsx", "apps/web/components/settings/general-settings.tsx", "apps/web/components/settings/layouts/layout-settings.tsx", "apps/backend/internal/user/service/sidebar_layouts.go", "apps/web/components/settings/sidebar-layout-editor.tsx", "apps/web/hooks/domains/sidebar/use-sidebar-layout-navigation.ts", "docs/public/use-kandev.md" ], "tests": [ "apps/web/src/settings-routes.test.ts", "apps/web/components/settings/settings-index.test.tsx", "apps/web/components/settings/terminal-settings.test.ts", "apps/web/lib/layout/layout-profiles.test.ts", "apps/backend/internal/user/service/sidebar_layout_test.go", "apps/web/components/settings/sidebar-layout-editor.test.tsx", "apps/web/components/app-sidebar/shortcut-section.test.tsx", "apps/web/hooks/domains/sidebar/use-shortcut-activity.test.ts", "apps/web/lib/sidebar/layout-operations.test.ts", "apps/web/hooks/domains/sidebar/use-sidebar-shortcut-catalog.test.ts", "apps/web/components/runs/use-workspace-automations.test.ts", "apps/web/components/navigation/app-nav-sheet.test.tsx", "apps/web/e2e/tests/automations-sidebar.spec.ts", "apps/web/e2e/tests/settings/sidebar-customization.spec.ts", "apps/web/e2e/tests/settings/mobile-sidebar-customization.spec.ts" ], "settingsRoutes": [ "/settings", "/settings/preferences", "/settings/preferences/appearance", "/settings/preferences/keyboard-shortcuts", "/settings/preferences/layouts", "/settings/preferences/notifications", "/settings/preferences/task-behavior", "/settings/preferences/terminal-editors", "/settings/sidebar", "/settings/secrets", "/settings/general", "/settings/general/appearance", "/settings/general/editors", "/settings/general/keyboard-shortcuts", "/settings/general/layouts", "/settings/general/notifications", "/settings/general/secrets", "/settings/general/sprites", "/settings/general/task-actions", "/settings/general/terminal" ] }, { "id": "security-and-trust", "audiences": [ "user", "operator" ], "stability": "stable", "docs": [ "security", "mobile-remote-access", "configuration", "executors", "automation-and-mcp", "operations" ], "sources": [ "apps/backend/internal/backendapp/middleware.go", "apps/backend/internal/gateway/websocket/origin.go", "apps/backend/internal/secrets/crypto.go" ], "tests": [ "apps/backend/internal/backendapp/middleware_test.go", "apps/backend/internal/gateway/websocket/origin_test.go" ] }, { "id": "authentication-and-access", "audiences": [ "user", "operator" ], "stability": "experimental", "docs": [ "authentication" ], "sources": [ "apps/backend/internal/auth/httpmw/middleware.go", "apps/backend/internal/auth/service.go", "apps/backend/internal/auth/httpapi/handlers.go", "apps/web/components/app-sidebar/current-user-chip.tsx" ], "tests": [ "apps/backend/internal/auth/httpapi/handlers_test.go", "apps/backend/internal/auth/httpmw/middleware_test.go", "apps/web/lib/state/slices/auth/auth-slice.test.ts" ], "settingsRoutes": [ "/settings/system/users", "/settings/account/security", "/settings/account/tokens" ] }, { "id": "team-access", "audiences": ["user", "operator"], "stability": "experimental", "docs": ["team-access"], "sources": [ "apps/backend/internal/authz/scopes.go", "apps/backend/internal/authz/roles.go", "apps/backend/internal/authz/resolve.go", "apps/backend/internal/task/service/service_access.go", "apps/backend/internal/task/service/service_members.go", "apps/web/components/settings/workspaces/workspace-team-access-card.tsx", "apps/web/components/task/task-assignee-control.tsx", "apps/web/components/kanban-card-assignee-badge.tsx", "apps/web/hooks/domains/users/use-assignable-people.ts", "apps/web/components/settings/workspaces/workspace-placement-card.tsx" ], "tests": [ "apps/backend/internal/authz/resolve_test.go", "apps/backend/internal/authz/registry_test.go", "apps/backend/internal/task/service/service_team_access_test.go", "apps/web/lib/types/team-access.test.ts", "apps/backend/internal/task/service/service_events_assignee_test.go", "apps/web/components/task/task-assignee-control.test.tsx", "apps/web/lib/ws/handlers/tasks-assignee.test.ts", "apps/web/components/settings/workspaces/workspace-placement-card.test.tsx" ], "settingsRoutes": ["/settings/units"] }, { "id": "organizations", "audiences": ["operator"], "stability": "experimental", "docs": ["organizations"], "sources": [ "apps/backend/internal/org/service.go", "apps/backend/internal/org/store.go", "apps/backend/internal/org/controller.go", "apps/web/components/settings/system/organizations/organizations-page.tsx" ], "tests": [ "apps/backend/internal/authz/resolve_test.go", "apps/backend/internal/task/service/service_team_access_test.go" ], "settingsRoutes": ["/settings/system/organizations"] }, { "id": "system-health-and-maintenance", "audiences": [ "operator" ], "stability": "stable", "docs": [ "operations", "configuration", "feature-status" ], "sources": [ "apps/backend/internal/system/settings/store.go", "apps/backend/internal/system/queuesettings/service.go", "apps/backend/internal/system/storage/handler.go", "apps/backend/internal/system/logbundle/service.go", "apps/backend/internal/mcp/handlers/diagnostic_bundle.go", "apps/web/components/settings/system/feature-toggles-settings.tsx", "apps/web/components/settings/system/message-queue-settings.tsx", "apps/web/components/settings/system/storage/storage-maintenance-settings.tsx" ], "tests": [ "apps/backend/internal/system/settings/store_test.go", "apps/backend/internal/system/queuesettings/queuesettings_test.go", "apps/backend/internal/system/storage/handler_test.go", "apps/backend/internal/system/logbundle/service_test.go", "apps/backend/internal/mcp/handlers/diagnostic_bundle_test.go", "apps/web/components/settings/system/feature-toggles-settings.test.tsx", "apps/web/components/settings/system/message-queue-settings.test.tsx", "apps/web/components/settings/system/storage/storage-maintenance-settings.test.tsx" ], "settingsRoutes": [ "/settings/general/message-queue", "/settings/system/about", "/settings/system/backups", "/settings/system/data-storage", "/settings/system/database", "/settings/system/feature-toggles", "/settings/system/licenses", "/settings/system/logs", "/settings/system/status", "/settings/system/storage", "/settings/system/updates" ], "mcpTools": [ "get_diagnostic_bundle_kandev" ] }, { "id": "deployment-and-platforms", "audiences": [ "operator" ], "stability": "stable", "docs": [ "docker", "k8s", "run-as-a-service", "windows-support", "operations" ], "sources": [ "Dockerfile", "apps/backend/internal/launcher/service.go" ], "tests": [ "apps/web/e2e/tests/docker/docker-launch.spec.ts" ] }, { "id": "office-mode", "audiences": [ "user", "operator" ], "stability": "experimental", "docs": [ "coordination", "feature-status", "office-provider-routing", "office-config-sync" ], "sources": [ "apps/backend/internal/office/routes.go", "apps/web/src/office-routes.tsx", "apps/backend/internal/office/configsync/service.go", "apps/backend/internal/office/configsync/handlers.go", "apps/backend/internal/office/configsync/reconcile.go", "apps/web/app/office/workspace/settings/components/office-config-sync-section.tsx" ], "tests": [ "apps/backend/internal/office/onboarding/service_test.go", "apps/web/src/office-routes.test.ts", "apps/backend/internal/office/configsync/reconcile_test.go", "apps/backend/internal/office/configsync/handlers_test.go", "apps/web/hooks/domains/office/use-office-config-sync.test.ts" ] }, { "id": "plugin-system", "audiences": [ "operator", "contributor" ], "stability": "experimental", "docs": [ "plugins", "plugins-authoring", "plugins-manifest" ], "sources": [ "apps/backend/internal/plugins/handlers.go", "apps/backend/pkg/pluginsdk/host.go", "apps/web/lib/plugins/host-api.ts" ], "tests": [ "apps/backend/internal/plugins/service_test.go", "apps/backend/internal/plugins/manifest/manifest_test.go", "apps/web/lib/plugins/host-api.test.ts" ] }, { "id": "agent-authored-canvases", "audiences": ["user", "operator", "contributor"], "stability": "experimental", "docs": ["canvases"], "sources": [ "apps/backend/internal/canvas/service.go", "apps/backend/internal/canvas/repository.go", "apps/backend/internal/mcp/handlers/canvas.go", "apps/backend/internal/mcp/server/canvas_tools.go", "apps/backend/internal/plugins/instances/store.go", "apps/backend/internal/plugins/manifest/manifest.go", "apps/backend/internal/plugins/manifest/validate.go", "apps/backend/internal/plugins/webapp/package.go", "apps/backend/internal/plugins/webapp/policy.go", "apps/backend/internal/plugins/webapp/runtime.go", "apps/backend/internal/runtimeflags/registry.go", "apps/web/components/plugins/canvas-page.tsx", "apps/web/components/plugins/web-app-frame.tsx", "apps/web/lib/api/domains/canvas-api.ts" ], "tests": [ "apps/backend/internal/canvas/canvas_test.go", "apps/backend/internal/mcp/handlers/canvas_test.go", "apps/backend/internal/mcp/server/canvas_tools_test.go", "apps/backend/internal/plugins/instances/store_test.go", "apps/backend/internal/plugins/manifest/manifest_test.go", "apps/backend/internal/plugins/webapp/package_test.go", "apps/backend/internal/plugins/webapp/policy_test.go", "apps/backend/internal/plugins/webapp/runtime_test.go", "apps/web/components/plugins/canvas-page.test.tsx", "apps/web/components/plugins/web-app-frame.test.tsx", "apps/web/lib/api/domains/canvas-api.test.ts" ], "mcpTools": [ "list_canvases_kandev", "read_canvas_authoring_skill_kandev", "create_canvas_kandev", "get_canvas_kandev", "publish_canvas_kandev", "get_canvas_state_kandev", "set_canvas_state_kandev" ] }, { "id": "plugin-marketplace", "audiences": [ "operator", "contributor" ], "stability": "experimental", "docs": [ "plugins-marketplace" ], "sources": [ "apps/backend/internal/plugins/marketplace/catalog.go", "apps/backend/internal/plugins/marketplace/sourcestore.go", "apps/web/lib/api/domains/marketplace-api.ts" ], "tests": [ "apps/backend/internal/plugins/marketplace/catalog_test.go", "apps/backend/internal/plugins/marketplace/sourcestore_test.go", "apps/web/hooks/domains/plugins/use-marketplace.test.ts" ] }, { "id": "websocket-protocol", "audiences": [ "contributor", "integrator" ], "stability": "stable", "docs": [ "websocket-api", "architecture", "extending-kandev" ], "sources": [ "apps/backend/pkg/websocket/actions.go", "apps/backend/pkg/websocket/handler.go" ], "tests": [ "apps/backend/pkg/websocket/handler_test.go", "apps/backend/pkg/websocket/handler_race_test.go" ] }, { "id": "contributor-workflow", "audiences": [ "contributor" ], "stability": "stable", "docs": [ "contributing", "architecture", "backend-development", "web-development", "testing", "remote-cloud-environment", "extending-kandev", "release-process" ], "sources": [ "CONTRIBUTING.md", "Makefile" ], "tests": [ "scripts/lint-harness-files.test.py", ".github/scripts/lint-action-pinning_test.py" ] } ], "exclusions": { "settingsRoutes": [ { "route": "/settings/changelog", "reason": "Redirect to System updates." }, { "route": "/settings/general/changes-panel", "reason": "Legacy redirect to Appearance." }, { "route": "/settings/general/chat-input", "reason": "Legacy redirect to Keyboard Shortcuts." }, { "route": "/settings/general/resource-metrics", "reason": "Legacy redirect to Appearance." }, { "route": "/settings/general/shell", "reason": "Legacy redirect to Terminal." }, { "route": "/settings/plugins", "reason": "Experimental feature intentionally omitted until its public contract stabilizes." }, { "route": "/settings/system", "reason": "Redirect to System status." }, { "route": "/settings/system/message-queue", "reason": "Legacy redirect to General Message Queue." } ], "mcpTools": [] } }