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.
- {agent_codinglanguage_mapper-1.1.3/src/agent_codinglanguage_mapper.egg-info → agent_codinglanguage_mapper-1.1.4}/PKG-INFO +7 -1
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/README.md +6 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/pyproject.toml +1 -1
- agent_codinglanguage_mapper-1.1.4/src/agent_codinglanguage_mapper/_version.py +1 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/indexer.py +31 -2
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/mapper.py +33 -22
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4/src/agent_codinglanguage_mapper.egg-info}/PKG-INFO +7 -1
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_indexer.py +59 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_package_contract.py +3 -3
- agent_codinglanguage_mapper-1.1.3/src/agent_codinglanguage_mapper/_version.py +0 -1
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/.github/workflows/ci.yml +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/LICENSE +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/MANIFEST.in +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/audit_language_matrix.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/benchmark_large_workspaces.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/build_github_performance_corpus.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/evaluate_external_corpora.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/generate_language_matrix.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/run_opencode_e2e.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/run_openrouter_e2e.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/setup.cfg +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/__init__.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/__main__.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/__init__.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/__init__.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/comment_builder.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/consts.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/grammar.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/lark_builder.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/lark_tokens.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/lsp_server.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/nodes.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/parser.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/preprocessor.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/project_discovery.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/project_indexer.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/semantic.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/semantic_builder.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/source_reader.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/delphi_frontend/workspace.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/adapters/tree_sitter.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/cli.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/discovery.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/formatting.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/guidelines.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/integration.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/lsp_server.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/lsp_service.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/models.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/protocol.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/rendering.py +0 -0
- {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
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/templates/opencode/plugins/codebase_map.ts +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/templates/skill/SKILL.md +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/worker.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper/workspace.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/SOURCES.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/dependency_links.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/entry_points.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/requires.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/src/agent_codinglanguage_mapper.egg-info/top_level.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/corpora.lock.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/runtime.lock.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/cpp/golden.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/cpp/prompt.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/cpp/workspace/src/cache.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/csharp/golden.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/csharp/prompt.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/csharp/workspace/src/RateService.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/delphi/golden.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/delphi/prompt.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/delphi/workspace/src/InventoryService.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/guidelines/golden.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/guidelines/prompt.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/guidelines/workspace/.editorconfig +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/guidelines/workspace/src/sample.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/golden.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/prompt.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/workspace/CMakeLists.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/workspace/native/metrics.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/mixed-ffi/workspace/python/metrics_bridge.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/python/golden.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/python/prompt.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/python/workspace/src/billing.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/rust/golden.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/rust/prompt.txt +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/scenarios/rust/workspace/src/lib.rs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/DeprecatedOnConst.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/VariantRecordFieldAttributes.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/alignedrecords.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/constset.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/deprecatedtype.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/dottedtypes.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/endtoken.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/experimentals.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/externalfunction.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/finalizationinitializationexports.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/forwardoverloaded.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/forwardwithoutsemicolon.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/genericconstraints.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/genericinterfacemethoddelegation.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/implementsgenerictype.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/include file2.inc +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/includefile.inc +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/includefile.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/managedrecords.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/messagemethod.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/multiline.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/nonalignedrecords.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/numbers.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/pointerchars.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/properties.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/strictvisibility.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/tryexcept.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/umlauts.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/legacy_snippets/whitespacearoundifdefcondition.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/library_demo.dpr +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/package_demo.dpk +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/program_demo.dpr +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_advanced.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_attributes.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_basic.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_consumer.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_generics.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_inheritance.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_math.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_properties.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_sections.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_statements.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_types.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_unresolved.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/delphi/unit_with.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/Legacy.csx +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/Modern.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/legacy.hpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/legacy.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/legacy.rs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/modern.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/modern.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/fixtures/polyglot/modern.rs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-03.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-11.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-14.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-17.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-20.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-23.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-98.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-gnu-stable.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/cpp/cpp-msvc-stable.cpp +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-1.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-10.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-11.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-12.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-13.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-14.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-2.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-3.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-4.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-5.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-6.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-7.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-8.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/csharp/csharp-9.cs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-10-2006.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-11-2007.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-12-2009.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-13-2010.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-14-xe-2011.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-15-xe2-2012.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-16-xe3-2013.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-17-xe4-2013.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-18-xe5-2013.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-19-xe6-2014.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-20-xe7-2014.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-21-xe8-2015.pas +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-7-7.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-8-8.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-9-2005.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/delphi/delphi-directives.pas +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-2-7.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-0.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-1.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-10.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-11.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-12.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-13.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-14.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-2.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-3.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-4.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-5.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-6.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-7.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-8.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/python/python-3-9.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/rust/rust-2015.rs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/rust/rust-2018.rs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/rust/rust-2021.rs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/fixtures/rust/rust-2024.rs +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/language_matrix/matrix.json +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_adapters.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_cli.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_delphi_adapter.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_discovery.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_ffi.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_github_performance_corpus.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_guideline_formatting.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_guidelines.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_integration_install.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_language_matrix.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_large_files.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_lsp_server.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_lsp_service.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_mapper_details.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_opencode_e2e_harness.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_openrouter_e2e_harness.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_performance_harness.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_protocol.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_rendering.py +0 -0
- {agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_worker.py +0 -0
- {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
|
+
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.
|
|
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"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.1.4"
|
|
@@ -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++
|
|
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 =
|
|
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 =
|
|
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
|
+
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
|
{agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/test_indexer.py
RENAMED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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"
|
{agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/.github/workflows/ci.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/scripts/run_opencode_e2e.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/corpora.lock.json
RENAMED
|
File without changes
|
{agent_codinglanguage_mapper-1.1.3 → agent_codinglanguage_mapper-1.1.4}/tests/e2e/runtime.lock.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|