carto-md 2.0.8 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/CONTRIBUTING.md +19 -15
  2. package/README.md +203 -286
  3. package/docs/anci/v0.1-DRAFT.md +420 -0
  4. package/docs/api/README.md +99 -0
  5. package/docs/api/did_we_discuss_this.md +34 -0
  6. package/docs/api/dismiss_suggestion.md +34 -0
  7. package/docs/api/explain_change_in_natural_language.md +33 -0
  8. package/docs/api/find_consumers_of_api.md +34 -0
  9. package/docs/api/get_action_patterns.md +32 -0
  10. package/docs/api/get_active_drift.md +32 -0
  11. package/docs/api/get_active_suggestions.md +25 -0
  12. package/docs/api/get_ai_cost_attribution.md +32 -0
  13. package/docs/api/get_arch_events.md +42 -0
  14. package/docs/api/get_architectural_drift.md +37 -0
  15. package/docs/api/get_architecture.md +25 -0
  16. package/docs/api/get_blast_radius.md +34 -0
  17. package/docs/api/get_canonical_pattern.md +39 -0
  18. package/docs/api/get_change_plan.md +34 -0
  19. package/docs/api/get_change_velocity.md +32 -0
  20. package/docs/api/get_churn_vs_blast_radius.md +32 -0
  21. package/docs/api/get_complexity_trend.md +39 -0
  22. package/docs/api/get_context.md +34 -0
  23. package/docs/api/get_conventions.md +32 -0
  24. package/docs/api/get_cross_domain.md +25 -0
  25. package/docs/api/get_cross_language_call_graph.md +25 -0
  26. package/docs/api/get_cross_repo_blast_radius.md +34 -0
  27. package/docs/api/get_cross_team_coupling.md +25 -0
  28. package/docs/api/get_data_flow.md +33 -0
  29. package/docs/api/get_dead_code_with_confidence.md +32 -0
  30. package/docs/api/get_decision_log.md +32 -0
  31. package/docs/api/get_dependency_surface.md +25 -0
  32. package/docs/api/get_domain.md +34 -0
  33. package/docs/api/get_domain_evolution.md +39 -0
  34. package/docs/api/get_domain_health.md +32 -0
  35. package/docs/api/get_domains_list.md +25 -0
  36. package/docs/api/get_drift_digest.md +32 -0
  37. package/docs/api/get_env_vars.md +32 -0
  38. package/docs/api/get_evolution_delta.md +36 -0
  39. package/docs/api/get_file_ownership.md +33 -0
  40. package/docs/api/get_file_summary.md +34 -0
  41. package/docs/api/get_high_impact_files.md +32 -0
  42. package/docs/api/get_hot_in_prod_no_tests.md +34 -0
  43. package/docs/api/get_hotspot_files.md +37 -0
  44. package/docs/api/get_iac_resources.md +25 -0
  45. package/docs/api/get_interface_contract.md +33 -0
  46. package/docs/api/get_intervention_history.md +32 -0
  47. package/docs/api/get_invariants.md +37 -0
  48. package/docs/api/get_llm_enrichment.md +33 -0
  49. package/docs/api/get_microservice_cut_points.md +32 -0
  50. package/docs/api/get_microservices_migration_cut_points.md +25 -0
  51. package/docs/api/get_minimal_context_for_intent.md +39 -0
  52. package/docs/api/get_models.md +32 -0
  53. package/docs/api/get_neighbors.md +39 -0
  54. package/docs/api/get_org_architecture.md +25 -0
  55. package/docs/api/get_org_domain_mapping.md +25 -0
  56. package/docs/api/get_pending_decisions.md +32 -0
  57. package/docs/api/get_predictive_risk.md +32 -0
  58. package/docs/api/get_progressive_disclosure_tree.md +25 -0
  59. package/docs/api/get_recent_decisions.md +37 -0
  60. package/docs/api/get_risk_weighted_blast_radius.md +32 -0
  61. package/docs/api/get_routes.md +25 -0
  62. package/docs/api/get_safety_checklist.md +33 -0
  63. package/docs/api/get_semantic_diff.md +34 -0
  64. package/docs/api/get_service_boundary_violations.md +25 -0
  65. package/docs/api/get_service_dependency_graph.md +25 -0
  66. package/docs/api/get_session_context.md +32 -0
  67. package/docs/api/get_similar_patterns.md +39 -0
  68. package/docs/api/get_stale_docs.md +25 -0
  69. package/docs/api/get_structure.md +25 -0
  70. package/docs/api/get_temporal_context.md +34 -0
  71. package/docs/api/get_test_coverage_map.md +25 -0
  72. package/docs/api/get_token_budget_report.md +36 -0
  73. package/docs/api/get_upgrade_risk.md +25 -0
  74. package/docs/api/get_working_memory.md +25 -0
  75. package/docs/api/ingest_otlp_traces.md +34 -0
  76. package/docs/api/scaffold_for_intent.md +34 -0
  77. package/docs/api/search_routes.md +34 -0
  78. package/docs/api/simulate_change_impact.md +37 -0
  79. package/docs/api/validate_change.md +39 -0
  80. package/docs/api/validate_diff.md +39 -0
  81. package/docs/concepts/anci.md +87 -0
  82. package/docs/concepts/blast-radius.md +66 -0
  83. package/docs/concepts/domains.md +91 -0
  84. package/docs/concepts/import-graph.md +102 -0
  85. package/docs/concepts/mcp-integration.md +148 -0
  86. package/docs/guides/adding-feature-safely.md +101 -0
  87. package/docs/guides/ci-integration.md +175 -0
  88. package/docs/guides/monorepo-setup.md +121 -0
  89. package/docs/guides/onboarding-new-engineer.md +121 -0
  90. package/docs/guides/pre-merge-review.md +139 -0
  91. package/docs/migration/v1-to-v2.md +110 -0
  92. package/docs/quickstart.md +95 -0
  93. package/docs/scale.md +129 -0
  94. package/docs/troubleshooting.md +180 -0
  95. package/package.json +12 -5
  96. package/scripts/gen-api-docs.js +170 -0
  97. package/scripts/postinstall.js +391 -24
  98. package/src/acp/agent.js +83 -11
  99. package/src/acp/config.js +64 -0
  100. package/src/acp/persistence.js +146 -0
  101. package/src/acp/providers/anthropic.js +179 -27
  102. package/src/acp/providers/index.js +15 -2
  103. package/src/acp/providers/openai.js +164 -38
  104. package/src/acp/providers/sse.js +82 -0
  105. package/src/acp/safety.js +128 -0
  106. package/src/acp/session.js +73 -0
  107. package/src/adjacent/call-graph.js +170 -0
  108. package/src/adjacent/iac.js +167 -0
  109. package/src/adjacent/llm-enrich.js +35 -0
  110. package/src/adjacent/runtime.js +216 -0
  111. package/src/adjacent/semantic-diff.js +143 -0
  112. package/src/agents/leiden.js +4 -4
  113. package/src/agents/scan-structure.js +2 -2
  114. package/src/ai/context-builder.js +215 -0
  115. package/src/ai/retrieval/lexical.js +122 -0
  116. package/src/ai/retrieval/rrf.js +121 -0
  117. package/src/ai/retrieval/semantic.js +35 -0
  118. package/src/ai/retrieval/structural.js +82 -0
  119. package/src/ai/tools.js +423 -0
  120. package/src/anci/consumer.js +305 -0
  121. package/src/anci/deserialize.js +160 -0
  122. package/src/anci/emit.js +85 -0
  123. package/src/anci/serialize.js +264 -0
  124. package/src/anci/yaml.js +401 -0
  125. package/src/bitmap/index.js +1 -1
  126. package/src/bitmap/tools.js +2 -2
  127. package/src/brain/conventions/index.js +185 -0
  128. package/src/brain/index.js +31 -0
  129. package/src/brain/invariants/index.js +252 -0
  130. package/src/brain/procedural/index.js +181 -0
  131. package/src/brain/suggestions/index.js +153 -0
  132. package/src/brain/working/index.js +170 -0
  133. package/src/cli/anci.js +237 -0
  134. package/src/cli/check.js +47 -1
  135. package/src/cli/diff.js +83 -0
  136. package/src/cli/doctor.js +270 -0
  137. package/src/cli/explain.js +61 -0
  138. package/src/cli/index.js +115 -0
  139. package/src/cli/init.js +144 -6
  140. package/src/cli/inspect.js +1 -1
  141. package/src/cli/org.js +172 -0
  142. package/src/cli/pr-impact.js +554 -0
  143. package/src/cli/serve.js +1 -1
  144. package/src/cli/status.js +211 -0
  145. package/src/cli/sync.js +2 -2
  146. package/src/cli/temporal.js +188 -0
  147. package/src/cli/validate.js +201 -0
  148. package/src/cli/watch.js +4 -4
  149. package/src/cli/why.js +101 -0
  150. package/src/extractors/frameworks.js +236 -0
  151. package/src/extractors/languages/dart.js +138 -0
  152. package/src/extractors/languages/go.js +11 -1
  153. package/src/extractors/languages/javascript.js +16 -6
  154. package/src/extractors/languages/kotlin.js +169 -0
  155. package/src/extractors/languages/php.js +195 -0
  156. package/src/extractors/languages/python.js +12 -1
  157. package/src/extractors/languages/swift.js +140 -0
  158. package/src/extractors/languages/typescript.js +15 -2
  159. package/src/extractors/plugin-api.js +102 -0
  160. package/src/mcp/change-plan.js +8 -8
  161. package/src/mcp/files-without-tests.js +285 -0
  162. package/src/mcp/middleware/index.js +451 -0
  163. package/src/mcp/server.js +2292 -0
  164. package/src/mcp/validate.js +1 -1
  165. package/src/org/detect.js +262 -0
  166. package/src/org/queries.js +144 -0
  167. package/src/org/store.js +173 -0
  168. package/src/org/sync.js +106 -0
  169. package/src/predictive/cut-points.js +83 -0
  170. package/src/predictive/drift-digest.js +88 -0
  171. package/src/predictive/ownership.js +145 -0
  172. package/src/predictive/risk-score.js +121 -0
  173. package/src/predictive/validate-change.js +55 -0
  174. package/src/store/store-adapter.js +3 -3
  175. package/src/store/{sync-v2.js → sync.js} +105 -16
  176. package/src/temporal/backfill.js +211 -0
  177. package/src/temporal/delta.js +85 -0
  178. package/src/temporal/events.js +180 -0
  179. package/src/temporal/queries.js +358 -0
  180. package/src/temporal/snapshot.js +151 -0
  181. package/src/temporal/store.js +400 -0
  182. package/src/mcp/server-v2.js +0 -986
package/CONTRIBUTING.md CHANGED
@@ -10,9 +10,9 @@ Carto is free, open source, and community-maintained. The core team owns the SQL
10
10
 
11
11
  New language support lives in `src/extractors/languages/`. Each language is an isolated module.
12
12
 
13
- **Currently supported:** JavaScript/TypeScript, Python, Go, Rust, Ruby, Java, C/C++, C#, R, Prisma, HTML
13
+ **Currently supported:** JavaScript/TypeScript, Python, Go, Rust, Ruby, Java, Kotlin, C/C++, C#, PHP, Swift, Dart, R, Prisma, HTML
14
14
 
15
- **Wanted:** PHP, Swift, Kotlin, Elixir, Scala, Haskell, Zig
15
+ **Wanted:** Elixir, Scala, Haskell, Zig, Lua, Erlang, OCaml, Nim
16
16
 
17
17
  ### Tier 2 — Framework extractors (safe to add, easy to review)
18
18
 
@@ -24,21 +24,25 @@ Framework-specific route and model extraction lives inside the language plugins.
24
24
  - **Go**: Gin, Echo, Chi, net/http — routes, structs, import graph
25
25
  - **Rust**: Actix-web, Axum, Rocket — routes, structs
26
26
  - **Java**: Spring MVC/Boot, JAX-RS — routes, JPA entities, records
27
+ - **Kotlin**: Spring (`@GetMapping`/`@PostMapping`/…), Ktor `routing { }` DSL, data classes
27
28
  - **C#**: ASP.NET Core (attribute routing + minimal API), EF Core classes, records
28
- - **Ruby**: Rails routes.rb, Sinatra, ActiveRecord models
29
+ - **PHP**: Laravel `Route::get(...)`, Symfony `#[Route(...)]` attributes, Eloquent models
30
+ - **Swift**: Vapor `app.get(...)` / `router.get(..., use: ...)`, structs
31
+ - **Dart**: Flutter widget classes, Shelf Router `router.get(...)`
32
+ - **Ruby**: Rails routes.rb (including `resources :foo` CRUD expansion), Sinatra, ActiveRecord models
29
33
  - **Schema**: Prisma
30
- - **Frontend**: HTML fetch()
34
+ - **Frontend**: HTML `fetch()`
31
35
  - **R**: Plumber, Shiny, R6, S7
32
36
 
33
- **Wanted:** NestJS, Hono, Fastify, Laravel, Django REST Framework, Ktor, Vapor
37
+ **Wanted:** NestJS, Hono, Fastify, Django REST Framework, Phoenix (Elixir), Echo (Go fuller), Slim (PHP)
34
38
 
35
39
  ### Tier 3 — Core (review carefully before merging)
36
40
 
37
41
  - `src/agents/merger.js` — merger logic. One bad merge = developer loses manual notes.
38
42
  - `src/agents/leiden.js` — Leiden+CPM graph clustering. Wrong clusters = wrong domain context.
39
43
  - `src/store/sqlite-store.js` — SQLite persistence layer.
40
- - `src/mcp/server-v2.js` — MCP server tools. Breaking changes affect Kiro/Cursor/Claude.
41
- - `src/store/sync-v2.js` — full sync pipeline.
44
+ - `src/mcp/server.js` — MCP server tools. Breaking changes affect Kiro/Cursor/Claude.
45
+ - `src/store/sync.js` — full sync pipeline.
42
46
  - `src/cli/watch.js` — incremental update pipeline.
43
47
  - `src/extractors/imports.js` — import resolution for all languages.
44
48
 
@@ -124,7 +128,7 @@ If your language has resolvable local imports (not just package names), add a ca
124
128
 
125
129
  Then implement `extractYourLanguageImports()` at the bottom of the file. It should return an array of relative file paths (from project root) that actually exist on disk.
126
130
 
127
- ### Step 5: Add to `CODE_EXTS` in `src/store/sync-v2.js`
131
+ ### Step 5: Add to `CODE_EXTS` in `src/store/sync.js`
128
132
 
129
133
  ```js
130
134
  const CODE_EXTS = new Set([
@@ -133,7 +137,7 @@ const CODE_EXTS = new Set([
133
137
  ]);
134
138
  ```
135
139
 
136
- ### Step 6: Add to `detectLanguage()` in `src/store/sync-v2.js`
140
+ ### Step 6: Add to `detectLanguage()` in `src/store/sync.js`
137
141
 
138
142
  ```js
139
143
  '.ext': 'yourlanguage',
@@ -192,7 +196,7 @@ For non-SaaS repos, users can define custom domains in `carto.config.json`:
192
196
  }
193
197
  ```
194
198
 
195
- The keyword seeds in `src/store/sync-v2.js` (the `keywordSeeds` object) can be extended for new domain types.
199
+ The keyword seeds in `src/store/sync.js` (the `keywordSeeds` object) can be extended for new domain types.
196
200
 
197
201
  ---
198
202
 
@@ -215,8 +219,8 @@ cd carto
215
219
  npm install
216
220
  node src/cli/index.js init # test in any project
217
221
  node src/cli/index.js serve # test MCP server
218
- npm test # run test suite (62 tests)
219
- node test/correctness.js # run correctness tests (31 tests)
222
+ npm test # run test suite (346 tests across ~38 suites)
223
+ node test/correctness.js # run correctness tests (27 checks)
220
224
  node test/benchmark.js # run benchmarks against real repos
221
225
  ```
222
226
 
@@ -255,11 +259,11 @@ npm run test:bench-ci # self-bench (matches what bench.yml runs)
255
259
  - [ ] Plugin uses tree-sitter for imports/symbols (not Babel or regex for the hot path)
256
260
  - [ ] Plugin returns all fields including `_tsImports` and `_tsSymbols`
257
261
  - [ ] Import resolution added to `src/extractors/imports.js` if language has local imports
258
- - [ ] Extension added to `CODE_EXTS` and `detectLanguage()` in `sync-v2.js`
262
+ - [ ] Extension added to `CODE_EXTS` and `detectLanguage()` in `sync.js`
259
263
  - [ ] No changes to merger logic (unless explicitly fixing a merger bug)
260
264
  - [ ] No network calls added
261
- - [ ] `npm test` passes (62/62)
262
- - [ ] `node test/correctness.js` passes (31/31)
265
+ - [ ] `npm test` passes (346/346)
266
+ - [ ] `node test/correctness.js` passes (27/27)
263
267
 
264
268
  ---
265
269