sourcecode 1.8.0__tar.gz → 1.10.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.
Files changed (180) hide show
  1. {sourcecode-1.8.0 → sourcecode-1.10.0}/PKG-INFO +1 -1
  2. {sourcecode-1.8.0 → sourcecode-1.10.0}/pyproject.toml +1 -1
  3. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/__init__.py +1 -1
  4. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/cli.py +11 -1
  5. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/serializer.py +28 -9
  6. {sourcecode-1.8.0 → sourcecode-1.10.0}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
  7. {sourcecode-1.8.0 → sourcecode-1.10.0}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
  8. {sourcecode-1.8.0 → sourcecode-1.10.0}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
  9. {sourcecode-1.8.0 → sourcecode-1.10.0}/.continue-here.md +0 -0
  10. {sourcecode-1.8.0 → sourcecode-1.10.0}/.github/workflows/build-windows.yml +0 -0
  11. {sourcecode-1.8.0 → sourcecode-1.10.0}/.gitignore +0 -0
  12. {sourcecode-1.8.0 → sourcecode-1.10.0}/.ruff.toml +0 -0
  13. {sourcecode-1.8.0 → sourcecode-1.10.0}/CONTRIBUTING.md +0 -0
  14. {sourcecode-1.8.0 → sourcecode-1.10.0}/LICENSE +0 -0
  15. {sourcecode-1.8.0 → sourcecode-1.10.0}/README.md +0 -0
  16. {sourcecode-1.8.0 → sourcecode-1.10.0}/SECURITY.md +0 -0
  17. {sourcecode-1.8.0 → sourcecode-1.10.0}/docs/privacy.md +0 -0
  18. {sourcecode-1.8.0 → sourcecode-1.10.0}/docs/schema.md +0 -0
  19. {sourcecode-1.8.0 → sourcecode-1.10.0}/raw +0 -0
  20. {sourcecode-1.8.0 → sourcecode-1.10.0}/run_cli.py +0 -0
  21. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/adaptive_scanner.py +0 -0
  22. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/architecture_analyzer.py +0 -0
  23. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/architecture_summary.py +0 -0
  24. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/ast_extractor.py +0 -0
  25. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/classifier.py +0 -0
  26. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/code_notes_analyzer.py +0 -0
  27. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/confidence_analyzer.py +0 -0
  28. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/context_scorer.py +0 -0
  29. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/context_summarizer.py +0 -0
  30. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/contract_model.py +0 -0
  31. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/contract_pipeline.py +0 -0
  32. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/coverage_parser.py +0 -0
  33. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/dependency_analyzer.py +0 -0
  34. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/__init__.py +0 -0
  35. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/base.py +0 -0
  36. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/csproj_parser.py +0 -0
  37. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/dart.py +0 -0
  38. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/dotnet.py +0 -0
  39. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/elixir.py +0 -0
  40. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/go.py +0 -0
  41. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/heuristic.py +0 -0
  42. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/hybrid.py +0 -0
  43. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/java.py +0 -0
  44. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/jvm_ext.py +0 -0
  45. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/nodejs.py +0 -0
  46. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/parsers.py +0 -0
  47. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/php.py +0 -0
  48. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/project.py +0 -0
  49. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/python.py +0 -0
  50. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/ruby.py +0 -0
  51. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/rust.py +0 -0
  52. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/systems.py +0 -0
  53. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/terraform.py +0 -0
  54. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/detectors/tooling.py +0 -0
  55. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/doc_analyzer.py +0 -0
  56. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/entrypoint_classifier.py +0 -0
  57. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/env_analyzer.py +0 -0
  58. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/file_classifier.py +0 -0
  59. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/git_analyzer.py +0 -0
  60. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/graph_analyzer.py +0 -0
  61. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/metrics_analyzer.py +0 -0
  62. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/prepare_context.py +0 -0
  63. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/progress.py +0 -0
  64. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/ranking_engine.py +0 -0
  65. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/redactor.py +0 -0
  66. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/relevance_scorer.py +0 -0
  67. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/repo_classifier.py +0 -0
  68. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/runtime_classifier.py +0 -0
  69. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/scanner.py +0 -0
  70. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/schema.py +0 -0
  71. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/semantic_analyzer.py +0 -0
  72. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/summarizer.py +0 -0
  73. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/telemetry/__init__.py +0 -0
  74. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/telemetry/config.py +0 -0
  75. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/telemetry/consent.py +0 -0
  76. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/telemetry/events.py +0 -0
  77. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/telemetry/filters.py +0 -0
  78. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/telemetry/transport.py +0 -0
  79. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/tree_utils.py +0 -0
  80. {sourcecode-1.8.0 → sourcecode-1.10.0}/src/sourcecode/workspace.py +0 -0
  81. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/__init__.py +0 -0
  82. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/conftest.py +0 -0
  83. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/coverage.xml +0 -0
  84. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
  85. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/fastapi_app/src/main.py +0 -0
  86. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/go_service/cmd/api/main.go +0 -0
  87. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/go_service/go.mod +0 -0
  88. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/jacoco.xml +0 -0
  89. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/lcov.info +0 -0
  90. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
  91. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/nextjs_app/package.json +0 -0
  92. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
  93. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
  94. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
  95. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
  96. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
  97. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
  98. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
  99. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/application/service/FindAusenteService.java +0 -0
  100. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/domain/entities/Ausente.java +0 -0
  101. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/infrastructure/rest/AusenteRestController.java +0 -0
  102. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/application/service/FindAutocoberturasService.java +0 -0
  103. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/domain/entities/Autocoberturas.java +0 -0
  104. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/infrastructure/rest/AutocoberturasRestController.java +0 -0
  105. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/application/service/FindCalendarioTrabajadorService.java +0 -0
  106. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/domain/entities/CalendarioTrabajador.java +0 -0
  107. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/infrastructure/rest/CalendarioTrabajadorRestController.java +0 -0
  108. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/application/service/FindDepartamentoService.java +0 -0
  109. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/domain/entities/Departamento.java +0 -0
  110. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/infrastructure/rest/DepartamentoRestController.java +0 -0
  111. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/application/service/FindEmpleadoService.java +0 -0
  112. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/domain/entities/Empleado.java +0 -0
  113. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/infrastructure/rest/EmpleadoRestController.java +0 -0
  114. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
  115. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
  116. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
  117. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
  118. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
  119. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
  120. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
  121. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
  122. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_architecture_analyzer.py +0 -0
  123. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_architecture_summary.py +0 -0
  124. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_ast_extractor.py +0 -0
  125. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_block1_reliability.py +0 -0
  126. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_block2_coverage.py +0 -0
  127. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_block5_quality.py +0 -0
  128. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_bug_fixes_v16.py +0 -0
  129. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_classifier.py +0 -0
  130. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_cli.py +0 -0
  131. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_code_notes_analyzer.py +0 -0
  132. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_context_scorer.py +0 -0
  133. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_contract_pipeline.py +0 -0
  134. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_coverage_parser.py +0 -0
  135. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_cross_consistency.py +0 -0
  136. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_dependency_analyzer_node_python.py +0 -0
  137. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_dependency_analyzer_polyglot.py +0 -0
  138. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_dependency_schema.py +0 -0
  139. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_detector_dotnet.py +0 -0
  140. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_detector_go_rust_java.py +0 -0
  141. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_detector_nodejs.py +0 -0
  142. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_detector_php_ruby_dart.py +0 -0
  143. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_detector_python.py +0 -0
  144. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_detector_universal_managed.py +0 -0
  145. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_detector_universal_systems.py +0 -0
  146. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_detectors_base.py +0 -0
  147. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_doc_analyzer_jsdom.py +0 -0
  148. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_doc_analyzer_python.py +0 -0
  149. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_graph_analyzer_polyglot.py +0 -0
  150. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_graph_analyzer_python_node.py +0 -0
  151. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_graph_schema.py +0 -0
  152. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_hybrid_inference.py +0 -0
  153. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration.py +0 -0
  154. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration_dependencies.py +0 -0
  155. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration_detection.py +0 -0
  156. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration_docs.py +0 -0
  157. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration_graph_modules.py +0 -0
  158. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration_lqn.py +0 -0
  159. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration_metrics.py +0 -0
  160. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration_multistack.py +0 -0
  161. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration_semantics.py +0 -0
  162. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_integration_universal.py +0 -0
  163. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_java_spring_integration.py +0 -0
  164. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_metrics_analyzer.py +0 -0
  165. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_packaging.py +0 -0
  166. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_phase1_improvements.py +0 -0
  167. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_pipeline_integrity.py +0 -0
  168. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_real_projects.py +0 -0
  169. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_redactor.py +0 -0
  170. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_scanner.py +0 -0
  171. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_schema.py +0 -0
  172. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_schema_normalization.py +0 -0
  173. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_semantic_analyzer_node.py +0 -0
  174. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_semantic_analyzer_python.py +0 -0
  175. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_semantic_import_resolution.py +0 -0
  176. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_semantic_schema.py +0 -0
  177. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_signal_hierarchy.py +0 -0
  178. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_summarizer.py +0 -0
  179. {sourcecode-1.8.0 → sourcecode-1.10.0}/tests/test_telemetry.py +0 -0
  180. {sourcecode-1.8.0 → sourcecode-1.10.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.8.0
3
+ Version: 1.10.0
4
4
  Summary: Deterministic codebase context for AI coding agents
5
5
  License: Apache License
6
6
  Version 2.0, January 2004
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "1.8.0"
7
+ version = "1.10.0"
8
8
  description = "Deterministic codebase context for AI coding agents"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,3 +1,3 @@
1
1
  """sourcecode — Deterministic codebase context maps for AI coding agents."""
2
2
 
3
- __version__ = "1.8.0"
3
+ __version__ = "1.10.0"
@@ -1485,7 +1485,17 @@ def main(
1485
1485
  if _is_contract_mode and sm.file_contracts:
1486
1486
  from sourcecode.serializer import _serialize_contract_minimal
1487
1487
  data.pop("file_relevance", None)
1488
- data["contracts"] = [_serialize_contract_minimal(c) for c in sm.file_contracts]
1488
+ _MAX_AGENT_CONTRACTS = 10
1489
+ _all_contracts = sm.file_contracts
1490
+ _sorted = sorted(_all_contracts, key=lambda c: getattr(c, "relevance_score", 0.0), reverse=True)
1491
+ _sampled = _sorted[:_MAX_AGENT_CONTRACTS]
1492
+ _total_contracts = len(_all_contracts)
1493
+ data["contracts"] = [_serialize_contract_minimal(c) for c in _sampled]
1494
+ data["contracts_meta"] = {
1495
+ "total": _total_contracts,
1496
+ "shown": len(_sampled),
1497
+ "truncated": _total_contracts > _MAX_AGENT_CONTRACTS,
1498
+ }
1489
1499
  if sm.contract_summary is not None:
1490
1500
  cs = sm.contract_summary
1491
1501
  data["contract_summary"] = {
@@ -38,6 +38,19 @@ _MONOREPO_PKGS_CAP = 8 # max workspace/runtime packages shown
38
38
  _KEY_DEPS_CAP = 50 # max key dependencies shown
39
39
  _CODE_NOTES_CAP = 15 # max code notes in default output
40
40
  _ENV_MAP_CAP = 15 # max env var entries in default output
41
+ _MAX_DEFAULT_CONTRACTS = 20 # max contracts in default/standard contract output
42
+ _MAX_HARD_SIGNALS_DEFAULT = 20 # max hard_signals entries in default output
43
+
44
+
45
+ def _cap_contracts_for_output(
46
+ contracts: list[Any],
47
+ max_count: int = _MAX_DEFAULT_CONTRACTS,
48
+ ) -> tuple[list[Any], dict[str, Any]]:
49
+ """Sort contracts by relevance_score desc, cap to max_count, return (sampled, meta)."""
50
+ total = len(contracts)
51
+ sampled = sorted(contracts, key=lambda c: getattr(c, "relevance_score", 0.0), reverse=True)[:max_count]
52
+ meta: dict[str, Any] = {"total": total, "shown": len(sampled), "truncated": total > max_count}
53
+ return sampled, meta
41
54
 
42
55
 
43
56
  def to_json(sm: SourceMap | dict[str, Any], indent: int = 2) -> str:
@@ -958,7 +971,13 @@ def agent_view(sm: SourceMap) -> dict[str, Any]:
958
971
  "sections": _section_confidence(sm),
959
972
  }
960
973
  if cs.hard_signals:
961
- conf["hard_signals"] = cs.hard_signals
974
+ _MAX_HARD_SIGNALS = 20
975
+ _hs = cs.hard_signals
976
+ _hs_total = len(_hs)
977
+ conf["hard_signals"] = _hs[:_MAX_HARD_SIGNALS]
978
+ if _hs_total > _MAX_HARD_SIGNALS:
979
+ conf["hard_signals_truncated"] = True
980
+ conf["hard_signals_total"] = _hs_total
962
981
  if cs.soft_signals:
963
982
  conf["soft_signals"] = cs.soft_signals
964
983
  if cs.ignored_signals:
@@ -1224,13 +1243,11 @@ def _contract_view_minimal(
1224
1243
  if getattr(sm, "app_server_hint", None):
1225
1244
  result["app_server_hint"] = sm.app_server_hint
1226
1245
 
1227
- # Per-file contracts
1246
+ # Per-file contracts — capped to avoid token bloat on large projects
1228
1247
  if contracts:
1229
- serialized: list[dict[str, Any]] = []
1230
- for c in contracts:
1231
- item = _serialize_contract_minimal(c)
1232
- serialized.append(item)
1233
- result["contracts"] = serialized
1248
+ _capped, _meta = _cap_contracts_for_output(contracts)
1249
+ result["contracts"] = [_serialize_contract_minimal(c) for c in _capped]
1250
+ result["contracts_meta"] = _meta
1234
1251
 
1235
1252
  # Optional analysis sections — included when the analyzer explicitly ran
1236
1253
  # (user passed --dependencies, --env-map, --code-notes, --git-context)
@@ -1581,10 +1598,11 @@ def _contract_view_standard(
1581
1598
  "stack": sm.confidence_summary.stack_confidence,
1582
1599
  }
1583
1600
 
1584
- # Per-file contracts (full detail)
1601
+ # Per-file contracts (full detail) — capped to avoid token bloat on large projects
1585
1602
  if contracts:
1603
+ _capped, _meta = _cap_contracts_for_output(contracts)
1586
1604
  serialized: list[dict[str, Any]] = []
1587
- for c in contracts:
1605
+ for c in _capped:
1588
1606
  if getattr(c, "language", None) == "mybatis-xml":
1589
1607
  item = _serialize_contract_mybatis_xml(c)
1590
1608
  item["relevance_score"] = round(c.relevance_score, 3)
@@ -1640,6 +1658,7 @@ def _contract_view_standard(
1640
1658
  item["method"] = c.extraction_method
1641
1659
  serialized.append(item)
1642
1660
  result["contracts"] = serialized
1661
+ result["contracts_meta"] = _meta
1643
1662
 
1644
1663
  # Optional analysis sections (deep mode or when analyzers ran)
1645
1664
  if include_optional:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes