roam-code 12.5.0__tar.gz → 12.7.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.5.0/src/roam_code.egg-info → roam_code-12.7.0}/PKG-INFO +13 -10
- {roam_code-12.5.0 → roam_code-12.7.0}/README.md +12 -9
- {roam_code-12.5.0 → roam_code-12.7.0}/pyproject.toml +1 -1
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/catalog/python_idioms.py +484 -4
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/cli.py +2 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_context.py +35 -0
- roam_code-12.7.0/src/roam/commands/cmd_py_modern.py +180 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_py_types.py +25 -1
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/mcp_server.py +55 -0
- {roam_code-12.5.0 → roam_code-12.7.0/src/roam_code.egg-info}/PKG-INFO +13 -10
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam_code.egg-info/SOURCES.txt +2 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_mcp_server.py +7 -4
- roam_code-12.7.0/tests/test_python_idioms_e2e.py +233 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/LICENSE +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/setup.cfg +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/__main__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/analysis/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/analysis/effects.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/analysis/taint.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/api.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/ask/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/ask/classifier.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/ask/recipes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/ask/runner.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/attest/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/attest/cga.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/bridges/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/bridges/base.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/bridges/bridge_config.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/bridges/bridge_django.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/bridges/bridge_protobuf.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/bridges/bridge_rest_api.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/bridges/bridge_salesforce.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/bridges/bridge_template.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/bridges/registry.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/catalog/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/catalog/detectors.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/catalog/fixes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/catalog/smells.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/catalog/tasks.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/changed_files.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_adrs.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_adversarial.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_affected.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_affected_tests.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_agent_context.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_agent_export.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_agent_plan.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_ai_ratio.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_ai_readiness.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_alerts.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_annotate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_api_changes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_api_drift.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_ask.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_attest.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_auth_gaps.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_bisect.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_breaking.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_budget.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_bus_factor.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_capsule.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_cga.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_check_rules.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_ci_setup.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_clean.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_clones.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_closure.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_clusters.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_codeowners.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_complexity.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_config.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_congestion.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_conventions.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_coupling.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_coverage_gaps.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_critique.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_cut.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_dark_matter.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_dashboard.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_dead.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_debt.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_deps.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_describe.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_dev_profile.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_diagnose.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_diff.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_doc_staleness.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_docs_coverage.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_doctor.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_drift.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_duplicates.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_effects.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_endpoints.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_entry_points.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_eval_retrieve.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_fan.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_file.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_fingerprint.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_fitness.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_flag_dead.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_fleet.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_fn_coupling.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_forecast.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_grep.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_guard.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_health.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_hooks.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_hotspots.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_impact.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_index.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_index_bundle.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_ingest_trace.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_init.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_intent.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_invariants.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_layers.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_map.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_math.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_mcp_setup.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_metrics.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_migration_safety.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_minimap.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_missing_index.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_module.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_mutate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_n1.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_oracle.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_orchestrate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_orphan_routes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_over_fetch.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_owner.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_partition.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_path_coverage.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_patterns.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_plan.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_plan_refactor.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_pr_diff.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_pr_risk.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_preflight.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_relate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_report.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_reset.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_retrieve.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_risk.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_rules.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_safe_delete.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_safe_zones.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_sbom.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_schema.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_search.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_search_semantic.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_secrets.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_semantic_diff.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_simulate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_simulate_departure.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_sketch.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_smells.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_spectral.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_split.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_suggest_refactoring.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_suggest_reviewers.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_supply_chain.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_symbol.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_syntax_check.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_taint.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_test_gaps.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_test_scaffold.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_testmap.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_tour.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_trace.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_trends.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_triage.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_understand.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_uses.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_verify.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_verify_imports.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_vibe_check.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_visualize.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_vuln_map.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_vuln_reach.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_vulns.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_watch.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_weather.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_why.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_ws.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/cmd_xlang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/codeowners_helpers.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/context_helpers.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/gate_presets.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/graph_helpers.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/metrics_history.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/next_steps.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/resolve.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/commands/suppression.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/competitor_site_data.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/config.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/coverage_reports.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/critique/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/critique/aggregator.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/critique/checks.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/db/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/db/connection.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/db/queries.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/db/schema.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/eval/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/eval/harness.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/exit_codes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/fleet/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/fleet/adapters.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/fleet/manifest.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/git_utils.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/anomaly.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/builder.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/clone_detect.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/clusters.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/cycles.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/dark_matter.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/diff.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/fingerprint.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/layers.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/pagerank.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/partition.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/pathfinding.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/propagation.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/simulate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/spectral.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/graph/stats.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/complexity.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/discovery.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/django_post.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/file_roles.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/git_stats.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/gitignore.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/incremental.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/indexer.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/parser.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/relations.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/symbols.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/index/test_conventions.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/apex_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/aura_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/base.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/c_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/csharp_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/extractor_schema.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/foxpro_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/generic_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/go_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/hcl_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/java_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/javascript_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/kotlin_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/php_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/python_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/query_engine.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/registry.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/ruby_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/rust_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/scala_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/sfxml_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/sql_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/swift_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/typescript_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/visualforce_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/languages/yaml_lang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/mcp_extras/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/mcp_extras/completions.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/mcp_extras/progress.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/mcp_extras/sampling.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/mcp_extras/session.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/mcp_extras/watcher.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/output/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/output/file_role_hints.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/output/formatter.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/output/mermaid.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/output/sarif.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/output/schema_registry.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/plugins.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/refactor/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/refactor/codegen.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/refactor/transforms.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/retrieve/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/retrieve/learned_ranker.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/retrieve/pipeline.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/retrieve/rerank.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/retrieve/seeds.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/retrieve/semantic.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/rules/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/rules/ast_match.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/rules/builtin.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/rules/dataflow.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/rules/engine.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/runtime/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/runtime/daemon.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/runtime/graph_backend.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/runtime/hotspots.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/runtime/lock_modes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/runtime/lockmgr.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/runtime/trace_ingest.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/search/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/search/framework_packs.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/search/index_embeddings.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/search/onnx_embeddings.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/search/tfidf.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/security/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/security/aibom_extension.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/security/taint_classifier.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/security/taint_engine.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/security/vuln_reach.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/security/vuln_store.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/surface_counts.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/templates/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/templates/ci/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/workspace/__init__.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/workspace/aggregator.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/workspace/api_scanner.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/workspace/config.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam/workspace/db.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam_code.egg-info/dependency_links.txt +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam_code.egg-info/entry_points.txt +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam_code.egg-info/requires.txt +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/src/roam_code.egg-info/top_level.txt +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_adrs.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_adversarial.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_affected.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_agent_export.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_agent_mode.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_agent_plan_context.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_ai_ratio.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_ai_readiness.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_alerts_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_annotations.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_anomaly.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_api_changes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_api_drift.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_ask.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_attest.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_auth_gaps.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_backend_fixes_round2.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_backend_fixes_round3.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_basic.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_batch_mcp.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_bisect.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_bridge_django.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_bridges.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_bridges_extended.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_budget.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_budget_flag.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_budget_phase2.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_bus_factor.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_capsule.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_cga.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_check_rules.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_ci_gate_eval.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_ci_sarif_guard.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_ci_setup.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_clones.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_closure.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_codeowners.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_commands_architecture.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_commands_exploration.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_commands_health.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_commands_refactoring.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_commands_workflow.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_competitor_site_data.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_comprehensive.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_config.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_congestion.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_context_propagation.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_conventions_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_coverage_gaps_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_coverage_ingestion.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_critique.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_cut.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_dark_matter.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_dark_matter_helpers.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_dashboard.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_dataflow_dead.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_dead_aging.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_defer_loading.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_demo_gif_asset.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_describe.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_detail_flag_hints.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_deterministic_output.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_dev_profile.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_difficulty_scoring.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_doc_staleness.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_docker_assets.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_docs_coverage.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_docs_site_quality.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_doctor.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_drift.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_duplicates.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_effects.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_effects_propagation.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_endpoints.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_entry_points_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_eval_retrieve.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_exclude_patterns.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_exit_codes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_extractor_grammar_drift.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_fallback_contracts.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_file_roles.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_fingerprint.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_fixes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_flag_dead.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_fleet.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_fn_coupling.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_forecast.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_formatters.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_foxpro.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_framework_detection.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_gate_presets.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_git_utils.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_guard.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_health_gate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_hooks.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_hotspots.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_index.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_index_bundle.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_init_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_install_check.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_intent.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_invariants.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_json_contracts.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_json_error_envelope.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_kotlin_swift_extractors.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_language_corpus.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_languages.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_library_api.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_math.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_math_tips.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_mcp_extras.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_mcp_setup.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_mermaid.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_metrics_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_migration_safety.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_minimap.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_missing_index.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_mutate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_n1.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_next_steps.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_onboard.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_oracle.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_orchestrate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_orphan_routes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_oss_bench_harness.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_over_fetch.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_pagerank_truncation.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_partition.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_path_coverage.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_patterns_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_performance.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_personalized_pagerank.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_plan.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_plugin_discovery.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_pr_comment_script.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_pr_diff.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_pr_risk_author.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_progress.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_progressive_disclosure.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_properties.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_python_extractor_v2.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_python_pivot.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_readme_surface_consistency.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_refactoring_intelligence.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_relate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_report.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_reset_clean.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_resolve.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_retrieve.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_retrieve_cross_repo.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_retrieve_seeds.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_risk.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_ruby.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_rule_profiles.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_rules.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_rules_ast_match.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_rules_community_pack.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_rules_dataflow.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_rules_symbol_requirements.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_runtime.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_runtime_score.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_salesforce.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_sarif_flag.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_sbom.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_scala.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_schema_versioning.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_search_explain.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_secrets.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_secrets_v2.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_semantic_diff.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_semantic_onnx.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_semantic_search.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_simulate.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_simulate_departure.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_sketch.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_smells.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_smoke.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_sna_metrics.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_spectral.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_split_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_sql.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_suggest_reviewers.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_supply_chain.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_surface_counts.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_syntax_check.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_taint.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_taint_analysis.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_taint_classifier.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_test_conventions.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_test_gaps.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_test_scaffold.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_testmap.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_top_flag_consistency.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_tour_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_trends.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_trends_cohort.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_triage.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_uses_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_v12_2.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_v6_features.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_v71_features.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_v7_features.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_v82_features.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_verify.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_verify_imports.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_vibe_check.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_visualize.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_vuln.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_vulns_cmd.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_watch.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_why.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_workspace.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_ws_resolve_fixes.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.0}/tests/test_xlang.py +0 -0
- {roam_code-12.5.0 → roam_code-12.7.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.7.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
|
+
*152 commands · 118 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
|
+
- **152 CLI commands, 118 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). 35-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 152 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 147 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 **152 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>
|
|
@@ -400,7 +400,8 @@ roam health
|
|
|
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
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
|
+
| `roam py-types [--detail] [--include-tests] [--ci --min-coverage N]` | 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. CI-gateable via ``--ci --min-coverage N`` (exit 5 below threshold). Default-excludes test files |
|
|
404
|
+
| `roam py-modern [--detail]` | Modern-Python adoption signal: counts walrus operator (PEP 572), match statements (PEP 634), PEP 604 ``X \| None``, PEP 585 ``dict[…]``, PEP 695 type aliases, f-strings vs ``.format()``. Reports type-modernisation % and f-string adoption % to gauge migration progress |
|
|
404
405
|
| `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` |
|
|
405
406
|
| `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 |
|
|
406
407
|
| `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 |
|
|
@@ -949,7 +950,7 @@ ROAM_MCP_LITE=0 roam mcp
|
|
|
949
950
|
Core preset tools: `roam_affected_tests`, `roam_batch_get`, `roam_batch_search`, `roam_complete`, `roam_complexity_report`, `roam_context`, `roam_dead_code`, `roam_deps`, `roam_diagnose`, `roam_diagnose_issue`, `roam_diff`, `roam_expand_toolset`, `roam_explore`, `roam_file_info`, `roam_health`, `roam_impact`, `roam_pr_risk`, `roam_preflight`, `roam_prepare_change`, `roam_review_change`, `roam_search_symbol`, `roam_syntax_check`, `roam_trace`, `roam_understand`, `roam_uses`.
|
|
950
951
|
|
|
951
952
|
<details>
|
|
952
|
-
<summary><strong>MCP tool list (all
|
|
953
|
+
<summary><strong>MCP tool list (all 118)</strong></summary>
|
|
953
954
|
|
|
954
955
|
| Tool | Description |
|
|
955
956
|
|------|-------------|
|
|
@@ -981,6 +982,8 @@ Core preset tools: `roam_affected_tests`, `roam_batch_get`, `roam_batch_search`,
|
|
|
981
982
|
| `roam_affected_tests` | Find tests affected by a change |
|
|
982
983
|
| `roam_dead_code` | List unreferenced exports |
|
|
983
984
|
| `roam_complexity_report` | Per-symbol cognitive complexity |
|
|
985
|
+
| `roam_py_types` | Python type-annotation health (% public typed, Any, legacy typing) |
|
|
986
|
+
| `roam_py_modern` | Modern-Python adoption (walrus, match, PEP 604/585/695, f-strings) |
|
|
984
987
|
| `roam_tour` | Auto-generated onboarding guide |
|
|
985
988
|
| `roam_diagnose` | Root cause analysis for debugging |
|
|
986
989
|
| `roam_visualize` | Generate Mermaid or DOT architecture diagrams |
|
|
@@ -1583,8 +1586,8 @@ roam-code/
|
|
|
1583
1586
|
├── action.yml # Reusable GitHub Action
|
|
1584
1587
|
├── src/roam/
|
|
1585
1588
|
│ ├── __init__.py # Version (from pyproject.toml)
|
|
1586
|
-
│ ├── cli.py # Click CLI (
|
|
1587
|
-
│ ├── mcp_server.py # MCP server (
|
|
1589
|
+
│ ├── cli.py # Click CLI (152 commands)
|
|
1590
|
+
│ ├── mcp_server.py # MCP server (118 tools, 10 resources, 5 prompts)
|
|
1588
1591
|
│ ├── db/
|
|
1589
1592
|
│ │ ├── connection.py # SQLite (WAL, pragmas, batched IN)
|
|
1590
1593
|
│ │ ├── schema.py # Tables, indexes, migrations
|
|
@@ -1678,7 +1681,7 @@ Optional: Local semantic ONNX stack (`numpy`, `onnxruntime`, `tokenizers`) via `
|
|
|
1678
1681
|
### Shipped
|
|
1679
1682
|
|
|
1680
1683
|
- [x] MCP v2 agent surface: in-process execution, compound operations, presets, schemas, annotations, and compatibility profiles.
|
|
1681
|
-
- [x] Full command and MCP inventory parity in docs:
|
|
1684
|
+
- [x] Full command and MCP inventory parity in docs: 152 CLI commands and 118 MCP tools.
|
|
1682
1685
|
- [x] CI hardening: composite action, changed-only mode, trend-aware gates, sticky PR updater, and SARIF guardrails.
|
|
1683
1686
|
- [x] Performance foundation: FTS5/BM25 search, O(changed) incremental indexing, DB/index optimizations.
|
|
1684
1687
|
- [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
|
+
*152 commands · 118 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
|
+
- **152 CLI commands, 118 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). 35-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 152 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 147 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 **152 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>
|
|
@@ -342,7 +342,8 @@ roam health
|
|
|
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
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
|
+
| `roam py-types [--detail] [--include-tests] [--ci --min-coverage N]` | 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. CI-gateable via ``--ci --min-coverage N`` (exit 5 below threshold). Default-excludes test files |
|
|
346
|
+
| `roam py-modern [--detail]` | Modern-Python adoption signal: counts walrus operator (PEP 572), match statements (PEP 634), PEP 604 ``X \| None``, PEP 585 ``dict[…]``, PEP 695 type aliases, f-strings vs ``.format()``. Reports type-modernisation % and f-string adoption % to gauge migration progress |
|
|
346
347
|
| `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` |
|
|
347
348
|
| `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 |
|
|
348
349
|
| `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 |
|
|
@@ -891,7 +892,7 @@ ROAM_MCP_LITE=0 roam mcp
|
|
|
891
892
|
Core preset tools: `roam_affected_tests`, `roam_batch_get`, `roam_batch_search`, `roam_complete`, `roam_complexity_report`, `roam_context`, `roam_dead_code`, `roam_deps`, `roam_diagnose`, `roam_diagnose_issue`, `roam_diff`, `roam_expand_toolset`, `roam_explore`, `roam_file_info`, `roam_health`, `roam_impact`, `roam_pr_risk`, `roam_preflight`, `roam_prepare_change`, `roam_review_change`, `roam_search_symbol`, `roam_syntax_check`, `roam_trace`, `roam_understand`, `roam_uses`.
|
|
892
893
|
|
|
893
894
|
<details>
|
|
894
|
-
<summary><strong>MCP tool list (all
|
|
895
|
+
<summary><strong>MCP tool list (all 118)</strong></summary>
|
|
895
896
|
|
|
896
897
|
| Tool | Description |
|
|
897
898
|
|------|-------------|
|
|
@@ -923,6 +924,8 @@ Core preset tools: `roam_affected_tests`, `roam_batch_get`, `roam_batch_search`,
|
|
|
923
924
|
| `roam_affected_tests` | Find tests affected by a change |
|
|
924
925
|
| `roam_dead_code` | List unreferenced exports |
|
|
925
926
|
| `roam_complexity_report` | Per-symbol cognitive complexity |
|
|
927
|
+
| `roam_py_types` | Python type-annotation health (% public typed, Any, legacy typing) |
|
|
928
|
+
| `roam_py_modern` | Modern-Python adoption (walrus, match, PEP 604/585/695, f-strings) |
|
|
926
929
|
| `roam_tour` | Auto-generated onboarding guide |
|
|
927
930
|
| `roam_diagnose` | Root cause analysis for debugging |
|
|
928
931
|
| `roam_visualize` | Generate Mermaid or DOT architecture diagrams |
|
|
@@ -1525,8 +1528,8 @@ roam-code/
|
|
|
1525
1528
|
├── action.yml # Reusable GitHub Action
|
|
1526
1529
|
├── src/roam/
|
|
1527
1530
|
│ ├── __init__.py # Version (from pyproject.toml)
|
|
1528
|
-
│ ├── cli.py # Click CLI (
|
|
1529
|
-
│ ├── mcp_server.py # MCP server (
|
|
1531
|
+
│ ├── cli.py # Click CLI (152 commands)
|
|
1532
|
+
│ ├── mcp_server.py # MCP server (118 tools, 10 resources, 5 prompts)
|
|
1530
1533
|
│ ├── db/
|
|
1531
1534
|
│ │ ├── connection.py # SQLite (WAL, pragmas, batched IN)
|
|
1532
1535
|
│ │ ├── schema.py # Tables, indexes, migrations
|
|
@@ -1620,7 +1623,7 @@ Optional: Local semantic ONNX stack (`numpy`, `onnxruntime`, `tokenizers`) via `
|
|
|
1620
1623
|
### Shipped
|
|
1621
1624
|
|
|
1622
1625
|
- [x] MCP v2 agent surface: in-process execution, compound operations, presets, schemas, annotations, and compatibility profiles.
|
|
1623
|
-
- [x] Full command and MCP inventory parity in docs:
|
|
1626
|
+
- [x] Full command and MCP inventory parity in docs: 152 CLI commands and 118 MCP tools.
|
|
1624
1627
|
- [x] CI hardening: composite action, changed-only mode, trend-aware gates, sticky PR updater, and SARIF guardrails.
|
|
1625
1628
|
- [x] Performance foundation: FTS5/BM25 search, O(changed) incremental indexing, DB/index optimizations.
|
|
1626
1629
|
- [x] Agent governance suite: `vibe-check`, `ai-readiness`, `verify`, `ai-ratio`, `duplicates`, advanced `algo` scoring/SARIF.
|