Files
kandev/docs/public/coverage.json
T
2026-09-06 11:32:14 +01:00

904 lines
30 KiB
JSON

{
"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/internal/mcp/server/agent_decision_tool.go",
"apps/backend/internal/office/dashboard/agent_decisions.go"
],
"tests": [
"apps/backend/internal/mcp/server/agent_decision_tool_test.go",
"apps/backend/internal/office/dashboard/agent_decisions_test.go"
],
"mcpTools": [
"record_step_decision_kandev"
]
},
{
"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"
],
"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"
],
"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/web/components/review/review-dialog.tsx",
"apps/web/components/review/walkthrough-overlay.tsx"
],
"tests": [
"apps/backend/internal/mcp/handlers/review_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",
"get_task_plan_kandev",
"get_walkthrough_kandev",
"publish_review_findings_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/web/app/settings/agents/page.tsx",
"apps/web/hooks/domains/settings/use-dynamic-models.ts"
],
"tests": [
"apps/backend/internal/profiles/profiles_test.go",
"apps/web/components/settings/agent-profile-page.test.tsx",
"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"
]
},
{
"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"
],
"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"
],
"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_mr_automation_kandev",
"get_task_pr_automation_kandev",
"update_task_mr_automation_kandev",
"update_task_pr_automation_kandev"
]
},
{
"id": "automations-and-external-mcp",
"audiences": [
"user",
"operator"
],
"stability": "stable",
"docs": [
"automation-and-mcp",
"integrations",
"workflow-tips"
],
"sources": [
"apps/backend/internal/automation/service.go",
"apps/backend/internal/mcp/server/server.go"
],
"tests": [
"apps/backend/internal/automation/service_test.go",
"apps/backend/internal/mcp/server/server_test.go"
],
"settingsRoutes": [
"/settings/automations",
"/settings/external-mcp"
],
"mcpTools": [
"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"
],
"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"
],
"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/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": []
}
}