mindweave 0.0.1 → 2.1.1
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 +168 -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 +2574 -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/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,463 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* index.ts — the Chassis: build the code graph from a project and answer queries.
|
|
3
|
+
*
|
|
4
|
+
* This is what the tools and engine talk to (the `Chassis` interface in types.ts).
|
|
5
|
+
* The graph is sourced from the tree-sitter tier ONLY (universal, `name-level`).
|
|
6
|
+
* The LSP tier is consulted per query and takes precedence when it answers; its
|
|
7
|
+
* results are never written back into the graph, so anything reading the graph
|
|
8
|
+
* directly — `relevant`, `outline`, `directorySummary` — is on the tree-sitter
|
|
9
|
+
* tier regardless of whether a language server is running. Building is plain,
|
|
10
|
+
* deterministic work — the `alternator` lane runs it in the background, so it
|
|
11
|
+
* costs no tokens.
|
|
12
|
+
*/
|
|
13
|
+
import { promises as fs } from "node:fs";
|
|
14
|
+
import { dirname, extname, resolve as resolvePath } from "node:path";
|
|
15
|
+
import { walkFiles } from "../../tools/walk.js";
|
|
16
|
+
import { excludedFromSearch } from "../../tools/guard.js";
|
|
17
|
+
import { loadCache, saveCache } from "./cache.js";
|
|
18
|
+
import { CodeGraph } from "./graph.js";
|
|
19
|
+
import { LspManager } from "./lsp.js";
|
|
20
|
+
import { ensureServers, languageIdFor } from "./servers.js";
|
|
21
|
+
import { isSupported, treeSitterExtract, treeSitterSpan } from "./treesitter.js";
|
|
22
|
+
import { isMarkupSupported, extractMarkup, markupSpan } from "./markup.js";
|
|
23
|
+
import { asFileId, makeSymbolId, } from "./types.js";
|
|
24
|
+
const MAX_FILES = 6000; // safety cap for pathological repos
|
|
25
|
+
const MAX_FILE_BYTES = 1_500_000;
|
|
26
|
+
export class CodeChassis {
|
|
27
|
+
root;
|
|
28
|
+
graph = new CodeGraph();
|
|
29
|
+
ready = false;
|
|
30
|
+
lsp;
|
|
31
|
+
langs = new Set();
|
|
32
|
+
/** Per-file size/mtime, so refresh re-indexes only what changed. */
|
|
33
|
+
manifest = new Map();
|
|
34
|
+
timer = null;
|
|
35
|
+
constructor(root, opts = {}) {
|
|
36
|
+
this.root = root;
|
|
37
|
+
this.lsp = opts.lsp === false ? null : new LspManager(root);
|
|
38
|
+
}
|
|
39
|
+
/** Parse one file into the graph (replacing any prior facts for it) and stamp
|
|
40
|
+
* the manifest. `stamp` lets the caller pass a stat it already took. */
|
|
41
|
+
async indexFile(absPath, stamp) {
|
|
42
|
+
const markup = isMarkupSupported(absPath);
|
|
43
|
+
if (!isSupported(absPath) && !markup)
|
|
44
|
+
return;
|
|
45
|
+
const file = asFileId(absPath);
|
|
46
|
+
let buf;
|
|
47
|
+
try {
|
|
48
|
+
buf = await fs.readFile(absPath);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (buf.length > MAX_FILE_BYTES)
|
|
54
|
+
return;
|
|
55
|
+
const text = buf.toString("utf8");
|
|
56
|
+
// Markup files (HTML/CSS) go through the markup tier; code through tree-sitter tags.
|
|
57
|
+
const extraction = markup ? await extractMarkup(absPath, text) : await treeSitterExtract(absPath, text);
|
|
58
|
+
if (!extraction)
|
|
59
|
+
return;
|
|
60
|
+
this.graph.clearFile(file);
|
|
61
|
+
for (const d of extraction.defs) {
|
|
62
|
+
const node = {
|
|
63
|
+
id: makeSymbolId(file, d.name, d.line),
|
|
64
|
+
name: d.name,
|
|
65
|
+
kind: d.kind,
|
|
66
|
+
file,
|
|
67
|
+
line: d.line,
|
|
68
|
+
...(d.endLine !== undefined ? { endLine: d.endLine } : {}),
|
|
69
|
+
signature: d.signature,
|
|
70
|
+
...(d.doc ? { doc: d.doc } : {}),
|
|
71
|
+
};
|
|
72
|
+
this.graph.addSymbol(node);
|
|
73
|
+
}
|
|
74
|
+
for (const r of extraction.refs) {
|
|
75
|
+
const ref = { file, line: r.line, confidence: "name-level" };
|
|
76
|
+
this.graph.addRef(r.name, ref);
|
|
77
|
+
}
|
|
78
|
+
// Resolve relative imports to in-repo files → dependency edges (best-effort).
|
|
79
|
+
for (const imp of extraction.imports) {
|
|
80
|
+
const target = await resolveImportTarget(absPath, imp.spec);
|
|
81
|
+
if (target)
|
|
82
|
+
this.graph.addImport(file, asFileId(target));
|
|
83
|
+
}
|
|
84
|
+
let s = stamp;
|
|
85
|
+
if (!s) {
|
|
86
|
+
try {
|
|
87
|
+
const st = await fs.stat(absPath);
|
|
88
|
+
s = { mtimeMs: st.mtimeMs, size: st.size };
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
/* leave unset */
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (s)
|
|
95
|
+
this.manifest.set(file, s);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Reconcile the graph with disk: re-index files whose size/mtime changed (or
|
|
99
|
+
* are new), drop files that disappeared. First run (empty manifest) indexes
|
|
100
|
+
* everything; later runs touch only what changed. Also notes every supported
|
|
101
|
+
* file to the LSP so a warm (cache-restored) start can still answer `resolved`.
|
|
102
|
+
*/
|
|
103
|
+
async refresh() {
|
|
104
|
+
const walked = await walkFiles(this.root, MAX_FILES);
|
|
105
|
+
// The code graph is a search surface like any other: `definition`,
|
|
106
|
+
// `references`, `relevant` and outline's folder rollup all read out of it. So
|
|
107
|
+
// it must honour the same exclusion grep/glob/read_file do, or indexing becomes
|
|
108
|
+
// the quiet way to surface a secret or another agent's data that every direct
|
|
109
|
+
// route refuses. Filtered at the SOURCE rather than at each query, so a new
|
|
110
|
+
// reader of the graph cannot forget it.
|
|
111
|
+
const files = walked.files.filter((f) => !excludedFromSearch(f.abs));
|
|
112
|
+
const seen = new Set();
|
|
113
|
+
for (const f of files) {
|
|
114
|
+
// Note every file with a known language server — LSP precision can cover
|
|
115
|
+
// languages tree-sitter can't parse (noteFile ignores unknown languages).
|
|
116
|
+
this.lsp?.noteFile(f.abs);
|
|
117
|
+
const lang = languageIdFor(f.abs);
|
|
118
|
+
if (lang && this.lsp)
|
|
119
|
+
this.langs.add(lang);
|
|
120
|
+
// The bulk graph (outline + ranking) covers tree-sitter code + HTML/CSS markup.
|
|
121
|
+
if (!isSupported(f.abs) && !isMarkupSupported(f.abs))
|
|
122
|
+
continue;
|
|
123
|
+
const file = asFileId(f.abs);
|
|
124
|
+
seen.add(file);
|
|
125
|
+
let st;
|
|
126
|
+
try {
|
|
127
|
+
st = await fs.stat(f.abs);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const prev = this.manifest.get(file);
|
|
133
|
+
if (prev && prev.mtimeMs === st.mtimeMs && prev.size === st.size)
|
|
134
|
+
continue; // unchanged
|
|
135
|
+
await this.indexFile(f.abs, { mtimeMs: st.mtimeMs, size: st.size });
|
|
136
|
+
}
|
|
137
|
+
// Files that vanished since last time.
|
|
138
|
+
for (const file of [...this.manifest.keys()]) {
|
|
139
|
+
if (!seen.has(file)) {
|
|
140
|
+
this.graph.clearFile(file);
|
|
141
|
+
this.manifest.delete(file);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
this.ready = true;
|
|
145
|
+
}
|
|
146
|
+
/** Build the whole project graph (the lane calls this in the background). */
|
|
147
|
+
async build() {
|
|
148
|
+
await this.refresh();
|
|
149
|
+
}
|
|
150
|
+
/** Auto-install language servers for the project's languages that don't have
|
|
151
|
+
* one available yet (background, best-effort). No-op when LSP is disabled. */
|
|
152
|
+
async ensureServers(log) {
|
|
153
|
+
if (!this.lsp)
|
|
154
|
+
return;
|
|
155
|
+
await ensureServers(this.langs, log);
|
|
156
|
+
}
|
|
157
|
+
// ── persistence (on-disk cache) ────────────────────────────────────────────
|
|
158
|
+
/** Load a saved graph for this project; returns true if one was restored. */
|
|
159
|
+
async loadFromCache() {
|
|
160
|
+
const snap = await loadCache(this.root);
|
|
161
|
+
if (!snap)
|
|
162
|
+
return false;
|
|
163
|
+
for (const sym of snap.symbols)
|
|
164
|
+
this.graph.addSymbol(sym);
|
|
165
|
+
for (const [name, refs] of snap.refs)
|
|
166
|
+
for (const r of refs)
|
|
167
|
+
this.graph.addRef(name, r);
|
|
168
|
+
for (const [from, tos] of snap.imports ?? [])
|
|
169
|
+
for (const to of tos)
|
|
170
|
+
this.graph.addImport(asFileId(from), asFileId(to));
|
|
171
|
+
for (const [f, s] of snap.manifest)
|
|
172
|
+
this.manifest.set(asFileId(f), s);
|
|
173
|
+
this.ready = true; // usable immediately from cache while refresh runs
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
saveToCache() {
|
|
177
|
+
const snapshot = {
|
|
178
|
+
manifest: [...this.manifest.entries()].map(([f, s]) => [f, s]),
|
|
179
|
+
symbols: this.graph.allSymbols(),
|
|
180
|
+
refs: [...this.graph.allRefs()].map(([n, r]) => [n, [...r]]),
|
|
181
|
+
imports: this.graph.allImports(),
|
|
182
|
+
};
|
|
183
|
+
return saveCache(this.root, snapshot);
|
|
184
|
+
}
|
|
185
|
+
/** Keep the graph fresh in the background by reconciling every `ms`. */
|
|
186
|
+
startReconcile(ms) {
|
|
187
|
+
if (this.timer || ms <= 0)
|
|
188
|
+
return;
|
|
189
|
+
this.timer = setInterval(() => {
|
|
190
|
+
void this.refresh()
|
|
191
|
+
.then(() => this.saveToCache())
|
|
192
|
+
.catch(() => { });
|
|
193
|
+
}, ms);
|
|
194
|
+
// Don't let the interval keep the process alive on its own.
|
|
195
|
+
if (typeof this.timer.unref === "function")
|
|
196
|
+
this.timer.unref();
|
|
197
|
+
}
|
|
198
|
+
// ── Chassis query API ─────────────────────────────────────────────────────
|
|
199
|
+
async outline(absPath) {
|
|
200
|
+
return this.graph.outlineForFile(asFileId(absPath));
|
|
201
|
+
}
|
|
202
|
+
async definition(name) {
|
|
203
|
+
// LSP first (compiler-accurate); fall back to the tree-sitter graph.
|
|
204
|
+
if (this.lsp) {
|
|
205
|
+
const hits = await this.lsp.symbols(name);
|
|
206
|
+
if (hits.length) {
|
|
207
|
+
const symbols = hits.map((h) => {
|
|
208
|
+
const file = asFileId(h.file);
|
|
209
|
+
return { id: makeSymbolId(file, h.name, h.line), name: h.name, kind: h.kind, file, line: h.line };
|
|
210
|
+
});
|
|
211
|
+
return { symbols, confidence: "resolved" };
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return this.graph.definition(name);
|
|
215
|
+
}
|
|
216
|
+
async references(name) {
|
|
217
|
+
if (this.lsp) {
|
|
218
|
+
const hits = await this.lsp.symbols(name);
|
|
219
|
+
if (hits.length) {
|
|
220
|
+
const lsp = this.lsp;
|
|
221
|
+
const refs = await collectLspReferences(hits, (f, l, c) => lsp.references(f, l, c));
|
|
222
|
+
// A language server that located the symbol and reports no callers has
|
|
223
|
+
// ANSWERED — the symbol is unused. Falling through to the graph here would
|
|
224
|
+
// replace that correct answer with name-level string matches, which is how
|
|
225
|
+
// an unused symbol acquires imaginary callers. Only an LSP that could not
|
|
226
|
+
// find the symbol at all falls back.
|
|
227
|
+
return { refs, confidence: "resolved" };
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return this.graph.references(name);
|
|
231
|
+
}
|
|
232
|
+
async span(name, opts = {}) {
|
|
233
|
+
const wantFile = opts.path ? asFileId(opts.path) : null;
|
|
234
|
+
// Locate the symbol (LSP-resolved or graph) to know which file(s) hold it.
|
|
235
|
+
const { symbols } = await this.definition(name);
|
|
236
|
+
const locs = symbols
|
|
237
|
+
.filter((s) => !wantFile || s.file === wantFile)
|
|
238
|
+
.map((s) => ({ file: s.file, kind: s.kind, line: s.line }));
|
|
239
|
+
// A path was given but the symbol isn't in the map — still try that one file
|
|
240
|
+
// directly, so read_symbol works even before the graph has indexed it.
|
|
241
|
+
if (locs.length === 0 && wantFile)
|
|
242
|
+
locs.push({ file: wantFile, kind: "other" });
|
|
243
|
+
const out = [];
|
|
244
|
+
const seen = new Set();
|
|
245
|
+
for (const loc of locs) {
|
|
246
|
+
const near = opts.line ?? loc.line;
|
|
247
|
+
// LSP documentSymbol range first (compiler-accurate), tree-sitter fallback.
|
|
248
|
+
let range = null;
|
|
249
|
+
let confidence = "name-level";
|
|
250
|
+
if (this.lsp) {
|
|
251
|
+
range = await this.lsp.symbolRange(loc.file, name, near);
|
|
252
|
+
if (range)
|
|
253
|
+
confidence = "resolved";
|
|
254
|
+
}
|
|
255
|
+
// A single-line range is almost always a re-export or object-property entry
|
|
256
|
+
// (e.g. `module.exports = { login }`), not the symbol's real body — so cross-check
|
|
257
|
+
// the AST and prefer the LARGER span. This is what stops read_symbol returning one
|
|
258
|
+
// useless line for a `const foo = () => { … }` whose name also appears in an
|
|
259
|
+
// exports block. Also the plain fallback when there's no language server.
|
|
260
|
+
if (!range || range.end <= range.start) {
|
|
261
|
+
try {
|
|
262
|
+
const code = await fs.readFile(loc.file, "utf8");
|
|
263
|
+
const ast = isMarkupSupported(loc.file)
|
|
264
|
+
? await markupSpan(loc.file, code, name, near)
|
|
265
|
+
: await treeSitterSpan(loc.file, code, name, near);
|
|
266
|
+
if (ast && (!range || ast.end - ast.start > range.end - range.start)) {
|
|
267
|
+
range = ast;
|
|
268
|
+
if (confidence !== "resolved")
|
|
269
|
+
confidence = "name-level";
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
/* unreadable — keep whatever the language server gave */
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (!range)
|
|
277
|
+
continue;
|
|
278
|
+
const key = `${loc.file}:${range.start}`;
|
|
279
|
+
if (seen.has(key))
|
|
280
|
+
continue;
|
|
281
|
+
seen.add(key);
|
|
282
|
+
out.push({ file: loc.file, name, kind: loc.kind, start: range.start, end: range.end, confidence });
|
|
283
|
+
}
|
|
284
|
+
return out;
|
|
285
|
+
}
|
|
286
|
+
async directorySummary(absDir) {
|
|
287
|
+
const dirId = asFileId(absDir);
|
|
288
|
+
const files = this.graph.filesUnder(dirId);
|
|
289
|
+
if (files.length === 0)
|
|
290
|
+
return null;
|
|
291
|
+
const fileSet = new Set(files);
|
|
292
|
+
let symbolCount = 0;
|
|
293
|
+
for (const f of files)
|
|
294
|
+
symbolCount += this.graph.symbolsInFile(f).length;
|
|
295
|
+
// A few symbols from the folder, to say what lives here.
|
|
296
|
+
//
|
|
297
|
+
// This used to be the top of a personalized PageRank. The ranking is gone: across
|
|
298
|
+
// every stored session its only tool, `relevant`, was called zero times out of 774
|
|
299
|
+
// tool calls, and a summary listing the first few symbols answers the same question
|
|
300
|
+
// this line is asking without a graph walk behind it.
|
|
301
|
+
const topSymbols = files.flatMap((f) => this.graph.symbolsInFile(f)).slice(0, 8);
|
|
302
|
+
// Folders this one depends on: imports that leave the directory, by their folder.
|
|
303
|
+
const deps = new Set();
|
|
304
|
+
for (const f of files) {
|
|
305
|
+
for (const to of this.graph.dependencies(f)) {
|
|
306
|
+
if (fileSet.has(to))
|
|
307
|
+
continue;
|
|
308
|
+
const d = parentDir(to);
|
|
309
|
+
if (d && d !== dirId)
|
|
310
|
+
deps.add(d);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return { dir: dirId, files: files.length, symbols: symbolCount, topSymbols, dependsOn: [...deps] };
|
|
314
|
+
}
|
|
315
|
+
async diagnostics(absPath) {
|
|
316
|
+
if (!this.lsp)
|
|
317
|
+
return [];
|
|
318
|
+
return this.lsp.diagnostics(absPath);
|
|
319
|
+
}
|
|
320
|
+
async dependents(absPath) {
|
|
321
|
+
// A FileId IS the absolute path, so this is a lookup rather than a conversion —
|
|
322
|
+
// but it goes through asFileId anyway so the branded type is honored in one place
|
|
323
|
+
// and a future change to that encoding cannot silently break the ripple check.
|
|
324
|
+
return this.graph.dependents(asFileId(absPath));
|
|
325
|
+
}
|
|
326
|
+
status() {
|
|
327
|
+
const c = this.graph.counts();
|
|
328
|
+
return {
|
|
329
|
+
ready: this.ready,
|
|
330
|
+
files: c.files,
|
|
331
|
+
symbols: c.symbols,
|
|
332
|
+
resolvedLanguages: this.lsp ? [...this.langs] : [],
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Stop background reconciling and shut language servers down gracefully
|
|
337
|
+
* (LSP `shutdown` then `exit`, then the kill as a backstop). Use this whenever
|
|
338
|
+
* there is still an event loop: session swap, removing a root, `/continue`.
|
|
339
|
+
*/
|
|
340
|
+
async dispose() {
|
|
341
|
+
this.stopTimer();
|
|
342
|
+
await this.lsp?.shutdown();
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* The same teardown with no awaiting anywhere, for a process-exit handler.
|
|
346
|
+
* Node runs no async work during `exit`, so the graceful path cannot be used
|
|
347
|
+
* there and would silently do nothing.
|
|
348
|
+
*/
|
|
349
|
+
disposeSync() {
|
|
350
|
+
this.stopTimer();
|
|
351
|
+
this.lsp?.dispose();
|
|
352
|
+
}
|
|
353
|
+
stopTimer() {
|
|
354
|
+
if (this.timer) {
|
|
355
|
+
clearInterval(this.timer);
|
|
356
|
+
this.timer = null;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
/** The underlying graph (used by the lane's watcher). */
|
|
360
|
+
graphRef() {
|
|
361
|
+
return this.graph;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/** The directory of a forward-slashed file id (as a FileId), or null at the root. */
|
|
365
|
+
function parentDir(file) {
|
|
366
|
+
const at = file.lastIndexOf("/");
|
|
367
|
+
return at > 0 ? file.slice(0, at) : null;
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Every caller of every definition of a name, from a language server.
|
|
371
|
+
*
|
|
372
|
+
* Asks about ALL the definitions the server found, not just the first. A name
|
|
373
|
+
* defined in several places (two classes with a `render`, a helper duplicated per
|
|
374
|
+
* module) has several distinct sets of callers, and answering for an arbitrary one
|
|
375
|
+
* while still claiming `resolved` is worse than the name-level answer it replaces:
|
|
376
|
+
* it is both narrower AND more confident, and `resolved` is what suppresses the
|
|
377
|
+
* "verify with grep" caveat. Deduped by file:line, since two definitions can share
|
|
378
|
+
* a call site (an overload, a re-export).
|
|
379
|
+
*
|
|
380
|
+
* Pure apart from the injected lookup, so the fan-out is testable without a live
|
|
381
|
+
* language server.
|
|
382
|
+
*/
|
|
383
|
+
export async function collectLspReferences(hits, lookup) {
|
|
384
|
+
const refs = [];
|
|
385
|
+
const seen = new Set();
|
|
386
|
+
for (const h of hits) {
|
|
387
|
+
for (const l of await lookup(h.file, h.line, h.character)) {
|
|
388
|
+
const key = `${l.file}:${l.line}`;
|
|
389
|
+
if (seen.has(key))
|
|
390
|
+
continue;
|
|
391
|
+
seen.add(key);
|
|
392
|
+
refs.push({ file: asFileId(l.file), line: l.line, confidence: "resolved" });
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return refs;
|
|
396
|
+
}
|
|
397
|
+
const IMPORT_EXTS = [".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs", ".py"];
|
|
398
|
+
// TS ESM imports carry a `.js` extension that actually resolves to a `.ts` file
|
|
399
|
+
// (`import "./x.js"` → `x.ts`), so a `.js` specifier must also try its TS twin —
|
|
400
|
+
// otherwise a TypeScript project (like Mindweave's own) resolves zero import edges.
|
|
401
|
+
const JS_TS_TWIN = {
|
|
402
|
+
".js": [".ts", ".tsx"],
|
|
403
|
+
".jsx": [".tsx"],
|
|
404
|
+
".mjs": [".mts"],
|
|
405
|
+
".cjs": [".cts"],
|
|
406
|
+
};
|
|
407
|
+
/** Resolve a relative import spec to an existing in-repo file, or null. Bare
|
|
408
|
+
* package specifiers and unresolved paths return null — we only draw edges we
|
|
409
|
+
* can trust. */
|
|
410
|
+
async function resolveImportTarget(fromAbs, spec) {
|
|
411
|
+
if (!spec.startsWith("."))
|
|
412
|
+
return null; // package / absolute module — skip
|
|
413
|
+
const base = resolvePath(dirname(fromAbs), spec);
|
|
414
|
+
const ext = extname(base);
|
|
415
|
+
const stem = ext ? base.slice(0, -ext.length) : base;
|
|
416
|
+
const candidates = [];
|
|
417
|
+
for (const twin of JS_TS_TWIN[ext] ?? [])
|
|
418
|
+
candidates.push(stem + twin); // ./x.js → x.ts
|
|
419
|
+
candidates.push(base); // a literal existing file (real .js/.py, or an exact path)
|
|
420
|
+
if (!ext)
|
|
421
|
+
for (const e of IMPORT_EXTS)
|
|
422
|
+
candidates.push(base + e); // extensionless → try all
|
|
423
|
+
for (const e of IMPORT_EXTS)
|
|
424
|
+
candidates.push(resolvePath(base, "index" + e)); // directory index
|
|
425
|
+
for (const c of candidates) {
|
|
426
|
+
try {
|
|
427
|
+
if ((await fs.stat(c)).isFile())
|
|
428
|
+
return c;
|
|
429
|
+
}
|
|
430
|
+
catch {
|
|
431
|
+
/* not this candidate */
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
return null;
|
|
435
|
+
}
|
|
436
|
+
/** A no-op chassis used until the lane has built a real one (degrades to grep/read). */
|
|
437
|
+
export const NULL_CHASSIS = {
|
|
438
|
+
async outline() {
|
|
439
|
+
return [];
|
|
440
|
+
},
|
|
441
|
+
async definition() {
|
|
442
|
+
return { symbols: [], confidence: "name-level" };
|
|
443
|
+
},
|
|
444
|
+
async references() {
|
|
445
|
+
return { refs: [], confidence: "name-level" };
|
|
446
|
+
},
|
|
447
|
+
async span() {
|
|
448
|
+
return [];
|
|
449
|
+
},
|
|
450
|
+
async directorySummary() {
|
|
451
|
+
return null;
|
|
452
|
+
},
|
|
453
|
+
async diagnostics() {
|
|
454
|
+
return [];
|
|
455
|
+
},
|
|
456
|
+
async dependents() {
|
|
457
|
+
return [];
|
|
458
|
+
},
|
|
459
|
+
status() {
|
|
460
|
+
return { ready: false, files: 0, symbols: 0, resolvedLanguages: [] };
|
|
461
|
+
},
|
|
462
|
+
};
|
|
463
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/alternator/chassis/index.ts"],"names":[],"mappings":"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"}
|