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.
- package/LICENSE +190 -0
- package/README.md +171 -14
- package/dist/alternator/chassis/cache.js +47 -0
- package/dist/alternator/chassis/cache.js.map +1 -0
- package/dist/alternator/chassis/domRefs.js +53 -0
- package/dist/alternator/chassis/domRefs.js.map +1 -0
- package/dist/alternator/chassis/extractWorker.js +65 -0
- package/dist/alternator/chassis/extractWorker.js.map +1 -0
- package/dist/alternator/chassis/graph.js +221 -0
- package/dist/alternator/chassis/graph.js.map +1 -0
- package/dist/alternator/chassis/index.js +463 -0
- package/dist/alternator/chassis/index.js.map +1 -0
- package/dist/alternator/chassis/isolation.js +336 -0
- package/dist/alternator/chassis/isolation.js.map +1 -0
- package/dist/alternator/chassis/langCases.js +69 -0
- package/dist/alternator/chassis/langCases.js.map +1 -0
- package/dist/alternator/chassis/lsp.js +469 -0
- package/dist/alternator/chassis/lsp.js.map +1 -0
- package/dist/alternator/chassis/markup.js +262 -0
- package/dist/alternator/chassis/markup.js.map +1 -0
- package/dist/alternator/chassis/provision.js +198 -0
- package/dist/alternator/chassis/provision.js.map +1 -0
- package/dist/alternator/chassis/rank.js +72 -0
- package/dist/alternator/chassis/rank.js.map +1 -0
- package/dist/alternator/chassis/servers.js +215 -0
- package/dist/alternator/chassis/servers.js.map +1 -0
- package/dist/alternator/chassis/treesitter.js +608 -0
- package/dist/alternator/chassis/treesitter.js.map +1 -0
- package/dist/alternator/chassis/types.js +24 -0
- package/dist/alternator/chassis/types.js.map +1 -0
- package/dist/alternator/lane.js +67 -0
- package/dist/alternator/lane.js.map +1 -0
- package/dist/cli/App.js +2586 -0
- package/dist/cli/App.js.map +1 -0
- package/dist/cli/altScreen.js +67 -0
- package/dist/cli/altScreen.js.map +1 -0
- package/dist/cli/approvalChannel.js +72 -0
- package/dist/cli/approvalChannel.js.map +1 -0
- package/dist/cli/attachments.js +188 -0
- package/dist/cli/attachments.js.map +1 -0
- package/dist/cli/bootstrap.js +279 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/chatAnchor.js +94 -0
- package/dist/cli/chatAnchor.js.map +1 -0
- package/dist/cli/commandArgs.js +79 -0
- package/dist/cli/commandArgs.js.map +1 -0
- package/dist/cli/commandRoute.js +78 -0
- package/dist/cli/commandRoute.js.map +1 -0
- package/dist/cli/compaction.js +69 -0
- package/dist/cli/compaction.js.map +1 -0
- package/dist/cli/components/ApprovalBox.js +100 -0
- package/dist/cli/components/ApprovalBox.js.map +1 -0
- package/dist/cli/components/BlockView.js +128 -0
- package/dist/cli/components/BlockView.js.map +1 -0
- package/dist/cli/components/FirstRunFrame.js +41 -0
- package/dist/cli/components/FirstRunFrame.js.map +1 -0
- package/dist/cli/components/KeyManager.js +197 -0
- package/dist/cli/components/KeyManager.js.map +1 -0
- package/dist/cli/components/KeySetup.js +125 -0
- package/dist/cli/components/KeySetup.js.map +1 -0
- package/dist/cli/components/MenuFrame.js +24 -0
- package/dist/cli/components/MenuFrame.js.map +1 -0
- package/dist/cli/components/Picker.js +82 -0
- package/dist/cli/components/Picker.js.map +1 -0
- package/dist/cli/components/PromptInput.js +509 -0
- package/dist/cli/components/PromptInput.js.map +1 -0
- package/dist/cli/components/SubagentView.js +86 -0
- package/dist/cli/components/SubagentView.js.map +1 -0
- package/dist/cli/components/ToolGroup.js +60 -0
- package/dist/cli/components/ToolGroup.js.map +1 -0
- package/dist/cli/components/ToolLine.js +123 -0
- package/dist/cli/components/ToolLine.js.map +1 -0
- package/dist/cli/components/TrustGate.js +37 -0
- package/dist/cli/components/TrustGate.js.map +1 -0
- package/dist/cli/costView.js +40 -0
- package/dist/cli/costView.js.map +1 -0
- package/dist/cli/frameRate.js +30 -0
- package/dist/cli/frameRate.js.map +1 -0
- package/dist/cli/framebuffer/paint.js +165 -0
- package/dist/cli/framebuffer/paint.js.map +1 -0
- package/dist/cli/framebuffer/parse.js +266 -0
- package/dist/cli/framebuffer/parse.js.map +1 -0
- package/dist/cli/framebuffer/screen.js +196 -0
- package/dist/cli/framebuffer/screen.js.map +1 -0
- package/dist/cli/framebuffer/writer.js +139 -0
- package/dist/cli/framebuffer/writer.js.map +1 -0
- package/dist/cli/groupReveal.js +51 -0
- package/dist/cli/groupReveal.js.map +1 -0
- package/dist/cli/help.js +55 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/inputView.js +105 -0
- package/dist/cli/inputView.js.map +1 -0
- package/dist/cli/keyManager.js +65 -0
- package/dist/cli/keyManager.js.map +1 -0
- package/dist/cli/keySetup.js +35 -0
- package/dist/cli/keySetup.js.map +1 -0
- package/dist/cli/keyStore.js +73 -0
- package/dist/cli/keyStore.js.map +1 -0
- package/dist/cli/markdown.js +460 -0
- package/dist/cli/markdown.js.map +1 -0
- package/dist/cli/messageQueue.js +96 -0
- package/dist/cli/messageQueue.js.map +1 -0
- package/dist/cli/modes.js +90 -0
- package/dist/cli/modes.js.map +1 -0
- package/dist/cli/mouse.js +78 -0
- package/dist/cli/mouse.js.map +1 -0
- package/dist/cli/pasteAssembler.js +44 -0
- package/dist/cli/pasteAssembler.js.map +1 -0
- package/dist/cli/pathComplete.js +39 -0
- package/dist/cli/pathComplete.js.map +1 -0
- package/dist/cli/perfLog.js +90 -0
- package/dist/cli/perfLog.js.map +1 -0
- package/dist/cli/reveal.js +32 -0
- package/dist/cli/reveal.js.map +1 -0
- package/dist/cli/revealPace.js +59 -0
- package/dist/cli/revealPace.js.map +1 -0
- package/dist/cli/sessionCarry.js +19 -0
- package/dist/cli/sessionCarry.js.map +1 -0
- package/dist/cli/smoothScroll.js +74 -0
- package/dist/cli/smoothScroll.js.map +1 -0
- package/dist/cli/startupArgs.js +96 -0
- package/dist/cli/startupArgs.js.map +1 -0
- package/dist/cli/terminalRestore.js +34 -0
- package/dist/cli/terminalRestore.js.map +1 -0
- package/dist/cli/toolDisplay.js +219 -0
- package/dist/cli/toolDisplay.js.map +1 -0
- package/dist/cli/toolItems.js +65 -0
- package/dist/cli/toolItems.js.map +1 -0
- package/dist/cli/transcript.js +351 -0
- package/dist/cli/transcript.js.map +1 -0
- package/dist/cli/trust.js +79 -0
- package/dist/cli/trust.js.map +1 -0
- package/dist/cli/updateCheck.js +107 -0
- package/dist/cli/updateCheck.js.map +1 -0
- package/dist/cli/version.js +39 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/cli/viewport.js +179 -0
- package/dist/cli/viewport.js.map +1 -0
- package/dist/cli/virtualWindow.js +103 -0
- package/dist/cli/virtualWindow.js.map +1 -0
- package/dist/cli/workingVerb.js +37 -0
- package/dist/cli/workingVerb.js.map +1 -0
- package/dist/cli/wrap.js +145 -0
- package/dist/cli/wrap.js.map +1 -0
- package/dist/drivers/anthropic/cachePoints.js +77 -0
- package/dist/drivers/anthropic/cachePoints.js.map +1 -0
- package/dist/drivers/anthropic/client.js +432 -0
- package/dist/drivers/anthropic/client.js.map +1 -0
- package/dist/drivers/anthropic/index.js +10 -0
- package/dist/drivers/anthropic/index.js.map +1 -0
- package/dist/drivers/anthropic/manifest.js +221 -0
- package/dist/drivers/anthropic/manifest.js.map +1 -0
- package/dist/drivers/cerebras/client.js +69 -0
- package/dist/drivers/cerebras/client.js.map +1 -0
- package/dist/drivers/cerebras/index.js +5 -0
- package/dist/drivers/cerebras/index.js.map +1 -0
- package/dist/drivers/cerebras/manifest.js +140 -0
- package/dist/drivers/cerebras/manifest.js.map +1 -0
- package/dist/drivers/clientId.js +41 -0
- package/dist/drivers/clientId.js.map +1 -0
- package/dist/drivers/contextOverflow.js +77 -0
- package/dist/drivers/contextOverflow.js.map +1 -0
- package/dist/drivers/deepseek/client.js +168 -0
- package/dist/drivers/deepseek/client.js.map +1 -0
- package/dist/drivers/deepseek/index.js +16 -0
- package/dist/drivers/deepseek/index.js.map +1 -0
- package/dist/drivers/deepseek/inlineTools.js +46 -0
- package/dist/drivers/deepseek/inlineTools.js.map +1 -0
- package/dist/drivers/deepseek/manifest.js +166 -0
- package/dist/drivers/deepseek/manifest.js.map +1 -0
- package/dist/drivers/gemini/client.js +38 -0
- package/dist/drivers/gemini/client.js.map +1 -0
- package/dist/drivers/gemini/index.js +5 -0
- package/dist/drivers/gemini/index.js.map +1 -0
- package/dist/drivers/gemini/manifest.js +150 -0
- package/dist/drivers/gemini/manifest.js.map +1 -0
- package/dist/drivers/glm/client.js +90 -0
- package/dist/drivers/glm/client.js.map +1 -0
- package/dist/drivers/glm/index.js +9 -0
- package/dist/drivers/glm/index.js.map +1 -0
- package/dist/drivers/glm/manifest.js +183 -0
- package/dist/drivers/glm/manifest.js.map +1 -0
- package/dist/drivers/groq/client.js +80 -0
- package/dist/drivers/groq/client.js.map +1 -0
- package/dist/drivers/groq/index.js +5 -0
- package/dist/drivers/groq/index.js.map +1 -0
- package/dist/drivers/groq/manifest.js +160 -0
- package/dist/drivers/groq/manifest.js.map +1 -0
- package/dist/drivers/kimi/client.js +82 -0
- package/dist/drivers/kimi/client.js.map +1 -0
- package/dist/drivers/kimi/index.js +9 -0
- package/dist/drivers/kimi/index.js.map +1 -0
- package/dist/drivers/kimi/manifest.js +168 -0
- package/dist/drivers/kimi/manifest.js.map +1 -0
- package/dist/drivers/meta/client.js +30 -0
- package/dist/drivers/meta/client.js.map +1 -0
- package/dist/drivers/meta/index.js +5 -0
- package/dist/drivers/meta/index.js.map +1 -0
- package/dist/drivers/meta/manifest.js +101 -0
- package/dist/drivers/meta/manifest.js.map +1 -0
- package/dist/drivers/minimax/client.js +36 -0
- package/dist/drivers/minimax/client.js.map +1 -0
- package/dist/drivers/minimax/index.js +5 -0
- package/dist/drivers/minimax/index.js.map +1 -0
- package/dist/drivers/minimax/manifest.js +120 -0
- package/dist/drivers/minimax/manifest.js.map +1 -0
- package/dist/drivers/mistral/client.js +54 -0
- package/dist/drivers/mistral/client.js.map +1 -0
- package/dist/drivers/mistral/index.js +5 -0
- package/dist/drivers/mistral/index.js.map +1 -0
- package/dist/drivers/mistral/manifest.js +118 -0
- package/dist/drivers/mistral/manifest.js.map +1 -0
- package/dist/drivers/openai/client.js +290 -0
- package/dist/drivers/openai/client.js.map +1 -0
- package/dist/drivers/openai/index.js +9 -0
- package/dist/drivers/openai/index.js.map +1 -0
- package/dist/drivers/openai/manifest.js +133 -0
- package/dist/drivers/openai/manifest.js.map +1 -0
- package/dist/drivers/openaiCompat/wire.js +493 -0
- package/dist/drivers/openaiCompat/wire.js.map +1 -0
- package/dist/drivers/partialTurn.js +23 -0
- package/dist/drivers/partialTurn.js.map +1 -0
- package/dist/drivers/providerError.js +181 -0
- package/dist/drivers/providerError.js.map +1 -0
- package/dist/drivers/qwen/client.js +93 -0
- package/dist/drivers/qwen/client.js.map +1 -0
- package/dist/drivers/qwen/index.js +9 -0
- package/dist/drivers/qwen/index.js.map +1 -0
- package/dist/drivers/qwen/manifest.js +146 -0
- package/dist/drivers/qwen/manifest.js.map +1 -0
- package/dist/drivers/registry.js +177 -0
- package/dist/drivers/registry.js.map +1 -0
- package/dist/drivers/retryPolicy.js +129 -0
- package/dist/drivers/retryPolicy.js.map +1 -0
- package/dist/drivers/searchBlocks.js +61 -0
- package/dist/drivers/searchBlocks.js.map +1 -0
- package/dist/drivers/types.js +2 -0
- package/dist/drivers/types.js.map +1 -0
- package/dist/drivers/xai/client.js +63 -0
- package/dist/drivers/xai/client.js.map +1 -0
- package/dist/drivers/xai/index.js +5 -0
- package/dist/drivers/xai/index.js.map +1 -0
- package/dist/drivers/xai/manifest.js +137 -0
- package/dist/drivers/xai/manifest.js.map +1 -0
- package/dist/dynamo/_probe.tmp.js +20 -0
- package/dist/dynamo/_probe.tmp.js.map +1 -0
- package/dist/dynamo/cacheBreak.js +88 -0
- package/dist/dynamo/cacheBreak.js.map +1 -0
- package/dist/dynamo/contextWindow.js +243 -0
- package/dist/dynamo/contextWindow.js.map +1 -0
- package/dist/dynamo/engine.js +2011 -0
- package/dist/dynamo/engine.js.map +1 -0
- package/dist/dynamo/guard.js +132 -0
- package/dist/dynamo/guard.js.map +1 -0
- package/dist/dynamo/liveMeter.js +58 -0
- package/dist/dynamo/liveMeter.js.map +1 -0
- package/dist/dynamo/model.js +172 -0
- package/dist/dynamo/model.js.map +1 -0
- package/dist/dynamo/planArtifact.js +125 -0
- package/dist/dynamo/planArtifact.js.map +1 -0
- package/dist/dynamo/pricing.js +140 -0
- package/dist/dynamo/pricing.js.map +1 -0
- package/dist/dynamo/prompt.js +264 -0
- package/dist/dynamo/prompt.js.map +1 -0
- package/dist/dynamo/spend.js +45 -0
- package/dist/dynamo/spend.js.map +1 -0
- package/dist/dynamo/verify.js +483 -0
- package/dist/dynamo/verify.js.map +1 -0
- package/dist/governor/forbidden.js +181 -0
- package/dist/governor/forbidden.js.map +1 -0
- package/dist/governor/freshness.js +83 -0
- package/dist/governor/freshness.js.map +1 -0
- package/dist/governor/frontmatter.js +38 -0
- package/dist/governor/frontmatter.js.map +1 -0
- package/dist/governor/glob.js +75 -0
- package/dist/governor/glob.js.map +1 -0
- package/dist/governor/index.js +87 -0
- package/dist/governor/index.js.map +1 -0
- package/dist/governor/rules.js +80 -0
- package/dist/governor/rules.js.map +1 -0
- package/dist/governor/scope.js +91 -0
- package/dist/governor/scope.js.map +1 -0
- package/dist/governor/skills.js +176 -0
- package/dist/governor/skills.js.map +1 -0
- package/dist/governor/types.js +16 -0
- package/dist/governor/types.js.map +1 -0
- package/dist/governor/write.js +182 -0
- package/dist/governor/write.js.map +1 -0
- package/dist/index.js +89 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/catalog.js +232 -0
- package/dist/mcp/catalog.js.map +1 -0
- package/dist/mcp/config.js +116 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/configWrite.js +254 -0
- package/dist/mcp/configWrite.js.map +1 -0
- package/dist/mcp/connection.js +504 -0
- package/dist/mcp/connection.js.map +1 -0
- package/dist/mcp/deferred.js +104 -0
- package/dist/mcp/deferred.js.map +1 -0
- package/dist/mcp/discover.js +128 -0
- package/dist/mcp/discover.js.map +1 -0
- package/dist/mcp/manager.js +679 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/paramHeaders.js +163 -0
- package/dist/mcp/paramHeaders.js.map +1 -0
- package/dist/mcp/prompts.js +136 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/protocol.js +171 -0
- package/dist/mcp/protocol.js.map +1 -0
- package/dist/mcp/resources.js +119 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/resultStore.js +180 -0
- package/dist/mcp/resultStore.js.map +1 -0
- package/dist/mcp/subscriptions.js +74 -0
- package/dist/mcp/subscriptions.js.map +1 -0
- package/dist/mcp/transport/headerValue.js +40 -0
- package/dist/mcp/transport/headerValue.js.map +1 -0
- package/dist/mcp/transport/http.js +321 -0
- package/dist/mcp/transport/http.js.map +1 -0
- package/dist/mcp/transport/stdio.js +234 -0
- package/dist/mcp/transport/stdio.js.map +1 -0
- package/dist/mcp/transport/types.js +27 -0
- package/dist/mcp/transport/types.js.map +1 -0
- package/dist/mcp/trust.js +98 -0
- package/dist/mcp/trust.js.map +1 -0
- package/dist/mcp/trustStore.js +55 -0
- package/dist/mcp/trustStore.js.map +1 -0
- package/dist/memory/autoMemory.js +340 -0
- package/dist/memory/autoMemory.js.map +1 -0
- package/dist/memory/compaction.js +513 -0
- package/dist/memory/compaction.js.map +1 -0
- package/dist/memory/images.js +173 -0
- package/dist/memory/images.js.map +1 -0
- package/dist/memory/presence.js +59 -0
- package/dist/memory/presence.js.map +1 -0
- package/dist/memory/projectNotes.js +247 -0
- package/dist/memory/projectNotes.js.map +1 -0
- package/dist/memory/restore.js +72 -0
- package/dist/memory/restore.js.map +1 -0
- package/dist/memory/session.js +472 -0
- package/dist/memory/session.js.map +1 -0
- package/dist/memory/sessionMemory.js +142 -0
- package/dist/memory/sessionMemory.js.map +1 -0
- package/dist/memory/sessionMemoryCompact.js +136 -0
- package/dist/memory/sessionMemoryCompact.js.map +1 -0
- package/dist/memory/store.js +217 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/memory/types.js +14 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/memory/workingSet.js +383 -0
- package/dist/memory/workingSet.js.map +1 -0
- package/dist/project/context.js +425 -0
- package/dist/project/context.js.map +1 -0
- package/dist/tools/approval.js +189 -0
- package/dist/tools/approval.js.map +1 -0
- package/dist/tools/askUser.js +103 -0
- package/dist/tools/askUser.js.map +1 -0
- package/dist/tools/atomicWrite.js +151 -0
- package/dist/tools/atomicWrite.js.map +1 -0
- package/dist/tools/backgroundShells.js +468 -0
- package/dist/tools/backgroundShells.js.map +1 -0
- package/dist/tools/captureSweep.js +77 -0
- package/dist/tools/captureSweep.js.map +1 -0
- package/dist/tools/chassisMux.js +92 -0
- package/dist/tools/chassisMux.js.map +1 -0
- package/dist/tools/checkpoints.js +328 -0
- package/dist/tools/checkpoints.js.map +1 -0
- package/dist/tools/codeIntel.js +267 -0
- package/dist/tools/codeIntel.js.map +1 -0
- package/dist/tools/deferredNative.js +121 -0
- package/dist/tools/deferredNative.js.map +1 -0
- package/dist/tools/detail.js +135 -0
- package/dist/tools/detail.js.map +1 -0
- package/dist/tools/diagnostics.js +174 -0
- package/dist/tools/diagnostics.js.map +1 -0
- package/dist/tools/edit.js +167 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/editCore.js +283 -0
- package/dist/tools/editCore.js.map +1 -0
- package/dist/tools/editFile.js +183 -0
- package/dist/tools/editFile.js.map +1 -0
- package/dist/tools/editRipple.js +126 -0
- package/dist/tools/editRipple.js.map +1 -0
- package/dist/tools/editTarget.js +131 -0
- package/dist/tools/editTarget.js.map +1 -0
- package/dist/tools/editWindow.js +49 -0
- package/dist/tools/editWindow.js.map +1 -0
- package/dist/tools/eol.js +56 -0
- package/dist/tools/eol.js.map +1 -0
- package/dist/tools/exitPlan.js +175 -0
- package/dist/tools/exitPlan.js.map +1 -0
- package/dist/tools/focus.js +42 -0
- package/dist/tools/focus.js.map +1 -0
- package/dist/tools/gitignore.js +148 -0
- package/dist/tools/gitignore.js.map +1 -0
- package/dist/tools/glob.js +134 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/governorTools.js +258 -0
- package/dist/tools/governorTools.js.map +1 -0
- package/dist/tools/grep.js +450 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/guard.js +220 -0
- package/dist/tools/guard.js.map +1 -0
- package/dist/tools/killTree.js +215 -0
- package/dist/tools/killTree.js.map +1 -0
- package/dist/tools/listDir.js +143 -0
- package/dist/tools/listDir.js.map +1 -0
- package/dist/tools/mcpAdd.js +176 -0
- package/dist/tools/mcpAdd.js.map +1 -0
- package/dist/tools/mcpResources.js +116 -0
- package/dist/tools/mcpResources.js.map +1 -0
- package/dist/tools/mcpSearch.js +123 -0
- package/dist/tools/mcpSearch.js.map +1 -0
- package/dist/tools/multiEdit.js +168 -0
- package/dist/tools/multiEdit.js.map +1 -0
- package/dist/tools/paths.js +225 -0
- package/dist/tools/paths.js.map +1 -0
- package/dist/tools/posixShell.js +123 -0
- package/dist/tools/posixShell.js.map +1 -0
- package/dist/tools/readFile.js +371 -0
- package/dist/tools/readFile.js.map +1 -0
- package/dist/tools/readSymbol.js +145 -0
- package/dist/tools/readSymbol.js.map +1 -0
- package/dist/tools/registry.js +120 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/replaceSymbol.js +141 -0
- package/dist/tools/replaceSymbol.js.map +1 -0
- package/dist/tools/results.js +15 -0
- package/dist/tools/results.js.map +1 -0
- package/dist/tools/ripgrep.js +145 -0
- package/dist/tools/ripgrep.js.map +1 -0
- package/dist/tools/runCommand.js +633 -0
- package/dist/tools/runCommand.js.map +1 -0
- package/dist/tools/saveMemory.js +102 -0
- package/dist/tools/saveMemory.js.map +1 -0
- package/dist/tools/screenshot.js +200 -0
- package/dist/tools/screenshot.js.map +1 -0
- package/dist/tools/screenshotWin.js +227 -0
- package/dist/tools/screenshotWin.js.map +1 -0
- package/dist/tools/search.js +121 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/sessionTools.js +187 -0
- package/dist/tools/sessionTools.js.map +1 -0
- package/dist/tools/shellCheckpoint.js +123 -0
- package/dist/tools/shellCheckpoint.js.map +1 -0
- package/dist/tools/shellLint.js +102 -0
- package/dist/tools/shellLint.js.map +1 -0
- package/dist/tools/shellTools.js +203 -0
- package/dist/tools/shellTools.js.map +1 -0
- package/dist/tools/spanCore.js +78 -0
- package/dist/tools/spanCore.js.map +1 -0
- package/dist/tools/subagent.js +224 -0
- package/dist/tools/subagent.js.map +1 -0
- package/dist/tools/subagentReport.js +114 -0
- package/dist/tools/subagentReport.js.map +1 -0
- package/dist/tools/tempSweep.js +118 -0
- package/dist/tools/tempSweep.js.map +1 -0
- package/dist/tools/todo.js +117 -0
- package/dist/tools/todo.js.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/untrusted.js +46 -0
- package/dist/tools/untrusted.js.map +1 -0
- package/dist/tools/useSkill.js +62 -0
- package/dist/tools/useSkill.js.map +1 -0
- package/dist/tools/walk.js +152 -0
- package/dist/tools/walk.js.map +1 -0
- package/dist/tools/web.js +61 -0
- package/dist/tools/web.js.map +1 -0
- package/dist/tools/webFetch.js +444 -0
- package/dist/tools/webFetch.js.map +1 -0
- package/dist/tools/webSearch.js +130 -0
- package/dist/tools/webSearch.js.map +1 -0
- package/dist/tools/workspace.js +212 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/tools/workspaceDiscover.js +216 -0
- package/dist/tools/workspaceDiscover.js.map +1 -0
- package/dist/tools/writeFile.js +162 -0
- package/dist/tools/writeFile.js.map +1 -0
- package/package.json +74 -28
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { readFile } from "./readFile.js";
|
|
2
|
+
import { writeFile } from "./writeFile.js";
|
|
3
|
+
import { edit } from "./edit.js";
|
|
4
|
+
import { runCommand } from "./runCommand.js";
|
|
5
|
+
import { search } from "./search.js";
|
|
6
|
+
import { outlineTool, definitionTool, referencesTool } from "./codeIntel.js";
|
|
7
|
+
import { readSymbolTool } from "./readSymbol.js";
|
|
8
|
+
import { replaceSymbolBody } from "./replaceSymbol.js";
|
|
9
|
+
import { diagnosticsTool } from "./diagnostics.js";
|
|
10
|
+
import { web } from "./web.js";
|
|
11
|
+
import { screenshot } from "./screenshot.js";
|
|
12
|
+
import { exitPlan } from "./exitPlan.js";
|
|
13
|
+
import { todoWrite } from "./todo.js";
|
|
14
|
+
import { useSkill } from "./useSkill.js";
|
|
15
|
+
import { governor, createSkill } from "./governorTools.js";
|
|
16
|
+
import { saveMemoryTool } from "./saveMemory.js";
|
|
17
|
+
import { askUserTool } from "./askUser.js";
|
|
18
|
+
import { workspaceTool } from "./workspace.js";
|
|
19
|
+
import { shellsTool, killShell } from "./shellTools.js";
|
|
20
|
+
import { spawnSubagent } from "./subagent.js";
|
|
21
|
+
import { sessionsTool } from "./sessionTools.js";
|
|
22
|
+
import { findTools } from "./mcpSearch.js";
|
|
23
|
+
import { mcpResourceTool } from "./mcpResources.js";
|
|
24
|
+
import { addMcpServer } from "./mcpAdd.js";
|
|
25
|
+
export const TOOLS = [
|
|
26
|
+
// Discovery (read-only)
|
|
27
|
+
search,
|
|
28
|
+
readFile,
|
|
29
|
+
web,
|
|
30
|
+
// Code intelligence (read-only, chassis-backed)
|
|
31
|
+
outlineTool,
|
|
32
|
+
definitionTool,
|
|
33
|
+
referencesTool,
|
|
34
|
+
readSymbolTool,
|
|
35
|
+
diagnosticsTool,
|
|
36
|
+
// Background shells (read-only: inspect long-running commands)
|
|
37
|
+
shellsTool,
|
|
38
|
+
// External integrations (read-only: finds MCP tools, and reads the DATA servers expose
|
|
39
|
+
// as opposed to the actions they perform)
|
|
40
|
+
findTools,
|
|
41
|
+
mcpResourceTool,
|
|
42
|
+
// Own history (read-only: what this agent did in this project before)
|
|
43
|
+
sessionsTool,
|
|
44
|
+
// Skills (read-only: loads a procedure into context on demand)
|
|
45
|
+
useSkill,
|
|
46
|
+
// Clarification (read-only: asks the user a focused question, changes nothing)
|
|
47
|
+
askUserTool,
|
|
48
|
+
// Sight (read-only: photographs one approved window, changes nothing)
|
|
49
|
+
screenshot,
|
|
50
|
+
// Planning (read-only, and offered only while planning — see `planOnly`)
|
|
51
|
+
exitPlan,
|
|
52
|
+
// Action (mutating)
|
|
53
|
+
writeFile,
|
|
54
|
+
edit,
|
|
55
|
+
replaceSymbolBody,
|
|
56
|
+
spawnSubagent,
|
|
57
|
+
runCommand,
|
|
58
|
+
todoWrite,
|
|
59
|
+
workspaceTool,
|
|
60
|
+
killShell,
|
|
61
|
+
// Cross-session memory (mutating: persists what the model is asked to remember)
|
|
62
|
+
saveMemoryTool,
|
|
63
|
+
// Governor (mutating: persist a rule / forbidden path / skill for the project)
|
|
64
|
+
governor,
|
|
65
|
+
addMcpServer,
|
|
66
|
+
createSkill,
|
|
67
|
+
];
|
|
68
|
+
/** Look up a tool by the name the model called. */
|
|
69
|
+
export function findTool(name) {
|
|
70
|
+
return TOOLS.find((tool) => tool.name === name);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The OpenAI-style `tools[]` array we send to the provider so the model knows
|
|
74
|
+
* what it can call. Built straight from the registry — one source of truth.
|
|
75
|
+
*
|
|
76
|
+
* In `planMode` (the CLI's Architect mode) only read-only tools are advertised,
|
|
77
|
+
* so the model plans and researches without ever being offered edit/write/run.
|
|
78
|
+
* `readOnlyOnly` does the same filtering without the plan framing — used to make a
|
|
79
|
+
* research sub-agent read-only. Execution is guarded independently in the engine,
|
|
80
|
+
* so a stray mutating call is still refused — this just keeps the model from
|
|
81
|
+
* reaching for one.
|
|
82
|
+
*/
|
|
83
|
+
export function toolSchemas(opts = {}) {
|
|
84
|
+
const readOnly = opts.planMode || opts.readOnlyOnly;
|
|
85
|
+
// `planOnly` runs the filter the other way: those tools exist BECAUSE planning is
|
|
86
|
+
// happening, so they appear only in plan mode and are hidden the rest of the time.
|
|
87
|
+
// A read-only sub-agent is not planning, so it does not get them either.
|
|
88
|
+
//
|
|
89
|
+
// `deferred` is the third filter: a deferred tool is held back UNTIL the model has
|
|
90
|
+
// surfaced it through find_tools, which records it in `ctx.activatedTools`. From then on
|
|
91
|
+
// it is advertised like any other tool.
|
|
92
|
+
//
|
|
93
|
+
// Delivering the schema only in the search RESULT (an appended message) is not enough on
|
|
94
|
+
// its own: a strict function-calling model — every OpenAI-compatible provider (GLM,
|
|
95
|
+
// DeepSeek, Qwen, …) — only emits a tool call for a function that is actually in the
|
|
96
|
+
// request's `tools` array. A schema shown as text is callable in name only; the model
|
|
97
|
+
// reads it, "knows" it should use the tool, and cannot, so it stalls. Adding the tool
|
|
98
|
+
// here once activated is what makes it real. The cost is one prefix rebuild the first
|
|
99
|
+
// time each capability is used — deliberately paid, because a tool that cannot be called
|
|
100
|
+
// is worse than a cache miss. Activation is monotonic (the set only grows), so the
|
|
101
|
+
// rebuild happens once per capability, not once per call. Nothing activated → identical
|
|
102
|
+
// bytes to before, so the common session pays nothing.
|
|
103
|
+
const activated = opts.ctx?.activatedTools;
|
|
104
|
+
const tools = (readOnly ? TOOLS.filter((tool) => tool.readOnly) : TOOLS)
|
|
105
|
+
.filter((tool) => (tool.planOnly ? opts.planMode === true : true))
|
|
106
|
+
.filter((tool) => !tool.deferred || (activated?.has(tool.name) ?? false))
|
|
107
|
+
// `relevantWhen` needs the live session; with no ctx (a schema-shape test, a
|
|
108
|
+
// count) the tool is shown, because hiding it would be a false negative about
|
|
109
|
+
// what the registry contains.
|
|
110
|
+
.filter((tool) => !tool.relevantWhen || !opts.ctx || tool.relevantWhen(opts.ctx));
|
|
111
|
+
return tools.map((tool) => ({
|
|
112
|
+
type: "function",
|
|
113
|
+
function: {
|
|
114
|
+
name: tool.name,
|
|
115
|
+
description: tool.description,
|
|
116
|
+
parameters: tool.parameters,
|
|
117
|
+
},
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { recordWrite, relativize, resolvePath } from "./paths.js";
|
|
2
|
+
import { applyEol } from "./eol.js";
|
|
3
|
+
import { editDetail, lineCount, magnitude, withScope } from "./detail.js";
|
|
4
|
+
import { numberedWindow } from "./editWindow.js";
|
|
5
|
+
import { normalizeLf } from "./editCore.js";
|
|
6
|
+
import { prepareEditTarget, unreadError, fail, failQuietly, errText } from "./editTarget.js";
|
|
7
|
+
import { allChassis, symbolSpans } from "./chassisMux.js";
|
|
8
|
+
import { rawLines, spliceLines } from "./spanCore.js";
|
|
9
|
+
import { writeFileAtomic } from "./atomicWrite.js";
|
|
10
|
+
export const replaceSymbolBody = {
|
|
11
|
+
name: "replace_symbol_body",
|
|
12
|
+
/** Deferred: `edit` handles ordinary changes, including most whole-function rewrites.
|
|
13
|
+
* This is the specialised span-swap, wanted deliberately when it is wanted. */
|
|
14
|
+
deferred: true,
|
|
15
|
+
readOnly: false,
|
|
16
|
+
// Two problems. The description implied `path` resolves any ambiguity, but a name
|
|
17
|
+
// defined TWICE IN ONE FILE cannot be narrowed by a path at all, and there is no
|
|
18
|
+
// other parameter for it — a model following the old text would keep re-sending the
|
|
19
|
+
// same path and getting the same refusal. The escape hatch is the edit tool, and it now
|
|
20
|
+
// says so. It also never mentioned that the result comes back line-numbered, which is
|
|
21
|
+
// the thing that lets a rewrite be followed by more edits without re-reading.
|
|
22
|
+
description: "Replace a whole symbol (function, class, method, type, and so on) with a new " +
|
|
23
|
+
"definition, by name. Give the symbol `name` and the complete `new_definition`, its " +
|
|
24
|
+
"signature AND body. The tool locates the symbol and swaps its lines, so no exact " +
|
|
25
|
+
"old_string is needed. Read the symbol first with read_symbol. " +
|
|
26
|
+
"AMBIGUITY IS REFUSED, never guessed: if the name resolves to more than one symbol " +
|
|
27
|
+
"nothing is written and you are shown the candidates. When those are in different " +
|
|
28
|
+
"files, `path` picks one. When the SAME file defines the name twice, `path` cannot " +
|
|
29
|
+
"help and there is no parameter that can, so use edit with an exact old_string " +
|
|
30
|
+
"instead. " +
|
|
31
|
+
"On success you get the new definition back WITH line numbers, so you can make " +
|
|
32
|
+
"further edits from the result instead of re-reading the file. " +
|
|
33
|
+
"A `new_definition` identical to what is already there is refused rather than " +
|
|
34
|
+
"written as a no-op edit. " +
|
|
35
|
+
"Prefer this when you are rewriting a whole function or class; use edit for changes " +
|
|
36
|
+
"WITHIN one.",
|
|
37
|
+
parameters: {
|
|
38
|
+
type: "object",
|
|
39
|
+
additionalProperties: false,
|
|
40
|
+
required: ["name", "new_definition"],
|
|
41
|
+
properties: {
|
|
42
|
+
name: { type: "string", description: "The symbol to replace." },
|
|
43
|
+
new_definition: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "The complete replacement definition — signature and body, as it should appear in the file.",
|
|
46
|
+
},
|
|
47
|
+
path: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "File the symbol is in (optional; disambiguates a name defined in several files).",
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
async execute(args, ctx) {
|
|
54
|
+
const name = typeof args.name === "string" ? args.name.trim() : "";
|
|
55
|
+
if (!name)
|
|
56
|
+
return failQuietly("`name` is required.");
|
|
57
|
+
if (typeof args.new_definition !== "string" || args.new_definition.trim() === "") {
|
|
58
|
+
return failQuietly("`new_definition` is required and must not be empty (use edit to delete a symbol).");
|
|
59
|
+
}
|
|
60
|
+
if (allChassis(ctx).length === 0) {
|
|
61
|
+
return fail("the code map isn't available here — use edit with an exact old_string instead.");
|
|
62
|
+
}
|
|
63
|
+
const rawPath = typeof args.path === "string" && args.path.trim() ? args.path.trim() : undefined;
|
|
64
|
+
const wantAbs = rawPath ? resolvePath(ctx, rawPath) : undefined;
|
|
65
|
+
const spans = await symbolSpans(ctx, name, wantAbs ? { path: wantAbs } : {});
|
|
66
|
+
if (spans.length === 0) {
|
|
67
|
+
return fail(`couldn't locate a symbol named '${name}'${rawPath ? ` in ${rawPath}` : ""}. ` +
|
|
68
|
+
"Read it first (read_symbol / outline), or use edit with an exact old_string.");
|
|
69
|
+
}
|
|
70
|
+
// Ambiguous → refuse and list. Never guess which definition to overwrite.
|
|
71
|
+
if (spans.length > 1) {
|
|
72
|
+
const list = spans.map((s) => `${relativize(ctx, s.file)}:${s.start}-${s.end}`).join(", ");
|
|
73
|
+
const hint = new Set(spans.map((s) => s.file)).size > 1 ? "pass `path` to pick one" : "the name is defined more than once here";
|
|
74
|
+
return fail(`'${name}' is ambiguous (${list}) — ${hint}. No changes were written.`);
|
|
75
|
+
}
|
|
76
|
+
const span = spans[0];
|
|
77
|
+
const abs = resolvePath(ctx, span.file);
|
|
78
|
+
const target = await prepareEditTarget(ctx, abs, "editing");
|
|
79
|
+
if (!target.ok)
|
|
80
|
+
return target.error;
|
|
81
|
+
// Unlike `edit`, this tool quotes NOTHING of what is already there — it names a
|
|
82
|
+
// symbol and hands over a whole new body. So there is no match that could serve as
|
|
83
|
+
// evidence the model knows what it is replacing, and read-before-edit stays a hard
|
|
84
|
+
// refusal here. The relaxed rule in `edit` is earned by the old_string; without one,
|
|
85
|
+
// it would just be overwriting a definition sight unseen.
|
|
86
|
+
if (target.unread)
|
|
87
|
+
return unreadError(abs);
|
|
88
|
+
const { filePath, content, eol } = target;
|
|
89
|
+
const before = normalizeLf(content);
|
|
90
|
+
const oldBody = rawLines(before, span.start, span.end);
|
|
91
|
+
const updatedNorm = spliceLines(before, span.start, span.end, args.new_definition);
|
|
92
|
+
if (updatedNorm === before) {
|
|
93
|
+
return failQuietly(`\`new_definition\` matches the current definition of '${name}' — nothing to change.`);
|
|
94
|
+
}
|
|
95
|
+
const updated = applyEol(updatedNorm, eol);
|
|
96
|
+
// Snapshot the pre-edit bytes for /undo before touching disk.
|
|
97
|
+
ctx.checkpoints?.backup(filePath, content, updated);
|
|
98
|
+
try {
|
|
99
|
+
await writeFileAtomic(filePath, updated);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return fail(`could not write ${relativize(ctx, filePath)}: ${errText(error)}`);
|
|
103
|
+
}
|
|
104
|
+
await recordWrite(ctx, filePath, {
|
|
105
|
+
start: span.start,
|
|
106
|
+
end: span.start + normalizeLf(args.new_definition).split("\n").length - 1,
|
|
107
|
+
});
|
|
108
|
+
const shown = relativize(ctx, filePath);
|
|
109
|
+
// Show the new definition WITH fresh line numbers, so the model can keep editing
|
|
110
|
+
// from the result rather than re-reading the file.
|
|
111
|
+
const newStart = charAtLine(updatedNorm, span.start); // start char of the replaced region
|
|
112
|
+
const newLineCount = normalizeLf(args.new_definition).split("\n").length;
|
|
113
|
+
const window = numberedWindow(updatedNorm, newStart, newStart + args.new_definition.length);
|
|
114
|
+
// Scope: which symbol, the span it used to occupy, and the ± lines — so a whole-
|
|
115
|
+
// symbol rewrite reads as "reserveBook · was L120-138 · −18 +24", not a bare diff.
|
|
116
|
+
const removed = lineCount(oldBody);
|
|
117
|
+
const scope = `${span.name} · was L${span.start}-${span.end} · ${magnitude(removed, newLineCount)}`;
|
|
118
|
+
return {
|
|
119
|
+
output: `Replaced ${span.kind} ${span.name} in ${shown} ` +
|
|
120
|
+
`(was lines ${span.start}-${span.end}, now ${newLineCount} line${newLineCount === 1 ? "" : "s"}).\n` +
|
|
121
|
+
`New definition — line-numbered so you can make further edits without re-reading:\n${window}`,
|
|
122
|
+
summary: `replaced ${span.name} in ${shown} · ${scope}`,
|
|
123
|
+
detail: withScope(scope, editDetail(oldBody, args.new_definition)),
|
|
124
|
+
detailKind: "diff",
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
/** The char offset of the first character of 1-based `line` in LF text. */
|
|
129
|
+
function charAtLine(text, line) {
|
|
130
|
+
let offset = 0;
|
|
131
|
+
let current = 1;
|
|
132
|
+
while (current < line) {
|
|
133
|
+
const nl = text.indexOf("\n", offset);
|
|
134
|
+
if (nl === -1)
|
|
135
|
+
return text.length;
|
|
136
|
+
offset = nl + 1;
|
|
137
|
+
current++;
|
|
138
|
+
}
|
|
139
|
+
return offset;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=replaceSymbol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replaceSymbol.js","sourceRoot":"","sources":["../../src/tools/replaceSymbol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** A failure the user should see: a refusal, a missing file, a command that exited badly. */
|
|
2
|
+
export function fail(message) {
|
|
3
|
+
return { output: `Error: ${message}`, isError: true, summary: message };
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* A failure the model is expected to fix by itself, this turn.
|
|
7
|
+
*
|
|
8
|
+
* Identical to `fail` for the model — same error text, same `isError`, so nothing about
|
|
9
|
+
* its recovery changes — but marked `quiet` so the UI does not paint a red row for what
|
|
10
|
+
* is really a mid-thought correction. See `ToolResult.quiet` for where the line sits.
|
|
11
|
+
*/
|
|
12
|
+
export function failQuietly(message) {
|
|
13
|
+
return { output: `Error: ${message}`, isError: true, summary: message, quiet: true };
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/tools/results.ts"],"names":[],"mappings":"AASA,6FAA6F;AAC7F,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,EAAE,MAAM,EAAE,UAAU,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,EAAE,MAAM,EAAE,UAAU,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACvF,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ripgrep.ts — run the `rg` binary for fast, precise search.
|
|
3
|
+
*
|
|
4
|
+
* ripgrep is the precise, fast ground-truth scanner: it walks the tree itself
|
|
5
|
+
* (memory-mapped, multithreaded), respects .gitignore, and streams back only
|
|
6
|
+
* matches — the project is never loaded into the agent. We shell out to it and
|
|
7
|
+
* parse the lines.
|
|
8
|
+
*
|
|
9
|
+
* WHERE THE BINARY COMES FROM, in order:
|
|
10
|
+
* 1. `MINDWEAVE_RIPGREP_PATH`, for anyone who wants a specific build.
|
|
11
|
+
* 2. The copy that ships with Mindweave (`@vscode/ripgrep`, an OPTIONAL dependency
|
|
12
|
+
* resolving to a per-platform package, so npm installs the one binary this machine
|
|
13
|
+
* needs and nothing is downloaded at install time).
|
|
14
|
+
* 3. `rg` on PATH, for a system install.
|
|
15
|
+
*
|
|
16
|
+
* Bundling matters more than it sounds. The two search engines are NOT equivalent: only
|
|
17
|
+
* ripgrep honours `.gitignore`, and the walk re-reads every candidate file in Node. A
|
|
18
|
+
* user who never installs ripgrep silently gets the slower, less accurate one forever,
|
|
19
|
+
* and nothing on screen says so — which is exactly the sort of invisible degradation
|
|
20
|
+
* this project keeps finding after the fact.
|
|
21
|
+
*
|
|
22
|
+
* OPTIONAL, deliberately. If the platform package is missing — an unsupported
|
|
23
|
+
* architecture, a locked-down registry, `--no-optional` — resolution simply falls
|
|
24
|
+
* through and the pure-Node walk (walk.ts) still answers every search. Search getting
|
|
25
|
+
* slower is an acceptable failure; `npm install mindweave` failing is not.
|
|
26
|
+
*/
|
|
27
|
+
import { spawn } from "node:child_process";
|
|
28
|
+
import { createRequire } from "node:module";
|
|
29
|
+
/**
|
|
30
|
+
* The bundled binary's path, or undefined if this platform's package isn't installed.
|
|
31
|
+
*
|
|
32
|
+
* Resolved through `require.resolve` rather than an `import`, because the whole point is
|
|
33
|
+
* that this may legitimately be absent: a static import of a missing optional dependency
|
|
34
|
+
* is a module-load crash, and the fallback it was meant to allow never gets to run.
|
|
35
|
+
*/
|
|
36
|
+
function bundledRipgrep() {
|
|
37
|
+
try {
|
|
38
|
+
const require = createRequire(import.meta.url);
|
|
39
|
+
const binary = process.platform === "win32" ? "rg.exe" : "rg";
|
|
40
|
+
return require.resolve(`@vscode/ripgrep-${process.platform}-${process.arch}/bin/${binary}`);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const RG = process.env.MINDWEAVE_RIPGREP_PATH || bundledRipgrep() || "rg";
|
|
47
|
+
const MAX_BUFFER = 20_000_000; // 20 MB — big monorepos can emit a lot of paths
|
|
48
|
+
const TIMEOUT_MS = 20_000;
|
|
49
|
+
let probe;
|
|
50
|
+
/**
|
|
51
|
+
* Force the built-in walker even where ripgrep is installed.
|
|
52
|
+
*
|
|
53
|
+
* Search has two engines and picks one from what happens to be on the machine, so
|
|
54
|
+
* every run exercises exactly one of them: this machine has ripgrep, the CI runners
|
|
55
|
+
* do not, and neither ever covered both. The two have already drifted apart once —
|
|
56
|
+
* only ripgrep honoured `.gitignore` until v1.9.3, while both claimed to — and a
|
|
57
|
+
* difference like that is invisible until someone runs the other path.
|
|
58
|
+
*
|
|
59
|
+
* Setting this lets one machine test both, which is what the CI matrix uses.
|
|
60
|
+
*/
|
|
61
|
+
const FORCED_OFF = process.env.MINDWEAVE_NO_RIPGREP === "1";
|
|
62
|
+
/** Which binary search will use, for diagnostics and for the test that proves the
|
|
63
|
+
* bundled one is actually reachable rather than merely declared in package.json. */
|
|
64
|
+
export function ripgrepPath() {
|
|
65
|
+
return RG;
|
|
66
|
+
}
|
|
67
|
+
/** Reset the cached probe. Tests only — the env var is read per probe, not per call. */
|
|
68
|
+
export function resetRipgrepProbe() {
|
|
69
|
+
probe = undefined;
|
|
70
|
+
}
|
|
71
|
+
/** True if `rg` is runnable. Probed once and cached for the session. */
|
|
72
|
+
export function ripgrepAvailable() {
|
|
73
|
+
if (FORCED_OFF)
|
|
74
|
+
return Promise.resolve(false);
|
|
75
|
+
if (!probe) {
|
|
76
|
+
probe = new Promise((resolve) => {
|
|
77
|
+
try {
|
|
78
|
+
const child = spawn(RG, ["--version"], {
|
|
79
|
+
windowsHide: true,
|
|
80
|
+
stdio: ["ignore", "ignore", "ignore"],
|
|
81
|
+
});
|
|
82
|
+
child.on("error", () => resolve(false));
|
|
83
|
+
child.on("close", (code) => resolve(code === 0));
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
resolve(false);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return probe;
|
|
91
|
+
}
|
|
92
|
+
/** Run ripgrep with `args`, working from `cwd`. Never throws — failures surface
|
|
93
|
+
* in the returned code/stderr so the tool can report them cleanly. */
|
|
94
|
+
export function runRipgrep(args, cwd) {
|
|
95
|
+
return new Promise((resolve) => {
|
|
96
|
+
let out = "";
|
|
97
|
+
let err = "";
|
|
98
|
+
let truncated = false;
|
|
99
|
+
let settled = false;
|
|
100
|
+
const finish = (code, stderr) => {
|
|
101
|
+
if (settled)
|
|
102
|
+
return;
|
|
103
|
+
settled = true;
|
|
104
|
+
clearTimeout(timer);
|
|
105
|
+
const lines = out
|
|
106
|
+
.split("\n")
|
|
107
|
+
.map((l) => (l.endsWith("\r") ? l.slice(0, -1) : l))
|
|
108
|
+
.filter(Boolean);
|
|
109
|
+
resolve({ lines, code, stderr: stderr.trim(), truncated });
|
|
110
|
+
};
|
|
111
|
+
let child;
|
|
112
|
+
try {
|
|
113
|
+
child = spawn(RG, args, { cwd, windowsHide: true });
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
resolve({ lines: [], code: -1, stderr: String(error), truncated: false });
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const timer = setTimeout(() => {
|
|
120
|
+
try {
|
|
121
|
+
child.kill();
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
/* already gone */
|
|
125
|
+
}
|
|
126
|
+
finish(null, "ripgrep timed out");
|
|
127
|
+
}, TIMEOUT_MS);
|
|
128
|
+
child.stdout?.on("data", (d) => {
|
|
129
|
+
if (truncated)
|
|
130
|
+
return;
|
|
131
|
+
out += d.toString("utf8");
|
|
132
|
+
if (out.length > MAX_BUFFER) {
|
|
133
|
+
out = out.slice(0, MAX_BUFFER);
|
|
134
|
+
truncated = true;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
child.stderr?.on("data", (d) => {
|
|
138
|
+
if (err.length < 8192)
|
|
139
|
+
err += d.toString("utf8");
|
|
140
|
+
});
|
|
141
|
+
child.on("error", () => finish(-1, "ripgrep failed to start"));
|
|
142
|
+
child.on("close", (code) => finish(code, err));
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=ripgrep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ripgrep.js","sourceRoot":"","sources":["../../src/tools/ripgrep.ts"],"names":[],"mappings":"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"}
|