mindweave 0.0.1 → 2.1.2

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 (481) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +171 -14
  3. package/dist/alternator/chassis/cache.js +47 -0
  4. package/dist/alternator/chassis/cache.js.map +1 -0
  5. package/dist/alternator/chassis/domRefs.js +53 -0
  6. package/dist/alternator/chassis/domRefs.js.map +1 -0
  7. package/dist/alternator/chassis/extractWorker.js +65 -0
  8. package/dist/alternator/chassis/extractWorker.js.map +1 -0
  9. package/dist/alternator/chassis/graph.js +221 -0
  10. package/dist/alternator/chassis/graph.js.map +1 -0
  11. package/dist/alternator/chassis/index.js +463 -0
  12. package/dist/alternator/chassis/index.js.map +1 -0
  13. package/dist/alternator/chassis/isolation.js +336 -0
  14. package/dist/alternator/chassis/isolation.js.map +1 -0
  15. package/dist/alternator/chassis/langCases.js +69 -0
  16. package/dist/alternator/chassis/langCases.js.map +1 -0
  17. package/dist/alternator/chassis/lsp.js +469 -0
  18. package/dist/alternator/chassis/lsp.js.map +1 -0
  19. package/dist/alternator/chassis/markup.js +262 -0
  20. package/dist/alternator/chassis/markup.js.map +1 -0
  21. package/dist/alternator/chassis/provision.js +198 -0
  22. package/dist/alternator/chassis/provision.js.map +1 -0
  23. package/dist/alternator/chassis/rank.js +72 -0
  24. package/dist/alternator/chassis/rank.js.map +1 -0
  25. package/dist/alternator/chassis/servers.js +215 -0
  26. package/dist/alternator/chassis/servers.js.map +1 -0
  27. package/dist/alternator/chassis/treesitter.js +608 -0
  28. package/dist/alternator/chassis/treesitter.js.map +1 -0
  29. package/dist/alternator/chassis/types.js +24 -0
  30. package/dist/alternator/chassis/types.js.map +1 -0
  31. package/dist/alternator/lane.js +67 -0
  32. package/dist/alternator/lane.js.map +1 -0
  33. package/dist/cli/App.js +2586 -0
  34. package/dist/cli/App.js.map +1 -0
  35. package/dist/cli/altScreen.js +67 -0
  36. package/dist/cli/altScreen.js.map +1 -0
  37. package/dist/cli/approvalChannel.js +72 -0
  38. package/dist/cli/approvalChannel.js.map +1 -0
  39. package/dist/cli/attachments.js +188 -0
  40. package/dist/cli/attachments.js.map +1 -0
  41. package/dist/cli/bootstrap.js +279 -0
  42. package/dist/cli/bootstrap.js.map +1 -0
  43. package/dist/cli/chatAnchor.js +94 -0
  44. package/dist/cli/chatAnchor.js.map +1 -0
  45. package/dist/cli/commandArgs.js +79 -0
  46. package/dist/cli/commandArgs.js.map +1 -0
  47. package/dist/cli/commandRoute.js +78 -0
  48. package/dist/cli/commandRoute.js.map +1 -0
  49. package/dist/cli/compaction.js +69 -0
  50. package/dist/cli/compaction.js.map +1 -0
  51. package/dist/cli/components/ApprovalBox.js +100 -0
  52. package/dist/cli/components/ApprovalBox.js.map +1 -0
  53. package/dist/cli/components/BlockView.js +128 -0
  54. package/dist/cli/components/BlockView.js.map +1 -0
  55. package/dist/cli/components/FirstRunFrame.js +41 -0
  56. package/dist/cli/components/FirstRunFrame.js.map +1 -0
  57. package/dist/cli/components/KeyManager.js +197 -0
  58. package/dist/cli/components/KeyManager.js.map +1 -0
  59. package/dist/cli/components/KeySetup.js +125 -0
  60. package/dist/cli/components/KeySetup.js.map +1 -0
  61. package/dist/cli/components/MenuFrame.js +24 -0
  62. package/dist/cli/components/MenuFrame.js.map +1 -0
  63. package/dist/cli/components/Picker.js +82 -0
  64. package/dist/cli/components/Picker.js.map +1 -0
  65. package/dist/cli/components/PromptInput.js +509 -0
  66. package/dist/cli/components/PromptInput.js.map +1 -0
  67. package/dist/cli/components/SubagentView.js +86 -0
  68. package/dist/cli/components/SubagentView.js.map +1 -0
  69. package/dist/cli/components/ToolGroup.js +60 -0
  70. package/dist/cli/components/ToolGroup.js.map +1 -0
  71. package/dist/cli/components/ToolLine.js +123 -0
  72. package/dist/cli/components/ToolLine.js.map +1 -0
  73. package/dist/cli/components/TrustGate.js +37 -0
  74. package/dist/cli/components/TrustGate.js.map +1 -0
  75. package/dist/cli/costView.js +40 -0
  76. package/dist/cli/costView.js.map +1 -0
  77. package/dist/cli/frameRate.js +30 -0
  78. package/dist/cli/frameRate.js.map +1 -0
  79. package/dist/cli/framebuffer/paint.js +165 -0
  80. package/dist/cli/framebuffer/paint.js.map +1 -0
  81. package/dist/cli/framebuffer/parse.js +266 -0
  82. package/dist/cli/framebuffer/parse.js.map +1 -0
  83. package/dist/cli/framebuffer/screen.js +196 -0
  84. package/dist/cli/framebuffer/screen.js.map +1 -0
  85. package/dist/cli/framebuffer/writer.js +139 -0
  86. package/dist/cli/framebuffer/writer.js.map +1 -0
  87. package/dist/cli/groupReveal.js +51 -0
  88. package/dist/cli/groupReveal.js.map +1 -0
  89. package/dist/cli/help.js +55 -0
  90. package/dist/cli/help.js.map +1 -0
  91. package/dist/cli/inputView.js +105 -0
  92. package/dist/cli/inputView.js.map +1 -0
  93. package/dist/cli/keyManager.js +65 -0
  94. package/dist/cli/keyManager.js.map +1 -0
  95. package/dist/cli/keySetup.js +35 -0
  96. package/dist/cli/keySetup.js.map +1 -0
  97. package/dist/cli/keyStore.js +73 -0
  98. package/dist/cli/keyStore.js.map +1 -0
  99. package/dist/cli/markdown.js +460 -0
  100. package/dist/cli/markdown.js.map +1 -0
  101. package/dist/cli/messageQueue.js +96 -0
  102. package/dist/cli/messageQueue.js.map +1 -0
  103. package/dist/cli/modes.js +90 -0
  104. package/dist/cli/modes.js.map +1 -0
  105. package/dist/cli/mouse.js +78 -0
  106. package/dist/cli/mouse.js.map +1 -0
  107. package/dist/cli/pasteAssembler.js +44 -0
  108. package/dist/cli/pasteAssembler.js.map +1 -0
  109. package/dist/cli/pathComplete.js +39 -0
  110. package/dist/cli/pathComplete.js.map +1 -0
  111. package/dist/cli/perfLog.js +90 -0
  112. package/dist/cli/perfLog.js.map +1 -0
  113. package/dist/cli/reveal.js +32 -0
  114. package/dist/cli/reveal.js.map +1 -0
  115. package/dist/cli/revealPace.js +59 -0
  116. package/dist/cli/revealPace.js.map +1 -0
  117. package/dist/cli/sessionCarry.js +19 -0
  118. package/dist/cli/sessionCarry.js.map +1 -0
  119. package/dist/cli/smoothScroll.js +74 -0
  120. package/dist/cli/smoothScroll.js.map +1 -0
  121. package/dist/cli/startupArgs.js +96 -0
  122. package/dist/cli/startupArgs.js.map +1 -0
  123. package/dist/cli/terminalRestore.js +34 -0
  124. package/dist/cli/terminalRestore.js.map +1 -0
  125. package/dist/cli/toolDisplay.js +219 -0
  126. package/dist/cli/toolDisplay.js.map +1 -0
  127. package/dist/cli/toolItems.js +65 -0
  128. package/dist/cli/toolItems.js.map +1 -0
  129. package/dist/cli/transcript.js +351 -0
  130. package/dist/cli/transcript.js.map +1 -0
  131. package/dist/cli/trust.js +79 -0
  132. package/dist/cli/trust.js.map +1 -0
  133. package/dist/cli/updateCheck.js +107 -0
  134. package/dist/cli/updateCheck.js.map +1 -0
  135. package/dist/cli/version.js +39 -0
  136. package/dist/cli/version.js.map +1 -0
  137. package/dist/cli/viewport.js +179 -0
  138. package/dist/cli/viewport.js.map +1 -0
  139. package/dist/cli/virtualWindow.js +103 -0
  140. package/dist/cli/virtualWindow.js.map +1 -0
  141. package/dist/cli/workingVerb.js +37 -0
  142. package/dist/cli/workingVerb.js.map +1 -0
  143. package/dist/cli/wrap.js +145 -0
  144. package/dist/cli/wrap.js.map +1 -0
  145. package/dist/drivers/anthropic/cachePoints.js +77 -0
  146. package/dist/drivers/anthropic/cachePoints.js.map +1 -0
  147. package/dist/drivers/anthropic/client.js +432 -0
  148. package/dist/drivers/anthropic/client.js.map +1 -0
  149. package/dist/drivers/anthropic/index.js +10 -0
  150. package/dist/drivers/anthropic/index.js.map +1 -0
  151. package/dist/drivers/anthropic/manifest.js +221 -0
  152. package/dist/drivers/anthropic/manifest.js.map +1 -0
  153. package/dist/drivers/cerebras/client.js +69 -0
  154. package/dist/drivers/cerebras/client.js.map +1 -0
  155. package/dist/drivers/cerebras/index.js +5 -0
  156. package/dist/drivers/cerebras/index.js.map +1 -0
  157. package/dist/drivers/cerebras/manifest.js +140 -0
  158. package/dist/drivers/cerebras/manifest.js.map +1 -0
  159. package/dist/drivers/clientId.js +41 -0
  160. package/dist/drivers/clientId.js.map +1 -0
  161. package/dist/drivers/contextOverflow.js +77 -0
  162. package/dist/drivers/contextOverflow.js.map +1 -0
  163. package/dist/drivers/deepseek/client.js +168 -0
  164. package/dist/drivers/deepseek/client.js.map +1 -0
  165. package/dist/drivers/deepseek/index.js +16 -0
  166. package/dist/drivers/deepseek/index.js.map +1 -0
  167. package/dist/drivers/deepseek/inlineTools.js +46 -0
  168. package/dist/drivers/deepseek/inlineTools.js.map +1 -0
  169. package/dist/drivers/deepseek/manifest.js +166 -0
  170. package/dist/drivers/deepseek/manifest.js.map +1 -0
  171. package/dist/drivers/gemini/client.js +38 -0
  172. package/dist/drivers/gemini/client.js.map +1 -0
  173. package/dist/drivers/gemini/index.js +5 -0
  174. package/dist/drivers/gemini/index.js.map +1 -0
  175. package/dist/drivers/gemini/manifest.js +150 -0
  176. package/dist/drivers/gemini/manifest.js.map +1 -0
  177. package/dist/drivers/glm/client.js +90 -0
  178. package/dist/drivers/glm/client.js.map +1 -0
  179. package/dist/drivers/glm/index.js +9 -0
  180. package/dist/drivers/glm/index.js.map +1 -0
  181. package/dist/drivers/glm/manifest.js +183 -0
  182. package/dist/drivers/glm/manifest.js.map +1 -0
  183. package/dist/drivers/groq/client.js +80 -0
  184. package/dist/drivers/groq/client.js.map +1 -0
  185. package/dist/drivers/groq/index.js +5 -0
  186. package/dist/drivers/groq/index.js.map +1 -0
  187. package/dist/drivers/groq/manifest.js +160 -0
  188. package/dist/drivers/groq/manifest.js.map +1 -0
  189. package/dist/drivers/kimi/client.js +82 -0
  190. package/dist/drivers/kimi/client.js.map +1 -0
  191. package/dist/drivers/kimi/index.js +9 -0
  192. package/dist/drivers/kimi/index.js.map +1 -0
  193. package/dist/drivers/kimi/manifest.js +168 -0
  194. package/dist/drivers/kimi/manifest.js.map +1 -0
  195. package/dist/drivers/meta/client.js +30 -0
  196. package/dist/drivers/meta/client.js.map +1 -0
  197. package/dist/drivers/meta/index.js +5 -0
  198. package/dist/drivers/meta/index.js.map +1 -0
  199. package/dist/drivers/meta/manifest.js +101 -0
  200. package/dist/drivers/meta/manifest.js.map +1 -0
  201. package/dist/drivers/minimax/client.js +36 -0
  202. package/dist/drivers/minimax/client.js.map +1 -0
  203. package/dist/drivers/minimax/index.js +5 -0
  204. package/dist/drivers/minimax/index.js.map +1 -0
  205. package/dist/drivers/minimax/manifest.js +120 -0
  206. package/dist/drivers/minimax/manifest.js.map +1 -0
  207. package/dist/drivers/mistral/client.js +54 -0
  208. package/dist/drivers/mistral/client.js.map +1 -0
  209. package/dist/drivers/mistral/index.js +5 -0
  210. package/dist/drivers/mistral/index.js.map +1 -0
  211. package/dist/drivers/mistral/manifest.js +118 -0
  212. package/dist/drivers/mistral/manifest.js.map +1 -0
  213. package/dist/drivers/openai/client.js +290 -0
  214. package/dist/drivers/openai/client.js.map +1 -0
  215. package/dist/drivers/openai/index.js +9 -0
  216. package/dist/drivers/openai/index.js.map +1 -0
  217. package/dist/drivers/openai/manifest.js +133 -0
  218. package/dist/drivers/openai/manifest.js.map +1 -0
  219. package/dist/drivers/openaiCompat/wire.js +493 -0
  220. package/dist/drivers/openaiCompat/wire.js.map +1 -0
  221. package/dist/drivers/partialTurn.js +23 -0
  222. package/dist/drivers/partialTurn.js.map +1 -0
  223. package/dist/drivers/providerError.js +181 -0
  224. package/dist/drivers/providerError.js.map +1 -0
  225. package/dist/drivers/qwen/client.js +93 -0
  226. package/dist/drivers/qwen/client.js.map +1 -0
  227. package/dist/drivers/qwen/index.js +9 -0
  228. package/dist/drivers/qwen/index.js.map +1 -0
  229. package/dist/drivers/qwen/manifest.js +146 -0
  230. package/dist/drivers/qwen/manifest.js.map +1 -0
  231. package/dist/drivers/registry.js +177 -0
  232. package/dist/drivers/registry.js.map +1 -0
  233. package/dist/drivers/retryPolicy.js +129 -0
  234. package/dist/drivers/retryPolicy.js.map +1 -0
  235. package/dist/drivers/searchBlocks.js +61 -0
  236. package/dist/drivers/searchBlocks.js.map +1 -0
  237. package/dist/drivers/types.js +2 -0
  238. package/dist/drivers/types.js.map +1 -0
  239. package/dist/drivers/xai/client.js +63 -0
  240. package/dist/drivers/xai/client.js.map +1 -0
  241. package/dist/drivers/xai/index.js +5 -0
  242. package/dist/drivers/xai/index.js.map +1 -0
  243. package/dist/drivers/xai/manifest.js +137 -0
  244. package/dist/drivers/xai/manifest.js.map +1 -0
  245. package/dist/dynamo/_probe.tmp.js +20 -0
  246. package/dist/dynamo/_probe.tmp.js.map +1 -0
  247. package/dist/dynamo/cacheBreak.js +88 -0
  248. package/dist/dynamo/cacheBreak.js.map +1 -0
  249. package/dist/dynamo/contextWindow.js +243 -0
  250. package/dist/dynamo/contextWindow.js.map +1 -0
  251. package/dist/dynamo/engine.js +2011 -0
  252. package/dist/dynamo/engine.js.map +1 -0
  253. package/dist/dynamo/guard.js +132 -0
  254. package/dist/dynamo/guard.js.map +1 -0
  255. package/dist/dynamo/liveMeter.js +58 -0
  256. package/dist/dynamo/liveMeter.js.map +1 -0
  257. package/dist/dynamo/model.js +172 -0
  258. package/dist/dynamo/model.js.map +1 -0
  259. package/dist/dynamo/planArtifact.js +125 -0
  260. package/dist/dynamo/planArtifact.js.map +1 -0
  261. package/dist/dynamo/pricing.js +140 -0
  262. package/dist/dynamo/pricing.js.map +1 -0
  263. package/dist/dynamo/prompt.js +264 -0
  264. package/dist/dynamo/prompt.js.map +1 -0
  265. package/dist/dynamo/spend.js +45 -0
  266. package/dist/dynamo/spend.js.map +1 -0
  267. package/dist/dynamo/verify.js +483 -0
  268. package/dist/dynamo/verify.js.map +1 -0
  269. package/dist/governor/forbidden.js +181 -0
  270. package/dist/governor/forbidden.js.map +1 -0
  271. package/dist/governor/freshness.js +83 -0
  272. package/dist/governor/freshness.js.map +1 -0
  273. package/dist/governor/frontmatter.js +38 -0
  274. package/dist/governor/frontmatter.js.map +1 -0
  275. package/dist/governor/glob.js +75 -0
  276. package/dist/governor/glob.js.map +1 -0
  277. package/dist/governor/index.js +87 -0
  278. package/dist/governor/index.js.map +1 -0
  279. package/dist/governor/rules.js +80 -0
  280. package/dist/governor/rules.js.map +1 -0
  281. package/dist/governor/scope.js +91 -0
  282. package/dist/governor/scope.js.map +1 -0
  283. package/dist/governor/skills.js +176 -0
  284. package/dist/governor/skills.js.map +1 -0
  285. package/dist/governor/types.js +16 -0
  286. package/dist/governor/types.js.map +1 -0
  287. package/dist/governor/write.js +182 -0
  288. package/dist/governor/write.js.map +1 -0
  289. package/dist/index.js +89 -0
  290. package/dist/index.js.map +1 -0
  291. package/dist/mcp/catalog.js +232 -0
  292. package/dist/mcp/catalog.js.map +1 -0
  293. package/dist/mcp/config.js +116 -0
  294. package/dist/mcp/config.js.map +1 -0
  295. package/dist/mcp/configWrite.js +254 -0
  296. package/dist/mcp/configWrite.js.map +1 -0
  297. package/dist/mcp/connection.js +504 -0
  298. package/dist/mcp/connection.js.map +1 -0
  299. package/dist/mcp/deferred.js +104 -0
  300. package/dist/mcp/deferred.js.map +1 -0
  301. package/dist/mcp/discover.js +128 -0
  302. package/dist/mcp/discover.js.map +1 -0
  303. package/dist/mcp/manager.js +679 -0
  304. package/dist/mcp/manager.js.map +1 -0
  305. package/dist/mcp/paramHeaders.js +163 -0
  306. package/dist/mcp/paramHeaders.js.map +1 -0
  307. package/dist/mcp/prompts.js +136 -0
  308. package/dist/mcp/prompts.js.map +1 -0
  309. package/dist/mcp/protocol.js +171 -0
  310. package/dist/mcp/protocol.js.map +1 -0
  311. package/dist/mcp/resources.js +119 -0
  312. package/dist/mcp/resources.js.map +1 -0
  313. package/dist/mcp/resultStore.js +180 -0
  314. package/dist/mcp/resultStore.js.map +1 -0
  315. package/dist/mcp/subscriptions.js +74 -0
  316. package/dist/mcp/subscriptions.js.map +1 -0
  317. package/dist/mcp/transport/headerValue.js +40 -0
  318. package/dist/mcp/transport/headerValue.js.map +1 -0
  319. package/dist/mcp/transport/http.js +321 -0
  320. package/dist/mcp/transport/http.js.map +1 -0
  321. package/dist/mcp/transport/stdio.js +234 -0
  322. package/dist/mcp/transport/stdio.js.map +1 -0
  323. package/dist/mcp/transport/types.js +27 -0
  324. package/dist/mcp/transport/types.js.map +1 -0
  325. package/dist/mcp/trust.js +98 -0
  326. package/dist/mcp/trust.js.map +1 -0
  327. package/dist/mcp/trustStore.js +55 -0
  328. package/dist/mcp/trustStore.js.map +1 -0
  329. package/dist/memory/autoMemory.js +340 -0
  330. package/dist/memory/autoMemory.js.map +1 -0
  331. package/dist/memory/compaction.js +513 -0
  332. package/dist/memory/compaction.js.map +1 -0
  333. package/dist/memory/images.js +173 -0
  334. package/dist/memory/images.js.map +1 -0
  335. package/dist/memory/presence.js +59 -0
  336. package/dist/memory/presence.js.map +1 -0
  337. package/dist/memory/projectNotes.js +247 -0
  338. package/dist/memory/projectNotes.js.map +1 -0
  339. package/dist/memory/restore.js +72 -0
  340. package/dist/memory/restore.js.map +1 -0
  341. package/dist/memory/session.js +472 -0
  342. package/dist/memory/session.js.map +1 -0
  343. package/dist/memory/sessionMemory.js +142 -0
  344. package/dist/memory/sessionMemory.js.map +1 -0
  345. package/dist/memory/sessionMemoryCompact.js +136 -0
  346. package/dist/memory/sessionMemoryCompact.js.map +1 -0
  347. package/dist/memory/store.js +217 -0
  348. package/dist/memory/store.js.map +1 -0
  349. package/dist/memory/types.js +14 -0
  350. package/dist/memory/types.js.map +1 -0
  351. package/dist/memory/workingSet.js +383 -0
  352. package/dist/memory/workingSet.js.map +1 -0
  353. package/dist/project/context.js +425 -0
  354. package/dist/project/context.js.map +1 -0
  355. package/dist/tools/approval.js +189 -0
  356. package/dist/tools/approval.js.map +1 -0
  357. package/dist/tools/askUser.js +103 -0
  358. package/dist/tools/askUser.js.map +1 -0
  359. package/dist/tools/atomicWrite.js +151 -0
  360. package/dist/tools/atomicWrite.js.map +1 -0
  361. package/dist/tools/backgroundShells.js +468 -0
  362. package/dist/tools/backgroundShells.js.map +1 -0
  363. package/dist/tools/captureSweep.js +77 -0
  364. package/dist/tools/captureSweep.js.map +1 -0
  365. package/dist/tools/chassisMux.js +92 -0
  366. package/dist/tools/chassisMux.js.map +1 -0
  367. package/dist/tools/checkpoints.js +328 -0
  368. package/dist/tools/checkpoints.js.map +1 -0
  369. package/dist/tools/codeIntel.js +267 -0
  370. package/dist/tools/codeIntel.js.map +1 -0
  371. package/dist/tools/deferredNative.js +121 -0
  372. package/dist/tools/deferredNative.js.map +1 -0
  373. package/dist/tools/detail.js +135 -0
  374. package/dist/tools/detail.js.map +1 -0
  375. package/dist/tools/diagnostics.js +174 -0
  376. package/dist/tools/diagnostics.js.map +1 -0
  377. package/dist/tools/edit.js +167 -0
  378. package/dist/tools/edit.js.map +1 -0
  379. package/dist/tools/editCore.js +283 -0
  380. package/dist/tools/editCore.js.map +1 -0
  381. package/dist/tools/editFile.js +183 -0
  382. package/dist/tools/editFile.js.map +1 -0
  383. package/dist/tools/editRipple.js +126 -0
  384. package/dist/tools/editRipple.js.map +1 -0
  385. package/dist/tools/editTarget.js +131 -0
  386. package/dist/tools/editTarget.js.map +1 -0
  387. package/dist/tools/editWindow.js +49 -0
  388. package/dist/tools/editWindow.js.map +1 -0
  389. package/dist/tools/eol.js +56 -0
  390. package/dist/tools/eol.js.map +1 -0
  391. package/dist/tools/exitPlan.js +175 -0
  392. package/dist/tools/exitPlan.js.map +1 -0
  393. package/dist/tools/focus.js +42 -0
  394. package/dist/tools/focus.js.map +1 -0
  395. package/dist/tools/gitignore.js +148 -0
  396. package/dist/tools/gitignore.js.map +1 -0
  397. package/dist/tools/glob.js +134 -0
  398. package/dist/tools/glob.js.map +1 -0
  399. package/dist/tools/governorTools.js +258 -0
  400. package/dist/tools/governorTools.js.map +1 -0
  401. package/dist/tools/grep.js +450 -0
  402. package/dist/tools/grep.js.map +1 -0
  403. package/dist/tools/guard.js +220 -0
  404. package/dist/tools/guard.js.map +1 -0
  405. package/dist/tools/killTree.js +215 -0
  406. package/dist/tools/killTree.js.map +1 -0
  407. package/dist/tools/listDir.js +143 -0
  408. package/dist/tools/listDir.js.map +1 -0
  409. package/dist/tools/mcpAdd.js +176 -0
  410. package/dist/tools/mcpAdd.js.map +1 -0
  411. package/dist/tools/mcpResources.js +116 -0
  412. package/dist/tools/mcpResources.js.map +1 -0
  413. package/dist/tools/mcpSearch.js +123 -0
  414. package/dist/tools/mcpSearch.js.map +1 -0
  415. package/dist/tools/multiEdit.js +168 -0
  416. package/dist/tools/multiEdit.js.map +1 -0
  417. package/dist/tools/paths.js +225 -0
  418. package/dist/tools/paths.js.map +1 -0
  419. package/dist/tools/posixShell.js +123 -0
  420. package/dist/tools/posixShell.js.map +1 -0
  421. package/dist/tools/readFile.js +371 -0
  422. package/dist/tools/readFile.js.map +1 -0
  423. package/dist/tools/readSymbol.js +145 -0
  424. package/dist/tools/readSymbol.js.map +1 -0
  425. package/dist/tools/registry.js +120 -0
  426. package/dist/tools/registry.js.map +1 -0
  427. package/dist/tools/replaceSymbol.js +141 -0
  428. package/dist/tools/replaceSymbol.js.map +1 -0
  429. package/dist/tools/results.js +15 -0
  430. package/dist/tools/results.js.map +1 -0
  431. package/dist/tools/ripgrep.js +145 -0
  432. package/dist/tools/ripgrep.js.map +1 -0
  433. package/dist/tools/runCommand.js +633 -0
  434. package/dist/tools/runCommand.js.map +1 -0
  435. package/dist/tools/saveMemory.js +102 -0
  436. package/dist/tools/saveMemory.js.map +1 -0
  437. package/dist/tools/screenshot.js +200 -0
  438. package/dist/tools/screenshot.js.map +1 -0
  439. package/dist/tools/screenshotWin.js +227 -0
  440. package/dist/tools/screenshotWin.js.map +1 -0
  441. package/dist/tools/search.js +121 -0
  442. package/dist/tools/search.js.map +1 -0
  443. package/dist/tools/sessionTools.js +187 -0
  444. package/dist/tools/sessionTools.js.map +1 -0
  445. package/dist/tools/shellCheckpoint.js +123 -0
  446. package/dist/tools/shellCheckpoint.js.map +1 -0
  447. package/dist/tools/shellLint.js +102 -0
  448. package/dist/tools/shellLint.js.map +1 -0
  449. package/dist/tools/shellTools.js +203 -0
  450. package/dist/tools/shellTools.js.map +1 -0
  451. package/dist/tools/spanCore.js +78 -0
  452. package/dist/tools/spanCore.js.map +1 -0
  453. package/dist/tools/subagent.js +224 -0
  454. package/dist/tools/subagent.js.map +1 -0
  455. package/dist/tools/subagentReport.js +114 -0
  456. package/dist/tools/subagentReport.js.map +1 -0
  457. package/dist/tools/tempSweep.js +118 -0
  458. package/dist/tools/tempSweep.js.map +1 -0
  459. package/dist/tools/todo.js +117 -0
  460. package/dist/tools/todo.js.map +1 -0
  461. package/dist/tools/types.js +2 -0
  462. package/dist/tools/types.js.map +1 -0
  463. package/dist/tools/untrusted.js +46 -0
  464. package/dist/tools/untrusted.js.map +1 -0
  465. package/dist/tools/useSkill.js +62 -0
  466. package/dist/tools/useSkill.js.map +1 -0
  467. package/dist/tools/walk.js +152 -0
  468. package/dist/tools/walk.js.map +1 -0
  469. package/dist/tools/web.js +61 -0
  470. package/dist/tools/web.js.map +1 -0
  471. package/dist/tools/webFetch.js +444 -0
  472. package/dist/tools/webFetch.js.map +1 -0
  473. package/dist/tools/webSearch.js +130 -0
  474. package/dist/tools/webSearch.js.map +1 -0
  475. package/dist/tools/workspace.js +212 -0
  476. package/dist/tools/workspace.js.map +1 -0
  477. package/dist/tools/workspaceDiscover.js +216 -0
  478. package/dist/tools/workspaceDiscover.js.map +1 -0
  479. package/dist/tools/writeFile.js +162 -0
  480. package/dist/tools/writeFile.js.map +1 -0
  481. package/package.json +74 -28
@@ -0,0 +1,608 @@
1
+ /**
2
+ * treesitter.ts — the universal extraction tier.
3
+ *
4
+ * Parses any supported language with tree-sitter (WASM, in-process) and pulls out
5
+ * definitions and references via tag queries. This is the
6
+ * always-available layer: it needs no language server, just a bundled grammar.
7
+ * Facts from here are `name-level` (matched by name, not resolved), which the
8
+ * graph records so the model knows to defer to grep/read when it matters.
9
+ *
10
+ * Grammars come from `tree-sitter-wasms`; the runtime from `web-tree-sitter`.
11
+ */
12
+ import { readFile } from "node:fs/promises";
13
+ import { createRequire } from "node:module";
14
+ import { dirname, extname, join } from "node:path";
15
+ import Parser from "web-tree-sitter";
16
+ import { pickNearest } from "../../tools/spanCore.js";
17
+ import { extractDomRefs } from "./domRefs.js";
18
+ import { IN_WORKER, isolatedExtract, isolatedSpan } from "./isolation.js";
19
+ // Inside the isolation worker every grammar runs in-process ON PURPOSE — that is where
20
+ // a fatal compile, and the memory a parse retains, are allowed to accumulate and die.
21
+ // `IN_WORKER` (owned by isolation.ts) is what breaks the recursion.
22
+ // web-tree-sitter is pinned to the 0.20.x era to match tree-sitter-wasms' grammar
23
+ // ABI (its grammars are built with tree-sitter-cli 0.20.8). Newer runtimes use a
24
+ // dynamic-linking loader that rejects these grammars. This is the proven combo.
25
+ const require = createRequire(import.meta.url);
26
+ const WASM_DIR = join(dirname(require.resolve("tree-sitter-wasms/package.json")), "out");
27
+ const TS_QUERY = `
28
+ (function_declaration name: (identifier) @definition.function)
29
+ (method_definition name: (property_identifier) @definition.method)
30
+ (class_declaration name: (type_identifier) @definition.class)
31
+ (interface_declaration name: (type_identifier) @definition.interface)
32
+ (type_alias_declaration name: (type_identifier) @definition.type)
33
+ (enum_declaration name: (identifier) @definition.enum)
34
+ (variable_declarator name: (identifier) @definition.function value: [(arrow_function) (function_expression)])
35
+ (public_field_definition name: (property_identifier) @definition.field)
36
+ (call_expression function: (identifier) @reference)
37
+ (call_expression function: (member_expression property: (property_identifier) @reference))
38
+ (new_expression constructor: (identifier) @reference)
39
+ (import_statement source: (string) @import)
40
+ (export_statement source: (string) @import)
41
+ `;
42
+ const JS_QUERY = `
43
+ (function_declaration name: (identifier) @definition.function)
44
+ (method_definition name: (property_identifier) @definition.method)
45
+ (class_declaration name: (identifier) @definition.class)
46
+ (variable_declarator name: (identifier) @definition.function value: [(arrow_function) (function_expression)])
47
+ (call_expression function: (identifier) @reference)
48
+ (call_expression function: (member_expression property: (property_identifier) @reference))
49
+ (new_expression constructor: (identifier) @reference)
50
+ (import_statement source: (string) @import)
51
+ (export_statement source: (string) @import)
52
+ `;
53
+ const PY_QUERY = `
54
+ (function_definition name: (identifier) @definition.function)
55
+ (class_definition name: (identifier) @definition.class)
56
+ (call function: (identifier) @reference)
57
+ (call function: (attribute attribute: (identifier) @reference))
58
+ (import_from_statement module_name: (dotted_name) @import)
59
+ (import_statement name: (dotted_name) @import)
60
+ `;
61
+ // ── The broad language set (validated against each real grammar wasm) ───────────
62
+ // Every query below was probed against tree-sitter-wasms' actual grammar so it both
63
+ // COMPILES (a bad node name throws at load) and extracts real defs/refs. Adding a
64
+ // language here is all it takes — the graph, outline, ranking, and read_symbol all
65
+ // flow from these captures.
66
+ const GO_QUERY = `
67
+ (function_declaration name: (identifier) @definition.function)
68
+ (method_declaration name: (field_identifier) @definition.method)
69
+ (type_declaration (type_spec name: (type_identifier) @definition.type))
70
+ (call_expression function: (identifier) @reference)
71
+ (call_expression function: (selector_expression field: (field_identifier) @reference))
72
+ `;
73
+ const RUST_QUERY = `
74
+ (function_item name: (identifier) @definition.function)
75
+ (struct_item name: (type_identifier) @definition.struct)
76
+ (enum_item name: (type_identifier) @definition.enum)
77
+ (trait_item name: (type_identifier) @definition.trait)
78
+ (mod_item name: (identifier) @definition.module)
79
+ (call_expression function: (identifier) @reference)
80
+ (call_expression function: (field_expression field: (field_identifier) @reference))
81
+ (macro_invocation macro: (identifier) @reference)
82
+ `;
83
+ const JAVA_QUERY = `
84
+ (class_declaration name: (identifier) @definition.class)
85
+ (interface_declaration name: (identifier) @definition.interface)
86
+ (enum_declaration name: (identifier) @definition.enum)
87
+ (method_declaration name: (identifier) @definition.method)
88
+ (constructor_declaration name: (identifier) @definition.method)
89
+ (method_invocation name: (identifier) @reference)
90
+ (object_creation_expression type: (type_identifier) @reference)
91
+ `;
92
+ const C_QUERY = `
93
+ (function_definition declarator: (function_declarator declarator: (identifier) @definition.function))
94
+ (struct_specifier name: (type_identifier) @definition.struct)
95
+ (enum_specifier name: (type_identifier) @definition.enum)
96
+ (type_definition declarator: (type_identifier) @definition.type)
97
+ (call_expression function: (identifier) @reference)
98
+ `;
99
+ const CPP_QUERY = `
100
+ (function_definition declarator: (function_declarator declarator: (identifier) @definition.function))
101
+ (class_specifier name: (type_identifier) @definition.class)
102
+ (struct_specifier name: (type_identifier) @definition.struct)
103
+ (enum_specifier name: (type_identifier) @definition.enum)
104
+ (call_expression function: (identifier) @reference)
105
+ (call_expression function: (field_expression field: (field_identifier) @reference))
106
+ `;
107
+ const CSHARP_QUERY = `
108
+ (class_declaration name: (identifier) @definition.class)
109
+ (interface_declaration name: (identifier) @definition.interface)
110
+ (struct_declaration name: (identifier) @definition.struct)
111
+ (enum_declaration name: (identifier) @definition.enum)
112
+ (method_declaration name: (identifier) @definition.method)
113
+ (invocation_expression function: (identifier) @reference)
114
+ (invocation_expression function: (member_access_expression name: (identifier) @reference))
115
+ `;
116
+ const PHP_QUERY = `
117
+ (function_definition name: (name) @definition.function)
118
+ (method_declaration name: (name) @definition.method)
119
+ (class_declaration name: (name) @definition.class)
120
+ (interface_declaration name: (name) @definition.interface)
121
+ (trait_declaration name: (name) @definition.trait)
122
+ (function_call_expression function: (name) @reference)
123
+ (member_call_expression name: (name) @reference)
124
+ `;
125
+ const LUA_QUERY = `
126
+ (function_definition_statement (identifier) @definition.function)
127
+ (local_function_definition_statement (identifier) @definition.function)
128
+ (call (variable (identifier) @reference))
129
+ `;
130
+ const SCALA_QUERY = `
131
+ (function_definition name: (identifier) @definition.function)
132
+ (class_definition name: (identifier) @definition.class)
133
+ (object_definition name: (identifier) @definition.module)
134
+ (trait_definition name: (identifier) @definition.trait)
135
+ (call_expression function: (identifier) @reference)
136
+ `;
137
+ const BASH_QUERY = `
138
+ (function_definition name: (word) @definition.function)
139
+ (command name: (command_name) @reference)
140
+ `;
141
+ const OCAML_QUERY = `
142
+ (value_definition (let_binding pattern: (value_name) @definition.function))
143
+ (type_definition (type_binding name: (type_constructor) @definition.type))
144
+ `;
145
+ const ZIG_QUERY = `
146
+ (function_declaration name: (identifier) @definition.function)
147
+ `;
148
+ const SOLIDITY_QUERY = `
149
+ (contract_declaration name: (identifier) @definition.class)
150
+ (function_definition name: (identifier) @definition.function)
151
+ `;
152
+ const SWIFT_QUERY = `
153
+ (function_declaration name: (simple_identifier) @definition.function)
154
+ (class_declaration name: (type_identifier) @definition.class)
155
+ (protocol_declaration name: (type_identifier) @definition.interface)
156
+ (call_expression (simple_identifier) @reference)
157
+ `;
158
+ /**
159
+ * The JSX half, appended to the TS/JS query for the grammars that have JSX nodes.
160
+ *
161
+ * A component file's render body has no DECLARATIONS in it, so a declaration-only query
162
+ * goes silent over exactly the part most likely to be edited: measured on a 1,381-line
163
+ * React component, the outline's last entry was L1128 and the entire render — 18% of the
164
+ * file, and where the change actually had to go — did not exist in the graph at all. The
165
+ * model had nothing to navigate by, guessed an offset, missed, and read again.
166
+ *
167
+ * The whole attribute node is captured and read in JS rather than matched by grammar
168
+ * sub-node names, the same choice `markup.ts` makes and for the same reason: the shape
169
+ * of a `jsx_attribute` differs between grammars and versions, its text does not.
170
+ */
171
+ const JSX_QUERY = `
172
+ (jsx_attribute) @jsx.attribute
173
+ `;
174
+ const KOTLIN_QUERY = `
175
+ (function_declaration (simple_identifier) @definition.function)
176
+ (class_declaration (type_identifier) @definition.class)
177
+ (object_declaration (type_identifier) @definition.class)
178
+ (call_expression (simple_identifier) @reference)
179
+ `;
180
+ const LANGS = {
181
+ ".ts": { grammar: "tree-sitter-typescript.wasm", query: TS_QUERY },
182
+ ".mts": { grammar: "tree-sitter-typescript.wasm", query: TS_QUERY },
183
+ ".cts": { grammar: "tree-sitter-typescript.wasm", query: TS_QUERY },
184
+ ".tsx": { grammar: "tree-sitter-tsx.wasm", query: TS_QUERY + JSX_QUERY },
185
+ ".js": { grammar: "tree-sitter-javascript.wasm", query: JS_QUERY },
186
+ ".mjs": { grammar: "tree-sitter-javascript.wasm", query: JS_QUERY },
187
+ ".cjs": { grammar: "tree-sitter-javascript.wasm", query: JS_QUERY },
188
+ ".jsx": { grammar: "tree-sitter-javascript.wasm", query: JS_QUERY + JSX_QUERY },
189
+ ".py": { grammar: "tree-sitter-python.wasm", query: PY_QUERY },
190
+ ".pyi": { grammar: "tree-sitter-python.wasm", query: PY_QUERY },
191
+ ".go": { grammar: "tree-sitter-go.wasm", query: GO_QUERY },
192
+ ".rs": { grammar: "tree-sitter-rust.wasm", query: RUST_QUERY },
193
+ ".java": { grammar: "tree-sitter-java.wasm", query: JAVA_QUERY },
194
+ ".c": { grammar: "tree-sitter-c.wasm", query: C_QUERY },
195
+ ".h": { grammar: "tree-sitter-c.wasm", query: C_QUERY },
196
+ ".cpp": { grammar: "tree-sitter-cpp.wasm", query: CPP_QUERY },
197
+ ".cc": { grammar: "tree-sitter-cpp.wasm", query: CPP_QUERY },
198
+ ".cxx": { grammar: "tree-sitter-cpp.wasm", query: CPP_QUERY },
199
+ ".hpp": { grammar: "tree-sitter-cpp.wasm", query: CPP_QUERY },
200
+ ".hh": { grammar: "tree-sitter-cpp.wasm", query: CPP_QUERY },
201
+ ".hxx": { grammar: "tree-sitter-cpp.wasm", query: CPP_QUERY },
202
+ ".cs": { grammar: "tree-sitter-c_sharp.wasm", query: CSHARP_QUERY },
203
+ ".php": { grammar: "tree-sitter-php.wasm", query: PHP_QUERY },
204
+ ".lua": { grammar: "tree-sitter-lua.wasm", query: LUA_QUERY },
205
+ ".scala": { grammar: "tree-sitter-scala.wasm", query: SCALA_QUERY },
206
+ ".sc": { grammar: "tree-sitter-scala.wasm", query: SCALA_QUERY },
207
+ ".sh": { grammar: "tree-sitter-bash.wasm", query: BASH_QUERY },
208
+ ".bash": { grammar: "tree-sitter-bash.wasm", query: BASH_QUERY },
209
+ ".ml": { grammar: "tree-sitter-ocaml.wasm", query: OCAML_QUERY },
210
+ ".mli": { grammar: "tree-sitter-ocaml.wasm", query: OCAML_QUERY },
211
+ ".zig": { grammar: "tree-sitter-zig.wasm", query: ZIG_QUERY },
212
+ ".sol": { grammar: "tree-sitter-solidity.wasm", query: SOLIDITY_QUERY },
213
+ ".swift": { grammar: "tree-sitter-swift.wasm", query: SWIFT_QUERY },
214
+ ".kt": { grammar: "tree-sitter-kotlin.wasm", query: KOTLIN_QUERY },
215
+ ".kts": { grammar: "tree-sitter-kotlin.wasm", query: KOTLIN_QUERY },
216
+ };
217
+ /** Extensions we can extract from (used by the lane to decide what to parse). */
218
+ export function isSupported(absPath) {
219
+ return extname(absPath).toLowerCase() in LANGS;
220
+ }
221
+ /** The directory holding the grammar wasm files. Exported so the language tests can
222
+ * weigh a grammar without duplicating how it is located. */
223
+ export const GRAMMAR_DIR = WASM_DIR;
224
+ /** The grammar wasm filename a path would load, or null if unsupported. */
225
+ export function grammarFileFor(absPath) {
226
+ return LANGS[extname(absPath).toLowerCase()]?.grammar ?? null;
227
+ }
228
+ /** The JS/TS family — these also carry DOM references to markup names. */
229
+ const JS_TS_EXTS = new Set([".js", ".jsx", ".mjs", ".cjs", ".ts", ".tsx", ".mts", ".cts"]);
230
+ let initPromise;
231
+ const parser = { current: null };
232
+ const langCache = new Map();
233
+ async function ensureInit() {
234
+ if (!initPromise) {
235
+ initPromise = Parser.init().then(() => {
236
+ parser.current = new Parser();
237
+ });
238
+ }
239
+ return initPromise;
240
+ }
241
+ const grammarCache = new Map();
242
+ /** Load a grammar wasm by filename (cached). Shared by the code tier (which also
243
+ * compiles a query) and the markup tier (which walks the tree directly). */
244
+ async function loadGrammar(grammarFile) {
245
+ const cached = grammarCache.get(grammarFile);
246
+ if (cached)
247
+ return cached;
248
+ const bytes = await readFile(join(WASM_DIR, grammarFile));
249
+ const language = await Parser.Language.load(new Uint8Array(bytes));
250
+ grammarCache.set(grammarFile, language);
251
+ return language;
252
+ }
253
+ async function loadLang(def) {
254
+ const cached = langCache.get(def.grammar);
255
+ if (cached)
256
+ return cached;
257
+ const language = await loadGrammar(def.grammar);
258
+ const query = language.query(def.query);
259
+ const entry = { language, query };
260
+ langCache.set(def.grammar, entry);
261
+ return entry;
262
+ }
263
+ /**
264
+ * Parse `code` with a named grammar wasm and return the tree (or null on failure).
265
+ * The caller OWNS the tree and must `tree.delete()` it. Used by the markup tier to
266
+ * parse HTML/CSS, which don't fit the code tier's def/ref tag-query shape.
267
+ */
268
+ export async function parseTree(grammarFile, code) {
269
+ try {
270
+ await ensureInit();
271
+ const language = await loadGrammar(grammarFile);
272
+ parser.current.setLanguage(language);
273
+ return parser.current.parse(code);
274
+ }
275
+ catch {
276
+ return null;
277
+ }
278
+ }
279
+ // Node types that ARE a definition (the smallest enclosing one of these, climbed
280
+ // from a captured name node, is the symbol's full body). Broad across grammars so
281
+ // the tree-sitter fallback works for TS/JS/Python and degrades gracefully elsewhere.
282
+ const DECL_TYPES = new Set([
283
+ // JS / TS / Python
284
+ "function_declaration",
285
+ "function_definition",
286
+ "function_expression",
287
+ "generator_function_declaration",
288
+ "arrow_function",
289
+ "method_definition",
290
+ "method_declaration",
291
+ "class_declaration",
292
+ "class_definition",
293
+ "interface_declaration",
294
+ "type_alias_declaration",
295
+ "enum_declaration",
296
+ "variable_declarator",
297
+ "public_field_definition",
298
+ "field_definition",
299
+ // Rust
300
+ "function_item",
301
+ "struct_item",
302
+ "enum_item",
303
+ "trait_item",
304
+ "impl_item",
305
+ "mod_item",
306
+ // Go
307
+ "type_declaration",
308
+ "type_spec",
309
+ // Java / C#
310
+ "constructor_declaration",
311
+ "struct_declaration",
312
+ // C / C++
313
+ "struct_specifier",
314
+ "class_specifier",
315
+ "enum_specifier",
316
+ "type_definition",
317
+ // PHP
318
+ "trait_declaration",
319
+ // Lua
320
+ "function_definition_statement",
321
+ "local_function_definition_statement",
322
+ // Scala
323
+ "object_definition",
324
+ "trait_definition",
325
+ // OCaml
326
+ "value_definition",
327
+ // Solidity / Swift / Kotlin
328
+ "contract_declaration",
329
+ "protocol_declaration",
330
+ "object_declaration",
331
+ ]);
332
+ // Wrappers that belong WITH the definition (so the span includes `export`/decorators).
333
+ const WRAPPER_TYPES = new Set(["export_statement", "decorated_definition", "decorator"]);
334
+ /** Climb from a captured name node to the line span of its whole definition. */
335
+ function enclosingSpan(nameNode) {
336
+ let node = nameNode.parent;
337
+ let decl = null;
338
+ while (node) {
339
+ if (DECL_TYPES.has(node.type)) {
340
+ decl = node;
341
+ break;
342
+ }
343
+ node = node.parent;
344
+ }
345
+ let top = decl ?? nameNode;
346
+ // Swallow an `export`/decorator wrapper so the header line isn't left behind.
347
+ while (top.parent && WRAPPER_TYPES.has(top.parent.type))
348
+ top = top.parent;
349
+ return { start: top.startPosition.row + 1, end: top.endPosition.row + 1 };
350
+ }
351
+ /**
352
+ * The full line span of a symbol named `name` in `code`, from the AST. Structural
353
+ * (the span IS an AST node), but `name-level` in confidence because the MATCH is by
354
+ * name — the tree-sitter fallback used when no language server can answer. `nearLine`
355
+ * disambiguates when the name is defined more than once. Null when it can't be found.
356
+ */
357
+ export async function treeSitterSpan(absPath, code, name, nearLine) {
358
+ const def = LANGS[extname(absPath).toLowerCase()];
359
+ if (!def)
360
+ return null;
361
+ // NO grammar parses in this process. See treeSitterExtract for why the old
362
+ // size-based exemption was wrong.
363
+ if (!IN_WORKER)
364
+ return isolatedSpan(def.grammar, absPath, code, name, nearLine);
365
+ try {
366
+ await ensureInit();
367
+ const { language, query } = await loadLang(def);
368
+ parser.current.setLanguage(language);
369
+ const tree = parser.current.parse(code);
370
+ if (!tree)
371
+ return null;
372
+ const spans = [];
373
+ for (const cap of query.captures(tree.rootNode)) {
374
+ if (!cap.name.startsWith("definition."))
375
+ continue;
376
+ if (cap.node.text !== name)
377
+ continue;
378
+ spans.push(enclosingSpan(cap.node));
379
+ }
380
+ tree.delete();
381
+ return pickNearest(spans, nearLine);
382
+ }
383
+ catch {
384
+ return null;
385
+ }
386
+ }
387
+ /**
388
+ * The first line of a symbol's documentation, if any — a JSDoc/`//` block just
389
+ * ABOVE the definition (JS/TS/most languages) or a `"""`/`'''` docstring just
390
+ * BELOW it (Python). Pure and line-based (exported for tests); returns a short,
391
+ * clean sentence or undefined. Best-effort intent, not a full doc parser.
392
+ */
393
+ export function extractDoc(lines, defLine1) {
394
+ // ── comment block immediately above (skip blanks + decorators) ──
395
+ let i = defLine1 - 2; // 0-based index of the line above the definition
396
+ while (i >= 0 && (lines[i].trim() === "" || lines[i].trim().startsWith("@")))
397
+ i--;
398
+ const above = [];
399
+ if (i >= 0 && lines[i].includes("*/")) {
400
+ // A block comment: gather upward to its opening `/*` / `/**`.
401
+ while (i >= 0) {
402
+ above.unshift(lines[i]);
403
+ if (lines[i].includes("/*"))
404
+ break;
405
+ i--;
406
+ }
407
+ }
408
+ else {
409
+ while (i >= 0 && lines[i].trim().startsWith("//")) {
410
+ above.unshift(lines[i]);
411
+ i--;
412
+ }
413
+ }
414
+ const fromAbove = firstDocSentence(above);
415
+ if (fromAbove)
416
+ return fromAbove;
417
+ // ── Python docstring on the first line(s) of the body ──
418
+ let j = defLine1; // 0-based index of the line after the definition
419
+ while (j < lines.length && lines[j].trim() === "")
420
+ j++;
421
+ const m = /^[rbuRBU]*("""|''')(.*)$/.exec(lines[j]?.trim() ?? "");
422
+ if (m) {
423
+ const rest = m[2];
424
+ const close = rest.indexOf(m[1]);
425
+ const text = (close >= 0 ? rest.slice(0, close) : rest).trim();
426
+ return clipDoc(text);
427
+ }
428
+ return undefined;
429
+ }
430
+ /** Strip comment markers from a gathered block and return its first sentence,
431
+ * skipping section dividers (`// ── queries ──`) and tag-only lines (`@param`). */
432
+ function firstDocSentence(block) {
433
+ for (const raw of block) {
434
+ const cleaned = raw
435
+ .replace(/^\s*\/\*\*?/, "")
436
+ .replace(/\*\/\s*$/, "")
437
+ .replace(/^\s*\*\s?/, "")
438
+ .replace(/^\s*\/\/+/, "")
439
+ .trim();
440
+ if (cleaned && !cleaned.startsWith("@") && !isDivider(cleaned))
441
+ return clipDoc(cleaned);
442
+ }
443
+ return undefined;
444
+ }
445
+ /** A section divider (`──── queries ────`, `====`, `####`) — not real prose. */
446
+ function isDivider(s) {
447
+ const dashes = (s.match(/[─\-=*#~_]/g) ?? []).length;
448
+ const letters = (s.match(/[a-zA-Z]/g) ?? []).length;
449
+ return dashes >= 4 && dashes >= letters;
450
+ }
451
+ function clipDoc(text) {
452
+ const one = text.replace(/\s+/g, " ").trim();
453
+ if (!one)
454
+ return undefined;
455
+ // Prefer up to the first sentence end, then hard-cap.
456
+ const dot = one.search(/[.!?](\s|$)/);
457
+ const sentence = dot >= 0 ? one.slice(0, dot + 1) : one;
458
+ return sentence.length > 140 ? `${sentence.slice(0, 139)}…` : sentence;
459
+ }
460
+ const KIND_OF = {
461
+ function: "function",
462
+ method: "method",
463
+ class: "class",
464
+ interface: "interface",
465
+ type: "type",
466
+ enum: "enum",
467
+ field: "field",
468
+ variable: "variable",
469
+ struct: "struct",
470
+ trait: "trait",
471
+ module: "module",
472
+ constant: "constant",
473
+ };
474
+ /** Extract defs + refs from one file. Returns null when the language is
475
+ * unsupported or anything fails (the caller degrades to grep/read). */
476
+ export async function treeSitterExtract(absPath, code) {
477
+ const def = LANGS[extname(absPath).toLowerCase()];
478
+ if (!def)
479
+ return null;
480
+ // NO grammar parses in this process.
481
+ //
482
+ // This used to exempt anything under 4.5 MB of grammar wasm, on the theory that only
483
+ // the oversized grammars were dangerous. Measurement killed that theory: a parse
484
+ // RETAINS memory that `tree.delete()` does not return, roughly 57-70 MB for one 54 KB
485
+ // JSX file, and tsx (2.41 MB) and typescript (2.34 MB) sat comfortably under the
486
+ // threshold while being the two most-used grammars in the product. Grammar file size
487
+ // predicts the cost of COMPILING a grammar; it says nothing about what a parse keeps.
488
+ // Indexing 120 ordinary files under the old rule peaked at 1.9 GB in the main
489
+ // process, where there is nothing to contain it.
490
+ if (!IN_WORKER)
491
+ return isolatedExtract(def.grammar, absPath, code);
492
+ try {
493
+ await ensureInit();
494
+ const { language, query } = await loadLang(def);
495
+ parser.current.setLanguage(language);
496
+ const tree = parser.current.parse(code);
497
+ if (!tree)
498
+ return null;
499
+ const lines = code.split("\n");
500
+ const defs = [];
501
+ const refs = [];
502
+ const imports = [];
503
+ // One per FILE: a landmark named twice in the same component is one symbol.
504
+ const jsxSeen = new Set();
505
+ for (const cap of query.captures(tree.rootNode)) {
506
+ const name = cap.node.text;
507
+ const line = cap.node.startPosition.row + 1;
508
+ if (cap.name === "import") {
509
+ const spec = unquote(cap.node.text);
510
+ if (spec)
511
+ imports.push({ spec, line });
512
+ continue;
513
+ }
514
+ if (cap.name.startsWith("definition.")) {
515
+ const kind = KIND_OF[cap.name.slice("definition.".length)] ?? "other";
516
+ const span = enclosingSpan(cap.node);
517
+ defs.push({
518
+ name,
519
+ kind,
520
+ line,
521
+ endLine: span.end,
522
+ signature: (lines[line - 1] ?? "").trim().slice(0, 200),
523
+ doc: extractDoc(lines, line),
524
+ });
525
+ }
526
+ else if (cap.name === "jsx.attribute") {
527
+ // A JSX landmark: `className="sidebar-header"` / `id="editor"`. The FIRST place a
528
+ // name appears in the file is its definition (so it lands in the outline and the
529
+ // render body stops being a blank stretch), every later one a reference — the
530
+ // same rule the stylesheet tier uses, so a class defined in CSS and used in JSX
531
+ // meet on the graph's name key and `references` finds both sides.
532
+ for (const landmark of jsxLandmarks(cap.node.text)) {
533
+ const key = `${landmark.kind}:${landmark.name}`;
534
+ if (jsxSeen.has(key)) {
535
+ refs.push({ name: landmark.name, line });
536
+ continue;
537
+ }
538
+ jsxSeen.add(key);
539
+ defs.push({
540
+ name: landmark.name,
541
+ kind: "element",
542
+ line,
543
+ endLine: jsxElementEnd(cap.node),
544
+ signature: (lines[line - 1] ?? "").trim().slice(0, 200),
545
+ });
546
+ }
547
+ }
548
+ else if (cap.name === "reference") {
549
+ refs.push({ name, line });
550
+ }
551
+ }
552
+ tree.delete();
553
+ // JS/TS also wire markup by DOM name (getElementById/querySelector/classList):
554
+ // record those as name-level refs so a standalone script links to a CSS/HTML id.
555
+ if (JS_TS_EXTS.has(extname(absPath).toLowerCase())) {
556
+ for (const d of extractDomRefs(code))
557
+ refs.push({ name: d.name, line: d.line });
558
+ }
559
+ return { defs, refs, imports };
560
+ }
561
+ catch {
562
+ return null;
563
+ }
564
+ }
565
+ /**
566
+ * The last line of the JSX element an attribute belongs to.
567
+ *
568
+ * `enclosingSpan` is for declarations and climbs to the nearest one, which from inside a
569
+ * render body is the whole component — it reported a 227-line span for a single `<div>`'s
570
+ * opening tag, which would then be what `read_symbol` handed back. The element's own
571
+ * extent is the honest answer, and it is one or two parents up.
572
+ */
573
+ function jsxElementEnd(attribute) {
574
+ let node = attribute.parent;
575
+ while (node) {
576
+ if (node.type === "jsx_element" || node.type === "jsx_self_closing_element") {
577
+ return node.endPosition.row + 1;
578
+ }
579
+ // Stop at the opening tag's own boundary rather than climbing into the component.
580
+ if (node.type !== "jsx_opening_element")
581
+ break;
582
+ node = node.parent;
583
+ }
584
+ return attribute.endPosition.row + 1;
585
+ }
586
+ /**
587
+ * The navigable names in one JSX attribute, or none.
588
+ *
589
+ * Only `className` and `id` with a plain string value: those are what a person searches
590
+ * for and what a stylesheet names, so they are the landmarks worth putting on the map.
591
+ * `className={cx(...)}` and every other attribute are deliberately skipped — capturing
592
+ * every `<div>` would bury the outline it is supposed to make readable.
593
+ */
594
+ function jsxLandmarks(attributeText) {
595
+ const m = /^(className|id)\s*=\s*["']([^"'{}]+)["']$/.exec(attributeText.trim());
596
+ if (!m)
597
+ return [];
598
+ const kind = m[1] === "id" ? "id" : "class";
599
+ return m[2]
600
+ .split(/\s+/)
601
+ .filter(Boolean)
602
+ .map((name) => ({ name, kind }));
603
+ }
604
+ /** Strip surrounding quotes from a captured string-literal node's text. */
605
+ function unquote(raw) {
606
+ return raw.replace(/^["'`]|["'`]$/g, "").trim();
607
+ }
608
+ //# sourceMappingURL=treesitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treesitter.js","sourceRoot":"","sources":["../../../src/alternator/chassis/treesitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * types.ts — the typed contract for the chassis (Mindweave's code map).
3
+ *
4
+ * The whole point of doing this in TypeScript instead of a loosely-typed graph
5
+ * is that the compiler enforces the invariants:
6
+ *
7
+ * - **Branded ids** (`FileId`, `SymbolId`) are nominally distinct from plain
8
+ * strings and from each other, so you cannot pass a file path where a symbol
9
+ * id is expected — a whole class of graph-corruption bugs becomes a type error.
10
+ * - **Discriminated unions** + exhaustive `switch` (via `assertNever`) mean
11
+ * adding a symbol kind or source fails to compile until it's handled everywhere.
12
+ * - **`Confidence` is in the result type**, so every consumer is forced to know
13
+ * whether an answer is compiler-`resolved` (LSP) or `name-level` (tree-sitter)
14
+ * and defer to grep/read accordingly. The "graph is an assistant, not an
15
+ * authority" rule is a contract here, not a comment.
16
+ */
17
+ export const asFileId = (abs) => abs.split("\\").join("/");
18
+ export const makeSymbolId = (file, name, line) => `${file}#${name}@${line}`;
19
+ /** Exhaustiveness helper: a `default: assertNever(x)` fails to compile if a new
20
+ * union member is added but not handled. */
21
+ export function assertNever(x) {
22
+ throw new Error(`Unhandled case: ${JSON.stringify(x)}`);
23
+ }
24
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/alternator/chassis/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAW,CAAC;AACrF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY,EAAY,EAAE,CACjF,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAc,CAAC;AAmJxC;6CAC6C;AAC7C,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC"}