@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.
Files changed (303) hide show
  1. package/package.json +2 -2
  2. package/src/global.js +70 -10
  3. package/tools/skills/vds-scripts-skill/.openskills.json +6 -0
  4. package/tools/skills/vds-scripts-skill/QUALITY.md +44 -0
  5. package/tools/skills/vds-scripts-skill/SKILL.md +135 -0
  6. package/tools/skills/vds-scripts-skill/references/audit-commands.md +171 -0
  7. package/tools/skills/vds-scripts-skill/references/capability-index.md +34 -0
  8. package/tools/skills/vds-scripts-skill/references/development-commands.md +12 -0
  9. package/tools/skills/vds-scripts-skill/references/google-sheets.md +73 -0
  10. package/tools/skills/vds-scripts-skill/references/integration-commands.md +17 -0
  11. package/tools/skills/vds-scripts-skill/references/platform-bootstrap.md +31 -0
  12. package/tools/skills/vds-scripts-skill/references/specialist-routing.md +14 -0
  13. package/tools/skills/vds-scripts-skill/references/validation-commands.md +15 -0
  14. package/tools/skills/vsaf-build/SKILL.md +32 -2
  15. package/tools/skills/vsaf-ship/SKILL.md +41 -10
  16. package/tools/skills/vsaf-test/SKILL.md +8 -0
  17. package/tools/vds-scripts/.mcp.json +11 -0
  18. package/tools/vds-scripts/.secrets.baseline +133 -0
  19. package/tools/vds-scripts/AGENTS.md +152 -0
  20. package/tools/vds-scripts/CLAUDE.md +101 -0
  21. package/tools/vds-scripts/CLI_COMMAND_OPTIMIZATION.md +156 -0
  22. package/tools/vds-scripts/PACKAGE_P125B_IMPLEMENTATION_SUMMARY.md +131 -0
  23. package/tools/vds-scripts/PROJECT_COMPLETION_SUMMARY.md +45 -0
  24. package/tools/vds-scripts/README.md +97 -0
  25. package/tools/vds-scripts/bitbucket_manifest_mapping.toml +34 -0
  26. package/tools/vds-scripts/bitbucket_orchestrator/ARCHITECTURE_ANALYSIS.md +258 -0
  27. package/tools/vds-scripts/bitbucket_orchestrator/BITBUCKET_API_PRACTICES.md +393 -0
  28. package/tools/vds-scripts/bitbucket_orchestrator/EVALUATION_REPORT.md +61 -0
  29. package/tools/vds-scripts/bitbucket_orchestrator/FEATURES.md +908 -0
  30. package/tools/vds-scripts/bitbucket_orchestrator/README.md +687 -0
  31. package/tools/vds-scripts/bitbucket_orchestrator/pyproject.toml +40 -0
  32. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/__init__.py +20 -0
  33. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/async_client.py +657 -0
  34. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/cli.py +2108 -0
  35. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/client.py +2534 -0
  36. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/config.py +171 -0
  37. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/errors.py +67 -0
  38. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/factory.py +185 -0
  39. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/protocols.py +244 -0
  40. package/tools/vds-scripts/bitbucket_orchestrator/tests/__init__.py +8 -0
  41. package/tools/vds-scripts/bitbucket_orchestrator/tests/conftest.py +65 -0
  42. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_advanced_search.py +151 -0
  43. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_async_client.py +546 -0
  44. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_branch_permissions.py +145 -0
  45. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_cli.py +115 -0
  46. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client.py +157 -0
  47. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_branch_conditions.py +79 -0
  48. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_advanced.py +163 -0
  49. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_file.py +32 -0
  50. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_deployment_environments.py +194 -0
  51. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_issues.py +164 -0
  52. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pipelines_advanced.py +179 -0
  53. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pr_blockers.py +119 -0
  54. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_repository_variables.py +156 -0
  55. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code.py +98 -0
  56. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_advanced.py +282 -0
  57. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_insights.py +335 -0
  58. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_conditions.py +147 -0
  59. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_config.py +131 -0
  60. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_deployment_env.py +352 -0
  61. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_factory.py +371 -0
  62. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_fork_operations.py +204 -0
  63. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_issue_cli.py +261 -0
  64. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pipeline_advanced.py +270 -0
  65. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pr_blocker.py +204 -0
  66. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_protocols.py +334 -0
  67. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_settings.py +343 -0
  68. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_variables.py +270 -0
  69. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_webhooks.py +189 -0
  70. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_workspace.py +233 -0
  71. package/tools/vds-scripts/bitbucket_orchestrator/uv.lock +742 -0
  72. package/tools/vds-scripts/confluence_orchestrator/Dockerfile +19 -0
  73. package/tools/vds-scripts/confluence_orchestrator/README.md +412 -0
  74. package/tools/vds-scripts/confluence_orchestrator/SYNC_SCRIPTS.md +127 -0
  75. package/tools/vds-scripts/confluence_orchestrator/SYNC_STANDARDIZATION.md +108 -0
  76. package/tools/vds-scripts/confluence_orchestrator/pyproject.toml +48 -0
  77. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/__init__.py +20 -0
  78. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/cli.py +2532 -0
  79. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/config.py +175 -0
  80. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content.py +290 -0
  81. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content_v2.py +94 -0
  82. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/crawl_tree.py +1835 -0
  83. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/errors.py +80 -0
  84. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/eventing.py +109 -0
  85. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/http.py +1114 -0
  86. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/orchestration.py +165 -0
  87. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/reporting.py +78 -0
  88. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree.py +121 -0
  89. package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_from_markdown.py +213 -0
  90. package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_to_confluence.py +305 -0
  91. package/tools/vds-scripts/confluence_orchestrator/sync_png_attachments.py +305 -0
  92. package/tools/vds-scripts/confluence_orchestrator/tests/__init__.py +0 -0
  93. package/tools/vds-scripts/confluence_orchestrator/tests/conftest.py +8 -0
  94. package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_content.py +224 -0
  95. package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_search.py +188 -0
  96. package/tools/vds-scripts/confluence_orchestrator/tests/test_cache_management.py +247 -0
  97. package/tools/vds-scripts/confluence_orchestrator/tests/test_cli.py +499 -0
  98. package/tools/vds-scripts/confluence_orchestrator/tests/test_config.py +83 -0
  99. package/tools/vds-scripts/confluence_orchestrator/tests/test_content.py +186 -0
  100. package/tools/vds-scripts/confluence_orchestrator/tests/test_content_flags.py +27 -0
  101. package/tools/vds-scripts/confluence_orchestrator/tests/test_crawl_tree.py +2250 -0
  102. package/tools/vds-scripts/confluence_orchestrator/tests/test_draft_management.py +223 -0
  103. package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing.py +71 -0
  104. package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_chaos.py +37 -0
  105. package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_rate_limit.py +44 -0
  106. package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_timeout.py +49 -0
  107. package/tools/vds-scripts/confluence_orchestrator/tests/test_export.py +230 -0
  108. package/tools/vds-scripts/confluence_orchestrator/tests/test_history.py +204 -0
  109. package/tools/vds-scripts/confluence_orchestrator/tests/test_http.py +117 -0
  110. package/tools/vds-scripts/confluence_orchestrator/tests/test_orchestration.py +91 -0
  111. package/tools/vds-scripts/confluence_orchestrator/tests/test_reporting.py +24 -0
  112. package/tools/vds-scripts/confluence_orchestrator/tests/test_search_cql.py +34 -0
  113. package/tools/vds-scripts/confluence_orchestrator/tests/test_space_management.py +237 -0
  114. package/tools/vds-scripts/confluence_orchestrator/tests/test_space_permissions.py +332 -0
  115. package/tools/vds-scripts/confluence_orchestrator/tests/test_user_group_management.py +388 -0
  116. package/tools/vds-scripts/confluence_orchestrator/uv.lock +1023 -0
  117. package/tools/vds-scripts/git_orchestrator/ENHANCEMENT_SUMMARY.md +119 -0
  118. package/tools/vds-scripts/git_orchestrator/README.md +280 -0
  119. package/tools/vds-scripts/git_orchestrator/VERIFICATION_REPORT.md +152 -0
  120. package/tools/vds-scripts/git_orchestrator/pyproject.toml +35 -0
  121. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__init__.py +7 -0
  122. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__main__.py +4 -0
  123. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/cli.py +847 -0
  124. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/logging_config.py +63 -0
  125. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/manifest.py +129 -0
  126. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/orchestrator.py +819 -0
  127. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/reporting.py +53 -0
  128. package/tools/vds-scripts/git_orchestrator/tests/__init__.py +0 -0
  129. package/tools/vds-scripts/git_orchestrator/tests/test_cli_settings.py +21 -0
  130. package/tools/vds-scripts/git_orchestrator/tests/test_integration.py +74 -0
  131. package/tools/vds-scripts/git_orchestrator/tests/test_manifest.py +79 -0
  132. package/tools/vds-scripts/git_orchestrator/tests/test_orchestrator.py +204 -0
  133. package/tools/vds-scripts/git_orchestrator/tests/test_public_api.py +236 -0
  134. package/tools/vds-scripts/git_orchestrator/tests/test_resilience.py +345 -0
  135. package/tools/vds-scripts/git_orchestrator/uv.lock +271 -0
  136. package/tools/vds-scripts/jira_orchestrator/README.md +770 -0
  137. package/tools/vds-scripts/jira_orchestrator/pyproject.toml +39 -0
  138. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/__init__.py +1 -0
  139. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/adapter.py +1320 -0
  140. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/cli.py +2271 -0
  141. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/config.py +138 -0
  142. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/errors.py +67 -0
  143. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/reporting.py +65 -0
  144. package/tools/vds-scripts/jira_orchestrator/tests/__init__.py +1 -0
  145. package/tools/vds-scripts/jira_orchestrator/tests/conftest.py +86 -0
  146. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_agile_list_payloads.py +54 -0
  147. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_bulk_operations.py +69 -0
  148. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_components.py +57 -0
  149. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_createmeta.py +45 -0
  150. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_dashboard.py +117 -0
  151. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_issue_properties.py +54 -0
  152. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_permissions_compat.py +42 -0
  153. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_reindex.py +42 -0
  154. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_remote_links.py +76 -0
  155. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_transitions.py +91 -0
  156. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_user_management.py +110 -0
  157. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_version_management.py +133 -0
  158. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_watchers.py +41 -0
  159. package/tools/vds-scripts/jira_orchestrator/tests/test_advanced_search.py +164 -0
  160. package/tools/vds-scripts/jira_orchestrator/tests/test_agile.py +256 -0
  161. package/tools/vds-scripts/jira_orchestrator/tests/test_application_properties.py +193 -0
  162. package/tools/vds-scripts/jira_orchestrator/tests/test_backlog.py +91 -0
  163. package/tools/vds-scripts/jira_orchestrator/tests/test_bulk_operations.py +277 -0
  164. package/tools/vds-scripts/jira_orchestrator/tests/test_cli.py +106 -0
  165. package/tools/vds-scripts/jira_orchestrator/tests/test_components.py +106 -0
  166. package/tools/vds-scripts/jira_orchestrator/tests/test_config.py +164 -0
  167. package/tools/vds-scripts/jira_orchestrator/tests/test_dashboard.py +122 -0
  168. package/tools/vds-scripts/jira_orchestrator/tests/test_discover_fields.py +207 -0
  169. package/tools/vds-scripts/jira_orchestrator/tests/test_filter_management.py +333 -0
  170. package/tools/vds-scripts/jira_orchestrator/tests/test_issue_archiving.py +164 -0
  171. package/tools/vds-scripts/jira_orchestrator/tests/test_issue_links.py +257 -0
  172. package/tools/vds-scripts/jira_orchestrator/tests/test_issue_properties.py +171 -0
  173. package/tools/vds-scripts/jira_orchestrator/tests/test_link_types.py +314 -0
  174. package/tools/vds-scripts/jira_orchestrator/tests/test_parse_set.py +37 -0
  175. package/tools/vds-scripts/jira_orchestrator/tests/test_permissions.py +273 -0
  176. package/tools/vds-scripts/jira_orchestrator/tests/test_reindex.py +81 -0
  177. package/tools/vds-scripts/jira_orchestrator/tests/test_remote_links.py +254 -0
  178. package/tools/vds-scripts/jira_orchestrator/tests/test_security_schemes.py +170 -0
  179. package/tools/vds-scripts/jira_orchestrator/tests/test_transitions_changelog.py +114 -0
  180. package/tools/vds-scripts/jira_orchestrator/tests/test_user_management.py +226 -0
  181. package/tools/vds-scripts/jira_orchestrator/tests/test_version_management.py +339 -0
  182. package/tools/vds-scripts/jira_orchestrator/tests/test_watchers.py +101 -0
  183. package/tools/vds-scripts/jira_orchestrator/tests/test_worklog.py +223 -0
  184. package/tools/vds-scripts/jira_orchestrator/uv.lock +738 -0
  185. package/tools/vds-scripts/mcp_server/Dockerfile +34 -0
  186. package/tools/vds-scripts/mcp_server/README.md +140 -0
  187. package/tools/vds-scripts/mcp_server/pyproject.toml +42 -0
  188. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/__init__.py +4 -0
  189. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/config.py +36 -0
  190. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/server.py +66 -0
  191. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/__init__.py +14 -0
  192. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/bitbucket_tools.py +47 -0
  193. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/confluence_tools.py +59 -0
  194. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/git_tools.py +71 -0
  195. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/jira_tools.py +63 -0
  196. package/tools/vds-scripts/mcp_server/tests/__init__.py +2 -0
  197. package/tools/vds-scripts/mcp_server/tests/conftest.py +29 -0
  198. package/tools/vds-scripts/mcp_server/tests/unit/__init__.py +2 -0
  199. package/tools/vds-scripts/mcp_server/tests/unit/test_bitbucket_tools.py +25 -0
  200. package/tools/vds-scripts/mcp_server/tests/unit/test_confluence_tools.py +25 -0
  201. package/tools/vds-scripts/mcp_server/tests/unit/test_git_tools.py +32 -0
  202. package/tools/vds-scripts/mcp_server/tests/unit/test_jira_tools.py +32 -0
  203. package/tools/vds-scripts/mcp_server/tests/verification/__init__.py +2 -0
  204. package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_confluence_tools.py +40 -0
  205. package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_jira_tools.py +37 -0
  206. package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_tool_registration.py +47 -0
  207. package/tools/vds-scripts/mcp_server/uv.lock +1032 -0
  208. package/tools/vds-scripts/mypy.ini +5 -0
  209. package/tools/vds-scripts/pyproject.toml +29 -0
  210. package/tools/vds-scripts/repo-manifest.yaml +273 -0
  211. package/tools/vds-scripts/repo-manifest.yaml.example +25 -0
  212. package/tools/vds-scripts/scripts/BRD-Validation-API.postman_collection.json +706 -0
  213. package/tools/vds-scripts/scripts/BRD-Validation-README.md +308 -0
  214. package/tools/vds-scripts/scripts/README.md +162 -0
  215. package/tools/vds-scripts/scripts/bootstrap_uv.sh +30 -0
  216. package/tools/vds-scripts/scripts/brd-validation-environment.json +51 -0
  217. package/tools/vds-scripts/scripts/brd-validation-test-results.json +13023 -0
  218. package/tools/vds-scripts/scripts/brd_coverage_report.json +276 -0
  219. package/tools/vds-scripts/scripts/create_memory_session.py +35 -0
  220. package/tools/vds-scripts/scripts/deployment/load_docker_images_offline.sh +90 -0
  221. package/tools/vds-scripts/scripts/final_completion_report.md +139 -0
  222. package/tools/vds-scripts/scripts/folder_structure_report.json +321 -0
  223. package/tools/vds-scripts/scripts/generate_completion_report.py +125 -0
  224. package/tools/vds-scripts/scripts/generate_intellij_modules.py +150 -0
  225. package/tools/vds-scripts/scripts/link_integrity_report.json +807 -0
  226. package/tools/vds-scripts/scripts/move_audit_artifact_pages.py +255 -0
  227. package/tools/vds-scripts/scripts/move_audit_artifact_pages_rest.py +165 -0
  228. package/tools/vds-scripts/scripts/move_wrong_dept_pages.py +216 -0
  229. package/tools/vds-scripts/scripts/save_intellij_memories.py +120 -0
  230. package/tools/vds-scripts/scripts/save_memories_to_vds_ai.py +83 -0
  231. package/tools/vds-scripts/scripts/save_memories_vds_style.py +129 -0
  232. package/tools/vds-scripts/scripts/search_intellij_memories.py +50 -0
  233. package/tools/vds-scripts/scripts/setup_intellij_workspace.py +65 -0
  234. package/tools/vds-scripts/scripts/target-state-automation/README.md +89 -0
  235. package/tools/vds-scripts/scripts/target-state-automation/confluence_sync_coordinator.sh +27 -0
  236. package/tools/vds-scripts/scripts/target-state-automation/coordination.sh +114 -0
  237. package/tools/vds-scripts/scripts/target-state-automation/diagram_coordinator.sh +25 -0
  238. package/tools/vds-scripts/scripts/target-state-automation/docs_root.sh +22 -0
  239. package/tools/vds-scripts/scripts/target-state-automation/generate_diagrams.sh +22 -0
  240. package/tools/vds-scripts/scripts/target-state-automation/markdown_coordinator.sh +25 -0
  241. package/tools/vds-scripts/scripts/target-state-automation/progress_dashboard.sh +17 -0
  242. package/tools/vds-scripts/scripts/target-state-automation/schema_coordinator.sh +25 -0
  243. package/tools/vds-scripts/scripts/target-state-automation/sync_confluence.sh +30 -0
  244. package/tools/vds-scripts/scripts/target-state-automation/update_dependencies.sh +19 -0
  245. package/tools/vds-scripts/scripts/target-state-automation/validate_links.sh +86 -0
  246. package/tools/vds-scripts/scripts/target-state-automation/validate_markdown.sh +52 -0
  247. package/tools/vds-scripts/scripts/target-state-automation/validate_schemas.sh +26 -0
  248. package/tools/vds-scripts/scripts/target-state-automation/validate_structure.sh +98 -0
  249. package/tools/vds-scripts/scripts/update_modules_xml.py +190 -0
  250. package/tools/vds-scripts/scripts/uv-workspace-alignment-verification-2026-03-25.md +128 -0
  251. package/tools/vds-scripts/scripts/validate_brd_coverage.py +179 -0
  252. package/tools/vds-scripts/scripts/validate_folder_structure.py +240 -0
  253. package/tools/vds-scripts/scripts/validate_link_integrity.py +272 -0
  254. package/tools/vds-scripts/scripts/vds_sh_helpers.sh +180 -0
  255. package/tools/vds-scripts/scripts/verification/phase2_portable_paths_ubuntu_docker.sh +26 -0
  256. package/tools/vds-scripts/scripts/worktree_uv.sh +48 -0
  257. package/tools/vds-scripts/uv.lock +8 -0
  258. package/tools/vds-scripts/vds_cli/README.md +126 -0
  259. package/tools/vds-scripts/vds_cli/VERIFICATION_REPORT.md +41 -0
  260. package/tools/vds-scripts/vds_cli/pyproject.toml +38 -0
  261. package/tools/vds-scripts/vds_cli/src/vds_cli/__init__.py +3 -0
  262. package/tools/vds-scripts/vds_cli/src/vds_cli/cli.py +173 -0
  263. package/tools/vds-scripts/vds_cli/src/vds_cli/docs_sync.py +1203 -0
  264. package/tools/vds-scripts/vds_cli/src/vds_cli/env.py +41 -0
  265. package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/__init__.py +3 -0
  266. package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/google_sheets_orchestrator.py +198 -0
  267. package/tools/vds-scripts/vds_cli/src/vds_cli/router.py +93 -0
  268. package/tools/vds-scripts/vds_cli/src/vds_cli/sync_api.py +647 -0
  269. package/tools/vds-scripts/vds_cli/src/vds_cli/sync_service.py +266 -0
  270. package/tools/vds-scripts/vds_cli/tests/__init__.py +2 -0
  271. package/tools/vds-scripts/vds_cli/tests/conftest.py +49 -0
  272. package/tools/vds-scripts/vds_cli/tests/unit/__init__.py +2 -0
  273. package/tools/vds-scripts/vds_cli/tests/unit/test_cli.py +143 -0
  274. package/tools/vds-scripts/vds_cli/tests/unit/test_docs_sync.py +422 -0
  275. package/tools/vds-scripts/vds_cli/tests/unit/test_env.py +51 -0
  276. package/tools/vds-scripts/vds_cli/tests/unit/test_router.py +72 -0
  277. package/tools/vds-scripts/vds_cli/tests/unit/test_sync_api.py +357 -0
  278. package/tools/vds-scripts/vds_cli/tests/unit/test_sync_service.py +160 -0
  279. package/tools/vds-scripts/vds_cli/tests/verification/__init__.py +2 -0
  280. package/tools/vds-scripts/vds_cli/tests/verification/test_bitbucket_real.py +33 -0
  281. package/tools/vds-scripts/vds_cli/tests/verification/test_confluence_real.py +35 -0
  282. package/tools/vds-scripts/vds_cli/tests/verification/test_jira_real.py +41 -0
  283. package/tools/vds-scripts/vds_cli/uv.lock +524 -0
  284. package/tools/vds-scripts/vds_cli_common/README.md +190 -0
  285. package/tools/vds-scripts/vds_cli_common/pyproject.toml +92 -0
  286. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/__init__.py +34 -0
  287. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/completers.py +139 -0
  288. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/context.py +201 -0
  289. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/env.py +119 -0
  290. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/errors.py +318 -0
  291. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/output.py +284 -0
  292. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/paths.py +78 -0
  293. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/testing.py +213 -0
  294. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/version.py +85 -0
  295. package/tools/vds-scripts/vds_cli_common/tests/__init__.py +1 -0
  296. package/tools/vds-scripts/vds_cli_common/tests/test_completers.py +148 -0
  297. package/tools/vds-scripts/vds_cli_common/tests/test_context.py +192 -0
  298. package/tools/vds-scripts/vds_cli_common/tests/test_env.py +102 -0
  299. package/tools/vds-scripts/vds_cli_common/tests/test_errors.py +186 -0
  300. package/tools/vds-scripts/vds_cli_common/tests/test_output.py +229 -0
  301. package/tools/vds-scripts/vds_cli_common/tests/test_paths.py +61 -0
  302. package/tools/vds-scripts/vds_cli_common/tests/test_testing.py +138 -0
  303. 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.