claude-all-hands 1.0.2 → 1.0.3

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 (35) hide show
  1. package/.claude/agents/curator.md +1 -5
  2. package/.claude/agents/documentation-taxonomist.md +255 -0
  3. package/.claude/agents/documentation-writer.md +366 -0
  4. package/.claude/agents/surveyor.md +1 -1
  5. package/.claude/commands/continue.md +12 -10
  6. package/.claude/commands/create-skill.md +2 -2
  7. package/.claude/commands/create-specialist.md +3 -3
  8. package/.claude/commands/debug.md +5 -5
  9. package/.claude/commands/docs-adjust.md +214 -0
  10. package/.claude/commands/docs-audit.md +172 -0
  11. package/.claude/commands/docs-init.md +210 -0
  12. package/.claude/commands/plan.md +6 -6
  13. package/.claude/commands/whats-next.md +2 -2
  14. package/.claude/envoy/README.md +5 -5
  15. package/.claude/envoy/package-lock.json +216 -10
  16. package/.claude/envoy/package.json +9 -0
  17. package/.claude/envoy/src/commands/docs.ts +881 -0
  18. package/.claude/envoy/src/commands/knowledge.ts +33 -42
  19. package/.claude/envoy/src/lib/ast-queries.ts +261 -0
  20. package/.claude/envoy/src/lib/knowledge.ts +176 -124
  21. package/.claude/envoy/src/lib/tree-sitter-utils.ts +301 -0
  22. package/.claude/envoy/src/types/tree-sitter.d.ts +76 -0
  23. package/.claude/hooks/scripts/enforce_research_fetch.py +1 -1
  24. package/.claude/protocols/bug-discovery.yaml +1 -1
  25. package/.claude/protocols/discovery.yaml +1 -1
  26. package/.claude/settings.json +4 -3
  27. package/.claude/skills/discovery-mode/SKILL.md +7 -7
  28. package/.claude/skills/documentation-taxonomy/SKILL.md +287 -0
  29. package/.claude/skills/implementation-mode/SKILL.md +7 -7
  30. package/.claude/skills/knowledge-discovery/SKILL.md +178 -0
  31. package/bin/cli.js +41 -1
  32. package/package.json +1 -1
  33. package/.claude/agents/documentor.md +0 -147
  34. package/.claude/commands/audit-docs.md +0 -94
  35. package/.claude/commands/create-docs.md +0 -100
@@ -0,0 +1,210 @@
1
+ ---
2
+ description: Initialize documentation for codebase (full documentation generation)
3
+ argument-hint: [...optional paths] [optional context]
4
+ ---
5
+
6
+ <objective>
7
+ Create comprehensive documentation for the codebase from scratch. Uses taxonomy-based approach with parallel documentation writers. Taxonomist ensures non-overlapping output directories, so writers work directly on the branch without conflicts.
8
+ </objective>
9
+
10
+ <context>
11
+ Current branch: !`git branch --show-current`
12
+ Base branch: !`envoy git get-base-branch`
13
+ </context>
14
+
15
+ <main_agent_role>
16
+ Main agent is ORCHESTRATOR ONLY. Do NOT perform any codebase discovery, file analysis, or documentation planning. All discovery work is delegated to the taxonomist agent.
17
+
18
+ Main agent responsibilities:
19
+ 1. Setup branch (create docs branch if on base)
20
+ 2. Parse arguments (paths, context)
21
+ 3. Verify clean git state
22
+ 4. Delegate to taxonomist with raw inputs
23
+ 5. Orchestrate writers based on taxonomist output
24
+ 6. Handle merging, validation, and PR creation
25
+ </main_agent_role>
26
+
27
+ <process>
28
+ <step name="setup_branch">
29
+ Check if current branch equals base branch:
30
+
31
+ **If on base branch:**
32
+ 1. Create docs branch: `docs/init-<timestamp>`
33
+ 2. Document from fresh docs branch
34
+
35
+ **If on feature branch:**
36
+ 1. Stay on current branch
37
+ 2. Document from feature branch state (no branch switching)
38
+ </step>
39
+
40
+ <step name="parse_arguments">
41
+ Parse $ARGUMENTS:
42
+ - Extract paths (pass to taxonomist as scope)
43
+ - Extract optional user context (pass to taxonomist)
44
+
45
+ Do NOT run discovery commands - pass raw inputs to taxonomist.
46
+ </step>
47
+
48
+ <step name="ensure_committed_state">
49
+ Before delegating to taxonomist, verify clean git state:
50
+
51
+ 1. Check for uncommitted changes:
52
+ ```bash
53
+ git status --porcelain
54
+ ```
55
+
56
+ 2. If changes exist:
57
+ - Use AskUserQuestion: "Uncommitted changes detected. Documentation requires committed state for valid reference hashes."
58
+ - Options:
59
+ - "Commit now" - propose message, gate for approval
60
+ - "Stash and continue" - `git stash`
61
+ - "Cancel" - abort workflow
62
+
63
+ 3. If "Commit now":
64
+ - Run `git diff --cached --stat` for context
65
+ - Propose commit message based on staged changes
66
+ - Gate for user approval
67
+ - Execute: `git add -A && git commit -m "<approved message>"`
68
+
69
+ 4. If "Stash and continue":
70
+ - Execute: `git stash push -m "pre-docs stash"`
71
+ - Note: remind user to `git stash pop` after docs complete
72
+
73
+ 5. Verify clean state before proceeding:
74
+ ```bash
75
+ git status --porcelain
76
+ ```
77
+ Must return empty.
78
+ </step>
79
+
80
+ <step name="delegate_to_taxonomist">
81
+ Delegate to **documentation-taxonomist agent** with init-workflow.
82
+
83
+ Taxonomist handles ALL discovery: analyzing codebase structure, checking existing docs, identifying products/features, creating directory structure, assigning writers.
84
+
85
+ **INPUTS:**
86
+ ```yaml
87
+ mode: "init"
88
+ scope_paths: [<paths from arguments, or empty for full codebase>]
89
+ user_request: "<optional context from user>"
90
+ feature_branch: "<current_branch>"
91
+ ```
92
+
93
+ **OUTPUTS:**
94
+ ```yaml
95
+ success: true
96
+ segments:
97
+ - domain: "<domain-name>"
98
+ files: ["<glob-patterns>"]
99
+ output_path: "docs/<domain>/"
100
+ depth: "overview" | "detailed" | "comprehensive"
101
+ notes: "<guidance>"
102
+ ```
103
+ </step>
104
+
105
+ <step name="parallel_writers">
106
+ For each segment from taxonomist, delegate to **documentation-writer agent** in parallel:
107
+
108
+ **INPUTS (per writer):**
109
+ ```yaml
110
+ mode: "write"
111
+ domain: "<segment.domain>"
112
+ files: <segment.files>
113
+ output_path: "<segment.output_path>"
114
+ depth: "<segment.depth>"
115
+ notes: "<segment.notes>"
116
+ ```
117
+
118
+ **OUTPUTS:**
119
+ ```yaml
120
+ success: true
121
+ ```
122
+
123
+ Writers work directly on the branch. Taxonomist ensures non-overlapping output directories, so no conflicts occur.
124
+ </step>
125
+
126
+ <step name="validate_docs">
127
+ Run validation: `envoy docs validate`
128
+
129
+ If stale/invalid refs found:
130
+ - Present findings to user
131
+ - Delegate single writer with fix-workflow if user approves
132
+ </step>
133
+
134
+ <step name="commit_documentation">
135
+ Commit any uncommitted documentation changes (e.g., validation fixes):
136
+
137
+ 1. Check for uncommitted changes in docs/:
138
+ ```bash
139
+ git status --porcelain docs/
140
+ ```
141
+
142
+ 2. If changes exist:
143
+ ```bash
144
+ git add docs/
145
+ git commit -m "docs: finalize documentation"
146
+ ```
147
+
148
+ 3. Track documentation files for reindex:
149
+ - Get list of all doc files created/modified since branch diverged from base:
150
+ ```bash
151
+ git diff --name-only $(git merge-base HEAD <base_branch>)..HEAD -- docs/
152
+ ```
153
+ - Store this list for the reindex step
154
+ </step>
155
+
156
+ <step name="reindex_knowledge">
157
+ Update semantic search index with new documentation:
158
+
159
+ 1. Build file changes JSON from tracked doc files:
160
+ ```json
161
+ [
162
+ {"path": "docs/domain/index.md", "added": true},
163
+ {"path": "docs/domain/subdomain/index.md", "added": true}
164
+ ]
165
+ ```
166
+ - Use `added: true` for new files
167
+ - Use `modified: true` for updated files
168
+
169
+ 2. Call reindex:
170
+ ```bash
171
+ envoy knowledge reindex-from-changes docs --files '<json_array>'
172
+ ```
173
+
174
+ 3. If reindex reports missing references:
175
+ - Log warning but continue (docs may reference code not yet indexed)
176
+ - These will resolve on next full reindex
177
+ </step>
178
+
179
+ <step name="create_pr">
180
+ Create PR:
181
+ ```bash
182
+ envoy git create-pr --title "docs: initialize codebase documentation" --body "<summary>"
183
+ ```
184
+
185
+ Report completion with PR link.
186
+ </step>
187
+ </process>
188
+
189
+ <success_criteria>
190
+ - Branch setup complete (docs branch from base OR stay on feature)
191
+ - Taxonomist segmented codebase with non-overlapping output directories
192
+ - Writers created docs in parallel
193
+ - Validation passed
194
+ - Documentation committed
195
+ - Knowledge index updated
196
+ - PR created
197
+ </success_criteria>
198
+
199
+ <constraints>
200
+ - MUST NOT perform codebase discovery - delegate ALL discovery to taxonomist
201
+ - MUST NOT run envoy docs tree, envoy docs complexity, or envoy knowledge search
202
+ - MUST verify clean git state before documentation (ensure_committed_state step)
203
+ - MUST only create docs branch if already on base branch
204
+ - MUST delegate to taxonomist for all segmentation and discovery
205
+ - MUST run writers in parallel
206
+ - MUST validate before PR
207
+ - MUST commit documentation changes before reindex (reindex reads from disk)
208
+ - MUST reindex knowledge base after documentation committed
209
+ - All delegations MUST follow INPUTS/OUTPUTS format
210
+ </constraints>
@@ -13,7 +13,7 @@ Modes:
13
13
  </objective>
14
14
 
15
15
  <context>
16
- Plan status: !`.claude/envoy/envoy plan check`
16
+ Plan status: !`envoy plan check`
17
17
  </context>
18
18
 
19
19
  <process>
@@ -30,14 +30,14 @@ Parse $ARGUMENTS for mode flags and user prompt:
30
30
 
31
31
  1. Call `envoy plan check` to get status
32
32
  2. **If plan exists (in_progress or completed)**:
33
- - Append user prompt: `.claude/envoy/envoy plan append-user-input "<user_prompt>"`
33
+ - Append user prompt: `envoy plan append-user-input "<user_prompt>"`
34
34
  - Delegate to **planner agent**:
35
35
  * "Run `envoy plan protocol implementation` and follow the steps. INPUTS: `{ mode: 'quick', workflow_type: 'feature', feature_branch: <current_branch>, plan_status: <status> }`"
36
36
  - AskUserQuestion: "Quick plan created. Ready to implement?"
37
37
  - If yes: call /continue command
38
38
  3. **If no plan exists**:
39
39
  - Create branch from user prompt context (infer name)
40
- - Append user prompt: `.claude/envoy/envoy plan append-user-input "<user_prompt>"`
40
+ - Append user prompt: `envoy plan append-user-input "<user_prompt>"`
41
41
  - Delegate to **planner agent**:
42
42
  * "Run `envoy plan protocol implementation` and follow the steps. INPUTS: `{ mode: 'quick', workflow_type: 'feature', feature_branch: <current_branch> }`"
43
43
  - AskUserQuestion: "Quick plan created. Ready to implement?"
@@ -77,7 +77,7 @@ If user chooses "start fresh": create new branch off base, set mode = "create"
77
77
 
78
78
  <step name="write_user_input">
79
79
  Append all gathered context to user_input.md:
80
- `.claude/envoy/envoy plan append-user-input "<all_gathered_context>"`
80
+ `envoy plan append-user-input "<all_gathered_context>"`
81
81
  </step>
82
82
 
83
83
  <step name="specialist_delegation">
@@ -93,7 +93,7 @@ Append all gathered context to user_input.md:
93
93
  </step>
94
94
 
95
95
  <step name="get_findings">
96
- Call `.claude/envoy/envoy plan get-findings` to get list of approaches
96
+ Call `envoy plan get-findings` to get list of approaches
97
97
  </step>
98
98
 
99
99
  <step name="research_delegation">
@@ -107,7 +107,7 @@ For each distinct research objective identified from approaches:
107
107
  1. Present all clarifying questions from approach documents to user
108
108
  2. AskUserQuestion: "Want to redirect specialists with specific requirements? (clears all findings)"
109
109
  - If yes: clear findings, return to specialist_delegation step
110
- 3. Call `.claude/envoy/envoy plan block-findings-gate`
110
+ 3. Call `envoy plan block-findings-gate`
111
111
  - Returns: `{ thoughts, affected_approaches: [{ specialist_name, approach_number }] }`
112
112
  4. If affected_approaches exist:
113
113
  - Re-delegate to affected specialists with thoughts context
@@ -7,7 +7,7 @@ Analyze completed plan and generate contextual next-step suggestions. Uses plan
7
7
  </objective>
8
8
 
9
9
  <context>
10
- Plan status: !`.claude/envoy/envoy plan check`
10
+ Plan status: !`envoy plan check`
11
11
  </context>
12
12
 
13
13
  <process>
@@ -22,7 +22,7 @@ Parse plan check result:
22
22
  </step>
23
23
 
24
24
  <step name="get_context">
25
- Call `.claude/envoy/envoy plan get-full-plan`
25
+ Call `envoy plan get-full-plan`
26
26
 
27
27
  Parse returned context:
28
28
  - user_input.md: original requirements, anticipated follow-ups, out-of-scope items
@@ -5,9 +5,9 @@ CLI for agent-scoped external tool access. Keeps file contents OUT of Claude's c
5
5
  ## Usage
6
6
 
7
7
  ```bash
8
- .claude/envoy/envoy <group> <command> [args]
9
- .claude/envoy/envoy --help
10
- .claude/envoy/envoy <group> --help
8
+ envoy <group> <command> [args]
9
+ envoy --help
10
+ envoy <group> --help
11
11
  ```
12
12
 
13
13
  ## Tools
@@ -69,8 +69,8 @@ These tools read files directly and pass to external LLMs. Claude only receives
69
69
 
70
70
  ```bash
71
71
  # List all commands and API status
72
- .claude/envoy/envoy info
72
+ envoy info
73
73
 
74
74
  # Get help for any command
75
- .claude/envoy/envoy vertex ask --help
75
+ envoy vertex ask --help
76
76
  ```
@@ -16,6 +16,15 @@
16
16
  "gray-matter": "^4.0.3",
17
17
  "onnxruntime-node": "1.15.1",
18
18
  "pino": "^10.1.0",
19
+ "tree-sitter": "^0.22.1",
20
+ "tree-sitter-go": "^0.23.0",
21
+ "tree-sitter-java": "^0.23.0",
22
+ "tree-sitter-javascript": "^0.23.0",
23
+ "tree-sitter-python": "^0.23.0",
24
+ "tree-sitter-ruby": "^0.23.0",
25
+ "tree-sitter-rust": "^0.23.0",
26
+ "tree-sitter-swift": "^0.7.1",
27
+ "tree-sitter-typescript": "^0.23.0",
19
28
  "usearch": "^2.21.4",
20
29
  "yaml": "^2.3.4",
21
30
  "zod": "^3.23.0"
@@ -514,8 +523,7 @@
514
523
  "version": "0.1.5",
515
524
  "resolved": "https://registry.npmjs.org/@visheratin/tokenizers-node/-/tokenizers-node-0.1.5.tgz",
516
525
  "integrity": "sha512-deNd/auG7ynfp6KwQrXZc4IDI+lOx2CaiPOZa/FUxJtPVKLSv2BA3kB9+Oxz9G9SMlfgl8RmacBlNB/N7OksDQ==",
517
- "license": "MIT",
518
- "peer": true
526
+ "license": "MIT"
519
527
  },
520
528
  "node_modules/@visheratin/web-ai-node": {
521
529
  "version": "1.4.5",
@@ -911,6 +919,12 @@
911
919
  "url": "https://github.com/sponsors/sindresorhus"
912
920
  }
913
921
  },
922
+ "node_modules/isexe": {
923
+ "version": "2.0.0",
924
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
925
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
926
+ "license": "ISC"
927
+ },
914
928
  "node_modules/js-yaml": {
915
929
  "version": "3.14.2",
916
930
  "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
@@ -1052,7 +1066,6 @@
1052
1066
  "darwin",
1053
1067
  "linux"
1054
1068
  ],
1055
- "peer": true,
1056
1069
  "dependencies": {
1057
1070
  "onnxruntime-common": "~1.15.1"
1058
1071
  }
@@ -1244,6 +1257,185 @@
1244
1257
  "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
1245
1258
  "license": "MIT"
1246
1259
  },
1260
+ "node_modules/tree-sitter": {
1261
+ "version": "0.22.4",
1262
+ "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.22.4.tgz",
1263
+ "integrity": "sha512-usbHZP9/oxNsUY65MQUsduGRqDHQOou1cagUSwjhoSYAmSahjQDAVsh9s+SlZkn8X8+O1FULRGwHu7AFP3kjzg==",
1264
+ "hasInstallScript": true,
1265
+ "license": "MIT",
1266
+ "dependencies": {
1267
+ "node-addon-api": "^8.3.0",
1268
+ "node-gyp-build": "^4.8.4"
1269
+ }
1270
+ },
1271
+ "node_modules/tree-sitter-cli": {
1272
+ "version": "0.23.2",
1273
+ "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.23.2.tgz",
1274
+ "integrity": "sha512-kPPXprOqREX+C/FgUp2Qpt9jd0vSwn+hOgjzVv/7hapdoWpa+VeWId53rf4oNNd29ikheF12BYtGD/W90feMbA==",
1275
+ "hasInstallScript": true,
1276
+ "license": "MIT",
1277
+ "bin": {
1278
+ "tree-sitter": "cli.js"
1279
+ },
1280
+ "engines": {
1281
+ "node": ">=12.0.0"
1282
+ }
1283
+ },
1284
+ "node_modules/tree-sitter-go": {
1285
+ "version": "0.23.4",
1286
+ "resolved": "https://registry.npmjs.org/tree-sitter-go/-/tree-sitter-go-0.23.4.tgz",
1287
+ "integrity": "sha512-iQaHEs4yMa/hMo/ZCGqLfG61F0miinULU1fFh+GZreCRtKylFLtvn798ocCZjO2r/ungNZgAY1s1hPFyAwkc7w==",
1288
+ "hasInstallScript": true,
1289
+ "license": "MIT",
1290
+ "dependencies": {
1291
+ "node-addon-api": "^8.2.1",
1292
+ "node-gyp-build": "^4.8.2"
1293
+ },
1294
+ "peerDependencies": {
1295
+ "tree-sitter": "^0.21.1"
1296
+ },
1297
+ "peerDependenciesMeta": {
1298
+ "tree-sitter": {
1299
+ "optional": true
1300
+ }
1301
+ }
1302
+ },
1303
+ "node_modules/tree-sitter-java": {
1304
+ "version": "0.23.5",
1305
+ "resolved": "https://registry.npmjs.org/tree-sitter-java/-/tree-sitter-java-0.23.5.tgz",
1306
+ "integrity": "sha512-Yju7oQ0Xx7GcUT01mUglPP+bYfvqjNCGdxqigTnew9nLGoII42PNVP3bHrYeMxswiCRM0yubWmN5qk+zsg0zMA==",
1307
+ "hasInstallScript": true,
1308
+ "license": "MIT",
1309
+ "dependencies": {
1310
+ "node-addon-api": "^8.2.2",
1311
+ "node-gyp-build": "^4.8.2"
1312
+ },
1313
+ "peerDependencies": {
1314
+ "tree-sitter": "^0.21.1"
1315
+ },
1316
+ "peerDependenciesMeta": {
1317
+ "tree-sitter": {
1318
+ "optional": true
1319
+ }
1320
+ }
1321
+ },
1322
+ "node_modules/tree-sitter-javascript": {
1323
+ "version": "0.23.1",
1324
+ "resolved": "https://registry.npmjs.org/tree-sitter-javascript/-/tree-sitter-javascript-0.23.1.tgz",
1325
+ "integrity": "sha512-/bnhbrTD9frUYHQTiYnPcxyHORIw157ERBa6dqzaKxvR/x3PC4Yzd+D1pZIMS6zNg2v3a8BZ0oK7jHqsQo9fWA==",
1326
+ "hasInstallScript": true,
1327
+ "license": "MIT",
1328
+ "dependencies": {
1329
+ "node-addon-api": "^8.2.2",
1330
+ "node-gyp-build": "^4.8.2"
1331
+ },
1332
+ "peerDependencies": {
1333
+ "tree-sitter": "^0.21.1"
1334
+ },
1335
+ "peerDependenciesMeta": {
1336
+ "tree-sitter": {
1337
+ "optional": true
1338
+ }
1339
+ }
1340
+ },
1341
+ "node_modules/tree-sitter-python": {
1342
+ "version": "0.23.6",
1343
+ "resolved": "https://registry.npmjs.org/tree-sitter-python/-/tree-sitter-python-0.23.6.tgz",
1344
+ "integrity": "sha512-yIM9z0oxKIxT7bAtPOhgoVl6gTXlmlIhue7liFT4oBPF/lha7Ha4dQBS82Av6hMMRZoVnFJI8M6mL+SwWoLD3A==",
1345
+ "hasInstallScript": true,
1346
+ "license": "MIT",
1347
+ "dependencies": {
1348
+ "node-addon-api": "^8.3.0",
1349
+ "node-gyp-build": "^4.8.4"
1350
+ },
1351
+ "peerDependencies": {
1352
+ "tree-sitter": "^0.22.1"
1353
+ },
1354
+ "peerDependenciesMeta": {
1355
+ "tree-sitter": {
1356
+ "optional": true
1357
+ }
1358
+ }
1359
+ },
1360
+ "node_modules/tree-sitter-ruby": {
1361
+ "version": "0.23.1",
1362
+ "resolved": "https://registry.npmjs.org/tree-sitter-ruby/-/tree-sitter-ruby-0.23.1.tgz",
1363
+ "integrity": "sha512-d9/RXgWjR6HanN7wTYhS5bpBQLz1VkH048Vm3CodPGyJVnamXMGb8oEhDypVCBq4QnHui9sTXuJBBP3WtCw5RA==",
1364
+ "hasInstallScript": true,
1365
+ "license": "MIT",
1366
+ "dependencies": {
1367
+ "node-addon-api": "^8.2.2",
1368
+ "node-gyp-build": "^4.8.2"
1369
+ },
1370
+ "peerDependencies": {
1371
+ "tree-sitter": "^0.21.1"
1372
+ },
1373
+ "peerDependenciesMeta": {
1374
+ "tree-sitter": {
1375
+ "optional": true
1376
+ }
1377
+ }
1378
+ },
1379
+ "node_modules/tree-sitter-rust": {
1380
+ "version": "0.23.3",
1381
+ "resolved": "https://registry.npmjs.org/tree-sitter-rust/-/tree-sitter-rust-0.23.3.tgz",
1382
+ "integrity": "sha512-uLdZJ1K26EuJTBMJlz1ltTlg7nJyAYThfouXgigf5ixKOasOL5wNrRCpuWTsl6rDcKlZK9UX+annFLqP/kchwQ==",
1383
+ "hasInstallScript": true,
1384
+ "license": "MIT",
1385
+ "dependencies": {
1386
+ "node-addon-api": "^8.2.2",
1387
+ "node-gyp-build": "^4.8.4"
1388
+ },
1389
+ "peerDependencies": {
1390
+ "tree-sitter": "^0.22.1"
1391
+ },
1392
+ "peerDependenciesMeta": {
1393
+ "tree-sitter": {
1394
+ "optional": true
1395
+ }
1396
+ }
1397
+ },
1398
+ "node_modules/tree-sitter-swift": {
1399
+ "version": "0.7.1",
1400
+ "resolved": "https://registry.npmjs.org/tree-sitter-swift/-/tree-sitter-swift-0.7.1.tgz",
1401
+ "integrity": "sha512-pneKVTuGamaBsqqqfB9BvNQjktzh/0IVPR54jLB5Fq/JTDQwYHd0Wo6pVyZ5jAYpbztzq+rJ/rpL9ruxTmSoKw==",
1402
+ "hasInstallScript": true,
1403
+ "license": "MIT",
1404
+ "dependencies": {
1405
+ "node-addon-api": "^8.0.0",
1406
+ "node-gyp-build": "^4.8.0",
1407
+ "tree-sitter-cli": "^0.23",
1408
+ "which": "2.0.2"
1409
+ },
1410
+ "peerDependencies": {
1411
+ "tree-sitter": "^0.22.1"
1412
+ },
1413
+ "peerDependenciesMeta": {
1414
+ "tree_sitter": {
1415
+ "optional": true
1416
+ }
1417
+ }
1418
+ },
1419
+ "node_modules/tree-sitter-typescript": {
1420
+ "version": "0.23.2",
1421
+ "resolved": "https://registry.npmjs.org/tree-sitter-typescript/-/tree-sitter-typescript-0.23.2.tgz",
1422
+ "integrity": "sha512-e04JUUKxTT53/x3Uq1zIL45DoYKVfHH4CZqwgZhPg5qYROl5nQjV+85ruFzFGZxu+QeFVbRTPDRnqL9UbU4VeA==",
1423
+ "hasInstallScript": true,
1424
+ "license": "MIT",
1425
+ "dependencies": {
1426
+ "node-addon-api": "^8.2.2",
1427
+ "node-gyp-build": "^4.8.2",
1428
+ "tree-sitter-javascript": "^0.23.1"
1429
+ },
1430
+ "peerDependencies": {
1431
+ "tree-sitter": "^0.21.0"
1432
+ },
1433
+ "peerDependenciesMeta": {
1434
+ "tree-sitter": {
1435
+ "optional": true
1436
+ }
1437
+ }
1438
+ },
1247
1439
  "node_modules/tsx": {
1248
1440
  "version": "4.21.0",
1249
1441
  "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz",
@@ -1329,10 +1521,25 @@
1329
1521
  "webidl-conversions": "^3.0.0"
1330
1522
  }
1331
1523
  },
1524
+ "node_modules/which": {
1525
+ "version": "2.0.2",
1526
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1527
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1528
+ "license": "ISC",
1529
+ "dependencies": {
1530
+ "isexe": "^2.0.0"
1531
+ },
1532
+ "bin": {
1533
+ "node-which": "bin/node-which"
1534
+ },
1535
+ "engines": {
1536
+ "node": ">= 8"
1537
+ }
1538
+ },
1332
1539
  "node_modules/ws": {
1333
- "version": "8.18.3",
1334
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
1335
- "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
1540
+ "version": "8.19.0",
1541
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz",
1542
+ "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
1336
1543
  "license": "MIT",
1337
1544
  "engines": {
1338
1545
  "node": ">=10.0.0"
@@ -1370,15 +1577,14 @@
1370
1577
  "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
1371
1578
  "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
1372
1579
  "license": "MIT",
1373
- "peer": true,
1374
1580
  "funding": {
1375
1581
  "url": "https://github.com/sponsors/colinhacks"
1376
1582
  }
1377
1583
  },
1378
1584
  "node_modules/zod-to-json-schema": {
1379
- "version": "3.25.0",
1380
- "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz",
1381
- "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==",
1585
+ "version": "3.25.1",
1586
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz",
1587
+ "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==",
1382
1588
  "license": "ISC",
1383
1589
  "peerDependencies": {
1384
1590
  "zod": "^3.25 || ^4"
@@ -16,6 +16,15 @@
16
16
  "gray-matter": "^4.0.3",
17
17
  "onnxruntime-node": "1.15.1",
18
18
  "pino": "^10.1.0",
19
+ "tree-sitter": "^0.22.1",
20
+ "tree-sitter-go": "^0.23.0",
21
+ "tree-sitter-java": "^0.23.0",
22
+ "tree-sitter-javascript": "^0.23.0",
23
+ "tree-sitter-python": "^0.23.0",
24
+ "tree-sitter-ruby": "^0.23.0",
25
+ "tree-sitter-rust": "^0.23.0",
26
+ "tree-sitter-swift": "^0.7.1",
27
+ "tree-sitter-typescript": "^0.23.0",
19
28
  "usearch": "^2.21.4",
20
29
  "yaml": "^2.3.4",
21
30
  "zod": "^3.23.0"