kirograph 0.12.2 → 0.13.1

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 (92) hide show
  1. package/README.md +197 -87
  2. package/dist/architecture/layers/index.js +9 -1
  3. package/dist/architecture/layers/index.js.map +2 -2
  4. package/dist/architecture/layers/ocaml.js +105 -0
  5. package/dist/architecture/layers/ocaml.js.map +7 -0
  6. package/dist/architecture/layers/scala.js +120 -0
  7. package/dist/architecture/layers/scala.js.map +7 -0
  8. package/dist/architecture/layers/solidity.js +105 -0
  9. package/dist/architecture/layers/solidity.js.map +7 -0
  10. package/dist/architecture/layers/vue.js +111 -0
  11. package/dist/architecture/layers/vue.js.map +7 -0
  12. package/dist/architecture/manifest/elm.js +91 -0
  13. package/dist/architecture/manifest/elm.js.map +7 -0
  14. package/dist/architecture/manifest/index.js +13 -2
  15. package/dist/architecture/manifest/index.js.map +2 -2
  16. package/dist/architecture/manifest/ocaml.js +166 -0
  17. package/dist/architecture/manifest/ocaml.js.map +7 -0
  18. package/dist/architecture/manifest/scala.js +117 -0
  19. package/dist/architecture/manifest/scala.js.map +7 -0
  20. package/dist/bin/commands/caveman.js +12 -0
  21. package/dist/bin/commands/caveman.js.map +2 -2
  22. package/dist/bin/commands/help.js +6 -4
  23. package/dist/bin/commands/help.js.map +2 -2
  24. package/dist/bin/commands/install.js +8 -2
  25. package/dist/bin/commands/install.js.map +2 -2
  26. package/dist/bin/commands/serve.js +2 -2
  27. package/dist/bin/commands/serve.js.map +2 -2
  28. package/dist/bin/commands/uninit.js +65 -41
  29. package/dist/bin/commands/uninit.js.map +2 -2
  30. package/dist/bin/installer/cli-agent.js +5 -25
  31. package/dist/bin/installer/cli-agent.js.map +2 -2
  32. package/dist/bin/installer/common.js +154 -0
  33. package/dist/bin/installer/common.js.map +7 -0
  34. package/dist/bin/installer/hooks.js +21 -1
  35. package/dist/bin/installer/hooks.js.map +2 -2
  36. package/dist/bin/installer/index.js +99 -86
  37. package/dist/bin/installer/index.js.map +2 -2
  38. package/dist/bin/installer/instructions.js +60 -0
  39. package/dist/bin/installer/instructions.js.map +7 -0
  40. package/dist/bin/installer/mcp.js +6 -36
  41. package/dist/bin/installer/mcp.js.map +2 -2
  42. package/dist/bin/installer/targets/claude.js +79 -0
  43. package/dist/bin/installer/targets/claude.js.map +7 -0
  44. package/dist/bin/installer/targets/codex.js +77 -0
  45. package/dist/bin/installer/targets/codex.js.map +7 -0
  46. package/dist/bin/installer/targets/index.js +57 -0
  47. package/dist/bin/installer/targets/index.js.map +7 -0
  48. package/dist/bin/installer/targets/kiro.js +61 -0
  49. package/dist/bin/installer/targets/kiro.js.map +7 -0
  50. package/dist/bin/kirograph.js +1 -1
  51. package/dist/extraction/extractor.js +65 -2
  52. package/dist/extraction/extractor.js.map +2 -2
  53. package/dist/extraction/grammars.js +22 -0
  54. package/dist/extraction/grammars.js.map +2 -2
  55. package/dist/extraction/languages.js +39 -1
  56. package/dist/extraction/languages.js.map +2 -2
  57. package/dist/extraction/wasm/tree-sitter-hcl.wasm +0 -0
  58. package/dist/extraction/wasm/tree-sitter-scss.wasm +0 -0
  59. package/dist/frameworks/amplify.js +175 -0
  60. package/dist/frameworks/amplify.js.map +7 -0
  61. package/dist/frameworks/angular.js +132 -0
  62. package/dist/frameworks/angular.js.map +7 -0
  63. package/dist/frameworks/ansible.js +151 -0
  64. package/dist/frameworks/ansible.js.map +7 -0
  65. package/dist/frameworks/cloudformation.js +148 -0
  66. package/dist/frameworks/cloudformation.js.map +7 -0
  67. package/dist/frameworks/docker.js +149 -0
  68. package/dist/frameworks/docker.js.map +7 -0
  69. package/dist/frameworks/iac.js +401 -0
  70. package/dist/frameworks/iac.js.map +7 -0
  71. package/dist/frameworks/index.js +81 -3
  72. package/dist/frameworks/index.js.map +3 -3
  73. package/dist/frameworks/kubernetes.js +176 -0
  74. package/dist/frameworks/kubernetes.js.map +7 -0
  75. package/dist/frameworks/pulumi.js +93 -0
  76. package/dist/frameworks/pulumi.js.map +7 -0
  77. package/dist/frameworks/scala.js +124 -0
  78. package/dist/frameworks/scala.js.map +7 -0
  79. package/dist/frameworks/solidity.js +93 -0
  80. package/dist/frameworks/solidity.js.map +7 -0
  81. package/dist/frameworks/terraform.js +278 -0
  82. package/dist/frameworks/terraform.js.map +7 -0
  83. package/dist/frameworks/vue.js +163 -0
  84. package/dist/frameworks/vue.js.map +7 -0
  85. package/dist/graph/queries.js +1 -1
  86. package/dist/graph/queries.js.map +1 -1
  87. package/dist/mcp/tool-names.js +48 -0
  88. package/dist/mcp/tool-names.js.map +7 -0
  89. package/dist/mcp/tools.js +3 -0
  90. package/dist/mcp/tools.js.map +2 -2
  91. package/dist/types.js.map +2 -2
  92. package/package.json +2 -2
package/README.md CHANGED
@@ -8,11 +8,13 @@ Semantic code knowledge graph for [Kiro](https://kiro.dev): fewer tool calls, in
8
8
 
9
9
  Inspired by [CodeGraph](https://github.com/colbymchenry/codegraph) by [colbymchenry](https://github.com/colbymchenry) for Claude Code, rebuilt natively for Kiro's MCP and hooks system.
10
10
 
11
+ > **Full support is for Kiro only.** Experimental integrations for other MCP-capable tools (Claude Code, Codex) are available but not fully tested. See [Other Tools (Experimental)](#other-tools-experimental) for details.
12
+
11
13
  ## Why KiroGraph?
12
14
 
13
15
  When you ask Kiro to work on a complex task, it explores your codebase using file reads, grep, and glob searches. Every one of those is a tool call, and tool calls consume context and slow things down.
14
16
 
15
- KiroGraph gives Kiro a semantic knowledge graph that's pre-indexed and always up to date. Instead of scanning files to understand your code, Kiro queries the graph instantly: symbol relationships, call graphs, type hierarchies, impact radius all in a single MCP tool call.
17
+ KiroGraph gives Kiro a semantic knowledge graph that's pre-indexed and always up to date. Instead of scanning files to understand your code, Kiro queries the graph instantly: symbol relationships, call graphs, type hierarchies, impact radius, all in a single MCP tool call.
16
18
 
17
19
  The result is fewer tool calls, less context used, and faster responses on complex tasks.
18
20
 
@@ -20,12 +22,12 @@ The result is fewer tool calls, less context used, and faster responses on compl
20
22
 
21
23
  KiroGraph uses [tree-sitter](https://tree-sitter.github.io/tree-sitter/) to parse your source files into an AST and extract:
22
24
 
23
- - **Nodes** functions, methods, classes, interfaces, types, enums, variables, constants, routes, components, and more (24 node kinds total)
24
- - **Edges** calls, imports, exports, extends, implements, contains, references, instantiates, overrides, decorates, type_of, returns
25
+ - **Nodes**: functions, methods, classes, interfaces, types, enums, variables, constants, routes, components, and more (24 node kinds total)
26
+ - **Edges**: calls, imports, exports, extends, implements, contains, references, instantiates, overrides, decorates, type_of, returns
25
27
 
26
28
  Everything is stored in a local SQLite database (`.kirograph/kirograph.db`). **Nothing leaves your machine.** No API keys. No external services.
27
29
 
28
- The index is kept fresh automatically via Kiro hooks no background watcher process needed.
30
+ The index is kept fresh automatically via Kiro hooks when using the Kiro integration; no background watcher process needed.
29
31
 
30
32
  ## How Indexing Works
31
33
 
@@ -53,7 +55,7 @@ These embeddings power natural-language search in `kirograph_context` and act as
53
55
  | `qdrant` | `.kirograph/qdrant/` | ANN (HNSW), sub-linear | `qdrant-local` (embedded binary) |
54
56
  | `typesense` | `.kirograph/typesense/` | ANN (HNSW), sub-linear | `typesense` (auto-downloaded binary) |
55
57
 
56
- Each engine owns its embedding store exclusively nothing is written to the SQLite `vectors` table when a non-cosine engine is active. If an engine's optional dependency is not installed, KiroGraph silently falls back to `cosine`.
58
+ Each engine owns its embedding store exclusively; nothing is written to the SQLite `vectors` table when a non-cosine engine is active. If an engine's optional dependency is not installed, KiroGraph silently falls back to `cosine`.
57
59
 
58
60
  Enable and configure via `kirograph install` (interactive arrow-key menu) or directly in `.kirograph/config.json`:
59
61
 
@@ -66,7 +68,7 @@ Enable and configure via `kirograph install` (interactive arrow-key menu) or dir
66
68
 
67
69
  ### Architecture analysis (opt-in)
68
70
 
69
- When `enableArchitecture: true` is set, KiroGraph detects the high-level structure of your project packages and architectural layers and computes coupling metrics between them. Results are stored in `arch_*` tables inside `kirograph.db` and exposed via dedicated MCP tools and CLI commands.
71
+ When `enableArchitecture: true` is set, KiroGraph detects the high-level structure of your project (packages and architectural layers) and computes coupling metrics between them. Results are stored in `arch_*` tables inside `kirograph.db` and exposed via dedicated MCP tools and CLI commands.
70
72
 
71
73
  Enable via `kirograph install` or directly in `.kirograph/config.json`:
72
74
 
@@ -109,15 +111,20 @@ kirograph --version
109
111
  ### Remove from a project
110
112
 
111
113
  ```bash
112
- kirograph uninit [path] # Remove .kirograph/, hooks, and steering file from the project
113
- kirograph uninit --force # Skip confirmation prompt
114
+ kirograph uninit [path] # Prompts to remove Kiro integration files and .kirograph/ data separately
115
+ kirograph uninit --force # Remove Kiro integration files + .kirograph/ data without confirmation
116
+ kirograph uninit --target all --force # Remove all integration files (Kiro + Claude + Codex) + .kirograph/ data
114
117
  ```
115
118
 
116
- This removes:
117
- - `.kirograph/` — index database, snapshots, and export directory
118
- - `.kiro/hooks/kirograph-*.json` all KiroGraph hooks
119
- - `.kiro/steering/kirograph.md` — the steering file
120
- - `.kiro/agents/kirograph.json` — the CLI agent config
119
+ `kirograph uninstall` is an alias for `kirograph uninit`.
120
+
121
+ Without `--force`, KiroGraph asks separately whether to remove the selected tool integration files and whether to remove the shared `.kirograph/` data. With `--force`, both are removed unconditionally.
122
+
123
+ This can remove:
124
+ - `.kirograph/`: index database, snapshots, and export directory
125
+ - Kiro target: `.kiro/hooks/kirograph-*.json`, `.kiro/steering/kirograph.md`, `.kiro/agents/kirograph.json`
126
+ - Claude target (experimental): `kirograph` from `.mcp.json`, plus the KiroGraph import from `CLAUDE.md`
127
+ - Codex target (experimental): the generated KiroGraph block from `AGENTS.md`
121
128
 
122
129
  ### Remove the CLI globally
123
130
 
@@ -138,10 +145,10 @@ npm uninstall -g .
138
145
 
139
146
  ```bash
140
147
  # In your project:
141
- kirograph install # wire up MCP + hooks + steering + CLI agent in .kiro/
148
+ kirograph install # wire up Kiro MCP + hooks + steering + CLI agent
142
149
  ```
143
150
 
144
- Restart Kiro IDE, or switch to the `kirograph` agent in Kiro CLI. It will now use KiroGraph tools automatically.
151
+ All Kiro integration files are written to `.kiro/`. Restart Kiro IDE, or switch to the `kirograph` agent in Kiro CLI. It will now use KiroGraph tools automatically.
145
152
 
146
153
  Or using the short alias:
147
154
 
@@ -172,11 +179,11 @@ kg install
172
179
  └───────────────────────────────────────────┘
173
180
  ```
174
181
 
175
- Kiro hooks mark the index dirty on every file save or create, then flush on agent idle batching changes efficiently with no overhead during active editing.
182
+ Kiro hooks mark the index dirty on every file save or create, then flush on agent idle, batching changes efficiently with no overhead during active editing.
176
183
 
177
184
  ## Using with Kiro
178
185
 
179
- `kirograph install` sets up four things in your Kiro workspace all coexist, so you can switch between IDE and CLI freely:
186
+ `kirograph install` or `kirograph install --target kiro` sets up four things in your Kiro workspace (all coexist, so you can switch between IDE and CLI freely):
180
187
 
181
188
  ### MCP Server (`.kiro/settings/mcp.json`)
182
189
 
@@ -193,7 +200,8 @@ Registers the KiroGraph MCP server. Used by both the IDE and the CLI agent:
193
200
  "kirograph_callees", "kirograph_impact", "kirograph_node",
194
201
  "kirograph_status", "kirograph_files", "kirograph_dead_code",
195
202
  "kirograph_circular_deps", "kirograph_path", "kirograph_type_hierarchy",
196
- "kirograph_architecture", "kirograph_coupling", "kirograph_package"
203
+ "kirograph_architecture", "kirograph_coupling", "kirograph_package",
204
+ "kirograph_hotspots", "kirograph_surprising", "kirograph_diff"
197
205
  ]
198
206
  }
199
207
  }
@@ -221,9 +229,9 @@ A custom agent for Kiro CLI that wires up the MCP server, inlines the steering i
221
229
 
222
230
  | Hook | Event | Action |
223
231
  |------|-------|--------|
224
- | `agentSpawn` | Agent starts | `kirograph sync-if-dirty --quiet` catches edits made between sessions |
225
- | `userPromptSubmit` | Each prompt | `kirograph sync-if-dirty --quiet` keeps graph fresh within a session |
226
- | `stop` | End of each turn | `kirograph sync-if-dirty --quiet` deferred flush, mirrors IDE `agentStop` |
232
+ | `agentSpawn` | Agent starts | `kirograph sync-if-dirty --quiet` (catches edits made between sessions) |
233
+ | `userPromptSubmit` | Each prompt | `kirograph sync-if-dirty --quiet` (keeps graph fresh within a session) |
234
+ | `stop` | End of each turn | `kirograph sync-if-dirty --quiet` (deferred flush, mirrors IDE `agentStop`) |
227
235
 
228
236
  Use it with:
229
237
 
@@ -243,13 +251,51 @@ Or swap to it inside an active session:
243
251
 
244
252
  Teaches the Kiro IDE to prefer graph tools over file scanning when `.kirograph/` exists. The CLI agent has the same instructions inlined directly in its `prompt` field.
245
253
 
254
+ ## Other Tools (Experimental)
255
+
256
+ > **⚠️ Not fully tested, community-contributed.** The integrations below are outside the original scope of KiroGraph. They are provided as-is. Issues and PRs related to these targets are welcome, but there is no guarantee they will be supported or merged without active help from the contributor.
257
+
258
+ KiroGraph can also be installed for other MCP-capable coding agents. All targets share the same `.kirograph/` data; if the project is already initialized, installing another target only writes that tool's integration files and reuses the existing graph.
259
+
260
+ ```bash
261
+ kirograph install --target claude # wire up Claude Code MCP + project memory
262
+ kirograph install --target codex # write Codex instructions and print MCP config
263
+ ```
264
+
265
+ ### Using with Claude Code
266
+
267
+ ```bash
268
+ kirograph install --target claude
269
+ ```
270
+
271
+ This writes:
272
+
273
+ - `.mcp.json`: project-scoped MCP server config for Claude Code
274
+ - `.kirograph/claude.md`: KiroGraph tool guidance
275
+ - `CLAUDE.md`: an import of `.kirograph/claude.md`
276
+
277
+ Claude Code prompts for project MCP approval the first time it sees `.mcp.json`.
278
+
279
+ ### Using with Codex
280
+
281
+ ```bash
282
+ kirograph install --target codex
283
+ ```
284
+
285
+ This writes:
286
+
287
+ - `.kirograph/codex.md`: KiroGraph tool guidance
288
+ - `AGENTS.md`: a generated KiroGraph instruction block
289
+
290
+ Codex MCP configuration is user-scoped, so the installer prints the exact `codex mcp add ...` command and equivalent `~/.codex/config.toml` snippet instead of editing files outside the project.
291
+
246
292
  ## MCP Tools
247
293
 
248
- All tools are auto-approved and available to Kiro once installed.
294
+ All tools are auto-approved in Kiro once installed. Other MCP clients can use the same tools after configuring their respective targets.
249
295
 
250
296
  ### `kirograph_context`
251
297
 
252
- Comprehensive context for a task or feature often sufficient alone without additional tool calls.
298
+ Comprehensive context for a task or feature, often sufficient alone without additional tool calls.
253
299
 
254
300
  | Parameter | Type | Default | Description |
255
301
  |-----------|------|---------|-------------|
@@ -283,7 +329,7 @@ Find all functions/methods that call a specific symbol.
283
329
  | `limit` | number | 20 | Max results (1–100) |
284
330
  | `projectPath` | string | cwd | Project root path |
285
331
 
286
- **How it works:** BFS traversal of incoming `call` edges in the graph database. No vector engine involved.
332
+ **How it works:** BFS traversal of incoming `call` edges in the graph database; no vector engine involved.
287
333
 
288
334
  ### `kirograph_callees`
289
335
 
@@ -295,7 +341,7 @@ Find all functions/methods that a specific symbol calls.
295
341
  | `limit` | number | 20 | Max results (1–100) |
296
342
  | `projectPath` | string | cwd | Project root path |
297
343
 
298
- **How it works:** BFS traversal of outgoing `call` edges in the graph database. No vector engine involved.
344
+ **How it works:** BFS traversal of outgoing `call` edges in the graph database; no vector engine involved.
299
345
 
300
346
  ### `kirograph_impact`
301
347
 
@@ -307,7 +353,7 @@ Analyze what code would be affected by changing a symbol. Use before making chan
307
353
  | `depth` | number | 2 | Traversal depth |
308
354
  | `projectPath` | string | cwd | Project root path |
309
355
 
310
- **How it works:** BFS traversal of all incoming edges (`call`, `import`, `reference`, etc.) up to the specified depth. No vector engine involved.
356
+ **How it works:** BFS traversal of all incoming edges (`call`, `import`, `reference`, etc.) up to the specified depth; no vector engine involved.
311
357
 
312
358
  ### `kirograph_node`
313
359
 
@@ -321,7 +367,7 @@ Get details about a specific symbol, optionally including source code.
321
367
 
322
368
  Returns: kind, name, qualified name, file location, signature, docstring, and optionally source code.
323
369
 
324
- **How it works:** Single row lookup by symbol name in the graph database. If `includeCode` is true, reads the relevant lines directly from the source file on disk. No vector engine involved.
370
+ **How it works:** Single row lookup by symbol name in the graph database. If `includeCode` is true, reads the relevant lines directly from the source file on disk; no vector engine involved.
325
371
 
326
372
  ### `kirograph_type_hierarchy`
327
373
 
@@ -333,7 +379,7 @@ Traverse the type hierarchy of a class or interface.
333
379
  | `direction` | string | `both` | `up` (base types), `down` (derived types), `both` |
334
380
  | `projectPath` | string | cwd | Project root path |
335
381
 
336
- **How it works:** Recursive traversal of `extends` and `implements` edges in the graph database. No vector engine involved.
382
+ **How it works:** Recursive traversal of `extends` and `implements` edges in the graph database; no vector engine involved.
337
383
 
338
384
  ### `kirograph_path`
339
385
 
@@ -345,7 +391,7 @@ Find the shortest path between two symbols in the dependency graph.
345
391
  | `to` | string | required | Target symbol name |
346
392
  | `projectPath` | string | cwd | Project root path |
347
393
 
348
- **How it works:** BFS shortest-path search across all edge types in the graph database. No vector engine involved.
394
+ **How it works:** BFS shortest-path search across all edge types in the graph database; no vector engine involved.
349
395
 
350
396
  ### `kirograph_dead_code`
351
397
 
@@ -356,7 +402,7 @@ Find symbols with no incoming references (potential dead code). Only unexported
356
402
  | `limit` | number | 50 | Max results (1–100) |
357
403
  | `projectPath` | string | cwd | Project root path |
358
404
 
359
- **How it works:** Queries the graph database for nodes with zero incoming edges, filtered to non-exported symbols. No vector engine involved.
405
+ **How it works:** Queries the graph database for nodes with zero incoming edges, filtered to non-exported symbols; no vector engine involved.
360
406
 
361
407
  ### `kirograph_circular_deps`
362
408
 
@@ -366,7 +412,7 @@ Find circular import dependencies in the codebase.
366
412
  |-----------|------|---------|-------------|
367
413
  | `projectPath` | string | cwd | Project root path |
368
414
 
369
- **How it works:** Tarjan's strongly connected components algorithm over `import` edges in the graph database. No vector engine involved.
415
+ **How it works:** Tarjan's strongly connected components algorithm over `import` edges in the graph database; no vector engine involved.
370
416
 
371
417
  ### `kirograph_files`
372
418
 
@@ -381,7 +427,7 @@ List the indexed file structure with filtering and format options.
381
427
  | `includeMetadata` | boolean | true | Include language and symbol counts |
382
428
  | `projectPath` | string | cwd | Project root path |
383
429
 
384
- **How it works:** Reads file records from the graph database and builds a tree structure in memory. Filtering is applied before tree construction. No vector engine involved.
430
+ **How it works:** Reads file records from the graph database and builds a tree structure in memory. Filtering is applied before tree construction; no vector engine involved.
385
431
 
386
432
  ### `kirograph_status`
387
433
 
@@ -414,7 +460,7 @@ Get coupling metrics for all packages or a specific one.
414
460
  | `packageId` | string | — | Package ID (e.g. `pkg:npm:src/auth`). Omit for all packages. |
415
461
  | `projectPath` | string | cwd | Project root path |
416
462
 
417
- Returns per-package: **Ca** (afferent how many other packages depend on this one), **Ce** (efferent how many packages this one depends on), and **instability** (`Ce / (Ca + Ce)`, 0 = maximally stable, 1 = maximally unstable). When `packageId` is given, also returns the full list of incoming and outgoing package dependencies.
463
+ Returns per-package: **Ca** (afferent: how many other packages depend on this one), **Ce** (efferent: how many packages this one depends on), and **instability** (`Ce / (Ca + Ce)`, 0 = maximally stable, 1 = maximally unstable). When `packageId` is given, also returns the full list of incoming and outgoing package dependencies.
418
464
 
419
465
  ### `kirograph_package` *(requires `enableArchitecture: true`)*
420
466
 
@@ -447,7 +493,7 @@ Find non-obvious cross-file connections: direct edges between symbols in structu
447
493
  | `limit` | number | 20 | Max results (1–100) |
448
494
  | `projectPath` | string | cwd | Project root path |
449
495
 
450
- **How it works:** Queries all cross-file edges (excluding `contains` and `import`). Scores each by path distance between source and target files × edge-kind weight (`calls=1.0`, `references=0.8`, `type_of=0.7`, etc.). Returns the highest-scoring unique pairs the ones that represent the most unexpected coupling in the codebase.
496
+ **How it works:** Queries all cross-file edges (excluding `contains` and `import`). Scores each by path distance between source and target files × edge-kind weight (`calls=1.0`, `references=0.8`, `type_of=0.7`, etc.). Returns the highest-scoring unique pairs. the ones that represent the most unexpected coupling in the codebase.
451
497
 
452
498
  ### `kirograph_diff`
453
499
 
@@ -468,8 +514,8 @@ Use `kirograph snapshot save` (CLI) to save a snapshot before a refactor or PR.
468
514
  kirograph install # Wire up MCP + hooks + steering in .kiro/
469
515
  kirograph init [path] # Initialize .kirograph/ in a project
470
516
  kirograph init --index # Initialize and index immediately
471
- kirograph uninit [path] # Remove .kirograph/, hooks, and steering file
472
- kirograph uninit --force # Skip confirmation prompt
517
+ kirograph uninit [path] # Prompts to remove integration files and .kirograph/ data
518
+ kirograph uninit --force # Remove everything without confirmation
473
519
  ```
474
520
 
475
521
  ### Indexing
@@ -526,7 +572,7 @@ Extracts symbol tokens from the task description (CamelCase, snake_case, SCREAMI
526
572
 
527
573
  ### Affected Tests
528
574
 
529
- Find test files that depend on changed source files useful in CI or pre-commit hooks.
575
+ Find test files that depend on changed source files, useful in CI or pre-commit hooks.
530
576
 
531
577
  ```bash
532
578
  kirograph affected src/utils.ts src/api.ts # Pass files as arguments
@@ -561,7 +607,7 @@ fi
561
607
 
562
608
  Caveman mode compresses the agent's communication style, cutting token usage on responses without affecting tool calls or code output. Inspired by [caveman](https://github.com/JuliusBrussee/caveman) 🪨 by [JuliusBrussee](https://github.com/JuliusBrussee).
563
609
 
564
- **Why it's useful:** KiroGraph's graph tools return compact, structured data. The bottleneck in long coding sessions isn't the tool calls it's the verbose prose the agent wraps around them. Caveman mode strips that overhead so you get the signal without the filler. The rules are injected at session start via the steering file (IDE) and the inline agent prompt (kiro-cli), so they're always in context with no extra tool calls.
610
+ **Why it's useful:** KiroGraph's graph tools return compact, structured data. The bottleneck in long coding sessions isn't the tool calls; it is the verbose prose the agent wraps around them. Caveman mode strips that overhead so you get the signal without the filler. The rules are injected at session start via the steering file (IDE) and the inline agent prompt (kiro-cli), so they're always in context with no extra tool calls.
565
611
 
566
612
  Four levels:
567
613
 
@@ -582,7 +628,7 @@ kirograph caveman # show current mode
582
628
 
583
629
  Set during `kirograph install` (interactive arrow-key menu) or any time after. Takes effect on the next agent session.
584
630
 
585
- Caveman mode never touches code blocks, file paths, URLs, or technical terms only prose.
631
+ Caveman mode never touches code blocks, file paths, URLs, or technical terms, only prose.
586
632
 
587
633
  **Auto-clarity exceptions:** the agent temporarily reverts to normal prose for security warnings, confirmations of irreversible actions (delete, overwrite, force-push), and multi-step sequences where fragment order could cause misunderstanding. Compressed style resumes immediately after.
588
634
 
@@ -630,9 +676,9 @@ kirograph coupling --format json # JSON output
630
676
  ```
631
677
 
632
678
  The table shows each package with:
633
- - **Ca** afferent coupling: how many packages depend on this one (higher = more stable)
634
- - **Ce** efferent coupling: how many packages this one depends on (higher = more unstable)
635
- - **Instability** `Ce / (Ca + Ce)`, rendered as a color-coded bar: green (stable) → yellow (neutral) → red (unstable)
679
+ - **Ca**: afferent coupling: how many packages depend on this one (higher = more stable)
680
+ - **Ce**: efferent coupling: how many packages this one depends on (higher = more unstable)
681
+ - **Instability** (`Ce / (Ca + Ce)`), rendered as a color-coded bar: green (stable) → yellow (neutral) → red (unstable)
636
682
 
637
683
  The `--package` detail view shows who depends on this package and what it depends on, with import counts for each relationship.
638
684
 
@@ -662,7 +708,7 @@ Score = path distance between files × edge-kind weight (`calls=1.0`, `reference
662
708
 
663
709
  ### Snapshots & Diff
664
710
 
665
- Save lightweight graph snapshots and compare them to track structural changes over time useful before/after refactors, or in CI to audit what a PR added or removed.
711
+ Save lightweight graph snapshots and compare them to track structural changes over time, useful before/after refactors, or in CI to audit what a PR added or removed.
666
712
 
667
713
  ```bash
668
714
  kirograph snapshot save [label] # Save current graph state with optional label
@@ -674,13 +720,13 @@ kirograph snapshot diff --format full # Show full added/removed symbol lists
674
720
  kirograph snapshot diff --format json # JSON output
675
721
  ```
676
722
 
677
- Snapshots are stored in `.kirograph/snapshots/` as JSON and include all node IDs and edge tuples. The diff is computed as a set operation O(n) regardless of codebase size.
723
+ Snapshots are stored in `.kirograph/snapshots/` as JSON and include all node IDs and edge tuples. The diff is computed as a set operation, O(n) regardless of codebase size.
678
724
 
679
725
  The `kirograph_diff` MCP tool exposes the same capability to the agent: compare the current graph against the latest (or a named) snapshot without leaving the conversation.
680
726
 
681
727
  ### Dead Code
682
728
 
683
- Find unexported symbols with zero incoming references candidates for removal.
729
+ Find unexported symbols with zero incoming references, candidates for removal.
684
730
 
685
731
  ```bash
686
732
  kirograph dead-code [path] # List dead code grouped by file
@@ -704,7 +750,7 @@ The command resolves symbol names using the same fuzzy search as `kirograph quer
704
750
 
705
751
  ### Graph Export
706
752
 
707
- Export the full graph as an interactive dashboard three files served from a local directory, no server required, works offline.
753
+ Export the full graph as an interactive dashboard. three files served from a local directory, no server required, works offline.
708
754
 
709
755
  ```bash
710
756
  kirograph export build [path] # Generate .kirograph/export/{index.html,app.css,app.js}
@@ -721,10 +767,10 @@ Output lands in `.kirograph/export/` by default. Open `index.html` in any browse
721
767
 
722
768
  - **Color-coded nodes** by kind (class, function, method, component…) with size proportional to degree
723
769
  - **Directed edges** with kind labels; dashed lines for imports and references
724
- - **Click a node** to zoom in and inspect it kind, file, line, degree, signature, and a copy button for the file reference
770
+ - **Click a node** to zoom in and inspect it. kind, file, line, degree, signature, and a copy button for the file reference
725
771
  - **Click two nodes** to instantly find and highlight the shortest path between them, with detail cards for both endpoints
726
- - **History** ‹ › navigation through previously inspected nodes
727
- - **Keyboard shortcuts** `f` to fit the graph, `Esc` to exit focus or path mode
772
+ - **History**: ‹ › navigation through previously inspected nodes
773
+ - **Keyboard shortcuts**: `f` to fit the graph, `Esc` to exit focus or path mode
728
774
 
729
775
  #### Controls
730
776
 
@@ -746,9 +792,9 @@ Type to search by name, qualified name, or file path. Matching nodes are highlig
746
792
 
747
793
  #### Legend & filters
748
794
 
749
- - **Node kind filter** Legend tab; click any kind to hide or show all nodes of that type
750
- - **Edge kind filter** Legend tab; click any edge kind to hide or show edges of that type
751
- - **Degree slider** Filters tab; hide nodes below N connections to surface the most-connected symbols
795
+ - **Node kind filter**: Legend tab; click any kind to hide or show all nodes of that type
796
+ - **Edge kind filter**: Legend tab; click any edge kind to hide or show edges of that type
797
+ - **Degree slider**: Filters tab; hide nodes below N connections to surface the most-connected symbols
752
798
 
753
799
  #### Minimap
754
800
 
@@ -766,7 +812,7 @@ The 📊 Charts button opens a panel with three charts:
766
812
  |-------|--------------|
767
813
  | **Bar** | The 15 most-connected symbols |
768
814
  | **Donut** | How node kinds are distributed across the codebase |
769
- | **Line** | How many symbols have each connection count reveals the overall connectivity shape of the graph |
815
+ | **Line** | How many symbols have each connection count. reveals the overall connectivity shape of the graph |
770
816
 
771
817
 
772
818
  ### Dashboard
@@ -783,7 +829,7 @@ kirograph dashboard stop [path] # Stop the running engine server
783
829
  Reads `semanticEngine` from `.kirograph/config.json` and dispatches accordingly:
784
830
 
785
831
  - **qdrant**: Downloads the [Qdrant Web UI](https://github.com/qdrant/qdrant-web-ui) on first use (cached at `.kirograph/qdrant/dashboard/`), spawns the Qdrant server with `QDRANT__SERVICE__STATIC_CONTENT_DIR` set so the dashboard is served natively, and opens `http://127.0.0.1:<port>/dashboard` in your browser. If the server is already running with the dashboard, reconnects instead of restarting.
786
- - **typesense**: Downloads the [Typesense Dashboard](https://github.com/bfritscher/typesense-dashboard) static UI on first use (cached at `.kirograph/typesense/dashboard/`), starts the Typesense server if not already running, serves the dashboard locally via a Node HTTP server, and opens it in your browser. Press Ctrl+C to stop the dashboard server the Typesense server keeps running as a background daemon.
832
+ - **typesense**: Downloads the [Typesense Dashboard](https://github.com/bfritscher/typesense-dashboard) static UI on first use (cached at `.kirograph/typesense/dashboard/`), starts the Typesense server if not already running, serves the dashboard locally via a Node HTTP server, and opens it in your browser. Press Ctrl+C to stop the dashboard server. the Typesense server keeps running as a background daemon.
787
833
 
788
834
  Both servers run as persistent daemons. The state file (`.kirograph/qdrant-server.json` or `.kirograph/typesense-server.json`) tracks the PID and port for reconnection across `kg` commands.
789
835
 
@@ -833,7 +879,7 @@ By default, KiroGraph uses exact name lookup and full-text search. Enable semant
833
879
  }
834
880
  ```
835
881
 
836
- This generates vector embeddings for all functions, methods, classes, interfaces, type aliases, components, and modules using a local embedding model (downloaded automatically to `~/.kirograph/models/` on first use). Embeddings are kept in sync automatically via Kiro hooks on every file save, create, or delete.
882
+ This generates vector embeddings for all functions, methods, classes, interfaces, type aliases, components, and modules using a local embedding model (downloaded automatically to `~/.kirograph/models/` on first use). Embeddings are kept in sync automatically via Kiro hooks. on every file save, create, or delete.
837
883
 
838
884
  Run `kirograph install` to be guided through model and engine selection interactively with arrow-key menus, or set the fields manually in `.kirograph/config.json`.
839
885
 
@@ -863,7 +909,7 @@ Configure manually:
863
909
 
864
910
  #### Storage architecture
865
911
 
866
- Each engine owns its embedding store exclusively there is no redundant write to the main graph database:
912
+ Each engine owns its embedding store exclusively. there is no redundant write to the main graph database:
867
913
 
868
914
  | Engine | Graph store | Vector store |
869
915
  |--------|-------------|--------------|
@@ -904,7 +950,7 @@ In-process cosine similarity over all stored embeddings. No extra dependencies.
904
950
 
905
951
  #### sqlite-vec
906
952
 
907
- Approximate nearest-neighbour (ANN) index stored in `.kirograph/vec.db`. Sub-linear search time ideal for large codebases with thousands of indexed symbols. The SQLite `vectors` table is not written to; `vec.db` is the sole embedding store.
953
+ Approximate nearest-neighbour (ANN) index stored in `.kirograph/vec.db`. Sub-linear search time. ideal for large codebases with thousands of indexed symbols. The SQLite `vectors` table is not written to; `vec.db` is the sole embedding store.
908
954
 
909
955
  ```json
910
956
  {
@@ -921,7 +967,7 @@ Requires two native dependencies (compiled C extensions). If not installed, fall
921
967
 
922
968
  #### orama
923
969
 
924
- Hybrid search powered by [Orama](https://github.com/oramasearch/orama) combines full-text relevance and vector similarity in a **single query**, producing higher-quality results than running the two searches separately. The index is persisted to `.kirograph/orama.json` and is the sole embedding store. Pure JS, no native compilation required.
970
+ Hybrid search powered by [Orama](https://github.com/oramasearch/orama). combines full-text relevance and vector similarity in a **single query**, producing higher-quality results than running the two searches separately. The index is persisted to `.kirograph/orama.json` and is the sole embedding store. Pure JS, no native compilation required.
925
971
 
926
972
  ```json
927
973
  {
@@ -938,7 +984,7 @@ If not installed, falls back to `cosine`.
938
984
 
939
985
  #### pglite
940
986
 
941
- Hybrid search powered by [PGlite](https://github.com/electric-sql/pglite) a WASM-compiled PostgreSQL with the [pgvector](https://github.com/pgvector/pgvector) extension. Combines **exact** nearest-neighbour vector search with full-text ranking (`ts_rank`) in a single SQL query. The database is persisted to `.kirograph/pglite/` using PostgreSQL's WAL-based storage and is the sole embedding store. Pure WASM no native compilation required.
987
+ Hybrid search powered by [PGlite](https://github.com/electric-sql/pglite), a WASM-compiled PostgreSQL with the [pgvector](https://github.com/pgvector/pgvector) extension. Combines **exact** nearest-neighbour vector search with full-text ranking (`ts_rank`) in a single SQL query. The database is persisted to `.kirograph/pglite/` using PostgreSQL's WAL-based storage and is the sole embedding store. Pure WASM, no native compilation required.
942
988
 
943
989
  ```json
944
990
  {
@@ -952,8 +998,8 @@ npm install @electric-sql/pglite
952
998
  ```
953
999
 
954
1000
  Key advantages:
955
- - **Exact** vector results (not approximate) deterministic and reproducible
956
- - Native SQL `ON CONFLICT` upsert no remove+insert workaround
1001
+ - **Exact** vector results (not approximate). deterministic and reproducible
1002
+ - Native SQL `ON CONFLICT` upsert, no remove+insert workaround
957
1003
  - HNSW index (`vector_cosine_ops`) keeps search fast as the index grows
958
1004
  - Single dependency, zero native binaries
959
1005
 
@@ -961,7 +1007,7 @@ If not installed, falls back to `cosine`.
961
1007
 
962
1008
  #### LanceDB
963
1009
 
964
- ANN vector search powered by [LanceDB](https://github.com/lancedb/lancedb) stores embeddings in Apache Lance columnar format at `.kirograph/lancedb/`. Sub-linear search time using cosine distance. Pure JS, no native compilation required.
1010
+ ANN vector search powered by [LanceDB](https://github.com/lancedb/lancedb). stores embeddings in Apache Lance columnar format at `.kirograph/lancedb/`. Sub-linear search time using cosine distance. Pure JS, no native compilation required.
965
1011
 
966
1012
  ```json
967
1013
  {
@@ -975,9 +1021,9 @@ npm install @lancedb/lancedb
975
1021
  ```
976
1022
 
977
1023
  Key characteristics:
978
- - **Columnar storage** (Apache Lance format) efficient for batch reads and writes
979
- - **ANN cosine search** fast, sub-linear query time
980
- - Pure JS no native binaries or WASM required
1024
+ - **Columnar storage** (Apache Lance format). efficient for batch reads and writes
1025
+ - **ANN cosine search**: fast, sub-linear query time
1026
+ - Pure JS, no native binaries or WASM required
981
1027
 
982
1028
  If not installed, falls back to `cosine`.
983
1029
 
@@ -997,11 +1043,11 @@ npm install qdrant-local
997
1043
  ```
998
1044
 
999
1045
  Key characteristics:
1000
- - **HNSW index** high-quality ANN search with Qdrant's native indexing
1001
- - **Embedded binary** no separate server setup; the process is spawned and managed automatically
1002
- - **Persistent daemon** the server stays running between `kg` commands; state tracked in `.kirograph/qdrant-server.json`
1003
- - **Built-in dashboard** run `kg dashboard start` to download the [Qdrant Web UI](https://github.com/qdrant/qdrant-web-ui) and open it (cached at `.kirograph/qdrant/dashboard/`, served via Qdrant's built-in static content feature)
1004
- - **Async startup** polls `/readyz` instead of blocking with a fixed sleep
1046
+ - **HNSW index**: high-quality ANN search with Qdrant's native indexing
1047
+ - **Embedded binary**: no separate server setup; the process is spawned and managed automatically
1048
+ - **Persistent daemon**: the server stays running between `kg` commands; state tracked in `.kirograph/qdrant-server.json`
1049
+ - **Built-in dashboard**: run `kg dashboard start` to download the [Qdrant Web UI](https://github.com/qdrant/qdrant-web-ui) and open it (cached at `.kirograph/qdrant/dashboard/`, served via Qdrant's built-in static content feature)
1050
+ - **Async startup**: polls `/readyz` instead of blocking with a fixed sleep
1005
1051
  - **Cosine distance** metric
1006
1052
  - Data persists across restarts in `.kirograph/qdrant/`
1007
1053
 
@@ -1030,11 +1076,11 @@ npm install typesense
1030
1076
  ```
1031
1077
 
1032
1078
  Key characteristics:
1033
- - **HNSW index** high-quality ANN search with Typesense's native indexing
1034
- - **Auto-downloaded binary** no manual server setup; the binary is fetched and cached at `~/.kirograph/bin/` on first run
1035
- - **Persistent daemon** the server stays running between `kg` commands; state tracked in `.kirograph/typesense-server.json`
1036
- - **Local dashboard** run `kg dashboard start` to open the built-in Typesense Dashboard UI (served locally, cached at `.kirograph/typesense/dashboard/`)
1037
- - **Async startup** polls `/health` instead of blocking with a fixed sleep
1079
+ - **HNSW index**: high-quality ANN search with Typesense's native indexing
1080
+ - **Auto-downloaded binary**: no manual server setup; the binary is fetched and cached at `~/.kirograph/bin/` on first run
1081
+ - **Persistent daemon**: the server stays running between `kg` commands; state tracked in `.kirograph/typesense-server.json`
1082
+ - **Local dashboard**: run `kg dashboard start` to open the built-in Typesense Dashboard UI (served locally, cached at `.kirograph/typesense/dashboard/`)
1083
+ - **Async startup**: polls `/health` instead of blocking with a fixed sleep
1038
1084
  - **Cosine distance** metric
1039
1085
  - Data persists across restarts in `.kirograph/typesense/`
1040
1086
 
@@ -1053,12 +1099,12 @@ When `enableArchitecture: true` is set, KiroGraph analyses the high-level struct
1053
1099
 
1054
1100
  #### What it detects
1055
1101
 
1056
- **Packages** logical groupings of files. Detected two ways:
1102
+ **Packages**: logical groupings of files. Detected two ways:
1057
1103
 
1058
- 1. **Manifest-based** parsed from `package.json`, `go.mod`, `Cargo.toml`, `pyproject.toml`/`setup.py`/`setup.cfg`, `pom.xml`, `build.gradle`/`build.gradle.kts`, and `.csproj` files. Produces IDs like `pkg:npm:src/auth`.
1059
- 2. **Directory fallback** for files not covered by any manifest, groups them by their nearest ancestor directory. Produces IDs like `pkg:dir:src/utils`.
1104
+ 1. **Manifest-based**: parsed from `package.json`, `go.mod`, `Cargo.toml`, `pyproject.toml`/`setup.py`/`setup.cfg`, `pom.xml`, `build.gradle`/`build.gradle.kts`, and `.csproj` files. Produces IDs like `pkg:npm:src/auth`.
1105
+ 2. **Directory fallback**: for files not covered by any manifest, groups them by their nearest ancestor directory. Produces IDs like `pkg:dir:src/utils`.
1060
1106
 
1061
- **Layers** architectural tiers detected from file paths using per-language glob patterns:
1107
+ **Layers**: architectural tiers detected from file paths using per-language glob patterns:
1062
1108
 
1063
1109
  | Layer | Examples |
1064
1110
  |-------|---------|
@@ -1070,12 +1116,12 @@ When `enableArchitecture: true` is set, KiroGraph analyses the high-level struct
1070
1116
 
1071
1117
  Layer detection is per-language (TypeScript/JS, Python, Go, Java, Ruby, Rust, C#) with framework-specific patterns where applicable (Django, Rails, Spring MVC, ASP.NET, etc.). Custom layer overrides are supported via `architectureLayers` in config.
1072
1118
 
1073
- **Package dependencies** rolled up from existing `imports` edges in the graph. No re-parsing required.
1119
+ **Package dependencies**: rolled up from existing `imports` edges in the graph. No re-parsing required.
1074
1120
 
1075
- **Coupling metrics** computed per package:
1076
- - **Ca** (afferent) how many other packages depend on this one
1077
- - **Ce** (efferent) how many packages this one depends on
1078
- - **Instability** `Ce / (Ca + Ce)`: 0 = maximally stable (everyone depends on it, it depends on nothing), 1 = maximally unstable (depends on everything, nobody depends on it)
1121
+ **Coupling metrics**: computed per package:
1122
+ - **Ca** (afferent). how many other packages depend on this one
1123
+ - **Ce** (efferent). how many packages this one depends on
1124
+ - **Instability** (`Ce / (Ca + Ce)`): 0 = maximally stable (everyone depends on it, it depends on nothing), 1 = maximally unstable (depends on everything, nobody depends on it)
1079
1125
 
1080
1126
  #### Custom layer definitions
1081
1127
 
@@ -1114,6 +1160,8 @@ Architecture analysis runs as a dedicated phase during `kirograph index`. Progre
1114
1160
 
1115
1161
  ## Supported Languages
1116
1162
 
1163
+ ### General-purpose
1164
+
1117
1165
  | Language | Extensions |
1118
1166
  |----------|-----------|
1119
1167
  | TypeScript | `.ts` |
@@ -1132,14 +1180,50 @@ Architecture analysis runs as a dedicated phase during `kirograph index`. Progre
1132
1180
  | Swift | `.swift` |
1133
1181
  | Kotlin | `.kt` |
1134
1182
  | Dart | `.dart` |
1183
+ | Scala | `.scala`, `.sc`, `.sbt` |
1184
+ | Lua | `.lua` |
1185
+ | Zig | `.zig`, `.zon` |
1186
+ | Bash | `.sh`, `.bash`, `.zsh` |
1187
+ | OCaml | `.ml`, `.mli` |
1188
+ | Elm | `.elm` |
1189
+ | Objective-C | `.m` |
1190
+
1191
+ ### Frontend & UI
1192
+
1193
+ | Language | Extensions |
1194
+ |----------|-----------|
1195
+ | React / React Native | `.tsx`, `.jsx` (via TypeScript/JSX grammars) |
1196
+ | Next.js | `.tsx`, `.jsx` (via TypeScript/JSX grammars) |
1197
+ | Angular | `.ts`, `.html` (via TypeScript/HTML grammars) |
1135
1198
  | Svelte | `.svelte` |
1136
- | Elixir | `.ex`, `.exs` |
1199
+ | Vue | `.vue` |
1200
+ | HTML | `.html`, `.htm` |
1201
+ | CSS | `.css` |
1202
+ | SCSS / Sass | `.scss`, `.sass` |
1203
+
1204
+ ### Domain-specific
1205
+
1206
+ | Language | Domain | Extensions |
1207
+ |----------|--------|-----------|
1208
+ | Solidity | Blockchain / Web3 | `.sol` |
1209
+ | Elixir | Distributed systems / Real-time | `.ex`, `.exs` |
1210
+
1211
+ ### Configuration & Infrastructure
1212
+
1213
+ | Language | Extensions |
1214
+ |----------|-----------|
1215
+ | YAML | `.yaml`, `.yml` |
1216
+ | HCL (Terraform) | `.tf`, `.tfvars` |
1137
1217
 
1138
1218
  ## Framework Detection
1139
1219
 
1140
1220
  KiroGraph automatically detects frameworks and enriches the graph with framework-specific semantics (routes, components, lifecycle methods):
1141
1221
 
1142
- **JavaScript / TypeScript:** React, Next.js, React Native, Svelte, SvelteKit, Express, Fastify, Koa
1222
+ ### Web Frameworks
1223
+
1224
+ **JavaScript / TypeScript:** React, Next.js, React Native, Angular, Svelte, SvelteKit, Express, Fastify, Koa
1225
+
1226
+ **Vue:** Vue, Nuxt
1143
1227
 
1144
1228
  **Python:** Django, Flask, FastAPI
1145
1229
 
@@ -1147,6 +1231,8 @@ KiroGraph automatically detects frameworks and enriches the graph with framework
1147
1231
 
1148
1232
  **Java:** Spring, Spring Boot, Spring MVC
1149
1233
 
1234
+ **Scala:** Play, Akka HTTP, http4s
1235
+
1150
1236
  **Go:** generic Go resolver
1151
1237
 
1152
1238
  **Rust:** generic Rust resolver
@@ -1159,12 +1245,36 @@ KiroGraph automatically detects frameworks and enriches the graph with framework
1159
1245
 
1160
1246
  **Elixir:** Phoenix
1161
1247
 
1248
+ **Solidity:** Hardhat, Foundry, Truffle (OpenZeppelin patterns)
1249
+
1250
+ ### Infrastructure as Code
1251
+
1252
+ AWS CDK, SST, Serverless Framework, AWS SAM, Terraform / OpenTofu, Pulumi, CloudFormation, AWS Amplify Gen 2
1253
+
1254
+ ### Containers & Orchestration
1255
+
1256
+ Kubernetes, Helm, Docker Compose
1257
+
1258
+ ### Configuration Management
1259
+
1260
+ Ansible
1261
+
1162
1262
  Detected frameworks are stored in config and used to improve symbol extraction and resolution.
1163
1263
 
1264
+ ## Credits
1265
+
1266
+ KiroGraph is inspired by [CodeGraph](https://github.com/colbymchenry/codegraph) by [Colby McHenry](https://www.linkedin.com/in/colby-mchenry/). the original concept of building a semantic code graph for AI coding agents comes from his work.
1267
+
1268
+ ### Contributors
1269
+
1270
+ - [Alessandro Franceschi](https://www.linkedin.com/in/alessandrofranceschi/). Claude Code and Codex integration, Elixir/Phoenix language and framework support.
1271
+ - [Mauro Argo](https://www.linkedin.com/in/argomauro/). original idea for the architecture layer analysis feature.
1272
+
1164
1273
  ## Requirements
1165
1274
 
1166
1275
  - Node.js >= 18
1167
- - Kiro IDE
1276
+ - Kiro IDE (fully supported)
1277
+ - Other MCP-capable tools (experimental. see [Other Tools](#other-tools-experimental))
1168
1278
 
1169
1279
  ## License
1170
1280