agent-codinglanguage-mapper 1.1.3__tar.gz → 1.1.4__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 (230) hide show
  1. {agent_codinglanguage_mapper-1.1.3/src/agent_codinglanguage_mapper.egg-info → agent_codinglanguage_mapper-1.1.4}/PKG-INFO +7 -1
  2. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/README.md +6 -0
  3. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/pyproject.toml +1 -1
  4. agent_codinglanguage_mapper-1.1.4/src/agent_codinglanguage_mapper/_version.py +1 -0
  5. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/indexer.py +31 -2
  6. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/mapper.py +33 -22
  7. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4/src/agent_codinglanguage_mapper.egg-info}/PKG-INFO +7 -1
  8. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_indexer.py +59 -0
  9. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_package_contract.py +3 -3
  10. agent_codinglanguage_mapper-1.1.3/src/agent_codinglanguage_mapper/_version.py +0 -1
  11. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/.github/workflows/ci.yml +0 -0
  12. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/LICENSE +0 -0
  13. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/MANIFEST.in +0 -0
  14. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/audit_language_matrix.py +0 -0
  15. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/benchmark_large_workspaces.py +0 -0
  16. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/build_github_performance_corpus.py +0 -0
  17. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/evaluate_external_corpora.py +0 -0
  18. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/generate_language_matrix.py +0 -0
  19. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/run_opencode_e2e.py +0 -0
  20. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/run_openrouter_e2e.py +0 -0
  21. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/setup.cfg +0 -0
  22. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/__init__.py +0 -0
  23. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/__main__.py +0 -0
  24. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/__init__.py +0 -0
  25. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi.py +0 -0
  26. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/__init__.py +0 -0
  27. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/comment_builder.py +0 -0
  28. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/consts.py +0 -0
  29. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/grammar.py +0 -0
  30. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/lark_builder.py +0 -0
  31. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/lark_tokens.py +0 -0
  32. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/lsp_server.py +0 -0
  33. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/nodes.py +0 -0
  34. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/parser.py +0 -0
  35. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/preprocessor.py +0 -0
  36. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/project_discovery.py +0 -0
  37. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/project_indexer.py +0 -0
  38. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/semantic.py +0 -0
  39. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/semantic_builder.py +0 -0
  40. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/source_reader.py +0 -0
  41. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/workspace.py +0 -0
  42. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/tree_sitter.py +0 -0
  43. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/cli.py +0 -0
  44. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/discovery.py +0 -0
  45. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/formatting.py +0 -0
  46. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/guidelines.py +0 -0
  47. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/integration.py +0 -0
  48. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/lsp_server.py +0 -0
  49. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/lsp_service.py +0 -0
  50. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/models.py +0 -0
  51. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/protocol.py +0 -0
  52. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/rendering.py +0 -0
  53. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/templates/opencode/agents/agent-codinglanguage-mapper.md +0 -0
  54. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/templates/opencode/plugins/codebase_map.ts +0 -0
  55. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/templates/skill/SKILL.md +0 -0
  56. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/worker.py +0 -0
  57. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/workspace.py +0 -0
  58. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/SOURCES.txt +0 -0
  59. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/dependency_links.txt +0 -0
  60. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/entry_points.txt +0 -0
  61. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/requires.txt +0 -0
  62. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/top_level.txt +0 -0
  63. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/corpora.lock.json +0 -0
  64. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/runtime.lock.json +0 -0
  65. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/cpp/golden.json +0 -0
  66. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/cpp/prompt.txt +0 -0
  67. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/cpp/workspace/src/cache.cpp +0 -0
  68. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/csharp/golden.json +0 -0
  69. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/csharp/prompt.txt +0 -0
  70. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/csharp/workspace/src/RateService.cs +0 -0
  71. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/delphi/golden.json +0 -0
  72. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/delphi/prompt.txt +0 -0
  73. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/delphi/workspace/src/InventoryService.pas +0 -0
  74. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/guidelines/golden.json +0 -0
  75. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/guidelines/prompt.txt +0 -0
  76. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/guidelines/workspace/.editorconfig +0 -0
  77. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/guidelines/workspace/src/sample.py +0 -0
  78. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/golden.json +0 -0
  79. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/prompt.txt +0 -0
  80. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/workspace/CMakeLists.txt +0 -0
  81. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/workspace/native/metrics.cpp +0 -0
  82. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/workspace/python/metrics_bridge.py +0 -0
  83. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/python/golden.json +0 -0
  84. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/python/prompt.txt +0 -0
  85. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/python/workspace/src/billing.py +0 -0
  86. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/rust/golden.json +0 -0
  87. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/rust/prompt.txt +0 -0
  88. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/rust/workspace/src/lib.rs +0 -0
  89. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/DeprecatedOnConst.pas +0 -0
  90. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/VariantRecordFieldAttributes.pas +0 -0
  91. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/alignedrecords.pas +0 -0
  92. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/constset.pas +0 -0
  93. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/deprecatedtype.pas +0 -0
  94. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/dottedtypes.pas +0 -0
  95. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/endtoken.pas +0 -0
  96. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/experimentals.pas +0 -0
  97. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/externalfunction.pas +0 -0
  98. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/finalizationinitializationexports.pas +0 -0
  99. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/forwardoverloaded.pas +0 -0
  100. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/forwardwithoutsemicolon.pas +0 -0
  101. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/genericconstraints.pas +0 -0
  102. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/genericinterfacemethoddelegation.pas +0 -0
  103. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/implementsgenerictype.pas +0 -0
  104. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/include file2.inc +0 -0
  105. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/includefile.inc +0 -0
  106. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/includefile.pas +0 -0
  107. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/managedrecords.pas +0 -0
  108. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/messagemethod.pas +0 -0
  109. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/multiline.pas +0 -0
  110. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/nonalignedrecords.pas +0 -0
  111. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/numbers.pas +0 -0
  112. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/pointerchars.pas +0 -0
  113. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/properties.pas +0 -0
  114. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/strictvisibility.pas +0 -0
  115. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/tryexcept.pas +0 -0
  116. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/umlauts.pas +0 -0
  117. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/whitespacearoundifdefcondition.pas +0 -0
  118. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/library_demo.dpr +0 -0
  119. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/package_demo.dpk +0 -0
  120. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/program_demo.dpr +0 -0
  121. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_advanced.pas +0 -0
  122. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_attributes.pas +0 -0
  123. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_basic.pas +0 -0
  124. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_consumer.pas +0 -0
  125. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_generics.pas +0 -0
  126. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_inheritance.pas +0 -0
  127. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_math.pas +0 -0
  128. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_properties.pas +0 -0
  129. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_sections.pas +0 -0
  130. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_statements.pas +0 -0
  131. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_types.pas +0 -0
  132. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_unresolved.pas +0 -0
  133. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_with.pas +0 -0
  134. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/Legacy.csx +0 -0
  135. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/Modern.cs +0 -0
  136. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/legacy.hpp +0 -0
  137. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/legacy.py +0 -0
  138. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/legacy.rs +0 -0
  139. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/modern.cpp +0 -0
  140. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/modern.py +0 -0
  141. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/modern.rs +0 -0
  142. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-03.cpp +0 -0
  143. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-11.cpp +0 -0
  144. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-14.cpp +0 -0
  145. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-17.cpp +0 -0
  146. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-20.cpp +0 -0
  147. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-23.cpp +0 -0
  148. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-98.cpp +0 -0
  149. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-gnu-stable.cpp +0 -0
  150. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-msvc-stable.cpp +0 -0
  151. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-1.cs +0 -0
  152. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-10.cs +0 -0
  153. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-11.cs +0 -0
  154. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-12.cs +0 -0
  155. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-13.cs +0 -0
  156. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-14.cs +0 -0
  157. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-2.cs +0 -0
  158. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-3.cs +0 -0
  159. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-4.cs +0 -0
  160. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-5.cs +0 -0
  161. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-6.cs +0 -0
  162. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-7.cs +0 -0
  163. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-8.cs +0 -0
  164. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-9.cs +0 -0
  165. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-10-2006.pas +0 -0
  166. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-11-2007.pas +0 -0
  167. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-12-2009.pas +0 -0
  168. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-13-2010.pas +0 -0
  169. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-14-xe-2011.pas +0 -0
  170. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-15-xe2-2012.pas +0 -0
  171. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-16-xe3-2013.pas +0 -0
  172. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-17-xe4-2013.pas +0 -0
  173. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-18-xe5-2013.pas +0 -0
  174. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-19-xe6-2014.pas +0 -0
  175. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-20-xe7-2014.pas +0 -0
  176. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-21-xe8-2015.pas +0 -0
  177. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-22-10-seattle-2015.pas +0 -0
  178. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-23-10-1-berlin-2016.pas +0 -0
  179. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-24-10-2-tokyo-2017.pas +0 -0
  180. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-25-10-3-rio-2018.pas +0 -0
  181. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-26-10-4-sydney-2020.pas +0 -0
  182. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-27-11-alexandria-2021.pas +0 -0
  183. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-28-12-athens-2023.pas +0 -0
  184. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-29-13-florence-2024.pas +0 -0
  185. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-7-7.pas +0 -0
  186. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-8-8.pas +0 -0
  187. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-9-2005.pas +0 -0
  188. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-directives.pas +0 -0
  189. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-2-7.py +0 -0
  190. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-0.py +0 -0
  191. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-1.py +0 -0
  192. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-10.py +0 -0
  193. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-11.py +0 -0
  194. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-12.py +0 -0
  195. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-13.py +0 -0
  196. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-14.py +0 -0
  197. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-2.py +0 -0
  198. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-3.py +0 -0
  199. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-4.py +0 -0
  200. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-5.py +0 -0
  201. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-6.py +0 -0
  202. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-7.py +0 -0
  203. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-8.py +0 -0
  204. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-9.py +0 -0
  205. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/rust/rust-2015.rs +0 -0
  206. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/rust/rust-2018.rs +0 -0
  207. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/rust/rust-2021.rs +0 -0
  208. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/rust/rust-2024.rs +0 -0
  209. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/matrix.json +0 -0
  210. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_adapters.py +0 -0
  211. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_cli.py +0 -0
  212. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_delphi_adapter.py +0 -0
  213. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_discovery.py +0 -0
  214. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_ffi.py +0 -0
  215. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_github_performance_corpus.py +0 -0
  216. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_guideline_formatting.py +0 -0
  217. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_guidelines.py +0 -0
  218. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_integration_install.py +0 -0
  219. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_language_matrix.py +0 -0
  220. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_large_files.py +0 -0
  221. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_lsp_server.py +0 -0
  222. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_lsp_service.py +0 -0
  223. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_mapper_details.py +0 -0
  224. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_opencode_e2e_harness.py +0 -0
  225. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_openrouter_e2e_harness.py +0 -0
  226. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_performance_harness.py +0 -0
  227. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_protocol.py +0 -0
  228. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_rendering.py +0 -0
  229. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_worker.py +0 -0
  230. {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_workspace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-codinglanguage-mapper
3
- Version: 1.1.3
3
+ Version: 1.1.4
4
4
  Summary: Agent-focused semantic mapping and language services for mixed-language codebases.
5
5
  Author: Dark Light
6
6
  License-Expression: MPL-2.0
@@ -106,6 +106,12 @@ Parser-native nodes are intentionally private. Ranges are zero-based and half-op
106
106
 
107
107
  `CodebaseMapper.open()` creates an outline index first. `inspect`, `focus`, and outgoing `callees`/`uses` traces load detail only for the selected source file. Incoming `references`/`callers`/`used_by` traces load the remaining workspace detail because their evidence can originate in any indexed file. Parsed detail and focus remain resident for the mapper session. The same optimized path is used for small and large files.
108
108
 
109
+ Batch consumers that only need the complete outline should use
110
+ `snapshot = CodebaseMapper.index(".")`. This one-shot path returns the same deterministic
111
+ `WorkspaceSnapshot` without retaining source buffers, parser outlines, or the interactive refresh
112
+ cache after indexing. It is intended for inventory and documentation pipelines over very large
113
+ repositories.
114
+
109
115
  The private session index retains each parser-native outline tree, its source buffer, a source digest, and a lightweight file fingerprint. A detail upgrade therefore queries the existing tree instead of rereading or reparsing every indexed source. When an indexed source changes during a worker session, the mapper rebuilds the outline snapshot, updates `workspace_revision`, clears stale detail/focus state, and invalidates old cursors before answering the next request. Parser-native nodes never appear in the public result types.
110
116
 
111
117
  ## CLI
@@ -59,6 +59,12 @@ Parser-native nodes are intentionally private. Ranges are zero-based and half-op
59
59
 
60
60
  `CodebaseMapper.open()` creates an outline index first. `inspect`, `focus`, and outgoing `callees`/`uses` traces load detail only for the selected source file. Incoming `references`/`callers`/`used_by` traces load the remaining workspace detail because their evidence can originate in any indexed file. Parsed detail and focus remain resident for the mapper session. The same optimized path is used for small and large files.
61
61
 
62
+ Batch consumers that only need the complete outline should use
63
+ `snapshot = CodebaseMapper.index(".")`. This one-shot path returns the same deterministic
64
+ `WorkspaceSnapshot` without retaining source buffers, parser outlines, or the interactive refresh
65
+ cache after indexing. It is intended for inventory and documentation pipelines over very large
66
+ repositories.
67
+
62
68
  The private session index retains each parser-native outline tree, its source buffer, a source digest, and a lightweight file fingerprint. A detail upgrade therefore queries the existing tree instead of rereading or reparsing every indexed source. When an indexed source changes during a worker session, the mapper rebuilds the outline snapshot, updates `workspace_revision`, clears stale detail/focus state, and invalidates old cursors before answering the next request. Parser-native nodes never appear in the public result types.
63
69
 
64
70
  ## CLI
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "agent-codinglanguage-mapper"
7
- version = "1.1.3"
7
+ version = "1.1.4"
8
8
  description = "Agent-focused semantic mapping and language services for mixed-language codebases."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10,<3.15"
@@ -81,7 +81,7 @@ class WorkspaceIndexCache:
81
81
 
82
82
 
83
83
  def _deduplicate_parser_symbols(items: tuple[Symbol, ...]) -> tuple[Symbol, ...]:
84
- """Collapse C/C++ typedef aliases emitted for the same concrete declaration."""
84
+ """Collapse identical symbols and C/C++ aliases for one concrete declaration."""
85
85
 
86
86
  def declaration_key(item: Symbol) -> tuple[str, str, int, int]:
87
87
  anchor = item.name_range or item.range
@@ -103,7 +103,35 @@ def _deduplicate_parser_symbols(items: tuple[Symbol, ...]) -> tuple[Symbol, ...]
103
103
  if key in emitted:
104
104
  continue
105
105
  emitted.add(key)
106
- group = groups[key]
106
+ group: list[Symbol] = []
107
+ identities: set[tuple[object, ...]] = set()
108
+ for candidate in groups[key]:
109
+ identity = (
110
+ candidate.name,
111
+ candidate.qualified_name,
112
+ candidate.kind,
113
+ candidate.language,
114
+ candidate.range,
115
+ candidate.project_id,
116
+ candidate.file_id,
117
+ candidate.signature,
118
+ candidate.native_kind,
119
+ candidate.parent_id,
120
+ candidate.name_range,
121
+ candidate.role,
122
+ )
123
+ if identity in identities:
124
+ continue
125
+ identities.add(identity)
126
+ group.append(candidate)
127
+ if group and group[0].language is Language.DELPHI:
128
+ logical: dict[tuple[str, str, str], Symbol] = {}
129
+ for candidate in group:
130
+ logical.setdefault(
131
+ (candidate.kind, candidate.role, candidate.parent_id),
132
+ candidate,
133
+ )
134
+ group = list(logical.values())
107
135
  concrete = [candidate for candidate in group if candidate.kind in concrete_kinds]
108
136
  aliases = [candidate for candidate in group if candidate.kind == "type_alias"]
109
137
  if len(concrete) == 1 and aliases:
@@ -631,6 +659,7 @@ def _workspace_symbol_id(project_id: str, file_id: str, symbol: Symbol) -> str:
631
659
  "symbol",
632
660
  project_id,
633
661
  file_id,
662
+ anchor.path,
634
663
  symbol.qualified_name,
635
664
  str(anchor.start_line),
636
665
  str(anchor.start_character),
@@ -141,7 +141,11 @@ class CodebaseMapper:
141
141
 
142
142
  @classmethod
143
143
  def open(cls, root: str | Path, languages: str | tuple[Language, ...] = "auto") -> "CodebaseMapper":
144
- selected = None if languages == "auto" else tuple(Language(item) if isinstance(item, str) else item for item in languages)
144
+ selected = (
145
+ None
146
+ if languages == "auto"
147
+ else tuple(Language(item) if isinstance(item, str) else item for item in languages)
148
+ )
145
149
  index_cache = WorkspaceIndexCache()
146
150
  return cls(
147
151
  root,
@@ -151,6 +155,26 @@ class CodebaseMapper:
151
155
  index_cache=index_cache,
152
156
  )
153
157
 
158
+ @classmethod
159
+ def index(
160
+ cls,
161
+ root: str | Path,
162
+ languages: str | tuple[Language, ...] = "auto",
163
+ ) -> WorkspaceSnapshot:
164
+ """Build a complete outline snapshot without retaining an interactive cache."""
165
+
166
+ selected = (
167
+ None
168
+ if languages == "auto"
169
+ else tuple(Language(item) if isinstance(item, str) else item for item in languages)
170
+ )
171
+ return build_workspace_snapshot(
172
+ root,
173
+ selected,
174
+ detail_files=(),
175
+ index_cache=None,
176
+ )
177
+
154
178
  def __enter__(self) -> "CodebaseMapper":
155
179
  return self
156
180
 
@@ -189,10 +213,7 @@ class CodebaseMapper:
189
213
  if (
190
214
  request.file_id
191
215
  and candidate.file_id != request.file_id
192
- and (
193
- requested_source is None
194
- or Path(candidate.range.path).as_posix() != requested_source.path
195
- )
216
+ and (requested_source is None or Path(candidate.range.path).as_posix() != requested_source.path)
196
217
  ):
197
218
  continue
198
219
  if request.languages and candidate.language not in request.languages:
@@ -273,11 +294,7 @@ class CodebaseMapper:
273
294
  )
274
295
 
275
296
  def _refresh_changed_sources(self) -> None:
276
- if (
277
- not self._lazy_details
278
- or self._index_cache is None
279
- or not self._index_cache.sources_changed(self.root)
280
- ):
297
+ if not self._lazy_details or self._index_cache is None or not self._index_cache.sources_changed(self.root):
281
298
  return
282
299
  self.snapshot = build_workspace_snapshot(
283
300
  self.root,
@@ -351,7 +368,7 @@ class CodebaseMapper:
351
368
  text_offset = self._decode_cursor(request)
352
369
  if text_offset > len(full_text) or (request.cursor and text_offset == len(full_text)):
353
370
  raise ProtocolError("cursor offset is invalid")
354
- item[text_key] = full_text[text_offset:text_offset + _SOURCE_CHUNK_CHARS]
371
+ item[text_key] = full_text[text_offset : text_offset + _SOURCE_CHUNK_CHARS]
355
372
  if text_key == "source":
356
373
  line_offset = full_text[:text_offset].count("\n")
357
374
  item["citation"] = f"{symbol.range.path}:{int(str(item['citation']).rsplit(':', 1)[1]) + line_offset}"
@@ -450,7 +467,7 @@ class CodebaseMapper:
450
467
  low = middle + 1
451
468
  else:
452
469
  high = middle - 1
453
- bounded[detail_key] = text[:max(0, high)]
470
+ bounded[detail_key] = text[: max(0, high)]
454
471
  return bounded
455
472
 
456
473
  for key in ("kind", "role", "project_id", "file_id", "qualified_name", "signature"):
@@ -487,9 +504,7 @@ class CodebaseMapper:
487
504
  selected = [item for item in references if item.target_id in request_target_id_set]
488
505
  return self._page_response(request, [_reference_mapping(item) for item in selected])
489
506
  if relation in {"callers", "used_by"}:
490
- target_ids = {
491
- item.source_id for item in references if item.target_id in request_target_id_set
492
- }
507
+ target_ids = {item.source_id for item in references if item.target_id in request_target_id_set}
493
508
  target_ids.update(
494
509
  item.source_id
495
510
  for item in self.snapshot.relations
@@ -501,16 +516,12 @@ class CodebaseMapper:
501
516
  return self._page_response(request, [_symbol_mapping(item) for item in caller_symbols])
502
517
  if relation in {"callees", "uses"}:
503
518
  target_ids = {
504
- item.target_id
505
- for item in references
506
- if item.source_id in request_target_id_set and item.target_id
519
+ item.target_id for item in references if item.source_id in request_target_id_set and item.target_id
507
520
  }
508
521
  target_ids.update(
509
522
  item.target_id
510
523
  for item in self.snapshot.relations
511
- if relation == "uses"
512
- and item.source_id in request_target_id_set
513
- and item.target_id
524
+ if relation == "uses" and item.source_id in request_target_id_set and item.target_id
514
525
  )
515
526
  callee_symbols = [
516
527
  self.snapshot.symbols_by_id[item] for item in target_ids if item in self.snapshot.symbols_by_id
@@ -545,7 +556,7 @@ class CodebaseMapper:
545
556
  start = self._decode_cursor(request)
546
557
  selected: list[dict[str, object]] = []
547
558
  used = 0
548
- for item in items[start:start + request.max_items]:
559
+ for item in items[start : start + request.max_items]:
549
560
  size = len(json.dumps(item, sort_keys=True, separators=(",", ":")))
550
561
  if used + size > request.max_chars:
551
562
  if not selected:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-codinglanguage-mapper
3
- Version: 1.1.3
3
+ Version: 1.1.4
4
4
  Summary: Agent-focused semantic mapping and language services for mixed-language codebases.
5
5
  Author: Dark Light
6
6
  License-Expression: MPL-2.0
@@ -106,6 +106,12 @@ Parser-native nodes are intentionally private. Ranges are zero-based and half-op
106
106
 
107
107
  `CodebaseMapper.open()` creates an outline index first. `inspect`, `focus`, and outgoing `callees`/`uses` traces load detail only for the selected source file. Incoming `references`/`callers`/`used_by` traces load the remaining workspace detail because their evidence can originate in any indexed file. Parsed detail and focus remain resident for the mapper session. The same optimized path is used for small and large files.
108
108
 
109
+ Batch consumers that only need the complete outline should use
110
+ `snapshot = CodebaseMapper.index(".")`. This one-shot path returns the same deterministic
111
+ `WorkspaceSnapshot` without retaining source buffers, parser outlines, or the interactive refresh
112
+ cache after indexing. It is intended for inventory and documentation pipelines over very large
113
+ repositories.
114
+
109
115
  The private session index retains each parser-native outline tree, its source buffer, a source digest, and a lightweight file fingerprint. A detail upgrade therefore queries the existing tree instead of rereading or reparsing every indexed source. When an indexed source changes during a worker session, the mapper rebuilds the outline snapshot, updates `workspace_revision`, clears stale detail/focus state, and invalidates old cursors before answering the next request. Parser-native nodes never appear in the public result types.
110
116
 
111
117
  ## CLI
@@ -223,6 +223,40 @@ def test_mapper_open_indexes_languages_and_find_searches_them(tmp_path: Path) ->
223
223
  assert {item["citation"] for item in response.result["items"]} == {"modern.py:1", "modern.cs:1"}
224
224
 
225
225
 
226
+ def test_mapper_index_builds_one_shot_outline_without_workspace_cache(
227
+ tmp_path: Path,
228
+ monkeypatch: pytest.MonkeyPatch,
229
+ ) -> None:
230
+ (tmp_path / "service.py").write_text("class Service:\n pass\n")
231
+ real_build = indexer_module.build_workspace_snapshot
232
+ calls: list[tuple[tuple[Language, ...] | None, tuple[str, ...], object | None]] = []
233
+
234
+ def recorded_build(
235
+ root: str | Path,
236
+ languages: tuple[Language, ...] | None = None,
237
+ *,
238
+ detail_files: tuple[str, ...],
239
+ index_cache: object | None = None,
240
+ ):
241
+ calls.append((languages, detail_files, index_cache))
242
+ return real_build(
243
+ root,
244
+ languages,
245
+ detail_files=detail_files,
246
+ index_cache=index_cache,
247
+ )
248
+
249
+ monkeypatch.setattr(
250
+ "agent_codinglanguage_mapper.mapper.build_workspace_snapshot",
251
+ recorded_build,
252
+ )
253
+
254
+ snapshot = CodebaseMapper.index(tmp_path, languages=(Language.PYTHON,))
255
+
256
+ assert any(item.name == "Service" for item in snapshot.symbols)
257
+ assert calls == [((Language.PYTHON,), (), None)]
258
+
259
+
226
260
  def test_mapper_refreshes_snapshot_when_source_changes_after_open(tmp_path: Path) -> None:
227
261
  source = tmp_path / "changing.py"
228
262
  source.write_text("def old_name():\n return 'old'\n")
@@ -724,6 +758,31 @@ def test_delphi_include_symbol_is_indexed_under_include_file(tmp_path: Path) ->
724
758
  assert detail.result["item"]["declaration"] == "procedure IncludedProcedure"
725
759
 
726
760
 
761
+ def test_delphi_distinct_include_fragments_have_unique_symbol_ids(tmp_path: Path) -> None:
762
+ (tmp_path / "left.inc").write_text("procedure Configure;\n")
763
+ (tmp_path / "right.inc").write_text("procedure Configure;\n")
764
+ (tmp_path / "Host.pas").write_text("unit Host;\ninterface\n{$I left.inc}\n{$I right.inc}\nimplementation\nend.\n")
765
+
766
+ snapshot = CodebaseMapper.index(tmp_path)
767
+ included = [item for item in snapshot.symbols if item.name == "Configure"]
768
+
769
+ assert {item.range.path for item in included} == {"left.inc", "right.inc"}
770
+ assert len({item.target_id for item in included}) == len(included)
771
+
772
+
773
+ def test_delphi_repeated_identical_include_symbol_is_indexed_once(tmp_path: Path) -> None:
774
+ (tmp_path / "shared.inc").write_text("procedure Configure;\n")
775
+ (tmp_path / "Host.pas").write_text(
776
+ "unit Host;\ninterface\n{$I shared.inc}\n{$I shared.inc}\nimplementation\nend.\n"
777
+ )
778
+
779
+ snapshot = CodebaseMapper.index(tmp_path)
780
+ included = [item for item in snapshot.symbols if item.name == "Configure"]
781
+
782
+ assert len(included) == 1
783
+ assert len({item.target_id for item in snapshot.symbols}) == len(snapshot.symbols)
784
+
785
+
727
786
  def test_delphi_include_change_invalidates_host_outline(tmp_path: Path) -> None:
728
787
  include_path = tmp_path / "declarations.inc"
729
788
  include_path.write_text("procedure OldIncludedProcedure;\n")
@@ -53,7 +53,7 @@ def test_release_metadata_is_stable_and_cross_platform() -> None:
53
53
  project = tomllib.load(stream)["project"]
54
54
 
55
55
  assert project["name"] == "agent-codinglanguage-mapper"
56
- assert project["version"] == "1.1.3"
56
+ assert project["version"] == "1.1.4"
57
57
  assert project["authors"] == [{"name": "Dark Light"}]
58
58
  assert project["requires-python"] == ">=3.10,<3.15"
59
59
  assert "Operating System :: MacOS" in project["classifiers"]
@@ -76,7 +76,7 @@ def test_local_release_gates_include_guideline_tests() -> None:
76
76
  with (ROOT / "pyproject.toml").open("rb") as stream:
77
77
  configuration = tomllib.load(stream)
78
78
 
79
- assert configuration["project"]["version"] == "1.1.3"
79
+ assert configuration["project"]["version"] == "1.1.4"
80
80
  assert (ROOT / "tests/test_guideline_formatting.py").is_file()
81
81
  assert (ROOT / "tests/test_guidelines.py").is_file()
82
82
 
@@ -102,7 +102,7 @@ def test_public_api_uses_only_generic_names() -> None:
102
102
  __version__,
103
103
  )
104
104
 
105
- assert __version__ == "1.1.3"
105
+ assert __version__ == "1.1.4"
106
106
  for exported in (
107
107
  AgentRequest,
108
108
  AgentResponse,
@@ -1 +0,0 @@
1
- __version__ = "1.1.3"