sourcecode 1.30.8__tar.gz → 1.30.10__tar.gz
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.
- {sourcecode-1.30.8 → sourcecode-1.30.10}/PKG-INFO +3 -3
- {sourcecode-1.30.8 → sourcecode-1.30.10}/README.md +2 -2
- {sourcecode-1.30.8 → sourcecode-1.30.10}/pyproject.toml +1 -1
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/__init__.py +1 -1
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/prepare_context.py +147 -11
- {sourcecode-1.30.8 → sourcecode-1.30.10}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/.continue-here.md +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/.gitignore +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/.ruff.toml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/CONTRIBUTING.md +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/LICENSE +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/SECURITY.md +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/docs/privacy.md +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/docs/schema.md +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/raw +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/run_cli.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/classifier.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/cli.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/flow_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/progress.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/redactor.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/scanner.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/schema.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/serializer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/src/sourcecode/workspace.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/__init__.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/conftest.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/coverage.xml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/fastapi_app/src/main.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/go_service/cmd/api/main.go +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/go_service/go.mod +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/jacoco.xml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/latin1_sample.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/latin1_sample_iso.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/lcov.info +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/nextjs_app/package.json +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/application/service/FindAusenteService.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/domain/entities/Ausente.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/infrastructure/rest/AusenteRestController.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/application/service/FindAutocoberturasService.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/domain/entities/Autocoberturas.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/infrastructure/rest/AutocoberturasRestController.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/application/service/FindCalendarioTrabajadorService.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/domain/entities/CalendarioTrabajador.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/infrastructure/rest/CalendarioTrabajadorRestController.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/application/service/FindDepartamentoService.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/domain/entities/Departamento.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/infrastructure/rest/DepartamentoRestController.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/application/service/FindEmpleadoService.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/domain/entities/Empleado.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/infrastructure/rest/EmpleadoRestController.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_architecture_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_architecture_summary.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_ast_extractor.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_block1_reliability.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_block2_coverage.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_block5_quality.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_bug_fixes_v16.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_classifier.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_cli.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_code_notes_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_context_scorer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_contract_pipeline.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_coverage_parser.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_cross_consistency.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_dependency_analyzer_node_python.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_dependency_analyzer_polyglot.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_dependency_schema.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_detector_dotnet.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_detector_go_rust_java.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_detector_nodejs.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_detector_php_ruby_dart.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_detector_python.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_detector_universal_managed.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_detector_universal_systems.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_detectors_base.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_doc_analyzer_jsdom.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_doc_analyzer_python.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_encoding_regression.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_graph_analyzer_polyglot.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_graph_analyzer_python_node.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_graph_schema.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_hybrid_inference.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration_dependencies.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration_detection.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration_docs.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration_graph_modules.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration_lqn.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration_metrics.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration_multistack.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration_semantics.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_integration_universal.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_java_spring_integration.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_metrics_analyzer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_packaging.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_phase1_improvements.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_pipeline_integrity.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_real_projects.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_redactor.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_scanner.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_schema.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_schema_normalization.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_semantic_analyzer_node.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_semantic_analyzer_python.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_semantic_import_resolution.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_semantic_schema.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_signal_hierarchy.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_summarizer.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_surface_honesty.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_task_differentiation.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_telemetry.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_v1_10_regressions.py +0 -0
- {sourcecode-1.30.8 → sourcecode-1.30.10}/tests/test_workspace_analyzer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 1.30.
|
|
3
|
+
Version: 1.30.10
|
|
4
4
|
Summary: Deterministic codebase context for AI coding agents
|
|
5
5
|
License: Apache License
|
|
6
6
|
Version 2.0, January 2004
|
|
@@ -221,7 +221,7 @@ Description-Content-Type: text/markdown
|
|
|
221
221
|
|
|
222
222
|
**Deterministic, behavior-aware codebase context for AI agents and PR review.**
|
|
223
223
|
|
|
224
|
-

|
|
225
225
|

|
|
226
226
|
|
|
227
227
|
---
|
|
@@ -257,7 +257,7 @@ pipx install sourcecode
|
|
|
257
257
|
|
|
258
258
|
```bash
|
|
259
259
|
sourcecode version
|
|
260
|
-
# sourcecode 1.30.
|
|
260
|
+
# sourcecode 1.30.10
|
|
261
261
|
```
|
|
262
262
|
|
|
263
263
|
---
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Deterministic, behavior-aware codebase context for AI agents and PR review.**
|
|
4
4
|
|
|
5
|
-

|
|
6
6
|

|
|
7
7
|
|
|
8
8
|
---
|
|
@@ -38,7 +38,7 @@ pipx install sourcecode
|
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
40
|
sourcecode version
|
|
41
|
-
# sourcecode 1.30.
|
|
41
|
+
# sourcecode 1.30.10
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
---
|
|
@@ -419,6 +419,108 @@ _ALL_EXTENSIONS: frozenset[str] = _SOURCE_EXTENSIONS | frozenset({
|
|
|
419
419
|
".md", ".toml", ".yaml", ".yml", ".json", ".xml",
|
|
420
420
|
})
|
|
421
421
|
|
|
422
|
+
# ── Evidence admission helpers (valid types: git_diff, annotation, import, symbol, config) ──
|
|
423
|
+
|
|
424
|
+
_CLASS_SUFFIX_EVIDENCE: list[tuple[tuple[str, ...], str, str]] = [
|
|
425
|
+
(("Repository", "Dao", "DAO"), "repository pattern", "medium"),
|
|
426
|
+
(("Mapper",), "mapper pattern", "medium"),
|
|
427
|
+
(("Service", "Manager", "Handler", "Facade"), "service pattern", "medium"),
|
|
428
|
+
(("Controller", "Resource", "Endpoint"), "controller pattern", "medium"),
|
|
429
|
+
(("Config", "Configuration"), "config class", "medium"),
|
|
430
|
+
(("Test", "Tests", "IT", "Spec"), "test class", "strong"),
|
|
431
|
+
(("DTO", "Dto"), "DTO pattern", "medium"),
|
|
432
|
+
(("Entity",), "entity pattern", "medium"),
|
|
433
|
+
]
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
def _symbol_evidence_from_class(class_name: str) -> "dict | None":
|
|
437
|
+
for suffixes, label, strength in _CLASS_SUFFIX_EVIDENCE:
|
|
438
|
+
for suffix in suffixes:
|
|
439
|
+
if class_name.endswith(suffix) and class_name != suffix:
|
|
440
|
+
return {
|
|
441
|
+
"type": "symbol",
|
|
442
|
+
"strength": strength,
|
|
443
|
+
"signal": f"class name suffix '{suffix}' — {label}",
|
|
444
|
+
}
|
|
445
|
+
return None
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
_PERSISTENCE_ANNOTATION_SIGNALS = frozenset({
|
|
449
|
+
"@Repository", "@Entity", "@Table", "@MappedSuperclass",
|
|
450
|
+
"@NamedQuery", "@SqlResultSetMapping", "@Embeddable",
|
|
451
|
+
})
|
|
452
|
+
_PERSISTENCE_IMPORT_PREFIXES = (
|
|
453
|
+
"javax.persistence", "jakarta.persistence",
|
|
454
|
+
"org.hibernate", "org.springframework.data.jpa",
|
|
455
|
+
)
|
|
456
|
+
_PERSISTENCE_ORM_SYMBOLS = ("EntityManager", "JpaRepository", "CrudRepository", "HibernateTemplate", "SessionFactory")
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
def _read_persistence_evidence(root: Path, file_path: str) -> "list[dict]":
|
|
460
|
+
evidence: list[dict] = []
|
|
461
|
+
try:
|
|
462
|
+
with open(root / file_path, encoding="utf-8", errors="replace") as _fp:
|
|
463
|
+
content = _fp.read(8000)
|
|
464
|
+
except OSError:
|
|
465
|
+
return evidence
|
|
466
|
+
for ann in _PERSISTENCE_ANNOTATION_SIGNALS:
|
|
467
|
+
if ann in content:
|
|
468
|
+
evidence.append({"type": "annotation", "strength": "strong", "signal": f"{ann} found in file content"})
|
|
469
|
+
break
|
|
470
|
+
for imp in _PERSISTENCE_IMPORT_PREFIXES:
|
|
471
|
+
if imp in content:
|
|
472
|
+
evidence.append({"type": "import", "strength": "strong", "signal": f"import {imp}.* found in file content"})
|
|
473
|
+
break
|
|
474
|
+
for sym in _PERSISTENCE_ORM_SYMBOLS:
|
|
475
|
+
if sym in content:
|
|
476
|
+
evidence.append({"type": "symbol", "strength": "medium", "signal": f"{sym} usage found in file content"})
|
|
477
|
+
break
|
|
478
|
+
return evidence
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
# Code signal rules for non-persistence classifiable types.
|
|
482
|
+
# Path/module/suffix are explicitly excluded — only code-grounded signals.
|
|
483
|
+
_CODE_SIGNAL_RULES: dict[str, list[str]] = {
|
|
484
|
+
"service": ["@Service", "@Component(", "@Transactional\n", "@Transactional("],
|
|
485
|
+
"controller": ["@RestController", "@Controller", "@RequestMapping",
|
|
486
|
+
"@GetMapping", "@PostMapping", "@PutMapping", "@DeleteMapping", "@PatchMapping"],
|
|
487
|
+
"entrypoint": ["@SpringBootApplication", "public static void main", "if __name__ == '__main__'"],
|
|
488
|
+
"security": ["@EnableWebSecurity", "SecurityFilterChain", "WebSecurityConfigurerAdapter",
|
|
489
|
+
"extends OncePerRequestFilter"],
|
|
490
|
+
"spring_config": ["@Configuration", "@Bean\n", "@Bean("],
|
|
491
|
+
"spring_profile": ["@Profile(", "@ConditionalOnProperty"],
|
|
492
|
+
"dto": ["@Data\n", "@Data(", "@Value\n", "@JsonProperty", "@Schema(", "@XmlRootElement",
|
|
493
|
+
"@Builder\n", "@Builder(", "@Getter", "@Setter"],
|
|
494
|
+
"test": ["@Test\n", "@Test(", "import org.junit", "import org.testng",
|
|
495
|
+
"import org.mockito", "import org.springframework.boot.test",
|
|
496
|
+
"@BeforeEach", "@BeforeAll", "@Before\n", "@Before("],
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
def _read_code_signal_evidence(root: Path, file_path: str, artifact_type: str) -> "list[dict]":
|
|
501
|
+
"""Verify artifact_type with code signals from file content (first 8KB).
|
|
502
|
+
Returns single-item list on first match, empty list if no signal found.
|
|
503
|
+
Path segments, module names, and class suffixes are excluded — per evidence firewall rules.
|
|
504
|
+
"""
|
|
505
|
+
signals = _CODE_SIGNAL_RULES.get(artifact_type, [])
|
|
506
|
+
if not signals:
|
|
507
|
+
return []
|
|
508
|
+
try:
|
|
509
|
+
with open(root / file_path, encoding="utf-8", errors="replace") as _fp:
|
|
510
|
+
content = _fp.read(8000)
|
|
511
|
+
except OSError:
|
|
512
|
+
return []
|
|
513
|
+
for signal in signals:
|
|
514
|
+
if signal in content:
|
|
515
|
+
ev_type = (
|
|
516
|
+
"annotation" if signal.startswith("@")
|
|
517
|
+
else "import" if signal.startswith("import ")
|
|
518
|
+
else "symbol"
|
|
519
|
+
)
|
|
520
|
+
return [{"type": ev_type, "strength": "strong", "signal": f"{signal.strip()} found in file content"}]
|
|
521
|
+
return []
|
|
522
|
+
|
|
523
|
+
|
|
422
524
|
_ARTIFACT_CHANGE_EFFECT: dict[str, str] = {
|
|
423
525
|
"entrypoint": "may affect application startup, CLI entry, or framework bootstrap — all request flows may be affected (inferred from role)",
|
|
424
526
|
"controller": "may alter HTTP routing, API contract, or response shape — API consumers may be affected (inferred from role)",
|
|
@@ -953,21 +1055,55 @@ class TaskContextBuilder:
|
|
|
953
1055
|
if _f_atype == "build_manifest":
|
|
954
1056
|
_build_artifact_files.append(_f)
|
|
955
1057
|
continue
|
|
956
|
-
#
|
|
957
|
-
|
|
958
|
-
|
|
1058
|
+
# ── Evidence: only admitted types [git_diff, annotation, import, symbol, config] ──
|
|
1059
|
+
_evidence: list[dict] = [
|
|
1060
|
+
{"type": "git_diff", "strength": "weak", "signal": "file present in commit diff"}
|
|
1061
|
+
]
|
|
1062
|
+
# Symbol evidence from class name (path segments are rejected — not a valid type)
|
|
1063
|
+
_class_name = Path(_f).stem
|
|
1064
|
+
_sym_ev = _symbol_evidence_from_class(_class_name)
|
|
1065
|
+
if _sym_ev:
|
|
1066
|
+
_evidence.append(_sym_ev)
|
|
1067
|
+
|
|
1068
|
+
# All classifiable types require at least one code signal from content.
|
|
1069
|
+
# Path segments and module names are rejected evidence — not a valid type.
|
|
1070
|
+
_PERSISTENCE_SENSITIVE = frozenset({"repository", "mapper", "domain_model"})
|
|
1071
|
+
_CONTENT_VERIFIABLE = frozenset({
|
|
1072
|
+
"service", "controller", "entrypoint", "security",
|
|
1073
|
+
"spring_config", "spring_profile", "dto",
|
|
1074
|
+
})
|
|
1075
|
+
if _f_atype in _PERSISTENCE_SENSITIVE:
|
|
1076
|
+
_content_ev = _read_persistence_evidence(self.root, _f)
|
|
1077
|
+
if _content_ev:
|
|
1078
|
+
_evidence.extend(_content_ev)
|
|
1079
|
+
else:
|
|
1080
|
+
_f_atype = "source"
|
|
1081
|
+
elif _f_atype in _CONTENT_VERIFIABLE:
|
|
1082
|
+
_content_ev = _read_code_signal_evidence(self.root, _f, _f_atype)
|
|
1083
|
+
if _content_ev:
|
|
1084
|
+
_evidence.extend(_content_ev)
|
|
1085
|
+
else:
|
|
1086
|
+
_f_atype = "source"
|
|
1087
|
+
elif _f_atype == "test":
|
|
1088
|
+
# test: class name suffix is valid per gate (naming rule)
|
|
1089
|
+
# additionally verify with test framework signals for stronger evidence
|
|
1090
|
+
_test_ev = _read_code_signal_evidence(self.root, _f, "test")
|
|
1091
|
+
if _test_ev:
|
|
1092
|
+
_evidence.extend(_test_ev)
|
|
1093
|
+
# no downgrade — naming is a valid gate signal for test
|
|
1094
|
+
|
|
1095
|
+
# Role basis: derived from strongest admitted evidence
|
|
1096
|
+
_has_code_ev = any(e["type"] in ("annotation", "import") for e in _evidence)
|
|
1097
|
+
_has_symbol_ev = any(e["type"] == "symbol" for e in _evidence)
|
|
1098
|
+
_role_basis = "annotation" if _has_code_ev else ("symbol" if _has_symbol_ev else "git_diff_only")
|
|
1099
|
+
_cls_conf = _f_cls["confidence"]
|
|
959
1100
|
_role_obj = {
|
|
960
1101
|
"type": "inferred",
|
|
961
|
-
"confidence": "medium" if _cls_conf == "high" else "low",
|
|
1102
|
+
"confidence": "medium" if (_has_code_ev or (_has_symbol_ev and _cls_conf == "high")) else "low",
|
|
962
1103
|
"basis": _role_basis,
|
|
963
1104
|
}
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
_f_module = _f_cls.get("module", "")
|
|
967
|
-
if _f_module:
|
|
968
|
-
_evidence.append(f"matched module path: {_f_module}")
|
|
969
|
-
_evidence.append("NO call graph evidence")
|
|
970
|
-
# file confidence: replaces numeric score
|
|
1105
|
+
|
|
1106
|
+
# File confidence: replaces numeric score
|
|
971
1107
|
_impact_s = _delta_impact_score_per_file.get(_f, 0.45)
|
|
972
1108
|
_f_conf = "high" if _impact_s >= 0.60 else ("medium" if _impact_s >= 0.40 else "low")
|
|
973
1109
|
_pr_runtime_changes.append({
|
{sourcecode-1.30.8 → sourcecode-1.30.10}/.agents/skills/source-command-gsd-join-discord/SKILL.md
RENAMED
|
File without changes
|
{sourcecode-1.30.8 → sourcecode-1.30.10}/.agents/skills/source-command-gsd-review-backlog/SKILL.md
RENAMED
|
File without changes
|
{sourcecode-1.30.8 → sourcecode-1.30.10}/.agents/skills/source-command-gsd-workstreams/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sourcecode-1.30.8 → sourcecode-1.30.10}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|