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

|
|
225
225
|

|
|
226
226
|
|
|
227
227
|
---
|
|
@@ -255,7 +255,7 @@ pipx install sourcecode
|
|
|
255
255
|
|
|
256
256
|
```bash
|
|
257
257
|
sourcecode version
|
|
258
|
-
# sourcecode 1.
|
|
258
|
+
# sourcecode 1.24.0
|
|
259
259
|
```
|
|
260
260
|
|
|
261
261
|
---
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Compressed AI-ready context for Java/Spring enterprise codebases.**
|
|
4
4
|
|
|
5
|
-

|
|
6
6
|

|
|
7
7
|
|
|
8
8
|
---
|
|
@@ -36,7 +36,7 @@ pipx install sourcecode
|
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
38
|
sourcecode version
|
|
39
|
-
# sourcecode 1.
|
|
39
|
+
# sourcecode 1.24.0
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
---
|
|
@@ -1777,118 +1777,108 @@ class TaskContextBuilder:
|
|
|
1777
1777
|
path=path, role=role, score=rel_score, reason=reason, why=why_str
|
|
1778
1778
|
)))
|
|
1779
1779
|
why[path] = why_str
|
|
1780
|
-
|
|
1781
|
-
trigger_full = next((f for f in changed_files if Path(f).name == trigger_name), None)
|
|
1782
|
-
if trigger_full:
|
|
1783
|
-
graph_edges.append({"from": trigger_full, "to": path, "edge_type": "module_proximity", "hop": 1})
|
|
1780
|
+
# module_proximity is heuristic (not a verified import) — excluded from structural graph
|
|
1784
1781
|
|
|
1785
1782
|
related.sort(key=lambda x: (-x[0], x[1]))
|
|
1786
1783
|
relevant.extend(rf for _, _, rf in related[:10])
|
|
1787
1784
|
|
|
1788
|
-
# ──
|
|
1789
|
-
#
|
|
1790
|
-
#
|
|
1791
|
-
|
|
1785
|
+
# ── Steps 3b–3c: BFS multi-hop import propagation (repo-wide, 3 hops max) ─
|
|
1786
|
+
# Each hop expands from whatever was found in the previous hop into ALL
|
|
1787
|
+
# remaining source files — not restricted to original module/dir.
|
|
1788
|
+
# This enables A→B→C discovery even when B and C are in different modules.
|
|
1789
|
+
_BFS_SCANNABLE = frozenset({".py", ".java", ".kt", ".ts", ".js", ".tsx", ".jsx", ".mjs"})
|
|
1790
|
+
_bfs_all_sources = [
|
|
1792
1791
|
p for p in all_paths
|
|
1793
|
-
if
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
)
|
|
1792
|
+
if Path(p).suffix.lower() in _BFS_SCANNABLE
|
|
1793
|
+
]
|
|
1794
|
+
|
|
1795
|
+
_bfs_seen: set[str] = {rf.path for rf in relevant}
|
|
1796
|
+
_bfs_frontier: list[str] = [
|
|
1797
|
+
f for f in changed_files
|
|
1798
|
+
if Path(f).suffix.lower() in _BFS_SCANNABLE
|
|
1800
1799
|
]
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1800
|
+
|
|
1801
|
+
# (max results added from this hop, max_candidates scanned per seed)
|
|
1802
|
+
_BFS_HOP_BUDGET = [
|
|
1803
|
+
(8, 60), # hop 1 — broad: callers of changed files
|
|
1804
|
+
(6, 50), # hop 2 — transitives: callers of hop-1 files
|
|
1805
|
+
(4, 30), # hop 3 — deep transitives: callers of hop-2 files
|
|
1806
|
+
]
|
|
1807
|
+
|
|
1808
|
+
# (hop_num, score, path, RelevantFile) — merged across all hops then added to relevant
|
|
1809
|
+
_bfs_collected: list[tuple[int, float, str, RelevantFile]] = []
|
|
1810
|
+
|
|
1811
|
+
for _hop_num, (_max_results, _max_cands) in enumerate(_BFS_HOP_BUDGET, start=1):
|
|
1812
|
+
if not _bfs_frontier:
|
|
1813
|
+
break
|
|
1814
|
+
|
|
1815
|
+
_bfs_candidates = [p for p in _bfs_all_sources if p not in _bfs_seen]
|
|
1816
|
+
if not _bfs_candidates:
|
|
1817
|
+
break
|
|
1818
|
+
|
|
1819
|
+
_hop_dep_map = self._scan_import_dependents(
|
|
1820
|
+
changed_paths=_bfs_frontier,
|
|
1821
|
+
candidate_paths=_bfs_candidates,
|
|
1822
|
+
max_candidates=_max_cands,
|
|
1805
1823
|
)
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1824
|
+
|
|
1825
|
+
# collect (score, path) pairs for this hop to build the next frontier
|
|
1826
|
+
_hop_scored: list[tuple[float, str]] = []
|
|
1827
|
+
|
|
1828
|
+
for _seed_path, _dep_paths in _hop_dep_map.items():
|
|
1829
|
+
_seed_atype = (
|
|
1830
|
+
classifications[_seed_path]["artifact_type"]
|
|
1831
|
+
if _seed_path in classifications
|
|
1832
|
+
else self._classify_changed_file(_seed_path)["artifact_type"]
|
|
1833
|
+
)
|
|
1834
|
+
for _dep_path in _dep_paths:
|
|
1835
|
+
if _dep_path in _bfs_seen:
|
|
1812
1836
|
continue
|
|
1813
|
-
|
|
1814
|
-
|
|
1837
|
+
_bfs_seen.add(_dep_path)
|
|
1838
|
+
|
|
1839
|
+
_dep_cls = self._classify_changed_file(_dep_path)
|
|
1840
|
+
if _dep_cls["is_noise"]:
|
|
1815
1841
|
continue
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
f" |
|
|
1825
|
-
f" |
|
|
1842
|
+
|
|
1843
|
+
_dep_atype = _dep_cls["artifact_type"]
|
|
1844
|
+
_dep_score_base = _ARTIFACT_SCORE.get(_dep_atype, 0.45)
|
|
1845
|
+
# score decays 30% per hop so transitives rank below direct dependents
|
|
1846
|
+
_dep_score = round(_dep_score_base * (0.70 ** _hop_num), 2)
|
|
1847
|
+
_dep_role = _role_in_system(_dep_path, _dep_atype, _dep_path in ep_paths)
|
|
1848
|
+
|
|
1849
|
+
_why_str = (
|
|
1850
|
+
f"artifact_type: {_dep_atype} | role_in_system: {_dep_role}"
|
|
1851
|
+
f" | impact_area: {_classify_impact_area(_dep_path, _dep_cls['risk_areas'], _dep_atype)}"
|
|
1852
|
+
f" | propagation_risk: {_PROPAGATION_RISK.get(_dep_atype, 'low')}"
|
|
1853
|
+
f" | change_effect: {_CHANGE_EFFECT.get(_dep_atype, 'modifies application logic')}"
|
|
1854
|
+
f" | pulled_by: hop-{_hop_num} import from {Path(_seed_path).name}"
|
|
1855
|
+
)
|
|
1856
|
+
_reason = (
|
|
1857
|
+
f"hop-{_hop_num} import-dependent of {Path(_seed_path).name}"
|
|
1858
|
+
f" ({_seed_atype}) | score: {_dep_score:.2f}"
|
|
1826
1859
|
)
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1860
|
+
why[_dep_path] = _why_str
|
|
1861
|
+
# Tests are consumers, not structural dependencies — exclude from import graph.
|
|
1862
|
+
# They remain in relevant_files but must not seed further BFS hops.
|
|
1863
|
+
_is_test = _dep_atype == "test"
|
|
1864
|
+
if not _is_test:
|
|
1865
|
+
graph_edges.append({
|
|
1866
|
+
"from": _seed_path, "to": _dep_path,
|
|
1867
|
+
"edge_type": "import_dependency", "hop": _hop_num,
|
|
1868
|
+
})
|
|
1869
|
+
_hop_scored.append((_dep_score, _dep_path))
|
|
1870
|
+
_bfs_collected.append((_hop_num, _dep_score, _dep_path, RelevantFile(
|
|
1871
|
+
path=_dep_path, role=_dep_role, score=_dep_score,
|
|
1872
|
+
reason=_reason, why=_why_str,
|
|
1831
1873
|
)))
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
dep_path
|
|
1841
|
-
for dep_paths in (_import_dep_map.values() if _import_candidates else [])
|
|
1842
|
-
for dep_path in dep_paths
|
|
1843
|
-
))
|
|
1844
|
-
if _hop1_seeds:
|
|
1845
|
-
_hop2_seen = {rf.path for rf in relevant}
|
|
1846
|
-
_hop2_candidates = [
|
|
1847
|
-
p for p in all_paths
|
|
1848
|
-
if p not in _hop2_seen
|
|
1849
|
-
and Path(p).suffix.lower() in {".py", ".java", ".kt", ".ts", ".js", ".tsx", ".jsx", ".mjs"}
|
|
1850
|
-
and (
|
|
1851
|
-
_extract_ddd_domain(p) in affected_modules_set
|
|
1852
|
-
or str(Path(p).parent).replace("\\", "/") in changed_dirs
|
|
1853
|
-
)
|
|
1854
|
-
]
|
|
1855
|
-
if _hop2_candidates:
|
|
1856
|
-
_hop2_dep_map = self._scan_import_dependents(
|
|
1857
|
-
changed_paths=_hop1_seeds,
|
|
1858
|
-
candidate_paths=_hop2_candidates,
|
|
1859
|
-
max_candidates=20,
|
|
1860
|
-
)
|
|
1861
|
-
_hop2_extra: list[tuple[float, str, RelevantFile]] = []
|
|
1862
|
-
for hop1_path, dep_paths in _hop2_dep_map.items():
|
|
1863
|
-
hop1_cls = self._classify_changed_file(hop1_path)
|
|
1864
|
-
hop1_atype = hop1_cls["artifact_type"]
|
|
1865
|
-
for dep_path in dep_paths:
|
|
1866
|
-
if dep_path in _hop2_seen:
|
|
1867
|
-
continue
|
|
1868
|
-
dep_cls = self._classify_changed_file(dep_path)
|
|
1869
|
-
if dep_cls["is_noise"]:
|
|
1870
|
-
continue
|
|
1871
|
-
dep_atype = dep_cls["artifact_type"]
|
|
1872
|
-
dep_base = _ARTIFACT_SCORE.get(dep_atype, 0.45)
|
|
1873
|
-
dep_score = round(dep_base * 0.50, 2)
|
|
1874
|
-
dep_role = _role_in_system(dep_path, dep_atype, dep_path in ep_paths)
|
|
1875
|
-
why_str = (
|
|
1876
|
-
f"artifact_type: {dep_atype} | role_in_system: {dep_role}"
|
|
1877
|
-
f" | impact_area: {_classify_impact_area(dep_path, dep_cls['risk_areas'], dep_atype)}"
|
|
1878
|
-
f" | propagation_risk: {_PROPAGATION_RISK.get(dep_atype, 'low')}"
|
|
1879
|
-
f" | change_effect: {_CHANGE_EFFECT.get(dep_atype, 'modifies application logic')}"
|
|
1880
|
-
f" | pulled_by: hop-2 import from {Path(hop1_path).name}"
|
|
1881
|
-
)
|
|
1882
|
-
reason = f"hop-2 import-dependent of {Path(hop1_path).name} ({hop1_atype}) | score: {dep_score:.2f}"
|
|
1883
|
-
_hop2_extra.append((dep_score, dep_path, RelevantFile(
|
|
1884
|
-
path=dep_path, role=dep_role, score=dep_score,
|
|
1885
|
-
reason=reason, why=why_str,
|
|
1886
|
-
)))
|
|
1887
|
-
why[dep_path] = why_str
|
|
1888
|
-
_hop2_seen.add(dep_path)
|
|
1889
|
-
graph_edges.append({"from": hop1_path, "to": dep_path, "edge_type": "import_dependency", "hop": 2})
|
|
1890
|
-
_hop2_extra.sort(key=lambda x: (-x[0], x[1]))
|
|
1891
|
-
relevant.extend(rf for _, _, rf in _hop2_extra[:5])
|
|
1874
|
+
|
|
1875
|
+
# next frontier = top-N files by score from this hop
|
|
1876
|
+
_hop_scored.sort(key=lambda x: -x[0])
|
|
1877
|
+
_bfs_frontier = [p for _, p in _hop_scored[:_max_results]]
|
|
1878
|
+
|
|
1879
|
+
# merge into relevant: closer hops first, then higher score; cap total at 20
|
|
1880
|
+
_bfs_collected.sort(key=lambda x: (x[0], -x[1], x[2]))
|
|
1881
|
+
relevant.extend(rf for _, _, _, rf in _bfs_collected[:20])
|
|
1892
1882
|
|
|
1893
1883
|
# ── Step 3d: per-file impact scores, change_type, system_impact ─────────
|
|
1894
1884
|
# Downstream fanout: count graph edges originating from each changed file
|
|
@@ -2054,9 +2044,13 @@ class TaskContextBuilder:
|
|
|
2054
2044
|
}
|
|
2055
2045
|
|
|
2056
2046
|
# ── Step 6: analysis gaps ──────────────────────────────────────────────
|
|
2057
|
-
|
|
2047
|
+
_bfs_note = (
|
|
2048
|
+
f"BFS multi-hop import propagation repo-wide (propagation_depth={_max_hop})"
|
|
2049
|
+
if _max_hop >= 1
|
|
2050
|
+
else "no import-link propagation (no scannable changed files)"
|
|
2051
|
+
)
|
|
2058
2052
|
analysis_gaps: list[str] = [
|
|
2059
|
-
f"Related file expansion
|
|
2053
|
+
f"Related file expansion: type-aware chain expansion + {_bfs_note} + module/directory heuristics",
|
|
2060
2054
|
]
|
|
2061
2055
|
if noise_count > 0 and meaningful > 0:
|
|
2062
2056
|
analysis_gaps.append(
|
{sourcecode-1.23.0 → sourcecode-1.24.0}/.agents/skills/source-command-gsd-join-discord/SKILL.md
RENAMED
|
File without changes
|
{sourcecode-1.23.0 → sourcecode-1.24.0}/.agents/skills/source-command-gsd-review-backlog/SKILL.md
RENAMED
|
File without changes
|
{sourcecode-1.23.0 → sourcecode-1.24.0}/.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
|
{sourcecode-1.23.0 → sourcecode-1.24.0}/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
|