sourcecode 1.13.0__tar.gz → 1.16.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.

Potentially problematic release.


This version of sourcecode might be problematic. Click here for more details.

Files changed (191) hide show
  1. sourcecode-1.16.0/.continue-here.md +125 -0
  2. {sourcecode-1.13.0 → sourcecode-1.16.0}/PKG-INFO +140 -49
  3. sourcecode-1.16.0/README.md +205 -0
  4. {sourcecode-1.13.0 → sourcecode-1.16.0}/pyproject.toml +1 -1
  5. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/__init__.py +1 -1
  6. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/architecture_analyzer.py +146 -1
  7. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/architecture_summary.py +17 -21
  8. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/cli.py +73 -18
  9. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/code_notes_analyzer.py +3 -2
  10. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/confidence_analyzer.py +54 -0
  11. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/doc_analyzer.py +2 -2
  12. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/git_analyzer.py +29 -0
  13. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/prepare_context.py +39 -6
  14. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/schema.py +5 -0
  15. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/serializer.py +264 -17
  16. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/summarizer.py +24 -2
  17. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/tree_utils.py +19 -0
  18. sourcecode-1.16.0/tests/fixtures/latin1_sample.java +8 -0
  19. sourcecode-1.16.0/tests/fixtures/latin1_sample_iso.java +2 -0
  20. sourcecode-1.16.0/tests/test_encoding_regression.py +62 -0
  21. sourcecode-1.16.0/tests/test_task_differentiation.py +82 -0
  22. sourcecode-1.13.0/.continue-here.md +0 -105
  23. sourcecode-1.13.0/README.md +0 -114
  24. {sourcecode-1.13.0 → sourcecode-1.16.0}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
  25. {sourcecode-1.13.0 → sourcecode-1.16.0}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
  26. {sourcecode-1.13.0 → sourcecode-1.16.0}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
  27. {sourcecode-1.13.0 → sourcecode-1.16.0}/.github/workflows/build-windows.yml +0 -0
  28. {sourcecode-1.13.0 → sourcecode-1.16.0}/.gitignore +0 -0
  29. {sourcecode-1.13.0 → sourcecode-1.16.0}/.ruff.toml +0 -0
  30. {sourcecode-1.13.0 → sourcecode-1.16.0}/CONTRIBUTING.md +0 -0
  31. {sourcecode-1.13.0 → sourcecode-1.16.0}/LICENSE +0 -0
  32. {sourcecode-1.13.0 → sourcecode-1.16.0}/SECURITY.md +0 -0
  33. {sourcecode-1.13.0 → sourcecode-1.16.0}/docs/privacy.md +0 -0
  34. {sourcecode-1.13.0 → sourcecode-1.16.0}/docs/schema.md +0 -0
  35. {sourcecode-1.13.0 → sourcecode-1.16.0}/raw +0 -0
  36. {sourcecode-1.13.0 → sourcecode-1.16.0}/run_cli.py +0 -0
  37. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/adaptive_scanner.py +0 -0
  38. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/ast_extractor.py +0 -0
  39. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/classifier.py +0 -0
  40. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/context_scorer.py +0 -0
  41. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/context_summarizer.py +0 -0
  42. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/contract_model.py +0 -0
  43. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/contract_pipeline.py +0 -0
  44. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/coverage_parser.py +0 -0
  45. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/dependency_analyzer.py +0 -0
  46. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/__init__.py +0 -0
  47. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/base.py +0 -0
  48. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/csproj_parser.py +0 -0
  49. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/dart.py +0 -0
  50. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/dotnet.py +0 -0
  51. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/elixir.py +0 -0
  52. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/go.py +0 -0
  53. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/heuristic.py +0 -0
  54. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/hybrid.py +0 -0
  55. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/java.py +0 -0
  56. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/jvm_ext.py +0 -0
  57. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/nodejs.py +0 -0
  58. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/parsers.py +0 -0
  59. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/php.py +0 -0
  60. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/project.py +0 -0
  61. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/python.py +0 -0
  62. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/ruby.py +0 -0
  63. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/rust.py +0 -0
  64. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/systems.py +0 -0
  65. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/terraform.py +0 -0
  66. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/detectors/tooling.py +0 -0
  67. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/entrypoint_classifier.py +0 -0
  68. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/env_analyzer.py +0 -0
  69. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/file_classifier.py +0 -0
  70. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/graph_analyzer.py +0 -0
  71. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/metrics_analyzer.py +0 -0
  72. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/progress.py +0 -0
  73. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/ranking_engine.py +0 -0
  74. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/redactor.py +0 -0
  75. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/relevance_scorer.py +0 -0
  76. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/repo_classifier.py +0 -0
  77. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/runtime_classifier.py +0 -0
  78. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/scanner.py +0 -0
  79. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/semantic_analyzer.py +0 -0
  80. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/telemetry/__init__.py +0 -0
  81. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/telemetry/config.py +0 -0
  82. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/telemetry/consent.py +0 -0
  83. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/telemetry/events.py +0 -0
  84. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/telemetry/filters.py +0 -0
  85. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/telemetry/transport.py +0 -0
  86. {sourcecode-1.13.0 → sourcecode-1.16.0}/src/sourcecode/workspace.py +0 -0
  87. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/__init__.py +0 -0
  88. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/conftest.py +0 -0
  89. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/coverage.xml +0 -0
  90. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
  91. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/fastapi_app/src/main.py +0 -0
  92. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/go_service/cmd/api/main.go +0 -0
  93. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/go_service/go.mod +0 -0
  94. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/jacoco.xml +0 -0
  95. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/lcov.info +0 -0
  96. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
  97. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/nextjs_app/package.json +0 -0
  98. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
  99. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
  100. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
  101. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
  102. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
  103. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
  104. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
  105. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/application/service/FindAusenteService.java +0 -0
  106. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/domain/entities/Ausente.java +0 -0
  107. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/infrastructure/rest/AusenteRestController.java +0 -0
  108. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/application/service/FindAutocoberturasService.java +0 -0
  109. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/domain/entities/Autocoberturas.java +0 -0
  110. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/infrastructure/rest/AutocoberturasRestController.java +0 -0
  111. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/application/service/FindCalendarioTrabajadorService.java +0 -0
  112. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/domain/entities/CalendarioTrabajador.java +0 -0
  113. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/infrastructure/rest/CalendarioTrabajadorRestController.java +0 -0
  114. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/application/service/FindDepartamentoService.java +0 -0
  115. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/domain/entities/Departamento.java +0 -0
  116. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/infrastructure/rest/DepartamentoRestController.java +0 -0
  117. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/application/service/FindEmpleadoService.java +0 -0
  118. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/domain/entities/Empleado.java +0 -0
  119. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/infrastructure/rest/EmpleadoRestController.java +0 -0
  120. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
  121. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
  122. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
  123. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
  124. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
  125. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
  126. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
  127. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
  128. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
  129. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
  130. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
  131. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_architecture_analyzer.py +0 -0
  132. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_architecture_summary.py +0 -0
  133. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_ast_extractor.py +0 -0
  134. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_block1_reliability.py +0 -0
  135. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_block2_coverage.py +0 -0
  136. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_block5_quality.py +0 -0
  137. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_bug_fixes_v16.py +0 -0
  138. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_classifier.py +0 -0
  139. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_cli.py +0 -0
  140. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_code_notes_analyzer.py +0 -0
  141. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_context_scorer.py +0 -0
  142. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_contract_pipeline.py +0 -0
  143. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_coverage_parser.py +0 -0
  144. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_cross_consistency.py +0 -0
  145. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_dependency_analyzer_node_python.py +0 -0
  146. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_dependency_analyzer_polyglot.py +0 -0
  147. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_dependency_schema.py +0 -0
  148. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_detector_dotnet.py +0 -0
  149. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_detector_go_rust_java.py +0 -0
  150. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_detector_nodejs.py +0 -0
  151. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_detector_php_ruby_dart.py +0 -0
  152. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_detector_python.py +0 -0
  153. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_detector_universal_managed.py +0 -0
  154. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_detector_universal_systems.py +0 -0
  155. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_detectors_base.py +0 -0
  156. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_doc_analyzer_jsdom.py +0 -0
  157. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_doc_analyzer_python.py +0 -0
  158. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_graph_analyzer_polyglot.py +0 -0
  159. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_graph_analyzer_python_node.py +0 -0
  160. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_graph_schema.py +0 -0
  161. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_hybrid_inference.py +0 -0
  162. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration.py +0 -0
  163. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration_dependencies.py +0 -0
  164. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration_detection.py +0 -0
  165. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration_docs.py +0 -0
  166. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration_graph_modules.py +0 -0
  167. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration_lqn.py +0 -0
  168. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration_metrics.py +0 -0
  169. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration_multistack.py +0 -0
  170. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration_semantics.py +0 -0
  171. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_integration_universal.py +0 -0
  172. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_java_spring_integration.py +0 -0
  173. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_metrics_analyzer.py +0 -0
  174. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_packaging.py +0 -0
  175. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_phase1_improvements.py +0 -0
  176. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_pipeline_integrity.py +0 -0
  177. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_real_projects.py +0 -0
  178. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_redactor.py +0 -0
  179. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_scanner.py +0 -0
  180. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_schema.py +0 -0
  181. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_schema_normalization.py +0 -0
  182. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_semantic_analyzer_node.py +0 -0
  183. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_semantic_analyzer_python.py +0 -0
  184. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_semantic_import_resolution.py +0 -0
  185. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_semantic_schema.py +0 -0
  186. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_signal_hierarchy.py +0 -0
  187. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_summarizer.py +0 -0
  188. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_surface_honesty.py +0 -0
  189. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_telemetry.py +0 -0
  190. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_v1_10_regressions.py +0 -0
  191. {sourcecode-1.13.0 → sourcecode-1.16.0}/tests/test_workspace_analyzer.py +0 -0
@@ -0,0 +1,125 @@
1
+ # Continue Here — atlas-cli v1.14.0 defect patch (saint-server)
2
+
3
+ **Paused:** 2026-05-13
4
+ **Repo:** `/Users/user/Downloads/atlas-cli`
5
+ **Branch:** master
6
+
7
+ ---
8
+
9
+ ## Estado actual
10
+
11
+ Sesión: patch de 15 defectos contra saint-server (Spring Boot 2.7 / Java 8 / 100 módulos DDD / 467 controllers). **Sin commit** (instrucción explícita: "no hagas commit"). 10 ficheros fuente modificados + 4 ficheros nuevos de test/fixtures.
12
+
13
+ ---
14
+
15
+ ## Defectos corregidos esta sesión
16
+
17
+ ### CRITICAL
18
+ | ID | Fix | Fichero |
19
+ |----|-----|---------|
20
+ | C1 | `_extract_first_useful_paragraph()` rechaza snippets de startup via `_STARTUP_RE` (≥2 hits) | `summarizer.py` |
21
+ | C2 | `_bootstrap_structured()` emite `modules` (todos los DDD modules) en vez de `sample` (5 primeros) | `serializer.py` |
22
+ | C3 | `safe_read_text()` con fallback UTF-8→ISO-8859-1→UTF-8/replace — elimina double-encoding de chars españoles | `tree_utils.py` + 3 consumidores |
23
+ | C4 | `_scan_java_patterns()` escanea Java para `@interface` + `extends`, emite `custom_annotations[]` + `base_classes[]` | `architecture_analyzer.py` + `schema.py` |
24
+
25
+ ### HIGH
26
+ | ID | Fix | Fichero |
27
+ |----|-----|---------|
28
+ | H1 | `_spring_profiles_context()` → `{detected, per_profile_variants, note}` | `serializer.py` |
29
+ | H2 | `_is_dto_mapper()` separa `@Mapper` reales de DtoMapper. Añade `dto_mappers[]`, elimina falsos positivos en `missing_xml` | `serializer.py` |
30
+ | H3 | `_transactional_summary()` emite todas las clases; trunca a 10 con `truncated: true` + `note` | `serializer.py` |
31
+ | H4 | `_TASK_CONTENT_MAP` per-task filter en prepare-context. Fix `review-pr` suspected_areas filtrado a root | `cli.py` + `prepare_context.py` |
32
+ | H5 | Fallback `git log -n 100` cuando scan por fecha retorna 0. Nuevo campo `hotspot_method` | `git_analyzer.py` + `schema.py` |
33
+
34
+ ### MEDIUM
35
+ | ID | Fix | Fichero |
36
+ |----|-----|---------|
37
+ | M1 | `_security_surface_from_eps()` añade campo `schema` descriptor. Mantiene `resource_names` (compat) | `serializer.py` |
38
+ | M2 | `_jndi_datasources()` escanea `application.yml` / `persistence.xml` para JNDI names | `serializer.py` |
39
+ | M3 | `_file_relevance()` scoring: +10 entry points, +8 base classes, +6 security config, +2 utils | `serializer.py` |
40
+ | M4 | `--agent` auto-habilita `architecture = True` | `cli.py` |
41
+ | M5 | Help `--compact` actualizado: "1000–3000 tokens" (era "600–800") | `cli.py` |
42
+
43
+ ### LOW
44
+ | ID | Fix | Fichero |
45
+ |----|-----|---------|
46
+ | L1 | `analysis_gaps` expandido: ADRs missing, OpenAPI missing, profile YAMLs sin comentarios | `confidence_analyzer.py` |
47
+
48
+ ---
49
+
50
+ ## Ficheros modificados
51
+
52
+ ```
53
+ src/sourcecode/architecture_analyzer.py +147 líneas — C4
54
+ src/sourcecode/cli.py +90 líneas — H4, M4, M5
55
+ src/sourcecode/code_notes_analyzer.py +5 líneas — C3
56
+ src/sourcecode/confidence_analyzer.py +54 líneas — L1
57
+ src/sourcecode/doc_analyzer.py +4 líneas — C3
58
+ src/sourcecode/git_analyzer.py +29 líneas — H5
59
+ src/sourcecode/schema.py +5 líneas — C4, H5
60
+ src/sourcecode/serializer.py +245 líneas — C2, H1-H3, M1-M3
61
+ src/sourcecode/summarizer.py +26 líneas — C1, C3
62
+ src/sourcecode/tree_utils.py +19 líneas — C3 utility
63
+ src/sourcecode/prepare_context.py +5 líneas — H4
64
+ ```
65
+
66
+ ### Ficheros nuevos
67
+ ```
68
+ tests/test_encoding_regression.py — 4 tests C3
69
+ tests/test_task_differentiation.py — 6 tests H4
70
+ tests/fixtures/latin1_sample.java — fixture UTF-8
71
+ tests/fixtures/latin1_sample_iso.java — fixture Latin-1
72
+ ```
73
+
74
+ ---
75
+
76
+ ## Tests
77
+
78
+ - **743 passed, 3 skipped** — 0 regresiones
79
+ - Fallos pre-existentes excluidos:
80
+ - `test_block2_coverage.py::test_java_marked_unsupported` — bug pre-existente en test (`name` vs `symbol`)
81
+ - `test_dependency_analyzer_node_python.py::test_python_requirements_without_lockfile_keeps_declared_versions` — versión fixture incorrecta
82
+ - `test_pipeline_integrity.py::TestBenchmarkContamination::test_agent_splits_development_and_auxiliary_eps` — pre-existente
83
+
84
+ ---
85
+
86
+ ## Pendientes para próxima sesión
87
+
88
+ 1. **Smoke test en saint-server real:**
89
+ ```bash
90
+ python3 run_cli.py /path/to/saint-server --compact --agent --git-context 2>/dev/null | python3 -c "
91
+ import json,sys; d=json.load(sys.stdin)
92
+ print('profiles:', d.get('spring_profiles'))
93
+ print('arch method:', d.get('architecture',{}).get('method'))
94
+ print('custom_annotations:', len(d.get('architecture',{}).get('custom_annotations',[])))
95
+ print('hotspot_method:', d.get('git_context',{}).get('hotspot_method'))
96
+ "
97
+ ```
98
+
99
+ 2. **Commit** cuando listo:
100
+ ```bash
101
+ git add src/sourcecode/ tests/test_encoding_regression.py tests/test_task_differentiation.py tests/fixtures/latin1_sample*.java
102
+ git commit -m "fix: 15 saint-server defects — C1-C4 critical, H1-H5 high, M1-M5 medium, L1 low"
103
+ ```
104
+
105
+ 3. **Pre-existing bugs** (no tocados):
106
+ - `_OPTIONAL_LABEL_MAP` en `architecture_summary.py` tiene valores en español
107
+ - `lombok` / `sqlite-jdbc` clasificados `role: runtime` incorrectamente
108
+ - `test_pipeline_integrity::test_agent_splits_development_and_auxiliary_eps` — `agent_view()` no emite `auxiliary_entry_points`
109
+
110
+ ---
111
+
112
+ ## Para retomar
113
+
114
+ ```bash
115
+ cd /Users/user/Downloads/atlas-cli
116
+ git diff --stat # verificar 10 ficheros modificados
117
+ python3 -m pytest tests/ \
118
+ --ignore=tests/test_block2_coverage.py \
119
+ --ignore=tests/test_dependency_analyzer_node_python.py \
120
+ --ignore=tests/test_pipeline_integrity.py -q
121
+ # Expected: 743 passed, 3 skipped
122
+ ```
123
+
124
+ ---
125
+ *Pausado 2026-05-13 — gsd:pause-work*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 1.13.0
3
+ Version: 1.16.0
4
4
  Summary: Deterministic codebase context for AI coding agents
5
5
  License: Apache License
6
6
  Version 2.0, January 2004
@@ -219,115 +219,206 @@ Description-Content-Type: text/markdown
219
219
 
220
220
  # sourcecode
221
221
 
222
- **Deterministic codebase context for AI coding agents.**
222
+ **Compressed AI-ready context for Java/Spring enterprise codebases.**
223
223
 
224
- ![Version](https://img.shields.io/badge/version-1.0.0-blue)
225
- ![Status](https://img.shields.io/badge/status-MVP-orange)
224
+ ![Version](https://img.shields.io/badge/version-1.16.0-blue)
226
225
  ![Python](https://img.shields.io/badge/python-3.10%2B-green)
227
226
 
228
227
  ---
229
228
 
230
229
  ## What is it?
231
230
 
232
- `sourcecode` analyzes a repository and produces a structured context map (JSON or YAML) designed to be consumed by AI agents or language models. It solves the "stuff the whole repo into the prompt" problem by instead producing a deterministic extract: entry points, dependencies, stacks, inline annotations, environment variables, and git activity. It is an MVP tool under active evolution — the semantic analysis and module graph features work but have known limitations that are explicitly documented below.
231
+ `sourcecode` analyzes a repository and produces structured JSON or YAML designed to be fed directly to AI agents or language models. It solves the "stuff the whole repo into the prompt" problem by extracting a deterministic, high-signal summary: stack detection, entry points, dependencies, git hotspots, inline annotations, and confidence metadata.
232
+
233
+ Optimized for Java/Spring Boot monorepos. Works on any codebase.
233
234
 
234
235
  ---
235
236
 
236
237
  ## Installation
237
238
 
238
- **Prerequisites:** Python 3.10+
239
+ ### Homebrew (macOS / Linux)
240
+
241
+ ```bash
242
+ brew tap haroundominique/sourcecode
243
+ brew install sourcecode
244
+ ```
245
+
246
+ ### pip / pipx
239
247
 
240
248
  ```bash
241
249
  pip install sourcecode
242
- # or with pipx for isolation:
250
+ # or with isolation:
243
251
  pipx install sourcecode
244
252
  ```
245
253
 
246
- Verify installation:
254
+ ### Verify
247
255
 
248
256
  ```bash
249
257
  sourcecode version
250
- # sourcecode 1.0.0
258
+ # sourcecode 1.16.0
251
259
  ```
252
260
 
253
261
  ---
254
262
 
255
263
  ## Quickstart
256
264
 
257
- The primary command — a high-signal, low-noise summary for Java/Spring codebases:
258
-
259
265
  ```bash
266
+ # High-signal summary (~600-800 tokens) — recommended starting point
260
267
  sourcecode --compact
261
- # ~600-800 tokens: stack, entry points, dependencies, risk flags, confidence.
262
268
 
269
+ # Add git hotspots and uncommitted file count
263
270
  sourcecode --compact --git-context
264
- # Adds git hotspots and uncommitted file count.
265
271
 
272
+ # Analyze a specific path
273
+ sourcecode /path/to/repo --compact
274
+
275
+ # Copy result to clipboard
266
276
  sourcecode --compact --copy
267
- # Copies the result to clipboard.
277
+
278
+ # Structured output for AI agents (identity, entry points, dependencies, confidence)
279
+ sourcecode --agent
280
+
281
+ # Only process git-modified files (forces compact output)
282
+ sourcecode --changed-only
268
283
  ```
269
284
 
270
- Example output for a Spring Boot project:
285
+ Example output for a Spring Boot project (`--compact`):
271
286
 
272
287
  ```json
273
288
  {
274
289
  "project_type": "api",
275
- "stacks": [{ "stack": "java", "frameworks": ["Spring Boot", "MyBatis"] }],
290
+ "stacks": [{ "stack": "java", "detection_method": "manifest", "confidence": "high",
291
+ "primary": true, "frameworks": ["Spring Boot", "MyBatis"] }],
276
292
  "entry_points": {
277
293
  "bootstrap": ["src/main/java/io/spring/RealWorldApplication.java"],
278
- "security": ["src/main/java/io/spring/api/security/WebSecurityConfig.java"],
279
- "controllers": { "count": 8, "sample": [...] }
294
+ "security": ["src/main/java/io/spring/api/security/WebSecurityConfig.java"],
295
+ "controllers": { "count": 8, "sample": ["src/main/java/io/spring/api/ArticleApi.java"] }
280
296
  },
281
297
  "key_dependencies": [
282
298
  { "name": "org.mybatis.spring.boot:mybatis-spring-boot-starter",
283
299
  "version": "2.2.2", "risk_flags": ["spring-boot-2.x-eol"] }
284
300
  ],
285
301
  "language_version": "11",
286
- "deployment": { "spring_boot_version": "2.6.3" },
302
+ "deployment": { "spring_boot_version": "2.6.3", "packaging": "jar" },
287
303
  "mybatis": { "mapper_interfaces": 4, "xml_files": 4 },
288
- "confidence_summary": { "overall": "high" }
304
+ "confidence_summary": { "overall": "high", "stack": "high", "entry_points": "high" }
289
305
  }
290
306
  ```
291
307
 
292
- For full structured output with per-file contracts and signals, use `--agent`:
308
+ ---
309
+
310
+ ## Flags reference
311
+
312
+ | Flag | Alias | Default | Description |
313
+ |------|-------|---------|-------------|
314
+ | `--compact` | | off | **Recommended.** ~600-800 token summary: stack, entry points, dependencies, risk flags, confidence, gaps. Optimized for agent context windows. |
315
+ | `--agent` | | off | Structured noise-free JSON for AI agents: identity, entry points, dependencies, confidence, gaps. Auto-enables dependency, env-var, and code-notes analysis. |
316
+ | `--git-context` | `-g` | off | Include git activity: recent commits, change hotspots, and uncommitted changes. |
317
+ | `--changed-only` | | off | Limit output to git-modified files (staged, unstaged, untracked). Forces compact output. |
318
+ | `--depth` | | `4` | File tree traversal depth (1–20). Java/Maven projects auto-adjust to 12. |
319
+ | `--format` | `-f` | `json` | Output format: `json` or `yaml`. |
320
+ | `--output` | `-o` | stdout | Write output to a file instead of stdout. |
321
+ | `--copy` | `-c` | off | Copy output to clipboard after a successful run. No-op when `--output` is set or clipboard is unavailable. |
322
+ | `--no-redact` | | off | Disable automatic secret redaction. Output may contain sensitive values. |
323
+ | `--version` | `-v` | — | Show version and exit. |
324
+
325
+ ---
326
+
327
+ ## `prepare-context` — task-specific context
328
+
329
+ Generates a focused context bundle for a specific AI coding task. More targeted than `--compact`: each task re-ranks files according to its own signal priorities.
293
330
 
294
331
  ```bash
295
- sourcecode --agent
332
+ sourcecode prepare-context TASK [PATH] [OPTIONS]
333
+ ```
334
+
335
+ ### Tasks
336
+
337
+ | Task | What it surfaces | Primary use |
338
+ |------|-----------------|-------------|
339
+ | `explain` | Architecture, entry points, key dependencies | Onboarding an LLM to a new project |
340
+ | `onboard` | Full structural context: entry points, architecture, key files, dependencies | New developer or agent joining the codebase |
341
+ | `fix-bug` | Files ranked by risk (annotations, churn, uncommitted changes), suspected areas | Debugging session |
342
+ | `refactor` | Structural problems, improvement opportunities, high-annotation files | Code quality review |
343
+ | `generate-tests` | Source files without test pairs, coverage gap analysis | Writing missing tests |
344
+ | `review-pr` | Uncommitted/changed files + architectural impact | Pre-merge review |
345
+ | `delta` | Only files changed in a git range (`--since`), affected entry points | Incremental CI context |
346
+
347
+ ### Options
348
+
349
+ | Option | Description |
350
+ |--------|-------------|
351
+ | `--since REF` | Git ref for `delta` task (e.g. `HEAD~3`, `main`, `v1.2.0`). Required for `delta`; ignored for other tasks. |
352
+ | `--llm-prompt` | Append a ready-to-use LLM prompt to the output. |
353
+ | `--dry-run` | Show what would be analyzed without running it. |
354
+ | `--copy` / `-c` | Copy output to clipboard after a successful run. |
355
+ | `--task-help` | List all tasks with descriptions and exit. |
356
+
357
+ ### Examples
358
+
359
+ ```bash
360
+ # Explain the current repo
361
+ sourcecode prepare-context explain
362
+
363
+ # Analyze a specific repo path
364
+ sourcecode prepare-context explain /path/to/repo
365
+
366
+ # Focus on bug-prone files
367
+ sourcecode prepare-context fix-bug
368
+
369
+ # Incremental context: files changed since branch diverged from main
370
+ sourcecode prepare-context delta . --since main
371
+
372
+ # Onboard with a ready-to-paste LLM prompt
373
+ sourcecode prepare-context onboard --llm-prompt
374
+
375
+ # List all tasks
376
+ sourcecode prepare-context --task-help
296
377
  ```
297
378
 
298
379
  ---
299
380
 
300
- ## Flags reference
381
+ ## Output schema
382
+
383
+ All outputs include a `confidence_summary` block with `overall`, `stack`, and `entry_points` confidence levels (`high` / `medium` / `low`), plus an `analysis_gaps` list describing what could not be analyzed and why.
384
+
385
+ ### Java/Spring-specific fields
386
+
387
+ When a Java manifest (`pom.xml` or `build.gradle`) is detected, the output includes additional fields:
301
388
 
302
- ### Global options
303
-
304
- | Flag | Alias | Type | Default | Description |
305
- |------|-------|------|---------|-------------|
306
- | `--compact` | | flag | off | **Recommended.** ~600-800 token summary: stack, entry points, deps, risk flags, confidence. |
307
- | `--git-context` | `-g` | flag | off | Adds git hotspots (top changed files), branch, uncommitted file count. Use with `--compact`. |
308
- | `--agent` | | flag | off | Full structured JSON for AI agents. Auto-enables dependency, env-var, and code-notes analysis. |
309
- | `--changed-only` | | flag | off | Limit output to git-modified files (staged, unstaged, untracked). |
310
- | `--depth` | | `INT [1–20]` | `4` | File tree traversal depth. Java projects auto-adjust to 12. |
311
- | `--format` | `-f` | `json\|yaml` | `json` | Output format. JSON preferred in pipelines. |
312
- | `--output` | `-o` | `PATH` | stdout | Write output to a file instead of stdout. |
313
- | `--copy` | `-c` | flag | off | Copy output to clipboard after a successful run. |
314
- | `--no-redact` | | flag | off | Disable automatic secret redaction. Output may contain sensitive values. |
315
- | `--version` | `-v` | flag | — | Show version and exit. |
389
+ | Field | Description |
390
+ |-------|-------------|
391
+ | `language_version` | Java version from `maven.compiler.source` or equivalent |
392
+ | `deployment.spring_boot_version` | Spring Boot version |
393
+ | `deployment.packaging` | `jar` or `war` |
394
+ | `deployment.app_server_hint` | `weblogic`, `wildfly`, etc. (when detectable) |
395
+ | `security_surface.resource_names` | Values of `@M3FiltroSeguridad(nombreRecurso=...)` annotations across all controllers |
396
+ | `mybatis` | Mapper interface / XML file pairing summary |
397
+ | `transactional_boundaries` | Classes annotated with `@Transactional` |
398
+ | `deployment_risks` | Static risk flags: `spring-boot-2.x-eol`, `legacy-java-runtime`, `legacy-app-server-deployment` |
316
399
 
317
400
  ---
318
401
 
319
- ## Subcommands
402
+ ## Telemetry
320
403
 
321
- ### `prepare-context TASK [PATH]`
404
+ Anonymous, opt-in telemetry collects: version, OS, commands used, flags, duration, repo size range, and errors. No source code, paths, secrets, or output content is ever collected.
322
405
 
323
- Generates task-specific context for AI agents.
406
+ ```bash
407
+ sourcecode telemetry status # current setting
408
+ sourcecode telemetry enable # opt in
409
+ sourcecode telemetry disable # opt out (permanent)
410
+ ```
411
+
412
+ Alternatively, set the environment variable:
413
+
414
+ ```bash
415
+ export SOURCECODE_TELEMETRY=0
416
+ ```
324
417
 
325
- | Task | Description | Status |
326
- |------|-------------|--------|
327
- | `explain` | Architecture, entry points, key dependencies | ✅ CORE |
328
- | `fix-bug` | Files prioritized by risk, inline annotations | ✅ CORE |
329
- | `onboard` | Full context for new agents or developers | ✅ CORE |
330
- | `delta` | Incremental context: only files changed in git | ✅ CORE |
331
- | `refactor` | Structural problems, improvement opportunities | 🧪 EXP |
332
- | `generate-tests` | Files without tests, coverage gap analysis | 🧪 EXP |
333
- | `review-pr` | Changed files + architectural impact | 🧪 EXP |
418
+ ---
419
+
420
+ ## Configuration
421
+
422
+ ```bash
423
+ sourcecode config # show version, config file path, telemetry status
424
+ ```
@@ -0,0 +1,205 @@
1
+ # sourcecode
2
+
3
+ **Compressed AI-ready context for Java/Spring enterprise codebases.**
4
+
5
+ ![Version](https://img.shields.io/badge/version-1.16.0-blue)
6
+ ![Python](https://img.shields.io/badge/python-3.10%2B-green)
7
+
8
+ ---
9
+
10
+ ## What is it?
11
+
12
+ `sourcecode` analyzes a repository and produces structured JSON or YAML designed to be fed directly to AI agents or language models. It solves the "stuff the whole repo into the prompt" problem by extracting a deterministic, high-signal summary: stack detection, entry points, dependencies, git hotspots, inline annotations, and confidence metadata.
13
+
14
+ Optimized for Java/Spring Boot monorepos. Works on any codebase.
15
+
16
+ ---
17
+
18
+ ## Installation
19
+
20
+ ### Homebrew (macOS / Linux)
21
+
22
+ ```bash
23
+ brew tap haroundominique/sourcecode
24
+ brew install sourcecode
25
+ ```
26
+
27
+ ### pip / pipx
28
+
29
+ ```bash
30
+ pip install sourcecode
31
+ # or with isolation:
32
+ pipx install sourcecode
33
+ ```
34
+
35
+ ### Verify
36
+
37
+ ```bash
38
+ sourcecode version
39
+ # sourcecode 1.16.0
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Quickstart
45
+
46
+ ```bash
47
+ # High-signal summary (~600-800 tokens) — recommended starting point
48
+ sourcecode --compact
49
+
50
+ # Add git hotspots and uncommitted file count
51
+ sourcecode --compact --git-context
52
+
53
+ # Analyze a specific path
54
+ sourcecode /path/to/repo --compact
55
+
56
+ # Copy result to clipboard
57
+ sourcecode --compact --copy
58
+
59
+ # Structured output for AI agents (identity, entry points, dependencies, confidence)
60
+ sourcecode --agent
61
+
62
+ # Only process git-modified files (forces compact output)
63
+ sourcecode --changed-only
64
+ ```
65
+
66
+ Example output for a Spring Boot project (`--compact`):
67
+
68
+ ```json
69
+ {
70
+ "project_type": "api",
71
+ "stacks": [{ "stack": "java", "detection_method": "manifest", "confidence": "high",
72
+ "primary": true, "frameworks": ["Spring Boot", "MyBatis"] }],
73
+ "entry_points": {
74
+ "bootstrap": ["src/main/java/io/spring/RealWorldApplication.java"],
75
+ "security": ["src/main/java/io/spring/api/security/WebSecurityConfig.java"],
76
+ "controllers": { "count": 8, "sample": ["src/main/java/io/spring/api/ArticleApi.java"] }
77
+ },
78
+ "key_dependencies": [
79
+ { "name": "org.mybatis.spring.boot:mybatis-spring-boot-starter",
80
+ "version": "2.2.2", "risk_flags": ["spring-boot-2.x-eol"] }
81
+ ],
82
+ "language_version": "11",
83
+ "deployment": { "spring_boot_version": "2.6.3", "packaging": "jar" },
84
+ "mybatis": { "mapper_interfaces": 4, "xml_files": 4 },
85
+ "confidence_summary": { "overall": "high", "stack": "high", "entry_points": "high" }
86
+ }
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Flags reference
92
+
93
+ | Flag | Alias | Default | Description |
94
+ |------|-------|---------|-------------|
95
+ | `--compact` | | off | **Recommended.** ~600-800 token summary: stack, entry points, dependencies, risk flags, confidence, gaps. Optimized for agent context windows. |
96
+ | `--agent` | | off | Structured noise-free JSON for AI agents: identity, entry points, dependencies, confidence, gaps. Auto-enables dependency, env-var, and code-notes analysis. |
97
+ | `--git-context` | `-g` | off | Include git activity: recent commits, change hotspots, and uncommitted changes. |
98
+ | `--changed-only` | | off | Limit output to git-modified files (staged, unstaged, untracked). Forces compact output. |
99
+ | `--depth` | | `4` | File tree traversal depth (1–20). Java/Maven projects auto-adjust to 12. |
100
+ | `--format` | `-f` | `json` | Output format: `json` or `yaml`. |
101
+ | `--output` | `-o` | stdout | Write output to a file instead of stdout. |
102
+ | `--copy` | `-c` | off | Copy output to clipboard after a successful run. No-op when `--output` is set or clipboard is unavailable. |
103
+ | `--no-redact` | | off | Disable automatic secret redaction. Output may contain sensitive values. |
104
+ | `--version` | `-v` | — | Show version and exit. |
105
+
106
+ ---
107
+
108
+ ## `prepare-context` — task-specific context
109
+
110
+ Generates a focused context bundle for a specific AI coding task. More targeted than `--compact`: each task re-ranks files according to its own signal priorities.
111
+
112
+ ```bash
113
+ sourcecode prepare-context TASK [PATH] [OPTIONS]
114
+ ```
115
+
116
+ ### Tasks
117
+
118
+ | Task | What it surfaces | Primary use |
119
+ |------|-----------------|-------------|
120
+ | `explain` | Architecture, entry points, key dependencies | Onboarding an LLM to a new project |
121
+ | `onboard` | Full structural context: entry points, architecture, key files, dependencies | New developer or agent joining the codebase |
122
+ | `fix-bug` | Files ranked by risk (annotations, churn, uncommitted changes), suspected areas | Debugging session |
123
+ | `refactor` | Structural problems, improvement opportunities, high-annotation files | Code quality review |
124
+ | `generate-tests` | Source files without test pairs, coverage gap analysis | Writing missing tests |
125
+ | `review-pr` | Uncommitted/changed files + architectural impact | Pre-merge review |
126
+ | `delta` | Only files changed in a git range (`--since`), affected entry points | Incremental CI context |
127
+
128
+ ### Options
129
+
130
+ | Option | Description |
131
+ |--------|-------------|
132
+ | `--since REF` | Git ref for `delta` task (e.g. `HEAD~3`, `main`, `v1.2.0`). Required for `delta`; ignored for other tasks. |
133
+ | `--llm-prompt` | Append a ready-to-use LLM prompt to the output. |
134
+ | `--dry-run` | Show what would be analyzed without running it. |
135
+ | `--copy` / `-c` | Copy output to clipboard after a successful run. |
136
+ | `--task-help` | List all tasks with descriptions and exit. |
137
+
138
+ ### Examples
139
+
140
+ ```bash
141
+ # Explain the current repo
142
+ sourcecode prepare-context explain
143
+
144
+ # Analyze a specific repo path
145
+ sourcecode prepare-context explain /path/to/repo
146
+
147
+ # Focus on bug-prone files
148
+ sourcecode prepare-context fix-bug
149
+
150
+ # Incremental context: files changed since branch diverged from main
151
+ sourcecode prepare-context delta . --since main
152
+
153
+ # Onboard with a ready-to-paste LLM prompt
154
+ sourcecode prepare-context onboard --llm-prompt
155
+
156
+ # List all tasks
157
+ sourcecode prepare-context --task-help
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Output schema
163
+
164
+ All outputs include a `confidence_summary` block with `overall`, `stack`, and `entry_points` confidence levels (`high` / `medium` / `low`), plus an `analysis_gaps` list describing what could not be analyzed and why.
165
+
166
+ ### Java/Spring-specific fields
167
+
168
+ When a Java manifest (`pom.xml` or `build.gradle`) is detected, the output includes additional fields:
169
+
170
+ | Field | Description |
171
+ |-------|-------------|
172
+ | `language_version` | Java version from `maven.compiler.source` or equivalent |
173
+ | `deployment.spring_boot_version` | Spring Boot version |
174
+ | `deployment.packaging` | `jar` or `war` |
175
+ | `deployment.app_server_hint` | `weblogic`, `wildfly`, etc. (when detectable) |
176
+ | `security_surface.resource_names` | Values of `@M3FiltroSeguridad(nombreRecurso=...)` annotations across all controllers |
177
+ | `mybatis` | Mapper interface / XML file pairing summary |
178
+ | `transactional_boundaries` | Classes annotated with `@Transactional` |
179
+ | `deployment_risks` | Static risk flags: `spring-boot-2.x-eol`, `legacy-java-runtime`, `legacy-app-server-deployment` |
180
+
181
+ ---
182
+
183
+ ## Telemetry
184
+
185
+ Anonymous, opt-in telemetry collects: version, OS, commands used, flags, duration, repo size range, and errors. No source code, paths, secrets, or output content is ever collected.
186
+
187
+ ```bash
188
+ sourcecode telemetry status # current setting
189
+ sourcecode telemetry enable # opt in
190
+ sourcecode telemetry disable # opt out (permanent)
191
+ ```
192
+
193
+ Alternatively, set the environment variable:
194
+
195
+ ```bash
196
+ export SOURCECODE_TELEMETRY=0
197
+ ```
198
+
199
+ ---
200
+
201
+ ## Configuration
202
+
203
+ ```bash
204
+ sourcecode config # show version, config file path, telemetry status
205
+ ```
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "1.13.0"
7
+ version = "1.16.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.13.0"
3
+ __version__ = "1.16.0"