carto-md 2.0.9 → 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.
- package/CONTRIBUTING.md +19 -15
- package/README.md +192 -415
- package/docs/api/README.md +99 -0
- package/docs/api/did_we_discuss_this.md +34 -0
- package/docs/api/dismiss_suggestion.md +34 -0
- package/docs/api/explain_change_in_natural_language.md +33 -0
- package/docs/api/find_consumers_of_api.md +34 -0
- package/docs/api/get_action_patterns.md +32 -0
- package/docs/api/get_active_drift.md +32 -0
- package/docs/api/get_active_suggestions.md +25 -0
- package/docs/api/get_ai_cost_attribution.md +32 -0
- package/docs/api/get_arch_events.md +42 -0
- package/docs/api/get_architectural_drift.md +37 -0
- package/docs/api/get_architecture.md +25 -0
- package/docs/api/get_blast_radius.md +34 -0
- package/docs/api/get_canonical_pattern.md +39 -0
- package/docs/api/get_change_plan.md +34 -0
- package/docs/api/get_change_velocity.md +32 -0
- package/docs/api/get_churn_vs_blast_radius.md +32 -0
- package/docs/api/get_complexity_trend.md +39 -0
- package/docs/api/get_context.md +34 -0
- package/docs/api/get_conventions.md +32 -0
- package/docs/api/get_cross_domain.md +25 -0
- package/docs/api/get_cross_language_call_graph.md +25 -0
- package/docs/api/get_cross_repo_blast_radius.md +34 -0
- package/docs/api/get_cross_team_coupling.md +25 -0
- package/docs/api/get_data_flow.md +33 -0
- package/docs/api/get_dead_code_with_confidence.md +32 -0
- package/docs/api/get_decision_log.md +32 -0
- package/docs/api/get_dependency_surface.md +25 -0
- package/docs/api/get_domain.md +34 -0
- package/docs/api/get_domain_evolution.md +39 -0
- package/docs/api/get_domain_health.md +32 -0
- package/docs/api/get_domains_list.md +25 -0
- package/docs/api/get_drift_digest.md +32 -0
- package/docs/api/get_env_vars.md +32 -0
- package/docs/api/get_evolution_delta.md +36 -0
- package/docs/api/get_file_ownership.md +33 -0
- package/docs/api/get_file_summary.md +34 -0
- package/docs/api/get_high_impact_files.md +32 -0
- package/docs/api/get_hot_in_prod_no_tests.md +34 -0
- package/docs/api/get_hotspot_files.md +37 -0
- package/docs/api/get_iac_resources.md +25 -0
- package/docs/api/get_interface_contract.md +33 -0
- package/docs/api/get_intervention_history.md +32 -0
- package/docs/api/get_invariants.md +37 -0
- package/docs/api/get_llm_enrichment.md +33 -0
- package/docs/api/get_microservice_cut_points.md +32 -0
- package/docs/api/get_microservices_migration_cut_points.md +25 -0
- package/docs/api/get_minimal_context_for_intent.md +39 -0
- package/docs/api/get_models.md +32 -0
- package/docs/api/get_neighbors.md +39 -0
- package/docs/api/get_org_architecture.md +25 -0
- package/docs/api/get_org_domain_mapping.md +25 -0
- package/docs/api/get_pending_decisions.md +32 -0
- package/docs/api/get_predictive_risk.md +32 -0
- package/docs/api/get_progressive_disclosure_tree.md +25 -0
- package/docs/api/get_recent_decisions.md +37 -0
- package/docs/api/get_risk_weighted_blast_radius.md +32 -0
- package/docs/api/get_routes.md +25 -0
- package/docs/api/get_safety_checklist.md +33 -0
- package/docs/api/get_semantic_diff.md +34 -0
- package/docs/api/get_service_boundary_violations.md +25 -0
- package/docs/api/get_service_dependency_graph.md +25 -0
- package/docs/api/get_session_context.md +32 -0
- package/docs/api/get_similar_patterns.md +39 -0
- package/docs/api/get_stale_docs.md +25 -0
- package/docs/api/get_structure.md +25 -0
- package/docs/api/get_temporal_context.md +34 -0
- package/docs/api/get_test_coverage_map.md +25 -0
- package/docs/api/get_token_budget_report.md +36 -0
- package/docs/api/get_upgrade_risk.md +25 -0
- package/docs/api/get_working_memory.md +25 -0
- package/docs/api/ingest_otlp_traces.md +34 -0
- package/docs/api/scaffold_for_intent.md +34 -0
- package/docs/api/search_routes.md +34 -0
- package/docs/api/simulate_change_impact.md +37 -0
- package/docs/api/validate_change.md +39 -0
- package/docs/api/validate_diff.md +39 -0
- package/docs/concepts/anci.md +87 -0
- package/docs/concepts/blast-radius.md +66 -0
- package/docs/concepts/domains.md +91 -0
- package/docs/concepts/import-graph.md +102 -0
- package/docs/concepts/mcp-integration.md +148 -0
- package/docs/guides/adding-feature-safely.md +101 -0
- package/docs/guides/ci-integration.md +175 -0
- package/docs/guides/monorepo-setup.md +121 -0
- package/docs/guides/onboarding-new-engineer.md +121 -0
- package/docs/guides/pre-merge-review.md +139 -0
- package/docs/migration/v1-to-v2.md +110 -0
- package/docs/quickstart.md +95 -0
- package/docs/scale.md +2 -2
- package/docs/troubleshooting.md +180 -0
- package/package.json +10 -4
- package/scripts/gen-api-docs.js +170 -0
- package/src/acp/agent.js +83 -11
- package/src/acp/config.js +64 -0
- package/src/acp/persistence.js +146 -0
- package/src/acp/providers/anthropic.js +179 -27
- package/src/acp/providers/index.js +15 -2
- package/src/acp/providers/openai.js +164 -38
- package/src/acp/providers/sse.js +82 -0
- package/src/acp/safety.js +128 -0
- package/src/acp/session.js +73 -0
- package/src/adjacent/call-graph.js +170 -0
- package/src/adjacent/iac.js +167 -0
- package/src/adjacent/llm-enrich.js +35 -0
- package/src/adjacent/runtime.js +216 -0
- package/src/adjacent/semantic-diff.js +143 -0
- package/src/agents/scan-structure.js +1 -1
- package/src/ai/context-builder.js +215 -0
- package/src/ai/retrieval/lexical.js +122 -0
- package/src/ai/retrieval/rrf.js +121 -0
- package/src/ai/retrieval/semantic.js +35 -0
- package/src/ai/retrieval/structural.js +82 -0
- package/src/ai/tools.js +423 -0
- package/src/anci/emit.js +2 -2
- package/src/bitmap/index.js +1 -1
- package/src/bitmap/tools.js +2 -2
- package/src/brain/conventions/index.js +185 -0
- package/src/brain/index.js +31 -0
- package/src/brain/invariants/index.js +252 -0
- package/src/brain/procedural/index.js +181 -0
- package/src/brain/suggestions/index.js +153 -0
- package/src/brain/working/index.js +170 -0
- package/src/cli/check.js +47 -1
- package/src/cli/diff.js +83 -0
- package/src/cli/doctor.js +270 -0
- package/src/cli/explain.js +61 -0
- package/src/cli/index.js +101 -0
- package/src/cli/init.js +143 -5
- package/src/cli/org.js +172 -0
- package/src/cli/pr-impact.js +59 -2
- package/src/cli/serve.js +1 -1
- package/src/cli/status.js +211 -0
- package/src/cli/sync.js +2 -2
- package/src/cli/temporal.js +188 -0
- package/src/cli/validate.js +201 -0
- package/src/cli/watch.js +4 -4
- package/src/cli/why.js +101 -0
- package/src/extractors/frameworks.js +236 -0
- package/src/extractors/languages/dart.js +138 -0
- package/src/extractors/languages/go.js +11 -1
- package/src/extractors/languages/javascript.js +13 -3
- package/src/extractors/languages/kotlin.js +169 -0
- package/src/extractors/languages/php.js +195 -0
- package/src/extractors/languages/python.js +12 -1
- package/src/extractors/languages/swift.js +140 -0
- package/src/extractors/languages/typescript.js +15 -2
- package/src/extractors/plugin-api.js +102 -0
- package/src/mcp/files-without-tests.js +285 -0
- package/src/mcp/middleware/index.js +451 -0
- package/src/mcp/server.js +2292 -0
- package/src/mcp/validate.js +1 -1
- package/src/org/detect.js +262 -0
- package/src/org/queries.js +144 -0
- package/src/org/store.js +173 -0
- package/src/org/sync.js +106 -0
- package/src/predictive/cut-points.js +83 -0
- package/src/predictive/drift-digest.js +88 -0
- package/src/predictive/ownership.js +145 -0
- package/src/predictive/risk-score.js +121 -0
- package/src/predictive/validate-change.js +55 -0
- package/src/store/store-adapter.js +3 -3
- package/src/store/{sync-v2.js → sync.js} +53 -13
- package/src/temporal/backfill.js +211 -0
- package/src/temporal/delta.js +85 -0
- package/src/temporal/events.js +180 -0
- package/src/temporal/queries.js +358 -0
- package/src/temporal/snapshot.js +151 -0
- package/src/temporal/store.js +400 -0
- 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:**
|
|
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
|
-
- **
|
|
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,
|
|
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
|
|
41
|
-
- `src/store/sync
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
219
|
-
node test/correctness.js # run correctness 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
|
|
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 (
|
|
262
|
-
- [ ] `node test/correctness.js` passes (
|
|
265
|
+
- [ ] `npm test` passes (346/346)
|
|
266
|
+
- [ ] `node test/correctness.js` passes (27/27)
|
|
263
267
|
|
|
264
268
|
---
|
|
265
269
|
|