roam-code 11.1.0__tar.gz → 11.1.2__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-11.1.0/src/roam_code.egg-info → roam_code-11.1.2}/PKG-INFO +89 -39
- roam_code-11.1.0/PKG-INFO → roam_code-11.1.2/README.md +85 -82
- {roam_code-11.1.0 → roam_code-11.1.2}/pyproject.toml +11 -4
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/catalog/detectors.py +182 -21
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/cli.py +18 -8
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/changed_files.py +38 -5
- roam_code-11.1.2/src/roam/commands/cmd_adrs.py +555 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_adversarial.py +8 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_affected.py +3 -5
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_affected_tests.py +16 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_agent_context.py +7 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_agent_export.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_agent_plan.py +7 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_ai_ratio.py +9 -27
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_ai_readiness.py +8 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_alerts.py +22 -10
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_annotate.py +3 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_api_changes.py +6 -7
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_api_drift.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_attest.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_auth_gaps.py +5 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_bisect.py +5 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_breaking.py +27 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_budget.py +5 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_bus_factor.py +25 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_capsule.py +6 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_check_rules.py +4 -1
- roam_code-11.1.2/src/roam/commands/cmd_ci_setup.py +440 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_clean.py +4 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_closure.py +4 -12
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_clusters.py +20 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_codeowners.py +14 -179
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_complexity.py +30 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_config.py +4 -0
- roam_code-11.1.2/src/roam/commands/cmd_congestion.py +341 -0
- roam_code-11.1.2/src/roam/commands/cmd_context.py +1100 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_conventions.py +21 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_coupling.py +37 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_coverage_gaps.py +20 -4
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_cut.py +22 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_dark_matter.py +6 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_dashboard.py +7 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_dead.py +6 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_debt.py +33 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_deps.py +12 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_describe.py +42 -32
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_dev_profile.py +9 -20
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_diagnose.py +5 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_diff.py +24 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_doc_staleness.py +25 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_docs_coverage.py +10 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_doctor.py +5 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_drift.py +8 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_duplicates.py +29 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_effects.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_endpoints.py +3 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_entry_points.py +15 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_fan.py +55 -5
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_file.py +31 -26
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_fingerprint.py +25 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_fitness.py +10 -4
- roam_code-11.1.2/src/roam/commands/cmd_flag_dead.py +556 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_fn_coupling.py +17 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_forecast.py +7 -7
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_grep.py +25 -11
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_guard.py +11 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_hooks.py +5 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_hotspots.py +6 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_impact.py +8 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_index.py +12 -4
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_ingest_trace.py +4 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_init.py +12 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_intent.py +39 -4
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_invariants.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_layers.py +6 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_map.py +17 -49
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_math.py +49 -4
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_mcp_setup.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_metrics.py +3 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_migration_safety.py +4 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_minimap.py +5 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_missing_index.py +10 -5
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_module.py +12 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_mutate.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_n1.py +6 -6
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_orchestrate.py +6 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_orphan_routes.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_over_fetch.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_owner.py +41 -7
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_partition.py +6 -7
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_path_coverage.py +63 -45
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_patterns.py +15 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_plan.py +7 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_plan_refactor.py +18 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_pr_diff.py +6 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_preflight.py +7 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_relate.py +6 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_report.py +24 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_reset.py +4 -4
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_risk.py +22 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_rules.py +8 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_safe_delete.py +8 -10
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_safe_zones.py +13 -0
- roam_code-11.1.2/src/roam/commands/cmd_sbom.py +517 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_schema.py +6 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_search.py +17 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_search_semantic.py +7 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_secrets.py +5 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_semantic_diff.py +4 -5
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_simulate.py +11 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_simulate_departure.py +28 -90
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_sketch.py +33 -4
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_smells.py +8 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_spectral.py +28 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_split.py +26 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_suggest_refactoring.py +8 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_suggest_reviewers.py +5 -74
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_supply_chain.py +18 -5
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_symbol.py +21 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_syntax_check.py +10 -40
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_test_gaps.py +3 -0
- roam_code-11.1.2/src/roam/commands/cmd_test_scaffold.py +825 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_testmap.py +50 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_tour.py +35 -12
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_trace.py +48 -2
- roam_code-11.1.2/src/roam/commands/cmd_trends.py +1723 -0
- roam_code-11.1.2/src/roam/commands/cmd_triage.py +338 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_understand.py +374 -36
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_uses.py +19 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_verify.py +6 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_verify_imports.py +264 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_vibe_check.py +8 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_visualize.py +12 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_vuln_map.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_vuln_reach.py +5 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_vulns.py +26 -10
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_watch.py +7 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_weather.py +29 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_why.py +5 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_ws.py +6 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_xlang.py +48 -2
- roam_code-11.1.2/src/roam/commands/codeowners_helpers.py +109 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/context_helpers.py +0 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/metrics_history.py +4 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/resolve.py +85 -0
- roam_code-11.1.2/src/roam/commands/suppression.py +309 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/competitor_site_data.py +19 -38
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/db/connection.py +2 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/db/schema.py +1 -1
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/fingerprint.py +1 -20
- roam_code-11.1.2/src/roam/graph/stats.py +24 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/discovery.py +26 -23
- roam_code-11.1.2/src/roam/index/gitignore.py +141 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/indexer.py +4 -2
- roam_code-11.1.2/src/roam/languages/extractor_schema.py +237 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/generic_lang.py +1 -1
- roam_code-11.1.2/src/roam/languages/query_engine.py +563 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/registry.py +6 -1
- roam_code-11.1.2/src/roam/languages/scala_lang.py +582 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/mcp_server.py +2 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/rules/dataflow.py +1 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/search/tfidf.py +11 -3
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/surface_counts.py +9 -2
- roam_code-11.1.2/src/roam/templates/__init__.py +1 -0
- roam_code-11.1.2/src/roam/templates/ci/__init__.py +1 -0
- roam_code-11.1.0/README.md → roam_code-11.1.2/src/roam_code.egg-info/PKG-INFO +132 -36
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam_code.egg-info/SOURCES.txt +52 -4
- roam_code-11.1.2/tests/test_adrs.py +108 -0
- roam_code-11.1.2/tests/test_alerts_cmd.py +591 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_anomaly.py +18 -18
- roam_code-11.1.2/tests/test_api_drift.py +88 -0
- roam_code-11.1.2/tests/test_auth_gaps.py +230 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_budget.py +2 -2
- roam_code-11.1.2/tests/test_bus_factor.py +483 -0
- roam_code-11.1.2/tests/test_ci_setup.py +93 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_commands_health.py +50 -50
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_commands_workflow.py +15 -16
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_competitor_site_data.py +12 -2
- roam_code-11.1.2/tests/test_congestion.py +90 -0
- roam_code-11.1.2/tests/test_conventions_cmd.py +500 -0
- roam_code-11.1.2/tests/test_coverage_gaps_cmd.py +399 -0
- roam_code-11.1.2/tests/test_describe.py +172 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_dev_profile.py +2 -0
- roam_code-11.1.2/tests/test_doc_staleness.py +70 -0
- roam_code-11.1.2/tests/test_docs_coverage.py +134 -0
- roam_code-11.1.2/tests/test_entry_points_cmd.py +325 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_exclude_patterns.py +214 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_exit_codes.py +1 -1
- roam_code-11.1.2/tests/test_flag_dead.py +125 -0
- roam_code-11.1.2/tests/test_fn_coupling.py +88 -0
- roam_code-11.1.2/tests/test_hotspots.py +335 -0
- roam_code-11.1.2/tests/test_init_cmd.py +178 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_json_contracts.py +0 -4
- roam_code-11.1.2/tests/test_language_corpus.py +245 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_math.py +191 -0
- roam_code-11.1.2/tests/test_migration_safety.py +482 -0
- roam_code-11.1.2/tests/test_missing_index.py +484 -0
- roam_code-11.1.2/tests/test_n1.py +256 -0
- roam_code-11.1.2/tests/test_onboard.py +349 -0
- roam_code-11.1.2/tests/test_orphan_routes.py +103 -0
- roam_code-11.1.2/tests/test_over_fetch.py +92 -0
- roam_code-11.1.2/tests/test_patterns_cmd.py +378 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_performance.py +8 -8
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_pr_diff.py +2 -2
- roam_code-11.1.2/tests/test_report.py +211 -0
- roam_code-11.1.2/tests/test_risk.py +326 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_rules.py +2 -1
- roam_code-11.1.2/tests/test_sbom.py +108 -0
- roam_code-11.1.2/tests/test_scala.py +354 -0
- roam_code-11.1.2/tests/test_sketch.py +232 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_smoke.py +1 -2
- roam_code-11.1.2/tests/test_split_cmd.py +286 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_suggest_reviewers.py +12 -12
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_supply_chain.py +5 -2
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_surface_counts.py +8 -7
- roam_code-11.1.2/tests/test_test_scaffold.py +104 -0
- roam_code-11.1.2/tests/test_testmap.py +393 -0
- roam_code-11.1.2/tests/test_tour_cmd.py +209 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_trends.py +39 -23
- roam_code-11.1.2/tests/test_triage.py +149 -0
- roam_code-11.1.2/tests/test_uses_cmd.py +245 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_v6_features.py +23 -23
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_v7_features.py +14 -22
- roam_code-11.1.2/tests/test_why.py +271 -0
- roam_code-11.1.2/tests/test_xlang.py +230 -0
- roam_code-11.1.0/src/roam/commands/cmd_context.py +0 -1151
- roam_code-11.1.0/src/roam/commands/cmd_digest.py +0 -214
- roam_code-11.1.0/src/roam/commands/cmd_onboard.py +0 -740
- roam_code-11.1.0/src/roam/commands/cmd_snapshot.py +0 -50
- roam_code-11.1.0/src/roam/commands/cmd_trend.py +0 -461
- roam_code-11.1.0/src/roam/commands/cmd_trends.py +0 -929
- roam_code-11.1.0/tests/test_docs_coverage.py +0 -58
- roam_code-11.1.0/tests/test_onboard.py +0 -533
- {roam_code-11.1.0 → roam_code-11.1.2}/LICENSE +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/setup.cfg +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/__main__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/analysis/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/analysis/effects.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/analysis/taint.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/api.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/bridges/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/bridges/base.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/bridges/bridge_config.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/bridges/bridge_protobuf.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/bridges/bridge_rest_api.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/bridges/bridge_salesforce.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/bridges/bridge_template.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/bridges/registry.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/catalog/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/catalog/fixes.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/catalog/smells.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/catalog/tasks.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_health.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/cmd_pr_risk.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/gate_presets.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/graph_helpers.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/commands/next_steps.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/coverage_reports.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/db/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/db/queries.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/exit_codes.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/anomaly.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/builder.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/clusters.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/cycles.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/dark_matter.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/diff.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/layers.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/pagerank.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/partition.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/pathfinding.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/propagation.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/simulate.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/graph/spectral.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/complexity.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/file_roles.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/git_stats.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/incremental.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/parser.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/relations.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/symbols.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/index/test_conventions.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/apex_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/aura_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/base.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/c_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/csharp_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/foxpro_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/go_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/hcl_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/java_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/javascript_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/kotlin_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/php_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/python_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/ruby_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/rust_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/sfxml_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/swift_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/typescript_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/visualforce_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/languages/yaml_lang.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/output/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/output/formatter.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/output/mermaid.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/output/sarif.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/output/schema_registry.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/plugins.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/refactor/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/refactor/codegen.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/refactor/transforms.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/rules/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/rules/ast_match.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/rules/builtin.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/rules/engine.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/runtime/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/runtime/hotspots.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/runtime/trace_ingest.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/search/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/search/framework_packs.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/search/index_embeddings.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/search/onnx_embeddings.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/security/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/security/vuln_reach.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/security/vuln_store.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/workspace/__init__.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/workspace/aggregator.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/workspace/api_scanner.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/workspace/config.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam/workspace/db.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam_code.egg-info/dependency_links.txt +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam_code.egg-info/entry_points.txt +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam_code.egg-info/requires.txt +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/src/roam_code.egg-info/top_level.txt +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_adversarial.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_affected.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_agent_export.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_agent_mode.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_agent_plan_context.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_ai_ratio.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_ai_readiness.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_annotations.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_api_changes.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_attest.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_backend_fixes_round2.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_backend_fixes_round3.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_basic.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_batch_mcp.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_bisect.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_bridges.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_bridges_extended.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_budget_flag.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_budget_phase2.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_capsule.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_check_rules.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_ci_gate_eval.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_ci_sarif_guard.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_closure.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_codeowners.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_commands_architecture.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_commands_exploration.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_commands_refactoring.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_comprehensive.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_context_propagation.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_coverage_ingestion.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_cut.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_dark_matter.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_dashboard.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_dataflow_dead.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_dead_aging.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_defer_loading.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_demo_gif_asset.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_deterministic_output.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_difficulty_scoring.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_docker_assets.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_docs_site_quality.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_doctor.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_drift.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_duplicates.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_effects.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_effects_propagation.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_endpoints.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_file_roles.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_fingerprint.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_fixes.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_forecast.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_formatters.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_foxpro.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_framework_detection.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_gate_presets.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_guard.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_health_gate.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_hooks.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_index.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_install_check.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_intent.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_invariants.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_kotlin_swift_extractors.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_languages.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_library_api.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_math_tips.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_mcp_server.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_mcp_setup.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_mermaid.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_metrics_cmd.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_minimap.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_mutate.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_next_steps.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_orchestrate.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_oss_bench_harness.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_pagerank_truncation.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_partition.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_path_coverage.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_plan.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_plugin_discovery.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_pr_comment_script.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_pr_risk_author.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_progress.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_progressive_disclosure.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_properties.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_python_extractor_v2.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_readme_surface_consistency.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_refactoring_intelligence.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_relate.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_reset_clean.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_resolve.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_ruby.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_rule_profiles.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_rules_ast_match.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_rules_community_pack.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_rules_dataflow.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_rules_symbol_requirements.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_runtime.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_salesforce.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_sarif_flag.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_schema_versioning.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_search_explain.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_secrets.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_secrets_v2.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_semantic_diff.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_semantic_onnx.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_semantic_search.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_simulate.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_simulate_departure.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_smells.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_sna_metrics.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_spectral.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_syntax_check.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_taint_analysis.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_test_conventions.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_test_gaps.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_trends_cohort.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_v71_features.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_v82_features.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_verify.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_verify_imports.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_vibe_check.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_visualize.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_vuln.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_vulns_cmd.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_watch.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_workspace.py +0 -0
- {roam_code-11.1.0 → roam_code-11.1.2}/tests/test_yaml_hcl.py +0 -0
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: roam-code
|
|
3
|
-
Version: 11.1.
|
|
3
|
+
Version: 11.1.2
|
|
4
4
|
Summary: Instant codebase comprehension for AI coding agents
|
|
5
5
|
Author: CosmoHac
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/Cranot/roam-code
|
|
8
|
-
Project-URL: Documentation, https://github.
|
|
8
|
+
Project-URL: Documentation, https://cranot.github.io/roam-code/
|
|
9
9
|
Project-URL: Repository, https://github.com/Cranot/roam-code
|
|
10
10
|
Project-URL: Issues, https://github.com/Cranot/roam-code/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/Cranot/roam-code/blob/main/CHANGELOG.md
|
|
11
12
|
Keywords: code-intelligence,static-analysis,mcp-server,tree-sitter,architecture,code-graph,ai-coding,graph-analysis,code-quality,cli,codebase,code-analysis,ai-tools,mcp
|
|
12
|
-
Classifier: Development Status ::
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
14
|
Classifier: Environment :: Console
|
|
14
15
|
Classifier: Intended Audience :: Developers
|
|
15
16
|
Classifier: Operating System :: OS Independent
|
|
@@ -50,7 +51,7 @@ Dynamic: license-file
|
|
|
50
51
|
|
|
51
52
|
**The architectural intelligence layer for AI coding agents. Structural graph, architecture governance, multi-agent orchestration, vulnerability mapping, runtime analysis -- one CLI, zero API keys.**
|
|
52
53
|
|
|
53
|
-
*
|
|
54
|
+
*139 commands · 101 MCP tools · 26 languages · 100% local*
|
|
54
55
|
|
|
55
56
|
[](https://pypi.org/project/roam-code/)
|
|
56
57
|
[](https://github.com/Cranot/roam-code/stargazers)
|
|
@@ -69,7 +70,7 @@ Roam is a structural intelligence engine for software. It pre-indexes your codeb
|
|
|
69
70
|
Unlike LSPs (editor-bound, language-specific) or Sourcegraph (hosted search), Roam provides architecture-level graph queries -- offline, cross-language, and compact. It goes beyond comprehension: Roam governs architecture through budget gates, simulates refactoring outcomes, orchestrates multi-agent swarms with zero-conflict guarantees, maps vulnerability reachability paths, and enables graph-level code editing without syntax errors.
|
|
70
71
|
|
|
71
72
|
```
|
|
72
|
-
Codebase ──> [Index] ──> Semantic Graph ──>
|
|
73
|
+
Codebase ──> [Index] ──> Semantic Graph ──> 139 Commands ──> AI Agent
|
|
73
74
|
│ │ │
|
|
74
75
|
tree-sitter symbols comprehend
|
|
75
76
|
26 languages + edges govern
|
|
@@ -110,7 +111,15 @@ $ roam diff # blast radius of uncommitted changes
|
|
|
110
111
|
|
|
111
112
|
## What's New in v11
|
|
112
113
|
|
|
113
|
-
###
|
|
114
|
+
### v11.1.1 -- Command Quality Audit
|
|
115
|
+
- **Full command audit**: all 139 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.
|
|
116
|
+
- **Kotlin promoted to Tier 1** via new YAML-based declarative extractor architecture. Classes, interfaces, enums, objects, functions, methods, properties, and inheritance fully extracted.
|
|
117
|
+
- **7 new commands**: `roam congestion`, `roam adrs`, `roam flag-dead`, `roam test-scaffold`, `roam sbom`, `roam triage`, `roam ci-setup`.
|
|
118
|
+
- **CI templates**: `roam ci-setup` generates pipelines for GitHub Actions, GitLab CI, Azure Pipelines, Jenkins, and Bitbucket.
|
|
119
|
+
- **Bug fixes**: `--undocumented` mode in `intent` (wrong DB table), `--changed` flag in `verify` (was permanently dead), lazy-load violation in `visualize` (~500ms penalty), exit code inconsistency in `rules`, VERDICT-first convention enforced across all commands.
|
|
120
|
+
- **Code quality**: 15 unused variables removed, dead code swept (4 orphaned cmd files, 2 dead helper functions), algo detector false-positive rate reduced (regex-in-loop: 7 to 1, list-prepend deque suppression), 6 regex patterns pre-compiled for loop performance.
|
|
121
|
+
|
|
122
|
+
### v11.0 -- MCP v2 for Agent-First Workflows
|
|
114
123
|
- In-process MCP execution removes per-call subprocess overhead.
|
|
115
124
|
- 4 compound operations (`roam_explore`, `roam_prepare_change`, `roam_review_change`, `roam_diagnose_issue`) reduce multi-step agent workflows to single calls.
|
|
116
125
|
- Preset-based tool surfacing (`core`, `review`, `refactor`, `debug`, `architecture`, `full`) keeps default tool choice tight for agents while retaining full depth on demand.
|
|
@@ -258,7 +267,7 @@ roam health
|
|
|
258
267
|
|
|
259
268
|
## Commands
|
|
260
269
|
|
|
261
|
-
The [5 core commands](#core-commands) shown above cover ~80% of agent workflows. All
|
|
270
|
+
The [5 core commands](#core-commands) shown above cover ~80% of agent workflows. All 139 commands are organized into 7 categories.
|
|
262
271
|
|
|
263
272
|
<details>
|
|
264
273
|
<summary><strong>Full command reference</strong></summary>
|
|
@@ -275,7 +284,7 @@ The [5 core commands](#core-commands) shown above cover ~80% of agent workflows.
|
|
|
275
284
|
| `roam reset [--hard]` | Reset the roam index and cached data. `--hard` removes all `.roam/` artifacts |
|
|
276
285
|
| `roam clean [--all]` | Remove stale or orphaned index entries without a full rebuild |
|
|
277
286
|
| `roam understand` | Full codebase briefing: tech stack, architecture, key abstractions, health, conventions, complexity overview, entry points |
|
|
278
|
-
| `roam onboard` |
|
|
287
|
+
| `roam onboard` | Alias for `understand` |
|
|
279
288
|
| `roam tour [--write PATH]` | Auto-generated onboarding guide: top symbols, reading order, entry points, language breakdown. `--write` saves to Markdown |
|
|
280
289
|
| `roam describe [--write] [--force] [-o PATH] [--agent-prompt]` | Auto-generate project description for AI agents. `--write` auto-detects your agent's config file. `--agent-prompt` returns a compact (<500 token) system prompt |
|
|
281
290
|
| `roam agent-export [--format F] [--write]` | Generate agent-context bundle from project analysis (`AGENTS.md` + provider-specific overlays) |
|
|
@@ -285,6 +294,8 @@ The [5 core commands](#core-commands) shown above cover ~80% of agent workflows.
|
|
|
285
294
|
| `roam schema [--diff] [--version V]` | JSON envelope schema versioning: view, diff, and validate output schemas |
|
|
286
295
|
| `roam mcp [--list-tools] [--transport T]` | Start MCP server (stdio/SSE/streamable-http), inspect available tools, and expose roam to coding agents |
|
|
287
296
|
| `roam mcp-setup <platform>` | Generate MCP config snippets for AI platforms: claude-code, cursor, windsurf, vscode, gemini-cli, codex-cli |
|
|
297
|
+
| `roam ci-setup [--platform P] [--write]` | Generate CI/CD pipeline config (GitHub Actions, GitLab CI, Azure Pipelines, Jenkins, Bitbucket) with SARIF + quality gates |
|
|
298
|
+
| `roam adrs [--status S] [--limit N]` | Discover Architecture Decision Records, link to affected code modules, show status and coverage |
|
|
288
299
|
|
|
289
300
|
### Daily Workflow
|
|
290
301
|
|
|
@@ -316,6 +327,7 @@ The [5 core commands](#core-commands) shown above cover ~80% of agent workflows.
|
|
|
316
327
|
| `roam syntax-check [--changed] [PATHS...]` | Tree-sitter syntax integrity check for changed files and multi-agent judge workflows |
|
|
317
328
|
| `roam verify [--threshold N]` | Pre-commit AI-code consistency check across naming, imports, error handling, and duplication signals |
|
|
318
329
|
| `roam verify-imports [--file F]` | Import hallucination firewall: validate all imports against indexed symbol table, suggest corrections via FTS5 fuzzy matching |
|
|
330
|
+
| `roam triage list\|add\|stats\|check` | Security finding suppression workflow: manage `.roam-suppressions.yml` (SAFE/ACKNOWLEDGED/WONT-FIX status lifecycle) |
|
|
319
331
|
| `roam safe-delete <symbol>` | Safe deletion check: SAFE/REVIEW/UNSAFE verdict |
|
|
320
332
|
| `roam test-map <name>` | Map a symbol or file to its test coverage |
|
|
321
333
|
| `roam adversarial [--staged] [--range R]` | Adversarial architecture review: generates targeted challenges based on changes |
|
|
@@ -343,11 +355,8 @@ The [5 core commands](#core-commands) shown above cover ~80% of agent workflows.
|
|
|
343
355
|
| `roam debt [--roi]` | Hotspot-weighted tech debt prioritization with SQALE remediation costs and optional refactoring ROI estimates |
|
|
344
356
|
| `roam fitness [--explain]` | Architectural fitness functions from `.roam/fitness.yaml` |
|
|
345
357
|
| `roam alerts` | Health degradation trend detection (Mann-Kendall + Sen's slope) |
|
|
346
|
-
| `roam snapshot [--tag TAG]` | Persist health metrics snapshot for trend tracking |
|
|
347
|
-
| `roam trend` | Health score history with sparkline visualization |
|
|
348
|
-
| `roam digest [--brief] [--since TAG]` | Compare current metrics against last snapshot |
|
|
349
358
|
| `roam forecast [--symbol S] [--horizon N] [--alert-only]` | Predict when metrics will exceed thresholds: Theil-Sen regression on snapshot history + churn-weighted per-symbol risk |
|
|
350
|
-
| `roam budget [--init] [--staged] [--range R]` | Architectural budget enforcement: per-PR delta limits on health, cycles, complexity. CI gate (exit
|
|
359
|
+
| `roam budget [--init] [--staged] [--range R]` | Architectural budget enforcement: per-PR delta limits on health, cycles, complexity. CI gate (exit 5 on violation) |
|
|
351
360
|
| `roam bisect [--metric M] [--range R]` | Architectural git bisect: find the commit that degraded a specific metric |
|
|
352
361
|
| `roam ingest-trace <file> [--otel\|--jaeger\|--zipkin\|--generic]` | Ingest runtime trace data (OpenTelemetry, Jaeger, Zipkin) for hotspot overlay |
|
|
353
362
|
| `roam hotspots [--runtime] [--discrepancy]` | Runtime hotspot analysis: find symbols missed by static analysis but critical at runtime |
|
|
@@ -450,19 +459,19 @@ src/
|
|
|
450
459
|
bridges/
|
|
451
460
|
base.py # LanguageBridge
|
|
452
461
|
registry.py # register_bridge, detect_bridges
|
|
453
|
-
commands/ (
|
|
462
|
+
commands/ (137 cmd files) # is_test_file, get_changed_files
|
|
454
463
|
db/
|
|
455
464
|
connection.py # find_project_root, batched_in
|
|
456
465
|
schema.py
|
|
457
466
|
graph/
|
|
458
467
|
builder.py # build_symbol_graph, build_file_graph
|
|
459
468
|
pagerank.py # compute_pagerank, compute_centrality
|
|
460
|
-
languages/ (
|
|
469
|
+
languages/ (21 files) # ApexExtractor
|
|
461
470
|
output/
|
|
462
471
|
formatter.py # to_json, json_envelope
|
|
463
472
|
cli.py # cli, LazyGroup
|
|
464
473
|
mcp_server.py
|
|
465
|
-
tests/ (
|
|
474
|
+
tests/ (186 files)
|
|
466
475
|
` ` `
|
|
467
476
|
|
|
468
477
|
**Key symbols** (PageRank): `open_db` · `ensure_index` · `json_envelope` · `to_json` · `LanguageExtractor`
|
|
@@ -498,6 +507,7 @@ The sentinel pair `<!-- roam:minimap -->` / `<!-- /roam:minimap -->` is replaced
|
|
|
498
507
|
| `roam spectral [--depth N] [--compare] [--gap-only] [--k K]` | Spectral bisection: Fiedler vector partition tree with algebraic connectivity gap verdict |
|
|
499
508
|
| `roam layers` | Topological dependency layers + upward violations + Gini balance |
|
|
500
509
|
| `roam dead [--all] [--summary] [--clusters]` | Unreferenced exported symbols with safety verdicts + confidence scoring (60-95%) |
|
|
510
|
+
| `roam flag-dead [--config FILE] [--include-tests]` | Feature flag dead code detection: stale LaunchDarkly/Unleash/Split/custom flags with staleness analysis |
|
|
501
511
|
| `roam fan [symbol\|file] [-n N] [--no-framework]` | Fan-in/fan-out: most connected symbols or files |
|
|
502
512
|
| `roam risk [-n N] [--domain KW] [--explain]` | Domain-weighted risk ranking |
|
|
503
513
|
| `roam why <name> [name2 ...]` | Role classification (Hub/Bridge/Core/Leaf), reach, criticality |
|
|
@@ -531,6 +541,7 @@ The sentinel pair `<!-- roam:minimap -->` / `<!-- /roam:minimap -->` is replaced
|
|
|
531
541
|
| `roam docs-coverage` | Public-symbol doc coverage + stale docs + PageRank-ranked missing-doc hotlist |
|
|
532
542
|
| `roam suggest-refactoring [--limit N] [--min-score N]` | Proactive refactoring recommendations ranked by complexity, coupling, churn, smells, coverage gaps, and debt |
|
|
533
543
|
| `roam plan-refactor <symbol> [--operation auto\|extract\|move]` | Ordered refactor plan with blast radius, test gaps, layer risk, and simulation-based strategy preview |
|
|
544
|
+
| `roam test-scaffold <name\|file> [--write] [--framework F]` | Generate test file/function/import skeletons from symbol data (pytest, jest, Go, JUnit, RSpec) |
|
|
534
545
|
| `roam conventions` | Auto-detect naming styles, import preferences. Flags outliers |
|
|
535
546
|
| `roam breaking [REV_RANGE]` | Breaking change detection: removed exports, signature changes |
|
|
536
547
|
| `roam affected-tests <symbol\|file>` | Trace reverse call graph to test files |
|
|
@@ -565,6 +576,8 @@ The sentinel pair `<!-- roam:minimap -->` / `<!-- /roam:minimap -->` is replaced
|
|
|
565
576
|
| `roam vuln-map --generic\|--npm-audit\|--trivy F` | Ingest vulnerability reports and match to codebase symbols |
|
|
566
577
|
| `roam vuln-reach [--cve C] [--from E]` | Vulnerability reachability: exact paths from entry points to vulnerable calls |
|
|
567
578
|
| `roam supply-chain [--top N]` | Dependency risk dashboard: pin coverage, risk scoring, supply-chain health |
|
|
579
|
+
| `roam sbom [--format cyclonedx\|spdx] [--no-reachability] [-o FILE]` | SBOM generation (CycloneDX 1.5 / SPDX 2.3) enriched with call-graph reachability per dependency |
|
|
580
|
+
| `roam congestion [--window N] [--min-authors N]` | Developer congestion detection: concurrent authors per file, coordination risk scoring |
|
|
568
581
|
| `roam invariants [--staged] [--range R]` | Discover architectural contracts (invariants) from the codebase structure |
|
|
569
582
|
|
|
570
583
|
### Multi-Repo Workspace
|
|
@@ -586,7 +599,7 @@ The sentinel pair `<!-- roam:minimap -->` / `<!-- /roam:minimap -->` is replaced
|
|
|
586
599
|
| `roam --json <command>` | Structured JSON output with consistent envelope |
|
|
587
600
|
| `roam --compact <command>` | Token-efficient output: TSV tables, minimal JSON envelope |
|
|
588
601
|
| `roam --sarif <command>` | SARIF 2.1.0 output for dead, health, complexity, rules, secrets, and algo (GitHub/CI integration) |
|
|
589
|
-
| `roam
|
|
602
|
+
| `roam health --gate` | CI quality gate. Reads `.roam-gates.yml` thresholds. Exit code 5 on failure |
|
|
590
603
|
|
|
591
604
|
</details>
|
|
592
605
|
|
|
@@ -731,7 +744,7 @@ Blueprint Bridge fan-in:18 reach:34 moderate Coupling point between
|
|
|
731
744
|
$ roam describe --write
|
|
732
745
|
Wrote CLAUDE.md (98 lines) # auto-detects: CLAUDE.md, AGENTS.md, .cursor/rules, etc.
|
|
733
746
|
|
|
734
|
-
$ roam health --gate
|
|
747
|
+
$ roam health --gate
|
|
735
748
|
Health: 78/100 — PASS
|
|
736
749
|
```
|
|
737
750
|
|
|
@@ -837,7 +850,7 @@ Run `roam --help` for all commands. Use `roam --json <cmd>` for structured outpu
|
|
|
837
850
|
| "What breaks if I change X?" | `roam impact <symbol>` | No direct equivalent |
|
|
838
851
|
| "What tests to run?" | `roam affected-tests <name>` | Grep for imports (misses indirect) |
|
|
839
852
|
| "What's causing this bug?" | `roam diagnose <name>` | Manual call-chain tracing |
|
|
840
|
-
| "Codebase health score for CI" | `roam health --gate
|
|
853
|
+
| "Codebase health score for CI" | `roam health --gate` | No equivalent |
|
|
841
854
|
|
|
842
855
|
</details>
|
|
843
856
|
|
|
@@ -1083,20 +1096,24 @@ jobs:
|
|
|
1083
1096
|
|
|
1084
1097
|
- uses: Cranot/roam-code@main
|
|
1085
1098
|
with:
|
|
1086
|
-
|
|
1099
|
+
commands: health
|
|
1100
|
+
gate: "score>=70"
|
|
1101
|
+
sarif: true
|
|
1087
1102
|
comment: true
|
|
1088
|
-
fail-on-violation: true
|
|
1089
1103
|
```
|
|
1090
1104
|
|
|
1091
1105
|
Use `roam init` to auto-generate this workflow.
|
|
1092
1106
|
|
|
1093
1107
|
| Input | Default | Description |
|
|
1094
1108
|
|-------|---------|-------------|
|
|
1095
|
-
| `
|
|
1096
|
-
| `
|
|
1097
|
-
| `
|
|
1098
|
-
| `
|
|
1099
|
-
| `
|
|
1109
|
+
| `commands` | `health` | Space-separated roam commands to run |
|
|
1110
|
+
| `gate` | (empty) | Quality gate expression (e.g., `score>=70`). Exit 5 on failure |
|
|
1111
|
+
| `sarif` | `false` | Upload SARIF results to GitHub Code Scanning |
|
|
1112
|
+
| `comment` | `true` | Post sticky PR comment with results |
|
|
1113
|
+
| `python-version` | `3.11` | Python version |
|
|
1114
|
+
| `version` | `latest` | Pin to a specific roam-code version |
|
|
1115
|
+
| `cache` | `true` | Cache the SQLite index between runs |
|
|
1116
|
+
| `changed-only` | `false` | Incremental mode: adapt commands to changed files |
|
|
1100
1117
|
|
|
1101
1118
|
<details>
|
|
1102
1119
|
<summary><strong>GitLab CI</strong></summary>
|
|
@@ -1109,7 +1126,7 @@ roam-analysis:
|
|
|
1109
1126
|
- pip install roam-code
|
|
1110
1127
|
script:
|
|
1111
1128
|
- roam index
|
|
1112
|
-
- roam health --gate
|
|
1129
|
+
- roam health --gate
|
|
1113
1130
|
- roam --json pr-risk origin/main..HEAD > roam-report.json
|
|
1114
1131
|
artifacts:
|
|
1115
1132
|
paths:
|
|
@@ -1128,7 +1145,7 @@ Universal pattern:
|
|
|
1128
1145
|
```bash
|
|
1129
1146
|
pip install roam-code
|
|
1130
1147
|
roam index
|
|
1131
|
-
roam health --gate
|
|
1148
|
+
roam health --gate # exit 5 on failure (reads .roam-gates.yml)
|
|
1132
1149
|
roam --json health > report.json
|
|
1133
1150
|
```
|
|
1134
1151
|
|
|
@@ -1167,9 +1184,9 @@ Zero infrastructure, zero vendor lock-in, zero data leaving your network.
|
|
|
1167
1184
|
|
|
1168
1185
|
**Week 1-2 (pilot):** 1-2 developers run `roam init` on one repo. Use `roam preflight` before changes, `roam pr-risk` before PRs.
|
|
1169
1186
|
|
|
1170
|
-
**Week 3-4 (expand):** Add `roam health --gate
|
|
1187
|
+
**Week 3-4 (expand):** Add `roam health --gate` to CI as a non-blocking check (configure thresholds in `.roam-gates.yml`).
|
|
1171
1188
|
|
|
1172
|
-
**Month 2+ (standardize):** Tighten
|
|
1189
|
+
**Month 2+ (standardize):** Tighten gate thresholds. Expand to additional repos. Track trajectory with `roam trends`.
|
|
1173
1190
|
|
|
1174
1191
|
</details>
|
|
1175
1192
|
|
|
@@ -1222,12 +1239,14 @@ Cross-language edges mean `roam impact AccountService` shows blast radius across
|
|
|
1222
1239
|
</details>
|
|
1223
1240
|
|
|
1224
1241
|
| Ruby | `.rb` | classes, modules, methods, singleton methods, constants | require, require_relative, include/extend, calls, ClassName.new | class inheritance |
|
|
1242
|
+
| Kotlin | `.kt` `.kts` | classes, interfaces, enums, objects, functions, methods, properties | imports, calls, type refs | extends, implements |
|
|
1243
|
+
| Swift | `.swift` | classes, structs, enums, protocols, functions, methods, properties | imports, calls, type refs | extends, conforms |
|
|
1225
1244
|
| JSONC | `.jsonc` | via JSON grammar | -- | -- |
|
|
1226
1245
|
| MDX | `.mdx` | via Markdown grammar | -- | -- |
|
|
1227
1246
|
|
|
1228
1247
|
### Tier 2 -- Generic extraction
|
|
1229
1248
|
|
|
1230
|
-
|
|
1249
|
+
Scala (`.scala` `.sc`)
|
|
1231
1250
|
|
|
1232
1251
|
Tier 2 languages get symbol extraction and basic inheritance via a generic tree-sitter walker.
|
|
1233
1252
|
|
|
@@ -1304,6 +1323,37 @@ Codebase
|
|
|
1304
1323
|
|
|
1305
1324
|
After the first full index, `roam index` only re-processes changed files (mtime + SHA-256 hash). Incremental updates are near-instant.
|
|
1306
1325
|
|
|
1326
|
+
### .roamignore
|
|
1327
|
+
|
|
1328
|
+
Create a `.roamignore` file in your project root to exclude files from indexing. It uses **full gitignore syntax**:
|
|
1329
|
+
|
|
1330
|
+
| Pattern | Meaning |
|
|
1331
|
+
|---------|---------|
|
|
1332
|
+
| `*.log` | Exclude all `.log` files (basename match) |
|
|
1333
|
+
| `vendor/` | Exclude the `vendor` directory and everything under it |
|
|
1334
|
+
| `/build/` | Exclude `build/` at repo root only (anchored) |
|
|
1335
|
+
| `src/**/*.pb.go` | Exclude `.pb.go` files at any depth under `src/` |
|
|
1336
|
+
| `**/test_*.py` | Exclude `test_*.py` files anywhere |
|
|
1337
|
+
| `?` | Match any single character (not `/`) |
|
|
1338
|
+
| `[abc]` / `[!abc]` | Character class / negated character class |
|
|
1339
|
+
| `!important.log` | Un-exclude (re-include) `important.log` |
|
|
1340
|
+
| `# comment` | Lines starting with `#` are comments |
|
|
1341
|
+
|
|
1342
|
+
Key rules: `*` matches within a single path segment (not across `/`). `**` matches across `/` boundaries. Last matching pattern wins (for negation). Patterns containing `/` are anchored to the repo root.
|
|
1343
|
+
|
|
1344
|
+
```
|
|
1345
|
+
# .roamignore example
|
|
1346
|
+
*_pb2.py
|
|
1347
|
+
*_pb2_grpc.py
|
|
1348
|
+
vendor/
|
|
1349
|
+
node_modules/
|
|
1350
|
+
*.generated.*
|
|
1351
|
+
/build/
|
|
1352
|
+
!build/keep/
|
|
1353
|
+
```
|
|
1354
|
+
|
|
1355
|
+
You can also exclude patterns via `roam config --exclude "*.proto"` (stored in `.roam/config.json`) or inspect active patterns with `roam config --show`.
|
|
1356
|
+
|
|
1307
1357
|
<details>
|
|
1308
1358
|
<summary><strong>Graph algorithms</strong></summary>
|
|
1309
1359
|
|
|
@@ -1406,7 +1456,7 @@ Static analysis trade-offs:
|
|
|
1406
1456
|
- **Static analysis primarily** -- can't trace dynamic dispatch, reflection, or eval'd code. Runtime trace ingestion (`roam ingest-trace`) adds production data but requires external trace export
|
|
1407
1457
|
- **Import resolution is heuristic** -- complex re-exports or conditional imports may not resolve
|
|
1408
1458
|
- **Limited cross-language edges** -- Salesforce, Protobuf, REST API, and multi-repo edges are supported, but not arbitrary FFI
|
|
1409
|
-
- **Tier 2 languages** (
|
|
1459
|
+
- **Tier 2 languages** (Scala) get basic symbol extraction only
|
|
1410
1460
|
- **Large monorepos** (100k+ files) may have slow initial indexing
|
|
1411
1461
|
|
|
1412
1462
|
## Troubleshooting
|
|
@@ -1418,7 +1468,7 @@ Static analysis trade-offs:
|
|
|
1418
1468
|
| `database is locked` | `roam index --force` to rebuild |
|
|
1419
1469
|
| Unicode errors on Windows | `chcp 65001` for UTF-8 |
|
|
1420
1470
|
| Symbol resolves to wrong file | Use `file:symbol` syntax: `roam symbol myfile:MyFunction` |
|
|
1421
|
-
| Health score seems wrong | `roam
|
|
1471
|
+
| Health score seems wrong | `roam --json health` for factor breakdown |
|
|
1422
1472
|
| Index stale after `git pull` | `roam index` (incremental). After major refactors: `roam index --force` |
|
|
1423
1473
|
|
|
1424
1474
|
## Update / Uninstall
|
|
@@ -1443,7 +1493,7 @@ Delete `.roam/` from your project root to clean up local data.
|
|
|
1443
1493
|
git clone https://github.com/Cranot/roam-code.git
|
|
1444
1494
|
cd roam-code
|
|
1445
1495
|
pip install -e ".[dev]" # includes pytest, ruff
|
|
1446
|
-
pytest tests/ # ~
|
|
1496
|
+
pytest tests/ # ~5500 tests, Python 3.9-3.13
|
|
1447
1497
|
|
|
1448
1498
|
# Or use Make targets:
|
|
1449
1499
|
make dev # install with dev extras
|
|
@@ -1460,7 +1510,7 @@ roam-code/
|
|
|
1460
1510
|
├── action.yml # Reusable GitHub Action
|
|
1461
1511
|
├── src/roam/
|
|
1462
1512
|
│ ├── __init__.py # Version (from pyproject.toml)
|
|
1463
|
-
│ ├── cli.py # Click CLI (
|
|
1513
|
+
│ ├── cli.py # Click CLI (139 commands)
|
|
1464
1514
|
│ ├── mcp_server.py # MCP server (101 tools, 10 resources, 5 prompts)
|
|
1465
1515
|
│ ├── db/
|
|
1466
1516
|
│ │ ├── connection.py # SQLite (WAL, pragmas, batched IN)
|
|
@@ -1480,7 +1530,7 @@ roam-code/
|
|
|
1480
1530
|
│ ├── languages/
|
|
1481
1531
|
│ │ ├── base.py # Abstract LanguageExtractor
|
|
1482
1532
|
│ │ ├── registry.py # Language detection + aliasing
|
|
1483
|
-
│ │ ├── *_lang.py # One file per language (
|
|
1533
|
+
│ │ ├── *_lang.py # One file per language (20 dedicated + generic)
|
|
1484
1534
|
│ │ └── generic_lang.py # Tier 2 fallback
|
|
1485
1535
|
│ ├── bridges/
|
|
1486
1536
|
│ │ ├── base.py, registry.py # Cross-language bridge framework
|
|
@@ -1517,7 +1567,7 @@ roam-code/
|
|
|
1517
1567
|
│ │ ├── engine.py # YAML rule parser + graph query evaluator
|
|
1518
1568
|
│ │ ├── builtin.py # 10 built-in governance rules
|
|
1519
1569
|
│ │ ├── ast_match.py # AST pattern matching with $METAVAR captures
|
|
1520
|
-
│ │ └── dataflow.py #
|
|
1570
|
+
│ │ └── dataflow.py # Intra-procedural dataflow analysis
|
|
1521
1571
|
│ ├── runtime/
|
|
1522
1572
|
│ │ ├── trace_ingest.py # OpenTelemetry/Jaeger/Zipkin ingestion
|
|
1523
1573
|
│ │ └── hotspots.py # Runtime hotspot analysis
|
|
@@ -1532,7 +1582,7 @@ roam-code/
|
|
|
1532
1582
|
│ ├── formatter.py # Token-efficient formatting
|
|
1533
1583
|
│ ├── sarif.py # SARIF 2.1.0 output
|
|
1534
1584
|
│ └── schema_registry.py # JSON envelope schema versioning
|
|
1535
|
-
└── tests/ # ~
|
|
1585
|
+
└── tests/ # ~5500 tests across 186 test files
|
|
1536
1586
|
```
|
|
1537
1587
|
|
|
1538
1588
|
</details>
|
|
@@ -1555,7 +1605,7 @@ Optional: Local semantic ONNX stack (`numpy`, `onnxruntime`, `tokenizers`) via `
|
|
|
1555
1605
|
### Shipped
|
|
1556
1606
|
|
|
1557
1607
|
- [x] MCP v2 agent surface: in-process execution, compound operations, presets, schemas, annotations, and compatibility profiles.
|
|
1558
|
-
- [x] Full command and MCP inventory parity in docs:
|
|
1608
|
+
- [x] Full command and MCP inventory parity in docs: 139 CLI commands and 101 MCP tools.
|
|
1559
1609
|
- [x] CI hardening: composite action, changed-only mode, trend-aware gates, sticky PR updater, and SARIF guardrails.
|
|
1560
1610
|
- [x] Performance foundation: FTS5/BM25 search, O(changed) incremental indexing, DB/index optimizations.
|
|
1561
1611
|
- [x] Agent governance suite: `vibe-check`, `ai-readiness`, `verify`, `ai-ratio`, `duplicates`, advanced `algo` scoring/SARIF.
|
|
@@ -1576,7 +1626,7 @@ Optional: Local semantic ONNX stack (`numpy`, `onnxruntime`, `tokenizers`) via `
|
|
|
1576
1626
|
git clone https://github.com/Cranot/roam-code.git
|
|
1577
1627
|
cd roam-code
|
|
1578
1628
|
pip install -e .
|
|
1579
|
-
pytest tests/ # all ~
|
|
1629
|
+
pytest tests/ # all ~5500 tests must pass
|
|
1580
1630
|
```
|
|
1581
1631
|
|
|
1582
1632
|
Good first contributions: add a [Tier 1 language](src/roam/languages/) (see `go_lang.py` or `php_lang.py` as templates), improve reference resolution, add benchmark repos, extend SARIF converters, add MCP tools.
|