@ngocsangairvds/vsaf 3.1.27 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/global.js +70 -10
- package/tools/skills/vds-scripts-skill/.openskills.json +6 -0
- package/tools/skills/vds-scripts-skill/QUALITY.md +44 -0
- package/tools/skills/vds-scripts-skill/SKILL.md +135 -0
- package/tools/skills/vds-scripts-skill/references/audit-commands.md +171 -0
- package/tools/skills/vds-scripts-skill/references/capability-index.md +34 -0
- package/tools/skills/vds-scripts-skill/references/development-commands.md +12 -0
- package/tools/skills/vds-scripts-skill/references/google-sheets.md +73 -0
- package/tools/skills/vds-scripts-skill/references/integration-commands.md +17 -0
- package/tools/skills/vds-scripts-skill/references/platform-bootstrap.md +31 -0
- package/tools/skills/vds-scripts-skill/references/specialist-routing.md +14 -0
- package/tools/skills/vds-scripts-skill/references/validation-commands.md +15 -0
- package/tools/skills/vsaf-build/SKILL.md +32 -2
- package/tools/skills/vsaf-ship/SKILL.md +41 -10
- package/tools/skills/vsaf-test/SKILL.md +8 -0
- package/tools/vds-scripts/.mcp.json +11 -0
- package/tools/vds-scripts/.secrets.baseline +133 -0
- package/tools/vds-scripts/AGENTS.md +152 -0
- package/tools/vds-scripts/CLAUDE.md +101 -0
- package/tools/vds-scripts/CLI_COMMAND_OPTIMIZATION.md +156 -0
- package/tools/vds-scripts/PACKAGE_P125B_IMPLEMENTATION_SUMMARY.md +131 -0
- package/tools/vds-scripts/PROJECT_COMPLETION_SUMMARY.md +45 -0
- package/tools/vds-scripts/README.md +97 -0
- package/tools/vds-scripts/bitbucket_manifest_mapping.toml +34 -0
- package/tools/vds-scripts/bitbucket_orchestrator/ARCHITECTURE_ANALYSIS.md +258 -0
- package/tools/vds-scripts/bitbucket_orchestrator/BITBUCKET_API_PRACTICES.md +393 -0
- package/tools/vds-scripts/bitbucket_orchestrator/EVALUATION_REPORT.md +61 -0
- package/tools/vds-scripts/bitbucket_orchestrator/FEATURES.md +908 -0
- package/tools/vds-scripts/bitbucket_orchestrator/README.md +687 -0
- package/tools/vds-scripts/bitbucket_orchestrator/pyproject.toml +40 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/__init__.py +20 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/async_client.py +657 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/cli.py +2108 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/client.py +2534 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/config.py +171 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/errors.py +67 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/factory.py +185 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/protocols.py +244 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/__init__.py +8 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/conftest.py +65 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_advanced_search.py +151 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_async_client.py +546 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_branch_permissions.py +145 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_cli.py +115 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client.py +157 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_branch_conditions.py +79 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_advanced.py +163 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_file.py +32 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_deployment_environments.py +194 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_issues.py +164 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pipelines_advanced.py +179 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pr_blockers.py +119 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_repository_variables.py +156 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code.py +98 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_advanced.py +282 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_insights.py +335 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_conditions.py +147 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_config.py +131 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_deployment_env.py +352 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_factory.py +371 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_fork_operations.py +204 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_issue_cli.py +261 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pipeline_advanced.py +270 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pr_blocker.py +204 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_protocols.py +334 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_settings.py +343 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_variables.py +270 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_webhooks.py +189 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_workspace.py +233 -0
- package/tools/vds-scripts/bitbucket_orchestrator/uv.lock +742 -0
- package/tools/vds-scripts/confluence_orchestrator/Dockerfile +19 -0
- package/tools/vds-scripts/confluence_orchestrator/README.md +412 -0
- package/tools/vds-scripts/confluence_orchestrator/SYNC_SCRIPTS.md +127 -0
- package/tools/vds-scripts/confluence_orchestrator/SYNC_STANDARDIZATION.md +108 -0
- package/tools/vds-scripts/confluence_orchestrator/pyproject.toml +48 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/__init__.py +20 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/cli.py +2532 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/config.py +175 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content.py +290 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content_v2.py +94 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/crawl_tree.py +1835 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/errors.py +80 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/eventing.py +109 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/http.py +1114 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/orchestration.py +165 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/reporting.py +78 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree.py +121 -0
- package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_from_markdown.py +213 -0
- package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_to_confluence.py +305 -0
- package/tools/vds-scripts/confluence_orchestrator/sync_png_attachments.py +305 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/conftest.py +8 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_content.py +224 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_search.py +188 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_cache_management.py +247 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_cli.py +499 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_config.py +83 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_content.py +186 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_content_flags.py +27 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_crawl_tree.py +2250 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_draft_management.py +223 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing.py +71 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_chaos.py +37 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_rate_limit.py +44 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_timeout.py +49 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_export.py +230 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_history.py +204 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_http.py +117 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_orchestration.py +91 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_reporting.py +24 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_search_cql.py +34 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_space_management.py +237 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_space_permissions.py +332 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_user_group_management.py +388 -0
- package/tools/vds-scripts/confluence_orchestrator/uv.lock +1023 -0
- package/tools/vds-scripts/git_orchestrator/ENHANCEMENT_SUMMARY.md +119 -0
- package/tools/vds-scripts/git_orchestrator/README.md +280 -0
- package/tools/vds-scripts/git_orchestrator/VERIFICATION_REPORT.md +152 -0
- package/tools/vds-scripts/git_orchestrator/pyproject.toml +35 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__init__.py +7 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__main__.py +4 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/cli.py +847 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/logging_config.py +63 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/manifest.py +129 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/orchestrator.py +819 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/reporting.py +53 -0
- package/tools/vds-scripts/git_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_cli_settings.py +21 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_integration.py +74 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_manifest.py +79 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_orchestrator.py +204 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_public_api.py +236 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_resilience.py +345 -0
- package/tools/vds-scripts/git_orchestrator/uv.lock +271 -0
- package/tools/vds-scripts/jira_orchestrator/README.md +770 -0
- package/tools/vds-scripts/jira_orchestrator/pyproject.toml +39 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/__init__.py +1 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/adapter.py +1320 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/cli.py +2271 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/config.py +138 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/errors.py +67 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/reporting.py +65 -0
- package/tools/vds-scripts/jira_orchestrator/tests/__init__.py +1 -0
- package/tools/vds-scripts/jira_orchestrator/tests/conftest.py +86 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_agile_list_payloads.py +54 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_bulk_operations.py +69 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_components.py +57 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_createmeta.py +45 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_dashboard.py +117 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_issue_properties.py +54 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_permissions_compat.py +42 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_reindex.py +42 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_remote_links.py +76 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_transitions.py +91 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_user_management.py +110 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_version_management.py +133 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_watchers.py +41 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_advanced_search.py +164 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_agile.py +256 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_application_properties.py +193 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_backlog.py +91 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_bulk_operations.py +277 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_cli.py +106 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_components.py +106 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_config.py +164 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_dashboard.py +122 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_discover_fields.py +207 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_filter_management.py +333 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_issue_archiving.py +164 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_issue_links.py +257 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_issue_properties.py +171 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_link_types.py +314 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_parse_set.py +37 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_permissions.py +273 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_reindex.py +81 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_remote_links.py +254 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_security_schemes.py +170 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_transitions_changelog.py +114 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_user_management.py +226 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_version_management.py +339 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_watchers.py +101 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_worklog.py +223 -0
- package/tools/vds-scripts/jira_orchestrator/uv.lock +738 -0
- package/tools/vds-scripts/mcp_server/Dockerfile +34 -0
- package/tools/vds-scripts/mcp_server/README.md +140 -0
- package/tools/vds-scripts/mcp_server/pyproject.toml +42 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/__init__.py +4 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/config.py +36 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/server.py +66 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/__init__.py +14 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/bitbucket_tools.py +47 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/confluence_tools.py +59 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/git_tools.py +71 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/jira_tools.py +63 -0
- package/tools/vds-scripts/mcp_server/tests/__init__.py +2 -0
- package/tools/vds-scripts/mcp_server/tests/conftest.py +29 -0
- package/tools/vds-scripts/mcp_server/tests/unit/__init__.py +2 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_bitbucket_tools.py +25 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_confluence_tools.py +25 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_git_tools.py +32 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_jira_tools.py +32 -0
- package/tools/vds-scripts/mcp_server/tests/verification/__init__.py +2 -0
- package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_confluence_tools.py +40 -0
- package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_jira_tools.py +37 -0
- package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_tool_registration.py +47 -0
- package/tools/vds-scripts/mcp_server/uv.lock +1032 -0
- package/tools/vds-scripts/mypy.ini +5 -0
- package/tools/vds-scripts/pyproject.toml +29 -0
- package/tools/vds-scripts/repo-manifest.yaml +273 -0
- package/tools/vds-scripts/repo-manifest.yaml.example +25 -0
- package/tools/vds-scripts/scripts/BRD-Validation-API.postman_collection.json +706 -0
- package/tools/vds-scripts/scripts/BRD-Validation-README.md +308 -0
- package/tools/vds-scripts/scripts/README.md +162 -0
- package/tools/vds-scripts/scripts/bootstrap_uv.sh +30 -0
- package/tools/vds-scripts/scripts/brd-validation-environment.json +51 -0
- package/tools/vds-scripts/scripts/brd-validation-test-results.json +13023 -0
- package/tools/vds-scripts/scripts/brd_coverage_report.json +276 -0
- package/tools/vds-scripts/scripts/create_memory_session.py +35 -0
- package/tools/vds-scripts/scripts/deployment/load_docker_images_offline.sh +90 -0
- package/tools/vds-scripts/scripts/final_completion_report.md +139 -0
- package/tools/vds-scripts/scripts/folder_structure_report.json +321 -0
- package/tools/vds-scripts/scripts/generate_completion_report.py +125 -0
- package/tools/vds-scripts/scripts/generate_intellij_modules.py +150 -0
- package/tools/vds-scripts/scripts/link_integrity_report.json +807 -0
- package/tools/vds-scripts/scripts/move_audit_artifact_pages.py +255 -0
- package/tools/vds-scripts/scripts/move_audit_artifact_pages_rest.py +165 -0
- package/tools/vds-scripts/scripts/move_wrong_dept_pages.py +216 -0
- package/tools/vds-scripts/scripts/save_intellij_memories.py +120 -0
- package/tools/vds-scripts/scripts/save_memories_to_vds_ai.py +83 -0
- package/tools/vds-scripts/scripts/save_memories_vds_style.py +129 -0
- package/tools/vds-scripts/scripts/search_intellij_memories.py +50 -0
- package/tools/vds-scripts/scripts/setup_intellij_workspace.py +65 -0
- package/tools/vds-scripts/scripts/target-state-automation/README.md +89 -0
- package/tools/vds-scripts/scripts/target-state-automation/confluence_sync_coordinator.sh +27 -0
- package/tools/vds-scripts/scripts/target-state-automation/coordination.sh +114 -0
- package/tools/vds-scripts/scripts/target-state-automation/diagram_coordinator.sh +25 -0
- package/tools/vds-scripts/scripts/target-state-automation/docs_root.sh +22 -0
- package/tools/vds-scripts/scripts/target-state-automation/generate_diagrams.sh +22 -0
- package/tools/vds-scripts/scripts/target-state-automation/markdown_coordinator.sh +25 -0
- package/tools/vds-scripts/scripts/target-state-automation/progress_dashboard.sh +17 -0
- package/tools/vds-scripts/scripts/target-state-automation/schema_coordinator.sh +25 -0
- package/tools/vds-scripts/scripts/target-state-automation/sync_confluence.sh +30 -0
- package/tools/vds-scripts/scripts/target-state-automation/update_dependencies.sh +19 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_links.sh +86 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_markdown.sh +52 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_schemas.sh +26 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_structure.sh +98 -0
- package/tools/vds-scripts/scripts/update_modules_xml.py +190 -0
- package/tools/vds-scripts/scripts/uv-workspace-alignment-verification-2026-03-25.md +128 -0
- package/tools/vds-scripts/scripts/validate_brd_coverage.py +179 -0
- package/tools/vds-scripts/scripts/validate_folder_structure.py +240 -0
- package/tools/vds-scripts/scripts/validate_link_integrity.py +272 -0
- package/tools/vds-scripts/scripts/vds_sh_helpers.sh +180 -0
- package/tools/vds-scripts/scripts/verification/phase2_portable_paths_ubuntu_docker.sh +26 -0
- package/tools/vds-scripts/scripts/worktree_uv.sh +48 -0
- package/tools/vds-scripts/uv.lock +8 -0
- package/tools/vds-scripts/vds_cli/README.md +126 -0
- package/tools/vds-scripts/vds_cli/VERIFICATION_REPORT.md +41 -0
- package/tools/vds-scripts/vds_cli/pyproject.toml +38 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/__init__.py +3 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/cli.py +173 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/docs_sync.py +1203 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/env.py +41 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/__init__.py +3 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/google_sheets_orchestrator.py +198 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/router.py +93 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/sync_api.py +647 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/sync_service.py +266 -0
- package/tools/vds-scripts/vds_cli/tests/__init__.py +2 -0
- package/tools/vds-scripts/vds_cli/tests/conftest.py +49 -0
- package/tools/vds-scripts/vds_cli/tests/unit/__init__.py +2 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_cli.py +143 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_docs_sync.py +422 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_env.py +51 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_router.py +72 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_sync_api.py +357 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_sync_service.py +160 -0
- package/tools/vds-scripts/vds_cli/tests/verification/__init__.py +2 -0
- package/tools/vds-scripts/vds_cli/tests/verification/test_bitbucket_real.py +33 -0
- package/tools/vds-scripts/vds_cli/tests/verification/test_confluence_real.py +35 -0
- package/tools/vds-scripts/vds_cli/tests/verification/test_jira_real.py +41 -0
- package/tools/vds-scripts/vds_cli/uv.lock +524 -0
- package/tools/vds-scripts/vds_cli_common/README.md +190 -0
- package/tools/vds-scripts/vds_cli_common/pyproject.toml +92 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/__init__.py +34 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/completers.py +139 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/context.py +201 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/env.py +119 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/errors.py +318 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/output.py +284 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/paths.py +78 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/testing.py +213 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/version.py +85 -0
- package/tools/vds-scripts/vds_cli_common/tests/__init__.py +1 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_completers.py +148 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_context.py +192 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_env.py +102 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_errors.py +186 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_output.py +229 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_paths.py +61 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_testing.py +138 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_version.py +64 -0
|
@@ -0,0 +1,687 @@
|
|
|
1
|
+
# VDS Bitbucket Orchestrator
|
|
2
|
+
|
|
3
|
+
Python toolkit for Bitbucket operations using the `atlassian-python-api` SDK. Provides a unified CLI interface for
|
|
4
|
+
repository management, pull requests, pipelines, and Bitbucket automation.
|
|
5
|
+
|
|
6
|
+
## Quick Start
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
cd vds-scripts
|
|
10
|
+
# Optional: run the shared bootstrap to sync all packages
|
|
11
|
+
./scripts/bootstrap_uv.sh
|
|
12
|
+
|
|
13
|
+
# Package-specific sync & tests (only when you need dev deps)
|
|
14
|
+
uv sync --project bitbucket_orchestrator --extra dev
|
|
15
|
+
uv run --project bitbucket_orchestrator pytest
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Run the CLI directly (uv automatically activates the project environment once the project has been synced at least
|
|
19
|
+
once):
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Using uv run (console script)
|
|
23
|
+
uv run --project bitbucket_orchestrator vds-bitbucket-cli --help
|
|
24
|
+
|
|
25
|
+
# Using the unified VDS CLI
|
|
26
|
+
uv run --project vds_cli vds-cli env load
|
|
27
|
+
uv run --project vds_cli vds-cli bitbucket projects
|
|
28
|
+
uv run --project vds_cli vds-cli bitbucket repositories PROJECT_KEY
|
|
29
|
+
uv run --project vds_cli vds-cli bitbucket pull-requests PROJECT_KEY REPO_SLUG
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Agent-friendly output**
|
|
33
|
+
- When invoking via `vds-cli`, pass Typer flags after `--`, e.g. `vds-cli bitbucket -- --json-only projects`.
|
|
34
|
+
- `--json-only` emits clean JSON to stdout and skips writing reports/markdown (and suppresses logs).
|
|
35
|
+
- `--no-reports` keeps normal console output while avoiding filesystem writes.
|
|
36
|
+
|
|
37
|
+
## Available Commands
|
|
38
|
+
|
|
39
|
+
### Project Operations
|
|
40
|
+
|
|
41
|
+
- **`projects`** - List all Bitbucket projects
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
uv run --project vds_cli vds-cli bitbucket projects --limit 50
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
- **`create-project`** - Create a new project
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
uv run --project vds_cli vds-cli bitbucket create-project PROJECT_KEY "Project Name" \
|
|
51
|
+
--description "Project description"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Repository Operations
|
|
55
|
+
|
|
56
|
+
- **`repositories`** - List repositories in a project
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
uv run --project vds_cli vds-cli bitbucket repositories PROJECT_KEY --limit 25
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
- **Repository Management** - Full CRUD operations via Python client
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
from vds_bitbucket_orchestrator.client import BitbucketClient
|
|
66
|
+
from vds_bitbucket_orchestrator.config import load_settings
|
|
67
|
+
|
|
68
|
+
settings = load_settings(strict=True)
|
|
69
|
+
client = BitbucketClient(settings)
|
|
70
|
+
|
|
71
|
+
# Create repository
|
|
72
|
+
client.create_repository("INSURANCE", "vds-ai-memory", is_private=True)
|
|
73
|
+
|
|
74
|
+
# Get repository
|
|
75
|
+
repo = client.get_repository("INSURANCE", "vds-ai-memory")
|
|
76
|
+
|
|
77
|
+
# Update repository
|
|
78
|
+
client.update_repository("INSURANCE", "vds-ai-memory", description="Updated")
|
|
79
|
+
|
|
80
|
+
# Delete repository (DANGER!)
|
|
81
|
+
# client.delete_repository("INSURANCE", "vds-ai-memory")
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
See `BITBUCKET_API_PRACTICES.md` for complete API reference aligned with
|
|
85
|
+
[Atlassian Python API documentation](https://atlassian-python-api.readthedocs.io/bitbucket.html).
|
|
86
|
+
|
|
87
|
+
- **`fork`** - Fork repository operations
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Fork repository within same project
|
|
91
|
+
uv run --project vds_cli vds-cli bitbucket fork create PROJECT_KEY REPO_SLUG \
|
|
92
|
+
--new-repo REPO_FORK --yes
|
|
93
|
+
|
|
94
|
+
# Fork repository to new project
|
|
95
|
+
uv run --project vds_cli vds-cli bitbucket fork create PROJECT_KEY REPO_SLUG \
|
|
96
|
+
--new-project NEW_PROJECT_KEY --new-repo NEW_REPO_SLUG --yes
|
|
97
|
+
|
|
98
|
+
# List forks of a repository
|
|
99
|
+
uv run --project vds_cli vds-cli bitbucket fork list PROJECT_KEY REPO_SLUG
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
> **Note**: Fork operations require `--yes` flag for confirmation. The `list` action uses heuristic-based filtering
|
|
103
|
+
> and may not capture all forks.
|
|
104
|
+
|
|
105
|
+
### Pull Request Operations
|
|
106
|
+
|
|
107
|
+
- **`pull-requests`** - List pull requests
|
|
108
|
+
```bash
|
|
109
|
+
uv run --project vds_cli vds-cli bitbucket pull-requests PROJECT_KEY REPO_SLUG \
|
|
110
|
+
--state OPEN \
|
|
111
|
+
--order newest \
|
|
112
|
+
--limit 100
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Pipeline Operations (Bitbucket Cloud Only)
|
|
116
|
+
|
|
117
|
+
- **`pipelines`** - List pipelines
|
|
118
|
+
```bash
|
|
119
|
+
uv run --project vds_cli vds-cli bitbucket pipelines WORKSPACE REPOSITORY --limit 10
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### User and Group Management
|
|
123
|
+
|
|
124
|
+
- **`groups`** - List all groups
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
uv run --project vds_cli vds-cli bitbucket groups --filter "developers" --limit 50
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
- **`project-users`** - List users with permissions for a project
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
uv run --project vds_cli vds-cli bitbucket project-users PROJECT_KEY \
|
|
134
|
+
--filter "john" \
|
|
135
|
+
--limit 25
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- **`project-groups`** - List groups with permissions for a project
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
uv run --project vds_cli vds-cli bitbucket project-groups PROJECT_KEY \
|
|
142
|
+
--filter "developers" \
|
|
143
|
+
--limit 25
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Permission Management
|
|
147
|
+
|
|
148
|
+
- **`grant-group-repo`** - Grant group permissions to a repository
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
uv run --project vds_cli vds-cli bitbucket grant-group-repo PROJECT_KEY REPO_SLUG \
|
|
152
|
+
GROUP_NAME write
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
- **`branch-permissions`** - Branch permissions management
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
uv run --project vds_cli vds-cli bitbucket branch-permissions get PROJECT_KEY --permission-id 1
|
|
159
|
+
uv run --project vds_cli vds-cli bitbucket branch-permissions set PROJECT_KEY \
|
|
160
|
+
--matcher-type BRANCH --matcher-value "refs/heads/master" \
|
|
161
|
+
--permission-type READ_ONLY --yes
|
|
162
|
+
uv run --project vds_cli vds-cli bitbucket branch-permissions delete PROJECT_KEY --permission-id 1 --yes
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
- **`conditions`** - Conditions-Reviewers management
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
uv run --project vds_cli vds-cli bitbucket conditions list PROJECT_KEY
|
|
169
|
+
uv run --project vds_cli vds-cli bitbucket conditions get PROJECT_KEY --condition-id 1
|
|
170
|
+
uv run --project vds_cli vds-cli bitbucket conditions create PROJECT_KEY \
|
|
171
|
+
--condition-file condition.json --yes
|
|
172
|
+
uv run --project vds_cli vds-cli bitbucket conditions list PROJECT_KEY --repo REPO_SLUG
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
- **`code`** - Code/file content operations
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
uv run --project vds_cli vds-cli bitbucket code file PROJECT_KEY REPO_SLUG --file "path/to/file.py"
|
|
179
|
+
uv run --project vds_cli vds-cli bitbucket code commits PROJECT_KEY REPO_SLUG --limit 50
|
|
180
|
+
uv run --project vds_cli vds-cli bitbucket code diff PROJECT_KEY REPO_SLUG \
|
|
181
|
+
--file "path/to/file.py" --hash-oldest abc123 --hash-newest def456
|
|
182
|
+
uv run --project vds_cli vds-cli bitbucket code changelog PROJECT_KEY REPO_SLUG \
|
|
183
|
+
--ref-from master --ref-to develop
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Webhook Management (Bitbucket Cloud Only)
|
|
187
|
+
|
|
188
|
+
- **`webhooks`** - Manage repository webhooks
|
|
189
|
+
```bash
|
|
190
|
+
# List webhooks (optionally filter by event, include statistics)
|
|
191
|
+
uv run --project vds_cli vds-cli bitbucket webhooks list PROJECT_KEY REPO_SLUG --filter-event "repo:push"
|
|
192
|
+
|
|
193
|
+
# Create a webhook (requires --yes confirmation)
|
|
194
|
+
uv run --project vds_cli vds-cli bitbucket webhooks create PROJECT_KEY REPO_SLUG \
|
|
195
|
+
--name "CI Hook" \
|
|
196
|
+
--url "https://ci.example.com/bitbucket" \
|
|
197
|
+
--event repo:push \
|
|
198
|
+
--event pr:opened \
|
|
199
|
+
--yes
|
|
200
|
+
|
|
201
|
+
# Update a webhook
|
|
202
|
+
uv run --project vds_cli vds-cli bitbucket webhooks update PROJECT_KEY REPO_SLUG \
|
|
203
|
+
--webhook-id 42 \
|
|
204
|
+
--name "Updated Hook" \
|
|
205
|
+
--set-inactive \
|
|
206
|
+
--yes
|
|
207
|
+
|
|
208
|
+
# Delete a webhook
|
|
209
|
+
uv run --project vds_cli vds-cli bitbucket webhooks delete PROJECT_KEY REPO_SLUG \
|
|
210
|
+
--webhook-id 42 \
|
|
211
|
+
--yes
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Cloud Workspace Operations (Bitbucket Cloud Only)
|
|
215
|
+
|
|
216
|
+
- **`workspace`** - Manage Cloud workspaces
|
|
217
|
+
```bash
|
|
218
|
+
# List all workspaces
|
|
219
|
+
uv run --project vds_cli vds-cli bitbucket workspace list
|
|
220
|
+
|
|
221
|
+
# Get workspace details
|
|
222
|
+
uv run --project vds_cli vds-cli bitbucket workspace get --workspace-slug workspace1
|
|
223
|
+
|
|
224
|
+
# Get workspace permissions
|
|
225
|
+
uv run --project vds_cli vds-cli bitbucket workspace permissions --workspace-slug workspace1
|
|
226
|
+
|
|
227
|
+
# Get repository permissions in workspace
|
|
228
|
+
uv run --project vds_cli vds-cli bitbucket workspace permissions --workspace-slug workspace1 --repo-slug repo1
|
|
229
|
+
|
|
230
|
+
# List projects in workspace
|
|
231
|
+
uv run --project vds_cli vds-cli bitbucket workspace projects --workspace-slug workspace1
|
|
232
|
+
|
|
233
|
+
# Get specific project from workspace
|
|
234
|
+
uv run --project vds_cli vds-cli bitbucket workspace project --workspace-slug workspace1 --project-key PROJ1
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Repository Variables (Bitbucket Cloud Only)
|
|
238
|
+
|
|
239
|
+
- **`repo-variables`** – Manage repository-level pipeline variables
|
|
240
|
+
```bash
|
|
241
|
+
# List repository variables (JSON output with --no-markdown)
|
|
242
|
+
uv run --project vds_cli vds-cli bitbucket repo-variables list \
|
|
243
|
+
--workspace team-slug \
|
|
244
|
+
--repo-slug repo-slug \
|
|
245
|
+
--no-markdown
|
|
246
|
+
|
|
247
|
+
# Get a single variable by UUID
|
|
248
|
+
uv run --project vds_cli vds-cli bitbucket repo-variables get \
|
|
249
|
+
--workspace team-slug \
|
|
250
|
+
--repo-slug repo-slug \
|
|
251
|
+
--uuid {variable-uuid} \
|
|
252
|
+
--no-markdown
|
|
253
|
+
|
|
254
|
+
# Create a secured variable (requires --yes)
|
|
255
|
+
uv run --project vds_cli vds-cli bitbucket repo-variables create \
|
|
256
|
+
--workspace team-slug \
|
|
257
|
+
--repo-slug repo-slug \
|
|
258
|
+
--key API_TOKEN \
|
|
259
|
+
--value "super-secret" \
|
|
260
|
+
--secured true \
|
|
261
|
+
--yes \
|
|
262
|
+
--no-markdown
|
|
263
|
+
|
|
264
|
+
# Update an existing variable (key/value/secured)
|
|
265
|
+
uv run --project vds_cli vds-cli bitbucket repo-variables update \
|
|
266
|
+
--workspace team-slug \
|
|
267
|
+
--repo-slug repo-slug \
|
|
268
|
+
--uuid {variable-uuid} \
|
|
269
|
+
--value "rotate-me" \
|
|
270
|
+
--yes \
|
|
271
|
+
--no-markdown
|
|
272
|
+
|
|
273
|
+
# Delete a variable
|
|
274
|
+
uv run --project vds_cli vds-cli bitbucket repo-variables delete \
|
|
275
|
+
--workspace team-slug \
|
|
276
|
+
--repo-slug repo-slug \
|
|
277
|
+
--uuid {variable-uuid} \
|
|
278
|
+
--yes \
|
|
279
|
+
--no-markdown
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Repository Issues (Bitbucket Cloud Only)
|
|
283
|
+
|
|
284
|
+
- **`issue`** – Manage repository issues when Bitbucket Issues tracker is enabled
|
|
285
|
+
```bash
|
|
286
|
+
# List issues (with optional query/sort)
|
|
287
|
+
uv run --project vds_cli vds-cli bitbucket issue list \
|
|
288
|
+
--workspace team-slug \
|
|
289
|
+
--repo-slug repo-slug \
|
|
290
|
+
--query 'state = "open"' \
|
|
291
|
+
--sort -updated_on \
|
|
292
|
+
--no-markdown
|
|
293
|
+
|
|
294
|
+
# Create an issue
|
|
295
|
+
uv run --project vds_cli vds-cli bitbucket issue create \
|
|
296
|
+
--workspace team-slug \
|
|
297
|
+
--repo-slug repo-slug \
|
|
298
|
+
--title "Production bug" \
|
|
299
|
+
--description "Steps to reproduce..." \
|
|
300
|
+
--kind bug \
|
|
301
|
+
--priority critical \
|
|
302
|
+
--no-markdown
|
|
303
|
+
|
|
304
|
+
# Update an issue (title/state/kind/priority/description)
|
|
305
|
+
uv run --project vds_cli vds-cli bitbucket issue update \
|
|
306
|
+
--workspace team-slug \
|
|
307
|
+
--repo-slug repo-slug \
|
|
308
|
+
--issue-id 123 \
|
|
309
|
+
--state resolved \
|
|
310
|
+
--no-markdown
|
|
311
|
+
|
|
312
|
+
# Delete an issue (requires --yes)
|
|
313
|
+
uv run --project vds_cli vds-cli bitbucket issue delete \
|
|
314
|
+
--workspace team-slug \
|
|
315
|
+
--repo-slug repo-slug \
|
|
316
|
+
--issue-id 123 \
|
|
317
|
+
--yes \
|
|
318
|
+
--no-markdown
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Advanced Pipeline Operations (Bitbucket Cloud Only)
|
|
322
|
+
|
|
323
|
+
- **`pipeline-advanced`** – Inspect pipelines, steps, logs, and stop executions
|
|
324
|
+
```bash
|
|
325
|
+
# Get pipeline details
|
|
326
|
+
uv run --project vds_cli vds-cli bitbucket pipeline-advanced get \
|
|
327
|
+
--workspace team-slug \
|
|
328
|
+
--repo-slug repo-slug \
|
|
329
|
+
--pipeline-uuid {pipeline-uuid} \
|
|
330
|
+
--no-markdown
|
|
331
|
+
|
|
332
|
+
# List steps for a pipeline
|
|
333
|
+
uv run --project vds_cli vds-cli bitbucket pipeline-advanced steps \
|
|
334
|
+
--workspace team-slug \
|
|
335
|
+
--repo-slug repo-slug \
|
|
336
|
+
--pipeline-uuid {pipeline-uuid} \
|
|
337
|
+
--no-markdown
|
|
338
|
+
|
|
339
|
+
# Get a specific step
|
|
340
|
+
uv run --project vds_cli vds-cli bitbucket pipeline-advanced step \
|
|
341
|
+
--workspace team-slug \
|
|
342
|
+
--repo-slug repo-slug \
|
|
343
|
+
--pipeline-uuid {pipeline-uuid} \
|
|
344
|
+
--step-uuid {step-uuid} \
|
|
345
|
+
--no-markdown
|
|
346
|
+
|
|
347
|
+
# Fetch pipeline step log (optionally provide byte range)
|
|
348
|
+
uv run --project vds_cli vds-cli bitbucket pipeline-advanced log \
|
|
349
|
+
--workspace team-slug \
|
|
350
|
+
--repo-slug repo-slug \
|
|
351
|
+
--pipeline-uuid {pipeline-uuid} \
|
|
352
|
+
--step-uuid {step-uuid} \
|
|
353
|
+
--start 0 \
|
|
354
|
+
--end 5000 \
|
|
355
|
+
--output ./logs/{pipeline-uuid}-{step-uuid}.log
|
|
356
|
+
|
|
357
|
+
# Stop a running pipeline (requires --yes)
|
|
358
|
+
uv run --project vds_cli vds-cli bitbucket pipeline-advanced stop \
|
|
359
|
+
--workspace team-slug \
|
|
360
|
+
--repo-slug repo-slug \
|
|
361
|
+
--pipeline-uuid {pipeline-uuid} \
|
|
362
|
+
--yes \
|
|
363
|
+
--no-markdown
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Pull Request Blockers (Bitbucket Cloud Only)
|
|
367
|
+
|
|
368
|
+
- **`pr-blocker`** – Manage blocker comments on pull requests
|
|
369
|
+
```bash
|
|
370
|
+
# List blockers on a pull request
|
|
371
|
+
uv run --project vds_cli vds-cli bitbucket pr-blocker list \
|
|
372
|
+
--workspace team-slug \
|
|
373
|
+
--repo-slug repo-slug \
|
|
374
|
+
--pull-request-id 123 \
|
|
375
|
+
--no-markdown
|
|
376
|
+
|
|
377
|
+
# Add a blocker (optional reason/severity)
|
|
378
|
+
uv run --project vds_cli vds-cli bitbucket pr-blocker add \
|
|
379
|
+
--workspace team-slug \
|
|
380
|
+
--repo-slug repo-slug \
|
|
381
|
+
--pull-request-id 123 \
|
|
382
|
+
--message "Pending security review" \
|
|
383
|
+
--reason "Security" \
|
|
384
|
+
--severity HIGH \
|
|
385
|
+
--no-markdown
|
|
386
|
+
|
|
387
|
+
# Delete a blocker (requires --yes)
|
|
388
|
+
uv run --project vds_cli vds-cli bitbucket pr-blocker delete \
|
|
389
|
+
--workspace team-slug \
|
|
390
|
+
--repo-slug repo-slug \
|
|
391
|
+
--pull-request-id 123 \
|
|
392
|
+
--blocker-uuid {blocker-uuid} \
|
|
393
|
+
--yes \
|
|
394
|
+
--no-markdown
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### Code Insights (Bitbucket Cloud Only)
|
|
398
|
+
|
|
399
|
+
- **`code-insights`** - Manage Code Insights reports
|
|
400
|
+
```bash
|
|
401
|
+
# Get a report
|
|
402
|
+
uv run --project vds_cli vds-cli bitbucket code-insights get PROJECT_KEY REPO_SLUG COMMIT_ID \
|
|
403
|
+
--report-key "test-report"
|
|
404
|
+
|
|
405
|
+
# Create a report
|
|
406
|
+
uv run --project vds_cli vds-cli bitbucket code-insights create PROJECT_KEY REPO_SLUG COMMIT_ID \
|
|
407
|
+
--report-key "coverage-report" \
|
|
408
|
+
--title "Coverage Report" \
|
|
409
|
+
--reporter "coverage-tool" \
|
|
410
|
+
--result "PASSED" \
|
|
411
|
+
--data-file coverage-data.json \
|
|
412
|
+
--report-type "COVERAGE" \
|
|
413
|
+
--yes
|
|
414
|
+
|
|
415
|
+
# Add annotations to a report
|
|
416
|
+
uv run --project vds_cli vds-cli bitbucket code-insights annotate PROJECT_KEY REPO_SLUG COMMIT_ID \
|
|
417
|
+
--report-key "test-report" \
|
|
418
|
+
--annotations-file annotations.json \
|
|
419
|
+
--yes
|
|
420
|
+
|
|
421
|
+
# Delete a report
|
|
422
|
+
uv run --project vds_cli vds-cli bitbucket code-insights delete PROJECT_KEY REPO_SLUG COMMIT_ID \
|
|
423
|
+
--report-key "test-report" \
|
|
424
|
+
--yes
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Repository Settings
|
|
428
|
+
|
|
429
|
+
- **`repo-settings`** - Manage repository settings
|
|
430
|
+
```bash
|
|
431
|
+
# Branching model
|
|
432
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings branching-model get PROJECT_KEY REPO_SLUG
|
|
433
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings branching-model set PROJECT_KEY REPO_SLUG \
|
|
434
|
+
--model-file branching-model.json --yes
|
|
435
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings branching-model enable PROJECT_KEY REPO_SLUG --yes
|
|
436
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings branching-model disable PROJECT_KEY REPO_SLUG --yes
|
|
437
|
+
|
|
438
|
+
# Default branch
|
|
439
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings default-branch get PROJECT_KEY REPO_SLUG
|
|
440
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings default-branch set PROJECT_KEY REPO_SLUG \
|
|
441
|
+
--branch "main" --yes
|
|
442
|
+
|
|
443
|
+
# Repository hooks
|
|
444
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings hooks get PROJECT_KEY REPO_SLUG \
|
|
445
|
+
--start 0 --limit 50
|
|
446
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings hooks enable PROJECT_KEY REPO_SLUG \
|
|
447
|
+
--hook-key "com.atlassian.bitbucket.server.bitbucket-bundle:force-push-hook" --yes
|
|
448
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings hooks disable PROJECT_KEY REPO_SLUG \
|
|
449
|
+
--hook-key "com.atlassian.bitbucket.server.bitbucket-bundle:force-push-hook" --yes
|
|
450
|
+
|
|
451
|
+
# Git LFS
|
|
452
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings lfs get PROJECT_KEY REPO_SLUG
|
|
453
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings lfs set PROJECT_KEY REPO_SLUG \
|
|
454
|
+
--enabled --yes
|
|
455
|
+
uv run --project vds_cli vds-cli bitbucket repo-settings lfs set PROJECT_KEY REPO_SLUG \
|
|
456
|
+
--disabled --yes
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### Advanced Code Operations
|
|
460
|
+
|
|
461
|
+
- **`code-advanced`** - Advanced code operations
|
|
462
|
+
```bash
|
|
463
|
+
# List files in repository
|
|
464
|
+
uv run --project vds_cli vds-cli bitbucket code-advanced file-list \
|
|
465
|
+
--project-key PROJECT_KEY \
|
|
466
|
+
--repository-slug REPO_SLUG \
|
|
467
|
+
--sub-folder "src" \
|
|
468
|
+
--query "*.py" \
|
|
469
|
+
--start 0 \
|
|
470
|
+
--limit 100
|
|
471
|
+
|
|
472
|
+
# Get commit information
|
|
473
|
+
uv run --project vds_cli vds-cli bitbucket code-advanced commit-info \
|
|
474
|
+
--project-key PROJECT_KEY \
|
|
475
|
+
--repository-slug REPO_SLUG \
|
|
476
|
+
--commit "abc123" \
|
|
477
|
+
--path "file.py"
|
|
478
|
+
|
|
479
|
+
# Get commit changes
|
|
480
|
+
uv run --project vds_cli vds-cli bitbucket code-advanced commit-changes \
|
|
481
|
+
--project-key PROJECT_KEY \
|
|
482
|
+
--repository-slug REPO_SLUG \
|
|
483
|
+
--commit-id "abc123" \
|
|
484
|
+
--merges "exclude"
|
|
485
|
+
|
|
486
|
+
# Search code (Cloud-only)
|
|
487
|
+
uv run --project vds_cli vds-cli bitbucket code-advanced search \
|
|
488
|
+
--team "workspace" \
|
|
489
|
+
--search-query "def test_function" \
|
|
490
|
+
--page 1 \
|
|
491
|
+
--limit 20
|
|
492
|
+
|
|
493
|
+
# Advanced code search with repository filter (Cloud-only)
|
|
494
|
+
uv run --project vds_cli vds-cli bitbucket code-advanced search-advanced \
|
|
495
|
+
--team "workspace" \
|
|
496
|
+
--search-query "class MyClass" \
|
|
497
|
+
--repository "repo-slug" \
|
|
498
|
+
--page 1 \
|
|
499
|
+
--limit 50
|
|
500
|
+
```
|
|
501
|
+
> **Note**: Code search operations are Cloud-only. Server/DC instances do not support code search via REST API. The
|
|
502
|
+
> `search-advanced` action includes repository filtering capabilities.
|
|
503
|
+
|
|
504
|
+
## Configuration
|
|
505
|
+
|
|
506
|
+
The orchestrator uses environment variables from `~/.vds/.env`:
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
# Required for authentication
|
|
510
|
+
VDS_USERNAME=your-username
|
|
511
|
+
VDS_PASSWORD=your-password
|
|
512
|
+
|
|
513
|
+
# Optional: Use token instead of username/password
|
|
514
|
+
BITBUCKET_ACCESS_TOKEN=your-api-token
|
|
515
|
+
|
|
516
|
+
# Bitbucket base URL (defaults based on mode detection)
|
|
517
|
+
BITBUCKET_BASE_URL=https://bitbucket.digital.vn
|
|
518
|
+
|
|
519
|
+
# For Bitbucket Cloud, specify workspace
|
|
520
|
+
BITBUCKET_CLOUD_WORKSPACE=your-workspace
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
The orchestrator automatically detects whether you're using Bitbucket Cloud or Server/Data Center based on the URL and
|
|
524
|
+
configuration.
|
|
525
|
+
|
|
526
|
+
## Project Layout
|
|
527
|
+
|
|
528
|
+
- `src/vds_bitbucket_orchestrator/config.py` – Environment configuration and settings
|
|
529
|
+
- `src/vds_bitbucket_orchestrator/client.py` – Bitbucket client using atlassian-python-api SDK
|
|
530
|
+
- `src/vds_bitbucket_orchestrator/cli.py` – Typer CLI interface
|
|
531
|
+
- `src/vds_bitbucket_orchestrator/errors.py` – Custom error types
|
|
532
|
+
- `tests/` – pytest test suite
|
|
533
|
+
|
|
534
|
+
## Feature Coverage
|
|
535
|
+
|
|
536
|
+
The orchestrator implements **121+ methods** covering core Bitbucket operations. For a complete feature coverage
|
|
537
|
+
reference and SDK comparison, see [`ATLASSIAN_FEATURES_REFERENCE.md`](../ATLASSIAN_FEATURES_REFERENCE.md).
|
|
538
|
+
|
|
539
|
+
**Current Coverage**: ~51% of atlassian-python-api SDK features
|
|
540
|
+
|
|
541
|
+
**Recently Added**:
|
|
542
|
+
|
|
543
|
+
- ✅ Advanced code search (search-advanced with repository filter) - **NEW**
|
|
544
|
+
- ✅ Fork repository operations (create, list) - **NEW**
|
|
545
|
+
- ✅ Cloud Workspace Operations (list, get, permissions, projects, project) - **NEW**
|
|
546
|
+
- ✅ Branch permissions management
|
|
547
|
+
- ✅ Code/file content operations
|
|
548
|
+
- ✅ Conditions-Reviewers management
|
|
549
|
+
- ✅ Webhook management (Cloud-only)
|
|
550
|
+
- ✅ Code Insights reports and annotations (Cloud-only) - **NEW**
|
|
551
|
+
- ✅ Repository settings (branching model, default branch, hooks, LFS) - **NEW**
|
|
552
|
+
- ✅ Advanced code operations (file listing, commit info, commit changes, code search) - **NEW**
|
|
553
|
+
- ✅ Repository variables (Cloud-only) - **NEW**
|
|
554
|
+
- ✅ Deployment environments & variables (Cloud-only) - **NEW**
|
|
555
|
+
- ✅ Advanced pipeline operations (Cloud-only) - **NEW**
|
|
556
|
+
- ✅ Pull request blockers (Cloud-only) - **NEW**
|
|
557
|
+
|
|
558
|
+
**Note**: Default reviewers are managed through Conditions-Reviewers (see `conditions` command)
|
|
559
|
+
|
|
560
|
+
## Advanced Features
|
|
561
|
+
|
|
562
|
+
The `BitbucketClient` class provides many additional methods beyond the CLI:
|
|
563
|
+
|
|
564
|
+
### Repository Management
|
|
565
|
+
|
|
566
|
+
- `get_repository()`, `create_repository()`, `update_repository()`
|
|
567
|
+
- `get_repository_labels()`, `set_repository_label()`
|
|
568
|
+
|
|
569
|
+
### Pull Request Management
|
|
570
|
+
|
|
571
|
+
- `create_pull_request()`, `get_pull_request()`
|
|
572
|
+
- `add_pull_request_comment()`, `get_pull_request_activities()`
|
|
573
|
+
- `get_pull_request_changes()`, `delete_pull_request()`, `merge_pull_request()`
|
|
574
|
+
|
|
575
|
+
### Branch and Tag Management
|
|
576
|
+
|
|
577
|
+
- `get_branches()`, `create_branch()`, `delete_branch()`
|
|
578
|
+
- `get_tags()`, `set_tag()`, `delete_tag()`
|
|
579
|
+
|
|
580
|
+
### Pipeline Management (Cloud Only)
|
|
581
|
+
|
|
582
|
+
- `trigger_pipeline()`
|
|
583
|
+
|
|
584
|
+
### Permission Management
|
|
585
|
+
|
|
586
|
+
- `grant_user_repository_permissions()`, `grant_user_project_permissions()`
|
|
587
|
+
- `grant_group_project_permissions()`, `grant_group_repository_permissions()`
|
|
588
|
+
|
|
589
|
+
### Branch Permissions
|
|
590
|
+
|
|
591
|
+
- `set_branches_permissions()` - Set branch permissions
|
|
592
|
+
- `get_branch_permission()` - Get branch permission
|
|
593
|
+
- `delete_branch_permission()` - Delete branch permission
|
|
594
|
+
|
|
595
|
+
### Conditions-Reviewers Management
|
|
596
|
+
|
|
597
|
+
- `get_project_conditions()`, `get_project_condition()` - Get project conditions
|
|
598
|
+
- `create_project_condition()`, `update_project_condition()`, `delete_project_condition()` - Manage project conditions
|
|
599
|
+
- `get_repo_conditions()`, `get_repo_condition()` - Get repository conditions
|
|
600
|
+
- `create_repo_condition()`, `update_repo_condition()`, `delete_repo_condition()` - Manage repository conditions
|
|
601
|
+
|
|
602
|
+
### Code Management
|
|
603
|
+
|
|
604
|
+
- `get_content_of_file()` - Get file content
|
|
605
|
+
- `get_commits()` - Get commits
|
|
606
|
+
- `get_diff()` - Get diff between commits
|
|
607
|
+
- `get_changelog()` - Get changelog between refs
|
|
608
|
+
|
|
609
|
+
### Webhook Management (Cloud Only)
|
|
610
|
+
|
|
611
|
+
- `list_webhooks()` - List repository webhooks
|
|
612
|
+
- `get_webhook()` - Retrieve a webhook
|
|
613
|
+
- `create_webhook()` - Create a webhook
|
|
614
|
+
- `update_webhook()` - Update webhook metadata/events
|
|
615
|
+
- `delete_webhook()` - Delete a webhook
|
|
616
|
+
|
|
617
|
+
These can be accessed programmatically:
|
|
618
|
+
|
|
619
|
+
```python
|
|
620
|
+
from vds_bitbucket_orchestrator.client import BitbucketClient
|
|
621
|
+
from vds_bitbucket_orchestrator.config import BitbucketSettings, load_settings
|
|
622
|
+
|
|
623
|
+
settings = load_settings(strict=True)
|
|
624
|
+
with BitbucketClient(settings) as client:
|
|
625
|
+
projects = client.list_projects(limit=50)
|
|
626
|
+
repos = client.list_repositories("PROJECT_KEY", limit=25)
|
|
627
|
+
prs = client.list_pull_requests("PROJECT_KEY", "REPO_SLUG", state="OPEN")
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
## Retry Logic
|
|
631
|
+
|
|
632
|
+
The orchestrator includes comprehensive retry logic with exponential backoff:
|
|
633
|
+
|
|
634
|
+
- Automatic retry on transport errors and rate limiting
|
|
635
|
+
- Configurable retry attempts and backoff factor
|
|
636
|
+
- Intelligent error classification (retryable vs non-retryable)
|
|
637
|
+
- Structured logging for retry attempts
|
|
638
|
+
|
|
639
|
+
## Cloud vs Server Mode
|
|
640
|
+
|
|
641
|
+
The orchestrator automatically detects the Bitbucket mode:
|
|
642
|
+
|
|
643
|
+
- **Cloud Mode**: Detected when URL contains `bitbucket.org` or `cloud.bitbucket.org`
|
|
644
|
+
- **Server/Data Center Mode**: Detected for on-premise installations
|
|
645
|
+
|
|
646
|
+
Some features (like pipelines) are only available in Cloud mode.
|
|
647
|
+
|
|
648
|
+
## Run Reports
|
|
649
|
+
|
|
650
|
+
Run reports are written to `~/.cache/vds-bitbucket-reports/` (plus Markdown unless `--no-markdown` is used).
|
|
651
|
+
|
|
652
|
+
## Linting
|
|
653
|
+
|
|
654
|
+
We use Ruff for linting/formatting:
|
|
655
|
+
|
|
656
|
+
```bash
|
|
657
|
+
uv run --extra dev ruff check
|
|
658
|
+
uv run --extra dev ruff format
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
## Testing
|
|
662
|
+
|
|
663
|
+
```bash
|
|
664
|
+
# Run all tests
|
|
665
|
+
uv run --extra dev pytest
|
|
666
|
+
|
|
667
|
+
# Run specific test file
|
|
668
|
+
uv run --extra dev pytest tests/test_cli.py
|
|
669
|
+
|
|
670
|
+
# Run with coverage
|
|
671
|
+
uv run --extra dev pytest --cov=src/vds_bitbucket_orchestrator
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
## Error Handling
|
|
675
|
+
|
|
676
|
+
The orchestrator provides structured error types:
|
|
677
|
+
|
|
678
|
+
- `BitbucketAuthError` - Authentication failures
|
|
679
|
+
- `BitbucketNotFoundError` - Resource not found (404)
|
|
680
|
+
- `BitbucketRateLimitedError` - Rate limit exceeded (429)
|
|
681
|
+
- `BitbucketConflictError` - Conflict errors (409)
|
|
682
|
+
- `BitbucketResponseError` - Server errors (500)
|
|
683
|
+
- `BitbucketTransportError` - Network/connection errors
|
|
684
|
+
- `BitbucketRetryError` - Retry attempts exhausted
|
|
685
|
+
- `BitbucketClientError` - General client errors
|
|
686
|
+
|
|
687
|
+
All errors include context information for debugging.
|