@ngocsangairvds/vsaf 4.1.8 → 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.
- package/package.json +1 -1
- package/packages/cli/dist/commands/skill.js +1 -1
- package/packages/cli/dist/commands/skill.js.map +1 -1
- package/skills/vds-skill/_shared/config-check.js +0 -76
- package/skills/vds-skill/_shared/credentials.js +0 -139
- package/skills/vds-skill/create-bitbucket-pr/SKILL.md +0 -57
- package/skills/vds-skill/create-bitbucket-pr/scripts/create-pr.js +0 -125
- package/skills/vds-skill/create-jira-epic/SKILL.md +0 -55
- package/skills/vds-skill/create-jira-epic/scripts/create-epic.js +0 -120
- package/skills/vds-skill/install-deps.mjs +0 -567
- package/skills/vds-skill/pack.yaml +0 -24
- package/skills/vds-skill/pull/SKILL.md +0 -38
- package/skills/vds-skill/pull/scripts/pull.js +0 -59
- package/skills/vds-skill/push-prd/SKILL.md +0 -227
- package/skills/vds-skill/push-srs/SKILL.md +0 -116
- package/skills/vds-skill/search-confluence/SKILL.md +0 -53
- package/skills/vds-skill/search-confluence/scripts/search.js +0 -114
- package/skills/vds-skill/vds-scripts/.claude/phase7-CLOSURE.md +0 -100
- package/skills/vds-skill/vds-scripts/.dockerignore +0 -62
- package/skills/vds-skill/vds-scripts/.github/ISSUE_TEMPLATE/cli-change.md +0 -92
- package/skills/vds-skill/vds-scripts/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -48
- package/skills/vds-skill/vds-scripts/.github/workflows/chaos-smoke.yml +0 -266
- package/skills/vds-skill/vds-scripts/.github/workflows/confluence-sync.yml +0 -44
- package/skills/vds-skill/vds-scripts/.github/workflows/docs-confluence-evidence.yml +0 -170
- package/skills/vds-skill/vds-scripts/.github/workflows/docs-quality.yml +0 -59
- package/skills/vds-skill/vds-scripts/.github/workflows/lint-and-test.yml +0 -90
- package/skills/vds-skill/vds-scripts/.github/workflows/scheduler-load-smoke.yml +0 -104
- package/skills/vds-skill/vds-scripts/.github/workflows/telegram-bridge-ci.yml +0 -131
- package/skills/vds-skill/vds-scripts/.graphifyignore +0 -29
- package/skills/vds-skill/vds-scripts/.importlinter +0 -86
- package/skills/vds-skill/vds-scripts/.mcp.json +0 -11
- package/skills/vds-skill/vds-scripts/.pre-commit-config.yaml +0 -62
- package/skills/vds-skill/vds-scripts/.ruffignore +0 -3
- package/skills/vds-skill/vds-scripts/.secrets.baseline +0 -133
- package/skills/vds-skill/vds-scripts/AGENTS.md +0 -250
- package/skills/vds-skill/vds-scripts/AGENTS.vi.md +0 -92
- package/skills/vds-skill/vds-scripts/ECOSYSTEM-CHANGELOG.md +0 -52
- package/skills/vds-skill/vds-scripts/ECOSYSTEM-DOCS.md +0 -602
- package/skills/vds-skill/vds-scripts/ECOSYSTEM_ALIGNMENT.md +0 -133
- package/skills/vds-skill/vds-scripts/Makefile +0 -119
- package/skills/vds-skill/vds-scripts/README.md +0 -103
- package/skills/vds-skill/vds-scripts/bitbucket_manifest_mapping.toml +0 -34
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/ARCHITECTURE_ANALYSIS.md +0 -258
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/BITBUCKET_API_PRACTICES.md +0 -393
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/EVALUATION_REPORT.md +0 -61
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/FEATURES.md +0 -908
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/README.md +0 -817
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/pyproject.toml +0 -49
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/__init__.py +0 -50
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/async_client.py +0 -641
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/cli.py +0 -2271
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/client.py +0 -2693
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/config.py +0 -186
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/errors.py +0 -34
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/factory.py +0 -185
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/parsers.py +0 -113
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/protocols.py +0 -244
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/repo_ops.py +0 -325
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/__init__.py +0 -8
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/conftest.py +0 -65
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_advanced_search.py +0 -155
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_async_client.py +0 -505
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_branch_permissions.py +0 -172
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_cli.py +0 -113
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_cli_archive.py +0 -122
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_cli_clone.py +0 -131
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client.py +0 -207
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_archive.py +0 -73
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_branch_conditions.py +0 -101
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_code_advanced.py +0 -180
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_code_file.py +0 -33
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_deployment_environments.py +0 -193
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_issues.py +0 -163
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_pipelines_advanced.py +0 -171
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_pr_blockers.py +0 -118
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_client_repository_variables.py +0 -155
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_code.py +0 -98
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_code_advanced.py +0 -279
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_code_insights.py +0 -334
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_conditions.py +0 -149
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_config.py +0 -297
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_deployment_env.py +0 -352
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_errors.py +0 -67
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_factory.py +0 -352
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_fork_operations.py +0 -203
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_issue_cli.py +0 -262
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_pipeline_advanced.py +0 -265
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_pr_blocker.py +0 -206
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_protocols.py +0 -336
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_ops_archive.py +0 -169
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_ops_clone.py +0 -115
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_ops_parsing.py +0 -149
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_settings.py +0 -336
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_repo_variables.py +0 -266
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_webhooks.py +0 -188
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/test_workspace.py +0 -234
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/unit/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/bitbucket_orchestrator/tests/unit/test_parsers.py +0 -254
- package/skills/vds-skill/vds-scripts/brd_orchestrator/README.md +0 -29
- package/skills/vds-skill/vds-scripts/brd_orchestrator/pyproject.toml +0 -63
- package/skills/vds-skill/vds-scripts/brd_orchestrator/src/vds_brd_orchestrator/__init__.py +0 -17
- package/skills/vds-skill/vds-scripts/brd_orchestrator/src/vds_brd_orchestrator/cli.py +0 -187
- package/skills/vds-skill/vds-scripts/brd_orchestrator/src/vds_brd_orchestrator/validator.py +0 -121
- package/skills/vds-skill/vds-scripts/brd_orchestrator/tests/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/brd_orchestrator/tests/test_cli.py +0 -62
- package/skills/vds-skill/vds-scripts/brd_orchestrator/tests/test_validator.py +0 -33
- package/skills/vds-skill/vds-scripts/code/code_evidence_pack.json +0 -435
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/Dockerfile +0 -19
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/README.md +0 -479
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/SYNC_SCRIPTS.md +0 -127
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/SYNC_STANDARDIZATION.md +0 -108
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/pyproject.toml +0 -50
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/__init__.py +0 -56
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/async_client.py +0 -100
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/cli.py +0 -3160
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/config.py +0 -215
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content.py +0 -368
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content_v2.py +0 -144
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/crawl_tree.py +0 -1833
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/errors.py +0 -44
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/eventing.py +0 -111
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/http.py +0 -1850
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/orchestration.py +0 -166
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/protocols.py +0 -61
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/reporting.py +0 -78
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree.py +0 -122
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree_copier.py +0 -431
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/sync_pdfs_from_markdown.py +0 -203
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/sync_pdfs_to_confluence.py +0 -299
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/sync_png_attachments.py +0 -299
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/conftest.py +0 -46
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_advanced_content.py +0 -252
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_advanced_search.py +0 -193
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_async_client.py +0 -104
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_cache_management.py +0 -246
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_cli.py +0 -716
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_config.py +0 -130
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_content.py +0 -192
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_content_flags.py +0 -27
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_content_labels.py +0 -94
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_crawl_tree.py +0 -2252
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_degraded_write_safety.py +0 -176
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_draft_management.py +0 -225
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_errors.py +0 -75
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_eventing.py +0 -73
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_eventing_chaos.py +0 -37
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_eventing_rate_limit.py +0 -44
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_eventing_timeout.py +0 -49
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_export.py +0 -231
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_history.py +0 -217
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_http.py +0 -375
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_orchestration.py +0 -93
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_reporting.py +0 -24
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_search_cql.py +0 -36
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_space_management.py +0 -236
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_space_permissions.py +0 -384
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_tree_copier.py +0 -644
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_tree_copier_remap.py +0 -289
- package/skills/vds-skill/vds-scripts/confluence_orchestrator/tests/test_user_group_management.py +0 -387
- package/skills/vds-skill/vds-scripts/diagram_generator/README.md +0 -663
- package/skills/vds-skill/vds-scripts/diagram_generator/ci_validate.sh +0 -16
- 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
- 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
- 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
- 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
- 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
- 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
- package/skills/vds-skill/vds-scripts/diagram_generator/examples/github-actions-validate.yml +0 -39
- package/skills/vds-skill/vds-scripts/diagram_generator/generate_all_diagrams.py +0 -827
- package/skills/vds-skill/vds-scripts/diagram_generator/generate_insurance_c4_diagrams.py +0 -261
- package/skills/vds-skill/vds-scripts/diagram_generator/generate_insurance_c4_quick.py +0 -486
- package/skills/vds-skill/vds-scripts/diagram_generator/pyproject.toml +0 -28
- package/skills/vds-skill/vds-scripts/diagram_generator/render_png.py +0 -59
- package/skills/vds-skill/vds-scripts/diagram_generator/src/vds_diagram_generator/__init__.py +0 -3
- package/skills/vds-skill/vds-scripts/diagram_generator/src/vds_diagram_generator/cli.py +0 -50
- package/skills/vds-skill/vds-scripts/diagram_generator/test_c4_hierarchical.py +0 -142
- package/skills/vds-skill/vds-scripts/diagram_generator/test_c4_quick.py +0 -131
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_analyzer_completeness.py +0 -260
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_c4_syntax_correctness.py +0 -138
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_component_coverage.py +0 -182
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_mermaid_output.py +0 -80
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_png_generation.py +0 -112
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_scenario_templates.py +0 -15
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_sequence_accuracy.py +0 -93
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_structurizr_export.py +0 -177
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_style_consistency.py +0 -174
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_usecase_generator.py +0 -201
- package/skills/vds-skill/vds-scripts/diagram_generator/tests/test_usecase_integration.py +0 -124
- package/skills/vds-skill/vds-scripts/docker/.dockerignore +0 -38
- package/skills/vds-skill/vds-scripts/docker/ADR.md +0 -392
- package/skills/vds-skill/vds-scripts/docker/Dockerfile +0 -68
- package/skills/vds-skill/vds-scripts/docker/MIGRATION.md +0 -453
- package/skills/vds-skill/vds-scripts/docker/README.md +0 -347
- package/skills/vds-skill/vds-scripts/docker/ROLLBACK.md +0 -596
- package/skills/vds-skill/vds-scripts/docker/compose.phase2-verification.yml +0 -31
- package/skills/vds-skill/vds-scripts/docker/docker-compose.cli.yml +0 -206
- package/skills/vds-skill/vds-scripts/docker/docker-compose.infra.yml +0 -276
- package/skills/vds-skill/vds-scripts/docker/docker-compose.services.yml +0 -425
- package/skills/vds-skill/vds-scripts/docker/infrastructure/init-schemas.sql +0 -177
- package/skills/vds-skill/vds-scripts/docker/infrastructure/pgbouncer/pgbouncer.ini +0 -75
- package/skills/vds-skill/vds-scripts/docker/infrastructure/pgbouncer/userlist.txt +0 -50
- package/skills/vds-skill/vds-scripts/docker/infrastructure/pgbouncer/userlist.txt.template +0 -36
- package/skills/vds-skill/vds-scripts/docs/.confluence-evidence/.gitkeep +0 -0
- package/skills/vds-skill/vds-scripts/docs/.confluence-evidence/PREFLIGHT.md +0 -132
- package/skills/vds-skill/vds-scripts/docs/.confluence-evidence/README.md +0 -84
- package/skills/vds-skill/vds-scripts/docs/.confluence.yaml +0 -157
- package/skills/vds-skill/vds-scripts/docs/.freshness.yaml +0 -54
- package/skills/vds-skill/vds-scripts/docs/README.md +0 -235
- package/skills/vds-skill/vds-scripts/docs/agents/README.md +0 -33
- package/skills/vds-skill/vds-scripts/docs/agents/explanation/data-flow.md +0 -132
- package/skills/vds-skill/vds-scripts/docs/agents/explanation/development-roadmap.md +0 -49
- package/skills/vds-skill/vds-scripts/docs/agents/explanation/features-overview.md +0 -62
- package/skills/vds-skill/vds-scripts/docs/agents/explanation/index.md +0 -36
- package/skills/vds-skill/vds-scripts/docs/agents/explanation/runtime-verification-and-gap-reporting.md +0 -127
- package/skills/vds-skill/vds-scripts/docs/agents/explanation/system-architecture.md +0 -139
- package/skills/vds-skill/vds-scripts/docs/agents/explanation/whats-new.md +0 -75
- package/skills/vds-skill/vds-scripts/docs/agents/explanation/who-ecosystem-introduction.md +0 -65
- package/skills/vds-skill/vds-scripts/docs/agents/explanation/who-ecosystem-model.md +0 -41
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/02-using-vds-ai-memory.md +0 -98
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/03-memory-cross-agent.md +0 -241
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/04-using-progress-reports.md +0 -240
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/08-semantic-search.md +0 -46
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/apply-phase3-migration.md +0 -148
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/choose-the-right-command-or-skill.md +0 -34
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/contribute-new-orchestrator.md +0 -149
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/decision-tree.md +0 -63
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/first-audit-run.md +0 -83
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/index.md +0 -49
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/install-and-bootstrap-who-scripts-and-skills.md +0 -314
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/analytics-pipeline-workflow.md +0 -165
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/code-quality-gate-workflow.md +0 -138
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/confluence-bitbucket-sync-workflow.md +0 -130
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/document-delivery-workflow.md +0 -142
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/memory-progress-workflow.md +0 -140
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/orchestrator-workflows/research-spec-audit-workflow.md +0 -135
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/phase131-all-project-preparation.md +0 -211
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/phase131-bounded-parallel-analysis.md +0 -123
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/phase131-confluence-upload-recovery.md +0 -204
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/phase132-department-preparation.md +0 -144
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/run-ecosystem-daily-report.md +0 -213
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/tips-and-tricks.md +0 -138
- package/skills/vds-skill/vds-scripts/docs/agents/how-to/troubleshooting-guide.md +0 -221
- package/skills/vds-skill/vds-scripts/docs/agents/reference/agent-operational-contract.md +0 -162
- package/skills/vds-skill/vds-scripts/docs/agents/reference/alignment-phase179-report.md +0 -144
- package/skills/vds-skill/vds-scripts/docs/agents/reference/audit-triage-playbook.md +0 -256
- package/skills/vds-skill/vds-scripts/docs/agents/reference/backup-restore.md +0 -132
- package/skills/vds-skill/vds-scripts/docs/agents/reference/bitbucket-orchestrator.md +0 -56
- package/skills/vds-skill/vds-scripts/docs/agents/reference/brd-orchestrator.md +0 -52
- package/skills/vds-skill/vds-scripts/docs/agents/reference/capability-coverage-review.md +0 -51
- package/skills/vds-skill/vds-scripts/docs/agents/reference/ci-workflows.md +0 -98
- package/skills/vds-skill/vds-scripts/docs/agents/reference/circular-dependency-orchestrator.md +0 -55
- package/skills/vds-skill/vds-scripts/docs/agents/reference/cli-commands.md +0 -583
- package/skills/vds-skill/vds-scripts/docs/agents/reference/cli-development-standards.md +0 -41
- package/skills/vds-skill/vds-scripts/docs/agents/reference/cli-help-matrix.md +0 -84
- package/skills/vds-skill/vds-scripts/docs/agents/reference/common-errors.md +0 -126
- package/skills/vds-skill/vds-scripts/docs/agents/reference/configuration-reference.md +0 -128
- package/skills/vds-skill/vds-scripts/docs/agents/reference/confluence-orchestrator.md +0 -56
- package/skills/vds-skill/vds-scripts/docs/agents/reference/confluence-sync-target.md +0 -111
- package/skills/vds-skill/vds-scripts/docs/agents/reference/confluence-sync.md +0 -46
- package/skills/vds-skill/vds-scripts/docs/agents/reference/db-query-orchestrator.md +0 -93
- package/skills/vds-skill/vds-scripts/docs/agents/reference/diagrams-orchestrator.md +0 -52
- package/skills/vds-skill/vds-scripts/docs/agents/reference/ecosystem-daily-report.md +0 -229
- package/skills/vds-skill/vds-scripts/docs/agents/reference/elastic-orchestrator.md +0 -57
- package/skills/vds-skill/vds-scripts/docs/agents/reference/env-git-helper.md +0 -216
- package/skills/vds-skill/vds-scripts/docs/agents/reference/evolution-orchestrator.md +0 -113
- package/skills/vds-skill/vds-scripts/docs/agents/reference/excel-orchestrator.md +0 -51
- package/skills/vds-skill/vds-scripts/docs/agents/reference/git-orchestrator.md +0 -62
- package/skills/vds-skill/vds-scripts/docs/agents/reference/google-sheets-orchestrator.md +0 -51
- package/skills/vds-skill/vds-scripts/docs/agents/reference/grafana-orchestrator.md +0 -52
- package/skills/vds-skill/vds-scripts/docs/agents/reference/hexagonal-orchestrator.md +0 -64
- package/skills/vds-skill/vds-scripts/docs/agents/reference/index.md +0 -36
- package/skills/vds-skill/vds-scripts/docs/agents/reference/infrastructure-v2.15.md +0 -67
- package/skills/vds-skill/vds-scripts/docs/agents/reference/intellij-orchestrator.md +0 -50
- package/skills/vds-skill/vds-scripts/docs/agents/reference/jira-orchestrator.md +0 -60
- package/skills/vds-skill/vds-scripts/docs/agents/reference/links-orchestrator.md +0 -57
- package/skills/vds-skill/vds-scripts/docs/agents/reference/lint-cli.md +0 -99
- package/skills/vds-skill/vds-scripts/docs/agents/reference/lsp-orchestrator.md +0 -51
- package/skills/vds-skill/vds-scripts/docs/agents/reference/markdown-orchestrator.md +0 -53
- package/skills/vds-skill/vds-scripts/docs/agents/reference/mcp-orchestrator.md +0 -88
- package/skills/vds-skill/vds-scripts/docs/agents/reference/memory-orchestrator.md +0 -53
- package/skills/vds-skill/vds-scripts/docs/agents/reference/metabase-orchestrator.md +0 -51
- package/skills/vds-skill/vds-scripts/docs/agents/reference/migration-playbook.md +0 -71
- package/skills/vds-skill/vds-scripts/docs/agents/reference/multi-agent-orchestrator.md +0 -52
- package/skills/vds-skill/vds-scripts/docs/agents/reference/openapi-orchestrator.md +0 -57
- package/skills/vds-skill/vds-scripts/docs/agents/reference/orchestrator-architecture.md +0 -194
- package/skills/vds-skill/vds-scripts/docs/agents/reference/orchestrator-comparison-matrix.md +0 -79
- package/skills/vds-skill/vds-scripts/docs/agents/reference/orchestrator-index.md +0 -73
- package/skills/vds-skill/vds-scripts/docs/agents/reference/pdf-orchestrator.md +0 -57
- package/skills/vds-skill/vds-scripts/docs/agents/reference/portable-paths-and-config.md +0 -0
- package/skills/vds-skill/vds-scripts/docs/agents/reference/portable-paths-validation-matrix.md +0 -129
- package/skills/vds-skill/vds-scripts/docs/agents/reference/progress-orchestrator.md +0 -51
- package/skills/vds-skill/vds-scripts/docs/agents/reference/progress-report-cli.md +0 -215
- package/skills/vds-skill/vds-scripts/docs/agents/reference/public-interface-orchestrator.md +0 -73
- package/skills/vds-skill/vds-scripts/docs/agents/reference/research-orchestrator.md +0 -53
- package/skills/vds-skill/vds-scripts/docs/agents/reference/schema-orchestrator.md +0 -57
- package/skills/vds-skill/vds-scripts/docs/agents/reference/search-tools.md +0 -34
- package/skills/vds-skill/vds-scripts/docs/agents/reference/skills-commands.md +0 -256
- package/skills/vds-skill/vds-scripts/docs/agents/reference/skills-reference.md +0 -32
- package/skills/vds-skill/vds-scripts/docs/agents/reference/sonarqube-orchestrator.md +0 -62
- package/skills/vds-skill/vds-scripts/docs/agents/reference/spec-orchestrator.md +0 -56
- package/skills/vds-skill/vds-scripts/docs/agents/reference/structure-orchestrator.md +0 -69
- package/skills/vds-skill/vds-scripts/docs/agents/reference/system-requirements.md +0 -76
- package/skills/vds-skill/vds-scripts/docs/agents/reference/tasks-orchestrator.md +0 -53
- package/skills/vds-skill/vds-scripts/docs/agents/reference/validation-and-sync-notes.md +0 -54
- package/skills/vds-skill/vds-scripts/docs/agents/reference/vds-ai-memory-api.md +0 -51
- package/skills/vds-skill/vds-scripts/docs/agents/reference/vds-cli-reference.md +0 -34
- package/skills/vds-skill/vds-scripts/docs/agents/reference/who-capability-inventory.md +0 -96
- package/skills/vds-skill/vds-scripts/docs/agents/reference/who-capability-routing-matrix.md +0 -14
- package/skills/vds-skill/vds-scripts/docs/agents/tutorials/feature-progression-guide.md +0 -112
- package/skills/vds-skill/vds-scripts/docs/agents/tutorials/index.md +0 -36
- package/skills/vds-skill/vds-scripts/docs/agents/tutorials/quick-start.md +0 -50
- package/skills/vds-skill/vds-scripts/docs/agents/tutorials/who-skills-and-scripts-onboarding.md +0 -47
- package/skills/vds-skill/vds-scripts/docs/agents/tutorials/zero-to-productive-developer.md +0 -339
- package/skills/vds-skill/vds-scripts/docs/confluence/IMPLEMENTATION-SUMMARY.md +0 -78
- package/skills/vds-skill/vds-scripts/docs/confluence/SYNC-GUIDE.md +0 -47
- package/skills/vds-skill/vds-scripts/docs/deployment/offline-docker-image-load.md +0 -59
- package/skills/vds-skill/vds-scripts/docs/evolution-auto-run-rollout.md +0 -325
- package/skills/vds-skill/vds-scripts/docs/evolution-loop-deep-integration.md +0 -496
- package/skills/vds-skill/vds-scripts/docs/evolution-loop-integration-guide.md +0 -359
- package/skills/vds-skill/vds-scripts/docs/openspace-schema-snapshot.md +0 -73
- package/skills/vds-skill/vds-scripts/docs/operations/sla-mttr-policy.md +0 -44
- package/skills/vds-skill/vds-scripts/docs/p0-closure-evidence/SUMMARY.md +0 -58
- package/skills/vds-skill/vds-scripts/docs/p4-closure-evidence/.gitkeep +0 -0
- package/skills/vds-skill/vds-scripts/docs/p4-closure-evidence/smoke-20260427T024137Z-b95b586b.json +0 -15
- package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/alembic-and-runtime-advisory-locks.md +0 -45
- package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/dbos-listen-notify.md +0 -54
- package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/pgbouncer-search-path-empirical.md +0 -110
- package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/pgvector-set-local-audit.md +0 -51
- package/skills/vds-skill/vds-scripts/docs/p8-preflight-evidence/topology-decision-session-mode.md +0 -57
- package/skills/vds-skill/vds-scripts/docs/phases/CHANGELOG.md +0 -103
- package/skills/vds-skill/vds-scripts/docs/phases/PHASE_125_COMPLETION_AND_MERGE.md +0 -212
- package/skills/vds-skill/vds-scripts/docs/phases/phase125/IMPLEMENTATION_REPORT.md +0 -227
- package/skills/vds-skill/vds-scripts/docs/phases/phase125/TSK-125.10-11-implementation-summary.md +0 -196
- package/skills/vds-skill/vds-scripts/docs/phases/phase125/profile-patch-ollama-local-anthropic.md +0 -122
- package/skills/vds-skill/vds-scripts/docs/phases/phase125_completion_summary.md +0 -369
- package/skills/vds-skill/vds-scripts/docs/phases/phase125_llm_analysis_skill.md +0 -164
- package/skills/vds-skill/vds-scripts/docs/phases/phase125_merge_complete.md +0 -147
- package/skills/vds-skill/vds-scripts/docs/phases/phase125_skill_runtime_closure_20260321.md +0 -91
- package/skills/vds-skill/vds-scripts/docs/phases/phase2-portable-paths/closure-handoff-summary-2026-03-23.md +0 -290
- package/skills/vds-skill/vds-scripts/docs/phases/phase2-portable-paths/remaining-risk-register-2026-03-25.md +0 -143
- package/skills/vds-skill/vds-scripts/docs/phases/phase2-portable-paths/verification-evidence-2026-03-23.md +0 -135
- package/skills/vds-skill/vds-scripts/docs/v0-sunset-known-issues.md +0 -88
- package/skills/vds-skill/vds-scripts/docs/vi/TRANSLATION-BACKLOG.md +0 -72
- package/skills/vds-skill/vds-scripts/docs/vi/agents/README.md +0 -41
- package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/features-overview.md +0 -29
- package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/index.md +0 -14
- package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/runtime-verification-and-gap-reporting.md +0 -129
- package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/whats-new.md +0 -37
- package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/who-ecosystem-introduction.md +0 -21
- package/skills/vds-skill/vds-scripts/docs/vi/agents/explanation/who-ecosystem-model.md +0 -36
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/02-using-vds-ai-memory.md +0 -100
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/03-memory-cross-agent.md +0 -243
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/04-using-progress-reports.md +0 -242
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/08-semantic-search.md +0 -16
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/choose-the-right-command-or-skill.md +0 -36
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/decision-tree.md +0 -77
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/first-audit-run.md +0 -85
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/index.md +0 -21
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/install-and-bootstrap-who-scripts-and-skills.md +0 -156
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/analytics-pipeline-workflow.md +0 -174
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/code-quality-gate-workflow.md +0 -147
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/confluence-bitbucket-sync-workflow.md +0 -139
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/document-delivery-workflow.md +0 -151
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/memory-progress-workflow.md +0 -149
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/research-spec-audit-workflow.md +0 -144
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/phase131-all-project-preparation.md +0 -213
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/phase131-bounded-parallel-analysis.md +0 -125
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/phase131-confluence-upload-recovery.md +0 -206
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/phase132-department-preparation.md +0 -146
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/tips-and-tricks.md +0 -34
- package/skills/vds-skill/vds-scripts/docs/vi/agents/how-to/troubleshooting-guide.md +0 -36
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/agent-operational-contract.md +0 -98
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/audit-triage-playbook.md +0 -258
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/bitbucket-orchestrator.md +0 -30
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/brd-orchestrator.md +0 -29
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/capability-coverage-review.md +0 -46
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/circular-dependency-orchestrator.md +0 -29
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/cli-commands.md +0 -409
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/cli-development-standards.md +0 -19
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/cli-help-matrix.md +0 -71
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/common-errors.md +0 -133
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/configuration-reference.md +0 -25
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/confluence-orchestrator.md +0 -30
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/db-query-orchestrator.md +0 -34
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/diagrams-orchestrator.md +0 -31
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/elastic-orchestrator.md +0 -30
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/evolution-orchestrator.md +0 -31
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/excel-orchestrator.md +0 -60
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/git-orchestrator.md +0 -31
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/google-sheets-orchestrator.md +0 -60
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/grafana-orchestrator.md +0 -30
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/hexagonal-orchestrator.md +0 -73
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/index.md +0 -25
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/intellij-orchestrator.md +0 -59
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/jira-orchestrator.md +0 -32
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/links-orchestrator.md +0 -66
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/lsp-orchestrator.md +0 -60
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/markdown-orchestrator.md +0 -62
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/mcp-orchestrator.md +0 -34
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/memory-orchestrator.md +0 -45
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/metabase-orchestrator.md +0 -30
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/multi-agent-orchestrator.md +0 -61
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/openapi-orchestrator.md +0 -66
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/orchestrator-architecture.md +0 -24
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/orchestrator-index.md +0 -73
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/pdf-orchestrator.md +0 -30
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/portable-paths-and-config.md +0 -123
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/portable-paths-validation-matrix.md +0 -131
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/progress-orchestrator.md +0 -43
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/progress-report-cli.md +0 -217
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/public-interface-orchestrator.md +0 -82
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/research-orchestrator.md +0 -45
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/schema-orchestrator.md +0 -66
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/search-tools.md +0 -19
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/skills-reference.md +0 -27
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/sonarqube-orchestrator.md +0 -71
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/spec-orchestrator.md +0 -56
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/structure-orchestrator.md +0 -78
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/system-requirements.md +0 -30
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/tasks-orchestrator.md +0 -45
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/validation-and-sync-notes.md +0 -26
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/vds-ai-memory-api.md +0 -53
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/vds-cli-reference.md +0 -34
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/who-capability-inventory.md +0 -98
- package/skills/vds-skill/vds-scripts/docs/vi/agents/reference/who-capability-routing-matrix.md +0 -16
- package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/feature-progression-guide.md +0 -124
- package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/index.md +0 -13
- package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/quick-start.md +0 -30
- package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/who-skills-and-scripts-onboarding.md +0 -42
- package/skills/vds-skill/vds-scripts/docs/vi/agents/tutorials/zero-to-productive-developer.md +0 -137
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/README.md +0 -450
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/pyproject.toml +0 -97
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/__init__.py +0 -81
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/cli.py +0 -652
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/client.py +0 -743
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/config.py +0 -208
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/errors.py +0 -34
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/py.typed +0 -0
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/conftest.py +0 -227
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/test_client.py +0 -990
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/test_config.py +0 -268
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/test_e2e_verification.py +0 -272
- package/skills/vds-skill/vds-scripts/elastic_orchestrator/tests/test_errors.py +0 -78
- package/skills/vds-skill/vds-scripts/excel_orchestrator/README.md +0 -288
- package/skills/vds-skill/vds-scripts/excel_orchestrator/RESEARCH_BASED_UPDATES_REPORT.md +0 -261
- package/skills/vds-skill/vds-scripts/excel_orchestrator/add_essential_missing_effort.py +0 -255
- package/skills/vds-skill/vds-scripts/excel_orchestrator/adjust_effort_complexity.py +0 -184
- package/skills/vds-skill/vds-scripts/excel_orchestrator/brd_analysis_and_task_breakdown.py +0 -632
- package/skills/vds-skill/vds-scripts/excel_orchestrator/brd_analysis_comprehensive.py +0 -1029
- package/skills/vds-skill/vds-scripts/excel_orchestrator/check_overlaps_and_brd_coverage.py +0 -570
- package/skills/vds-skill/vds-scripts/excel_orchestrator/clean_remarks_column.py +0 -127
- package/skills/vds-skill/vds-scripts/excel_orchestrator/comprehensive_brd_check.py +0 -322
- package/skills/vds-skill/vds-scripts/excel_orchestrator/create_buffered_summary.py +0 -119
- package/skills/vds-skill/vds-scripts/excel_orchestrator/create_service_totals_sheet.py +0 -118
- package/skills/vds-skill/vds-scripts/excel_orchestrator/examples/basic_operations.py +0 -85
- package/skills/vds-skill/vds-scripts/excel_orchestrator/expand_all_tasks.py +0 -341
- package/skills/vds-skill/vds-scripts/excel_orchestrator/expand_tasks.py +0 -304
- package/skills/vds-skill/vds-scripts/excel_orchestrator/fill_brd_references.py +0 -347
- package/skills/vds-skill/vds-scripts/excel_orchestrator/fill_remarks_and_colors.py +0 -132
- package/skills/vds-skill/vds-scripts/excel_orchestrator/finalize_brd_and_cleanup.py +0 -295
- package/skills/vds-skill/vds-scripts/excel_orchestrator/finalize_brd_coverage.py +0 -327
- package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_all_formulas.py +0 -99
- package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_detail_presentation.py +0 -113
- package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_presentation_and_effort.py +0 -116
- package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_presentation_consistency.py +0 -231
- package/skills/vds-skill/vds-scripts/excel_orchestrator/fix_remarks_matching.py +0 -179
- package/skills/vds-skill/vds-scripts/excel_orchestrator/group_tasks_by_service_id.py +0 -210
- package/skills/vds-skill/vds-scripts/excel_orchestrator/increase_brd_coverage.py +0 -497
- package/skills/vds-skill/vds-scripts/excel_orchestrator/increase_effort_complexity.py +0 -155
- package/skills/vds-skill/vds-scripts/excel_orchestrator/organize_and_deduplicate.py +0 -273
- package/skills/vds-skill/vds-scripts/excel_orchestrator/pyproject.toml +0 -64
- package/skills/vds-skill/vds-scripts/excel_orchestrator/rebuild_all_formulas.py +0 -146
- package/skills/vds-skill/vds-scripts/excel_orchestrator/remove_base_multiplier_and_check_duplicates.py +0 -310
- package/skills/vds-skill/vds-scripts/excel_orchestrator/remove_duplicate_brd_tasks.py +0 -137
- package/skills/vds-skill/vds-scripts/excel_orchestrator/research_based_updates.py +0 -457
- package/skills/vds-skill/vds-scripts/excel_orchestrator/restore_e_values.py +0 -172
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/__init__.py +0 -5
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/cli.py +0 -746
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/config.py +0 -74
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/converters.py +0 -226
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/errors.py +0 -88
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/excel_client.py +0 -443
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/formatters.py +0 -211
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/logging.py +0 -57
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/source_contract.py +0 -29
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/target_state_status.py +0 -837
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/ulnc_alignment.py +0 -1291
- package/skills/vds-skill/vds-scripts/excel_orchestrator/src/vds_excel_orchestrator/validators.py +0 -164
- package/skills/vds-skill/vds-scripts/excel_orchestrator/sync_detail_and_total_sheets.py +0 -211
- package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/conftest.py +0 -36
- package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/test_cli.py +0 -383
- package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/test_excel_client.py +0 -129
- package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/test_ulnc_alignment.py +0 -373
- package/skills/vds-skill/vds-scripts/excel_orchestrator/tests/test_validators.py +0 -64
- package/skills/vds-skill/vds-scripts/excel_orchestrator/update_api_database_effort.py +0 -261
- package/skills/vds-skill/vds-scripts/excel_orchestrator/update_buffers_inline.py +0 -115
- package/skills/vds-skill/vds-scripts/excel_orchestrator/update_complex_services_and_add_new.py +0 -336
- package/skills/vds-skill/vds-scripts/excel_orchestrator/update_responsibility_and_fix_rows.py +0 -208
- package/skills/vds-skill/vds-scripts/excel_orchestrator/update_task_breakdown_vietnamese.py +0 -309
- package/skills/vds-skill/vds-scripts/excel_orchestrator/update_vietnamese_and_responsibility.py +0 -415
- package/skills/vds-skill/vds-scripts/excel_orchestrator/verify_brd_coverage_comprehensive.py +0 -401
- package/skills/vds-skill/vds-scripts/git_orchestrator/ENHANCEMENT_SUMMARY.md +0 -119
- package/skills/vds-skill/vds-scripts/git_orchestrator/README.md +0 -286
- package/skills/vds-skill/vds-scripts/git_orchestrator/VERIFICATION_REPORT.md +0 -152
- package/skills/vds-skill/vds-scripts/git_orchestrator/pyproject.toml +0 -37
- package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__init__.py +0 -30
- package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__main__.py +0 -4
- package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/branch_probe.py +0 -271
- package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/cli.py +0 -892
- package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/logging_config.py +0 -63
- package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/manifest.py +0 -249
- package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/orchestrator.py +0 -1647
- package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/protocols.py +0 -35
- package/skills/vds-skill/vds-scripts/git_orchestrator/src/vds_git_orchestrator/reporting.py +0 -55
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_cli_settings.py +0 -19
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_integration.py +0 -79
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_manifest.py +0 -79
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_orchestrator.py +0 -207
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_public_api.py +0 -235
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/test_resilience.py +0 -343
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/unit/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/unit/test_branch_probe.py +0 -327
- package/skills/vds-skill/vds-scripts/git_orchestrator/tests/unit/test_protocols.py +0 -132
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/README.md +0 -241
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/pyproject.toml +0 -45
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/__init__.py +0 -69
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/cli.py +0 -568
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/client.py +0 -186
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/config.py +0 -46
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/errors.py +0 -41
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/conftest.py +0 -1
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/unit/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/unit/test_cli.py +0 -212
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/unit/test_client.py +0 -24
- package/skills/vds-skill/vds-scripts/google_sheets_orchestrator/tests/unit/test_config.py +0 -16
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/README.md +0 -572
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/pyproject.toml +0 -102
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/__init__.py +0 -78
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/cli.py +0 -455
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/client.py +0 -700
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/config.py +0 -243
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/errors.py +0 -34
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/py.typed +0 -1
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/conftest.py +0 -308
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/test_client.py +0 -458
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/test_config.py +0 -203
- package/skills/vds-skill/vds-scripts/grafana_orchestrator/tests/test_errors.py +0 -78
- package/skills/vds-skill/vds-scripts/jira_orchestrator/README.md +0 -864
- package/skills/vds-skill/vds-scripts/jira_orchestrator/pyproject.toml +0 -43
- package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/__init__.py +0 -65
- package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/adapter.py +0 -1685
- package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/cli.py +0 -2806
- package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/config.py +0 -168
- package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/errors.py +0 -34
- package/skills/vds-skill/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/reporting.py +0 -66
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/conftest.py +0 -86
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_agile_list_payloads.py +0 -54
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_bulk_operations.py +0 -91
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_components.py +0 -56
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_createmeta.py +0 -45
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_dashboard.py +0 -119
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_issue_properties.py +0 -53
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_permissions_compat.py +0 -41
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_reindex.py +0 -42
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_remote_links.py +0 -75
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_transitions.py +0 -90
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_user_management.py +0 -116
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_version_management.py +0 -181
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_adapter_watchers.py +0 -43
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_advanced_search.py +0 -179
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_agile.py +0 -304
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_application_properties.py +0 -243
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_backlog.py +0 -91
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_bulk_operations.py +0 -403
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_cli.py +0 -108
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_components.py +0 -119
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_config.py +0 -166
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_dashboard.py +0 -122
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_discover_fields.py +0 -207
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_errors.py +0 -72
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_filter_management.py +0 -411
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_issue_archiving.py +0 -179
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_issue_links.py +0 -257
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_issue_properties.py +0 -189
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_link_types.py +0 -407
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_parse_set.py +0 -37
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_permissions.py +0 -343
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_reindex.py +0 -81
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_remote_links.py +0 -269
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_security_schemes.py +0 -202
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_transitions_changelog.py +0 -109
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_user_management.py +0 -246
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_version_management.py +0 -503
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_watchers.py +0 -116
- package/skills/vds-skill/vds-scripts/jira_orchestrator/tests/test_worklog.py +0 -243
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/README.md +0 -864
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/pyproject.toml +0 -43
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/__init__.py +0 -65
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/adapter.py +0 -1689
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/cli.py +0 -2799
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/config.py +0 -137
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/errors.py +0 -34
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/reporting.py +0 -65
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/conftest.py +0 -86
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_agile_list_payloads.py +0 -54
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_bulk_operations.py +0 -101
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_components.py +0 -64
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_createmeta.py +0 -45
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_dashboard.py +0 -135
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_issue_properties.py +0 -63
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_permissions_compat.py +0 -42
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_reindex.py +0 -42
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_remote_links.py +0 -89
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_transitions.py +0 -91
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_user_management.py +0 -130
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_version_management.py +0 -189
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_watchers.py +0 -49
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_advanced_search.py +0 -213
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_agile.py +0 -334
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_application_properties.py +0 -261
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_backlog.py +0 -91
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_bulk_operations.py +0 -443
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_cli.py +0 -106
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_components.py +0 -133
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_config.py +0 -166
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_dashboard.py +0 -130
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_discover_fields.py +0 -207
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_errors.py +0 -61
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_filter_management.py +0 -478
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_issue_archiving.py +0 -181
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_issue_links.py +0 -257
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_issue_properties.py +0 -203
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_link_types.py +0 -426
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_parse_set.py +0 -37
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_permissions.py +0 -358
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_reindex.py +0 -81
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_remote_links.py +0 -292
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_security_schemes.py +0 -218
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_transitions_changelog.py +0 -121
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_user_management.py +0 -283
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_version_management.py +0 -561
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_watchers.py +0 -128
- package/skills/vds-skill/vds-scripts/jira_viettelmoney_orchestrator/tests/test_worklog.py +0 -265
- package/skills/vds-skill/vds-scripts/llms.txt +0 -159
- package/skills/vds-skill/vds-scripts/markdown_orchestrator/README.md +0 -72
- package/skills/vds-skill/vds-scripts/markdown_orchestrator/pyproject.toml +0 -39
- package/skills/vds-skill/vds-scripts/markdown_orchestrator/src/vds_markdown_orchestrator/__init__.py +0 -5
- package/skills/vds-skill/vds-scripts/markdown_orchestrator/src/vds_markdown_orchestrator/cli.py +0 -102
- package/skills/vds-skill/vds-scripts/mcp_server/Dockerfile +0 -63
- package/skills/vds-skill/vds-scripts/mcp_server/README.md +0 -140
- package/skills/vds-skill/vds-scripts/mcp_server/pyproject.toml +0 -41
- package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/__init__.py +0 -3
- package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/config.py +0 -36
- package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/server.py +0 -111
- package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/__init__.py +0 -15
- package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/bitbucket_tools.py +0 -47
- package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/confluence_tools.py +0 -53
- package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/git_tools.py +0 -71
- package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/jira_tools.py +0 -63
- package/skills/vds-skill/vds-scripts/mcp_server/src/vds_mcp_server/tools/vidp_tools.py +0 -64
- package/skills/vds-skill/vds-scripts/mcp_server/tests/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/mcp_server/tests/conftest.py +0 -31
- package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/test_bitbucket_tools.py +0 -28
- package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/test_confluence_tools.py +0 -28
- package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/test_git_tools.py +0 -35
- package/skills/vds-skill/vds-scripts/mcp_server/tests/unit/test_jira_tools.py +0 -35
- package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/__init__.py +0 -6
- package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/conftest.py +0 -51
- package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/test_mcp_confluence_tools.py +0 -40
- package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/test_mcp_jira_tools.py +0 -39
- package/skills/vds-skill/vds-scripts/mcp_server/tests/verification/test_mcp_tool_registration.py +0 -50
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/.dockerignore +0 -93
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/.env.example +0 -40
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/.ruff_rules.py +0 -350
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/.yamllint.yml +0 -43
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/DEVELOPMENT_PLAN.md +0 -80
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/Dockerfile +0 -87
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/README.md +0 -608
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/cli_verification_test/test.md +0 -6
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/cli_verification_test/test.pdf +0 -0
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/config/alertmanager.yml +0 -83
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/config/prometheus.prod.yml +0 -98
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/config/prometheus.yml +0 -40
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/config/redis.conf +0 -78
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/docs/COMPETITIVE_ANALYSIS_REPORT.md +0 -309
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/docs/FEATURES_GUIDE.md +0 -518
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/docs/MULTI_USER_DEPLOYMENT_GUIDE.md +0 -615
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/docs/USER_GUIDE.md +0 -829
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/pyproject.toml +0 -87
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/pytest.ini +0 -71
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/ruff.toml +0 -6
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/debug_security_report.py +0 -59
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/demo_library_selector.py +0 -109
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/generate_project_stats.py +0 -52
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/generate_styled_pdf.py +0 -95
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/migrate_render_pdfs.py +0 -285
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/setup_team.bat +0 -283
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/scripts/setup_team.sh +0 -324
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/src/vds_pdf_orchestrator/__init__.py +0 -5
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/src/vds_pdf_orchestrator/cli.py +0 -542
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/src/vds_pdf_orchestrator/config.py +0 -33
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/README.md +0 -650
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/conftest.py +0 -520
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/requirements.txt +0 -51
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/run_tests.py +0 -659
- package/skills/vds-skill/vds-scripts/pdf_orchestrator/tests/test_config.py +0 -36
- package/skills/vds-skill/vds-scripts/platform_core/pyproject.toml +0 -49
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/__init__.py +0 -16
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/alembic/__init__.py +0 -18
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/alembic/runtime.py +0 -139
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/config.py +0 -88
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/credentials.py +0 -40
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/env.py +0 -24
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/errors.py +0 -127
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/__init__.py +0 -18
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/auth.py +0 -32
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/errors.py +0 -47
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/pagination.py +0 -65
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/retry.py +0 -62
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/http/stack.py +0 -61
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/logging.py +0 -132
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/protocols.py +0 -77
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/serialization.py +0 -80
- package/skills/vds-skill/vds-scripts/platform_core/src/vds_platform_core/severity.py +0 -175
- package/skills/vds-skill/vds-scripts/platform_core/tests/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/platform_core/tests/conftest.py +0 -1
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_alembic_runtime.py +0 -300
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_auth.py +0 -84
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_config.py +0 -83
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_credentials.py +0 -73
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_env.py +0 -56
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_errors.py +0 -201
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_errors_http.py +0 -74
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_http_settings.py +0 -116
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_logging.py +0 -148
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_pagination.py +0 -153
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_protocols.py +0 -132
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_retry.py +0 -151
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_serialization.py +0 -92
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_severity.py +0 -178
- package/skills/vds-skill/vds-scripts/platform_core/tests/test_stack.py +0 -130
- package/skills/vds-skill/vds-scripts/platform_core/uv.lock +0 -341
- package/skills/vds-skill/vds-scripts/pyproject.toml +0 -145
- package/skills/vds-skill/vds-scripts/pyrightconfig.json +0 -82
- package/skills/vds-skill/vds-scripts/repo-manifest.yaml +0 -380
- package/skills/vds-skill/vds-scripts/repo-manifest.yaml.example +0 -25
- package/skills/vds-skill/vds-scripts/ruff.toml +0 -100
- package/skills/vds-skill/vds-scripts/scripts/BRD-Validation-API.postman_collection.json +0 -706
- package/skills/vds-skill/vds-scripts/scripts/BRD-Validation-README.md +0 -308
- package/skills/vds-skill/vds-scripts/scripts/README.md +0 -271
- package/skills/vds-skill/vds-scripts/scripts/_validate_alias_phase2.py +0 -137
- package/skills/vds-skill/vds-scripts/scripts/audit-cli-patterns.sh +0 -135
- package/skills/vds-skill/vds-scripts/scripts/audit-dashboard.sh +0 -525
- package/skills/vds-skill/vds-scripts/scripts/backup.sh +0 -123
- package/skills/vds-skill/vds-scripts/scripts/bootstrap_uv.sh +0 -69
- package/skills/vds-skill/vds-scripts/scripts/brd-validation-environment.json +0 -51
- package/skills/vds-skill/vds-scripts/scripts/brd-validation-test-results.json +0 -13023
- package/skills/vds-skill/vds-scripts/scripts/brd_coverage_report.json +0 -276
- package/skills/vds-skill/vds-scripts/scripts/check-future-annotations.py +0 -22
- package/skills/vds-skill/vds-scripts/scripts/check-invalid-symlinks.py +0 -183
- package/skills/vds-skill/vds-scripts/scripts/check-no-debug-markers.py +0 -21
- package/skills/vds-skill/vds-scripts/scripts/check-no-unittest.py +0 -21
- package/skills/vds-skill/vds-scripts/scripts/ci/assert_no_openspace_commits.sh +0 -37
- package/skills/vds-skill/vds-scripts/scripts/ci/verify_branch_protection.sh +0 -64
- package/skills/vds-skill/vds-scripts/scripts/closure/phase1_check.sh +0 -483
- package/skills/vds-skill/vds-scripts/scripts/closure/phase2_check.sh +0 -500
- package/skills/vds-skill/vds-scripts/scripts/create_memory_session.py +0 -36
- package/skills/vds-skill/vds-scripts/scripts/deploy-bootstrap.sh +0 -201
- package/skills/vds-skill/vds-scripts/scripts/deployment/load_docker_images_offline.sh +0 -90
- package/skills/vds-skill/vds-scripts/scripts/dev/cli_smoke.sh +0 -259
- package/skills/vds-skill/vds-scripts/scripts/final_completion_report.md +0 -139
- package/skills/vds-skill/vds-scripts/scripts/folder_structure_report.json +0 -321
- package/skills/vds-skill/vds-scripts/scripts/generate_completion_report.py +0 -132
- package/skills/vds-skill/vds-scripts/scripts/generate_intellij_modules.py +0 -154
- package/skills/vds-skill/vds-scripts/scripts/init-pgbouncer-userlist.sh +0 -154
- package/skills/vds-skill/vds-scripts/scripts/link_integrity_report.json +0 -807
- package/skills/vds-skill/vds-scripts/scripts/move_audit_artifact_pages.py +0 -252
- package/skills/vds-skill/vds-scripts/scripts/move_audit_artifact_pages_rest.py +0 -165
- package/skills/vds-skill/vds-scripts/scripts/move_wrong_dept_pages.py +0 -235
- package/skills/vds-skill/vds-scripts/scripts/openspace_bootstrap.sh +0 -56
- package/skills/vds-skill/vds-scripts/scripts/openspace_common.sh +0 -75
- package/skills/vds-skill/vds-scripts/scripts/openspace_doctor.sh +0 -61
- package/skills/vds-skill/vds-scripts/scripts/openspace_sync_shadow.sh +0 -65
- package/skills/vds-skill/vds-scripts/scripts/phase7-baseline.sh +0 -77
- package/skills/vds-skill/vds-scripts/scripts/preflight/env_check.sh +0 -102
- package/skills/vds-skill/vds-scripts/scripts/repair_autopay_reports.sh +0 -173
- package/skills/vds-skill/vds-scripts/scripts/rollback_drill.sh +0 -659
- package/skills/vds-skill/vds-scripts/scripts/run-audit-in-tmux.sh +0 -286
- package/skills/vds-skill/vds-scripts/scripts/run-department-audit.sh +0 -495
- package/skills/vds-skill/vds-scripts/scripts/run-project-audit.sh +0 -267
- package/skills/vds-skill/vds-scripts/scripts/save_intellij_memories.py +0 -112
- package/skills/vds-skill/vds-scripts/scripts/save_memories_to_vds_ai.py +0 -81
- package/skills/vds-skill/vds-scripts/scripts/save_memories_vds_style.py +0 -133
- package/skills/vds-skill/vds-scripts/scripts/search_intellij_memories.py +0 -48
- package/skills/vds-skill/vds-scripts/scripts/setup_intellij_workspace.py +0 -71
- package/skills/vds-skill/vds-scripts/scripts/smoke-test-deploy.sh +0 -137
- package/skills/vds-skill/vds-scripts/scripts/smoke_deploy_lib.py +0 -205
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/README.md +0 -89
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/confluence_sync_coordinator.sh +0 -27
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/coordination.sh +0 -114
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/diagram_coordinator.sh +0 -25
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/docs_root.sh +0 -22
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/generate_diagrams.sh +0 -22
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/markdown_coordinator.sh +0 -25
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/progress_dashboard.sh +0 -17
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/schema_coordinator.sh +0 -25
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/sync_confluence.sh +0 -30
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/update_dependencies.sh +0 -19
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/validate_links.sh +0 -86
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/validate_markdown.sh +0 -52
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/validate_schemas.sh +0 -26
- package/skills/vds-skill/vds-scripts/scripts/target-state-automation/validate_structure.sh +0 -98
- package/skills/vds-skill/vds-scripts/scripts/tests/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/scripts/tests/test_dockerfile_correctness.py +0 -815
- package/skills/vds-skill/vds-scripts/scripts/tests/test_makefile_loadouts.py +0 -560
- package/skills/vds-skill/vds-scripts/scripts/tests/test_smoke_deploy.py +0 -313
- package/skills/vds-skill/vds-scripts/scripts/tests/test_verify_alembic.py +0 -581
- package/skills/vds-skill/vds-scripts/scripts/tests/test_verify_infra_topology.py +0 -254
- package/skills/vds-skill/vds-scripts/scripts/update_modules_xml.py +0 -194
- package/skills/vds-skill/vds-scripts/scripts/uv-workspace-alignment-verification-2026-03-25.md +0 -128
- package/skills/vds-skill/vds-scripts/scripts/uv-workspace-alignment-verification-2026-04-18.md +0 -100
- package/skills/vds-skill/vds-scripts/scripts/validate-cli-standardization.sh +0 -188
- package/skills/vds-skill/vds-scripts/scripts/validate_brd_coverage.py +0 -197
- package/skills/vds-skill/vds-scripts/scripts/validate_folder_structure.py +0 -234
- package/skills/vds-skill/vds-scripts/scripts/validate_link_integrity.py +0 -274
- package/skills/vds-skill/vds-scripts/scripts/vami017-caller-compat-report.md +0 -62
- package/skills/vds-skill/vds-scripts/scripts/vami017-phase-b-scaffold-notes.md +0 -79
- package/skills/vds-skill/vds-scripts/scripts/vds_sh_helpers.sh +0 -180
- package/skills/vds-skill/vds-scripts/scripts/verification/phase2_portable_paths_ubuntu_docker.sh +0 -26
- package/skills/vds-skill/vds-scripts/scripts/verify-infra-topology.py +0 -868
- package/skills/vds-skill/vds-scripts/scripts/verify-memory-cli-e2e.sh +0 -598
- package/skills/vds-skill/vds-scripts/scripts/verify-worktree-features.sh +0 -306
- package/skills/vds-skill/vds-scripts/scripts/worktree-add.sh +0 -128
- package/skills/vds-skill/vds-scripts/scripts/worktree-remove.sh +0 -112
- package/skills/vds-skill/vds-scripts/scripts/worktree_compose.sh +0 -269
- package/skills/vds-skill/vds-scripts/scripts/worktree_uv.sh +0 -77
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/IMPLEMENTATION_AUDIT.md +0 -376
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/README.md +0 -507
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/pyproject.toml +0 -106
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/scripts/ensure_symlink.sh +0 -38
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/__init__.py +0 -164
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/batch.py +0 -212
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/cli.py +0 -1407
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/client.py +0 -608
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/config.py +0 -260
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/diff.py +0 -220
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/errors.py +0 -34
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/external_sca.py +0 -932
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/portfolio.py +0 -225
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/pr.py +0 -505
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/reports.py +0 -342
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/scanner.py +0 -351
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/webhooks.py +0 -269
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/conftest.py +0 -134
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_batch.py +0 -419
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_config.py +0 -145
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_errors.py +0 -78
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_external_sca.py +0 -466
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_pr.py +0 -471
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_reports.py +0 -511
- package/skills/vds-skill/vds-scripts/sonarqube_orchestrator/tests/test_webhooks.py +0 -660
- package/skills/vds-skill/vds-scripts/uv.lock +0 -5046
- package/skills/vds-skill/vds-scripts/vds_agent_core/CHANGELOG.md +0 -36
- package/skills/vds-skill/vds-scripts/vds_agent_core/README.md +0 -453
- package/skills/vds-skill/vds-scripts/vds_agent_core/docs/PHASE9A_ASSESSMENT.md +0 -50
- package/skills/vds-skill/vds-scripts/vds_agent_core/docs/embedding.md +0 -468
- package/skills/vds-skill/vds-scripts/vds_agent_core/pyproject.toml +0 -51
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/__init__.py +0 -29
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/agents/__init__.py +0 -26
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/agents/hooks.py +0 -119
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/agents/loop.py +0 -864
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/agents/tools.py +0 -41
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/config.py +0 -252
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/__init__.py +0 -55
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/_cascade.py +0 -143
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/budget.py +0 -353
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/cache.py +0 -373
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/embedding.py +0 -815
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/provider.py +0 -173
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/llm/schemas.py +0 -45
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/observability/__init__.py +0 -77
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/observability/decorators.py +0 -258
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/observability/jsonl_exporter.py +0 -236
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/observability/tracer.py +0 -497
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/profiles.py +0 -2015
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/runtime/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/runtime/agent_id.py +0 -60
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/security/__init__.py +0 -13
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/security/credentials.py +0 -106
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/skills/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/skills/executor.py +0 -238
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/skills/manager.py +0 -381
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/skills/policy.py +0 -568
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/workflows/__init__.py +0 -19
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/workflows/langgraph_runner.py +0 -102
- package/skills/vds-skill/vds-scripts/vds_agent_core/src/vds_agent_core/workflows/protocols.py +0 -81
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/conftest.py +0 -62
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/integration/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/integration/test_audit_loop_hooks_integration.py +0 -135
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/integration/test_audit_observability_integration.py +0 -246
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/integration/test_public_api_stability.py +0 -91
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_call_site_parallelism.py +0 -30
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_dimension_guardrail.py +0 -25
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_drop_in_provider_extensibility.py +0 -76
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding.py +0 -393
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding_cache.py +0 -302
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding_extra.py +0 -696
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding_subclass.py +0 -49
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_no_provider_leakage_in_env.py +0 -34
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_provider_auto_route.py +0 -48
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_runtime_log_clean.py +0 -111
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/llm/test_w7_logic_fixes.py +0 -219
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_embedding_block_parser.py +0 -194
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_env_resolver_allowlist.py +0 -141
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_profile_authorization.py +0 -158
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_profiles_w3_extra.py +0 -547
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/profiles/test_real_audit_profile_compat.py +0 -129
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/runtime/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/runtime/test_for_agent.py +0 -322
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/runtime/test_w9_cascade_edges.py +0 -369
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/security/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/security/test_credentials.py +0 -132
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_agent_loop.py +0 -663
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_agent_loop_coverage.py +0 -429
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_agents_hooks_defaults.py +0 -22
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_budget.py +0 -155
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_budget_coverage.py +0 -264
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_budget_tracking_only.py +0 -71
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_cache.py +0 -251
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_cache_context.py +0 -62
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_config.py +0 -155
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_langgraph_runner.py +0 -45
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_langgraph_runner_coverage.py +0 -98
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_llm_cache_deep.py +0 -113
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_decorators.py +0 -697
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_hooks.py +0 -217
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_jsonl_exporter.py +0 -542
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_jsonl_wiring.py +0 -313
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_observability_tracer.py +0 -896
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_profiles.py +0 -1571
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_profiles_coverage.py +0 -444
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_provider.py +0 -316
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_schemas.py +0 -63
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_executor.py +0 -297
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_manager.py +0 -370
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_manager_coverage.py +0 -364
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_policy.py +0 -402
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_skill_rubric.py +0 -47
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_tools.py +0 -51
- package/skills/vds-skill/vds-scripts/vds_agent_core/tests/unit/test_workflow_protocols.py +0 -136
- package/skills/vds-skill/vds-scripts/vds_cli/README.md +0 -201
- package/skills/vds-skill/vds-scripts/vds_cli/VERIFICATION_REPORT.md +0 -41
- package/skills/vds-skill/vds-scripts/vds_cli/pyproject.toml +0 -50
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/__init__.py +0 -3
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/assets/git-credential-helper.py +0 -235
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/cli.py +0 -1158
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/commands/__init__.py +0 -1
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/commands/lint_cli.py +0 -389
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/confluence_sync.py +0 -846
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/consumption/__init__.py +0 -7
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/consumption/funnel.py +0 -105
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/consumption/scanner.py +0 -211
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/freshness/report.py +0 -90
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs/types.py +0 -27
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs_cmd.py +0 -672
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs_metrics.py +0 -75
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/docs_sync.py +0 -1171
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/ecosystem/__init__.py +0 -39
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/ecosystem/report.py +0 -439
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/ecosystem_docs.py +0 -164
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/env.py +0 -111
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/env_git_helper.py +0 -281
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/__init__.py +0 -3
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/google_sheets_orchestrator.py +0 -173
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/router.py +0 -232
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/skills_cmd.py +0 -274
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/sync_api.py +0 -613
- package/skills/vds-skill/vds-scripts/vds_cli/src/vds_cli/sync_service.py +0 -283
- package/skills/vds-skill/vds-scripts/vds_cli/tests/conftest.py +0 -62
- package/skills/vds-skill/vds-scripts/vds_cli/tests/test_env_git_helper_lifecycle.py +0 -261
- package/skills/vds-skill/vds-scripts/vds_cli/tests/test_git_credential_helper.py +0 -240
- package/skills/vds-skill/vds-scripts/vds_cli/tests/test_router_help_proxy.py +0 -43
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_cli.py +0 -264
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_cli_DOC004.py +0 -110
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_confluence_sync.py +0 -315
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_confluence_sync_wave7.py +0 -375
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_consumption_funnel.py +0 -106
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_consumption_scanner.py +0 -144
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_cmd.py +0 -89
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_cmd_wave8.py +0 -161
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_metrics.py +0 -16
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_quality_score.py +0 -61
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_docs_sync.py +0 -417
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_ecosystem_cli_dashboard.py +0 -667
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_ecosystem_cli_dashboard_rendering.py +0 -143
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_ecosystem_docs.py +0 -63
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_env.py +0 -85
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_freshness_report.py +0 -125
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_lint_cli.py +0 -224
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_router.py +0 -101
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_skills_cmd.py +0 -419
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_sync_api.py +0 -357
- package/skills/vds-skill/vds-scripts/vds_cli/tests/unit/test_sync_service.py +0 -170
- package/skills/vds-skill/vds-scripts/vds_cli/tests/verification/conftest.py +0 -51
- package/skills/vds-skill/vds-scripts/vds_cli/tests/verification/test_bitbucket_real.py +0 -32
- package/skills/vds-skill/vds-scripts/vds_cli/tests/verification/test_confluence_real.py +0 -32
- package/skills/vds-skill/vds-scripts/vds_cli/tests/verification/test_jira_real.py +0 -40
- package/skills/vds-skill/vds-scripts/vds_cli_common/README.md +0 -190
- package/skills/vds-skill/vds-scripts/vds_cli_common/pyproject.toml +0 -96
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/__init__.py +0 -36
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/app.py +0 -55
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/completers.py +0 -139
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/context.py +0 -201
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/env.py +0 -163
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/errors.py +0 -440
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/migrate_sdlc_config.py +0 -210
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/output.py +0 -284
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/paths.py +0 -78
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/testing.py +0 -211
- package/skills/vds-skill/vds-scripts/vds_cli_common/src/vds_cli_common/version.py +0 -85
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/__init__.py +0 -0
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_app.py +0 -126
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_completers.py +0 -148
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_context.py +0 -192
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_env.py +0 -235
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_errors.py +0 -275
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_migrate_sdlc_config.py +0 -257
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_output.py +0 -229
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_paths.py +0 -61
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_testing.py +0 -138
- package/skills/vds-skill/vds-scripts/vds_cli_common/tests/test_version.py +0 -64
- package/skills/vds-skill/vds-scripts/vidp_orchestrator/README.md +0 -31
- package/skills/vds-skill/vds-scripts/vidp_orchestrator/pyproject.toml +0 -50
- package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/__init__.py +0 -26
- package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/cli.py +0 -246
- package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/client.py +0 -104
- package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/config.py +0 -82
- package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/workflows.json +0 -3
- package/skills/vds-skill/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/workflows.py +0 -130
- package/skills/vds-skill/vds-scripts-skill/.openskills.json +0 -6
- package/skills/vds-skill/vds-scripts-skill/QUALITY.md +0 -44
- package/skills/vds-skill/vds-scripts-skill/SKILL.md +0 -132
- package/skills/vds-skill/vds-scripts-skill/references/audit-commands.md +0 -171
- package/skills/vds-skill/vds-scripts-skill/references/capability-index.md +0 -34
- package/skills/vds-skill/vds-scripts-skill/references/development-commands.md +0 -12
- package/skills/vds-skill/vds-scripts-skill/references/google-sheets.md +0 -71
- package/skills/vds-skill/vds-scripts-skill/references/integration-commands.md +0 -17
- package/skills/vds-skill/vds-scripts-skill/references/platform-bootstrap.md +0 -31
- package/skills/vds-skill/vds-scripts-skill/references/specialist-routing.md +0 -14
- package/skills/vds-skill/vds-scripts-skill/references/validation-commands.md +0 -15
|
@@ -1,896 +0,0 @@
|
|
|
1
|
-
"""TDD tests for vds_agent_core.observability.tracer — AgentTracer.
|
|
2
|
-
|
|
3
|
-
These tests define the expected API for the observability tracer module.
|
|
4
|
-
The implementation does NOT exist yet (RED phase).
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from __future__ import annotations
|
|
8
|
-
|
|
9
|
-
from typing import Any
|
|
10
|
-
from unittest.mock import MagicMock, patch
|
|
11
|
-
|
|
12
|
-
import pytest
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class TestAgentTracerInstantiation:
|
|
16
|
-
"""AgentTracer initialization with service_name and enabled flag."""
|
|
17
|
-
|
|
18
|
-
def test_requires_service_name(self) -> None:
|
|
19
|
-
"""AgentTracer must be initialized with a service_name."""
|
|
20
|
-
from vds_agent_core.observability import AgentTracer
|
|
21
|
-
|
|
22
|
-
tracer = AgentTracer(service_name="test-service")
|
|
23
|
-
assert tracer.service_name == "test-service"
|
|
24
|
-
|
|
25
|
-
def test_enabled_true_by_default(self) -> None:
|
|
26
|
-
"""Tracer is enabled by default."""
|
|
27
|
-
from vds_agent_core.observability import AgentTracer
|
|
28
|
-
|
|
29
|
-
tracer = AgentTracer(service_name="test-service")
|
|
30
|
-
assert tracer.enabled is True
|
|
31
|
-
|
|
32
|
-
def test_can_disable_tracer(self) -> None:
|
|
33
|
-
"""Tracer can be explicitly disabled."""
|
|
34
|
-
from vds_agent_core.observability import AgentTracer
|
|
35
|
-
|
|
36
|
-
tracer = AgentTracer(service_name="test-service", enabled=False)
|
|
37
|
-
assert tracer.enabled is False
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class TestAgentTracerDisabledMode:
|
|
41
|
-
"""When enabled=False, all operations are no-ops."""
|
|
42
|
-
|
|
43
|
-
def test_trace_loop_is_noop_when_disabled(self) -> None:
|
|
44
|
-
"""trace_loop context manager does nothing when disabled."""
|
|
45
|
-
from vds_agent_core.observability import AgentTracer
|
|
46
|
-
|
|
47
|
-
tracer = AgentTracer(service_name="test-service", enabled=False)
|
|
48
|
-
|
|
49
|
-
# Should not raise, should not create any span
|
|
50
|
-
with tracer.trace_loop(loop_id="loop-1", config=MagicMock()):
|
|
51
|
-
pass # No error
|
|
52
|
-
|
|
53
|
-
def test_trace_tool_call_is_noop_when_disabled(self) -> None:
|
|
54
|
-
"""trace_tool_call does nothing when disabled."""
|
|
55
|
-
from vds_agent_core.observability import AgentTracer
|
|
56
|
-
|
|
57
|
-
tracer = AgentTracer(service_name="test-service", enabled=False)
|
|
58
|
-
|
|
59
|
-
with tracer.trace_tool_call(tool_name="search", payload={"q": "test"}):
|
|
60
|
-
pass # No error
|
|
61
|
-
|
|
62
|
-
def test_trace_llm_call_is_noop_when_disabled(self) -> None:
|
|
63
|
-
"""trace_llm_call does nothing when disabled."""
|
|
64
|
-
from vds_agent_core.observability import AgentTracer
|
|
65
|
-
|
|
66
|
-
tracer = AgentTracer(service_name="test-service", enabled=False)
|
|
67
|
-
|
|
68
|
-
with tracer.trace_llm_call(model="claude-3-5", messages=[{"role": "user", "content": "hi"}]):
|
|
69
|
-
pass # No error
|
|
70
|
-
|
|
71
|
-
def test_record_token_usage_is_noop_when_disabled(self) -> None:
|
|
72
|
-
"""record_token_usage does nothing when disabled."""
|
|
73
|
-
from vds_agent_core.observability import AgentTracer
|
|
74
|
-
|
|
75
|
-
tracer = AgentTracer(service_name="test-service", enabled=False)
|
|
76
|
-
tracer.record_token_usage(prompt=100, completion=50) # No error
|
|
77
|
-
|
|
78
|
-
def test_record_budget_event_is_noop_when_disabled(self) -> None:
|
|
79
|
-
"""record_budget_event does nothing when disabled."""
|
|
80
|
-
from vds_agent_core.observability import AgentTracer
|
|
81
|
-
|
|
82
|
-
tracer = AgentTracer(service_name="test-service", enabled=False)
|
|
83
|
-
|
|
84
|
-
# Create a mock BudgetEvent
|
|
85
|
-
mock_event = MagicMock()
|
|
86
|
-
tracer.record_budget_event(mock_event) # No error
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
class TestTraceLoop:
|
|
90
|
-
"""trace_loop context manager for agent loop spans."""
|
|
91
|
-
|
|
92
|
-
def test_creates_span_with_loop_id(self) -> None:
|
|
93
|
-
"""trace_loop creates a span with loop_id attribute."""
|
|
94
|
-
from vds_agent_core.observability import AgentTracer
|
|
95
|
-
|
|
96
|
-
tracer = AgentTracer(service_name="test-service")
|
|
97
|
-
|
|
98
|
-
mock_config = MagicMock()
|
|
99
|
-
mock_config.max_steps = 10
|
|
100
|
-
mock_config.budget_units = 100
|
|
101
|
-
|
|
102
|
-
with tracer.trace_loop(loop_id="loop-123", config=mock_config) as span:
|
|
103
|
-
assert span is not None
|
|
104
|
-
assert hasattr(span, "set_attribute")
|
|
105
|
-
assert hasattr(span, "end")
|
|
106
|
-
|
|
107
|
-
def test_loop_span_has_service_name_attribute(self) -> None:
|
|
108
|
-
"""Loop span includes service.name semantic convention."""
|
|
109
|
-
from vds_agent_core.observability import AgentTracer
|
|
110
|
-
|
|
111
|
-
tracer = AgentTracer(service_name="my-audit-service")
|
|
112
|
-
|
|
113
|
-
with tracer.trace_loop(loop_id="loop-1", config=MagicMock()) as span:
|
|
114
|
-
# Should have set service.name attribute
|
|
115
|
-
assert span is not None
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
class TestTraceToolCall:
|
|
119
|
-
"""trace_tool_call context manager for tool execution spans."""
|
|
120
|
-
|
|
121
|
-
def test_creates_span_with_tool_name(self) -> None:
|
|
122
|
-
"""trace_tool_call creates a span with tool_name attribute."""
|
|
123
|
-
from vds_agent_core.observability import AgentTracer
|
|
124
|
-
|
|
125
|
-
tracer = AgentTracer(service_name="test-service")
|
|
126
|
-
|
|
127
|
-
with tracer.trace_tool_call(tool_name="search_code", payload={"q": "auth"}) as span:
|
|
128
|
-
assert span is not None
|
|
129
|
-
|
|
130
|
-
def test_records_payload_in_span(self) -> None:
|
|
131
|
-
"""Tool call payload is recorded as span attribute."""
|
|
132
|
-
from vds_agent_core.observability import AgentTracer
|
|
133
|
-
|
|
134
|
-
tracer = AgentTracer(service_name="test-service")
|
|
135
|
-
|
|
136
|
-
payload = {"query": "test", "limit": 5}
|
|
137
|
-
|
|
138
|
-
with tracer.trace_tool_call(tool_name="search", payload=payload) as span:
|
|
139
|
-
assert span is not None
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
class TestTraceLlmCall:
|
|
143
|
-
"""trace_llm_call context manager for LLM interaction spans."""
|
|
144
|
-
|
|
145
|
-
def test_creates_span_with_model(self) -> None:
|
|
146
|
-
"""trace_llm_call creates a span with model attribute."""
|
|
147
|
-
from vds_agent_core.observability import AgentTracer
|
|
148
|
-
|
|
149
|
-
tracer = AgentTracer(service_name="test-service")
|
|
150
|
-
|
|
151
|
-
messages = [{"role": "system", "content": "You are helpful"}]
|
|
152
|
-
|
|
153
|
-
with tracer.trace_llm_call(model="claude-3-5-sonnet", messages=messages) as span:
|
|
154
|
-
assert span is not None
|
|
155
|
-
|
|
156
|
-
def test_records_message_count(self) -> None:
|
|
157
|
-
"""LLM call span includes message count."""
|
|
158
|
-
from vds_agent_core.observability import AgentTracer
|
|
159
|
-
|
|
160
|
-
tracer = AgentTracer(service_name="test-service")
|
|
161
|
-
|
|
162
|
-
messages = [
|
|
163
|
-
{"role": "system", "content": "sys"},
|
|
164
|
-
{"role": "user", "content": "hi"},
|
|
165
|
-
]
|
|
166
|
-
|
|
167
|
-
with tracer.trace_llm_call(model="claude-3-5", messages=messages) as span:
|
|
168
|
-
assert span is not None
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
class TestRecordTokenUsage:
|
|
172
|
-
"""Token usage recording."""
|
|
173
|
-
|
|
174
|
-
def test_records_prompt_and_completion_tokens(self) -> None:
|
|
175
|
-
"""record_token_usage accepts prompt and completion counts."""
|
|
176
|
-
from vds_agent_core.observability import AgentTracer
|
|
177
|
-
|
|
178
|
-
tracer = AgentTracer(service_name="test-service")
|
|
179
|
-
|
|
180
|
-
# Should not raise
|
|
181
|
-
tracer.record_token_usage(prompt=500, completion=250)
|
|
182
|
-
|
|
183
|
-
def test_token_usage_accumulates(self) -> None:
|
|
184
|
-
"""Multiple calls accumulate token counts."""
|
|
185
|
-
from vds_agent_core.observability import AgentTracer
|
|
186
|
-
|
|
187
|
-
tracer = AgentTracer(service_name="test-service")
|
|
188
|
-
|
|
189
|
-
tracer.record_token_usage(prompt=100, completion=50)
|
|
190
|
-
tracer.record_token_usage(prompt=200, completion=100)
|
|
191
|
-
|
|
192
|
-
# The tracer should track total tokens (implementation detail)
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
class TestRecordBudgetEvent:
|
|
196
|
-
"""Budget event recording."""
|
|
197
|
-
|
|
198
|
-
def test_accepts_budget_event(self) -> None:
|
|
199
|
-
"""record_budget_event accepts BudgetEvent objects."""
|
|
200
|
-
from vds_agent_core.observability import AgentTracer
|
|
201
|
-
from vds_agent_core.observability.tracer import BudgetEvent, BudgetEventType
|
|
202
|
-
|
|
203
|
-
tracer = AgentTracer(service_name="test-service")
|
|
204
|
-
|
|
205
|
-
event = BudgetEvent(
|
|
206
|
-
event_type=BudgetEventType.PROMPT_TOKEN_SPENT,
|
|
207
|
-
prompt_tokens=100,
|
|
208
|
-
completion_tokens=50,
|
|
209
|
-
)
|
|
210
|
-
|
|
211
|
-
# Should not raise
|
|
212
|
-
tracer.record_budget_event(event)
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
class TestBudgetEventTypes:
|
|
216
|
-
"""BudgetEvent and BudgetEventType definitions."""
|
|
217
|
-
|
|
218
|
-
def test_budget_event_type_members(self) -> None:
|
|
219
|
-
"""BudgetEventType has expected enum members."""
|
|
220
|
-
from vds_agent_core.observability.tracer import BudgetEventType
|
|
221
|
-
|
|
222
|
-
assert BudgetEventType.PROMPT_TOKEN_SPENT == "prompt_token_spent"
|
|
223
|
-
assert BudgetEventType.COMPLETION_TOKEN_SPENT == "completion_token_spent"
|
|
224
|
-
assert BudgetEventType.BUDGET_WARNING == "budget_warning"
|
|
225
|
-
assert BudgetEventType.BUDGET_EXCEEDED == "budget_exceeded"
|
|
226
|
-
assert BudgetEventType.BUDGET_OK == "budget_ok"
|
|
227
|
-
|
|
228
|
-
def test_budget_event_named_tuple(self) -> None:
|
|
229
|
-
"""BudgetEvent is a proper NamedTuple."""
|
|
230
|
-
from vds_agent_core.observability.tracer import BudgetEvent, BudgetEventType
|
|
231
|
-
|
|
232
|
-
event = BudgetEvent(
|
|
233
|
-
event_type=BudgetEventType.PROMPT_TOKEN_SPENT,
|
|
234
|
-
prompt_tokens=100,
|
|
235
|
-
completion_tokens=50,
|
|
236
|
-
budget_limit=1000,
|
|
237
|
-
session_id="sess-123",
|
|
238
|
-
)
|
|
239
|
-
|
|
240
|
-
assert event.event_type == BudgetEventType.PROMPT_TOKEN_SPENT
|
|
241
|
-
assert event.prompt_tokens == 100
|
|
242
|
-
assert event.completion_tokens == 50
|
|
243
|
-
assert event.budget_limit == 1000
|
|
244
|
-
assert event.session_id == "sess-123"
|
|
245
|
-
|
|
246
|
-
def test_budget_event_defaults(self) -> None:
|
|
247
|
-
"""BudgetEvent has sensible defaults."""
|
|
248
|
-
from vds_agent_core.observability.tracer import BudgetEvent, BudgetEventType
|
|
249
|
-
|
|
250
|
-
event = BudgetEvent(event_type=BudgetEventType.BUDGET_OK)
|
|
251
|
-
|
|
252
|
-
assert event.prompt_tokens == 0
|
|
253
|
-
assert event.completion_tokens == 0
|
|
254
|
-
assert event.budget_limit is None
|
|
255
|
-
assert event.session_id is None
|
|
256
|
-
assert event.timestamp is None
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
class TestTokenUsageType:
|
|
260
|
-
"""TokenUsage type for LLM token accounting."""
|
|
261
|
-
|
|
262
|
-
def test_token_usage_named_tuple(self) -> None:
|
|
263
|
-
"""TokenUsage is a proper NamedTuple."""
|
|
264
|
-
from vds_agent_core.observability.tracer import TokenUsage
|
|
265
|
-
|
|
266
|
-
usage = TokenUsage(
|
|
267
|
-
model="claude-3-5-sonnet",
|
|
268
|
-
prompt_tokens=500,
|
|
269
|
-
completion_tokens=250,
|
|
270
|
-
total_tokens=750,
|
|
271
|
-
cost_usd=0.01,
|
|
272
|
-
)
|
|
273
|
-
|
|
274
|
-
assert usage.model == "claude-3-5-sonnet"
|
|
275
|
-
assert usage.prompt_tokens == 500
|
|
276
|
-
assert usage.completion_tokens == 250
|
|
277
|
-
assert usage.total_tokens == 750
|
|
278
|
-
assert usage.cost_usd == 0.01
|
|
279
|
-
|
|
280
|
-
def test_token_usage_optional_cost(self) -> None:
|
|
281
|
-
"""TokenUsage cost_usd is optional."""
|
|
282
|
-
from vds_agent_core.observability.tracer import TokenUsage
|
|
283
|
-
|
|
284
|
-
usage = TokenUsage(
|
|
285
|
-
model="claude-3-5-sonnet",
|
|
286
|
-
prompt_tokens=500,
|
|
287
|
-
completion_tokens=250,
|
|
288
|
-
total_tokens=750,
|
|
289
|
-
)
|
|
290
|
-
|
|
291
|
-
assert usage.cost_usd is None
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
class TestTraceSpanType:
|
|
295
|
-
"""TraceSpanType enum for semantic conventions."""
|
|
296
|
-
|
|
297
|
-
def test_span_type_members(self) -> None:
|
|
298
|
-
"""TraceSpanType has expected enum members."""
|
|
299
|
-
from vds_agent_core.observability.tracer import TraceSpanType
|
|
300
|
-
|
|
301
|
-
assert TraceSpanType.LLM_CALL == "llm_call"
|
|
302
|
-
assert TraceSpanType.TOOL_CALL == "tool_call"
|
|
303
|
-
assert TraceSpanType.DECISION == "decision"
|
|
304
|
-
assert TraceSpanType.VECTOR_SEARCH == "vector_search"
|
|
305
|
-
assert TraceSpanType.LOOP_ITERATION == "loop_iteration"
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
class TestTracerImportErrorFallback:
|
|
309
|
-
"""When opentelemetry imports raise ImportError the tracer disables itself."""
|
|
310
|
-
|
|
311
|
-
def test_import_error_disables_tracing(self) -> None:
|
|
312
|
-
"""If opentelemetry import fails the tracer falls back to no-op."""
|
|
313
|
-
import builtins
|
|
314
|
-
|
|
315
|
-
from vds_agent_core.observability import AgentTracer
|
|
316
|
-
|
|
317
|
-
original_import = builtins.__import__
|
|
318
|
-
|
|
319
|
-
def fake_import(name: str, *args: Any, **kwargs: Any) -> Any:
|
|
320
|
-
if name.startswith("opentelemetry"):
|
|
321
|
-
raise ImportError("simulated missing opentelemetry")
|
|
322
|
-
return original_import(name, *args, **kwargs)
|
|
323
|
-
|
|
324
|
-
with patch("builtins.__import__", side_effect=fake_import):
|
|
325
|
-
tracer = AgentTracer(service_name="t")
|
|
326
|
-
|
|
327
|
-
assert tracer.is_enabled is False
|
|
328
|
-
assert tracer._tracer is None
|
|
329
|
-
# All trace context-managers should yield None when disabled
|
|
330
|
-
with tracer.trace_loop("loop-x") as span:
|
|
331
|
-
assert span is None
|
|
332
|
-
with tracer.trace_tool_call("tname") as span:
|
|
333
|
-
assert span is None
|
|
334
|
-
with tracer.trace_llm_call("model-x") as span:
|
|
335
|
-
assert span is None
|
|
336
|
-
assert tracer.get_trace_context() is None
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
class TestGetTraceContext:
|
|
340
|
-
"""get_trace_context() span-context extraction."""
|
|
341
|
-
|
|
342
|
-
def test_returns_none_when_disabled(self) -> None:
|
|
343
|
-
from vds_agent_core.observability import AgentTracer
|
|
344
|
-
|
|
345
|
-
tracer = AgentTracer(service_name="t", enabled=False)
|
|
346
|
-
assert tracer.get_trace_context() is None
|
|
347
|
-
|
|
348
|
-
def test_returns_none_when_no_active_span(self) -> None:
|
|
349
|
-
"""When no span is active OTel returns INVALID span; helper returns None."""
|
|
350
|
-
from vds_agent_core.observability import AgentTracer
|
|
351
|
-
|
|
352
|
-
tracer = AgentTracer(service_name="t")
|
|
353
|
-
# Outside any context manager — span context is invalid
|
|
354
|
-
ctx = tracer.get_trace_context()
|
|
355
|
-
# Either None (no active span) or None (invalid context)
|
|
356
|
-
assert ctx is None
|
|
357
|
-
|
|
358
|
-
def test_returns_dict_when_inside_active_span(self) -> None:
|
|
359
|
-
"""Inside a real span the helper returns trace_id/span_id/trace_flags."""
|
|
360
|
-
from vds_agent_core.observability import AgentTracer
|
|
361
|
-
|
|
362
|
-
tracer = AgentTracer(service_name="t")
|
|
363
|
-
if not tracer.is_enabled:
|
|
364
|
-
pytest.skip("OTel not enabled in this run")
|
|
365
|
-
with tracer.trace_loop("loop-ctx"):
|
|
366
|
-
ctx = tracer.get_trace_context()
|
|
367
|
-
assert ctx is not None
|
|
368
|
-
assert "trace_id" in ctx
|
|
369
|
-
assert "span_id" in ctx
|
|
370
|
-
assert "trace_flags" in ctx
|
|
371
|
-
assert len(ctx["trace_id"]) == 32
|
|
372
|
-
assert len(ctx["span_id"]) == 16
|
|
373
|
-
|
|
374
|
-
def test_returns_none_when_get_span_returns_none(self) -> None:
|
|
375
|
-
"""If trace.get_current_span returns None we return None."""
|
|
376
|
-
from vds_agent_core.observability import AgentTracer
|
|
377
|
-
|
|
378
|
-
tracer = AgentTracer(service_name="t")
|
|
379
|
-
if not tracer.is_enabled:
|
|
380
|
-
pytest.skip("OTel not enabled")
|
|
381
|
-
with patch("opentelemetry.trace.get_current_span", return_value=None):
|
|
382
|
-
assert tracer._otel_get_span_context() is None
|
|
383
|
-
|
|
384
|
-
def test_returns_none_when_span_context_invalid(self) -> None:
|
|
385
|
-
"""If the span context is None we return None."""
|
|
386
|
-
from vds_agent_core.observability import AgentTracer
|
|
387
|
-
|
|
388
|
-
tracer = AgentTracer(service_name="t")
|
|
389
|
-
if not tracer.is_enabled:
|
|
390
|
-
pytest.skip("OTel not enabled")
|
|
391
|
-
fake_span = MagicMock()
|
|
392
|
-
fake_span.get_span_context.return_value = None
|
|
393
|
-
with patch("opentelemetry.trace.get_current_span", return_value=fake_span):
|
|
394
|
-
assert tracer._otel_get_span_context() is None
|
|
395
|
-
|
|
396
|
-
def test_returns_none_when_span_context_not_valid_flag(self) -> None:
|
|
397
|
-
"""A span context with is_valid=False returns None."""
|
|
398
|
-
from vds_agent_core.observability import AgentTracer
|
|
399
|
-
|
|
400
|
-
tracer = AgentTracer(service_name="t")
|
|
401
|
-
if not tracer.is_enabled:
|
|
402
|
-
pytest.skip("OTel not enabled")
|
|
403
|
-
fake_span = MagicMock()
|
|
404
|
-
fake_sc = MagicMock()
|
|
405
|
-
fake_sc.is_valid = False
|
|
406
|
-
fake_span.get_span_context.return_value = fake_sc
|
|
407
|
-
with patch("opentelemetry.trace.get_current_span", return_value=fake_span):
|
|
408
|
-
assert tracer._otel_get_span_context() is None
|
|
409
|
-
|
|
410
|
-
def test_returns_none_when_internal_exception(self) -> None:
|
|
411
|
-
"""Any internal exception is swallowed; helper returns None."""
|
|
412
|
-
from vds_agent_core.observability import AgentTracer
|
|
413
|
-
|
|
414
|
-
tracer = AgentTracer(service_name="t")
|
|
415
|
-
if not tracer.is_enabled:
|
|
416
|
-
pytest.skip("OTel not enabled")
|
|
417
|
-
with patch("opentelemetry.trace.get_current_span", side_effect=RuntimeError("boom")):
|
|
418
|
-
assert tracer._otel_get_span_context() is None
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
class TestTraceLoopErrorPath:
|
|
422
|
-
"""trace_loop swallows errors when start_as_current_span raises."""
|
|
423
|
-
|
|
424
|
-
def test_loop_span_exception_yields_none(self) -> None:
|
|
425
|
-
"""If start_as_current_span raises, we log a warning and yield None."""
|
|
426
|
-
from vds_agent_core.observability import AgentTracer
|
|
427
|
-
|
|
428
|
-
tracer = AgentTracer(service_name="t")
|
|
429
|
-
if not tracer.is_enabled:
|
|
430
|
-
pytest.skip("OTel not enabled")
|
|
431
|
-
# Force the underlying tracer to explode
|
|
432
|
-
tracer._tracer = MagicMock()
|
|
433
|
-
tracer._tracer.start_as_current_span.side_effect = RuntimeError("nope")
|
|
434
|
-
with tracer.trace_loop("loop-err", config={"max_steps": 1}) as span:
|
|
435
|
-
assert span is None
|
|
436
|
-
|
|
437
|
-
def test_loop_span_with_timeout_attribute(self) -> None:
|
|
438
|
-
"""timeout_seconds in config is recorded as a span attribute."""
|
|
439
|
-
from vds_agent_core.observability import AgentTracer
|
|
440
|
-
|
|
441
|
-
tracer = AgentTracer(service_name="t")
|
|
442
|
-
if not tracer.is_enabled:
|
|
443
|
-
pytest.skip("OTel not enabled")
|
|
444
|
-
# Just exercising the attribute branch; success is no-raise
|
|
445
|
-
with tracer.trace_loop("loop-t", config={"timeout_seconds": 5}) as span:
|
|
446
|
-
assert span is not None
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
class TestTraceToolCallErrorPath:
|
|
450
|
-
"""trace_tool_call payload branches and error handling."""
|
|
451
|
-
|
|
452
|
-
def test_tool_call_with_path_attribute(self) -> None:
|
|
453
|
-
from vds_agent_core.observability import AgentTracer
|
|
454
|
-
|
|
455
|
-
tracer = AgentTracer(service_name="t")
|
|
456
|
-
if not tracer.is_enabled:
|
|
457
|
-
pytest.skip("OTel not enabled")
|
|
458
|
-
with tracer.trace_tool_call("read", payload={"path": "/etc/hosts"}) as span:
|
|
459
|
-
assert span is not None
|
|
460
|
-
|
|
461
|
-
def test_tool_call_exception_yields_none(self) -> None:
|
|
462
|
-
from vds_agent_core.observability import AgentTracer
|
|
463
|
-
|
|
464
|
-
tracer = AgentTracer(service_name="t")
|
|
465
|
-
if not tracer.is_enabled:
|
|
466
|
-
pytest.skip("OTel not enabled")
|
|
467
|
-
tracer._tracer = MagicMock()
|
|
468
|
-
tracer._tracer.start_as_current_span.side_effect = RuntimeError("boom")
|
|
469
|
-
with tracer.trace_tool_call("err-tool", payload={"query": "q"}) as span:
|
|
470
|
-
assert span is None
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
class TestTraceLlmCallErrorPath:
|
|
474
|
-
"""trace_llm_call message-extraction errors and span errors."""
|
|
475
|
-
|
|
476
|
-
def test_llm_call_message_content_extraction_swallows_error(self) -> None:
|
|
477
|
-
"""If summing message content lengths fails, we swallow the exception."""
|
|
478
|
-
from vds_agent_core.observability import AgentTracer
|
|
479
|
-
|
|
480
|
-
tracer = AgentTracer(service_name="t")
|
|
481
|
-
if not tracer.is_enabled:
|
|
482
|
-
pytest.skip("OTel not enabled")
|
|
483
|
-
|
|
484
|
-
class BadMsg(dict):
|
|
485
|
-
def get(self, *args: Any, **kwargs: Any) -> Any:
|
|
486
|
-
raise RuntimeError("msg explodes")
|
|
487
|
-
|
|
488
|
-
bad_messages = [BadMsg()]
|
|
489
|
-
# Should not raise
|
|
490
|
-
with tracer.trace_llm_call("model-x", messages=bad_messages) as span:
|
|
491
|
-
assert span is not None
|
|
492
|
-
|
|
493
|
-
def test_llm_call_exception_yields_none(self) -> None:
|
|
494
|
-
from vds_agent_core.observability import AgentTracer
|
|
495
|
-
|
|
496
|
-
tracer = AgentTracer(service_name="t")
|
|
497
|
-
if not tracer.is_enabled:
|
|
498
|
-
pytest.skip("OTel not enabled")
|
|
499
|
-
tracer._tracer = MagicMock()
|
|
500
|
-
tracer._tracer.start_as_current_span.side_effect = RuntimeError("boom")
|
|
501
|
-
with tracer.trace_llm_call("err-model", messages=[{"role": "u", "content": "hi"}]) as span:
|
|
502
|
-
assert span is None
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
class TestRecordBudgetEventOTelPath:
|
|
506
|
-
"""record_budget_event sets attributes on the active recording span."""
|
|
507
|
-
|
|
508
|
-
def test_records_budget_attrs_on_active_span(self) -> None:
|
|
509
|
-
"""When inside a span, attributes are set on it."""
|
|
510
|
-
from vds_agent_core.observability import AgentTracer
|
|
511
|
-
from vds_agent_core.observability.tracer import BudgetEvent, BudgetEventType
|
|
512
|
-
|
|
513
|
-
tracer = AgentTracer(service_name="t")
|
|
514
|
-
if not tracer.is_enabled:
|
|
515
|
-
pytest.skip("OTel not enabled")
|
|
516
|
-
with tracer.trace_loop("loop-budget"):
|
|
517
|
-
event = BudgetEvent(
|
|
518
|
-
event_type=BudgetEventType.BUDGET_EXCEEDED,
|
|
519
|
-
prompt_tokens=10,
|
|
520
|
-
completion_tokens=5,
|
|
521
|
-
budget_limit=100,
|
|
522
|
-
)
|
|
523
|
-
tracer.record_budget_event(event) # Should hit set_attribute branch
|
|
524
|
-
|
|
525
|
-
def test_records_budget_with_no_limit(self) -> None:
|
|
526
|
-
"""When budget_limit is None the limit attribute branch is skipped."""
|
|
527
|
-
from vds_agent_core.observability import AgentTracer
|
|
528
|
-
from vds_agent_core.observability.tracer import BudgetEvent, BudgetEventType
|
|
529
|
-
|
|
530
|
-
tracer = AgentTracer(service_name="t")
|
|
531
|
-
if not tracer.is_enabled:
|
|
532
|
-
pytest.skip("OTel not enabled")
|
|
533
|
-
with tracer.trace_loop("loop-budget-none"):
|
|
534
|
-
event = BudgetEvent(
|
|
535
|
-
event_type=BudgetEventType.BUDGET_OK,
|
|
536
|
-
prompt_tokens=1,
|
|
537
|
-
completion_tokens=1,
|
|
538
|
-
)
|
|
539
|
-
tracer.record_budget_event(event)
|
|
540
|
-
|
|
541
|
-
def test_record_budget_event_swallows_exception(self) -> None:
|
|
542
|
-
"""If trace.get_current_span raises we silently swallow."""
|
|
543
|
-
from vds_agent_core.observability import AgentTracer
|
|
544
|
-
from vds_agent_core.observability.tracer import BudgetEvent, BudgetEventType
|
|
545
|
-
|
|
546
|
-
tracer = AgentTracer(service_name="t")
|
|
547
|
-
if not tracer.is_enabled:
|
|
548
|
-
pytest.skip("OTel not enabled")
|
|
549
|
-
with patch("opentelemetry.trace.get_current_span", side_effect=RuntimeError("x")):
|
|
550
|
-
tracer.record_budget_event(BudgetEvent(event_type=BudgetEventType.BUDGET_OK))
|
|
551
|
-
|
|
552
|
-
def test_record_budget_event_skips_non_recording_span(self) -> None:
|
|
553
|
-
"""When span exists but is_recording is False the inner branch is skipped."""
|
|
554
|
-
from vds_agent_core.observability import AgentTracer
|
|
555
|
-
from vds_agent_core.observability.tracer import BudgetEvent, BudgetEventType
|
|
556
|
-
|
|
557
|
-
tracer = AgentTracer(service_name="t")
|
|
558
|
-
if not tracer.is_enabled:
|
|
559
|
-
pytest.skip("OTel not enabled")
|
|
560
|
-
fake_span = MagicMock()
|
|
561
|
-
fake_span.is_recording.return_value = False
|
|
562
|
-
with patch("opentelemetry.trace.get_current_span", return_value=fake_span):
|
|
563
|
-
tracer.record_budget_event(BudgetEvent(event_type=BudgetEventType.BUDGET_OK))
|
|
564
|
-
fake_span.set_attribute.assert_not_called()
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
class TestRecordTokenUsageReturn:
|
|
568
|
-
"""record_token_usage produces a TokenUsage with computed total."""
|
|
569
|
-
|
|
570
|
-
def test_total_tokens_computed(self) -> None:
|
|
571
|
-
from vds_agent_core.observability import AgentTracer
|
|
572
|
-
|
|
573
|
-
tracer = AgentTracer(service_name="t")
|
|
574
|
-
usage = tracer.record_token_usage(prompt=300, completion=200, model="m1", cost_usd=0.5)
|
|
575
|
-
assert usage.total_tokens == 500
|
|
576
|
-
assert usage.model == "m1"
|
|
577
|
-
assert usage.cost_usd == 0.5
|
|
578
|
-
|
|
579
|
-
def test_default_model_when_omitted(self) -> None:
|
|
580
|
-
from vds_agent_core.observability import AgentTracer
|
|
581
|
-
|
|
582
|
-
tracer = AgentTracer(service_name="t")
|
|
583
|
-
usage = tracer.record_token_usage(prompt=1, completion=1)
|
|
584
|
-
assert usage.model == "unknown"
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
class TestServiceNameRespected:
|
|
588
|
-
"""Bug C1 (Wave 8 audit): service_name ctor param was silently ignored.
|
|
589
|
-
|
|
590
|
-
The constructor parameter wrote to ``service_name`` but ``_try_initialize``
|
|
591
|
-
read ``_service_name`` (init=False, default ``"vds-agent-core"``) when
|
|
592
|
-
building the OTel resource. After the fix in __post_init__, the caller
|
|
593
|
-
value is propagated before initialization.
|
|
594
|
-
"""
|
|
595
|
-
|
|
596
|
-
def test_custom_service_name_is_propagated_to_internal_field(self) -> None:
|
|
597
|
-
from vds_agent_core.observability import AgentTracer
|
|
598
|
-
|
|
599
|
-
tracer = AgentTracer(service_name="my-custom-service")
|
|
600
|
-
assert tracer._service_name == "my-custom-service"
|
|
601
|
-
|
|
602
|
-
def test_default_service_name_unchanged(self) -> None:
|
|
603
|
-
from vds_agent_core.observability import AgentTracer
|
|
604
|
-
|
|
605
|
-
tracer = AgentTracer()
|
|
606
|
-
assert tracer._service_name == "vds-agent-core"
|
|
607
|
-
assert tracer.service_name == "vds-agent-core"
|
|
608
|
-
|
|
609
|
-
def test_service_name_propagates_when_disabled(self) -> None:
|
|
610
|
-
from vds_agent_core.observability import AgentTracer
|
|
611
|
-
|
|
612
|
-
tracer = AgentTracer(service_name="payments", enabled=False)
|
|
613
|
-
assert tracer._service_name == "payments"
|
|
614
|
-
assert tracer.service_name == "payments"
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
class TestSpanAttributesRecorded:
|
|
618
|
-
"""Phase 9a strengthening: assert WHICH attributes are set on the span.
|
|
619
|
-
|
|
620
|
-
Companion tests for the original ``assert span is not None`` shape. These
|
|
621
|
-
capture the exact ``set_attribute`` / ``start_as_current_span`` kwargs so a
|
|
622
|
-
regression that drops or renames an attribute is caught.
|
|
623
|
-
"""
|
|
624
|
-
|
|
625
|
-
@staticmethod
|
|
626
|
-
def _patched_tracer(tracer: AgentTracer) -> tuple[MagicMock, MagicMock]:
|
|
627
|
-
"""Replace tracer._tracer with a mock; return (fake_tracer, fake_span)."""
|
|
628
|
-
fake_tracer = MagicMock()
|
|
629
|
-
fake_span = MagicMock()
|
|
630
|
-
cm = MagicMock()
|
|
631
|
-
cm.__enter__ = MagicMock(return_value=fake_span)
|
|
632
|
-
cm.__exit__ = MagicMock(return_value=False)
|
|
633
|
-
fake_tracer.start_as_current_span.return_value = cm
|
|
634
|
-
tracer._tracer = fake_tracer
|
|
635
|
-
return fake_tracer, fake_span
|
|
636
|
-
|
|
637
|
-
def test_trace_loop_records_loop_id_and_max_steps(self) -> None:
|
|
638
|
-
from vds_agent_core.observability import AgentTracer
|
|
639
|
-
|
|
640
|
-
tracer = AgentTracer(service_name="t")
|
|
641
|
-
if not tracer.is_enabled:
|
|
642
|
-
pytest.skip("OTel not enabled")
|
|
643
|
-
fake_tracer, _ = self._patched_tracer(tracer)
|
|
644
|
-
with tracer.trace_loop(loop_id="loop-123", config={"max_steps": 7}):
|
|
645
|
-
pass
|
|
646
|
-
# Span name + attribute payload must be exact.
|
|
647
|
-
call = fake_tracer.start_as_current_span.call_args
|
|
648
|
-
assert call.args[0] == "agent.loop"
|
|
649
|
-
attrs = call.kwargs["attributes"]
|
|
650
|
-
assert attrs["agent.loop_id"] == "loop-123"
|
|
651
|
-
assert attrs["agent.loop.max_steps"] == 7
|
|
652
|
-
assert attrs["gen_ai.agent.node.type"] == "agent_loop"
|
|
653
|
-
|
|
654
|
-
def test_trace_loop_records_timeout_and_budget(self) -> None:
|
|
655
|
-
from vds_agent_core.observability import AgentTracer
|
|
656
|
-
|
|
657
|
-
tracer = AgentTracer(service_name="t")
|
|
658
|
-
if not tracer.is_enabled:
|
|
659
|
-
pytest.skip("OTel not enabled")
|
|
660
|
-
fake_tracer, _ = self._patched_tracer(tracer)
|
|
661
|
-
with tracer.trace_loop(
|
|
662
|
-
loop_id="loop-2",
|
|
663
|
-
config={"timeout_seconds": 30, "budget_units": 500},
|
|
664
|
-
):
|
|
665
|
-
pass
|
|
666
|
-
attrs = fake_tracer.start_as_current_span.call_args.kwargs["attributes"]
|
|
667
|
-
assert attrs["agent.loop.timeout_seconds"] == 30
|
|
668
|
-
assert attrs["agent.loop.budget_units"] == 500
|
|
669
|
-
|
|
670
|
-
def test_trace_tool_call_records_tool_name_and_payload_size(self) -> None:
|
|
671
|
-
from vds_agent_core.observability import AgentTracer
|
|
672
|
-
|
|
673
|
-
tracer = AgentTracer(service_name="t")
|
|
674
|
-
if not tracer.is_enabled:
|
|
675
|
-
pytest.skip("OTel not enabled")
|
|
676
|
-
fake_tracer, _ = self._patched_tracer(tracer)
|
|
677
|
-
payload = {"query": "find auth code", "limit": 5}
|
|
678
|
-
with tracer.trace_tool_call(tool_name="search_code", payload=payload):
|
|
679
|
-
pass
|
|
680
|
-
call = fake_tracer.start_as_current_span.call_args
|
|
681
|
-
assert call.args[0] == "tool.search_code"
|
|
682
|
-
attrs = call.kwargs["attributes"]
|
|
683
|
-
assert attrs["tool.name"] == "search_code"
|
|
684
|
-
assert attrs["tool.query_preview"] == "find auth code"
|
|
685
|
-
assert attrs["tool.payload_size_bytes"] == len(str(payload))
|
|
686
|
-
assert attrs["gen_ai.agent.node.type"] == "tool_call"
|
|
687
|
-
|
|
688
|
-
def test_trace_tool_call_records_path_attribute(self) -> None:
|
|
689
|
-
from vds_agent_core.observability import AgentTracer
|
|
690
|
-
|
|
691
|
-
tracer = AgentTracer(service_name="t")
|
|
692
|
-
if not tracer.is_enabled:
|
|
693
|
-
pytest.skip("OTel not enabled")
|
|
694
|
-
fake_tracer, _ = self._patched_tracer(tracer)
|
|
695
|
-
with tracer.trace_tool_call("read", payload={"path": "/etc/hosts"}):
|
|
696
|
-
pass
|
|
697
|
-
attrs = fake_tracer.start_as_current_span.call_args.kwargs["attributes"]
|
|
698
|
-
assert attrs["tool.path"] == "/etc/hosts"
|
|
699
|
-
|
|
700
|
-
def test_trace_llm_call_records_model_and_message_stats(self) -> None:
|
|
701
|
-
from vds_agent_core.observability import AgentTracer
|
|
702
|
-
|
|
703
|
-
tracer = AgentTracer(service_name="t")
|
|
704
|
-
if not tracer.is_enabled:
|
|
705
|
-
pytest.skip("OTel not enabled")
|
|
706
|
-
fake_tracer, _ = self._patched_tracer(tracer)
|
|
707
|
-
messages = [
|
|
708
|
-
{"role": "system", "content": "sys"}, # 3 chars
|
|
709
|
-
{"role": "user", "content": "hello"}, # 5 chars
|
|
710
|
-
]
|
|
711
|
-
with tracer.trace_llm_call(model="claude-3-5-sonnet", messages=messages):
|
|
712
|
-
pass
|
|
713
|
-
call = fake_tracer.start_as_current_span.call_args
|
|
714
|
-
assert call.args[0] == "llm.call"
|
|
715
|
-
attrs = call.kwargs["attributes"]
|
|
716
|
-
assert attrs["llm.model"] == "claude-3-5-sonnet"
|
|
717
|
-
assert attrs["llm.message_count"] == 2
|
|
718
|
-
assert attrs["llm.input_char_count"] == 8 # 3 + 5
|
|
719
|
-
assert attrs["gen_ai.agent.node.type"] == "llm_call"
|
|
720
|
-
|
|
721
|
-
def test_trace_llm_call_swallows_content_extraction_error(self) -> None:
|
|
722
|
-
"""When summing content lengths raises, message_count is still recorded.
|
|
723
|
-
|
|
724
|
-
The swallow-and-continue path should still set llm.message_count
|
|
725
|
-
(computed before the sum) but skip llm.input_char_count.
|
|
726
|
-
"""
|
|
727
|
-
from vds_agent_core.observability import AgentTracer
|
|
728
|
-
|
|
729
|
-
tracer = AgentTracer(service_name="t")
|
|
730
|
-
if not tracer.is_enabled:
|
|
731
|
-
pytest.skip("OTel not enabled")
|
|
732
|
-
fake_tracer, _ = self._patched_tracer(tracer)
|
|
733
|
-
|
|
734
|
-
class BadMsg(dict):
|
|
735
|
-
def get(self, *args: Any, **kwargs: Any) -> Any:
|
|
736
|
-
raise RuntimeError("msg explodes")
|
|
737
|
-
|
|
738
|
-
with tracer.trace_llm_call("model-x", messages=[BadMsg()]):
|
|
739
|
-
pass
|
|
740
|
-
attrs = fake_tracer.start_as_current_span.call_args.kwargs["attributes"]
|
|
741
|
-
assert attrs["llm.message_count"] == 1
|
|
742
|
-
assert "llm.input_char_count" not in attrs
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
class TestRecordBudgetEventAttributes:
|
|
746
|
-
"""record_budget_event must set the documented attribute keys on the span."""
|
|
747
|
-
|
|
748
|
-
def test_records_event_type_and_token_attrs(self) -> None:
|
|
749
|
-
from vds_agent_core.observability import AgentTracer
|
|
750
|
-
from vds_agent_core.observability.tracer import BudgetEvent, BudgetEventType
|
|
751
|
-
|
|
752
|
-
tracer = AgentTracer(service_name="t")
|
|
753
|
-
if not tracer.is_enabled:
|
|
754
|
-
pytest.skip("OTel not enabled")
|
|
755
|
-
fake_span = MagicMock()
|
|
756
|
-
fake_span.is_recording.return_value = True
|
|
757
|
-
with patch("opentelemetry.trace.get_current_span", return_value=fake_span):
|
|
758
|
-
tracer.record_budget_event(
|
|
759
|
-
BudgetEvent(
|
|
760
|
-
event_type=BudgetEventType.BUDGET_EXCEEDED,
|
|
761
|
-
prompt_tokens=42,
|
|
762
|
-
completion_tokens=7,
|
|
763
|
-
budget_limit=100,
|
|
764
|
-
)
|
|
765
|
-
)
|
|
766
|
-
# Capture the exact (key, value) pairs.
|
|
767
|
-
keys = {c.args[0]: c.args[1] for c in fake_span.set_attribute.call_args_list}
|
|
768
|
-
assert keys["agent.budget.event"] == "budget_exceeded"
|
|
769
|
-
assert keys["agent.budget.prompt_tokens"] == 42
|
|
770
|
-
assert keys["agent.budget.completion_tokens"] == 7
|
|
771
|
-
assert keys["agent.budget.limit"] == 100
|
|
772
|
-
|
|
773
|
-
def test_skips_limit_when_none(self) -> None:
|
|
774
|
-
from vds_agent_core.observability import AgentTracer
|
|
775
|
-
from vds_agent_core.observability.tracer import BudgetEvent, BudgetEventType
|
|
776
|
-
|
|
777
|
-
tracer = AgentTracer(service_name="t")
|
|
778
|
-
if not tracer.is_enabled:
|
|
779
|
-
pytest.skip("OTel not enabled")
|
|
780
|
-
fake_span = MagicMock()
|
|
781
|
-
fake_span.is_recording.return_value = True
|
|
782
|
-
with patch("opentelemetry.trace.get_current_span", return_value=fake_span):
|
|
783
|
-
tracer.record_budget_event(
|
|
784
|
-
BudgetEvent(
|
|
785
|
-
event_type=BudgetEventType.BUDGET_OK,
|
|
786
|
-
prompt_tokens=1,
|
|
787
|
-
completion_tokens=1,
|
|
788
|
-
)
|
|
789
|
-
)
|
|
790
|
-
keys = {c.args[0] for c in fake_span.set_attribute.call_args_list}
|
|
791
|
-
# When budget_limit is None the limit attribute must not be emitted.
|
|
792
|
-
assert "agent.budget.limit" not in keys
|
|
793
|
-
assert "agent.budget.event" in keys
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
class TestRecordTokenUsageAccumulation:
|
|
797
|
-
"""record_token_usage returns a TokenUsage with computed totals — make
|
|
798
|
-
the previously-execution-only ``test_token_usage_accumulates`` actually
|
|
799
|
-
assert per-call totals.
|
|
800
|
-
"""
|
|
801
|
-
|
|
802
|
-
def test_each_call_returns_independent_totals(self) -> None:
|
|
803
|
-
from vds_agent_core.observability import AgentTracer
|
|
804
|
-
|
|
805
|
-
tracer = AgentTracer(service_name="t")
|
|
806
|
-
u1 = tracer.record_token_usage(prompt=100, completion=50, model="m1")
|
|
807
|
-
u2 = tracer.record_token_usage(prompt=200, completion=100, model="m2")
|
|
808
|
-
# Each call should produce an independent immutable record.
|
|
809
|
-
assert u1.total_tokens == 150
|
|
810
|
-
assert u2.total_tokens == 300
|
|
811
|
-
assert u1.model == "m1"
|
|
812
|
-
assert u2.model == "m2"
|
|
813
|
-
assert u1 is not u2
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
class TestOpenSpanPublicAPI:
|
|
817
|
-
"""AgentTracer.open_span — public context manager that replaces direct
|
|
818
|
-
``_tracer.start_as_current_span`` access from outside callers (Wave 28b
|
|
819
|
-
encapsulation finding).
|
|
820
|
-
"""
|
|
821
|
-
|
|
822
|
-
def test_open_span_yields_span_when_enabled(self) -> None:
|
|
823
|
-
"""When tracing is enabled, open_span yields a real OTel span."""
|
|
824
|
-
from vds_agent_core.observability import AgentTracer
|
|
825
|
-
|
|
826
|
-
tracer = AgentTracer(service_name="t")
|
|
827
|
-
if not tracer.is_enabled:
|
|
828
|
-
pytest.skip("OTel not enabled in this run")
|
|
829
|
-
with tracer.open_span("audit.test") as span:
|
|
830
|
-
assert span is not None
|
|
831
|
-
# Real OTel spans expose set_attribute and end
|
|
832
|
-
assert hasattr(span, "set_attribute")
|
|
833
|
-
assert hasattr(span, "end")
|
|
834
|
-
|
|
835
|
-
def test_open_span_yields_none_when_disabled(self) -> None:
|
|
836
|
-
"""When the tracer is disabled, open_span yields None and is a no-op."""
|
|
837
|
-
from vds_agent_core.observability import AgentTracer
|
|
838
|
-
|
|
839
|
-
tracer = AgentTracer(service_name="t", enabled=False)
|
|
840
|
-
with tracer.open_span("audit.test", attributes={"k": "v"}) as span:
|
|
841
|
-
assert span is None
|
|
842
|
-
|
|
843
|
-
def test_open_span_attributes_passed_to_span(self) -> None:
|
|
844
|
-
"""Attributes passed to open_span are forwarded to start_as_current_span."""
|
|
845
|
-
from vds_agent_core.observability import AgentTracer
|
|
846
|
-
|
|
847
|
-
tracer = AgentTracer(service_name="t")
|
|
848
|
-
if not tracer.is_enabled:
|
|
849
|
-
pytest.skip("OTel not enabled in this run")
|
|
850
|
-
# Replace the underlying tracer with a mock to capture the call kwargs
|
|
851
|
-
fake_tracer = MagicMock()
|
|
852
|
-
# start_as_current_span must behave like a context manager
|
|
853
|
-
fake_span = MagicMock()
|
|
854
|
-
cm = MagicMock()
|
|
855
|
-
cm.__enter__ = MagicMock(return_value=fake_span)
|
|
856
|
-
cm.__exit__ = MagicMock(return_value=False)
|
|
857
|
-
fake_tracer.start_as_current_span.return_value = cm
|
|
858
|
-
tracer._tracer = fake_tracer
|
|
859
|
-
|
|
860
|
-
attrs = {"audit_id": "audit-1", "repo": "r", "extra": 42}
|
|
861
|
-
with tracer.open_span("audit.run", attributes=attrs) as span:
|
|
862
|
-
assert span is fake_span
|
|
863
|
-
|
|
864
|
-
fake_tracer.start_as_current_span.assert_called_once_with("audit.run", attributes=attrs)
|
|
865
|
-
|
|
866
|
-
def test_open_span_swallows_exception_and_yields_none(self) -> None:
|
|
867
|
-
"""If start_as_current_span raises, open_span logs and yields None."""
|
|
868
|
-
from vds_agent_core.observability import AgentTracer
|
|
869
|
-
|
|
870
|
-
tracer = AgentTracer(service_name="t")
|
|
871
|
-
if not tracer.is_enabled:
|
|
872
|
-
pytest.skip("OTel not enabled in this run")
|
|
873
|
-
tracer._tracer = MagicMock()
|
|
874
|
-
tracer._tracer.start_as_current_span.side_effect = RuntimeError("boom")
|
|
875
|
-
with tracer.open_span("audit.err") as span:
|
|
876
|
-
assert span is None
|
|
877
|
-
|
|
878
|
-
def test_open_span_default_attributes_empty_dict(self) -> None:
|
|
879
|
-
"""When attributes=None, open_span should still call OTel with empty dict."""
|
|
880
|
-
from vds_agent_core.observability import AgentTracer
|
|
881
|
-
|
|
882
|
-
tracer = AgentTracer(service_name="t")
|
|
883
|
-
if not tracer.is_enabled:
|
|
884
|
-
pytest.skip("OTel not enabled in this run")
|
|
885
|
-
fake_tracer = MagicMock()
|
|
886
|
-
fake_span = MagicMock()
|
|
887
|
-
cm = MagicMock()
|
|
888
|
-
cm.__enter__ = MagicMock(return_value=fake_span)
|
|
889
|
-
cm.__exit__ = MagicMock(return_value=False)
|
|
890
|
-
fake_tracer.start_as_current_span.return_value = cm
|
|
891
|
-
tracer._tracer = fake_tracer
|
|
892
|
-
|
|
893
|
-
with tracer.open_span("audit.empty") as span:
|
|
894
|
-
assert span is fake_span
|
|
895
|
-
|
|
896
|
-
fake_tracer.start_as_current_span.assert_called_once_with("audit.empty", attributes={})
|