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,96 @@
1
+ /**
2
+ * startupArgs.ts — the flags handled before the UI exists.
3
+ *
4
+ * `mindweave --version` used to ignore the flag, start the whole terminal UI, and
5
+ * never exit. Piped or run without a TTY it then died on Ink's raw-mode error. That
6
+ * is the first command anyone runs against a new CLI, and packaging tools run it
7
+ * unattended, so hanging there is worse than it sounds.
8
+ *
9
+ * Parsing is a pure function returning what to print, so it is testable without
10
+ * spawning a process, and `index.ts` keeps the one side effect: print and exit.
11
+ *
12
+ * Deliberately tiny. Mindweave takes no launch CONFIGURATION options — it roots at the
13
+ * current directory and everything else is set in `~/.mindweave/.env` or in-session, and
14
+ * inventing flags here would create a second place to configure the same things. What
15
+ * does belong is the handful of things you ask the command to DO instead of starting a
16
+ * session: report its version, explain itself, or repair a terminal a previous run left
17
+ * broken.
18
+ */
19
+ import { appVersion } from "./version.js";
20
+ /** `mindweave --version` output: the bare version, which is what scripts parse. */
21
+ export function versionText() {
22
+ const v = appVersion();
23
+ return v ? `mindweave ${v}` : "mindweave (version unknown)";
24
+ }
25
+ /** `mindweave --help` output. */
26
+ export function helpText() {
27
+ const v = appVersion();
28
+ return [
29
+ `Mindweave 1${v ? ` (v${v})` : ""} — a terminal coding agent that works inside your repository.`,
30
+ "",
31
+ "Usage:",
32
+ " mindweave start a session in the current directory",
33
+ " mindweave --help show this and exit",
34
+ " mindweave --version print the version and exit",
35
+ " mindweave --reset-terminal put a terminal back in order after a crash",
36
+ "",
37
+ "If a run ends badly the terminal can be left reporting mouse events, so every",
38
+ "scroll writes something like ^[[<64;36;23M into your shell. --reset-terminal",
39
+ "stops that. It is safe to run at any time.",
40
+ "",
41
+ "Setup:",
42
+ " Put your model API key in ~/.mindweave/.env, for example:",
43
+ " DEEPSEEK_API_KEY=your-key-here",
44
+ " ANTHROPIC_API_KEY=your-key-here",
45
+ " A project .env or an exported shell variable works too.",
46
+ "",
47
+ "Once running, type /help for the commands available in a session,",
48
+ "and press shift+tab to change how much rein the agent has.",
49
+ "",
50
+ "Windows only for now. Docs and issues:",
51
+ " https://github.com/mindweave-cli/Mindweave",
52
+ ].join("\n");
53
+ }
54
+ /**
55
+ * Decide what a launch should do (pure).
56
+ *
57
+ * Only exact flags count. A stray argument is NOT an error: the session roots at the
58
+ * current directory regardless, and refusing to start over an argument nobody
59
+ * documented would be a worse failure than ignoring it.
60
+ */
61
+ export function parseStartupArgs(argv) {
62
+ for (const arg of argv) {
63
+ if (arg === "--help" || arg === "-h")
64
+ return { kind: "print", text: helpText() };
65
+ if (arg === "--version" || arg === "-v")
66
+ return { kind: "print", text: versionText() };
67
+ // No short form on purpose: this is typed once in a blue moon, by someone reading it
68
+ // out of --help, and a one-letter alias for it would be a trap next to -h and -v.
69
+ if (arg === "--reset-terminal")
70
+ return { kind: "reset" };
71
+ }
72
+ return { kind: "run" };
73
+ }
74
+ /**
75
+ * Whether there is a terminal to read keystrokes from.
76
+ *
77
+ * The UI puts stdin into raw mode to read a keypress. Where stdin is a pipe or a
78
+ * redirect there is no raw mode to enter, and the failure arrives from inside the
79
+ * renderer as a stack trace through React internals: it names none of the things a
80
+ * reader could act on, and the process still exits 0, so a script calling it reads
81
+ * success. Asked here as a plain question about the stream, so the entry point can
82
+ * say what is wrong and fail in a way a script can see.
83
+ */
84
+ export function hasInteractiveInput(stdin) {
85
+ return stdin.isTTY === true;
86
+ }
87
+ /** Shown when there is no terminal to read from. */
88
+ export const NO_TERMINAL_MESSAGE = [
89
+ "Mindweave is an interactive terminal application and needs a terminal to read from.",
90
+ "Its input is a pipe or a redirect, so there is no keyboard to attach to.",
91
+ "",
92
+ "Run it in a terminal window, from the folder you want to work in.",
93
+ "--help and --version work anywhere.",
94
+ "",
95
+ ].join(String.fromCharCode(10));
96
+ //# sourceMappingURL=startupArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startupArgs.js","sourceRoot":"","sources":["../../src/cli/startupArgs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAY1C,mFAAmF;AACnF,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC;AAC9D,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,QAAQ;IACtB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,OAAO;QACL,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,+DAA+D;QAChG,EAAE;QACF,QAAQ;QACR,0EAA0E;QAC1E,oDAAoD;QACpD,4DAA4D;QAC5D,4EAA4E;QAC5E,EAAE;QACF,+EAA+E;QAC/E,8EAA8E;QAC9E,4CAA4C;QAC5C,EAAE;QACF,QAAQ;QACR,6DAA6D;QAC7D,oCAAoC;QACpC,qCAAqC;QACrC,2DAA2D;QAC3D,EAAE;QACF,mEAAmE;QACnE,4DAA4D;QAC5D,EAAE;QACF,wCAAwC;QACxC,8CAA8C;KAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAuB;IACtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QACjF,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;QACvF,qFAAqF;QACrF,kFAAkF;QAClF,IAAI,GAAG,KAAK,kBAAkB;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA0B;IAC5D,OAAO,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,qFAAqF;IACrF,0EAA0E;IAC1E,EAAE;IACF,mEAAmE;IACnE,qCAAqC;IACrC,EAAE;CACH,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * terminalRestore.ts — the escape sequences that put a terminal back the way we found it.
3
+ *
4
+ * Owned in one place because two callers write them and they must not drift: the app's
5
+ * own exit path (`altScreen.ts`), and `mindweave --reset-terminal`, which exists for the
6
+ * case where that exit path never ran.
7
+ *
8
+ * That case is real, and it cannot be handled from inside the process it happens to. A
9
+ * V8 fatal out-of-memory calls `abort()`, and `abort` runs no exit handler, no signal
10
+ * handler and no `finally` block; the same is true of SIGKILL and of a force-quit from
11
+ * the task manager. The process simply stops, mid-frame, with wheel reporting still
12
+ * switched on. From then on every scroll and click writes `^[[<64;36;23M` into whichever
13
+ * shell comes next, and closing the app does not help because the app is already gone.
14
+ * The terminal is waiting for a byte that nobody is left to send, so it has to be sent
15
+ * later, by hand.
16
+ */
17
+ /** Wheel reporting off: the SGR encoding (1006) first, then reporting itself (1000). */
18
+ export const MOUSE_OFF = "\x1b[?1006l\x1b[?1000l";
19
+ /** Leave the alternate screen buffer, revealing the shell scrollback underneath. */
20
+ export const ALT_SCREEN_OFF = "\x1b[?1049l";
21
+ /** Show the cursor again. */
22
+ export const SHOW_CURSOR = "\x1b[?25h";
23
+ /**
24
+ * Everything the app switches on, switched back off, in the order a half-dead terminal
25
+ * wants it: stop the reporting that is actively producing garbage, then restore the
26
+ * screen buffer, then the cursor.
27
+ *
28
+ * Every sequence here is idempotent, so sending the lot to a terminal that was never
29
+ * broken costs three dozen bytes and changes nothing. That is what makes it safe to send
30
+ * without first working out which parts are actually needed — and there is no way to
31
+ * work that out anyway, since the terminal will not tell us what modes it is in.
32
+ */
33
+ export const TERMINAL_RESTORE = MOUSE_OFF + ALT_SCREEN_OFF + SHOW_CURSOR;
34
+ //# sourceMappingURL=terminalRestore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminalRestore.js","sourceRoot":"","sources":["../../src/cli/terminalRestore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,wFAAwF;AACxF,MAAM,CAAC,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAElD,oFAAoF;AACpF,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C,6BAA6B;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEvC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,CAAC"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * toolDisplay.ts — map a Mindweave tool call to its display name + argument.
3
+ *
4
+ * A compact tool header: a bold verb-noun name and the one telling
5
+ * argument in parens — `Update(home.html)`, `Search(refreshToken)`, `Run(npm
6
+ * test)`. Pure, display-only (never sent to a model), and deterministic from the
7
+ * tool name + parsed args.
8
+ */
9
+ /** Raw tool name → the bold display name shown in the row. */
10
+ const DISPLAY_NAME = {
11
+ read_file: "Read",
12
+ read_symbol: "Read",
13
+ edit: "Update",
14
+ write_file: "Write",
15
+ search: "Search",
16
+ run_command: "Run",
17
+ outline: "Map",
18
+ definition: "Map",
19
+ references: "Map",
20
+ relevant: "Map",
21
+ diagnostics: "Check",
22
+ web_fetch: "Fetch",
23
+ web_search: "WebSearch",
24
+ screenshot: "WindowCapture",
25
+ use_skill: "Skill",
26
+ create_skill: "Skill",
27
+ todo_write: "Todo",
28
+ add_directory: "Add",
29
+ link_workspace: "Link",
30
+ remember_rule: "Rule",
31
+ forbid_path: "Forbid",
32
+ spawn_subagent: "Subagent",
33
+ shells: "Shell",
34
+ // Tools the redesign originally missed. Without an entry each fell through to the
35
+ // capitalize-the-raw-name fallback and rendered as `Replace_symbol_body` —
36
+ // snake_case in a UI that has none anywhere else. TOOL_DISPLAY_COVERAGE in
37
+ // toolDisplay.test.ts now fails the build if a registered tool is missing here.
38
+ replace_symbol_body: "Update",
39
+ save_memory: "Remember",
40
+ sessions: "Session",
41
+ workspace: "Workspace",
42
+ kill_shell: "Shell",
43
+ add_mcp_server: "MCP",
44
+ mcp_resource: "MCP",
45
+ // "Tools", not "MCP". It searches BOTH pools — the deferred native tools and any MCP
46
+ // catalog — and the row was reading "MCP(sessions)" for a search that loaded three of
47
+ // Mindweave's own tools and never touched a server.
48
+ find_tools: "Tools",
49
+ governor: "Governor",
50
+ exit_plan: "Plan",
51
+ ask_user: "Ask",
52
+ web: "Web",
53
+ };
54
+ /** What an unrecognized tool name renders as. A model can call a tool that does not
55
+ * exist (a hallucinated `index_results`, say). The row still has to appear — the call
56
+ * happened and it failed — but it renders under a plain English name with the raw
57
+ * name as its argument, rather than title-casing whatever the model invented. */
58
+ export const UNKNOWN_TOOL = "Unknown tool";
59
+ // Consecutive calls to these fold into ONE row (see ToolGroup) rather than
60
+ // stacking a line each — a burst of reads is "Read 9 files" with the files
61
+ // listed under it.
62
+ //
63
+ // Deliberately narrow. `search` is not here, and does not render at all — like the
64
+ // code-intel lookups (outline/definition/references/relevant), it is how the agent
65
+ // finds its way around rather than work done to the project, and the user asked for
66
+ // it to stay out of the stream. `todo_write` is silent for the same reason: its
67
+ // reader is the model, not the user. Mutating tools (edit/write/run) were never
68
+ // grouped and still keep their own row with the diff/output.
69
+ const GROUPABLE = new Set([
70
+ "read_file",
71
+ "read_symbol",
72
+ // Background-shell status checks: silent, and a model tends to POLL them in a loop
73
+ // while waiting on a build — so they fold into the group and their repeats collapse
74
+ // (see collapseAdjacent) instead of stacking a row per poll. kill_shell mutates → stays.
75
+ "shells",
76
+ ]);
77
+ // `diagnostics` was here, and grouping it was the wrong answer to the right problem.
78
+ // A burst of them after an edit did stack a wall of rows — but folding them into the
79
+ // group threw away the caret block each one carries (a group row shows a label, never
80
+ // a detail), so the one case worth seeing, an actual compiler error with its source
81
+ // line and squiggle, was the case that got hidden. It now stays ungrouped and reports
82
+ // nothing at all when it finds nothing (`quiet`), which removes the wall outright.
83
+ /** Whether a tool call should fold into the discovery group rather than its own row. */
84
+ export function isGroupable(name) {
85
+ return GROUPABLE.has(name);
86
+ }
87
+ const TOOL_KIND = {
88
+ read_file: "read",
89
+ read_symbol: "read",
90
+ search: "search",
91
+ outline: "search",
92
+ definition: "search",
93
+ references: "search",
94
+ relevant: "search",
95
+ edit: "edit",
96
+ replace_symbol_body: "edit",
97
+ write_file: "write",
98
+ run_command: "run",
99
+ diagnostics: "check",
100
+ spawn_subagent: "agent",
101
+ shells: "run",
102
+ // web_fetch and web_search are both "reaching out to the web" — same family,
103
+ // distinct from codebase "search". Was mislabeled "search" before.
104
+ web_fetch: "websearch",
105
+ web_search: "websearch",
106
+ web: "websearch",
107
+ screenshot: "screenshot",
108
+ kill_shell: "run",
109
+ governor: "governor",
110
+ // The MCP family: finding an external server's tools, reading its data, adding one.
111
+ // Pink like the servers' own tools, since that is what they are all about.
112
+ find_tools: "mcp",
113
+ mcp_resource: "mcp",
114
+ add_mcp_server: "mcp",
115
+ // everything else (todo, skills, rules, workspace) → "meta"
116
+ };
117
+ /** The action category for a raw tool name — an MCP call (`mcp__server__tool`) is
118
+ * detected by prefix rather than a static map entry, since the tool name is
119
+ * generated per-server (see src/mcp/manager.ts). Defaults to bookkeeping "meta". */
120
+ export function toolKind(name) {
121
+ if (name.startsWith("mcp__"))
122
+ return "mcp";
123
+ return TOOL_KIND[name] ?? "meta";
124
+ }
125
+ /** Terminal colour per action kind — a blue family, truecolor hex (terminals that
126
+ * can't render it downsample gracefully). Red is reserved for the error state. */
127
+ export const KIND_COLOR = {
128
+ read: "#7cc4ff", // light blue — looking at code
129
+ search: "#4a90d9", // blue — searching / mapping the codebase
130
+ edit: "#3b82f6", // vivid blue — changing code
131
+ write: "#38bdf8", // sky — creating a file
132
+ run: "#6366f1", // indigo — running a command
133
+ check: "#22d3ee", // cyan — diagnostics / verifying
134
+ agent: "#a78bfa", // violet — a spawned sub-agent (set apart from the blue tool family)
135
+ websearch: "#2dd4bf", // teal — reaching outside the machine (web search / fetch)
136
+ screenshot: "#facc15", // amber — a capture, set apart since it's visual not textual
137
+ mcp: "#f472b6", // pink — an external server's own tool, not one of ours
138
+ checkpoint: "#94a3b8", // slate — housekeeping you'd want to notice (a rollback)
139
+ governor: "#fb923c", // orange — a policy decision, not an ordinary tool result
140
+ meta: "#60a5fa", // soft blue — bookkeeping (todo, skills, rules)
141
+ };
142
+ /** The dot colour for a failed tool / failed test. */
143
+ export const ERROR_COLOR = "#ff5f56";
144
+ /** Build the `Name(arg)` display parts for a tool call. */
145
+ export function toolDisplay(name, args) {
146
+ const kind = toolKind(name);
147
+ // mcp__<server>__<tool> has no static DISPLAY_NAME entry (the name is generated
148
+ // per-server, see src/mcp/manager.ts) — parse it back into "MCPServer(server)"
149
+ // the way the tool header for everything else reads.
150
+ if (name.startsWith("mcp__")) {
151
+ const [, server] = name.split("__");
152
+ return { name: "MCPServer", arg: server || undefined, kind };
153
+ }
154
+ // Every REGISTERED tool has an entry above (enforced by test), so reaching the
155
+ // fallback means the model named a tool that does not exist.
156
+ const known = DISPLAY_NAME[name];
157
+ if (!known)
158
+ return { name: UNKNOWN_TOOL, arg: name, kind: "meta" };
159
+ const display = known;
160
+ // `search` is quiet and never renders, but it still resolves a name/arg for the
161
+ // sub-agent rail and for any future surface — and it takes either argument.
162
+ if (name === "search") {
163
+ return { name: display, arg: str(args.pattern) || str(args.files) || str(args.path) || undefined, kind };
164
+ }
165
+ if (name === "run_command") {
166
+ // The command goes in the HEADER, like every other row's subject: `Run(npm test)`
167
+ // beside `Write(app.ts)` and `Read(index.ts)`. It used to be a bare title —
168
+ // "Executed shell command" — with the command on a `$` row below it, which read as
169
+ // a sentence in a column of verb-noun names and took three rows to say what the
170
+ // others say in one.
171
+ //
172
+ // Passed WHOLE, not clipped. The old 48-character clip here is what forced the
173
+ // command onto its own row in the first place; ToolLine fits the header to the
174
+ // real terminal width and only trims when it genuinely does not fit, and the `$`
175
+ // row comes back for exactly that case.
176
+ //
177
+ // The timeout marker appears only when the model asked for one. A marker on every
178
+ // command would say nothing; this exists to explain a row allowed to take longer.
179
+ const t = typeof args.timeout === "number" && Number.isFinite(args.timeout) ? args.timeout : undefined;
180
+ return {
181
+ name: display,
182
+ arg: str(args.command) || undefined,
183
+ kind,
184
+ ...(t ? { meta: `[Timeout: ${Math.round(t / 1000)}s]` } : {}),
185
+ };
186
+ }
187
+ if (name === "web_fetch")
188
+ return { name: display, arg: clip(str(args.url), 48) || undefined, kind };
189
+ if (name === "web_search")
190
+ return { name: display, arg: clip(str(args.query), 48) || undefined, kind };
191
+ if (name === "screenshot")
192
+ return { name: display, arg: str(args.window) || undefined, kind };
193
+ if (name === "spawn_subagent")
194
+ return { name: display, arg: clip(str(args.task), 48) || undefined, kind };
195
+ // `paths` is a LIST — read_file takes several files in one call, and the row has to
196
+ // say which. One file reads as its name; several read as a count, because four
197
+ // basenames do not fit a header and the group below already lists them.
198
+ const many = Array.isArray(args.paths) ? args.paths.filter((v) => typeof v === "string") : [];
199
+ const path = many.length > 0 ? (many.length === 1 ? (many[0] ?? "") : "") : str(args.path);
200
+ const detail = many.length > 1
201
+ ? `${many.length} files`
202
+ : path
203
+ ? base(path)
204
+ : str(args.symbol) || str(args.name) || str(args.query) || str(args.label);
205
+ return { name: display, arg: detail || undefined, kind };
206
+ }
207
+ function str(v) {
208
+ return typeof v === "string" ? v : "";
209
+ }
210
+ /** A path's last segment, so rows stay short: `src/a/session.ts` → `session.ts`. */
211
+ function base(p) {
212
+ const parts = p.split(/[\\/]/).filter(Boolean);
213
+ return parts.length > 0 ? parts[parts.length - 1] : p;
214
+ }
215
+ function clip(s, max) {
216
+ const flat = s.replace(/\s+/g, " ").trim();
217
+ return flat.length <= max ? flat : flat.slice(0, max - 1) + "…";
218
+ }
219
+ //# sourceMappingURL=toolDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolDisplay.js","sourceRoot":"","sources":["../../src/cli/toolDisplay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ // Present-continuous verb for a block that belongs to the turn still in progress,
2
+ // so a row reads "Reading home.html" while Mindweave works and becomes "Read
3
+ // home.html" when the turn ends. The block itself never changes shape — the verb
4
+ // is the only thing that moves, in place (see activeForm / the `live` flag).
5
+ //
6
+ // Only names with a natural continuous form are listed. Anything else falls back
7
+ // to itself, which keeps the rule honest: a header may stay identical, but it may
8
+ // never mutate into a DIFFERENT word or grow a body.
9
+ export const ACTIVE_FORM = {
10
+ Read: "Reading",
11
+ Update: "Updating",
12
+ Write: "Writing",
13
+ Search: "Searching",
14
+ Glob: "Finding",
15
+ List: "Listing",
16
+ Run: "Running",
17
+ Map: "Mapping",
18
+ Fetch: "Fetching",
19
+ Shell: "Checking",
20
+ Check: "Checking",
21
+ Add: "Adding",
22
+ Link: "Linking",
23
+ };
24
+ /** The verb a tool row shows: present-continuous while its turn is live, the
25
+ * plain display name once the turn has ended. */
26
+ export function activeForm(name, live) {
27
+ return live ? ACTIVE_FORM[name] ?? name : name;
28
+ }
29
+ /** What a discovery/rail item shows: while it runs, a present-tense line ("Reading
30
+ * home.html"); once it resolves, its tool-authored result ("Read home.html (1747
31
+ * lines)"), capitalized for the list. Falls back to name + argument if there's no
32
+ * result. */
33
+ export function itemLabel(it) {
34
+ if (it.status === "running") {
35
+ const verb = ACTIVE_FORM[it.name] ?? it.name;
36
+ return it.arg ? `${verb} ${it.arg}` : verb;
37
+ }
38
+ if (it.note)
39
+ return it.note.charAt(0).toUpperCase() + it.note.slice(1);
40
+ return it.arg ? `${it.name} ${it.arg}` : it.name;
41
+ }
42
+ /**
43
+ * Fold consecutive items with the SAME label into one row carrying a count. Adjacent
44
+ * only — a different call in between breaks the run — so this never hides distinct
45
+ * work, it only silences a repeated poll/read. The representative keeps the latest
46
+ * item (so status reflects the most recent), and any error in the run is remembered.
47
+ */
48
+ export function collapseAdjacent(items) {
49
+ const out = [];
50
+ for (const it of items) {
51
+ const label = itemLabel(it);
52
+ const last = out[out.length - 1];
53
+ if (last && last.label === label) {
54
+ last.count += 1;
55
+ last.item = it;
56
+ if (it.status === "error")
57
+ last.anyError = true;
58
+ }
59
+ else {
60
+ out.push({ item: it, label, count: 1, anyError: it.status === "error" });
61
+ }
62
+ }
63
+ return out;
64
+ }
65
+ //# sourceMappingURL=toolItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolItems.js","sourceRoot":"","sources":["../../src/cli/toolItems.ts"],"names":[],"mappings":"AAgBA,kFAAkF;AAClF,6EAA6E;AAC7E,iFAAiF;AACjF,6EAA6E;AAC7E,EAAE;AACF,iFAAiF;AACjF,kFAAkF;AAClF,qDAAqD;AACrD,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;kDACkD;AAClD,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAa;IACpD,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED;;;cAGc;AACd,MAAM,UAAU,SAAS,CAAC,EAAiB;IACzC,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;QAC7C,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IACD,IAAI,EAAE,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;AACnD,CAAC;AAWD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACf,IAAI,EAAE,CAAC,MAAM,KAAK,OAAO;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}