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,383 @@
1
+ /**
2
+ * workingSet.ts — the live "working set": the files the model is actively working on,
3
+ * kept CURRENT in the volatile context tail every turn.
4
+ *
5
+ * This is the fix for the re-read storm. Instead of leaving file reads in the
6
+ * transcript (where they go stale after an edit and get cleared by compaction — so the
7
+ * model re-reads and "forgets"), we keep the files the model is working on re-read
8
+ * fresh from disk each turn, at the END of the context (the boundary — best against
9
+ * lost-in-the-middle). The model therefore always has the current content of what it's
10
+ * editing and never needs to re-read it.
11
+ *
12
+ * The working CYCLE is the same for a 1-file task and a 50-file one: bounded ONLY by a
13
+ * token budget, not an arbitrary file count. Within that budget the most-recent files
14
+ * are shown in FULL; any that don't fit whole are LOCALIZED (outline + the regions the
15
+ * model has focused on) rather than dropped — so a big task keeps every touched file's
16
+ * structure, and full reads are reserved for what's actively being edited.
17
+ *
18
+ * The pure parts (selection, budgeting, rendering, line-numbering) are unit-tested;
19
+ * `buildWorkingSet` does the disk/chassis I/O around them.
20
+ */
21
+ import { promises as fs } from "node:fs";
22
+ import { chassisForPath } from "../tools/chassisMux.js";
23
+ import { relativize } from "../tools/paths.js";
24
+ import { estimateTokens } from "./compaction.js";
25
+ const env = (name, fallback) => {
26
+ const v = Number(process.env[name]);
27
+ return Number.isInteger(v) && v > 0 ? v : fallback;
28
+ };
29
+ /** Safety cap on how many touched files we even consider — NOT a "keep N" limit. The
30
+ * token budget + localization decide what actually fits; this only bounds work on a
31
+ * huge ledger so a long session doesn't stat hundreds of files each turn. */
32
+ export const WORKING_SET_MAX_CANDIDATES = env("MINDWEAVE_WORKINGSET_MAX_FILES", 40);
33
+ /**
34
+ * Total token budget for the working-set block — the ONLY real limit on how many
35
+ * files it holds (large ones are localized to fit, not dropped).
36
+ *
37
+ * WHY 8K AND NOT 20K. This block lives in the volatile tail, which is rebuilt on every
38
+ * model STEP rather than once per turn, and sits after the newest content so none of it
39
+ * is cache-eligible. At 20K a near-full working set was the single largest recurring
40
+ * cost in a session: an eight-step turn re-sent it eight times at full price, which on a
41
+ * premium provider outweighed the entire tool-schema question.
42
+ *
43
+ * Cutting it is safe because of what the budget does NOT govern. The most recently
44
+ * touched file is admitted regardless of the budget (`firstFile` below), so the file
45
+ * actually being worked on is never the one squeezed out. Files past the budget are not
46
+ * forgotten either — they stay in the read ledger and a read of them still works; they
47
+ * just stop being carried for free on every step.
48
+ */
49
+ // Raised from 8,000 to 12,000 for one reason: a 300-400 line source or page file
50
+ // measures 8,900-9,900 tokens once line-numbered, so at 8,000 the single file being
51
+ // actively edited could not fit even with the whole budget to itself. The step-cost
52
+ // argument above still holds and is why this is 12,000 rather than the 20,000 it once
53
+ // was — it buys exactly one real file and no more. For comparison: Codex CLI restores
54
+ // 5 files at 5,000 each (50,000) after a compaction, and OpenCode protects a 40,000
55
+ // token zone outright, so this remains the tightest budget of the three by a wide margin.
56
+ export const WORKING_SET_TOKENS = env("MINDWEAVE_WORKINGSET_TOKENS", 12_000);
57
+ /** Above this many tokens, a single file is localized (outline + focus) not shown whole. */
58
+ const PER_FILE_MAX_TOKENS = env("MINDWEAVE_WORKINGSET_FILE_TOKENS", 6_000);
59
+ /**
60
+ * Room held back from the most-recent file's LOCALIZED form when other files are active.
61
+ *
62
+ * The active file is exempt from the per-file cap so it can be held whole, and that
63
+ * exemption is right — it is what stops every edit re-reading it. What was wrong was
64
+ * that the exemption also applied to its localized form, which was itself unbounded, so
65
+ * one big file could spend the entire budget on an outline plus regions: measured on a
66
+ * real session, a 2,045-line stylesheet localized to 15,400 tokens against a 12,000
67
+ * budget and the component being edited vanished from the block, silently.
68
+ *
69
+ * So the FULL form still gets the whole budget (nothing about holding the active file
70
+ * whole changes), and only the localized fallback leaves a floor behind it.
71
+ */
72
+ const RUNNER_UP_RESERVE = env("MINDWEAVE_WORKINGSET_RESERVE", 3_000);
73
+ /**
74
+ * Outline entries one localized file may carry.
75
+ *
76
+ * A stylesheet's outline ran to 439 entries — 3,151 tokens, a quarter of the whole
77
+ * budget, re-sent every step — because markup extraction emitted one symbol per selector
78
+ * OCCURRENCE. That is fixed at the source in the chassis; this is the guard that keeps
79
+ * any single file's structure from crowding out the content it exists to index.
80
+ */
81
+ const OUTLINE_MAX_ENTRIES = env("MINDWEAVE_WORKINGSET_OUTLINE_ENTRIES", 120);
82
+ /** Room set aside for a localized block's own header, which is composed last (it has to
83
+ * report what actually fit) and so cannot be measured while the budget is being spent. */
84
+ const HEADER_ALLOWANCE = 80;
85
+ /** Below this many lines a trimmed focus region is not worth carrying — a handful of
86
+ * lines out of the middle of a file tells the model less than the outline already did. */
87
+ const MIN_REGION_LINES = 20;
88
+ /** The most-recently-touched files, most-recent first, capped at `max`. Pure. */
89
+ export function selectActiveFiles(reads, max) {
90
+ return [...reads.entries()]
91
+ .map(([path, record]) => ({ path, record }))
92
+ .sort((a, b) => (b.record.touchedAt ?? 0) - (a.record.touchedAt ?? 0))
93
+ .slice(0, max);
94
+ }
95
+ /** Line-numbered slice of `lines` for [from..to] (1-based, clamped). Pure. */
96
+ export function numberedRange(lines, from, to) {
97
+ const start = Math.max(1, from);
98
+ const end = Math.min(lines.length, to);
99
+ const width = String(end).length;
100
+ const out = [];
101
+ for (let i = start; i <= end; i++)
102
+ out.push(`${String(i).padStart(width)}\t${lines[i - 1] ?? ""}`);
103
+ return out.join("\n");
104
+ }
105
+ /**
106
+ * Assemble the `<working_files>` block from prepared per-file blocks (most-recent
107
+ * first) within a token budget. Returns the text and the set of paths whose FULL
108
+ * content is included. Pure.
109
+ *
110
+ * Whatever is not shown is NAMED. The header tells the model these are the files it is
111
+ * working on and not to re-read them, so a file missing from the block without a word is
112
+ * a claim that is not true — and the model obeys it by not re-reading a file it cannot
113
+ * see. The old count could not express that: it was `prepared.length - kept.length`, and
114
+ * a file skipped for lack of room never reached `prepared`, so the block reported zero
115
+ * omissions while the file being edited was absent from it.
116
+ */
117
+ export function renderWorkingFiles(prepared, budget, omitted = []) {
118
+ const kept = [];
119
+ const missing = [...omitted];
120
+ let used = 0;
121
+ for (const f of prepared) {
122
+ // The most-recent file is always kept; later ones are skipped rather than breaking
123
+ // the loop, so a small file behind a large one still gets its place.
124
+ if (kept.length > 0 && used + f.tokens > budget) {
125
+ missing.push(f.display ?? f.path);
126
+ continue;
127
+ }
128
+ kept.push(f);
129
+ used += f.tokens;
130
+ }
131
+ // Built from KEPT only: a file prepared and then dropped for budget is not on screen,
132
+ // and reporting it as visible is the one mistake that matters here.
133
+ const shownSpans = new Map(kept.map((f) => [f.path, f.shown]));
134
+ if (kept.length === 0)
135
+ return { text: "", fullPaths: new Set(), shownSpans };
136
+ const header = "These are the CURRENT contents of the files you're working on, kept up to date " +
137
+ "automatically. Edit straight from them — do NOT re-read a file shown here.";
138
+ const body = kept.map((f) => f.block).join("\n\n");
139
+ const note = missing.length
140
+ ? `\n\nNOT shown here, and not in your context — read ${missing.join(", ")} if you need ${missing.length === 1 ? "it" : "them"}.`
141
+ : "";
142
+ return {
143
+ text: `${header}\n\n${body}${note}`,
144
+ fullPaths: new Set(kept.filter((f) => f.full).map((f) => f.path)),
145
+ shownSpans,
146
+ };
147
+ }
148
+ /**
149
+ * A fingerprint of everything the block is derived from: which files are active, what
150
+ * the model has focused on in each, and their state ON DISK right now.
151
+ *
152
+ * This is what lets the rebuild be skipped without giving up the freshness guarantee.
153
+ * The block is assembled per model STEP so it can never go stale, and that matters more
154
+ * than it looks: `run_command` can write files with no tool the engine could hook, so a
155
+ * "was anything mutated?" flag would be wrong exactly when it counts. A stat of each
156
+ * active file answers the same question from the filesystem instead, at a fraction of
157
+ * the cost of re-reading and re-tokenizing them.
158
+ */
159
+ async function diskKey(active) {
160
+ const parts = await Promise.all(active.map(async ({ path, record }) => {
161
+ const focus = (record.focus ?? []).map((f) => `${f.start}-${f.end}`).join(",");
162
+ try {
163
+ const st = await fs.stat(path);
164
+ return `${path}:${st.mtimeMs}:${st.size}:${focus}`;
165
+ }
166
+ catch {
167
+ return `${path}:gone`;
168
+ }
169
+ }));
170
+ return parts.join("|");
171
+ }
172
+ /**
173
+ * Build this turn's working-set block: read the current content of the active files
174
+ * fresh from disk, keeping the freshest stat on the ledger (so read_file's
175
+ * short-circuit compares correctly), localizing any file too big for its share.
176
+ */
177
+ export async function buildWorkingSet(ctx) {
178
+ const active = selectActiveFiles(ctx.reads, WORKING_SET_MAX_CANDIDATES);
179
+ const key = await diskKey(active);
180
+ const cached = ctx.workingSetCache;
181
+ if (cached && cached.key === key)
182
+ return cached.value;
183
+ const prepared = [];
184
+ // Files that had to be left out. Threaded through to the block so the model is told,
185
+ // rather than left to infer their absence from a header that says otherwise.
186
+ const omitted = [];
187
+ let used = 0;
188
+ const contended = active.length > 1;
189
+ for (const { path, record } of active) {
190
+ let stat;
191
+ try {
192
+ stat = await fs.stat(path);
193
+ }
194
+ catch {
195
+ continue; // file gone since it was touched — skip
196
+ }
197
+ if (!stat.isFile())
198
+ continue;
199
+ let content;
200
+ try {
201
+ content = await fs.readFile(path, "utf8");
202
+ }
203
+ catch {
204
+ continue;
205
+ }
206
+ if (looksBinary(content))
207
+ continue;
208
+ // Keep the ledger's stat current so a later read of this file is recognized as
209
+ // unchanged (the read short-circuit relies on matching mtime/size).
210
+ ctx.reads.set(path, { ...record, mtimeMs: stat.mtimeMs, size: stat.size });
211
+ const lines = content.split(/\r?\n/);
212
+ const display = relativize(ctx, path);
213
+ const fullBlock = `### ${display} (${lines.length} line${lines.length === 1 ? "" : "s"})\n${numberedRange(lines, 1, lines.length)}`;
214
+ const fullTokens = estimateTokens(fullBlock);
215
+ const firstFile = prepared.length === 0;
216
+ const remaining = Math.max(0, WORKING_SET_TOKENS - used);
217
+ // The active file may spend the whole budget on its FULL content; everything after it
218
+ // pays the per-file cap. Its localized fallback is the one that leaves a floor.
219
+ const share = firstFile ? remaining : Math.min(PER_FILE_MAX_TOKENS, remaining);
220
+ const localShare = firstFile && contended ? Math.min(share, WORKING_SET_TOKENS - RUNNER_UP_RESERVE) : share;
221
+ // Show the file's FULL content when it fits its share, LOCALIZED (outline + focused
222
+ // regions) when it doesn't. Either way the file is REPRESENTED, so the cycle is the
223
+ // same for a small task and a large one.
224
+ if (fullTokens <= share) {
225
+ prepared.push({
226
+ path,
227
+ display,
228
+ block: fullBlock,
229
+ tokens: fullTokens,
230
+ full: true,
231
+ shown: [{ start: 1, end: lines.length }],
232
+ });
233
+ used += fullTokens;
234
+ continue;
235
+ }
236
+ // Localization is bounded by the share, and the share is by definition smaller than
237
+ // the full form that failed to fit it — so localizing can no longer cost MORE than
238
+ // showing the file whole. It used to: with nothing bounding it, a stylesheet whose
239
+ // focus already spanned it localized to 15,354 tokens against a 12,060-token file,
240
+ // because the outline was added on top of regions that already covered it. That is
241
+ // prevented structurally here rather than detected afterwards.
242
+ const local = await localizeBig(ctx, path, display, lines, record.focus, localShare);
243
+ const localTokens = estimateTokens(local.block);
244
+ if (used + localTokens <= WORKING_SET_TOKENS) {
245
+ prepared.push({ path, display, block: local.block, tokens: localTokens, full: false, shown: local.shown });
246
+ used += localTokens;
247
+ continue;
248
+ }
249
+ omitted.push(display);
250
+ }
251
+ const block = renderWorkingFiles(prepared, WORKING_SET_TOKENS, omitted);
252
+ ctx.workingSetCache = { key, value: block };
253
+ return block;
254
+ }
255
+ /**
256
+ * A large file's block: its structure, plus as many of the model's focused regions as
257
+ * `budget` allows, and an honest statement of what that adds up to.
258
+ *
259
+ * Everything here is bounded, because an unbounded localization is what let one file
260
+ * take the whole block. What does not fit is named rather than dropped in silence, and
261
+ * the header reports the exact ranges held — without that the model cannot tell which
262
+ * lines it already has, so it guesses an offset and reads blind.
263
+ */
264
+ async function localizeBig(ctx, path, display, lines, focus, budget) {
265
+ const total = lines.length;
266
+ const room = Math.max(0, budget - HEADER_ALLOWANCE);
267
+ let used = 0;
268
+ // Structure first: the cheapest thing that tells the model where to look.
269
+ let outlineText = "";
270
+ let outlineNote = "";
271
+ const chassis = chassisForPath(ctx, path);
272
+ if (chassis) {
273
+ try {
274
+ const entries = flattenOutline(await chassis.outline(path));
275
+ if (entries.length > 0) {
276
+ const kept = entries.slice(0, OUTLINE_MAX_ENTRIES);
277
+ const text = "outline:\n" + kept.map((e) => e.text).join("\n");
278
+ const cost = estimateTokens(text);
279
+ if (cost <= room) {
280
+ outlineText = text;
281
+ used += cost;
282
+ if (entries.length > kept.length)
283
+ outlineNote += `, ${entries.length - kept.length} further symbols not listed`;
284
+ // An outline that simply stops looks exactly like a complete one. A component
285
+ // file's render body has no declarations in it, so the outline goes silent over
286
+ // the part most likely to be edited — say where it actually reaches.
287
+ const reach = kept[kept.length - 1].line;
288
+ if (reach < total * 0.9)
289
+ outlineNote += `, outline reaches L${reach} of ${total}`;
290
+ }
291
+ }
292
+ }
293
+ catch {
294
+ /* no outline — fine */
295
+ }
296
+ }
297
+ const render = (r) => `lines ${r.start}-${r.end}:\n${numberedRange(lines, r.start, r.end)}`;
298
+ // Each wanted region, and how far into it we ended up going. `held: null` means the
299
+ // region is not on screen at all. Everything the header says is derived from this, so
300
+ // the block's claims and its contents cannot drift apart however much trimming happens.
301
+ const regions = (focus ?? []).map((s) => ({
302
+ want: { start: Math.max(1, s.start - 2), end: Math.min(total, s.end + 2) },
303
+ held: null,
304
+ }));
305
+ for (const r of regions) {
306
+ const left = room - used;
307
+ const cost = estimateTokens(render(r.want));
308
+ if (cost <= left) {
309
+ r.held = r.want.end;
310
+ used += cost;
311
+ continue;
312
+ }
313
+ // TRIM rather than drop. A region that does not fit whole is still worth its first
314
+ // lines — dropping it left the block with a header and nothing in it, which is the
315
+ // one outcome worse than showing less than was asked for.
316
+ const perLine = Math.max(1, cost / (r.want.end - r.want.start + 1));
317
+ const canFit = Math.floor(left / perLine);
318
+ if (canFit < MIN_REGION_LINES)
319
+ continue;
320
+ r.held = Math.min(r.want.end, r.want.start + canFit - 1);
321
+ used += estimateTokens(render({ start: r.want.start, end: r.held }));
322
+ }
323
+ const shownOf = () => regions.filter((r) => r.held !== null).map((r) => ({ start: r.want.start, end: r.held }));
324
+ const compose = () => {
325
+ const shown = shownOf();
326
+ const missing = regions.flatMap((r) => r.held === null ? [r.want] : r.held < r.want.end ? [{ start: r.held + 1, end: r.want.end }] : []);
327
+ const held = shown.length
328
+ ? `holding lines ${shown.map((r) => `${r.start}-${r.end}`).join(", ")} of ${total}`
329
+ : `structure only, no lines held`;
330
+ const rest = missing.length
331
+ ? ` Lines ${missing.map((r) => `${r.start}-${r.end}`).join(", ")} did not fit — read them if you need them.`
332
+ : "";
333
+ const body = [...(outlineText ? [outlineText] : []), ...shown.map(render)];
334
+ const header = `### ${display} (${total} lines — too large to keep whole; ${held}${outlineNote}. ` +
335
+ `Use read_symbol or a read_file range for anything else.)${rest}`;
336
+ return [header, ...body].join("\n\n");
337
+ };
338
+ // Enforce the bound EXACTLY rather than trusting the allowance. The header cannot be
339
+ // measured while the budget is being spent — it has to report what ended up fitting —
340
+ // so any reserve for it is a guess, and overshooting by even seventy tokens meant the
341
+ // whole file was dropped from the block. SHRINK, never drop: give back lines from the
342
+ // last held region until it fits, and only let a region go once what is left of it is
343
+ // too small to be worth carrying.
344
+ let block = compose();
345
+ for (let guard = 0; estimateTokens(block) > budget && guard < 24; guard++) {
346
+ const last = [...regions].reverse().find((r) => r.held !== null);
347
+ if (!last) {
348
+ if (!outlineText)
349
+ break; // nothing left to give back
350
+ outlineText = "";
351
+ outlineNote = "";
352
+ }
353
+ else {
354
+ const over = estimateTokens(block) - budget;
355
+ const lineCount = last.held - last.want.start + 1;
356
+ const perLine = Math.max(1, estimateTokens(render({ start: last.want.start, end: last.held })) / lineCount);
357
+ const give = Math.max(1, Math.ceil(over / perLine));
358
+ const end = last.held - give;
359
+ last.held = end - last.want.start + 1 >= MIN_REGION_LINES ? end : null;
360
+ }
361
+ block = compose();
362
+ }
363
+ return { block, shown: shownOf() };
364
+ }
365
+ /** An outline flattened to one indented line per symbol, depth-first. */
366
+ function flattenOutline(entries, depth = 0) {
367
+ const out = [];
368
+ for (const e of entries) {
369
+ out.push({ text: `${" ".repeat(depth)}${e.kind} ${e.name} (L${e.line})`, line: e.line });
370
+ if (e.children?.length)
371
+ out.push(...flattenOutline(e.children, depth + 1));
372
+ }
373
+ return out;
374
+ }
375
+ /** A NUL byte in the first chunk is a cheap "not text" signal. */
376
+ function looksBinary(text) {
377
+ const n = Math.min(text.length, 8192);
378
+ for (let i = 0; i < n; i++)
379
+ if (text.charCodeAt(i) === 0)
380
+ return true;
381
+ return false;
382
+ }
383
+ //# sourceMappingURL=workingSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workingSet.js","sourceRoot":"","sources":["../../src/memory/workingSet.ts"],"names":[],"mappings":"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"}