@ngocsangairvds/vsaf 3.1.26 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/global.js +70 -10
- package/tools/skills/vds-scripts-skill/.openskills.json +6 -0
- package/tools/skills/vds-scripts-skill/QUALITY.md +44 -0
- package/tools/skills/vds-scripts-skill/SKILL.md +135 -0
- package/tools/skills/vds-scripts-skill/references/audit-commands.md +171 -0
- package/tools/skills/vds-scripts-skill/references/capability-index.md +34 -0
- package/tools/skills/vds-scripts-skill/references/development-commands.md +12 -0
- package/tools/skills/vds-scripts-skill/references/google-sheets.md +73 -0
- package/tools/skills/vds-scripts-skill/references/integration-commands.md +17 -0
- package/tools/skills/vds-scripts-skill/references/platform-bootstrap.md +31 -0
- package/tools/skills/vds-scripts-skill/references/specialist-routing.md +14 -0
- package/tools/skills/vds-scripts-skill/references/validation-commands.md +15 -0
- package/tools/skills/vsaf-build/SKILL.md +32 -2
- package/tools/skills/vsaf-push-prd/SKILL.md +43 -40
- package/tools/skills/vsaf-push-srs/SKILL.md +44 -41
- package/tools/skills/vsaf-ship/SKILL.md +41 -10
- package/tools/skills/vsaf-test/SKILL.md +8 -0
- package/tools/vds-scripts/.mcp.json +11 -0
- package/tools/vds-scripts/.secrets.baseline +133 -0
- package/tools/vds-scripts/AGENTS.md +152 -0
- package/tools/vds-scripts/CLAUDE.md +101 -0
- package/tools/vds-scripts/CLI_COMMAND_OPTIMIZATION.md +156 -0
- package/tools/vds-scripts/PACKAGE_P125B_IMPLEMENTATION_SUMMARY.md +131 -0
- package/tools/vds-scripts/PROJECT_COMPLETION_SUMMARY.md +45 -0
- package/tools/vds-scripts/README.md +97 -0
- package/tools/vds-scripts/bitbucket_manifest_mapping.toml +34 -0
- package/tools/vds-scripts/bitbucket_orchestrator/ARCHITECTURE_ANALYSIS.md +258 -0
- package/tools/vds-scripts/bitbucket_orchestrator/BITBUCKET_API_PRACTICES.md +393 -0
- package/tools/vds-scripts/bitbucket_orchestrator/EVALUATION_REPORT.md +61 -0
- package/tools/vds-scripts/bitbucket_orchestrator/FEATURES.md +908 -0
- package/tools/vds-scripts/bitbucket_orchestrator/README.md +687 -0
- package/tools/vds-scripts/bitbucket_orchestrator/pyproject.toml +40 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/__init__.py +20 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/async_client.py +657 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/cli.py +2108 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/client.py +2534 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/config.py +171 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/errors.py +67 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/factory.py +185 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/protocols.py +244 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/__init__.py +8 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/conftest.py +65 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_advanced_search.py +151 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_async_client.py +546 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_branch_permissions.py +145 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_cli.py +115 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client.py +157 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_branch_conditions.py +79 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_advanced.py +163 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_file.py +32 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_deployment_environments.py +194 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_issues.py +164 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pipelines_advanced.py +179 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pr_blockers.py +119 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_repository_variables.py +156 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code.py +98 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_advanced.py +282 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_insights.py +335 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_conditions.py +147 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_config.py +131 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_deployment_env.py +352 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_factory.py +371 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_fork_operations.py +204 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_issue_cli.py +261 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pipeline_advanced.py +270 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pr_blocker.py +204 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_protocols.py +334 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_settings.py +343 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_variables.py +270 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_webhooks.py +189 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_workspace.py +233 -0
- package/tools/vds-scripts/bitbucket_orchestrator/uv.lock +742 -0
- package/tools/vds-scripts/confluence_orchestrator/Dockerfile +19 -0
- package/tools/vds-scripts/confluence_orchestrator/README.md +412 -0
- package/tools/vds-scripts/confluence_orchestrator/SYNC_SCRIPTS.md +127 -0
- package/tools/vds-scripts/confluence_orchestrator/SYNC_STANDARDIZATION.md +108 -0
- package/tools/vds-scripts/confluence_orchestrator/pyproject.toml +48 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/__init__.py +20 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/cli.py +2532 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/config.py +175 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content.py +290 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content_v2.py +94 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/crawl_tree.py +1835 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/errors.py +80 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/eventing.py +109 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/http.py +1114 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/orchestration.py +165 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/reporting.py +78 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree.py +121 -0
- package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_from_markdown.py +213 -0
- package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_to_confluence.py +305 -0
- package/tools/vds-scripts/confluence_orchestrator/sync_png_attachments.py +305 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/conftest.py +8 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_content.py +224 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_search.py +188 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_cache_management.py +247 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_cli.py +499 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_config.py +83 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_content.py +186 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_content_flags.py +27 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_crawl_tree.py +2250 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_draft_management.py +223 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing.py +71 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_chaos.py +37 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_rate_limit.py +44 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_timeout.py +49 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_export.py +230 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_history.py +204 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_http.py +117 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_orchestration.py +91 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_reporting.py +24 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_search_cql.py +34 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_space_management.py +237 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_space_permissions.py +332 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_user_group_management.py +388 -0
- package/tools/vds-scripts/confluence_orchestrator/uv.lock +1023 -0
- package/tools/vds-scripts/git_orchestrator/ENHANCEMENT_SUMMARY.md +119 -0
- package/tools/vds-scripts/git_orchestrator/README.md +280 -0
- package/tools/vds-scripts/git_orchestrator/VERIFICATION_REPORT.md +152 -0
- package/tools/vds-scripts/git_orchestrator/pyproject.toml +35 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__init__.py +7 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__main__.py +4 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/cli.py +847 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/logging_config.py +63 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/manifest.py +129 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/orchestrator.py +819 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/reporting.py +53 -0
- package/tools/vds-scripts/git_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_cli_settings.py +21 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_integration.py +74 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_manifest.py +79 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_orchestrator.py +204 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_public_api.py +236 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_resilience.py +345 -0
- package/tools/vds-scripts/git_orchestrator/uv.lock +271 -0
- package/tools/vds-scripts/jira_orchestrator/README.md +770 -0
- package/tools/vds-scripts/jira_orchestrator/pyproject.toml +39 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/__init__.py +1 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/adapter.py +1320 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/cli.py +2271 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/config.py +138 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/errors.py +67 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/reporting.py +65 -0
- package/tools/vds-scripts/jira_orchestrator/tests/__init__.py +1 -0
- package/tools/vds-scripts/jira_orchestrator/tests/conftest.py +86 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_agile_list_payloads.py +54 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_bulk_operations.py +69 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_components.py +57 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_createmeta.py +45 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_dashboard.py +117 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_issue_properties.py +54 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_permissions_compat.py +42 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_reindex.py +42 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_remote_links.py +76 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_transitions.py +91 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_user_management.py +110 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_version_management.py +133 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_watchers.py +41 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_advanced_search.py +164 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_agile.py +256 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_application_properties.py +193 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_backlog.py +91 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_bulk_operations.py +277 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_cli.py +106 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_components.py +106 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_config.py +164 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_dashboard.py +122 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_discover_fields.py +207 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_filter_management.py +333 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_issue_archiving.py +164 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_issue_links.py +257 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_issue_properties.py +171 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_link_types.py +314 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_parse_set.py +37 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_permissions.py +273 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_reindex.py +81 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_remote_links.py +254 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_security_schemes.py +170 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_transitions_changelog.py +114 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_user_management.py +226 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_version_management.py +339 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_watchers.py +101 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_worklog.py +223 -0
- package/tools/vds-scripts/jira_orchestrator/uv.lock +738 -0
- package/tools/vds-scripts/mcp_server/Dockerfile +34 -0
- package/tools/vds-scripts/mcp_server/README.md +140 -0
- package/tools/vds-scripts/mcp_server/pyproject.toml +42 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/__init__.py +4 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/config.py +36 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/server.py +66 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/__init__.py +14 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/bitbucket_tools.py +47 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/confluence_tools.py +59 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/git_tools.py +71 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/jira_tools.py +63 -0
- package/tools/vds-scripts/mcp_server/tests/__init__.py +2 -0
- package/tools/vds-scripts/mcp_server/tests/conftest.py +29 -0
- package/tools/vds-scripts/mcp_server/tests/unit/__init__.py +2 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_bitbucket_tools.py +25 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_confluence_tools.py +25 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_git_tools.py +32 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_jira_tools.py +32 -0
- package/tools/vds-scripts/mcp_server/tests/verification/__init__.py +2 -0
- package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_confluence_tools.py +40 -0
- package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_jira_tools.py +37 -0
- package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_tool_registration.py +47 -0
- package/tools/vds-scripts/mcp_server/uv.lock +1032 -0
- package/tools/vds-scripts/mypy.ini +5 -0
- package/tools/vds-scripts/pyproject.toml +29 -0
- package/tools/vds-scripts/repo-manifest.yaml +273 -0
- package/tools/vds-scripts/repo-manifest.yaml.example +25 -0
- package/tools/vds-scripts/scripts/BRD-Validation-API.postman_collection.json +706 -0
- package/tools/vds-scripts/scripts/BRD-Validation-README.md +308 -0
- package/tools/vds-scripts/scripts/README.md +162 -0
- package/tools/vds-scripts/scripts/bootstrap_uv.sh +30 -0
- package/tools/vds-scripts/scripts/brd-validation-environment.json +51 -0
- package/tools/vds-scripts/scripts/brd-validation-test-results.json +13023 -0
- package/tools/vds-scripts/scripts/brd_coverage_report.json +276 -0
- package/tools/vds-scripts/scripts/create_memory_session.py +35 -0
- package/tools/vds-scripts/scripts/deployment/load_docker_images_offline.sh +90 -0
- package/tools/vds-scripts/scripts/final_completion_report.md +139 -0
- package/tools/vds-scripts/scripts/folder_structure_report.json +321 -0
- package/tools/vds-scripts/scripts/generate_completion_report.py +125 -0
- package/tools/vds-scripts/scripts/generate_intellij_modules.py +150 -0
- package/tools/vds-scripts/scripts/link_integrity_report.json +807 -0
- package/tools/vds-scripts/scripts/move_audit_artifact_pages.py +255 -0
- package/tools/vds-scripts/scripts/move_audit_artifact_pages_rest.py +165 -0
- package/tools/vds-scripts/scripts/move_wrong_dept_pages.py +216 -0
- package/tools/vds-scripts/scripts/save_intellij_memories.py +120 -0
- package/tools/vds-scripts/scripts/save_memories_to_vds_ai.py +83 -0
- package/tools/vds-scripts/scripts/save_memories_vds_style.py +129 -0
- package/tools/vds-scripts/scripts/search_intellij_memories.py +50 -0
- package/tools/vds-scripts/scripts/setup_intellij_workspace.py +65 -0
- package/tools/vds-scripts/scripts/target-state-automation/README.md +89 -0
- package/tools/vds-scripts/scripts/target-state-automation/confluence_sync_coordinator.sh +27 -0
- package/tools/vds-scripts/scripts/target-state-automation/coordination.sh +114 -0
- package/tools/vds-scripts/scripts/target-state-automation/diagram_coordinator.sh +25 -0
- package/tools/vds-scripts/scripts/target-state-automation/docs_root.sh +22 -0
- package/tools/vds-scripts/scripts/target-state-automation/generate_diagrams.sh +22 -0
- package/tools/vds-scripts/scripts/target-state-automation/markdown_coordinator.sh +25 -0
- package/tools/vds-scripts/scripts/target-state-automation/progress_dashboard.sh +17 -0
- package/tools/vds-scripts/scripts/target-state-automation/schema_coordinator.sh +25 -0
- package/tools/vds-scripts/scripts/target-state-automation/sync_confluence.sh +30 -0
- package/tools/vds-scripts/scripts/target-state-automation/update_dependencies.sh +19 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_links.sh +86 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_markdown.sh +52 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_schemas.sh +26 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_structure.sh +98 -0
- package/tools/vds-scripts/scripts/update_modules_xml.py +190 -0
- package/tools/vds-scripts/scripts/uv-workspace-alignment-verification-2026-03-25.md +128 -0
- package/tools/vds-scripts/scripts/validate_brd_coverage.py +179 -0
- package/tools/vds-scripts/scripts/validate_folder_structure.py +240 -0
- package/tools/vds-scripts/scripts/validate_link_integrity.py +272 -0
- package/tools/vds-scripts/scripts/vds_sh_helpers.sh +180 -0
- package/tools/vds-scripts/scripts/verification/phase2_portable_paths_ubuntu_docker.sh +26 -0
- package/tools/vds-scripts/scripts/worktree_uv.sh +48 -0
- package/tools/vds-scripts/uv.lock +8 -0
- package/tools/vds-scripts/vds_cli/README.md +126 -0
- package/tools/vds-scripts/vds_cli/VERIFICATION_REPORT.md +41 -0
- package/tools/vds-scripts/vds_cli/pyproject.toml +38 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/__init__.py +3 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/cli.py +173 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/docs_sync.py +1203 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/env.py +41 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/__init__.py +3 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/google_sheets_orchestrator.py +198 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/router.py +93 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/sync_api.py +647 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/sync_service.py +266 -0
- package/tools/vds-scripts/vds_cli/tests/__init__.py +2 -0
- package/tools/vds-scripts/vds_cli/tests/conftest.py +49 -0
- package/tools/vds-scripts/vds_cli/tests/unit/__init__.py +2 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_cli.py +143 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_docs_sync.py +422 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_env.py +51 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_router.py +72 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_sync_api.py +357 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_sync_service.py +160 -0
- package/tools/vds-scripts/vds_cli/tests/verification/__init__.py +2 -0
- package/tools/vds-scripts/vds_cli/tests/verification/test_bitbucket_real.py +33 -0
- package/tools/vds-scripts/vds_cli/tests/verification/test_confluence_real.py +35 -0
- package/tools/vds-scripts/vds_cli/tests/verification/test_jira_real.py +41 -0
- package/tools/vds-scripts/vds_cli/uv.lock +524 -0
- package/tools/vds-scripts/vds_cli_common/README.md +190 -0
- package/tools/vds-scripts/vds_cli_common/pyproject.toml +92 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/__init__.py +34 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/completers.py +139 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/context.py +201 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/env.py +119 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/errors.py +318 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/output.py +284 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/paths.py +78 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/testing.py +213 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/version.py +85 -0
- package/tools/vds-scripts/vds_cli_common/tests/__init__.py +1 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_completers.py +148 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_context.py +192 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_env.py +102 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_errors.py +186 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_output.py +229 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_paths.py +61 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_testing.py +138 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_version.py +64 -0
|
@@ -0,0 +1,770 @@
|
|
|
1
|
+
# VDS JIRA Orchestrator
|
|
2
|
+
|
|
3
|
+
Python toolkit for JIRA operations using the `atlassian-python-api` SDK. Provides a unified CLI interface for issue
|
|
4
|
+
tracking, project management, and JIRA automation.
|
|
5
|
+
|
|
6
|
+
## Quick Start
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
cd vds-scripts
|
|
10
|
+
# Optional: sync all orchestrators once
|
|
11
|
+
./scripts/bootstrap_uv.sh
|
|
12
|
+
|
|
13
|
+
# Package-specific sync & tests
|
|
14
|
+
uv sync --project jira_orchestrator --extra dev
|
|
15
|
+
uv run --project jira_orchestrator pytest
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Run the CLI directly (uv automatically loads the project environment once it has been synced at least once):
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Using uv run (console script)
|
|
22
|
+
uv run --project jira_orchestrator vds-jira-cli --help
|
|
23
|
+
|
|
24
|
+
# Using the unified VDS CLI
|
|
25
|
+
uv run --project vds_cli vds-cli env load
|
|
26
|
+
uv run --project vds_cli vds-cli jira search "project = NTTC" --limit 20
|
|
27
|
+
uv run --project vds_cli vds-cli jira issue NTTC-123
|
|
28
|
+
uv run --project vds_cli vds-cli jira projects --limit 50
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Agent-friendly output**
|
|
32
|
+
- When using `vds-cli`, put Typer flags after `--` (e.g. `vds-cli jira -- --json-only projects`).
|
|
33
|
+
- `--json-only` emits clean JSON only (no reports/markdown, logs suppressed).
|
|
34
|
+
- `--no-reports` keeps normal console output but avoids writing report files.
|
|
35
|
+
|
|
36
|
+
## Available Commands
|
|
37
|
+
|
|
38
|
+
### Read Operations
|
|
39
|
+
|
|
40
|
+
- **`projects`** - List all JIRA projects
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
uv run --project vds_cli vds-cli jira projects --limit 50
|
|
44
|
+
# Optional filters:
|
|
45
|
+
# --search "keyword" (matches name or key, case-insensitive)
|
|
46
|
+
# --limit 10 (applied after filtering)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
- **`search`** - Search issues using JQL
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Basic search
|
|
53
|
+
uv run --project vds_cli vds-cli jira search "project = NTTC AND status = Open" --limit 50
|
|
54
|
+
uv run --project vds_cli vds-cli jira search "assignee = currentUser()" --fields "summary,status,priority"
|
|
55
|
+
|
|
56
|
+
# Advanced search with pagination
|
|
57
|
+
uv run --project vds_cli vds-cli jira search "project = NTTC" --advanced --start 10 --limit 25
|
|
58
|
+
uv run --project vds_cli vds-cli jira search "project = NTTC" --start 0 --limit 50 --fields "summary,status"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
> **Cloud requirement**: Atlassian's May 2025 change requires `enhanced_jql` for all Cloud tenants. The CLI detects
|
|
62
|
+
> `*.atlassian.net` base URLs and automatically routes searches through the enhanced endpoint (see announcement:
|
|
63
|
+
> <https://support.atlassian.com/cloud-migration/docs/changes-to-search-api-july-2024/>).\
|
|
64
|
+
> **Advanced search**: Use `--advanced` flag or `--start` parameter to enable pagination support. The `--start`
|
|
65
|
+
> parameter automatically enables advanced search mode.
|
|
66
|
+
|
|
67
|
+
- **`search-by-filter`** - Search issues using a saved filter
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Search using filter ID
|
|
71
|
+
uv run --project vds_cli vds-cli jira search-by-filter 10000 --limit 50
|
|
72
|
+
|
|
73
|
+
# Search with pagination
|
|
74
|
+
uv run --project vds_cli vds-cli jira search-by-filter 10000 --start 20 --limit 25 --fields "summary,status,priority"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
> **Note**: Uses the JQL from the saved filter to perform the search. Supports pagination and field selection.
|
|
78
|
+
|
|
79
|
+
- **`issue`** - Get issue details
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
uv run --project vds_cli vds-cli jira issue NTTC-123
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- **`bulk-update`** - Bulk update multiple issues
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Bulk update with JSON fields
|
|
89
|
+
uv run --project vds_cli vds-cli jira bulk-update \
|
|
90
|
+
--issue-keys "NTTC-1,NTTC-2,NTTC-3" \
|
|
91
|
+
--fields '{"summary":"Updated summary"}' \
|
|
92
|
+
--yes
|
|
93
|
+
|
|
94
|
+
# Bulk update with fields file
|
|
95
|
+
uv run --project vds_cli vds-cli jira bulk-update \
|
|
96
|
+
--issue-keys "NTTC-1,NTTC-2" \
|
|
97
|
+
--fields-file ./fields.json \
|
|
98
|
+
--yes
|
|
99
|
+
|
|
100
|
+
# Bulk update all fields (default)
|
|
101
|
+
uv run --project vds_cli vds-cli jira bulk-update \
|
|
102
|
+
--issue-keys "NTTC-1,NTTC-2" \
|
|
103
|
+
--yes
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
> **Notes**:
|
|
107
|
+
>
|
|
108
|
+
> - Requires `--yes` flag for confirmation
|
|
109
|
+
> - `--fields` accepts JSON string or `"*all"` (default) for all fields
|
|
110
|
+
> - `--fields-file` accepts a JSON file containing field updates
|
|
111
|
+
> - Multiple issue keys should be comma-separated
|
|
112
|
+
|
|
113
|
+
- **`field-append`** - Append value to issue field (for multi-select fields)
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Append value with JSON string
|
|
117
|
+
uv run --project vds_cli vds-cli jira field-append \
|
|
118
|
+
--issue-key NTTC-123 \
|
|
119
|
+
--field customfield_10000 \
|
|
120
|
+
--value '{"name":"value"}' \
|
|
121
|
+
--yes
|
|
122
|
+
|
|
123
|
+
# Append value with file
|
|
124
|
+
uv run --project vds_cli vds-cli jira field-append \
|
|
125
|
+
--issue-key NTTC-123 \
|
|
126
|
+
--field customfield_10000 \
|
|
127
|
+
--value-file ./value.json \
|
|
128
|
+
--yes
|
|
129
|
+
|
|
130
|
+
# Append without notifying users
|
|
131
|
+
uv run --project vds_cli vds-cli jira field-append \
|
|
132
|
+
--issue-key NTTC-123 \
|
|
133
|
+
--field customfield_10000 \
|
|
134
|
+
--value '{"name":"value"}' \
|
|
135
|
+
--no-notify \
|
|
136
|
+
--yes
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
> **Notes**:
|
|
140
|
+
>
|
|
141
|
+
> - Requires `--yes` flag for confirmation
|
|
142
|
+
> - `--value` must be a JSON object (dict)
|
|
143
|
+
> - `--value-file` accepts a JSON file containing the value object
|
|
144
|
+
> - Use `--no-notify` to prevent user notifications
|
|
145
|
+
> - Primarily used for multi-select custom fields
|
|
146
|
+
|
|
147
|
+
- **`issue-archive`** - Archive an issue
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
uv run --project vds_cli vds-cli jira issue-archive --issue-key NTTC-123 --yes
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
> **Warning**: Archiving an issue removes it from normal views. Use `issue-restore` to restore archived issues.
|
|
154
|
+
|
|
155
|
+
- **`issue-restore`** - Restore an archived issue
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
uv run --project vds_cli vds-cli jira issue-restore --issue-key NTTC-123 --yes
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
> **Notes**:
|
|
162
|
+
>
|
|
163
|
+
> - Requires `--yes` flag for confirmation
|
|
164
|
+
> - Restores previously archived issues back to normal state
|
|
165
|
+
|
|
166
|
+
- **`property`** - Manage JIRA application properties
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Get property by key
|
|
170
|
+
uv run --project vds_cli vds-cli jira property get --key "jira.lf.date.dmy"
|
|
171
|
+
|
|
172
|
+
# Get property with filters
|
|
173
|
+
uv run --project vds_cli vds-cli jira property get \
|
|
174
|
+
--key "jira.lf.*" \
|
|
175
|
+
--permission-level SYSTEM \
|
|
176
|
+
--key-filter "jira.lf.*"
|
|
177
|
+
|
|
178
|
+
# Set property
|
|
179
|
+
uv run --project vds_cli vds-cli jira property set \
|
|
180
|
+
--property-id "jira.lf.date.dmy" \
|
|
181
|
+
--value "true" \
|
|
182
|
+
--yes
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
> **Notes**:
|
|
186
|
+
>
|
|
187
|
+
> - `get` action supports optional `--key`, `--permission-level`, and `--key-filter` parameters
|
|
188
|
+
> - `set` action requires `--property-id`, `--value`, and `--yes` flag
|
|
189
|
+
|
|
190
|
+
- **`settings`** - Manage JIRA settings
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# Get advanced settings
|
|
194
|
+
uv run --project vds_cli vds-cli jira settings advanced
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
> Returns advanced JIRA configuration settings.
|
|
198
|
+
|
|
199
|
+
- **`createmeta`** - Get create metadata for issue creation
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
uv run --project vds_cli vds-cli jira createmeta --project NTTC --issuetype Task
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
- **`custom-fields`** - List custom fields
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
uv run --project vds_cli vds-cli jira custom-fields --search "Story Points" --limit 10
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
- **`board`** - Agile board operations
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
uv run --project vds_cli vds-cli jira board list --project NTTC --limit 10
|
|
215
|
+
uv run --project vds_cli vds-cli jira board get --board-id 1
|
|
216
|
+
uv run --project vds_cli vds-cli jira board create --name "Sprint Board" --type scrum --filter-id 100 --yes
|
|
217
|
+
uv run --project vds_cli vds-cli jira board issues --board-id 1
|
|
218
|
+
uv run --project vds_cli vds-cli jira board properties --board-id 1
|
|
219
|
+
uv run --project vds_cli vds-cli jira board velocity --board-id 1
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
- **`epic`** - Epic operations
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
uv run --project vds_cli vds-cli jira epic issues --epic-key NTTC-100
|
|
226
|
+
uv run --project vds_cli vds-cli jira epic list --board-id 1 --limit 20
|
|
227
|
+
uv run --project vds_cli vds-cli jira epic issues-for-epic --board-id 1 --epic-id 100
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
- **`sprint`** - Sprint operations
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
uv run --project vds_cli vds-cli jira sprint list --board-id 1 --limit 10
|
|
234
|
+
uv run --project vds_cli vds-cli jira sprint issues --board-id 1 --state active
|
|
235
|
+
uv run --project vds_cli vds-cli jira sprint versions --board-id 1
|
|
236
|
+
uv run --project vds_cli vds-cli jira sprint create --name "Sprint 1" --board-id 1 --start-date "2025-01-01" --end-date "2025-01-14" --goal "Complete features" --yes
|
|
237
|
+
uv run --project vds_cli vds-cli jira sprint rename --sprint-id 100 --name "Updated Sprint" --yes
|
|
238
|
+
uv run --project vds_cli vds-cli jira sprint add-issues --sprint-id 100 --issues "NTTC-123,NTTC-124" --yes
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
- **`reindex`** - Reindex operations
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
uv run --project vds_cli vds-cli jira reindex status
|
|
245
|
+
uv run --project vds_cli vds-cli jira reindex start --yes
|
|
246
|
+
uv run --project vds_cli vds-cli jira reindex with-type BACKGROUND --yes
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
- **`worklog`** - Worklog operations (time tracking)
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
# Get worklogs for an issue
|
|
253
|
+
uv run --project vds_cli vds-cli jira worklog get --issue-key NTTC-123
|
|
254
|
+
|
|
255
|
+
# Add worklog entry
|
|
256
|
+
uv run --project vds_cli vds-cli jira worklog add \
|
|
257
|
+
--issue-key NTTC-123 \
|
|
258
|
+
--time-spent "2h 30m" \
|
|
259
|
+
--comment "Implemented feature X" \
|
|
260
|
+
--started "2025-11-12T10:00:00Z" \
|
|
261
|
+
--yes
|
|
262
|
+
|
|
263
|
+
# Add worklog with time in seconds
|
|
264
|
+
uv run --project vds_cli vds-cli jira worklog add \
|
|
265
|
+
--issue-key NTTC-123 \
|
|
266
|
+
--time-sec 7200 \
|
|
267
|
+
--comment "Code review" \
|
|
268
|
+
--yes
|
|
269
|
+
|
|
270
|
+
# Get updated worklogs since timestamp
|
|
271
|
+
uv run --project vds_cli vds-cli jira worklog updated --since "2025-11-12 10:00:00"
|
|
272
|
+
|
|
273
|
+
# Get deleted worklogs since timestamp
|
|
274
|
+
uv run --project vds_cli vds-cli jira worklog deleted --since "2025-11-12 10:00:00"
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
- **`transitions`** - Get available transitions for an issue
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
uv run --project vds_cli vds-cli jira transitions NTTC-123
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
- **`changelog`** - Get issue change history
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
# Get complete changelog
|
|
287
|
+
uv run --project vds_cli vds-cli jira changelog get NTTC-123
|
|
288
|
+
|
|
289
|
+
# Get changelog with pagination
|
|
290
|
+
uv run --project vds_cli vds-cli jira changelog get NTTC-123 --start 0 --limit 50
|
|
291
|
+
|
|
292
|
+
# Get status change history only
|
|
293
|
+
uv run --project vds_cli vds-cli jira changelog status NTTC-123
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
- **`dashboard`** - Dashboard operations
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
# Get dashboard by ID
|
|
300
|
+
uv run --project vds_cli vds-cli jira dashboard get --dashboard-id 10000
|
|
301
|
+
|
|
302
|
+
# List dashboards
|
|
303
|
+
uv run --project vds_cli vds-cli jira dashboard list
|
|
304
|
+
|
|
305
|
+
# List dashboards with filter and pagination
|
|
306
|
+
uv run --project vds_cli vds-cli jira dashboard list --filter "project" --start 0 --limit 50
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
- **`filter`** - Filter management operations
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
# List all filters
|
|
313
|
+
uv run --project vds_cli vds-cli jira filter list
|
|
314
|
+
|
|
315
|
+
# List filters by owner
|
|
316
|
+
uv run --project vds_cli vds-cli jira filter list --owner username
|
|
317
|
+
|
|
318
|
+
# Get filter by ID
|
|
319
|
+
uv run --project vds_cli vds-cli jira filter get --filter-id 10000
|
|
320
|
+
|
|
321
|
+
# Create a new filter
|
|
322
|
+
uv run --project vds_cli vds-cli jira filter create \
|
|
323
|
+
--name "My Filter" \
|
|
324
|
+
--jql "project = NTTC AND status = Open" \
|
|
325
|
+
--description "Open issues in NTTC project" \
|
|
326
|
+
--favourite \
|
|
327
|
+
--yes
|
|
328
|
+
|
|
329
|
+
# Update filter (name, JQL, description, or favourite status)
|
|
330
|
+
uv run --project vds_cli vds-cli jira filter update \
|
|
331
|
+
--filter-id 10000 \
|
|
332
|
+
--name "Updated Filter Name" \
|
|
333
|
+
--yes
|
|
334
|
+
|
|
335
|
+
# Delete filter
|
|
336
|
+
uv run --project vds_cli vds-cli jira filter delete --filter-id 10000 --yes
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
> **Notes**:
|
|
340
|
+
>
|
|
341
|
+
> - Write operations (create, update, delete) require `--yes` flag for confirmation
|
|
342
|
+
> - `update` requires at least one of: `--name`, `--jql`, `--description`, or `--favourite`
|
|
343
|
+
> - If `--jql` is not provided in `update`, the existing JQL is preserved
|
|
344
|
+
|
|
345
|
+
- **`link-type`** - Issue link type operations
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
# List all issue link types
|
|
349
|
+
uv run --project vds_cli vds-cli jira link-type list
|
|
350
|
+
|
|
351
|
+
# Get specific link type by ID
|
|
352
|
+
uv run --project vds_cli vds-cli jira link-type get --link-type-id 10000
|
|
353
|
+
|
|
354
|
+
# Create new link type
|
|
355
|
+
uv run --project vds_cli vds-cli jira link-type create \
|
|
356
|
+
--name "Tests" \
|
|
357
|
+
--inward "is tested by" \
|
|
358
|
+
--outward "tests" \
|
|
359
|
+
--yes
|
|
360
|
+
|
|
361
|
+
# Create link type from JSON file
|
|
362
|
+
uv run --project vds_cli vds-cli jira link-type create \
|
|
363
|
+
--data-file link_type.json \
|
|
364
|
+
--yes
|
|
365
|
+
|
|
366
|
+
# Update link type
|
|
367
|
+
uv run --project vds_cli vds-cli jira link-type update \
|
|
368
|
+
--link-type-id 10000 \
|
|
369
|
+
--name "Tests Updated" \
|
|
370
|
+
--inward "is tested by" \
|
|
371
|
+
--outward "tests" \
|
|
372
|
+
--yes
|
|
373
|
+
|
|
374
|
+
# Delete link type
|
|
375
|
+
uv run --project vds_cli vds-cli jira link-type delete --link-type-id 10000 --yes
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
- **`remote-link`** - Issue remote link operations
|
|
379
|
+
|
|
380
|
+
```bash
|
|
381
|
+
# List remote links for an issue
|
|
382
|
+
uv run --project vds_cli vds-cli jira remote-link list --issue-key NTTC-123
|
|
383
|
+
|
|
384
|
+
# Create a remote link (with confirmation)
|
|
385
|
+
uv run --project vds_cli vds-cli jira remote-link create \
|
|
386
|
+
--issue-key NTTC-123 \
|
|
387
|
+
--url https://status.example.com/NTTC-123 \
|
|
388
|
+
--title "Status Page" \
|
|
389
|
+
--relationship "is documented by" \
|
|
390
|
+
--yes
|
|
391
|
+
|
|
392
|
+
# Update an existing remote link
|
|
393
|
+
uv run --project vds_cli vds-cli jira remote-link update \
|
|
394
|
+
--issue-key NTTC-123 \
|
|
395
|
+
--remote-link-id 10 \
|
|
396
|
+
--url https://status.example.com/NTTC-123?updated=true \
|
|
397
|
+
--yes
|
|
398
|
+
|
|
399
|
+
# Delete a remote link
|
|
400
|
+
uv run --project vds_cli vds-cli jira remote-link delete --issue-key NTTC-123 --remote-link-id 10 --yes
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
- **`issue-property`** - Issue property operations
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
# List property keys for an issue
|
|
407
|
+
uv run --project vds_cli vds-cli jira issue-property list --issue-key NTTC-123
|
|
408
|
+
|
|
409
|
+
# Get a specific property
|
|
410
|
+
uv run --project vds_cli vds-cli jira issue-property get --issue-key NTTC-123 --property-key deploy.info
|
|
411
|
+
|
|
412
|
+
# Set a property using inline JSON (requires confirmation)
|
|
413
|
+
uv run --project vds_cli vds-cli jira issue-property set \
|
|
414
|
+
--issue-key NTTC-123 \
|
|
415
|
+
--property-key deploy.info \
|
|
416
|
+
--value '{"env": "prod", "version": "1.2.3"}' \
|
|
417
|
+
--yes
|
|
418
|
+
|
|
419
|
+
# Set a property from JSON file
|
|
420
|
+
uv run --project vds_cli vds-cli jira issue-property set \
|
|
421
|
+
--issue-key NTTC-123 \
|
|
422
|
+
--property-key deploy.info \
|
|
423
|
+
--data-file deploy_info.json \
|
|
424
|
+
--yes
|
|
425
|
+
|
|
426
|
+
# Delete a property
|
|
427
|
+
uv run --project vds_cli vds-cli jira issue-property delete --issue-key NTTC-123 --property-key deploy.info --yes
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
- **`watcher`** - Issue watcher operations
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
# List watchers
|
|
434
|
+
uv run --project vds_cli vds-cli jira watcher list --issue-key NTTC-123
|
|
435
|
+
|
|
436
|
+
# Add watcher (username/accountId) with confirmation
|
|
437
|
+
uv run --project vds_cli vds-cli jira watcher add --issue-key NTTC-123 --account user@example.com --yes
|
|
438
|
+
|
|
439
|
+
# Remove watcher
|
|
440
|
+
uv run --project vds_cli vds-cli jira watcher remove --issue-key NTTC-123 --account user@example.com --yes
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
- **`component`** - Project component operations
|
|
444
|
+
|
|
445
|
+
```bash
|
|
446
|
+
# Get a component
|
|
447
|
+
uv run --project vds_cli vds-cli jira component get --component-id 10000
|
|
448
|
+
|
|
449
|
+
# Create a component (requires confirmation)
|
|
450
|
+
uv run --project vds_cli vds-cli jira component create \
|
|
451
|
+
--project-key NTTC \
|
|
452
|
+
--name "Payments" \
|
|
453
|
+
--description "Handles payment flows" \
|
|
454
|
+
--yes
|
|
455
|
+
|
|
456
|
+
# Update a component
|
|
457
|
+
uv run --project vds_cli vds-cli jira component update \
|
|
458
|
+
--component-id 10000 \
|
|
459
|
+
--name "Payments Core" \
|
|
460
|
+
--yes
|
|
461
|
+
|
|
462
|
+
# Delete a component
|
|
463
|
+
uv run --project vds_cli vds-cli jira component delete --component-id 10000 --yes
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
- **`user`** - User management operations
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
# Search for users (Cloud: email/displayName, DC: username)
|
|
470
|
+
uv run --project vds_cli vds-cli jira user search --query "test@example.com"
|
|
471
|
+
uv run --project vds_cli vds-cli jira user search --query "John Doe" --start 0 --limit 20
|
|
472
|
+
uv run --project vds_cli vds-cli jira user search --query "test" --include-inactive
|
|
473
|
+
|
|
474
|
+
# Get user groups (Cloud only - requires account ID)
|
|
475
|
+
uv run --project vds_cli vds-cli jira user groups --account-id "5d5f5e5d5e5d5e5d5e5d5e5d"
|
|
476
|
+
|
|
477
|
+
# Deactivate a user (Jira 8.3.0+, requires confirmation)
|
|
478
|
+
uv run --project vds_cli vds-cli jira user deactivate --username "testuser" --yes
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
> **Cloud/DC Differences**:
|
|
482
|
+
>
|
|
483
|
+
> - `user search`: In Cloud, searches by email/displayName/accountId. In DC, searches by username.
|
|
484
|
+
> - `user groups`: **Cloud only** - requires account ID (not username). Returns error on Server/DC.
|
|
485
|
+
> - `user deactivate`: Requires Jira 8.3.0+ and `--yes` flag for confirmation.
|
|
486
|
+
|
|
487
|
+
- **`version`** - Project version management operations
|
|
488
|
+
|
|
489
|
+
```bash
|
|
490
|
+
# List project versions with pagination and filtering
|
|
491
|
+
uv run --project vds_cli vds-cli jira version list --project-key NTTC
|
|
492
|
+
uv run --project vds_cli vds-cli jira version list --project-key NTTC --start 0 --limit 20
|
|
493
|
+
uv run --project vds_cli vds-cli jira version list --project-key NTTC --order-by name --query "1.0" --status released
|
|
494
|
+
|
|
495
|
+
# Create a new version (requires confirmation)
|
|
496
|
+
uv run --project vds_cli vds-cli jira version create \
|
|
497
|
+
--project-key NTTC \
|
|
498
|
+
--project-id 10000 \
|
|
499
|
+
--name "1.0.0" \
|
|
500
|
+
--yes
|
|
501
|
+
uv run --project vds_cli vds-cli jira version create \
|
|
502
|
+
--project-key NTTC \
|
|
503
|
+
--project-id 10000 \
|
|
504
|
+
--name "1.0.0" \
|
|
505
|
+
--archived \
|
|
506
|
+
--released \
|
|
507
|
+
--yes
|
|
508
|
+
|
|
509
|
+
# Update a version (requires confirmation and at least one field)
|
|
510
|
+
uv run --project vds_cli vds-cli jira version update \
|
|
511
|
+
--version-id 10000 \
|
|
512
|
+
--name "1.0.1" \
|
|
513
|
+
--yes
|
|
514
|
+
uv run --project vds_cli vds-cli jira version update \
|
|
515
|
+
--version-id 10000 \
|
|
516
|
+
--description "Updated description" \
|
|
517
|
+
--archived \
|
|
518
|
+
--start-date "2025-01-01" \
|
|
519
|
+
--release-date "2025-01-31" \
|
|
520
|
+
--yes
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
> **Notes**:
|
|
524
|
+
>
|
|
525
|
+
> - `version list`: Supports pagination (`--start`, `--limit`), sorting (`--order-by`: `sequence`, `name`,
|
|
526
|
+
> `startDate`, `releaseDate`), and filtering (`--query`, `--status`).
|
|
527
|
+
> - `version create`: Requires `--project-key`, `--project-id`, `--name`, and `--yes` flag. Use `--archived` and
|
|
528
|
+
> `--released` flags to set version state.
|
|
529
|
+
> - `version update`: Requires `--version-id`, `--yes` flag, and at least one update field (`--name`, `--description`,
|
|
530
|
+
> `--archived`, `--released`, `--start-date`, `--release-date`).
|
|
531
|
+
|
|
532
|
+
- **`security-scheme`** - Issue security scheme operations
|
|
533
|
+
|
|
534
|
+
```bash
|
|
535
|
+
# List all security schemes
|
|
536
|
+
uv run --project vds_cli vds-cli jira security-scheme list
|
|
537
|
+
|
|
538
|
+
# Get specific security scheme by ID
|
|
539
|
+
uv run --project vds_cli vds-cli jira security-scheme get --scheme-id 10000
|
|
540
|
+
|
|
541
|
+
# Get security scheme with only levels
|
|
542
|
+
uv run --project vds_cli vds-cli jira security-scheme get --scheme-id 10000 --only-levels
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
- **`permissions`** - Permission operations
|
|
546
|
+
|
|
547
|
+
```bash
|
|
548
|
+
# Get all permission types
|
|
549
|
+
uv run --project vds_cli vds-cli jira permissions all
|
|
550
|
+
|
|
551
|
+
# Check permissions (global)
|
|
552
|
+
uv run --project vds_cli vds-cli jira permissions check --permissions "ADMINISTER_PROJECTS,BROWSE_PROJECTS"
|
|
553
|
+
|
|
554
|
+
# Check permissions in project context
|
|
555
|
+
uv run --project vds_cli vds-cli jira permissions check \
|
|
556
|
+
--permissions "ADMINISTER_PROJECTS" \
|
|
557
|
+
--project-key NTTC
|
|
558
|
+
|
|
559
|
+
# Check permissions in issue context
|
|
560
|
+
uv run --project vds_cli vds-cli jira permissions check \
|
|
561
|
+
--permissions "EDIT_ISSUES" \
|
|
562
|
+
--issue-key NTTC-123
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
- **`permission-scheme`** - Get project permission scheme
|
|
566
|
+
|
|
567
|
+
```bash
|
|
568
|
+
# Get project permission scheme
|
|
569
|
+
uv run --project vds_cli vds-cli jira permission-scheme NTTC
|
|
570
|
+
|
|
571
|
+
# Get with expanded fields
|
|
572
|
+
uv run --project vds_cli vds-cli jira permission-scheme NTTC --expand "permissions,user,group"
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
- **`issue-security-scheme`** - Get project issue security scheme
|
|
576
|
+
|
|
577
|
+
```bash
|
|
578
|
+
# Get project issue security scheme
|
|
579
|
+
uv run --project vds_cli vds-cli jira issue-security-scheme NTTC
|
|
580
|
+
|
|
581
|
+
# Get with only levels
|
|
582
|
+
uv run --project vds_cli vds-cli jira issue-security-scheme NTTC --only-levels
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
### Write Operations
|
|
586
|
+
|
|
587
|
+
- **`create`** - Create a new issue
|
|
588
|
+
|
|
589
|
+
```bash
|
|
590
|
+
uv run --project vds_cli vds-cli jira create \
|
|
591
|
+
--project NTTC \
|
|
592
|
+
--issuetype Task \
|
|
593
|
+
--summary "Implement feature X" \
|
|
594
|
+
--description "Detailed description here" \
|
|
595
|
+
--assignee username \
|
|
596
|
+
--labels "backend,high-priority" \
|
|
597
|
+
--set customfield_12345=10001 \
|
|
598
|
+
--yes
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
- **`update`** - Update issue fields
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
uv run --project vds_cli vds-cli jira update NTTC-123 \
|
|
605
|
+
--set summary="Updated summary" \
|
|
606
|
+
--add-label "urgent" \
|
|
607
|
+
--remove-label "low-priority" \
|
|
608
|
+
--yes
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
- **`comment`** - Add comment to issue
|
|
612
|
+
|
|
613
|
+
```bash
|
|
614
|
+
uv run --project vds_cli vds-cli jira comment NTTC-123 \
|
|
615
|
+
--message "This is a comment" \
|
|
616
|
+
--yes
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
- **`transition`** - Transition issue status
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
uv run --project vds_cli vds-cli jira transition NTTC-123 \
|
|
623
|
+
--to "In Progress" \
|
|
624
|
+
--admin \
|
|
625
|
+
--yes
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
- **`delete`** - Delete an issue (requires --yes and --force)
|
|
629
|
+
|
|
630
|
+
```bash
|
|
631
|
+
uv run --project vds_cli vds-cli jira delete NTTC-123 --yes --force
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
## Configuration
|
|
635
|
+
|
|
636
|
+
The orchestrator uses environment variables from `~/.vds/.env`:
|
|
637
|
+
|
|
638
|
+
```bash
|
|
639
|
+
# Required for authentication
|
|
640
|
+
VDS_USERNAME=your-username
|
|
641
|
+
VDS_PASSWORD=your-password
|
|
642
|
+
|
|
643
|
+
# Optional: Use token instead of username/password
|
|
644
|
+
JIRA_TOKEN=your-api-token
|
|
645
|
+
|
|
646
|
+
# JIRA base URL (defaults to https://jira.digital.vn)
|
|
647
|
+
JIRA_BASE_URL=https://jira.digital.vn
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
## Project Layout
|
|
651
|
+
|
|
652
|
+
- `src/vds_jira_orchestrator/config.py` – Environment configuration and settings
|
|
653
|
+
- `src/vds_jira_orchestrator/adapter.py` – JIRA adapter using atlassian-python-api SDK
|
|
654
|
+
- `src/vds_jira_orchestrator/cli.py` – Typer CLI interface
|
|
655
|
+
- `src/vds_jira_orchestrator/errors.py` – Custom error types
|
|
656
|
+
- `src/vds_jira_orchestrator/reporting.py` – JSON/Markdown run reports
|
|
657
|
+
- `tests/` – pytest test suite
|
|
658
|
+
|
|
659
|
+
## Feature Coverage
|
|
660
|
+
|
|
661
|
+
The orchestrator implements **120+ methods** covering core JIRA operations. For a complete feature coverage reference
|
|
662
|
+
and SDK comparison, see [`ATLASSIAN_FEATURES_REFERENCE.md`](../ATLASSIAN_FEATURES_REFERENCE.md).
|
|
663
|
+
|
|
664
|
+
**Current Coverage**: ~90% of atlassian-python-api SDK features
|
|
665
|
+
|
|
666
|
+
**Recently Added**:
|
|
667
|
+
|
|
668
|
+
- ✅ Application Properties (property get/set, settings advanced) - **NEW**
|
|
669
|
+
- ✅ Issue Archiving (issue-archive, issue-restore) - **NEW**
|
|
670
|
+
- ✅ Bulk Operations (bulk-update, field-append) - **NEW**
|
|
671
|
+
- ✅ Version Management (list, create, update) - **NEW**
|
|
672
|
+
- ✅ User Management (search, groups, deactivate) - **NEW**
|
|
673
|
+
- ✅ Issue Link Types management (list, get, create, update, delete) - **NEW**
|
|
674
|
+
- ✅ Issue Security Schemes (list, get) - **NEW**
|
|
675
|
+
- ✅ Advanced Permission Operations (permissions all/check, permission-scheme, issue-security-scheme) - **NEW**
|
|
676
|
+
- ✅ Agile/Scrum operations (boards, epics) - **NEW**
|
|
677
|
+
- ✅ Board properties and velocity management - **NEW**
|
|
678
|
+
- ✅ Sprint management - **NEW**
|
|
679
|
+
- ✅ Backlog operations - **NEW**
|
|
680
|
+
- ✅ Worklog management (time tracking) - **NEW**
|
|
681
|
+
- ✅ Issue transitions & changelog - **NEW**
|
|
682
|
+
- ✅ Advanced search operations (search with pagination, search-by-filter) - **NEW**
|
|
683
|
+
- ✅ Filter management (list, get, create, update, delete) - **NEW**
|
|
684
|
+
- ✅ Dashboard operations - **NEW**
|
|
685
|
+
- ✅ Reindexing operations - **NEW**
|
|
686
|
+
|
|
687
|
+
**Missing High-Priority Features**:
|
|
688
|
+
|
|
689
|
+
- None (all high-priority features complete)
|
|
690
|
+
|
|
691
|
+
## Advanced Features
|
|
692
|
+
|
|
693
|
+
The `JiraAdapter` class provides many additional methods beyond the CLI:
|
|
694
|
+
|
|
695
|
+
- **Attachments**: `add_attachment()`, `get_attachments()`, `download_attachments()`
|
|
696
|
+
- **Project Operations**: `get_project()`, `get_project_components()`, `get_project_versions()`
|
|
697
|
+
- **Version Management**: `get_project_versions_paginated()`, `add_version()`, `update_version()`
|
|
698
|
+
- CLI: `jira version list`, `jira version create`, `jira version update`
|
|
699
|
+
- **User Management**: `get_user()`, `find_users()`, `get_myself()`, `get_user_groups()` (Cloud only),
|
|
700
|
+
`deactivate_user()` (Jira 8.3.0+)
|
|
701
|
+
- CLI: `jira user search`, `jira user groups`, `jira user deactivate`
|
|
702
|
+
- **Application Properties**: `get_property()`, `set_property()`, `get_advanced_settings()`
|
|
703
|
+
- CLI: `jira property get`, `jira property set`, `jira settings advanced`
|
|
704
|
+
- **Issue Archiving**: `issue_archive()`, `issue_restore()`
|
|
705
|
+
- **Bulk Operations**: `bulk_update_issue_field()`, `issue_field_value_append()`, `match_jql()`
|
|
706
|
+
- CLI: `jira bulk-update`, `jira field-append`
|
|
707
|
+
- **Custom Fields**: `get_custom_fields()`, `get_issue_field_value()`
|
|
708
|
+
- **Group Management**: `create_group()`, `remove_group()`, `add_user_to_group()`
|
|
709
|
+
- **Agile Boards**: `get_all_agile_boards()`, `create_agile_board()`, `get_agile_board()`, `get_issues_for_board()`
|
|
710
|
+
- **Board Properties**: `get_agile_board_properties()`, `set_agile_board_property()`,
|
|
711
|
+
`get_agile_board_refined_velocity()`
|
|
712
|
+
- **Epics**: `epic_issues()`, `get_epics()`, `get_issues_for_epic()`
|
|
713
|
+
- **Sprints**: `get_all_sprints_from_board()`, `create_sprint()`, `rename_sprint()`, `add_issues_to_sprint()`
|
|
714
|
+
- **Reindexing**: `reindex()`, `reindex_status()`, `reindex_with_type()`
|
|
715
|
+
|
|
716
|
+
These can be accessed programmatically by importing the adapter:
|
|
717
|
+
|
|
718
|
+
```python
|
|
719
|
+
from vds_jira_orchestrator.adapter import JiraAdapter
|
|
720
|
+
from vds_jira_orchestrator.config import JiraSettings
|
|
721
|
+
|
|
722
|
+
settings = JiraSettings()
|
|
723
|
+
adapter = JiraAdapter(
|
|
724
|
+
url=str(settings.base_url),
|
|
725
|
+
username=settings.username,
|
|
726
|
+
password=settings.password
|
|
727
|
+
)
|
|
728
|
+
issues = adapter.jql("project = NTTC", limit=100)
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
## Run Reports
|
|
732
|
+
|
|
733
|
+
Run reports are written to `vds-scripts/reports/jira_runs/YYYY/MM/DD/<timestamp>.json` (plus Markdown unless
|
|
734
|
+
`--no-markdown` is used).
|
|
735
|
+
|
|
736
|
+
## Linting
|
|
737
|
+
|
|
738
|
+
We use Ruff for linting/formatting:
|
|
739
|
+
|
|
740
|
+
```bash
|
|
741
|
+
uv run --extra dev ruff check
|
|
742
|
+
uv run --extra dev ruff format
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
## Testing
|
|
746
|
+
|
|
747
|
+
```bash
|
|
748
|
+
# Run all tests
|
|
749
|
+
uv run --extra dev pytest
|
|
750
|
+
|
|
751
|
+
# Run specific test file
|
|
752
|
+
uv run --extra dev pytest tests/test_cli.py
|
|
753
|
+
|
|
754
|
+
# Run with coverage
|
|
755
|
+
uv run --extra dev pytest --cov=src/vds_jira_orchestrator
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
## Error Handling
|
|
759
|
+
|
|
760
|
+
The orchestrator provides structured error types:
|
|
761
|
+
|
|
762
|
+
- `JiraAuthError` - Authentication failures
|
|
763
|
+
- `JiraNotFound` - Resource not found (404)
|
|
764
|
+
- `JiraRateLimited` - Rate limit exceeded (429)
|
|
765
|
+
- `JiraConflictError` - Conflict errors (409)
|
|
766
|
+
- `JiraResponseError` - Server errors (500)
|
|
767
|
+
- `JiraTransportError` - Network/connection errors
|
|
768
|
+
- `JiraAdapterError` - General adapter errors
|
|
769
|
+
|
|
770
|
+
All errors include context information for debugging.
|