roam-code 12.3.1__tar.gz → 12.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {roam_code-12.3.1/src/roam_code.egg-info → roam_code-12.5.0}/PKG-INFO +9 -8
- {roam_code-12.3.1 → roam_code-12.5.0}/README.md +8 -7
- {roam_code-12.3.1 → roam_code-12.5.0}/pyproject.toml +1 -1
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/catalog/detectors.py +11 -0
- roam_code-12.5.0/src/roam/catalog/python_idioms.py +864 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/cli.py +2 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_agent_export.py +2 -1
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_complexity.py +22 -2
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_context.py +54 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_dead.py +1 -11
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_fan.py +7 -15
- roam_code-12.5.0/src/roam/commands/cmd_py_types.py +196 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_search.py +55 -5
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_smells.py +12 -8
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/db/connection.py +3 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/db/schema.py +9 -1
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/indexer.py +5 -2
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/symbols.py +6 -1
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/base.py +4 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/python_lang.py +40 -1
- roam_code-12.5.0/src/roam/output/file_role_hints.py +102 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/retrieve/rerank.py +60 -0
- {roam_code-12.3.1 → roam_code-12.5.0/src/roam_code.egg-info}/PKG-INFO +9 -8
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam_code.egg-info/SOURCES.txt +4 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_agent_export.py +2 -1
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_fingerprint.py +2 -1
- roam_code-12.5.0/tests/test_python_pivot.py +489 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/LICENSE +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/setup.cfg +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/__main__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/analysis/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/analysis/effects.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/analysis/taint.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/api.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/ask/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/ask/classifier.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/ask/recipes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/ask/runner.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/attest/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/attest/cga.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/bridges/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/bridges/base.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/bridges/bridge_config.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/bridges/bridge_django.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/bridges/bridge_protobuf.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/bridges/bridge_rest_api.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/bridges/bridge_salesforce.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/bridges/bridge_template.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/bridges/registry.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/catalog/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/catalog/fixes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/catalog/smells.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/catalog/tasks.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/changed_files.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_adrs.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_adversarial.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_affected.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_affected_tests.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_agent_context.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_agent_plan.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_ai_ratio.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_ai_readiness.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_alerts.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_annotate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_api_changes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_api_drift.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_ask.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_attest.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_auth_gaps.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_bisect.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_breaking.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_budget.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_bus_factor.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_capsule.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_cga.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_check_rules.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_ci_setup.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_clean.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_clones.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_closure.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_clusters.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_codeowners.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_config.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_congestion.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_conventions.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_coupling.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_coverage_gaps.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_critique.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_cut.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_dark_matter.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_dashboard.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_debt.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_deps.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_describe.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_dev_profile.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_diagnose.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_diff.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_doc_staleness.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_docs_coverage.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_doctor.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_drift.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_duplicates.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_effects.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_endpoints.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_entry_points.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_eval_retrieve.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_file.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_fingerprint.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_fitness.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_flag_dead.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_fleet.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_fn_coupling.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_forecast.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_grep.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_guard.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_health.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_hooks.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_hotspots.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_impact.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_index.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_index_bundle.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_ingest_trace.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_init.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_intent.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_invariants.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_layers.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_map.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_math.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_mcp_setup.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_metrics.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_migration_safety.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_minimap.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_missing_index.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_module.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_mutate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_n1.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_oracle.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_orchestrate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_orphan_routes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_over_fetch.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_owner.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_partition.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_path_coverage.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_patterns.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_plan.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_plan_refactor.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_pr_diff.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_pr_risk.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_preflight.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_relate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_report.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_reset.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_retrieve.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_risk.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_rules.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_safe_delete.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_safe_zones.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_sbom.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_schema.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_search_semantic.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_secrets.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_semantic_diff.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_simulate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_simulate_departure.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_sketch.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_spectral.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_split.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_suggest_refactoring.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_suggest_reviewers.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_supply_chain.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_symbol.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_syntax_check.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_taint.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_test_gaps.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_test_scaffold.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_testmap.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_tour.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_trace.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_trends.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_triage.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_understand.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_uses.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_verify.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_verify_imports.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_vibe_check.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_visualize.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_vuln_map.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_vuln_reach.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_vulns.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_watch.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_weather.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_why.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_ws.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/cmd_xlang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/codeowners_helpers.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/context_helpers.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/gate_presets.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/graph_helpers.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/metrics_history.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/next_steps.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/resolve.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/commands/suppression.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/competitor_site_data.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/config.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/coverage_reports.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/critique/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/critique/aggregator.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/critique/checks.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/db/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/db/queries.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/eval/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/eval/harness.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/exit_codes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/fleet/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/fleet/adapters.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/fleet/manifest.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/git_utils.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/anomaly.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/builder.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/clone_detect.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/clusters.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/cycles.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/dark_matter.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/diff.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/fingerprint.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/layers.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/pagerank.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/partition.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/pathfinding.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/propagation.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/simulate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/spectral.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/graph/stats.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/complexity.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/discovery.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/django_post.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/file_roles.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/git_stats.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/gitignore.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/incremental.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/parser.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/relations.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/index/test_conventions.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/apex_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/aura_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/c_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/csharp_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/extractor_schema.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/foxpro_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/generic_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/go_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/hcl_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/java_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/javascript_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/kotlin_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/php_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/query_engine.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/registry.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/ruby_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/rust_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/scala_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/sfxml_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/sql_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/swift_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/typescript_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/visualforce_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/languages/yaml_lang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/mcp_extras/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/mcp_extras/completions.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/mcp_extras/progress.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/mcp_extras/sampling.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/mcp_extras/session.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/mcp_extras/watcher.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/mcp_server.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/output/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/output/formatter.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/output/mermaid.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/output/sarif.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/output/schema_registry.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/plugins.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/refactor/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/refactor/codegen.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/refactor/transforms.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/retrieve/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/retrieve/learned_ranker.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/retrieve/pipeline.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/retrieve/seeds.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/retrieve/semantic.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/rules/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/rules/ast_match.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/rules/builtin.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/rules/dataflow.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/rules/engine.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/runtime/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/runtime/daemon.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/runtime/graph_backend.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/runtime/hotspots.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/runtime/lock_modes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/runtime/lockmgr.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/runtime/trace_ingest.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/search/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/search/framework_packs.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/search/index_embeddings.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/search/onnx_embeddings.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/search/tfidf.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/security/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/security/aibom_extension.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/security/taint_classifier.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/security/taint_engine.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/security/vuln_reach.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/security/vuln_store.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/surface_counts.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/templates/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/templates/ci/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/workspace/__init__.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/workspace/aggregator.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/workspace/api_scanner.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/workspace/config.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam/workspace/db.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam_code.egg-info/dependency_links.txt +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam_code.egg-info/entry_points.txt +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam_code.egg-info/requires.txt +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/src/roam_code.egg-info/top_level.txt +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_adrs.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_adversarial.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_affected.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_agent_mode.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_agent_plan_context.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_ai_ratio.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_ai_readiness.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_alerts_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_annotations.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_anomaly.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_api_changes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_api_drift.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_ask.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_attest.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_auth_gaps.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_backend_fixes_round2.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_backend_fixes_round3.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_basic.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_batch_mcp.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_bisect.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_bridge_django.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_bridges.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_bridges_extended.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_budget.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_budget_flag.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_budget_phase2.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_bus_factor.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_capsule.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_cga.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_check_rules.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_ci_gate_eval.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_ci_sarif_guard.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_ci_setup.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_clones.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_closure.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_codeowners.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_commands_architecture.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_commands_exploration.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_commands_health.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_commands_refactoring.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_commands_workflow.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_competitor_site_data.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_comprehensive.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_config.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_congestion.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_context_propagation.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_conventions_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_coverage_gaps_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_coverage_ingestion.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_critique.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_cut.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_dark_matter.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_dark_matter_helpers.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_dashboard.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_dataflow_dead.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_dead_aging.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_defer_loading.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_demo_gif_asset.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_describe.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_detail_flag_hints.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_deterministic_output.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_dev_profile.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_difficulty_scoring.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_doc_staleness.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_docker_assets.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_docs_coverage.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_docs_site_quality.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_doctor.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_drift.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_duplicates.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_effects.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_effects_propagation.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_endpoints.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_entry_points_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_eval_retrieve.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_exclude_patterns.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_exit_codes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_extractor_grammar_drift.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_fallback_contracts.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_file_roles.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_fixes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_flag_dead.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_fleet.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_fn_coupling.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_forecast.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_formatters.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_foxpro.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_framework_detection.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_gate_presets.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_git_utils.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_guard.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_health_gate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_hooks.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_hotspots.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_index.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_index_bundle.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_init_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_install_check.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_intent.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_invariants.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_json_contracts.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_json_error_envelope.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_kotlin_swift_extractors.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_language_corpus.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_languages.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_library_api.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_math.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_math_tips.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_mcp_extras.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_mcp_server.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_mcp_setup.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_mermaid.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_metrics_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_migration_safety.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_minimap.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_missing_index.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_mutate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_n1.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_next_steps.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_onboard.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_oracle.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_orchestrate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_orphan_routes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_oss_bench_harness.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_over_fetch.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_pagerank_truncation.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_partition.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_path_coverage.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_patterns_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_performance.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_personalized_pagerank.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_plan.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_plugin_discovery.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_pr_comment_script.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_pr_diff.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_pr_risk_author.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_progress.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_progressive_disclosure.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_properties.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_python_extractor_v2.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_readme_surface_consistency.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_refactoring_intelligence.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_relate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_report.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_reset_clean.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_resolve.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_retrieve.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_retrieve_cross_repo.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_retrieve_seeds.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_risk.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_ruby.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_rule_profiles.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_rules.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_rules_ast_match.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_rules_community_pack.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_rules_dataflow.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_rules_symbol_requirements.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_runtime.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_runtime_score.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_salesforce.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_sarif_flag.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_sbom.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_scala.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_schema_versioning.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_search_explain.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_secrets.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_secrets_v2.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_semantic_diff.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_semantic_onnx.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_semantic_search.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_simulate.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_simulate_departure.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_sketch.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_smells.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_smoke.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_sna_metrics.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_spectral.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_split_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_sql.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_suggest_reviewers.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_supply_chain.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_surface_counts.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_syntax_check.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_taint.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_taint_analysis.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_taint_classifier.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_test_conventions.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_test_gaps.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_test_scaffold.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_testmap.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_top_flag_consistency.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_tour_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_trends.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_trends_cohort.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_triage.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_uses_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_v12_2.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_v6_features.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_v71_features.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_v7_features.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_v82_features.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_verify.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_verify_imports.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_vibe_check.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_visualize.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_vuln.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_vulns_cmd.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_watch.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_why.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_workspace.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_ws_resolve_fixes.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_xlang.py +0 -0
- {roam_code-12.3.1 → roam_code-12.5.0}/tests/test_yaml_hcl.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: roam-code
|
|
3
|
-
Version: 12.
|
|
3
|
+
Version: 12.5.0
|
|
4
4
|
Summary: Instant codebase comprehension for AI coding agents
|
|
5
5
|
Author: CosmoHac
|
|
6
6
|
License-Expression: MIT
|
|
@@ -62,7 +62,7 @@ Dynamic: license-file
|
|
|
62
62
|
|
|
63
63
|
**The architectural intelligence layer for AI coding agents. Structural graph, architecture governance, multi-agent orchestration, vulnerability mapping, runtime analysis -- one CLI, zero API keys.**
|
|
64
64
|
|
|
65
|
-
*
|
|
65
|
+
*151 commands · 116 MCP tools · 27 languages · 100% local*
|
|
66
66
|
|
|
67
67
|
[](https://pypi.org/project/roam-code/)
|
|
68
68
|
[](https://github.com/Cranot/roam-code/stargazers)
|
|
@@ -139,7 +139,7 @@ $ roam diff # blast radius of uncommitted changes
|
|
|
139
139
|
- **`personalized_pagerank()`** in `graph/pagerank.py`: NetworkX `personalization=` wrapper with empty-seed fallback to global PR; biases ranking toward query-relevant nodes for the retrieve reranker.
|
|
140
140
|
- **`.roam/config.toml`** (new): zero-dep TOML loader (stdlib `tomllib` → `tomli` → in-tree subset parser). Tunable retrieve weights (`alpha`/`beta`/`gamma`/`delta`/`epsilon`), `tokens_per_line`, `lexical_baseline`, `first_stage_token_cap`, `default_budget`, `default_k`, `default_rerank`.
|
|
141
141
|
- **DX corrections from dogfood pass**: `roam --detail <cmd>` is the canonical group-level flag; misleading "use --detail" hints in 7 commands rewritten to point users at `roam --detail <cmd>`. `--top N` aliased on `complexity`/`algo`/`rules` (`--top 0` means unlimited on `rules`). `roam fingerprint` no longer refuses graphs ≥5,000 symbols (new soft-warn threshold 20k, hard cap 100k).
|
|
142
|
-
- **
|
|
142
|
+
- **151 CLI commands, 116 MCP tools** (`fleet`, `ask`, `taint`, `cga`, `eval-retrieve` remain CLI-only; v12 exposes `roam_retrieve`, `roam_critique`, `roam_fleet_plan`, plus 5 v12.1 boolean oracles (`roam_oracle_*`) and `roam_taint_classify` as MCP tools). 33-tool `core` preset is the default for token-budget-conscious clients.
|
|
143
143
|
|
|
144
144
|
## What's New in v11
|
|
145
145
|
|
|
@@ -155,7 +155,7 @@ $ roam diff # blast radius of uncommitted changes
|
|
|
155
155
|
- `server.json` for official MCP Registry submission.
|
|
156
156
|
|
|
157
157
|
### v11.1.1 -- Command Quality Audit
|
|
158
|
-
- **Full command audit**: all
|
|
158
|
+
- **Full command audit**: all 151 commands reviewed for usefulness, duplicates, and test coverage. ~20 bugs fixed, 21 new test files (700+ tests), every command docstring updated with cross-references to related commands.
|
|
159
159
|
- **Kotlin promoted to Tier 1** via new YAML-based declarative extractor architecture. Classes, interfaces, enums, objects, functions, methods, properties, and inheritance fully extracted.
|
|
160
160
|
- **7 new commands**: `roam congestion`, `roam adrs`, `roam flag-dead`, `roam test-scaffold`, `roam sbom`, `roam triage`, `roam ci-setup`.
|
|
161
161
|
- **CI templates**: `roam ci-setup` generates pipelines for GitHub Actions, GitLab CI, Azure Pipelines, Jenkins, and Bitbucket.
|
|
@@ -310,7 +310,7 @@ roam health
|
|
|
310
310
|
|
|
311
311
|
## Commands
|
|
312
312
|
|
|
313
|
-
**Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining
|
|
313
|
+
**Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining 146 commands are detail surface for specialised workflows (taint, fleet, cga, oracle, eval, …) — they're called by agents on demand, not memorised. This is intentional design; under the hood the canonical surface is **151 commands organised into 7 categories**, but you don't need to know that to start.
|
|
314
314
|
|
|
315
315
|
<details>
|
|
316
316
|
<summary><strong>Full command reference</strong></summary>
|
|
@@ -399,7 +399,8 @@ roam health
|
|
|
399
399
|
| `roam ai-readiness` | 0-100 score for how well this codebase supports AI coding agents |
|
|
400
400
|
| `roam ai-ratio [--since N]` | Statistical estimate of AI-generated code ratio using commit-behavior signals |
|
|
401
401
|
| `roam trends [--record] [--days N] [--metric M]` | Historical metrics snapshots with sparklines and trend deltas |
|
|
402
|
-
| `roam complexity [--bumpy-road]` | Per-function cognitive complexity (SonarSource-compatible, triangular nesting penalty) + Halstead metrics (volume, difficulty, effort, bugs) + cyclomatic density |
|
|
402
|
+
| `roam complexity [--bumpy-road] [--include-tooling]` | Per-function cognitive complexity (SonarSource-compatible, triangular nesting penalty) + Halstead metrics (volume, difficulty, effort, bugs) + cyclomatic density |
|
|
403
|
+
| `roam py-types [--detail] [--include-tests]` | Python type-annotation health: % of public functions with full annotations, ``Any`` usage, legacy ``typing.Optional/Dict/List`` (PEP 585/604 modernisation candidates), per-file worst offenders. Default-excludes test files |
|
|
403
404
|
| `roam algo [--task T] [--confidence C] [--profile P]` | Algorithm anti-pattern detection: 23-pattern catalog detects suboptimal algorithms (O(n^2) loops, N+1 queries, quadratic string building, branching recursion, loop-invariant calls) and suggests better approaches with Big-O improvements. Confidence calibration via caller-count + runtime traces, evidence paths, impact scoring, framework-aware N+1 packs, and language-aware fix templates. Alias: `roam math` |
|
|
404
405
|
| `roam n1 [--confidence C] [--verbose]` | Implicit N+1 I/O detection: finds ORM model computed properties (`$appends`/accessors) that trigger lazy-loaded DB queries in collection contexts. Cross-references with eager loading config. Supports Laravel, Django, Rails, SQLAlchemy, JPA |
|
|
405
406
|
| `roam over-fetch [--threshold N] [--confidence C]` | Detect models serializing too many fields: large `$fillable` without `$hidden`/`$visible`, direct controller returns bypassing API Resources, poor exposed-to-hidden ratio |
|
|
@@ -1582,7 +1583,7 @@ roam-code/
|
|
|
1582
1583
|
├── action.yml # Reusable GitHub Action
|
|
1583
1584
|
├── src/roam/
|
|
1584
1585
|
│ ├── __init__.py # Version (from pyproject.toml)
|
|
1585
|
-
│ ├── cli.py # Click CLI (
|
|
1586
|
+
│ ├── cli.py # Click CLI (151 commands)
|
|
1586
1587
|
│ ├── mcp_server.py # MCP server (116 tools, 10 resources, 5 prompts)
|
|
1587
1588
|
│ ├── db/
|
|
1588
1589
|
│ │ ├── connection.py # SQLite (WAL, pragmas, batched IN)
|
|
@@ -1677,7 +1678,7 @@ Optional: Local semantic ONNX stack (`numpy`, `onnxruntime`, `tokenizers`) via `
|
|
|
1677
1678
|
### Shipped
|
|
1678
1679
|
|
|
1679
1680
|
- [x] MCP v2 agent surface: in-process execution, compound operations, presets, schemas, annotations, and compatibility profiles.
|
|
1680
|
-
- [x] Full command and MCP inventory parity in docs:
|
|
1681
|
+
- [x] Full command and MCP inventory parity in docs: 151 CLI commands and 116 MCP tools.
|
|
1681
1682
|
- [x] CI hardening: composite action, changed-only mode, trend-aware gates, sticky PR updater, and SARIF guardrails.
|
|
1682
1683
|
- [x] Performance foundation: FTS5/BM25 search, O(changed) incremental indexing, DB/index optimizations.
|
|
1683
1684
|
- [x] Agent governance suite: `vibe-check`, `ai-readiness`, `verify`, `ai-ratio`, `duplicates`, advanced `algo` scoring/SARIF.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**The architectural intelligence layer for AI coding agents. Structural graph, architecture governance, multi-agent orchestration, vulnerability mapping, runtime analysis -- one CLI, zero API keys.**
|
|
6
6
|
|
|
7
|
-
*
|
|
7
|
+
*151 commands · 116 MCP tools · 27 languages · 100% local*
|
|
8
8
|
|
|
9
9
|
[](https://pypi.org/project/roam-code/)
|
|
10
10
|
[](https://github.com/Cranot/roam-code/stargazers)
|
|
@@ -81,7 +81,7 @@ $ roam diff # blast radius of uncommitted changes
|
|
|
81
81
|
- **`personalized_pagerank()`** in `graph/pagerank.py`: NetworkX `personalization=` wrapper with empty-seed fallback to global PR; biases ranking toward query-relevant nodes for the retrieve reranker.
|
|
82
82
|
- **`.roam/config.toml`** (new): zero-dep TOML loader (stdlib `tomllib` → `tomli` → in-tree subset parser). Tunable retrieve weights (`alpha`/`beta`/`gamma`/`delta`/`epsilon`), `tokens_per_line`, `lexical_baseline`, `first_stage_token_cap`, `default_budget`, `default_k`, `default_rerank`.
|
|
83
83
|
- **DX corrections from dogfood pass**: `roam --detail <cmd>` is the canonical group-level flag; misleading "use --detail" hints in 7 commands rewritten to point users at `roam --detail <cmd>`. `--top N` aliased on `complexity`/`algo`/`rules` (`--top 0` means unlimited on `rules`). `roam fingerprint` no longer refuses graphs ≥5,000 symbols (new soft-warn threshold 20k, hard cap 100k).
|
|
84
|
-
- **
|
|
84
|
+
- **151 CLI commands, 116 MCP tools** (`fleet`, `ask`, `taint`, `cga`, `eval-retrieve` remain CLI-only; v12 exposes `roam_retrieve`, `roam_critique`, `roam_fleet_plan`, plus 5 v12.1 boolean oracles (`roam_oracle_*`) and `roam_taint_classify` as MCP tools). 33-tool `core` preset is the default for token-budget-conscious clients.
|
|
85
85
|
|
|
86
86
|
## What's New in v11
|
|
87
87
|
|
|
@@ -97,7 +97,7 @@ $ roam diff # blast radius of uncommitted changes
|
|
|
97
97
|
- `server.json` for official MCP Registry submission.
|
|
98
98
|
|
|
99
99
|
### v11.1.1 -- Command Quality Audit
|
|
100
|
-
- **Full command audit**: all
|
|
100
|
+
- **Full command audit**: all 151 commands reviewed for usefulness, duplicates, and test coverage. ~20 bugs fixed, 21 new test files (700+ tests), every command docstring updated with cross-references to related commands.
|
|
101
101
|
- **Kotlin promoted to Tier 1** via new YAML-based declarative extractor architecture. Classes, interfaces, enums, objects, functions, methods, properties, and inheritance fully extracted.
|
|
102
102
|
- **7 new commands**: `roam congestion`, `roam adrs`, `roam flag-dead`, `roam test-scaffold`, `roam sbom`, `roam triage`, `roam ci-setup`.
|
|
103
103
|
- **CI templates**: `roam ci-setup` generates pipelines for GitHub Actions, GitLab CI, Azure Pipelines, Jenkins, and Bitbucket.
|
|
@@ -252,7 +252,7 @@ roam health
|
|
|
252
252
|
|
|
253
253
|
## Commands
|
|
254
254
|
|
|
255
|
-
**Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining
|
|
255
|
+
**Lead with the 5 verbs.** The [5 core commands](#core-commands) cover ~80% of agent workflows: `understand`, `context`, `retrieve`, `preflight`, `critique`. The remaining 146 commands are detail surface for specialised workflows (taint, fleet, cga, oracle, eval, …) — they're called by agents on demand, not memorised. This is intentional design; under the hood the canonical surface is **151 commands organised into 7 categories**, but you don't need to know that to start.
|
|
256
256
|
|
|
257
257
|
<details>
|
|
258
258
|
<summary><strong>Full command reference</strong></summary>
|
|
@@ -341,7 +341,8 @@ roam health
|
|
|
341
341
|
| `roam ai-readiness` | 0-100 score for how well this codebase supports AI coding agents |
|
|
342
342
|
| `roam ai-ratio [--since N]` | Statistical estimate of AI-generated code ratio using commit-behavior signals |
|
|
343
343
|
| `roam trends [--record] [--days N] [--metric M]` | Historical metrics snapshots with sparklines and trend deltas |
|
|
344
|
-
| `roam complexity [--bumpy-road]` | Per-function cognitive complexity (SonarSource-compatible, triangular nesting penalty) + Halstead metrics (volume, difficulty, effort, bugs) + cyclomatic density |
|
|
344
|
+
| `roam complexity [--bumpy-road] [--include-tooling]` | Per-function cognitive complexity (SonarSource-compatible, triangular nesting penalty) + Halstead metrics (volume, difficulty, effort, bugs) + cyclomatic density |
|
|
345
|
+
| `roam py-types [--detail] [--include-tests]` | Python type-annotation health: % of public functions with full annotations, ``Any`` usage, legacy ``typing.Optional/Dict/List`` (PEP 585/604 modernisation candidates), per-file worst offenders. Default-excludes test files |
|
|
345
346
|
| `roam algo [--task T] [--confidence C] [--profile P]` | Algorithm anti-pattern detection: 23-pattern catalog detects suboptimal algorithms (O(n^2) loops, N+1 queries, quadratic string building, branching recursion, loop-invariant calls) and suggests better approaches with Big-O improvements. Confidence calibration via caller-count + runtime traces, evidence paths, impact scoring, framework-aware N+1 packs, and language-aware fix templates. Alias: `roam math` |
|
|
346
347
|
| `roam n1 [--confidence C] [--verbose]` | Implicit N+1 I/O detection: finds ORM model computed properties (`$appends`/accessors) that trigger lazy-loaded DB queries in collection contexts. Cross-references with eager loading config. Supports Laravel, Django, Rails, SQLAlchemy, JPA |
|
|
347
348
|
| `roam over-fetch [--threshold N] [--confidence C]` | Detect models serializing too many fields: large `$fillable` without `$hidden`/`$visible`, direct controller returns bypassing API Resources, poor exposed-to-hidden ratio |
|
|
@@ -1524,7 +1525,7 @@ roam-code/
|
|
|
1524
1525
|
├── action.yml # Reusable GitHub Action
|
|
1525
1526
|
├── src/roam/
|
|
1526
1527
|
│ ├── __init__.py # Version (from pyproject.toml)
|
|
1527
|
-
│ ├── cli.py # Click CLI (
|
|
1528
|
+
│ ├── cli.py # Click CLI (151 commands)
|
|
1528
1529
|
│ ├── mcp_server.py # MCP server (116 tools, 10 resources, 5 prompts)
|
|
1529
1530
|
│ ├── db/
|
|
1530
1531
|
│ │ ├── connection.py # SQLite (WAL, pragmas, batched IN)
|
|
@@ -1619,7 +1620,7 @@ Optional: Local semantic ONNX stack (`numpy`, `onnxruntime`, `tokenizers`) via `
|
|
|
1619
1620
|
### Shipped
|
|
1620
1621
|
|
|
1621
1622
|
- [x] MCP v2 agent surface: in-process execution, compound operations, presets, schemas, annotations, and compatibility profiles.
|
|
1622
|
-
- [x] Full command and MCP inventory parity in docs:
|
|
1623
|
+
- [x] Full command and MCP inventory parity in docs: 151 CLI commands and 116 MCP tools.
|
|
1623
1624
|
- [x] CI hardening: composite action, changed-only mode, trend-aware gates, sticky PR updater, and SARIF guardrails.
|
|
1624
1625
|
- [x] Performance foundation: FTS5/BM25 search, O(changed) incremental indexing, DB/index optimizations.
|
|
1625
1626
|
- [x] Agent governance suite: `vibe-check`, `ai-readiness`, `verify`, `ai-ratio`, `duplicates`, advanced `algo` scoring/SARIF.
|
|
@@ -2300,6 +2300,17 @@ def _iter_registered_detectors():
|
|
|
2300
2300
|
for det in _MATH_DETECTORS:
|
|
2301
2301
|
yield det
|
|
2302
2302
|
|
|
2303
|
+
# Python pivot v12.4 — language-specific idiom detectors. Wrapped
|
|
2304
|
+
# in try/except so a regex bug in one detector can't block the
|
|
2305
|
+
# algorithm pass.
|
|
2306
|
+
try:
|
|
2307
|
+
from roam.catalog.python_idioms import PYTHON_IDIOM_DETECTORS
|
|
2308
|
+
|
|
2309
|
+
for det in PYTHON_IDIOM_DETECTORS:
|
|
2310
|
+
yield det
|
|
2311
|
+
except Exception:
|
|
2312
|
+
pass
|
|
2313
|
+
|
|
2303
2314
|
try:
|
|
2304
2315
|
from roam.plugins import get_plugin_detectors
|
|
2305
2316
|
|