@ngocsangairvds/vsaf 4.1.7 → 4.1.9

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 (1063) hide show
  1. package/package.json +1 -1
  2. package/packages/cli/dist/commands/skill.js +1 -1
  3. package/packages/cli/dist/commands/skill.js.map +1 -1
  4. package/skills/vds-skill/_shared/config-check.js +0 -76
  5. package/skills/vds-skill/_shared/credentials.js +0 -139
  6. package/skills/vds-skill/create-bitbucket-pr/SKILL.md +0 -57
  7. package/skills/vds-skill/create-bitbucket-pr/scripts/create-pr.js +0 -125
  8. package/skills/vds-skill/create-jira-epic/SKILL.md +0 -55
  9. package/skills/vds-skill/create-jira-epic/scripts/create-epic.js +0 -120
  10. package/skills/vds-skill/install-deps.mjs +0 -410
  11. package/skills/vds-skill/pack.yaml +0 -24
  12. package/skills/vds-skill/pull/SKILL.md +0 -38
  13. package/skills/vds-skill/pull/scripts/pull.js +0 -59
  14. package/skills/vds-skill/push-prd/SKILL.md +0 -227
  15. package/skills/vds-skill/push-srs/SKILL.md +0 -116
  16. package/skills/vds-skill/search-confluence/SKILL.md +0 -53
  17. package/skills/vds-skill/search-confluence/scripts/search.js +0 -114
  18. package/skills/vds-skill/vds-scripts/.claude/phase7-CLOSURE.md +0 -100
  19. package/skills/vds-skill/vds-scripts/.dockerignore +0 -62
  20. package/skills/vds-skill/vds-scripts/.github/ISSUE_TEMPLATE/cli-change.md +0 -92
  21. package/skills/vds-skill/vds-scripts/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -48
  22. package/skills/vds-skill/vds-scripts/.github/workflows/chaos-smoke.yml +0 -266
  23. package/skills/vds-skill/vds-scripts/.github/workflows/confluence-sync.yml +0 -44
  24. package/skills/vds-skill/vds-scripts/.github/workflows/docs-confluence-evidence.yml +0 -170
  25. package/skills/vds-skill/vds-scripts/.github/workflows/docs-quality.yml +0 -59
  26. package/skills/vds-skill/vds-scripts/.github/workflows/lint-and-test.yml +0 -90
  27. package/skills/vds-skill/vds-scripts/.github/workflows/scheduler-load-smoke.yml +0 -104
  28. package/skills/vds-skill/vds-scripts/.github/workflows/telegram-bridge-ci.yml +0 -131
  29. package/skills/vds-skill/vds-scripts/.graphifyignore +0 -29
  30. package/skills/vds-skill/vds-scripts/.importlinter +0 -86
  31. package/skills/vds-skill/vds-scripts/.mcp.json +0 -11
  32. package/skills/vds-skill/vds-scripts/.pre-commit-config.yaml +0 -62
  33. package/skills/vds-skill/vds-scripts/.ruffignore +0 -3
  34. package/skills/vds-skill/vds-scripts/.secrets.baseline +0 -133
  35. package/skills/vds-skill/vds-scripts/AGENTS.md +0 -250
  36. package/skills/vds-skill/vds-scripts/AGENTS.vi.md +0 -92
  37. package/skills/vds-skill/vds-scripts/ECOSYSTEM-CHANGELOG.md +0 -52
  38. package/skills/vds-skill/vds-scripts/ECOSYSTEM-DOCS.md +0 -602
  39. package/skills/vds-skill/vds-scripts/ECOSYSTEM_ALIGNMENT.md +0 -133
  40. package/skills/vds-skill/vds-scripts/Makefile +0 -119
  41. package/skills/vds-skill/vds-scripts/README.md +0 -103
  42. package/skills/vds-skill/vds-scripts/bitbucket_manifest_mapping.toml +0 -34
  43. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/ARCHITECTURE_ANALYSIS.md +0 -258
  44. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/BITBUCKET_API_PRACTICES.md +0 -393
  45. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/EVALUATION_REPORT.md +0 -61
  46. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/FEATURES.md +0 -908
  47. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/README.md +0 -817
  48. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/pyproject.toml +0 -49
  49. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/__init__.py +0 -50
  50. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/async_client.py +0 -641
  51. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/cli.py +0 -2271
  52. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/client.py +0 -2693
  53. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/config.py +0 -186
  54. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/errors.py +0 -34
  55. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/factory.py +0 -185
  56. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/parsers.py +0 -113
  57. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/protocols.py +0 -244
  58. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/repo_ops.py +0 -325
  59. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/__init__.py +0 -8
  60. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/conftest.py +0 -65
  61. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_advanced_search.py +0 -155
  62. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_async_client.py +0 -505
  63. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_branch_permissions.py +0 -172
  64. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_cli.py +0 -113
  65. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_cli_archive.py +0 -122
  66. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_cli_clone.py +0 -131
  67. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client.py +0 -207
  68. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_archive.py +0 -73
  69. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_branch_conditions.py +0 -101
  70. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_code_advanced.py +0 -180
  71. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_code_file.py +0 -33
  72. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_deployment_environments.py +0 -193
  73. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_issues.py +0 -163
  74. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_pipelines_advanced.py +0 -171
  75. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_pr_blockers.py +0 -118
  76. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_repository_variables.py +0 -155
  77. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_code.py +0 -98
  78. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_code_advanced.py +0 -279
  79. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_code_insights.py +0 -334
  80. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_conditions.py +0 -149
  81. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_config.py +0 -297
  82. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_deployment_env.py +0 -352
  83. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_errors.py +0 -67
  84. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_factory.py +0 -352
  85. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_fork_operations.py +0 -203
  86. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_issue_cli.py +0 -262
  87. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_pipeline_advanced.py +0 -265
  88. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_pr_blocker.py +0 -206
  89. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_protocols.py +0 -336
  90. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_ops_archive.py +0 -169
  91. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_ops_clone.py +0 -115
  92. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_ops_parsing.py +0 -149
  93. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_settings.py +0 -336
  94. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_variables.py +0 -266
  95. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_webhooks.py +0 -188
  96. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_workspace.py +0 -234
  97. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/unit/__init__.py +0 -0
  98. package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/unit/test_parsers.py +0 -254
  99. package/skills/vds-skill/vds-scripts/brd_orchestrator/README.md +0 -29
  100. package/skills/vds-skill/vds-scripts/brd_orchestrator/pyproject.toml +0 -63
  101. package/skills/vds-skill/vds-scripts/brd_orchestrator/src/vds_brd_orchestrator/__init__.py +0 -17
  102. package/skills/vds-skill/vds-scripts/brd_orchestrator/src/vds_brd_orchestrator/cli.py +0 -187
  103. package/skills/vds-skill/vds-scripts/brd_orchestrator/src/vds_brd_orchestrator/validator.py +0 -121
  104. package/skills/vds-skill/vds-scripts/brd_orchestrator/tests/__init__.py +0 -0
  105. package/skills/vds-skill/vds-scripts/brd_orchestrator/tests/test_cli.py +0 -62
  106. package/skills/vds-skill/vds-scripts/brd_orchestrator/tests/test_validator.py +0 -33
  107. package/skills/vds-skill/vds-scripts/code/code_evidence_pack.json +0 -435
  108. package/skills/vds-skill/vds-scripts/confluence_orchestrator/Dockerfile +0 -19
  109. package/skills/vds-skill/vds-scripts/confluence_orchestrator/README.md +0 -479
  110. package/skills/vds-skill/vds-scripts/confluence_orchestrator/SYNC_SCRIPTS.md +0 -127
  111. package/skills/vds-skill/vds-scripts/confluence_orchestrator/SYNC_STANDARDIZATION.md +0 -108
  112. package/skills/vds-skill/vds-scripts/confluence_orchestrator/pyproject.toml +0 -50
  113. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/__init__.py +0 -56
  114. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/async_client.py +0 -100
  115. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/cli.py +0 -3160
  116. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/config.py +0 -215
  117. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content.py +0 -368
  118. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content_v2.py +0 -144
  119. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/crawl_tree.py +0 -1833
  120. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/errors.py +0 -44
  121. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/eventing.py +0 -111
  122. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/http.py +0 -1850
  123. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/orchestration.py +0 -166
  124. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/protocols.py +0 -61
  125. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/reporting.py +0 -78
  126. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree.py +0 -122
  127. package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree_copier.py +0 -431
  128. package/skills/vds-skill/vds-scripts/confluence_orchestrator/sync_pdfs_from_markdown.py +0 -203
  129. package/skills/vds-skill/vds-scripts/confluence_orchestrator/sync_pdfs_to_confluence.py +0 -299
  130. package/skills/vds-skill/vds-scripts/confluence_orchestrator/sync_png_attachments.py +0 -299
  131. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/conftest.py +0 -46
  132. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_advanced_content.py +0 -252
  133. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_advanced_search.py +0 -193
  134. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_async_client.py +0 -104
  135. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_cache_management.py +0 -246
  136. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_cli.py +0 -716
  137. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_config.py +0 -130
  138. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_content.py +0 -192
  139. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_content_flags.py +0 -27
  140. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_content_labels.py +0 -94
  141. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_crawl_tree.py +0 -2252
  142. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_degraded_write_safety.py +0 -176
  143. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_draft_management.py +0 -225
  144. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_errors.py +0 -75
  145. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_eventing.py +0 -73
  146. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_eventing_chaos.py +0 -37
  147. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_eventing_rate_limit.py +0 -44
  148. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_eventing_timeout.py +0 -49
  149. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_export.py +0 -231
  150. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_history.py +0 -217
  151. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_http.py +0 -375
  152. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_orchestration.py +0 -93
  153. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_reporting.py +0 -24
  154. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_search_cql.py +0 -36
  155. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_space_management.py +0 -236
  156. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_space_permissions.py +0 -384
  157. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_tree_copier.py +0 -644
  158. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_tree_copier_remap.py +0 -289
  159. package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_user_group_management.py +0 -387
  160. package/skills/vds-skill/vds-scripts/diagram_generator/README.md +0 -663
  161. package/skills/vds-skill/vds-scripts/diagram_generator/ci_validate.sh +0 -16
  162. package/skills/vds-skill/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-component.png +0 -0
  163. package/skills/vds-skill/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-component.puml +0 -23
  164. package/skills/vds-skill/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-sequence.png +0 -0
  165. package/skills/vds-skill/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-sequence.puml +0 -21
  166. package/skills/vds-skill/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-usecase.png +0 -0
  167. package/skills/vds-skill/vds-scripts/diagram_generator/docs-nttc/projects/INSURANCE/analysis/current-state/insurance-claim-business/insurance-claim-business-usecase.puml +0 -14
  168. package/skills/vds-skill/vds-scripts/diagram_generator/examples/github-actions-validate.yml +0 -39
  169. package/skills/vds-skill/vds-scripts/diagram_generator/generate_all_diagrams.py +0 -827
  170. package/skills/vds-skill/vds-scripts/diagram_generator/generate_insurance_c4_diagrams.py +0 -261
  171. package/skills/vds-skill/vds-scripts/diagram_generator/generate_insurance_c4_quick.py +0 -486
  172. package/skills/vds-skill/vds-scripts/diagram_generator/pyproject.toml +0 -28
  173. package/skills/vds-skill/vds-scripts/diagram_generator/render_png.py +0 -59
  174. package/skills/vds-skill/vds-scripts/diagram_generator/src/vds_diagram_generator/__init__.py +0 -3
  175. package/skills/vds-skill/vds-scripts/diagram_generator/src/vds_diagram_generator/cli.py +0 -50
  176. package/skills/vds-skill/vds-scripts/diagram_generator/test_c4_hierarchical.py +0 -142
  177. package/skills/vds-skill/vds-scripts/diagram_generator/test_c4_quick.py +0 -131
  178. package/skills/vds-skill/vds-scripts/diagram_generator/tests/__init__.py +0 -0
  179. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_analyzer_completeness.py +0 -260
  180. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_c4_syntax_correctness.py +0 -138
  181. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_component_coverage.py +0 -182
  182. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_mermaid_output.py +0 -80
  183. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_png_generation.py +0 -112
  184. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_scenario_templates.py +0 -15
  185. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_sequence_accuracy.py +0 -93
  186. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_structurizr_export.py +0 -177
  187. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_style_consistency.py +0 -174
  188. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_usecase_generator.py +0 -201
  189. package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_usecase_integration.py +0 -124
  190. package/skills/vds-skill/vds-scripts/docker/.dockerignore +0 -38
  191. package/skills/vds-skill/vds-scripts/docker/ADR.md +0 -392
  192. package/skills/vds-skill/vds-scripts/docker/Dockerfile +0 -68
  193. package/skills/vds-skill/vds-scripts/docker/MIGRATION.md +0 -453
  194. package/skills/vds-skill/vds-scripts/docker/README.md +0 -347
  195. package/skills/vds-skill/vds-scripts/docker/ROLLBACK.md +0 -596
  196. package/skills/vds-skill/vds-scripts/docker/compose.phase2-verification.yml +0 -31
  197. package/skills/vds-skill/vds-scripts/docker/docker-compose.cli.yml +0 -206
  198. package/skills/vds-skill/vds-scripts/docker/docker-compose.infra.yml +0 -276
  199. package/skills/vds-skill/vds-scripts/docker/docker-compose.services.yml +0 -425
  200. package/skills/vds-skill/vds-scripts/docker/infrastructure/init-schemas.sql +0 -177
  201. package/skills/vds-skill/vds-scripts/docker/infrastructure/pgbouncer/pgbouncer.ini +0 -75
  202. package/skills/vds-skill/vds-scripts/docker/infrastructure/pgbouncer/userlist.txt +0 -50
  203. package/skills/vds-skill/vds-scripts/docker/infrastructure/pgbouncer/userlist.txt.template +0 -36
  204. package/skills/vds-skill/vds-scripts/docs/.confluence-evidence/.gitkeep +0 -0
  205. package/skills/vds-skill/vds-scripts/docs/.confluence-evidence/PREFLIGHT.md +0 -132
  206. package/skills/vds-skill/vds-scripts/docs/.confluence-evidence/README.md +0 -84
  207. package/skills/vds-skill/vds-scripts/docs/.confluence.yaml +0 -157
  208. package/skills/vds-skill/vds-scripts/docs/.freshness.yaml +0 -54
  209. package/skills/vds-skill/vds-scripts/docs/README.md +0 -235
  210. package/skills/vds-skill/vds-scripts/docs/agents/README.md +0 -33
  211. package/skills/vds-skill/vds-scripts/docs/agents/explanation/data-flow.md +0 -132
  212. package/skills/vds-skill/vds-scripts/docs/agents/explanation/development-roadmap.md +0 -49
  213. package/skills/vds-skill/vds-scripts/docs/agents/explanation/features-overview.md +0 -62
  214. package/skills/vds-skill/vds-scripts/docs/agents/explanation/index.md +0 -36
  215. package/skills/vds-skill/vds-scripts/docs/agents/explanation/runtime-verification-and-gap-reporting.md +0 -127
  216. package/skills/vds-skill/vds-scripts/docs/agents/explanation/system-architecture.md +0 -139
  217. package/skills/vds-skill/vds-scripts/docs/agents/explanation/whats-new.md +0 -75
  218. package/skills/vds-skill/vds-scripts/docs/agents/explanation/who-ecosystem-introduction.md +0 -65
  219. package/skills/vds-skill/vds-scripts/docs/agents/explanation/who-ecosystem-model.md +0 -41
  220. package/skills/vds-skill/vds-scripts/docs/agents/how-to/02-using-vds-ai-memory.md +0 -98
  221. package/skills/vds-skill/vds-scripts/docs/agents/how-to/03-memory-cross-agent.md +0 -241
  222. package/skills/vds-skill/vds-scripts/docs/agents/how-to/04-using-progress-reports.md +0 -240
  223. package/skills/vds-skill/vds-scripts/docs/agents/how-to/08-semantic-search.md +0 -46
  224. package/skills/vds-skill/vds-scripts/docs/agents/how-to/apply-phase3-migration.md +0 -148
  225. package/skills/vds-skill/vds-scripts/docs/agents/how-to/choose-the-right-command-or-skill.md +0 -34
  226. package/skills/vds-skill/vds-scripts/docs/agents/how-to/contribute-new-orchestrator.md +0 -149
  227. package/skills/vds-skill/vds-scripts/docs/agents/how-to/decision-tree.md +0 -63
  228. package/skills/vds-skill/vds-scripts/docs/agents/how-to/first-audit-run.md +0 -83
  229. package/skills/vds-skill/vds-scripts/docs/agents/how-to/index.md +0 -49
  230. package/skills/vds-skill/vds-scripts/docs/agents/how-to/install-and-bootstrap-who-scripts-and-skills.md +0 -314
  231. package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/analytics-pipeline-workflow.md +0 -165
  232. package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/code-quality-gate-workflow.md +0 -138
  233. package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/confluence-bitbucket-sync-workflow.md +0 -130
  234. package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/document-delivery-workflow.md +0 -142
  235. package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/memory-progress-workflow.md +0 -140
  236. package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/research-spec-audit-workflow.md +0 -135
  237. package/skills/vds-skill/vds-scripts/docs/agents/how-to/phase131-all-project-preparation.md +0 -211
  238. package/skills/vds-skill/vds-scripts/docs/agents/how-to/phase131-bounded-parallel-analysis.md +0 -123
  239. package/skills/vds-skill/vds-scripts/docs/agents/how-to/phase131-confluence-upload-recovery.md +0 -204
  240. package/skills/vds-skill/vds-scripts/docs/agents/how-to/phase132-department-preparation.md +0 -144
  241. package/skills/vds-skill/vds-scripts/docs/agents/how-to/run-ecosystem-daily-report.md +0 -213
  242. package/skills/vds-skill/vds-scripts/docs/agents/how-to/tips-and-tricks.md +0 -138
  243. package/skills/vds-skill/vds-scripts/docs/agents/how-to/troubleshooting-guide.md +0 -221
  244. package/skills/vds-skill/vds-scripts/docs/agents/reference/agent-operational-contract.md +0 -162
  245. package/skills/vds-skill/vds-scripts/docs/agents/reference/alignment-phase179-report.md +0 -144
  246. package/skills/vds-skill/vds-scripts/docs/agents/reference/audit-triage-playbook.md +0 -256
  247. package/skills/vds-skill/vds-scripts/docs/agents/reference/backup-restore.md +0 -132
  248. package/skills/vds-skill/vds-scripts/docs/agents/reference/bitbucket-orchestrator.md +0 -56
  249. package/skills/vds-skill/vds-scripts/docs/agents/reference/brd-orchestrator.md +0 -52
  250. package/skills/vds-skill/vds-scripts/docs/agents/reference/capability-coverage-review.md +0 -51
  251. package/skills/vds-skill/vds-scripts/docs/agents/reference/ci-workflows.md +0 -98
  252. package/skills/vds-skill/vds-scripts/docs/agents/reference/circular-dependency-orchestrator.md +0 -55
  253. package/skills/vds-skill/vds-scripts/docs/agents/reference/cli-commands.md +0 -583
  254. package/skills/vds-skill/vds-scripts/docs/agents/reference/cli-development-standards.md +0 -41
  255. package/skills/vds-skill/vds-scripts/docs/agents/reference/cli-help-matrix.md +0 -84
  256. package/skills/vds-skill/vds-scripts/docs/agents/reference/common-errors.md +0 -126
  257. package/skills/vds-skill/vds-scripts/docs/agents/reference/configuration-reference.md +0 -128
  258. package/skills/vds-skill/vds-scripts/docs/agents/reference/confluence-orchestrator.md +0 -56
  259. package/skills/vds-skill/vds-scripts/docs/agents/reference/confluence-sync-target.md +0 -111
  260. package/skills/vds-skill/vds-scripts/docs/agents/reference/confluence-sync.md +0 -46
  261. package/skills/vds-skill/vds-scripts/docs/agents/reference/db-query-orchestrator.md +0 -93
  262. package/skills/vds-skill/vds-scripts/docs/agents/reference/diagrams-orchestrator.md +0 -52
  263. package/skills/vds-skill/vds-scripts/docs/agents/reference/ecosystem-daily-report.md +0 -229
  264. package/skills/vds-skill/vds-scripts/docs/agents/reference/elastic-orchestrator.md +0 -57
  265. package/skills/vds-skill/vds-scripts/docs/agents/reference/env-git-helper.md +0 -216
  266. package/skills/vds-skill/vds-scripts/docs/agents/reference/evolution-orchestrator.md +0 -113
  267. package/skills/vds-skill/vds-scripts/docs/agents/reference/excel-orchestrator.md +0 -51
  268. package/skills/vds-skill/vds-scripts/docs/agents/reference/git-orchestrator.md +0 -62
  269. package/skills/vds-skill/vds-scripts/docs/agents/reference/google-sheets-orchestrator.md +0 -51
  270. package/skills/vds-skill/vds-scripts/docs/agents/reference/grafana-orchestrator.md +0 -52
  271. package/skills/vds-skill/vds-scripts/docs/agents/reference/hexagonal-orchestrator.md +0 -64
  272. package/skills/vds-skill/vds-scripts/docs/agents/reference/index.md +0 -36
  273. package/skills/vds-skill/vds-scripts/docs/agents/reference/infrastructure-v2.15.md +0 -67
  274. package/skills/vds-skill/vds-scripts/docs/agents/reference/intellij-orchestrator.md +0 -50
  275. package/skills/vds-skill/vds-scripts/docs/agents/reference/jira-orchestrator.md +0 -60
  276. package/skills/vds-skill/vds-scripts/docs/agents/reference/links-orchestrator.md +0 -57
  277. package/skills/vds-skill/vds-scripts/docs/agents/reference/lint-cli.md +0 -99
  278. package/skills/vds-skill/vds-scripts/docs/agents/reference/lsp-orchestrator.md +0 -51
  279. package/skills/vds-skill/vds-scripts/docs/agents/reference/markdown-orchestrator.md +0 -53
  280. package/skills/vds-skill/vds-scripts/docs/agents/reference/mcp-orchestrator.md +0 -88
  281. package/skills/vds-skill/vds-scripts/docs/agents/reference/memory-orchestrator.md +0 -53
  282. package/skills/vds-skill/vds-scripts/docs/agents/reference/metabase-orchestrator.md +0 -51
  283. package/skills/vds-skill/vds-scripts/docs/agents/reference/migration-playbook.md +0 -71
  284. package/skills/vds-skill/vds-scripts/docs/agents/reference/multi-agent-orchestrator.md +0 -52
  285. package/skills/vds-skill/vds-scripts/docs/agents/reference/openapi-orchestrator.md +0 -57
  286. package/skills/vds-skill/vds-scripts/docs/agents/reference/orchestrator-architecture.md +0 -194
  287. package/skills/vds-skill/vds-scripts/docs/agents/reference/orchestrator-comparison-matrix.md +0 -79
  288. package/skills/vds-skill/vds-scripts/docs/agents/reference/orchestrator-index.md +0 -73
  289. package/skills/vds-skill/vds-scripts/docs/agents/reference/pdf-orchestrator.md +0 -57
  290. package/skills/vds-skill/vds-scripts/docs/agents/reference/portable-paths-and-config.md +0 -0
  291. package/skills/vds-skill/vds-scripts/docs/agents/reference/portable-paths-validation-matrix.md +0 -129
  292. package/skills/vds-skill/vds-scripts/docs/agents/reference/progress-orchestrator.md +0 -51
  293. package/skills/vds-skill/vds-scripts/docs/agents/reference/progress-report-cli.md +0 -215
  294. package/skills/vds-skill/vds-scripts/docs/agents/reference/public-interface-orchestrator.md +0 -73
  295. package/skills/vds-skill/vds-scripts/docs/agents/reference/research-orchestrator.md +0 -53
  296. package/skills/vds-skill/vds-scripts/docs/agents/reference/schema-orchestrator.md +0 -57
  297. package/skills/vds-skill/vds-scripts/docs/agents/reference/search-tools.md +0 -34
  298. package/skills/vds-skill/vds-scripts/docs/agents/reference/skills-commands.md +0 -256
  299. package/skills/vds-skill/vds-scripts/docs/agents/reference/skills-reference.md +0 -32
  300. package/skills/vds-skill/vds-scripts/docs/agents/reference/sonarqube-orchestrator.md +0 -62
  301. package/skills/vds-skill/vds-scripts/docs/agents/reference/spec-orchestrator.md +0 -56
  302. package/skills/vds-skill/vds-scripts/docs/agents/reference/structure-orchestrator.md +0 -69
  303. package/skills/vds-skill/vds-scripts/docs/agents/reference/system-requirements.md +0 -76
  304. package/skills/vds-skill/vds-scripts/docs/agents/reference/tasks-orchestrator.md +0 -53
  305. package/skills/vds-skill/vds-scripts/docs/agents/reference/validation-and-sync-notes.md +0 -54
  306. package/skills/vds-skill/vds-scripts/docs/agents/reference/vds-ai-memory-api.md +0 -51
  307. package/skills/vds-skill/vds-scripts/docs/agents/reference/vds-cli-reference.md +0 -34
  308. package/skills/vds-skill/vds-scripts/docs/agents/reference/who-capability-inventory.md +0 -96
  309. package/skills/vds-skill/vds-scripts/docs/agents/reference/who-capability-routing-matrix.md +0 -14
  310. package/skills/vds-skill/vds-scripts/docs/agents/tutorials/feature-progression-guide.md +0 -112
  311. package/skills/vds-skill/vds-scripts/docs/agents/tutorials/index.md +0 -36
  312. package/skills/vds-skill/vds-scripts/docs/agents/tutorials/quick-start.md +0 -50
  313. package/skills/vds-skill/vds-scripts/docs/agents/tutorials/who-skills-and-scripts-onboarding.md +0 -47
  314. package/skills/vds-skill/vds-scripts/docs/agents/tutorials/zero-to-productive-developer.md +0 -339
  315. package/skills/vds-skill/vds-scripts/docs/confluence/IMPLEMENTATION-SUMMARY.md +0 -78
  316. package/skills/vds-skill/vds-scripts/docs/confluence/SYNC-GUIDE.md +0 -47
  317. package/skills/vds-skill/vds-scripts/docs/deployment/offline-docker-image-load.md +0 -59
  318. package/skills/vds-skill/vds-scripts/docs/evolution-auto-run-rollout.md +0 -325
  319. package/skills/vds-skill/vds-scripts/docs/evolution-loop-deep-integration.md +0 -496
  320. package/skills/vds-skill/vds-scripts/docs/evolution-loop-integration-guide.md +0 -359
  321. package/skills/vds-skill/vds-scripts/docs/openspace-schema-snapshot.md +0 -73
  322. package/skills/vds-skill/vds-scripts/docs/operations/sla-mttr-policy.md +0 -44
  323. package/skills/vds-skill/vds-scripts/docs/p0-closure-evidence/SUMMARY.md +0 -58
  324. package/skills/vds-skill/vds-scripts/docs/p4-closure-evidence/.gitkeep +0 -0
  325. package/skills/vds-skill/vds-scripts/docs/p4-closure-evidence/smoke-20260427T024137Z-b95b586b.json +0 -15
  326. package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/alembic-and-runtime-advisory-locks.md +0 -45
  327. package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/dbos-listen-notify.md +0 -54
  328. package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/pgbouncer-search-path-empirical.md +0 -110
  329. package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/pgvector-set-local-audit.md +0 -51
  330. package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/topology-decision-session-mode.md +0 -57
  331. package/skills/vds-skill/vds-scripts/docs/phases/CHANGELOG.md +0 -103
  332. package/skills/vds-skill/vds-scripts/docs/phases/PHASE_125_COMPLETION_AND_MERGE.md +0 -212
  333. package/skills/vds-skill/vds-scripts/docs/phases/phase125/IMPLEMENTATION_REPORT.md +0 -227
  334. package/skills/vds-skill/vds-scripts/docs/phases/phase125/TSK-125.10-11-implementation-summary.md +0 -196
  335. package/skills/vds-skill/vds-scripts/docs/phases/phase125/profile-patch-ollama-local-anthropic.md +0 -122
  336. package/skills/vds-skill/vds-scripts/docs/phases/phase125_completion_summary.md +0 -369
  337. package/skills/vds-skill/vds-scripts/docs/phases/phase125_llm_analysis_skill.md +0 -164
  338. package/skills/vds-skill/vds-scripts/docs/phases/phase125_merge_complete.md +0 -147
  339. package/skills/vds-skill/vds-scripts/docs/phases/phase125_skill_runtime_closure_20260321.md +0 -91
  340. package/skills/vds-skill/vds-scripts/docs/phases/phase2-portable-paths/closure-handoff-summary-2026-03-23.md +0 -290
  341. package/skills/vds-skill/vds-scripts/docs/phases/phase2-portable-paths/remaining-risk-register-2026-03-25.md +0 -143
  342. package/skills/vds-skill/vds-scripts/docs/phases/phase2-portable-paths/verification-evidence-2026-03-23.md +0 -135
  343. package/skills/vds-skill/vds-scripts/docs/v0-sunset-known-issues.md +0 -88
  344. package/skills/vds-skill/vds-scripts/docs/vi/TRANSLATION-BACKLOG.md +0 -72
  345. package/skills/vds-skill/vds-scripts/docs/vi/agents/README.md +0 -41
  346. package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/features-overview.md +0 -29
  347. package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/index.md +0 -14
  348. package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/runtime-verification-and-gap-reporting.md +0 -129
  349. package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/whats-new.md +0 -37
  350. package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/who-ecosystem-introduction.md +0 -21
  351. package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/who-ecosystem-model.md +0 -36
  352. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/02-using-vds-ai-memory.md +0 -100
  353. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/03-memory-cross-agent.md +0 -243
  354. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/04-using-progress-reports.md +0 -242
  355. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/08-semantic-search.md +0 -16
  356. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/choose-the-right-command-or-skill.md +0 -36
  357. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/decision-tree.md +0 -77
  358. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/first-audit-run.md +0 -85
  359. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/index.md +0 -21
  360. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/install-and-bootstrap-who-scripts-and-skills.md +0 -156
  361. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/analytics-pipeline-workflow.md +0 -174
  362. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/code-quality-gate-workflow.md +0 -147
  363. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/confluence-bitbucket-sync-workflow.md +0 -139
  364. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/document-delivery-workflow.md +0 -151
  365. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/memory-progress-workflow.md +0 -149
  366. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/research-spec-audit-workflow.md +0 -144
  367. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/phase131-all-project-preparation.md +0 -213
  368. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/phase131-bounded-parallel-analysis.md +0 -125
  369. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/phase131-confluence-upload-recovery.md +0 -206
  370. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/phase132-department-preparation.md +0 -146
  371. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/tips-and-tricks.md +0 -34
  372. package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/troubleshooting-guide.md +0 -36
  373. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/agent-operational-contract.md +0 -98
  374. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/audit-triage-playbook.md +0 -258
  375. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/bitbucket-orchestrator.md +0 -30
  376. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/brd-orchestrator.md +0 -29
  377. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/capability-coverage-review.md +0 -46
  378. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/circular-dependency-orchestrator.md +0 -29
  379. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/cli-commands.md +0 -409
  380. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/cli-development-standards.md +0 -19
  381. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/cli-help-matrix.md +0 -71
  382. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/common-errors.md +0 -133
  383. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/configuration-reference.md +0 -25
  384. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/confluence-orchestrator.md +0 -30
  385. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/db-query-orchestrator.md +0 -34
  386. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/diagrams-orchestrator.md +0 -31
  387. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/elastic-orchestrator.md +0 -30
  388. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/evolution-orchestrator.md +0 -31
  389. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/excel-orchestrator.md +0 -60
  390. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/git-orchestrator.md +0 -31
  391. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/google-sheets-orchestrator.md +0 -60
  392. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/grafana-orchestrator.md +0 -30
  393. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/hexagonal-orchestrator.md +0 -73
  394. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/index.md +0 -25
  395. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/intellij-orchestrator.md +0 -59
  396. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/jira-orchestrator.md +0 -32
  397. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/links-orchestrator.md +0 -66
  398. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/lsp-orchestrator.md +0 -60
  399. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/markdown-orchestrator.md +0 -62
  400. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/mcp-orchestrator.md +0 -34
  401. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/memory-orchestrator.md +0 -45
  402. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/metabase-orchestrator.md +0 -30
  403. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/multi-agent-orchestrator.md +0 -61
  404. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/openapi-orchestrator.md +0 -66
  405. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/orchestrator-architecture.md +0 -24
  406. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/orchestrator-index.md +0 -73
  407. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/pdf-orchestrator.md +0 -30
  408. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/portable-paths-and-config.md +0 -123
  409. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/portable-paths-validation-matrix.md +0 -131
  410. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/progress-orchestrator.md +0 -43
  411. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/progress-report-cli.md +0 -217
  412. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/public-interface-orchestrator.md +0 -82
  413. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/research-orchestrator.md +0 -45
  414. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/schema-orchestrator.md +0 -66
  415. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/search-tools.md +0 -19
  416. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/skills-reference.md +0 -27
  417. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/sonarqube-orchestrator.md +0 -71
  418. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/spec-orchestrator.md +0 -56
  419. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/structure-orchestrator.md +0 -78
  420. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/system-requirements.md +0 -30
  421. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/tasks-orchestrator.md +0 -45
  422. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/validation-and-sync-notes.md +0 -26
  423. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/vds-ai-memory-api.md +0 -53
  424. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/vds-cli-reference.md +0 -34
  425. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/who-capability-inventory.md +0 -98
  426. package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/who-capability-routing-matrix.md +0 -16
  427. package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/feature-progression-guide.md +0 -124
  428. package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/index.md +0 -13
  429. package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/quick-start.md +0 -30
  430. package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/who-skills-and-scripts-onboarding.md +0 -42
  431. package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/zero-to-productive-developer.md +0 -137
  432. package/skills/vds-skill/vds-scripts/elastic_orchestrator/README.md +0 -450
  433. package/skills/vds-skill/vds-scripts/elastic_orchestrator/pyproject.toml +0 -97
  434. package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/__init__.py +0 -81
  435. package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/cli.py +0 -652
  436. package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/client.py +0 -743
  437. package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/config.py +0 -208
  438. package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/errors.py +0 -34
  439. package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/py.typed +0 -0
  440. package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/__init__.py +0 -0
  441. package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/conftest.py +0 -227
  442. package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/test_client.py +0 -990
  443. package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/test_config.py +0 -268
  444. package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/test_e2e_verification.py +0 -272
  445. package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/test_errors.py +0 -78
  446. package/skills/vds-skill/vds-scripts/excel_orchestrator/README.md +0 -288
  447. package/skills/vds-skill/vds-scripts/excel_orchestrator/RESEARCH_BASED_UPDATES_REPORT.md +0 -261
  448. package/skills/vds-skill/vds-scripts/excel_orchestrator/add_essential_missing_effort.py +0 -255
  449. package/skills/vds-skill/vds-scripts/excel_orchestrator/adjust_effort_complexity.py +0 -184
  450. package/skills/vds-skill/vds-scripts/excel_orchestrator/brd_analysis_and_task_breakdown.py +0 -632
  451. package/skills/vds-skill/vds-scripts/excel_orchestrator/brd_analysis_comprehensive.py +0 -1029
  452. package/skills/vds-skill/vds-scripts/excel_orchestrator/check_overlaps_and_brd_coverage.py +0 -570
  453. package/skills/vds-skill/vds-scripts/excel_orchestrator/clean_remarks_column.py +0 -127
  454. package/skills/vds-skill/vds-scripts/excel_orchestrator/comprehensive_brd_check.py +0 -322
  455. package/skills/vds-skill/vds-scripts/excel_orchestrator/create_buffered_summary.py +0 -119
  456. package/skills/vds-skill/vds-scripts/excel_orchestrator/create_service_totals_sheet.py +0 -118
  457. package/skills/vds-skill/vds-scripts/excel_orchestrator/examples/basic_operations.py +0 -85
  458. package/skills/vds-skill/vds-scripts/excel_orchestrator/expand_all_tasks.py +0 -341
  459. package/skills/vds-skill/vds-scripts/excel_orchestrator/expand_tasks.py +0 -304
  460. package/skills/vds-skill/vds-scripts/excel_orchestrator/fill_brd_references.py +0 -347
  461. package/skills/vds-skill/vds-scripts/excel_orchestrator/fill_remarks_and_colors.py +0 -132
  462. package/skills/vds-skill/vds-scripts/excel_orchestrator/finalize_brd_and_cleanup.py +0 -295
  463. package/skills/vds-skill/vds-scripts/excel_orchestrator/finalize_brd_coverage.py +0 -327
  464. package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_all_formulas.py +0 -99
  465. package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_detail_presentation.py +0 -113
  466. package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_presentation_and_effort.py +0 -116
  467. package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_presentation_consistency.py +0 -231
  468. package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_remarks_matching.py +0 -179
  469. package/skills/vds-skill/vds-scripts/excel_orchestrator/group_tasks_by_service_id.py +0 -210
  470. package/skills/vds-skill/vds-scripts/excel_orchestrator/increase_brd_coverage.py +0 -497
  471. package/skills/vds-skill/vds-scripts/excel_orchestrator/increase_effort_complexity.py +0 -155
  472. package/skills/vds-skill/vds-scripts/excel_orchestrator/organize_and_deduplicate.py +0 -273
  473. package/skills/vds-skill/vds-scripts/excel_orchestrator/pyproject.toml +0 -64
  474. package/skills/vds-skill/vds-scripts/excel_orchestrator/rebuild_all_formulas.py +0 -146
  475. package/skills/vds-skill/vds-scripts/excel_orchestrator/remove_base_multiplier_and_check_duplicates.py +0 -310
  476. package/skills/vds-skill/vds-scripts/excel_orchestrator/remove_duplicate_brd_tasks.py +0 -137
  477. package/skills/vds-skill/vds-scripts/excel_orchestrator/research_based_updates.py +0 -457
  478. package/skills/vds-skill/vds-scripts/excel_orchestrator/restore_e_values.py +0 -172
  479. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/__init__.py +0 -5
  480. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/cli.py +0 -746
  481. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/config.py +0 -74
  482. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/converters.py +0 -226
  483. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/errors.py +0 -88
  484. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/excel_client.py +0 -443
  485. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/formatters.py +0 -211
  486. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/logging.py +0 -57
  487. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/source_contract.py +0 -29
  488. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/target_state_status.py +0 -837
  489. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/ulnc_alignment.py +0 -1291
  490. package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/validators.py +0 -164
  491. package/skills/vds-skill/vds-scripts/excel_orchestrator/sync_detail_and_total_sheets.py +0 -211
  492. package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/__init__.py +0 -1
  493. package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/conftest.py +0 -36
  494. package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/test_cli.py +0 -383
  495. package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/test_excel_client.py +0 -129
  496. package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/test_ulnc_alignment.py +0 -373
  497. package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/test_validators.py +0 -64
  498. package/skills/vds-skill/vds-scripts/excel_orchestrator/update_api_database_effort.py +0 -261
  499. package/skills/vds-skill/vds-scripts/excel_orchestrator/update_buffers_inline.py +0 -115
  500. package/skills/vds-skill/vds-scripts/excel_orchestrator/update_complex_services_and_add_new.py +0 -336
  501. package/skills/vds-skill/vds-scripts/excel_orchestrator/update_responsibility_and_fix_rows.py +0 -208
  502. package/skills/vds-skill/vds-scripts/excel_orchestrator/update_task_breakdown_vietnamese.py +0 -309
  503. package/skills/vds-skill/vds-scripts/excel_orchestrator/update_vietnamese_and_responsibility.py +0 -415
  504. package/skills/vds-skill/vds-scripts/excel_orchestrator/verify_brd_coverage_comprehensive.py +0 -401
  505. package/skills/vds-skill/vds-scripts/git_orchestrator/ENHANCEMENT_SUMMARY.md +0 -119
  506. package/skills/vds-skill/vds-scripts/git_orchestrator/README.md +0 -286
  507. package/skills/vds-skill/vds-scripts/git_orchestrator/VERIFICATION_REPORT.md +0 -152
  508. package/skills/vds-skill/vds-scripts/git_orchestrator/pyproject.toml +0 -37
  509. package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__init__.py +0 -30
  510. package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__main__.py +0 -4
  511. package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/branch_probe.py +0 -271
  512. package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/cli.py +0 -892
  513. package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/logging_config.py +0 -63
  514. package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/manifest.py +0 -249
  515. package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/orchestrator.py +0 -1647
  516. package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/protocols.py +0 -35
  517. package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/reporting.py +0 -55
  518. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/__init__.py +0 -0
  519. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_cli_settings.py +0 -19
  520. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_integration.py +0 -79
  521. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_manifest.py +0 -79
  522. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_orchestrator.py +0 -207
  523. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_public_api.py +0 -235
  524. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_resilience.py +0 -343
  525. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/unit/__init__.py +0 -0
  526. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/unit/test_branch_probe.py +0 -327
  527. package/skills/vds-skill/vds-scripts/git_orchestrator/tests/unit/test_protocols.py +0 -132
  528. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/README.md +0 -241
  529. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/pyproject.toml +0 -45
  530. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/__init__.py +0 -69
  531. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/cli.py +0 -568
  532. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/client.py +0 -186
  533. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/config.py +0 -46
  534. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/errors.py +0 -41
  535. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/__init__.py +0 -1
  536. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/conftest.py +0 -1
  537. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/unit/__init__.py +0 -1
  538. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/unit/test_cli.py +0 -212
  539. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/unit/test_client.py +0 -24
  540. package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/unit/test_config.py +0 -16
  541. package/skills/vds-skill/vds-scripts/grafana_orchestrator/README.md +0 -572
  542. package/skills/vds-skill/vds-scripts/grafana_orchestrator/pyproject.toml +0 -102
  543. package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/__init__.py +0 -78
  544. package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/cli.py +0 -455
  545. package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/client.py +0 -700
  546. package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/config.py +0 -243
  547. package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/errors.py +0 -34
  548. package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/py.typed +0 -1
  549. package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/__init__.py +0 -1
  550. package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/conftest.py +0 -308
  551. package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/test_client.py +0 -458
  552. package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/test_config.py +0 -203
  553. package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/test_errors.py +0 -78
  554. package/skills/vds-skill/vds-scripts/jira_orchestrator/README.md +0 -864
  555. package/skills/vds-skill/vds-scripts/jira_orchestrator/pyproject.toml +0 -43
  556. package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/__init__.py +0 -65
  557. package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/adapter.py +0 -1685
  558. package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/cli.py +0 -2806
  559. package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/config.py +0 -168
  560. package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/errors.py +0 -34
  561. package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/reporting.py +0 -66
  562. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/__init__.py +0 -1
  563. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/conftest.py +0 -86
  564. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_agile_list_payloads.py +0 -54
  565. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_bulk_operations.py +0 -91
  566. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_components.py +0 -56
  567. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_createmeta.py +0 -45
  568. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_dashboard.py +0 -119
  569. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_issue_properties.py +0 -53
  570. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_permissions_compat.py +0 -41
  571. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_reindex.py +0 -42
  572. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_remote_links.py +0 -75
  573. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_transitions.py +0 -90
  574. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_user_management.py +0 -116
  575. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_version_management.py +0 -181
  576. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_watchers.py +0 -43
  577. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_advanced_search.py +0 -179
  578. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_agile.py +0 -304
  579. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_application_properties.py +0 -243
  580. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_backlog.py +0 -91
  581. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_bulk_operations.py +0 -403
  582. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_cli.py +0 -108
  583. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_components.py +0 -119
  584. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_config.py +0 -166
  585. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_dashboard.py +0 -122
  586. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_discover_fields.py +0 -207
  587. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_errors.py +0 -72
  588. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_filter_management.py +0 -411
  589. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_issue_archiving.py +0 -179
  590. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_issue_links.py +0 -257
  591. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_issue_properties.py +0 -189
  592. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_link_types.py +0 -407
  593. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_parse_set.py +0 -37
  594. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_permissions.py +0 -343
  595. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_reindex.py +0 -81
  596. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_remote_links.py +0 -269
  597. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_security_schemes.py +0 -202
  598. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_transitions_changelog.py +0 -109
  599. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_user_management.py +0 -246
  600. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_version_management.py +0 -503
  601. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_watchers.py +0 -116
  602. package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_worklog.py +0 -243
  603. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/README.md +0 -864
  604. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/pyproject.toml +0 -43
  605. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/__init__.py +0 -65
  606. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/adapter.py +0 -1689
  607. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/cli.py +0 -2799
  608. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/config.py +0 -137
  609. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/errors.py +0 -34
  610. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/reporting.py +0 -65
  611. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/__init__.py +0 -1
  612. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/conftest.py +0 -86
  613. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_agile_list_payloads.py +0 -54
  614. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_bulk_operations.py +0 -101
  615. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_components.py +0 -64
  616. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_createmeta.py +0 -45
  617. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_dashboard.py +0 -135
  618. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_issue_properties.py +0 -63
  619. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_permissions_compat.py +0 -42
  620. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_reindex.py +0 -42
  621. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_remote_links.py +0 -89
  622. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_transitions.py +0 -91
  623. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_user_management.py +0 -130
  624. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_version_management.py +0 -189
  625. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_watchers.py +0 -49
  626. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_advanced_search.py +0 -213
  627. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_agile.py +0 -334
  628. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_application_properties.py +0 -261
  629. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_backlog.py +0 -91
  630. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_bulk_operations.py +0 -443
  631. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_cli.py +0 -106
  632. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_components.py +0 -133
  633. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_config.py +0 -166
  634. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_dashboard.py +0 -130
  635. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_discover_fields.py +0 -207
  636. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_errors.py +0 -61
  637. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_filter_management.py +0 -478
  638. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_issue_archiving.py +0 -181
  639. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_issue_links.py +0 -257
  640. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_issue_properties.py +0 -203
  641. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_link_types.py +0 -426
  642. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_parse_set.py +0 -37
  643. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_permissions.py +0 -358
  644. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_reindex.py +0 -81
  645. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_remote_links.py +0 -292
  646. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_security_schemes.py +0 -218
  647. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_transitions_changelog.py +0 -121
  648. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_user_management.py +0 -283
  649. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_version_management.py +0 -561
  650. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_watchers.py +0 -128
  651. package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_worklog.py +0 -265
  652. package/skills/vds-skill/vds-scripts/llms.txt +0 -159
  653. package/skills/vds-skill/vds-scripts/markdown_orchestrator/README.md +0 -72
  654. package/skills/vds-skill/vds-scripts/markdown_orchestrator/pyproject.toml +0 -39
  655. package/skills/vds-skill/vds-scripts/markdown_orchestrator/src/vds_markdown_orchestrator/__init__.py +0 -5
  656. package/skills/vds-skill/vds-scripts/markdown_orchestrator/src/vds_markdown_orchestrator/cli.py +0 -102
  657. package/skills/vds-skill/vds-scripts/mcp_server/Dockerfile +0 -63
  658. package/skills/vds-skill/vds-scripts/mcp_server/README.md +0 -140
  659. package/skills/vds-skill/vds-scripts/mcp_server/pyproject.toml +0 -41
  660. package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/__init__.py +0 -3
  661. package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/config.py +0 -36
  662. package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/server.py +0 -111
  663. package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/__init__.py +0 -15
  664. package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/bitbucket_tools.py +0 -47
  665. package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/confluence_tools.py +0 -53
  666. package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/git_tools.py +0 -71
  667. package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/jira_tools.py +0 -63
  668. package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/vidp_tools.py +0 -64
  669. package/skills/vds-skill/vds-scripts/mcp_server/tests/__init__.py +0 -1
  670. package/skills/vds-skill/vds-scripts/mcp_server/tests/conftest.py +0 -31
  671. package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/__init__.py +0 -1
  672. package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/test_bitbucket_tools.py +0 -28
  673. package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/test_confluence_tools.py +0 -28
  674. package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/test_git_tools.py +0 -35
  675. package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/test_jira_tools.py +0 -35
  676. package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/__init__.py +0 -6
  677. package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/conftest.py +0 -51
  678. package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/test_mcp_confluence_tools.py +0 -40
  679. package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/test_mcp_jira_tools.py +0 -39
  680. package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/test_mcp_tool_registration.py +0 -50
  681. package/skills/vds-skill/vds-scripts/pdf_orchestrator/.dockerignore +0 -93
  682. package/skills/vds-skill/vds-scripts/pdf_orchestrator/.env.example +0 -40
  683. package/skills/vds-skill/vds-scripts/pdf_orchestrator/.ruff_rules.py +0 -350
  684. package/skills/vds-skill/vds-scripts/pdf_orchestrator/.yamllint.yml +0 -43
  685. package/skills/vds-skill/vds-scripts/pdf_orchestrator/DEVELOPMENT_PLAN.md +0 -80
  686. package/skills/vds-skill/vds-scripts/pdf_orchestrator/Dockerfile +0 -87
  687. package/skills/vds-skill/vds-scripts/pdf_orchestrator/README.md +0 -608
  688. package/skills/vds-skill/vds-scripts/pdf_orchestrator/cli_verification_test/test.md +0 -6
  689. package/skills/vds-skill/vds-scripts/pdf_orchestrator/cli_verification_test/test.pdf +0 -0
  690. package/skills/vds-skill/vds-scripts/pdf_orchestrator/config/alertmanager.yml +0 -83
  691. package/skills/vds-skill/vds-scripts/pdf_orchestrator/config/prometheus.prod.yml +0 -98
  692. package/skills/vds-skill/vds-scripts/pdf_orchestrator/config/prometheus.yml +0 -40
  693. package/skills/vds-skill/vds-scripts/pdf_orchestrator/config/redis.conf +0 -78
  694. package/skills/vds-skill/vds-scripts/pdf_orchestrator/docs/COMPETITIVE_ANALYSIS_REPORT.md +0 -309
  695. package/skills/vds-skill/vds-scripts/pdf_orchestrator/docs/FEATURES_GUIDE.md +0 -518
  696. package/skills/vds-skill/vds-scripts/pdf_orchestrator/docs/MULTI_USER_DEPLOYMENT_GUIDE.md +0 -615
  697. package/skills/vds-skill/vds-scripts/pdf_orchestrator/docs/USER_GUIDE.md +0 -829
  698. package/skills/vds-skill/vds-scripts/pdf_orchestrator/pyproject.toml +0 -87
  699. package/skills/vds-skill/vds-scripts/pdf_orchestrator/pytest.ini +0 -71
  700. package/skills/vds-skill/vds-scripts/pdf_orchestrator/ruff.toml +0 -6
  701. package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/debug_security_report.py +0 -59
  702. package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/demo_library_selector.py +0 -109
  703. package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/generate_project_stats.py +0 -52
  704. package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/generate_styled_pdf.py +0 -95
  705. package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/migrate_render_pdfs.py +0 -285
  706. package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/setup_team.bat +0 -283
  707. package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/setup_team.sh +0 -324
  708. package/skills/vds-skill/vds-scripts/pdf_orchestrator/src/vds_pdf_orchestrator/__init__.py +0 -5
  709. package/skills/vds-skill/vds-scripts/pdf_orchestrator/src/vds_pdf_orchestrator/cli.py +0 -542
  710. package/skills/vds-skill/vds-scripts/pdf_orchestrator/src/vds_pdf_orchestrator/config.py +0 -33
  711. package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/README.md +0 -650
  712. package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/__init__.py +0 -0
  713. package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/conftest.py +0 -520
  714. package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/requirements.txt +0 -51
  715. package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/run_tests.py +0 -659
  716. package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/test_config.py +0 -36
  717. package/skills/vds-skill/vds-scripts/platform_core/pyproject.toml +0 -49
  718. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/__init__.py +0 -16
  719. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/alembic/__init__.py +0 -18
  720. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/alembic/runtime.py +0 -139
  721. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/config.py +0 -88
  722. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/credentials.py +0 -40
  723. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/env.py +0 -24
  724. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/errors.py +0 -127
  725. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/__init__.py +0 -18
  726. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/auth.py +0 -32
  727. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/errors.py +0 -47
  728. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/pagination.py +0 -65
  729. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/retry.py +0 -62
  730. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/stack.py +0 -61
  731. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/logging.py +0 -132
  732. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/protocols.py +0 -77
  733. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/serialization.py +0 -80
  734. package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/severity.py +0 -175
  735. package/skills/vds-skill/vds-scripts/platform_core/tests/__init__.py +0 -0
  736. package/skills/vds-skill/vds-scripts/platform_core/tests/conftest.py +0 -1
  737. package/skills/vds-skill/vds-scripts/platform_core/tests/test_alembic_runtime.py +0 -300
  738. package/skills/vds-skill/vds-scripts/platform_core/tests/test_auth.py +0 -84
  739. package/skills/vds-skill/vds-scripts/platform_core/tests/test_config.py +0 -83
  740. package/skills/vds-skill/vds-scripts/platform_core/tests/test_credentials.py +0 -73
  741. package/skills/vds-skill/vds-scripts/platform_core/tests/test_env.py +0 -56
  742. package/skills/vds-skill/vds-scripts/platform_core/tests/test_errors.py +0 -201
  743. package/skills/vds-skill/vds-scripts/platform_core/tests/test_errors_http.py +0 -74
  744. package/skills/vds-skill/vds-scripts/platform_core/tests/test_http_settings.py +0 -116
  745. package/skills/vds-skill/vds-scripts/platform_core/tests/test_logging.py +0 -148
  746. package/skills/vds-skill/vds-scripts/platform_core/tests/test_pagination.py +0 -153
  747. package/skills/vds-skill/vds-scripts/platform_core/tests/test_protocols.py +0 -132
  748. package/skills/vds-skill/vds-scripts/platform_core/tests/test_retry.py +0 -151
  749. package/skills/vds-skill/vds-scripts/platform_core/tests/test_serialization.py +0 -92
  750. package/skills/vds-skill/vds-scripts/platform_core/tests/test_severity.py +0 -178
  751. package/skills/vds-skill/vds-scripts/platform_core/tests/test_stack.py +0 -130
  752. package/skills/vds-skill/vds-scripts/platform_core/uv.lock +0 -341
  753. package/skills/vds-skill/vds-scripts/pyproject.toml +0 -145
  754. package/skills/vds-skill/vds-scripts/pyrightconfig.json +0 -82
  755. package/skills/vds-skill/vds-scripts/repo-manifest.yaml +0 -380
  756. package/skills/vds-skill/vds-scripts/repo-manifest.yaml.example +0 -25
  757. package/skills/vds-skill/vds-scripts/ruff.toml +0 -100
  758. package/skills/vds-skill/vds-scripts/scripts/BRD-Validation-API.postman_collection.json +0 -706
  759. package/skills/vds-skill/vds-scripts/scripts/BRD-Validation-README.md +0 -308
  760. package/skills/vds-skill/vds-scripts/scripts/README.md +0 -271
  761. package/skills/vds-skill/vds-scripts/scripts/_validate_alias_phase2.py +0 -137
  762. package/skills/vds-skill/vds-scripts/scripts/audit-cli-patterns.sh +0 -135
  763. package/skills/vds-skill/vds-scripts/scripts/audit-dashboard.sh +0 -525
  764. package/skills/vds-skill/vds-scripts/scripts/backup.sh +0 -123
  765. package/skills/vds-skill/vds-scripts/scripts/bootstrap_uv.sh +0 -69
  766. package/skills/vds-skill/vds-scripts/scripts/brd-validation-environment.json +0 -51
  767. package/skills/vds-skill/vds-scripts/scripts/brd-validation-test-results.json +0 -13023
  768. package/skills/vds-skill/vds-scripts/scripts/brd_coverage_report.json +0 -276
  769. package/skills/vds-skill/vds-scripts/scripts/check-future-annotations.py +0 -22
  770. package/skills/vds-skill/vds-scripts/scripts/check-invalid-symlinks.py +0 -183
  771. package/skills/vds-skill/vds-scripts/scripts/check-no-debug-markers.py +0 -21
  772. package/skills/vds-skill/vds-scripts/scripts/check-no-unittest.py +0 -21
  773. package/skills/vds-skill/vds-scripts/scripts/ci/assert_no_openspace_commits.sh +0 -37
  774. package/skills/vds-skill/vds-scripts/scripts/ci/verify_branch_protection.sh +0 -64
  775. package/skills/vds-skill/vds-scripts/scripts/closure/phase1_check.sh +0 -483
  776. package/skills/vds-skill/vds-scripts/scripts/closure/phase2_check.sh +0 -500
  777. package/skills/vds-skill/vds-scripts/scripts/create_memory_session.py +0 -36
  778. package/skills/vds-skill/vds-scripts/scripts/deploy-bootstrap.sh +0 -201
  779. package/skills/vds-skill/vds-scripts/scripts/deployment/load_docker_images_offline.sh +0 -90
  780. package/skills/vds-skill/vds-scripts/scripts/dev/cli_smoke.sh +0 -259
  781. package/skills/vds-skill/vds-scripts/scripts/final_completion_report.md +0 -139
  782. package/skills/vds-skill/vds-scripts/scripts/folder_structure_report.json +0 -321
  783. package/skills/vds-skill/vds-scripts/scripts/generate_completion_report.py +0 -132
  784. package/skills/vds-skill/vds-scripts/scripts/generate_intellij_modules.py +0 -154
  785. package/skills/vds-skill/vds-scripts/scripts/init-pgbouncer-userlist.sh +0 -154
  786. package/skills/vds-skill/vds-scripts/scripts/link_integrity_report.json +0 -807
  787. package/skills/vds-skill/vds-scripts/scripts/move_audit_artifact_pages.py +0 -252
  788. package/skills/vds-skill/vds-scripts/scripts/move_audit_artifact_pages_rest.py +0 -165
  789. package/skills/vds-skill/vds-scripts/scripts/move_wrong_dept_pages.py +0 -235
  790. package/skills/vds-skill/vds-scripts/scripts/openspace_bootstrap.sh +0 -56
  791. package/skills/vds-skill/vds-scripts/scripts/openspace_common.sh +0 -75
  792. package/skills/vds-skill/vds-scripts/scripts/openspace_doctor.sh +0 -61
  793. package/skills/vds-skill/vds-scripts/scripts/openspace_sync_shadow.sh +0 -65
  794. package/skills/vds-skill/vds-scripts/scripts/phase7-baseline.sh +0 -77
  795. package/skills/vds-skill/vds-scripts/scripts/preflight/env_check.sh +0 -102
  796. package/skills/vds-skill/vds-scripts/scripts/repair_autopay_reports.sh +0 -173
  797. package/skills/vds-skill/vds-scripts/scripts/rollback_drill.sh +0 -659
  798. package/skills/vds-skill/vds-scripts/scripts/run-audit-in-tmux.sh +0 -286
  799. package/skills/vds-skill/vds-scripts/scripts/run-department-audit.sh +0 -495
  800. package/skills/vds-skill/vds-scripts/scripts/run-project-audit.sh +0 -267
  801. package/skills/vds-skill/vds-scripts/scripts/save_intellij_memories.py +0 -112
  802. package/skills/vds-skill/vds-scripts/scripts/save_memories_to_vds_ai.py +0 -81
  803. package/skills/vds-skill/vds-scripts/scripts/save_memories_vds_style.py +0 -133
  804. package/skills/vds-skill/vds-scripts/scripts/search_intellij_memories.py +0 -48
  805. package/skills/vds-skill/vds-scripts/scripts/setup_intellij_workspace.py +0 -71
  806. package/skills/vds-skill/vds-scripts/scripts/smoke-test-deploy.sh +0 -137
  807. package/skills/vds-skill/vds-scripts/scripts/smoke_deploy_lib.py +0 -205
  808. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/README.md +0 -89
  809. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/confluence_sync_coordinator.sh +0 -27
  810. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/coordination.sh +0 -114
  811. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/diagram_coordinator.sh +0 -25
  812. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/docs_root.sh +0 -22
  813. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/generate_diagrams.sh +0 -22
  814. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/markdown_coordinator.sh +0 -25
  815. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/progress_dashboard.sh +0 -17
  816. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/schema_coordinator.sh +0 -25
  817. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/sync_confluence.sh +0 -30
  818. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/update_dependencies.sh +0 -19
  819. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/validate_links.sh +0 -86
  820. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/validate_markdown.sh +0 -52
  821. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/validate_schemas.sh +0 -26
  822. package/skills/vds-skill/vds-scripts/scripts/target-state-automation/validate_structure.sh +0 -98
  823. package/skills/vds-skill/vds-scripts/scripts/tests/__init__.py +0 -1
  824. package/skills/vds-skill/vds-scripts/scripts/tests/test_dockerfile_correctness.py +0 -815
  825. package/skills/vds-skill/vds-scripts/scripts/tests/test_makefile_loadouts.py +0 -560
  826. package/skills/vds-skill/vds-scripts/scripts/tests/test_smoke_deploy.py +0 -313
  827. package/skills/vds-skill/vds-scripts/scripts/tests/test_verify_alembic.py +0 -581
  828. package/skills/vds-skill/vds-scripts/scripts/tests/test_verify_infra_topology.py +0 -254
  829. package/skills/vds-skill/vds-scripts/scripts/update_modules_xml.py +0 -194
  830. package/skills/vds-skill/vds-scripts/scripts/uv-workspace-alignment-verification-2026-03-25.md +0 -128
  831. package/skills/vds-skill/vds-scripts/scripts/uv-workspace-alignment-verification-2026-04-18.md +0 -100
  832. package/skills/vds-skill/vds-scripts/scripts/validate-cli-standardization.sh +0 -188
  833. package/skills/vds-skill/vds-scripts/scripts/validate_brd_coverage.py +0 -197
  834. package/skills/vds-skill/vds-scripts/scripts/validate_folder_structure.py +0 -234
  835. package/skills/vds-skill/vds-scripts/scripts/validate_link_integrity.py +0 -274
  836. package/skills/vds-skill/vds-scripts/scripts/vami017-caller-compat-report.md +0 -62
  837. package/skills/vds-skill/vds-scripts/scripts/vami017-phase-b-scaffold-notes.md +0 -79
  838. package/skills/vds-skill/vds-scripts/scripts/vds_sh_helpers.sh +0 -180
  839. package/skills/vds-skill/vds-scripts/scripts/verification/phase2_portable_paths_ubuntu_docker.sh +0 -26
  840. package/skills/vds-skill/vds-scripts/scripts/verify-infra-topology.py +0 -868
  841. package/skills/vds-skill/vds-scripts/scripts/verify-memory-cli-e2e.sh +0 -598
  842. package/skills/vds-skill/vds-scripts/scripts/verify-worktree-features.sh +0 -306
  843. package/skills/vds-skill/vds-scripts/scripts/worktree-add.sh +0 -128
  844. package/skills/vds-skill/vds-scripts/scripts/worktree-remove.sh +0 -112
  845. package/skills/vds-skill/vds-scripts/scripts/worktree_compose.sh +0 -269
  846. package/skills/vds-skill/vds-scripts/scripts/worktree_uv.sh +0 -77
  847. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/IMPLEMENTATION_AUDIT.md +0 -376
  848. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/README.md +0 -507
  849. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/pyproject.toml +0 -106
  850. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/scripts/ensure_symlink.sh +0 -38
  851. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/__init__.py +0 -164
  852. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/batch.py +0 -212
  853. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/cli.py +0 -1407
  854. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/client.py +0 -608
  855. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/config.py +0 -260
  856. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/diff.py +0 -220
  857. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/errors.py +0 -34
  858. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/external_sca.py +0 -932
  859. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/portfolio.py +0 -225
  860. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/pr.py +0 -505
  861. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/reports.py +0 -342
  862. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/scanner.py +0 -351
  863. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/webhooks.py +0 -269
  864. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/__init__.py +0 -0
  865. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/conftest.py +0 -134
  866. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_batch.py +0 -419
  867. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_config.py +0 -145
  868. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_errors.py +0 -78
  869. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_external_sca.py +0 -466
  870. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_pr.py +0 -471
  871. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_reports.py +0 -511
  872. package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_webhooks.py +0 -660
  873. package/skills/vds-skill/vds-scripts/uv.lock +0 -5046
  874. package/skills/vds-skill/vds-scripts/vds_agent_core/CHANGELOG.md +0 -36
  875. package/skills/vds-skill/vds-scripts/vds_agent_core/README.md +0 -453
  876. package/skills/vds-skill/vds-scripts/vds_agent_core/docs/PHASE9A_ASSESSMENT.md +0 -50
  877. package/skills/vds-skill/vds-scripts/vds_agent_core/docs/embedding.md +0 -468
  878. package/skills/vds-skill/vds-scripts/vds_agent_core/pyproject.toml +0 -51
  879. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/__init__.py +0 -29
  880. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/agents/__init__.py +0 -26
  881. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/agents/hooks.py +0 -119
  882. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/agents/loop.py +0 -864
  883. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/agents/tools.py +0 -41
  884. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/config.py +0 -252
  885. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/__init__.py +0 -55
  886. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/_cascade.py +0 -143
  887. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/budget.py +0 -353
  888. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/cache.py +0 -373
  889. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/embedding.py +0 -815
  890. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/provider.py +0 -173
  891. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/schemas.py +0 -45
  892. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/observability/__init__.py +0 -77
  893. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/observability/decorators.py +0 -258
  894. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/observability/jsonl_exporter.py +0 -236
  895. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/observability/tracer.py +0 -497
  896. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/profiles.py +0 -2015
  897. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/runtime/__init__.py +0 -0
  898. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/runtime/agent_id.py +0 -60
  899. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/security/__init__.py +0 -13
  900. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/security/credentials.py +0 -106
  901. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/skills/__init__.py +0 -1
  902. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/skills/executor.py +0 -238
  903. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/skills/manager.py +0 -381
  904. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/skills/policy.py +0 -568
  905. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/workflows/__init__.py +0 -19
  906. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/workflows/langgraph_runner.py +0 -102
  907. package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/workflows/protocols.py +0 -81
  908. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/__init__.py +0 -0
  909. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/conftest.py +0 -62
  910. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/integration/__init__.py +0 -0
  911. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/integration/test_audit_loop_hooks_integration.py +0 -135
  912. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/integration/test_audit_observability_integration.py +0 -246
  913. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/integration/test_public_api_stability.py +0 -91
  914. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/__init__.py +0 -0
  915. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/__init__.py +0 -0
  916. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_call_site_parallelism.py +0 -30
  917. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_dimension_guardrail.py +0 -25
  918. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_drop_in_provider_extensibility.py +0 -76
  919. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding.py +0 -393
  920. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding_cache.py +0 -302
  921. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding_extra.py +0 -696
  922. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding_subclass.py +0 -49
  923. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_no_provider_leakage_in_env.py +0 -34
  924. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_provider_auto_route.py +0 -48
  925. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_runtime_log_clean.py +0 -111
  926. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_w7_logic_fixes.py +0 -219
  927. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/__init__.py +0 -0
  928. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_embedding_block_parser.py +0 -194
  929. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_env_resolver_allowlist.py +0 -141
  930. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_profile_authorization.py +0 -158
  931. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_profiles_w3_extra.py +0 -547
  932. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_real_audit_profile_compat.py +0 -129
  933. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/runtime/__init__.py +0 -0
  934. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/runtime/test_for_agent.py +0 -322
  935. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/runtime/test_w9_cascade_edges.py +0 -369
  936. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/security/__init__.py +0 -0
  937. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/security/test_credentials.py +0 -132
  938. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_agent_loop.py +0 -663
  939. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_agent_loop_coverage.py +0 -429
  940. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_agents_hooks_defaults.py +0 -22
  941. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_budget.py +0 -155
  942. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_budget_coverage.py +0 -264
  943. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_budget_tracking_only.py +0 -71
  944. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_cache.py +0 -251
  945. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_cache_context.py +0 -62
  946. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_config.py +0 -155
  947. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_langgraph_runner.py +0 -45
  948. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_langgraph_runner_coverage.py +0 -98
  949. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_llm_cache_deep.py +0 -113
  950. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_decorators.py +0 -697
  951. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_hooks.py +0 -217
  952. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_jsonl_exporter.py +0 -542
  953. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_jsonl_wiring.py +0 -313
  954. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_tracer.py +0 -896
  955. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_profiles.py +0 -1571
  956. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_profiles_coverage.py +0 -444
  957. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_provider.py +0 -316
  958. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_schemas.py +0 -63
  959. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_executor.py +0 -297
  960. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_manager.py +0 -370
  961. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_manager_coverage.py +0 -364
  962. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_policy.py +0 -402
  963. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_rubric.py +0 -47
  964. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_tools.py +0 -51
  965. package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_workflow_protocols.py +0 -136
  966. package/skills/vds-skill/vds-scripts/vds_cli/README.md +0 -201
  967. package/skills/vds-skill/vds-scripts/vds_cli/VERIFICATION_REPORT.md +0 -41
  968. package/skills/vds-skill/vds-scripts/vds_cli/pyproject.toml +0 -50
  969. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/__init__.py +0 -3
  970. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/assets/git-credential-helper.py +0 -235
  971. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/cli.py +0 -1126
  972. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/commands/__init__.py +0 -1
  973. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/commands/lint_cli.py +0 -389
  974. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/confluence_sync.py +0 -846
  975. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/consumption/__init__.py +0 -7
  976. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/consumption/funnel.py +0 -105
  977. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/consumption/scanner.py +0 -211
  978. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/freshness/report.py +0 -90
  979. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/types.py +0 -27
  980. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs_cmd.py +0 -672
  981. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs_metrics.py +0 -75
  982. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs_sync.py +0 -1171
  983. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/ecosystem/__init__.py +0 -39
  984. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/ecosystem/report.py +0 -439
  985. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/ecosystem_docs.py +0 -164
  986. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/env.py +0 -111
  987. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/env_git_helper.py +0 -281
  988. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/__init__.py +0 -3
  989. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/google_sheets_orchestrator.py +0 -173
  990. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/router.py +0 -232
  991. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/skills_cmd.py +0 -274
  992. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/sync_api.py +0 -613
  993. package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/sync_service.py +0 -283
  994. package/skills/vds-skill/vds-scripts/vds_cli/tests/conftest.py +0 -62
  995. package/skills/vds-skill/vds-scripts/vds_cli/tests/test_env_git_helper_lifecycle.py +0 -261
  996. package/skills/vds-skill/vds-scripts/vds_cli/tests/test_git_credential_helper.py +0 -240
  997. package/skills/vds-skill/vds-scripts/vds_cli/tests/test_router_help_proxy.py +0 -43
  998. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_cli.py +0 -241
  999. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_cli_DOC004.py +0 -110
  1000. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_confluence_sync.py +0 -315
  1001. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_confluence_sync_wave7.py +0 -375
  1002. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_consumption_funnel.py +0 -106
  1003. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_consumption_scanner.py +0 -144
  1004. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_cmd.py +0 -89
  1005. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_cmd_wave8.py +0 -161
  1006. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_metrics.py +0 -16
  1007. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_quality_score.py +0 -61
  1008. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_sync.py +0 -417
  1009. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_ecosystem_cli_dashboard.py +0 -667
  1010. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_ecosystem_cli_dashboard_rendering.py +0 -143
  1011. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_ecosystem_docs.py +0 -63
  1012. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_env.py +0 -85
  1013. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_freshness_report.py +0 -125
  1014. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_lint_cli.py +0 -224
  1015. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_router.py +0 -101
  1016. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_skills_cmd.py +0 -419
  1017. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_sync_api.py +0 -357
  1018. package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_sync_service.py +0 -170
  1019. package/skills/vds-skill/vds-scripts/vds_cli/tests/verification/conftest.py +0 -51
  1020. package/skills/vds-skill/vds-scripts/vds_cli/tests/verification/test_bitbucket_real.py +0 -32
  1021. package/skills/vds-skill/vds-scripts/vds_cli/tests/verification/test_confluence_real.py +0 -32
  1022. package/skills/vds-skill/vds-scripts/vds_cli/tests/verification/test_jira_real.py +0 -40
  1023. package/skills/vds-skill/vds-scripts/vds_cli_common/README.md +0 -190
  1024. package/skills/vds-skill/vds-scripts/vds_cli_common/pyproject.toml +0 -96
  1025. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/__init__.py +0 -36
  1026. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/app.py +0 -55
  1027. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/completers.py +0 -139
  1028. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/context.py +0 -201
  1029. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/env.py +0 -163
  1030. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/errors.py +0 -440
  1031. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/output.py +0 -284
  1032. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/paths.py +0 -78
  1033. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/testing.py +0 -211
  1034. package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/version.py +0 -85
  1035. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/__init__.py +0 -0
  1036. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_app.py +0 -126
  1037. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_completers.py +0 -148
  1038. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_context.py +0 -192
  1039. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_env.py +0 -235
  1040. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_errors.py +0 -275
  1041. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_output.py +0 -229
  1042. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_paths.py +0 -61
  1043. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_testing.py +0 -138
  1044. package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_version.py +0 -64
  1045. package/skills/vds-skill/vds-scripts/vidp_orchestrator/README.md +0 -31
  1046. package/skills/vds-skill/vds-scripts/vidp_orchestrator/pyproject.toml +0 -50
  1047. package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/__init__.py +0 -26
  1048. package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/cli.py +0 -246
  1049. package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/client.py +0 -104
  1050. package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/config.py +0 -82
  1051. package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/workflows.json +0 -3
  1052. package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/workflows.py +0 -130
  1053. package/skills/vds-skill/vds-scripts-skill/.openskills.json +0 -6
  1054. package/skills/vds-skill/vds-scripts-skill/QUALITY.md +0 -44
  1055. package/skills/vds-skill/vds-scripts-skill/SKILL.md +0 -132
  1056. package/skills/vds-skill/vds-scripts-skill/references/audit-commands.md +0 -171
  1057. package/skills/vds-skill/vds-scripts-skill/references/capability-index.md +0 -34
  1058. package/skills/vds-skill/vds-scripts-skill/references/development-commands.md +0 -12
  1059. package/skills/vds-skill/vds-scripts-skill/references/google-sheets.md +0 -71
  1060. package/skills/vds-skill/vds-scripts-skill/references/integration-commands.md +0 -17
  1061. package/skills/vds-skill/vds-scripts-skill/references/platform-bootstrap.md +0 -31
  1062. package/skills/vds-skill/vds-scripts-skill/references/specialist-routing.md +0 -14
  1063. package/skills/vds-skill/vds-scripts-skill/references/validation-commands.md +0 -15
@@ -1,1685 +0,0 @@
1
- """Jira adapter using atlassian-python-api (SDK-only)."""
2
-
3
- from __future__ import annotations
4
-
5
- from collections.abc import Iterable, Sequence
6
- from typing import TYPE_CHECKING, Any
7
-
8
- from atlassian import Jira
9
-
10
- from .errors import (
11
- AuthError,
12
- ConflictError,
13
- NotFoundError,
14
- RateLimitError,
15
- ResponseError,
16
- TransportError,
17
- VDSClientError,
18
- )
19
-
20
- if TYPE_CHECKING:
21
- from requests import Session
22
-
23
-
24
- class JiraAdapter:
25
- def __init__(
26
- self,
27
- *,
28
- url: str,
29
- username: str | None = None,
30
- password: str | None = None,
31
- token: str | None = None,
32
- session: Session | None = None,
33
- cloud: bool = False,
34
- timeout: int = 30,
35
- ) -> None:
36
- auth = {}
37
- if token:
38
- auth = {"token": token}
39
- elif username and password:
40
- auth = {"username": username, "password": password}
41
- else:
42
- raise AuthError("Provide either token or username/password")
43
-
44
- self._client = Jira(url=url, session=session, cloud=cloud, timeout=timeout, **auth)
45
- self._is_cloud = cloud or ".atlassian.net" in url.lower()
46
-
47
- # --- read operations ---
48
- def jql(self, query: str, *, limit: int = 50, fields: Iterable[str] | None = None) -> dict[str, Any]:
49
- try:
50
- return self._client.jql(query, limit=limit, fields=",".join(fields) if fields else None)
51
- except Exception as exc: # map coarse errors; refine as needed
52
- _raise_mapped(exc)
53
-
54
- def get_issue(self, key: str) -> dict[str, Any]:
55
- try:
56
- issue = self._client.issue(key)
57
- if not issue:
58
- raise NotFoundError(f"Issue not found: {key}")
59
- return issue
60
- except Exception as exc:
61
- _raise_mapped(exc)
62
-
63
- def list_projects(self) -> list[dict[str, Any]]:
64
- try:
65
- projects = self._client.projects()
66
- return projects if isinstance(projects, list) else list(projects)
67
- except Exception as exc:
68
- _raise_mapped(exc)
69
-
70
- # --- write operations (guarded by CLI) ---
71
- def create_issue(
72
- self,
73
- *,
74
- project_key: str,
75
- summary: str,
76
- issuetype: str,
77
- description: str | None = None,
78
- assignee: str | None = None,
79
- labels: Sequence[str] | None = None,
80
- extra_fields: dict[str, Any] | None = None,
81
- ) -> dict[str, Any]:
82
- fields: dict[str, Any] = {
83
- "project": {"key": project_key},
84
- "summary": summary,
85
- "issuetype": {"name": issuetype},
86
- }
87
- if description:
88
- fields["description"] = description
89
- if assignee:
90
- # Server/DC uses username key (current behavior, not legacy)
91
- fields["assignee"] = {"name": assignee}
92
- if labels:
93
- fields["labels"] = list(labels)
94
- if extra_fields:
95
- fields.update(extra_fields)
96
- try:
97
- return self._client.create_issue(fields=fields) # type: ignore[call-arg]
98
- except Exception as exc:
99
- _raise_mapped(exc)
100
-
101
- def update_issue_fields(self, key: str, fields: dict[str, Any]) -> dict[str, Any]:
102
- try:
103
- # atlassian-python-api: Jira.update_issue_field(issue_key, fields)
104
- return self._client.update_issue_field(key, fields) # type: ignore[call-arg]
105
- except Exception as exc:
106
- _raise_mapped(exc)
107
-
108
- def add_comment(self, key: str, message: str) -> dict[str, Any]:
109
- """Add comment to issue."""
110
- try:
111
- return self._client.issue_add_comment(key, message) # type: ignore[attr-defined]
112
- except Exception as exc:
113
- _raise_mapped(exc)
114
-
115
- def get_comments(self, key: str) -> list[dict[str, Any]]:
116
- """Get comments from issue."""
117
- try:
118
- result = self._client.issue_get_comments(key) # type: ignore[attr-defined]
119
- if isinstance(result, dict) and "comments" in result:
120
- return result["comments"]
121
- return result if isinstance(result, list) else []
122
- except Exception as exc:
123
- _raise_mapped(exc)
124
-
125
- def transition_issue(self, key: str, to_status: str) -> None:
126
- try:
127
- transitions = self.get_issue_transitions(key)
128
- if not transitions:
129
- raise VDSClientError(f"No transitions available for {key}")
130
- match = None
131
- for t in transitions:
132
- name = str(t.get("name", ""))
133
- if name.lower() == to_status.lower():
134
- match = t.get("id")
135
- break
136
- if not match:
137
- raise VDSClientError(f"Transition '{to_status}' not found for {key}")
138
-
139
- transition_id = int(match)
140
- # Prefer official atlassian-python-api transition APIs.
141
- if hasattr(self._client, "set_issue_status_by_transition_id"):
142
- self._client.set_issue_status_by_transition_id(key, transition_id) # type: ignore[attr-defined]
143
- return
144
- if hasattr(self._client, "set_issue_status_by_transition_name"):
145
- self._client.set_issue_status_by_transition_name(key, to_status) # type: ignore[attr-defined]
146
- return
147
- if hasattr(self._client, "issue_transition"):
148
- self._client.issue_transition(key, to_status) # type: ignore[attr-defined]
149
- return
150
- raise VDSClientError("Jira client does not support issue transition APIs")
151
- except Exception as exc:
152
- _raise_mapped(exc)
153
-
154
- def delete_issue(self, key: str) -> None:
155
- try:
156
- self._client.delete_issue(key)
157
- except Exception as exc:
158
- _raise_mapped(exc)
159
-
160
- # --- metadata operations ---
161
- def get_createmeta(
162
- self, project_key: str, issuetype: str | None = None, expand: str | None = None
163
- ) -> dict[str, Any]:
164
- """Get create metadata for issue creation (field definitions, allowed values).
165
-
166
- Prefer the newer createmeta endpoints and fall back to legacy createmeta when needed.
167
- """
168
- legacy_expand = expand or "projects.issuetypes.fields"
169
-
170
- if issuetype:
171
- try:
172
- return self._get_createmeta_v2(project_key, issuetype)
173
- except Exception as exc:
174
- if not self._createmeta_should_fallback(exc):
175
- _raise_mapped(exc)
176
-
177
- try:
178
- return self._get_createmeta_legacy(project_key, issuetype=issuetype, expand=legacy_expand)
179
- except Exception:
180
- try:
181
- return self._get_createmeta_legacy_rest(project_key, issuetype=issuetype, expand=legacy_expand)
182
- except Exception as fallback_exc:
183
- _raise_mapped(fallback_exc)
184
-
185
- raise VDSClientError("Unexpected createmeta fallback path") # pragma: no cover
186
-
187
- def _get_createmeta_v2(self, project_key: str, issuetype: str) -> dict[str, Any]:
188
- if not hasattr(self._client, "issue_createmeta_issuetypes") or not hasattr(
189
- self._client, "issue_createmeta_fieldtypes"
190
- ):
191
- raise VDSClientError("Jira client does not support createmeta v2 endpoints")
192
-
193
- issue_types, issuetypes_payload = self._collect_createmeta_issuetypes(project_key)
194
- matched = self._match_createmeta_issuetype(issue_types, issuetype)
195
- if not matched:
196
- raise VDSClientError(f"Issue type '{issuetype}' not found for project '{project_key}'")
197
-
198
- issue_type_id = self._extract_createmeta_issuetype_id(matched)
199
- if not issue_type_id:
200
- raise VDSClientError(f"Issue type id not available for '{issuetype}' in project '{project_key}'")
201
-
202
- fields_payload = self._collect_createmeta_fields(project_key, issue_type_id)
203
- fields = self._normalize_createmeta_fields(fields_payload)
204
-
205
- issue_type_entry = dict(matched)
206
- issue_type_entry["fields"] = fields
207
-
208
- project_entry: dict[str, Any] = {"key": project_key}
209
- project_id = None
210
- if isinstance(issuetypes_payload, dict):
211
- project_id = issuetypes_payload.get("projectId") or issuetypes_payload.get("project_id")
212
- if not project_id and isinstance(issuetypes_payload.get("project"), dict):
213
- project_id = issuetypes_payload["project"].get("id") or issuetypes_payload["project"].get("key")
214
- if project_id:
215
- project_entry["id"] = str(project_id)
216
-
217
- return {"projects": [{**project_entry, "issuetypes": [issue_type_entry]}]}
218
-
219
- def _collect_createmeta_issuetypes(self, project_key: str) -> tuple[list[dict[str, Any]], dict[str, Any] | None]:
220
- start = 0
221
- limit = 100
222
- items: list[dict[str, Any]] = []
223
- last_payload: dict[str, Any] | None = None
224
-
225
- while True:
226
- payload = self._client.issue_createmeta_issuetypes(project_key, start=start, limit=limit) # type: ignore[attr-defined]
227
- if isinstance(payload, dict):
228
- last_payload = payload
229
-
230
- page_items = self._createmeta_list_from_payload(payload, ("values", "issueTypes", "issuetypes"))
231
- if page_items:
232
- items.extend(page_items)
233
- if isinstance(payload, list):
234
- break
235
-
236
- if self._createmeta_page_is_last(payload, start=start, fetched=len(page_items), limit=limit):
237
- break
238
-
239
- if not page_items:
240
- break
241
-
242
- start = self._createmeta_next_start(payload, start=start, fetched=len(page_items), limit=limit)
243
-
244
- return items, last_payload
245
-
246
- def _collect_createmeta_fields(self, project_key: str, issue_type_id: str) -> dict[str, Any] | list[dict[str, Any]]:
247
- start = 0
248
- limit = 200
249
- items: list[dict[str, Any]] = []
250
-
251
- while True:
252
- payload = self._client.issue_createmeta_fieldtypes(project_key, issue_type_id, start=start, limit=limit) # type: ignore[attr-defined]
253
- if isinstance(payload, dict) and isinstance(payload.get("fields"), dict):
254
- return payload["fields"]
255
-
256
- page_items = self._createmeta_list_from_payload(payload, ("fields", "values"))
257
- if page_items:
258
- items.extend(page_items)
259
- if isinstance(payload, list):
260
- break
261
-
262
- if self._createmeta_page_is_last(payload, start=start, fetched=len(page_items), limit=limit):
263
- break
264
-
265
- if not page_items:
266
- break
267
-
268
- start = self._createmeta_next_start(payload, start=start, fetched=len(page_items), limit=limit)
269
-
270
- return items
271
-
272
- @staticmethod
273
- def _normalize_createmeta_fields(fields_payload: dict[str, Any] | list[dict[str, Any]]) -> dict[str, Any]:
274
- if isinstance(fields_payload, dict):
275
- if isinstance(fields_payload.get("fields"), list):
276
- fields_payload = fields_payload["fields"]
277
- elif isinstance(fields_payload.get("values"), list):
278
- fields_payload = fields_payload["values"]
279
- else:
280
- return fields_payload
281
-
282
- fields: dict[str, Any] = {}
283
- for item in fields_payload:
284
- if not isinstance(item, dict):
285
- continue
286
- field_id = str(item.get("fieldId") or item.get("id") or item.get("key") or item.get("name") or "")
287
- if not field_id:
288
- continue
289
- field_info = dict(item)
290
- if "name" not in field_info and item.get("key"):
291
- field_info["name"] = str(item["key"])
292
- fields[field_id] = field_info
293
-
294
- return fields
295
-
296
- @staticmethod
297
- def _match_createmeta_issuetype(issue_types: list[dict[str, Any]], issuetype: str) -> dict[str, Any] | None:
298
- target = issuetype.strip().lower()
299
- for issue_type in issue_types:
300
- if not isinstance(issue_type, dict):
301
- continue
302
- type_id = str(issue_type.get("id") or issue_type.get("issueTypeId") or issue_type.get("issuetypeId") or "")
303
- type_name = str(issue_type.get("name") or issue_type.get("issueType") or issue_type.get("value") or "")
304
- if type_id and type_id == issuetype:
305
- return issue_type
306
- if type_name and type_name.lower() == target:
307
- return issue_type
308
- return None
309
-
310
- @staticmethod
311
- def _extract_createmeta_issuetype_id(issue_type: dict[str, Any]) -> str | None:
312
- for key in ("id", "issueTypeId", "issuetypeId"):
313
- value = issue_type.get(key)
314
- if value:
315
- return str(value)
316
- return None
317
-
318
- @staticmethod
319
- def _createmeta_list_from_payload(payload: Any, keys: Sequence[str]) -> list[dict[str, Any]]:
320
- if isinstance(payload, list):
321
- return [item for item in payload if isinstance(item, dict)]
322
- if not isinstance(payload, dict):
323
- return []
324
- for key in keys:
325
- value = payload.get(key)
326
- if isinstance(value, list):
327
- return [item for item in value if isinstance(item, dict)]
328
- return []
329
-
330
- @staticmethod
331
- def _createmeta_page_is_last(payload: Any, start: int, fetched: int, limit: int) -> bool:
332
- if isinstance(payload, dict):
333
- if payload.get("isLast") is True or payload.get("last") is True:
334
- return True
335
- total = payload.get("total")
336
- if total is not None:
337
- start_at = JiraAdapter._coerce_int(payload.get("startAt", payload.get("start", start)), start)
338
- size = JiraAdapter._coerce_int(payload.get("maxResults", payload.get("size", limit)), limit)
339
- if fetched:
340
- size = fetched
341
- return start_at + size >= JiraAdapter._coerce_int(total, 0)
342
- return fetched < limit
343
-
344
- @staticmethod
345
- def _createmeta_next_start(payload: Any, start: int, fetched: int, limit: int) -> int:
346
- if isinstance(payload, dict):
347
- start_at = JiraAdapter._coerce_int(payload.get("startAt", payload.get("start", start)), start)
348
- size = JiraAdapter._coerce_int(payload.get("maxResults", payload.get("size", limit)), limit)
349
- if fetched:
350
- size = fetched
351
- return start_at + size
352
- return start + (fetched or limit)
353
-
354
- @staticmethod
355
- def _coerce_int(value: Any, default: int = 0) -> int:
356
- try:
357
- return int(value)
358
- except (TypeError, ValueError):
359
- return default
360
-
361
- @staticmethod
362
- def _coerce_list_items(payload: Any, preferred_keys: tuple[str, ...] = ("values",)) -> list[dict[str, Any]]:
363
- """Normalize Jira SDK responses that may be list or paginated dict payloads."""
364
- if isinstance(payload, list):
365
- return [item for item in payload if isinstance(item, dict)]
366
- if isinstance(payload, dict):
367
- for key in preferred_keys:
368
- value = payload.get(key)
369
- if isinstance(value, list):
370
- return [item for item in value if isinstance(item, dict)]
371
- for fallback_key in ("values", "issues", "epics", "sprints", "versions", "dashboards", "properties"):
372
- value = payload.get(fallback_key)
373
- if isinstance(value, list):
374
- return [item for item in value if isinstance(item, dict)]
375
- return []
376
-
377
- @staticmethod
378
- def _createmeta_should_fallback(exc: Exception) -> bool:
379
- response = getattr(exc, "response", None)
380
- if response is not None:
381
- try:
382
- if int(getattr(response, "status_code", 0)) in (404, 405, 410):
383
- return True
384
- except (TypeError, ValueError):
385
- pass
386
- text = str(exc).lower()
387
- return any(
388
- token in text
389
- for token in (
390
- "404",
391
- "405",
392
- "not found",
393
- "unknown resource",
394
- "not supported",
395
- "does not support",
396
- "not support",
397
- )
398
- )
399
-
400
- def _get_createmeta_legacy(
401
- self, project_key: str, *, issuetype: str | None = None, expand: str | None = None
402
- ) -> dict[str, Any]:
403
- kwargs = {}
404
- if expand:
405
- kwargs["expand"] = expand
406
- payload = self._client.issue_createmeta(project_key, **kwargs)
407
- if issuetype:
408
- payload = self._filter_createmeta_payload(payload, project_key=project_key, issuetype=issuetype)
409
- return payload
410
-
411
- def _get_createmeta_legacy_rest(
412
- self, project_key: str, *, issuetype: str | None = None, expand: str | None = None
413
- ) -> dict[str, Any]:
414
- params: dict[str, Any] = {"projectKeys": project_key}
415
- if issuetype:
416
- param_name = "issuetypeIds" if issuetype.isdigit() else "issuetypeNames"
417
- params[param_name] = issuetype
418
- if expand:
419
- params["expand"] = expand
420
-
421
- base_url = self._client.resource_url("issue") # type: ignore[attr-defined]
422
- url = f"{base_url}/createmeta"
423
- return self._client.get(url, params=params) # type: ignore[attr-defined]
424
-
425
- @staticmethod
426
- def _filter_createmeta_payload(payload: dict[str, Any], *, project_key: str, issuetype: str) -> dict[str, Any]:
427
- if not isinstance(payload, dict):
428
- return payload
429
- projects = payload.get("projects")
430
- if not isinstance(projects, list):
431
- return payload
432
-
433
- filtered_projects: list[dict[str, Any]] = []
434
- for project in projects:
435
- if not isinstance(project, dict):
436
- continue
437
- project_key_match = str(project.get("key", "")).lower() == project_key.lower()
438
- project_id_match = str(project.get("id", "")) == project_key
439
- if not (project_key_match or project_id_match):
440
- continue
441
-
442
- issuetypes = project.get("issuetypes", [])
443
- if isinstance(issuetypes, list):
444
- filtered_types = []
445
- for issue_type in issuetypes:
446
- if not isinstance(issue_type, dict):
447
- continue
448
- name = str(issue_type.get("name", "")).lower()
449
- type_id = str(issue_type.get("id", ""))
450
- if name == issuetype.lower() or type_id == issuetype:
451
- filtered_types.append(issue_type)
452
- if filtered_types:
453
- project_copy = dict(project)
454
- project_copy["issuetypes"] = filtered_types
455
- filtered_projects.append(project_copy)
456
-
457
- if filtered_projects:
458
- payload_copy = dict(payload)
459
- payload_copy["projects"] = filtered_projects
460
- return payload_copy
461
-
462
- return payload
463
-
464
- def get_editmeta(self, issue_key: str) -> dict[str, Any]:
465
- """Get edit metadata for issue updates (field definitions, allowed values)."""
466
- try:
467
- if hasattr(self._client, "issue_editmeta"):
468
- return self._client.issue_editmeta(issue_key) # type: ignore[attr-defined]
469
-
470
- get_fn = getattr(self._client, "get", None)
471
- if not get_fn:
472
- raise VDSClientError("Jira client does not support editmeta lookup")
473
-
474
- resource_url = getattr(self._client, "resource_url", None)
475
- if callable(resource_url):
476
- base_url = resource_url("issue")
477
- url = f"{base_url}/{issue_key}/editmeta"
478
- return get_fn(url)
479
-
480
- return get_fn(f"issue/{issue_key}/editmeta")
481
- except Exception as exc:
482
- _raise_mapped(exc)
483
-
484
- # --- issue utilities ---
485
- def issue_exists(self, key: str) -> bool:
486
- """Check if issue exists."""
487
- try:
488
- return self._client.issue_exists(key) # type: ignore[attr-defined]
489
- except Exception as exc:
490
- _raise_mapped(exc)
491
-
492
- def issue_deleted(self, key: str) -> bool:
493
- """Check if issue is deleted."""
494
- try:
495
- return self._client.issue_deleted(key) # type: ignore[attr-defined]
496
- except Exception as exc:
497
- _raise_mapped(exc)
498
-
499
- def match_jql(self, issue_ids: list[str], jqls: list[str]) -> dict[str, Any]:
500
- """Check issues against JQL queries."""
501
- try:
502
- return self._client.match_jql(issue_ids, jqls) # type: ignore[attr-defined]
503
- except Exception as exc:
504
- _raise_mapped(exc)
505
-
506
- def get_issue_field_value(self, key: str, field: str) -> Any:
507
- """Get issue field value."""
508
- try:
509
- return self._client.issue_field_value(key, field) # type: ignore[attr-defined]
510
- except Exception as exc:
511
- _raise_mapped(exc)
512
-
513
- def append_issue_field_value(self, key: str, field: str, value: Any, notify_users: bool = True) -> dict[str, Any]:
514
- """Append value to issue field (e.g., for multi-select fields)."""
515
- try:
516
- return self._client.issue_field_value_append(key, field, value, notify_users=notify_users) # type: ignore[attr-defined]
517
- except Exception as exc:
518
- _raise_mapped(exc)
519
-
520
- # --- attachment operations ---
521
- def add_attachment(self, key: str, filename: str) -> dict[str, Any]:
522
- """Add attachment to issue."""
523
- try:
524
- return self._client.add_attachment(key, filename) # type: ignore[attr-defined]
525
- except Exception as exc:
526
- _raise_mapped(exc)
527
-
528
- def get_attachments(self, key: str) -> list[dict[str, Any]]:
529
- """Get list of attachments for issue."""
530
- try:
531
- issue = self.get_issue(key)
532
- return issue.get("fields", {}).get("attachment", [])
533
- except Exception as exc:
534
- _raise_mapped(exc)
535
-
536
- def download_attachments(self, key: str, path: str | None = None, cloud: bool = False) -> list[str]:
537
- """Download attachments from issue."""
538
- try:
539
- issue = self.get_issue(key)
540
- return self._client.download_attachments_from_issue(issue, path=path, cloud=cloud) # type: ignore[attr-defined]
541
- except Exception as exc:
542
- _raise_mapped(exc)
543
-
544
- # --- project operations ---
545
- def get_project(self, key: str, expand: str | None = None) -> dict[str, Any]:
546
- """Get project details."""
547
- try:
548
- return self._client.project(key, expand=expand) # type: ignore[attr-defined]
549
- except Exception as exc:
550
- _raise_mapped(exc)
551
-
552
- def get_project_components(self, key: str) -> list[dict[str, Any]]:
553
- """Get project components."""
554
- try:
555
- return self._client.get_project_components(key) # type: ignore[attr-defined]
556
- except Exception as exc:
557
- _raise_mapped(exc)
558
-
559
- def get_project_versions(self, key: str, expand: str | None = None) -> list[dict[str, Any]]:
560
- """Get project versions."""
561
- try:
562
- return self._client.get_project_versions(key, expand=expand) # type: ignore[attr-defined]
563
- except Exception as exc:
564
- _raise_mapped(exc)
565
-
566
- def add_version(
567
- self,
568
- key: str,
569
- project_id: str,
570
- version: str,
571
- is_archived: bool = False,
572
- is_released: bool = False,
573
- ) -> dict[str, Any]:
574
- """Add version to project."""
575
- try:
576
- return self._client.add_version(key, project_id, version, is_archived=is_archived, is_released=is_released) # type: ignore[attr-defined]
577
- except Exception as exc:
578
- _raise_mapped(exc)
579
-
580
- def update_version(
581
- self,
582
- version: str,
583
- name: str | None = None,
584
- description: str | None = None,
585
- is_archived: bool | None = None,
586
- is_released: bool | None = None,
587
- start_date: str | None = None,
588
- release_date: str | None = None,
589
- ) -> dict[str, Any]:
590
- """Update version."""
591
- try:
592
- return self._client.update_version( # type: ignore[attr-defined]
593
- version,
594
- name=name,
595
- description=description,
596
- is_archived=is_archived,
597
- is_released=is_released,
598
- start_date=start_date,
599
- release_date=release_date,
600
- )
601
- except Exception as exc:
602
- _raise_mapped(exc)
603
-
604
- # --- component operations ---
605
- def get_component(self, component_id: str) -> dict[str, Any]:
606
- """Get component details."""
607
- try:
608
- return self._client.component(component_id) # type: ignore[attr-defined]
609
- except Exception as exc:
610
- _raise_mapped(exc)
611
-
612
- def create_component(self, component: dict[str, Any]) -> dict[str, Any]:
613
- """Create component."""
614
- try:
615
- return self._client.create_component(component) # type: ignore[attr-defined]
616
- except Exception as exc:
617
- _raise_mapped(exc)
618
-
619
- def update_component(self, component: dict[str, Any], component_id: str) -> dict[str, Any]:
620
- """Update component."""
621
- try:
622
- return self._client.update_component(component, component_id) # type: ignore[attr-defined]
623
- except Exception as exc:
624
- _raise_mapped(exc)
625
-
626
- def delete_component(self, component_id: str) -> None:
627
- """Delete component."""
628
- try:
629
- self._client.delete_component(component_id) # type: ignore[attr-defined]
630
- except Exception as exc:
631
- _raise_mapped(exc)
632
-
633
- # --- user operations ---
634
- def get_myself(self) -> dict[str, Any]:
635
- """Get current user info."""
636
- try:
637
- return self._client.myself() # type: ignore[attr-defined]
638
- except Exception as exc:
639
- _raise_mapped(exc)
640
-
641
- def get_user(self, account_id: str) -> dict[str, Any]:
642
- """Get user by account ID."""
643
- try:
644
- return self._client.user(account_id) # type: ignore[attr-defined]
645
- except Exception as exc:
646
- _raise_mapped(exc)
647
-
648
- def find_users(
649
- self, query: str, start: int = 0, limit: int = 50, include_inactive: bool = False
650
- ) -> list[dict[str, Any]]:
651
- """Find users by email/display name (Cloud) or username (Server/DC)."""
652
- try:
653
- return self._client.user_find_by_user_string( # type: ignore[attr-defined]
654
- query=query, start=start, limit=limit, include_inactive_users=include_inactive
655
- )
656
- except Exception as exc:
657
- _raise_mapped(exc)
658
-
659
- # --- bulk operations ---
660
- def bulk_update_issue_field(self, key_list: list[str], fields: str = "*all") -> dict[str, Any]:
661
- """Bulk update issue fields."""
662
- try:
663
- return self._client.bulk_update_issue_field(key_list, fields=fields) # type: ignore[attr-defined]
664
- except Exception as exc:
665
- _raise_mapped(exc)
666
-
667
- def issue_field_value_append(
668
- self, issue_id_or_key: str, field: str, value: dict[str, Any], notify_users: bool = True
669
- ) -> dict[str, Any]:
670
- """Append value to issue field (for multi-select fields)."""
671
- try:
672
- return self._client.issue_field_value_append(issue_id_or_key, field, value, notify_users=notify_users) # type: ignore[attr-defined]
673
- except Exception as exc:
674
- _raise_mapped(exc)
675
-
676
- def issue_archive(self, issue_id_or_key: str) -> None:
677
- """Archive an issue."""
678
- try:
679
- self._client.issue_archive(issue_id_or_key) # type: ignore[attr-defined]
680
- except Exception as exc:
681
- _raise_mapped(exc)
682
-
683
- def issue_restore(self, issue_id_or_key: str) -> None:
684
- """Restore an archived issue."""
685
- try:
686
- self._client.issue_restore(issue_id_or_key) # type: ignore[attr-defined]
687
- except Exception as exc:
688
- _raise_mapped(exc)
689
-
690
- def get_attachments_ids_from_issue(self, key: str) -> list[str]:
691
- """Get list of attachment IDs from issue."""
692
- try:
693
- return self._client.get_attachments_ids_from_issue(key) # type: ignore[attr-defined]
694
- except Exception as exc:
695
- _raise_mapped(exc)
696
-
697
- # --- enhanced project operations ---
698
- def get_all_projects(
699
- self, included_archived: bool | None = None, expand: str | None = None
700
- ) -> list[dict[str, Any]]:
701
- """Get all projects (alternative call)."""
702
- try:
703
- projects = self._client.get_all_projects(included_archived=included_archived, expand=expand) # type: ignore[attr-defined]
704
- return projects if isinstance(projects, list) else list(projects)
705
- except Exception as exc:
706
- _raise_mapped(exc)
707
-
708
- def get_project_issues_count(self, project_key: str) -> int:
709
- """Get project issues count."""
710
- try:
711
- return self._client.get_project_issues_count(project_key) # type: ignore[attr-defined]
712
- except Exception as exc:
713
- _raise_mapped(exc)
714
-
715
- def get_all_project_issues(
716
- self, project_key: str, fields: str = "*all", start: int = 0, limit: int = 500
717
- ) -> list[dict[str, Any]]:
718
- """Get all project issues."""
719
- try:
720
- return self._client.get_all_project_issues(project_key, fields=fields, start=start, limit=limit) # type: ignore[attr-defined]
721
- except Exception as exc:
722
- _raise_mapped(exc)
723
-
724
- def get_all_assignable_users_for_project(
725
- self, project_key: str, start: int = 0, limit: int = 50
726
- ) -> list[dict[str, Any]]:
727
- """Get all assignable users for project."""
728
- try:
729
- return self._client.get_all_assignable_users_for_project(project_key, start=start, limit=limit) # type: ignore[attr-defined]
730
- except Exception as exc:
731
- _raise_mapped(exc)
732
-
733
- def get_project_issuekey_last(self, project_key: str) -> str | None:
734
- """Get last project issue key."""
735
- try:
736
- return self._client.get_project_issuekey_last(project_key) # type: ignore[attr-defined]
737
- except Exception as exc:
738
- _raise_mapped(exc)
739
-
740
- def get_project_issuekey_all(self, project_key: str) -> list[str]:
741
- """Get all project issue keys."""
742
- try:
743
- return self._client.get_project_issuekey_all(project_key) # type: ignore[attr-defined]
744
- except Exception as exc:
745
- _raise_mapped(exc)
746
-
747
- def update_project(
748
- self, project_key: str, data: dict[str, Any], expand: str = "lead,description"
749
- ) -> dict[str, Any]:
750
- """Update a project."""
751
- try:
752
- return self._client.update_project(project_key, data, expand=expand) # type: ignore[attr-defined]
753
- except Exception as exc:
754
- _raise_mapped(exc)
755
-
756
- def delete_project(self, project_key: str) -> None:
757
- """Delete project."""
758
- try:
759
- self._client.delete_project(project_key) # type: ignore[attr-defined]
760
- except Exception as exc:
761
- _raise_mapped(exc)
762
-
763
- def archive_project(self, project_key: str) -> None:
764
- """Archive project."""
765
- try:
766
- self._client.archive_project(project_key) # type: ignore[attr-defined]
767
- except Exception as exc:
768
- _raise_mapped(exc)
769
-
770
- def get_project_versions_paginated(
771
- self,
772
- project_key: str,
773
- start: int | None = None,
774
- limit: int | None = None,
775
- order_by: str | None = None,
776
- expand: str | None = None,
777
- query: str | None = None,
778
- status: str | None = None,
779
- ) -> dict[str, Any]:
780
- """Get project versions (paginated)."""
781
- try:
782
- return self._client.get_project_versions_paginated( # type: ignore[attr-defined]
783
- project_key, start=start, limit=limit, order_by=order_by, expand=expand, query=query, status=status
784
- )
785
- except Exception as exc:
786
- _raise_mapped(exc)
787
-
788
- def get_project_permission_scheme(self, project_id_or_key: str, expand: str | None = None) -> dict[str, Any]:
789
- """Get project permission scheme."""
790
- try:
791
- return self._client.get_project_permission_scheme(project_id_or_key, expand=expand) # type: ignore[attr-defined]
792
- except Exception as exc:
793
- _raise_mapped(exc)
794
-
795
- def get_project_issue_security_scheme(self, project_id_or_key: str, only_levels: bool = False) -> dict[str, Any]:
796
- """Get project issue security scheme."""
797
- try:
798
- return self._client.get_project_issue_security_scheme(project_id_or_key, only_levels=only_levels) # type: ignore[attr-defined]
799
- except Exception as exc:
800
- _raise_mapped(exc)
801
-
802
- def get_priority_scheme_of_project(self, project_key_or_id: str, expand: str | None = None) -> dict[str, Any]:
803
- """Get priority scheme of project."""
804
- try:
805
- return self._client.get_priority_scheme_of_project(project_key_or_id, expand=expand) # type: ignore[attr-defined]
806
- except Exception as exc:
807
- _raise_mapped(exc)
808
-
809
- def get_users_with_browse_permission_to_a_project(
810
- self,
811
- username: str,
812
- issue_key: str | None = None,
813
- project_key: str | None = None,
814
- start: int = 0,
815
- limit: int = 100,
816
- ) -> list[dict[str, Any]]:
817
- """Get users with browse permission to a project."""
818
- try:
819
- return self._client.get_users_with_browse_permission_to_a_project( # type: ignore[attr-defined]
820
- username, issue_key=issue_key, project_key=project_key, start=start, limit=limit
821
- )
822
- except Exception as exc:
823
- _raise_mapped(exc)
824
-
825
- # --- custom fields ---
826
- def get_custom_fields(self, search: str | None = None, start: int = 1, limit: int = 50) -> list[dict[str, Any]]:
827
- """Get existing custom fields or find by filter."""
828
- try:
829
- return self._client.get_custom_fields(search=search, start=start, limit=limit) # type: ignore[attr-defined]
830
- except Exception as exc:
831
- _raise_mapped(exc)
832
-
833
- # --- user management ---
834
- def remove_user(self, username: str) -> None:
835
- """Remove user."""
836
- try:
837
- self._client.user_remove(username) # type: ignore[attr-defined]
838
- except Exception as exc:
839
- _raise_mapped(exc)
840
-
841
- def deactivate_user(self, username: str) -> None:
842
- """Deactivate user (works from Jira 8.3.0+)."""
843
- try:
844
- self._client.user_deactivate(username) # type: ignore[attr-defined]
845
- except Exception as exc:
846
- _raise_mapped(exc)
847
-
848
- def get_user_groups(self, account_id: str) -> list[dict[str, Any]]:
849
- """Get groups of a user (Cloud only)."""
850
- if not self._is_cloud:
851
- raise VDSClientError(
852
- "get_user_groups is only available in Jira Cloud mode",
853
- context={"url": "unknown"},
854
- )
855
- try:
856
- return self._client.get_user_groups(account_id) # type: ignore[attr-defined]
857
- except Exception as exc:
858
- _raise_mapped(exc)
859
-
860
- # --- group management ---
861
- def create_group(self, name: str) -> dict[str, Any]:
862
- """Create a group."""
863
- try:
864
- return self._client.create_group(name) # type: ignore[attr-defined]
865
- except Exception as exc:
866
- _raise_mapped(exc)
867
-
868
- def remove_group(self, name: str, swap_group: str | None = None) -> None:
869
- """Delete a group."""
870
- try:
871
- self._client.remove_group(name, swap_group=swap_group) # type: ignore[attr-defined]
872
- except Exception as exc:
873
- _raise_mapped(exc)
874
-
875
- def get_all_users_from_group(
876
- self, group: str, include_inactive_users: bool = False, start: int = 0, limit: int = 50
877
- ) -> list[dict[str, Any]]:
878
- """Get all users from group."""
879
- try:
880
- return self._client.get_all_users_from_group( # type: ignore[attr-defined]
881
- group, include_inactive_users=include_inactive_users, start=start, limit=limit
882
- )
883
- except Exception as exc:
884
- _raise_mapped(exc)
885
-
886
- def add_user_to_group(
887
- self, username: str | None = None, group_name: str | None = None, account_id: str | None = None
888
- ) -> None:
889
- """Add given user to a group."""
890
- try:
891
- self._client.add_user_to_group(username=username, group_name=group_name, account_id=account_id) # type: ignore[attr-defined]
892
- except Exception as exc:
893
- _raise_mapped(exc)
894
-
895
- def remove_user_from_group(
896
- self, username: str | None = None, group_name: str | None = None, account_id: str | None = None
897
- ) -> None:
898
- """Remove given user from a group."""
899
- try:
900
- self._client.remove_user_from_group(username=username, group_name=group_name, account_id=account_id) # type: ignore[attr-defined]
901
- except Exception as exc:
902
- _raise_mapped(exc)
903
-
904
- # --- permissions ---
905
- def get_permissions(
906
- self,
907
- permissions: list[str] | None = None,
908
- project_id: str | None = None,
909
- project_key: str | None = None,
910
- issue_id: str | None = None,
911
- issue_key: str | None = None,
912
- ) -> dict[str, Any]:
913
- """Get permissions."""
914
- try:
915
- permissions_value = ",".join(permissions) if permissions else ""
916
- if hasattr(self._client, "get_permissions"):
917
- return self._client.get_permissions( # type: ignore[attr-defined]
918
- permissions=permissions_value,
919
- project_id=project_id,
920
- project_key=project_key,
921
- issue_id=issue_id,
922
- issue_key=issue_key,
923
- )
924
- raise VDSClientError("Jira client does not support permissions lookup")
925
- except Exception as exc:
926
- _raise_mapped(exc)
927
-
928
- def get_all_permissions(self) -> list[dict[str, Any]]:
929
- """Get all permissions."""
930
- try:
931
- return self._client.get_all_permissions() # type: ignore[attr-defined]
932
- except Exception as exc:
933
- _raise_mapped(exc)
934
-
935
- # --- application properties ---
936
- def get_property(
937
- self,
938
- key: str | None = None,
939
- permission_level: str | None = None,
940
- key_filter: str | None = None,
941
- ) -> dict[str, Any]:
942
- """Get an application property."""
943
- try:
944
- return self._client.get_property(key=key, permission_level=permission_level, key_filter=key_filter) # type: ignore[attr-defined]
945
- except Exception as exc:
946
- _raise_mapped(exc)
947
-
948
- def set_property(self, property_id: str, value: Any) -> None:
949
- """Set an application property."""
950
- try:
951
- self._client.set_property(property_id, value) # type: ignore[attr-defined]
952
- except Exception as exc:
953
- _raise_mapped(exc)
954
-
955
- def get_advanced_settings(self) -> dict[str, Any]:
956
- """Get advanced settings."""
957
- try:
958
- return self._client.get_advanced_settings() # type: ignore[attr-defined]
959
- except Exception as exc:
960
- _raise_mapped(exc)
961
-
962
- # --- issue links ---
963
- def create_issue_link(self, payload: dict[str, Any]) -> dict[str, Any]:
964
- """Create an issue-to-issue link."""
965
- try:
966
- return self._client.create_issue_link(payload) # type: ignore[attr-defined]
967
- except Exception as exc:
968
- _raise_mapped(exc)
969
-
970
- def remove_issue_link(self, issue_link_id: str | int) -> None:
971
- """Remove an issue-to-issue link by ID."""
972
- try:
973
- self._client.remove_issue_link(issue_link_id) # type: ignore[attr-defined]
974
- except Exception as exc:
975
- _raise_mapped(exc)
976
-
977
- # --- issue link types ---
978
- def get_issue_link_types(self) -> list[dict[str, Any]]:
979
- """Get issue link types."""
980
- try:
981
- return self._client.get_issue_link_types() # type: ignore[attr-defined]
982
- except Exception as exc:
983
- _raise_mapped(exc)
984
-
985
- def create_issue_link_type(self, data: dict[str, str]) -> dict[str, Any]:
986
- """Create issue link type."""
987
- try:
988
- return self._client.create_issue_link_type(data) # type: ignore[attr-defined]
989
- except Exception as exc:
990
- _raise_mapped(exc)
991
-
992
- def get_issue_link_type(self, issue_link_type_id: str) -> dict[str, Any]:
993
- """Get issue link type by ID."""
994
- try:
995
- return self._client.get_issue_link_type(issue_link_type_id) # type: ignore[attr-defined]
996
- except Exception as exc:
997
- _raise_mapped(exc)
998
-
999
- def delete_issue_link_type(self, issue_link_type_id: str) -> None:
1000
- """Delete issue link type."""
1001
- try:
1002
- self._client.delete_issue_link_type(issue_link_type_id) # type: ignore[attr-defined]
1003
- except Exception as exc:
1004
- _raise_mapped(exc)
1005
-
1006
- def update_issue_link_type(self, issue_link_type_id: str, data: dict[str, str]) -> dict[str, Any]:
1007
- """Update issue link type."""
1008
- try:
1009
- return self._client.update_issue_link_type(issue_link_type_id, data) # type: ignore[attr-defined]
1010
- except Exception as exc:
1011
- _raise_mapped(exc)
1012
-
1013
- # --- issue remote links ---
1014
- def get_issue_remote_links(self, issue_key: str) -> list[dict[str, Any]]:
1015
- """List remote links for an issue."""
1016
- try:
1017
- result = self._client.get_issue_remote_links(issue_key) # type: ignore[attr-defined]
1018
- if isinstance(result, list):
1019
- return result
1020
- return result or []
1021
- except Exception as exc:
1022
- _raise_mapped(exc)
1023
-
1024
- def create_or_update_issue_remote_link(self, issue_key: str, payload: dict[str, Any]) -> dict[str, Any]:
1025
- """Create or update a remote link for an issue."""
1026
- try:
1027
- return self._client.create_or_update_issue_remote_links(issue_key, payload) # type: ignore[attr-defined]
1028
- except Exception as exc:
1029
- _raise_mapped(exc)
1030
-
1031
- def get_issue_remote_link_by_id(self, issue_key: str, remote_link_id: str | int) -> dict[str, Any]:
1032
- """Get a remote link by ID."""
1033
- try:
1034
- return self._client.get_issue_remote_link_by_id(issue_key, remote_link_id) # type: ignore[attr-defined]
1035
- except Exception as exc:
1036
- _raise_mapped(exc)
1037
-
1038
- def update_issue_remote_link_by_id(
1039
- self,
1040
- issue_key: str,
1041
- remote_link_id: str | int,
1042
- payload: dict[str, Any],
1043
- ) -> dict[str, Any]:
1044
- """Update a remote link by ID."""
1045
- try:
1046
- return self._client.update_issue_remote_link_by_id(issue_key, remote_link_id, payload) # type: ignore[attr-defined]
1047
- except Exception as exc:
1048
- _raise_mapped(exc)
1049
-
1050
- def delete_issue_remote_link_by_id(self, issue_key: str, remote_link_id: str | int) -> None:
1051
- """Delete a remote link by ID."""
1052
- try:
1053
- self._client.delete_issue_remote_link_by_id(issue_key, remote_link_id) # type: ignore[attr-defined]
1054
- except Exception as exc:
1055
- _raise_mapped(exc)
1056
-
1057
- # --- issue properties ---
1058
- def get_issue_property_keys(self, issue_key: str) -> dict[str, Any]:
1059
- """Get issue property keys."""
1060
- try:
1061
- return self._client.get_issue_property_keys(issue_key) # type: ignore[attr-defined]
1062
- except Exception as exc:
1063
- _raise_mapped(exc)
1064
-
1065
- def set_issue_property(self, issue_key: str, property_key: str, payload: dict[str, Any]) -> None:
1066
- """Create or update an issue property."""
1067
- try:
1068
- self._client.set_issue_property(issue_key, property_key, payload) # type: ignore[attr-defined]
1069
- except Exception as exc:
1070
- _raise_mapped(exc)
1071
-
1072
- def get_issue_property(self, issue_key: str, property_key: str) -> dict[str, Any]:
1073
- """Get an issue property."""
1074
- try:
1075
- return self._client.get_issue_property(issue_key, property_key) # type: ignore[attr-defined]
1076
- except Exception as exc:
1077
- _raise_mapped(exc)
1078
-
1079
- def delete_issue_property(self, issue_key: str, property_key: str) -> None:
1080
- """Delete an issue property."""
1081
- try:
1082
- self._client.delete_issue_property(issue_key, property_key) # type: ignore[attr-defined]
1083
- except Exception as exc:
1084
- _raise_mapped(exc)
1085
-
1086
- # --- issue watchers ---
1087
- def issue_get_watchers(self, issue_key: str) -> dict[str, Any]:
1088
- """List watchers for an issue."""
1089
- try:
1090
- return self._client.issue_get_watchers(issue_key) # type: ignore[attr-defined]
1091
- except Exception as exc:
1092
- _raise_mapped(exc)
1093
-
1094
- def issue_add_watcher(self, issue_key: str, username_or_account_id: str) -> None:
1095
- """Add a watcher to an issue."""
1096
- try:
1097
- self._client.issue_add_watcher(issue_key, username_or_account_id) # type: ignore[attr-defined]
1098
- except Exception as exc:
1099
- _raise_mapped(exc)
1100
-
1101
- def issue_delete_watcher(self, issue_key: str, username_or_account_id: str) -> None:
1102
- """Remove a watcher from an issue."""
1103
- try:
1104
- self._client.issue_delete_watcher(issue_key, username_or_account_id) # type: ignore[attr-defined]
1105
- except Exception as exc:
1106
- _raise_mapped(exc)
1107
-
1108
- # --- issue security schemes ---
1109
- def get_issue_security_schemes(self) -> list[dict[str, Any]]:
1110
- """Get all security schemes."""
1111
- try:
1112
- return self._client.get_issue_security_schemes() # type: ignore[attr-defined]
1113
- except Exception as exc:
1114
- _raise_mapped(exc)
1115
-
1116
- def get_issue_security_scheme(self, scheme_id: str, only_levels: bool = False) -> dict[str, Any]:
1117
- """Get issue security scheme."""
1118
- try:
1119
- return self._client.get_issue_security_scheme(scheme_id, only_levels=only_levels) # type: ignore[attr-defined]
1120
- except Exception as exc:
1121
- _raise_mapped(exc)
1122
-
1123
- # --- agile board operations ---
1124
- def get_agile_board_by_filter_id(self, filter_id: int) -> dict[str, Any]:
1125
- """Get agile board by filter ID."""
1126
- try:
1127
- return self._client.get_agile_board_by_filter_id(filter_id) # type: ignore[attr-defined]
1128
- except Exception as exc:
1129
- _raise_mapped(exc)
1130
-
1131
- def create_agile_board(
1132
- self, name: str, board_type: str, filter_id: int, location: dict[str, Any] | None = None
1133
- ) -> dict[str, Any]:
1134
- """Create a new agile board."""
1135
- try:
1136
- return self._client.create_agile_board(name, board_type, filter_id, location=location) # type: ignore[attr-defined]
1137
- except Exception as exc:
1138
- _raise_mapped(exc)
1139
-
1140
- def get_all_agile_boards(
1141
- self,
1142
- board_name: str | None = None,
1143
- project_key: str | None = None,
1144
- board_type: str | None = None,
1145
- start: int = 0,
1146
- limit: int = 50,
1147
- ) -> list[dict[str, Any]]:
1148
- """Get all agile boards."""
1149
- try:
1150
- result = self._client.get_all_agile_boards(
1151
- board_name=board_name, project_key=project_key, board_type=board_type, start=start, limit=limit
1152
- ) # type: ignore[attr-defined]
1153
- return self._coerce_list_items(result, ("values",))
1154
- except Exception as exc:
1155
- _raise_mapped(exc)
1156
-
1157
- def delete_agile_board(self, board_id: int) -> None:
1158
- """Delete agile board by ID."""
1159
- try:
1160
- self._client.delete_agile_board(board_id) # type: ignore[attr-defined]
1161
- except Exception as exc:
1162
- _raise_mapped(exc)
1163
-
1164
- def get_agile_board(self, board_id: int) -> dict[str, Any]:
1165
- """Get agile board by ID."""
1166
- try:
1167
- return self._client.get_agile_board(board_id) # type: ignore[attr-defined]
1168
- except Exception as exc:
1169
- _raise_mapped(exc)
1170
-
1171
- def get_issues_for_board(
1172
- self,
1173
- board_id: int,
1174
- jql: str | None = None,
1175
- fields: str = "*all",
1176
- start: int = 0,
1177
- limit: int | None = None,
1178
- expand: str | None = None,
1179
- ) -> list[dict[str, Any]]:
1180
- """Get issues for board."""
1181
- try:
1182
- result = self._client.get_issues_for_board(
1183
- board_id, jql=jql, fields=fields, start=start, limit=limit, expand=expand
1184
- ) # type: ignore[attr-defined]
1185
- return self._coerce_list_items(result, ("issues", "values"))
1186
- except Exception as exc:
1187
- _raise_mapped(exc)
1188
-
1189
- def get_agile_board_configuration(self, board_id: int) -> dict[str, Any]:
1190
- """Get agile board configuration by board ID."""
1191
- try:
1192
- return self._client.get_agile_board_configuration(board_id) # type: ignore[attr-defined]
1193
- except Exception as exc:
1194
- _raise_mapped(exc)
1195
-
1196
- # component management is implemented above in "component operations"
1197
-
1198
- # --- agile board properties ---
1199
- def get_agile_board_properties(self, board_id: int) -> list[dict[str, Any]]:
1200
- """Get all board properties."""
1201
- try:
1202
- result = self._client.get_agile_board_properties(board_id) # type: ignore[attr-defined]
1203
- return self._coerce_list_items(result, ("values", "properties"))
1204
- except Exception as exc:
1205
- _raise_mapped(exc)
1206
-
1207
- def set_agile_board_property(self, board_id: int, property_key: str) -> None:
1208
- """Set the value of the specified board's property."""
1209
- try:
1210
- self._client.set_agile_board_property(board_id, property_key) # type: ignore[attr-defined]
1211
- except Exception as exc:
1212
- _raise_mapped(exc)
1213
-
1214
- def get_agile_board_property(self, board_id: int, property_key: str) -> dict[str, Any]:
1215
- """Get agile board property."""
1216
- try:
1217
- return self._client.get_agile_board_property(board_id, property_key) # type: ignore[attr-defined]
1218
- except Exception as exc:
1219
- _raise_mapped(exc)
1220
-
1221
- def delete_agile_board_property(self, board_id: int, property_key: str) -> None:
1222
- """Delete agile board property."""
1223
- try:
1224
- self._client.delete_agile_board_property(board_id, property_key) # type: ignore[attr-defined]
1225
- except Exception as exc:
1226
- _raise_mapped(exc)
1227
-
1228
- # --- agile board velocity ---
1229
- def get_agile_board_refined_velocity(self, board_id: int) -> dict[str, Any]:
1230
- """Get agile board refined velocity."""
1231
- try:
1232
- return self._client.get_agile_board_refined_velocity(board_id) # type: ignore[attr-defined]
1233
- except Exception as exc:
1234
- _raise_mapped(exc)
1235
-
1236
- def set_agile_board_refined_velocity(self, board_id: int, refined_velocity: dict[str, Any]) -> None:
1237
- """Set agile board refined velocity."""
1238
- try:
1239
- self._client.set_agile_board_refined_velocity(board_id, refined_velocity) # type: ignore[attr-defined]
1240
- except Exception as exc:
1241
- _raise_mapped(exc)
1242
-
1243
- # --- epic operations ---
1244
- def epic_issues(self, epic_key: str) -> list[dict[str, Any]]:
1245
- """Get issues within an epic."""
1246
- try:
1247
- result = self._client.epic_issues(epic_key) # type: ignore[attr-defined]
1248
- return self._coerce_list_items(result, ("issues", "values"))
1249
- except Exception as exc:
1250
- _raise_mapped(exc)
1251
-
1252
- def get_epics(self, board_id: int, done: bool = False, start: int = 0, limit: int = 50) -> list[dict[str, Any]]:
1253
- """Get all epics from board."""
1254
- try:
1255
- result = self._client.get_epics(board_id, done=done, start=start, limit=limit) # type: ignore[attr-defined]
1256
- return self._coerce_list_items(result, ("values", "epics"))
1257
- except Exception as exc:
1258
- _raise_mapped(exc)
1259
-
1260
- def get_issues_for_epic(
1261
- self,
1262
- board_id: int,
1263
- epic_id: int,
1264
- jql: str = "",
1265
- validate_query: str = "",
1266
- fields: str = "*all",
1267
- expand: str = "",
1268
- start: int = 0,
1269
- limit: int = 50,
1270
- ) -> list[dict[str, Any]]:
1271
- """Get all issues that belong to an epic on the board."""
1272
- try:
1273
- result = self._client.get_issues_for_epic(
1274
- board_id,
1275
- epic_id,
1276
- jql=jql,
1277
- validate_query=validate_query,
1278
- fields=fields,
1279
- expand=expand,
1280
- start=start,
1281
- limit=limit,
1282
- ) # type: ignore[attr-defined]
1283
- return self._coerce_list_items(result, ("issues", "values"))
1284
- except Exception as exc:
1285
- _raise_mapped(exc)
1286
-
1287
- # --- sprint operations ---
1288
- def get_all_sprints_from_board(
1289
- self, board_id: int, state: str | None = None, start: int = 0, limit: int = 50
1290
- ) -> list[dict[str, Any]]:
1291
- """Get all sprints from board."""
1292
- try:
1293
- result = self._client.get_all_sprints_from_board(board_id, state=state, start=start, limit=limit) # type: ignore[attr-defined]
1294
- return self._coerce_list_items(result, ("values", "sprints"))
1295
- except Exception as exc:
1296
- _raise_mapped(exc)
1297
-
1298
- def get_all_issues_for_sprint_in_board(
1299
- self, board_id: int, state: str | None = None, start: int = 0, limit: int = 50
1300
- ) -> list[dict[str, Any]]:
1301
- """Get all issues for sprint in board."""
1302
- try:
1303
- result = self._client.get_all_issues_for_sprint_in_board(board_id, state=state, start=start, limit=limit) # type: ignore[attr-defined]
1304
- return self._coerce_list_items(result, ("issues", "values"))
1305
- except Exception as exc:
1306
- _raise_mapped(exc)
1307
-
1308
- def get_all_versions_from_board(
1309
- self, board_id: int, released: str = "true", start: int = 0, limit: int = 50
1310
- ) -> list[dict[str, Any]]:
1311
- """Get all versions for sprint in board."""
1312
- try:
1313
- result = self._client.get_all_versions_from_board(board_id, released=released, start=start, limit=limit) # type: ignore[attr-defined]
1314
- return self._coerce_list_items(result, ("values", "versions"))
1315
- except Exception as exc:
1316
- _raise_mapped(exc)
1317
-
1318
- def create_sprint(
1319
- self,
1320
- sprint_name: str,
1321
- origin_board_id: int,
1322
- start_datetime: str | None = None,
1323
- end_datetime: str | None = None,
1324
- goal: str | None = None,
1325
- ) -> dict[str, Any]:
1326
- """Create sprint."""
1327
- try:
1328
- return self._client.create_sprint(sprint_name, origin_board_id, start_datetime, end_datetime, goal) # type: ignore[attr-defined]
1329
- except Exception as exc:
1330
- _raise_mapped(exc)
1331
-
1332
- def rename_sprint(
1333
- self, sprint_id: int, name: str | None = None, start_date: str | None = None, end_date: str | None = None
1334
- ) -> dict[str, Any]:
1335
- """Rename sprint."""
1336
- try:
1337
- return self._client.rename_sprint(sprint_id, name, start_date, end_date) # type: ignore[attr-defined]
1338
- except Exception as exc:
1339
- _raise_mapped(exc)
1340
-
1341
- def add_issues_to_sprint(self, sprint_id: int, issues_list: list[str]) -> None:
1342
- """Add/Move issues to sprint."""
1343
- try:
1344
- self._client.add_issues_to_sprint(sprint_id, issues_list) # type: ignore[attr-defined]
1345
- except Exception as exc:
1346
- _raise_mapped(exc)
1347
-
1348
- # --- backlog operations ---
1349
- def move_issues_to_backlog(self, issue_keys: list[str]) -> None:
1350
- """Move issues to backlog."""
1351
- try:
1352
- self._client.move_issues_to_backlog(issue_keys) # type: ignore[attr-defined]
1353
- except Exception as exc:
1354
- _raise_mapped(exc)
1355
-
1356
- def add_issues_to_backlog(self, issue_keys: list[str]) -> None:
1357
- """Add issues to backlog."""
1358
- try:
1359
- self._client.add_issues_to_backlog(issue_keys) # type: ignore[attr-defined]
1360
- except Exception as exc:
1361
- _raise_mapped(exc)
1362
-
1363
- # --- worklog operations ---
1364
- def get_worklogs(self, issue_key: str) -> dict[str, Any]:
1365
- """Get worklogs for an issue."""
1366
- try:
1367
- return self._client.issue_get_worklog(issue_key) # type: ignore[attr-defined]
1368
- except Exception as exc:
1369
- _raise_mapped(exc)
1370
-
1371
- def issue_add_worklog(
1372
- self,
1373
- issue_key: str,
1374
- time_spent: str,
1375
- comment: str | None = None,
1376
- started: str | None = None,
1377
- time_sec: int | None = None,
1378
- ) -> dict[str, Any]:
1379
- """Add worklog entry to an issue.
1380
-
1381
- Args:
1382
- issue_key: Issue key (e.g., 'PROJ-123')
1383
- time_spent: Time spent string (e.g., '2h 30m')
1384
- comment: Optional comment
1385
- started: Optional start datetime (ISO format)
1386
- time_sec: Optional time in seconds (alternative to time_spent)
1387
- """
1388
- try:
1389
- if started and time_sec is not None:
1390
- # Use simple worklog method if we have started and time_sec
1391
- return self._client.issue_worklog(issue_key, started, time_sec, comment) # type: ignore[attr-defined]
1392
- else:
1393
- # Use JSON worklog method for more flexibility
1394
- worklog: dict[str, Any] = {"timeSpent": time_spent}
1395
- if comment:
1396
- worklog["comment"] = comment
1397
- if started:
1398
- worklog["started"] = started
1399
- return self._client.issue_add_json_worklog(issue_key, worklog) # type: ignore[attr-defined]
1400
- except Exception as exc:
1401
- _raise_mapped(exc)
1402
-
1403
- def get_updated_worklogs(self, since: str, expand: str | None = None) -> dict[str, Any]:
1404
- """Get worklogs updated since timestamp.
1405
-
1406
- Args:
1407
- since: Timestamp in format 'YYYY-MM-DD HH:mm' or ISO format
1408
- expand: Optional expand parameter
1409
- """
1410
- try:
1411
- return self._client.get_updated_worklogs(since, expand=expand) # type: ignore[attr-defined]
1412
- except Exception as exc:
1413
- _raise_mapped(exc)
1414
-
1415
- def get_deleted_worklogs(self, since: str) -> dict[str, Any]:
1416
- """Get deleted worklogs since timestamp.
1417
-
1418
- Args:
1419
- since: Timestamp in format 'YYYY-MM-DD HH:mm' or ISO format
1420
- """
1421
- try:
1422
- return self._client.get_deleted_worklogs(since) # type: ignore[attr-defined]
1423
- except Exception as exc:
1424
- _raise_mapped(exc)
1425
-
1426
- # --- transitions and changelog operations ---
1427
- def get_issue_transitions(self, issue_key: str) -> list[dict[str, Any]]:
1428
- """Get available transitions for an issue."""
1429
- try:
1430
- if hasattr(self._client, "get_issue_transitions"):
1431
- transitions = self._client.get_issue_transitions(issue_key) # type: ignore[attr-defined]
1432
- if isinstance(transitions, list):
1433
- return transitions
1434
- if hasattr(self._client, "get_issue_transitions_full"):
1435
- payload = self._client.get_issue_transitions_full(issue_key) # type: ignore[attr-defined]
1436
- if isinstance(payload, dict) and isinstance(payload.get("transitions"), list):
1437
- return payload["transitions"]
1438
- raise VDSClientError("Jira client does not support transitions lookup")
1439
- except Exception as exc:
1440
- _raise_mapped(exc)
1441
-
1442
- def get_issue_changelog(self, issue_key: str, start: int | None = None, limit: int | None = None) -> dict[str, Any]:
1443
- """Get complete change history for an issue.
1444
-
1445
- Args:
1446
- issue_key: Issue key (e.g., 'PROJ-123')
1447
- start: Optional start index for pagination
1448
- limit: Optional limit for pagination
1449
- """
1450
- try:
1451
- return self._client.get_issue_changelog(issue_key, start=start, limit=limit) # type: ignore[attr-defined]
1452
- except Exception as exc:
1453
- _raise_mapped(exc)
1454
-
1455
- def get_issue_status_changelog(self, issue_key: str) -> dict[str, Any]:
1456
- """Get status change history for an issue.
1457
-
1458
- Args:
1459
- issue_key: Issue key (e.g., 'PROJ-123')
1460
- """
1461
- try:
1462
- return self._client.get_issue_status_changelog(issue_key) # type: ignore[attr-defined]
1463
- except Exception as exc:
1464
- _raise_mapped(exc)
1465
-
1466
- # --- dashboard operations ---
1467
- def get_dashboard(self, dashboard_id: str | int) -> dict[str, Any]:
1468
- """Get dashboard by ID.
1469
-
1470
- Args:
1471
- dashboard_id: Dashboard ID (string or integer)
1472
- """
1473
- try:
1474
- result = self._client.get_dashboard(dashboard_id) # type: ignore[attr-defined]
1475
- if not result:
1476
- raise NotFoundError(f"Dashboard not found: {dashboard_id}")
1477
- return result
1478
- except Exception as exc:
1479
- _raise_mapped(exc)
1480
-
1481
- def get_dashboards(self, filter: str = "", start: int = 0, limit: int = 10) -> dict[str, Any]:
1482
- """List dashboards with optional filter.
1483
-
1484
- Args:
1485
- filter: Optional filter string
1486
- start: Start index for pagination
1487
- limit: Maximum number of results
1488
- """
1489
- try:
1490
- result = self._client.get_dashboards(filter=filter, start=start, limit=limit) # type: ignore[attr-defined]
1491
- return result if result else {}
1492
- except Exception as exc:
1493
- _raise_mapped(exc)
1494
-
1495
- # --- reindex operations ---
1496
- def reindex(self) -> dict[str, Any]:
1497
- """Trigger reindex."""
1498
- try:
1499
- return self._client.reindex() # type: ignore[attr-defined]
1500
- except Exception as exc:
1501
- _raise_mapped(exc)
1502
-
1503
- def reindex_status(self) -> dict[str, Any]:
1504
- """Get reindex status."""
1505
- try:
1506
- return self._client.reindex_status() # type: ignore[attr-defined]
1507
- except Exception as exc:
1508
- _raise_mapped(exc)
1509
-
1510
- def reindex_with_type(self, reindex_type: str) -> dict[str, Any]:
1511
- """Reindex with type."""
1512
- try:
1513
- return self._client.reindex_with_type(reindex_type) # type: ignore[attr-defined]
1514
- except Exception as exc:
1515
- _raise_mapped(exc)
1516
-
1517
- # --- filter operations ---
1518
- def get_filters(self, owner: str | None = None) -> list[dict[str, Any]]:
1519
- """Get list of filters, optionally filtered by owner.
1520
-
1521
- Args:
1522
- owner: Optional username to filter by owner
1523
- """
1524
- try:
1525
- # SDK doesn't have get_filters, use REST API directly
1526
- # Endpoint: /rest/api/2/filter/search
1527
- params: dict[str, Any] = {}
1528
- if owner:
1529
- params["username"] = owner
1530
-
1531
- # Use SDK's get method with resource URL
1532
- base_url = self._client.resource_url("filter") # type: ignore[attr-defined]
1533
- url = f"{base_url}/search"
1534
- result = self._client.get(url, params=params) # type: ignore[attr-defined]
1535
- return (
1536
- result.get("values", []) if isinstance(result, dict) else (result if isinstance(result, list) else [])
1537
- )
1538
- except Exception as exc:
1539
- _raise_mapped(exc)
1540
-
1541
- def get_filter(self, filter_id: int) -> dict[str, Any]:
1542
- """Get filter by ID.
1543
-
1544
- Args:
1545
- filter_id: Filter ID
1546
- """
1547
- try:
1548
- result = self._client.get_filter(filter_id) # type: ignore[attr-defined]
1549
- if not result:
1550
- raise NotFoundError(f"Filter not found: {filter_id}")
1551
- return result
1552
- except Exception as exc:
1553
- _raise_mapped(exc)
1554
-
1555
- def create_filter(
1556
- self, name: str, jql: str, description: str | None = None, favourite: bool = False
1557
- ) -> dict[str, Any]:
1558
- """Create a new filter.
1559
-
1560
- Args:
1561
- name: Filter name
1562
- jql: JQL query string
1563
- description: Optional description
1564
- favourite: Whether to mark as favourite (default: False)
1565
- """
1566
- try:
1567
- return self._client.create_filter(name=name, jql=jql, description=description, favourite=favourite) # type: ignore[attr-defined]
1568
- except Exception as exc:
1569
- _raise_mapped(exc)
1570
-
1571
- def update_filter(
1572
- self,
1573
- filter_id: int,
1574
- name: str | None = None,
1575
- jql: str | None = None,
1576
- description: str | None = None,
1577
- favourite: bool | None = None,
1578
- ) -> dict[str, Any]:
1579
- """Update an existing filter.
1580
-
1581
- Args:
1582
- filter_id: Filter ID
1583
- name: Optional new name
1584
- jql: Optional new JQL query (required if not updating other fields)
1585
- description: Optional new description
1586
- favourite: Optional favourite status
1587
- """
1588
- try:
1589
- # SDK's update_filter requires jql, but we allow partial updates
1590
- # If jql is not provided, we need to get the current filter first
1591
- if jql is None:
1592
- # Get current filter to preserve existing JQL
1593
- current = self.get_filter(filter_id)
1594
- jql = current.get("jql", "")
1595
-
1596
- kwargs: dict[str, Any] = {}
1597
- if name is not None:
1598
- kwargs["name"] = name
1599
- if description is not None:
1600
- kwargs["description"] = description
1601
- if favourite is not None:
1602
- kwargs["favourite"] = favourite
1603
-
1604
- return self._client.update_filter(filter_id, jql=jql, **kwargs) # type: ignore[attr-defined]
1605
- except Exception as exc:
1606
- _raise_mapped(exc)
1607
-
1608
- def delete_filter(self, filter_id: int) -> None:
1609
- """Delete a filter.
1610
-
1611
- Args:
1612
- filter_id: Filter ID
1613
- """
1614
- try:
1615
- self._client.delete_filter(filter_id) # type: ignore[attr-defined]
1616
- except Exception as exc:
1617
- _raise_mapped(exc)
1618
-
1619
- # --- advanced search operations ---
1620
- def search_issues_advanced(
1621
- self,
1622
- jql: str,
1623
- *,
1624
- start: int = 0,
1625
- limit: int = 50,
1626
- fields: Iterable[str] | None = None,
1627
- ) -> dict[str, Any]:
1628
- """Advanced JQL search with pagination support.
1629
-
1630
- Args:
1631
- jql: JQL query string
1632
- start: Start index for pagination (default: 0)
1633
- limit: Maximum number of results (default: 50)
1634
- fields: Optional list of fields to return (default: *all)
1635
- """
1636
- try:
1637
- fields_str = ",".join(fields) if fields else "*all"
1638
- return self._client.jql(jql, fields=fields_str, start=start, limit=limit) # type: ignore[attr-defined]
1639
- except Exception as exc:
1640
- _raise_mapped(exc)
1641
-
1642
- def search_issues_by_filter(
1643
- self,
1644
- filter_id: int,
1645
- *,
1646
- start: int = 0,
1647
- limit: int = 50,
1648
- fields: Iterable[str] | None = None,
1649
- ) -> dict[str, Any]:
1650
- """Search issues using a saved filter.
1651
-
1652
- Args:
1653
- filter_id: Filter ID
1654
- start: Start index for pagination (default: 0)
1655
- limit: Maximum number of results (default: 50)
1656
- fields: Optional list of fields to return (default: *all)
1657
- """
1658
- try:
1659
- # Get the filter to extract its JQL
1660
- filter_data = self.get_filter(filter_id)
1661
- jql = filter_data.get("jql", "")
1662
- if not jql:
1663
- raise VDSClientError(f"Filter {filter_id} does not have a JQL query")
1664
-
1665
- # Use the filter's JQL for search
1666
- return self.search_issues_advanced(jql, start=start, limit=limit, fields=fields)
1667
- except Exception as exc:
1668
- _raise_mapped(exc)
1669
-
1670
-
1671
- def _raise_mapped(exc: Exception) -> None:
1672
- text = str(exc).lower()
1673
- if "401" in text or "403" in text or "unauthorized" in text:
1674
- raise AuthError(str(exc)) from exc
1675
- if "404" in text or "not found" in text:
1676
- raise NotFoundError(str(exc)) from exc
1677
- if "429" in text or "rate limit" in text:
1678
- raise RateLimitError(str(exc)) from exc
1679
- if "409" in text or "conflict" in text:
1680
- raise ConflictError(str(exc)) from exc
1681
- if "500" in text or "server error" in text:
1682
- raise ResponseError(str(exc)) from exc
1683
- if "connection" in text or "network" in text or "timeout" in text:
1684
- raise TransportError(str(exc)) from exc
1685
- raise VDSClientError(str(exc)) from exc