{"record":{"id":"51e20526f9ba82ca","repo":"BloopAI/vibe-kanban","slug":"no-repositories-provided","errorCode":null,"errorMessage":"No repositories provided","messagePattern":"No repositories provided","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/local-deployment/src/container.rs","lineNumber":142,"sourceCode":"            approvals,\n            queued_message_service,\n            notification_service,\n            remote_client,\n        };\n\n        container.spawn_workspace_cleanup();\n\n        container\n    }\n\n    fn map_workspace_manager_error(err: WorkspaceError) -> ContainerError {\n        match err {\n            WorkspaceError::Database(err) => ContainerError::Sqlx(err),\n            WorkspaceError::Worktree(err) => ContainerError::Worktree(err),\n            WorkspaceError::GitService(err) => ContainerError::GitServiceError(err),\n            WorkspaceError::Io(err) => ContainerError::Io(err),\n            WorkspaceError::NoRepositories => {\n                ContainerError::Other(anyhow!(\"No repositories provided\"))\n            }\n            WorkspaceError::Repo(err) => ContainerError::Other(anyhow!(err)),\n            WorkspaceError::WorkspaceNotFound => {\n                ContainerError::Other(anyhow!(\"Workspace not found\"))\n            }\n            WorkspaceError::RepoAlreadyAttached => {\n                ContainerError::Other(anyhow!(\"Repository already attached to workspace\"))\n            }\n            WorkspaceError::BranchNotFound { repo_name, branch } => ContainerError::Other(anyhow!(\n                \"Branch '{}' does not exist in repository '{}'\",\n                branch,\n                repo_name\n            )),\n            WorkspaceError::PartialCreation(msg) => ContainerError::Other(anyhow!(msg)),\n        }\n    }\n\n    async fn workspace_repo_inputs(","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/BloopAI/vibe-kanban/blob/4deb7eca8f381f7cbc1f9d15515a9ab8f8009053/crates/local-deployment/src/container.rs#L124-L160","documentation":"map_workspace_manager_error converts WorkspaceManager errors into ContainerError variants. WorkspaceError::NoRepositories — raised when a workspace operation is invoked without any repositories — is mapped to a generic ContainerError::Other carrying the message 'No repositories provided'. It surfaces when creating or mutating a workspace without a repo list.","triggerScenarios":"Calling a container/workspace API (e.g. workspace create/start) with an empty repositories list or None where at least one repository id/path is required.","commonSituations":"Frontend sends a create-workspace request with no repo selected, automation scripts omit the repos field, or upstream code filters out all repos (e.g. none passed validation) leaving an empty list.","solutions":["Pass at least one repository when creating/starting the workspace.","Validate the repository list is non-empty in the caller/UI before invoking the API.","Check why upstream produced an empty list (filtered-out repos, wrong request payload) and fix the data source.","Surface a clearer client-side message prompting repo selection instead of relying on this backend error."],"exampleFix":"// before\ncontainer.create_workspace(&workspace, vec![]).await?;\n// after\nanyhow::ensure!(!repos.is_empty(), \"select at least one repository\");\ncontainer.create_workspace(&workspace, repos).await?;","handlingStrategy":"validation","validationCode":"if repos.is_empty() {\n    return Err(anyhow!(\"At least one repository must be selected\"));\n}\ncontainer.create_workspace(&workspace, repos).await?;","typeGuard":null,"tryCatchPattern":"match container.create_workspace(&workspace, repos).await {\n    Ok(w) => w,\n    Err(e) if e.to_string().contains(\"No repositories provided\") => {\n        // prompt user to pick a repository before retrying\n    }\n    Err(e) => return Err(e.into()),\n}","preventionTips":["Validate the repo list is non-empty in the UI/API layer before calling workspace operations.","Check request payloads for missing/empty 'repos' fields in automation scripts.","Trace why upstream produced an empty list (filters, validation drops).","Surface a repo-selection prompt instead of relying on backend errors."],"tags":["workspace","validation","input-validation"],"backgroundTag":"missing-required-parameter","analyzedSha":"4deb7eca8f381f7cbc1f9d15515a9ab8f8009053","analyzedAt":"2026-08-29T09:24:13.446Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}