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,351 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* transcript.ts — the chat transcript as a pure state machine (no React/Ink).
|
|
3
|
+
*
|
|
4
|
+
* A committed/tail drain model, because it fixes the two things that made
|
|
5
|
+
* Mindweave's first streaming cut glitch:
|
|
6
|
+
*
|
|
7
|
+
* - WHOLE-BLOCK REVEAL, never typewriter. Streamed text tokens accumulate
|
|
8
|
+
* SILENTLY into `raw`; the assistant block renders nothing until it seals, then
|
|
9
|
+
* the whole text appears at once. No per-character churn, no half-rendered
|
|
10
|
+
* markdown.
|
|
11
|
+
* - A TINY live region. `committed[]` is append-only and feeds Ink's <Static>
|
|
12
|
+
* (printed once → real terminal scrollback you can scroll). `tail[]` holds only
|
|
13
|
+
* in-progress blocks. `drain()` moves the finished prefix of the tail into
|
|
14
|
+
* committed the instant it (and every earlier block) is done — so the
|
|
15
|
+
* live-rendered region stays a few rows, which is what lets the prompt stay
|
|
16
|
+
* pinned and the scrollback scroll without jank.
|
|
17
|
+
*
|
|
18
|
+
* App feeds stream events in as Actions and renders `committed` + `tail`. The one
|
|
19
|
+
* invariant: a block only commits once it AND every earlier tail block is done, so
|
|
20
|
+
* a later block can never print before an earlier one.
|
|
21
|
+
*/
|
|
22
|
+
import { sanitizeStreamText } from "../drivers/registry.js";
|
|
23
|
+
export function initialState() {
|
|
24
|
+
return { committed: [], tail: [], openAsstId: null, raw: "", toolMap: {}, seq: 0, lastReply: "", narrated: false };
|
|
25
|
+
}
|
|
26
|
+
/** Move the contiguous finished prefix of the tail into committed[]. */
|
|
27
|
+
function drain(s) {
|
|
28
|
+
let i = 0;
|
|
29
|
+
while (i < s.tail.length && s.tail[i].done)
|
|
30
|
+
i++;
|
|
31
|
+
if (i === 0)
|
|
32
|
+
return s;
|
|
33
|
+
return { ...s, committed: s.committed.concat(s.tail.slice(0, i)), tail: s.tail.slice(i) };
|
|
34
|
+
}
|
|
35
|
+
function patchTail(s, id, fields) {
|
|
36
|
+
return { ...s, tail: s.tail.map((b) => (b.id === id ? { ...b, ...fields } : b)) };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Remove a tool's row entirely — used for a quiet failure, which the user never sees.
|
|
40
|
+
*
|
|
41
|
+
* Two shapes to unwind. A GROUPED call is one item inside a discovery group, so only
|
|
42
|
+
* that item is dropped; if it was the group's last item the empty group goes too, since
|
|
43
|
+
* an "Exploring… (0)" header would be the very noise this is removing. A STANDALONE call
|
|
44
|
+
* owns its whole block, which is dropped outright.
|
|
45
|
+
*
|
|
46
|
+
* The toolMap entry goes as well, so a late or duplicate event for the same id cannot
|
|
47
|
+
* resurrect a row that was deliberately hidden.
|
|
48
|
+
*/
|
|
49
|
+
function dropTool(s, toolId, blockId) {
|
|
50
|
+
const { [toolId]: _gone, ...toolMap } = s.toolMap;
|
|
51
|
+
const block = s.tail.find((b) => b.id === blockId);
|
|
52
|
+
if (block && block.kind === "tools") {
|
|
53
|
+
const items = block.items.filter((it) => it.toolId !== toolId);
|
|
54
|
+
const tail = items.length > 0 ? s.tail.map((b) => (b.id === blockId ? { ...b, items } : b)) : s.tail.filter((b) => b.id !== blockId);
|
|
55
|
+
return drain({ ...s, tail, toolMap });
|
|
56
|
+
}
|
|
57
|
+
return drain({ ...s, tail: s.tail.filter((b) => b.id !== blockId), toolMap });
|
|
58
|
+
}
|
|
59
|
+
/** Close an open discovery group so it can commit, before any non-grouped event. */
|
|
60
|
+
function closeToolGroup(s) {
|
|
61
|
+
const open = s.tail.find((b) => b.kind === "tools" && !b.done);
|
|
62
|
+
return open ? drain(patchTail(s, open.id, { done: true })) : s;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Seal the streaming assistant block: finalize its text and commit it, or drop it
|
|
66
|
+
* if it never produced visible prose. `asReply` records the text as the turn's
|
|
67
|
+
* reply (for history); narration sealed by a following tool is not the reply.
|
|
68
|
+
*/
|
|
69
|
+
/** Sentences of narration SHOWN between tool calls. */
|
|
70
|
+
export const NARRATION_LINES = 2;
|
|
71
|
+
/**
|
|
72
|
+
* Cut narration to the budget before it reaches the screen.
|
|
73
|
+
*
|
|
74
|
+
* This is a DISPLAY cut, and it is the only version of this rule that actually holds.
|
|
75
|
+
* The prompt asks for two sentences and the engine nudges when it sees more; both are
|
|
76
|
+
* requests, and a model that is mid-deliberation ignores both — measured, repeatedly,
|
|
77
|
+
* with the nudge firing and six-paragraph blocks arriving anyway.
|
|
78
|
+
*
|
|
79
|
+
* The model still receives its own full text, so nothing about its reasoning changes.
|
|
80
|
+
* What changes is that the user reads the first two sentences — the finding and the
|
|
81
|
+
* next step, which is all this position ever carries — instead of the working-out.
|
|
82
|
+
* The reply that ENDS a turn is never touched: that one is the answer.
|
|
83
|
+
*/
|
|
84
|
+
export function trimNarration(text, max = NARRATION_LINES) {
|
|
85
|
+
const trimmed = text.trim();
|
|
86
|
+
if (!trimmed)
|
|
87
|
+
return trimmed;
|
|
88
|
+
// Sentence ends, plus a blank line or a list bullet — a paragraph break is a
|
|
89
|
+
// sentence boundary here even when the punctuation says otherwise.
|
|
90
|
+
const parts = trimmed.split(/(?<=[.!?])\s+|\n{2,}|\n(?=\s*[-*•]|\s*\d+[.)])/);
|
|
91
|
+
const kept = parts.filter((p) => p.trim()).slice(0, max);
|
|
92
|
+
return kept.length >= parts.filter((p) => p.trim()).length ? trimmed : kept.join(" ").trim();
|
|
93
|
+
}
|
|
94
|
+
function sealAssistant(s, asReply) {
|
|
95
|
+
const id = s.openAsstId;
|
|
96
|
+
if (id == null)
|
|
97
|
+
return asReply ? { ...s, lastReply: "" } : s;
|
|
98
|
+
const clean = sanitizeStreamText(s.raw);
|
|
99
|
+
// `asReply` is false exactly when a tool call follows this text, so this is narration
|
|
100
|
+
// between steps. It is TRIMMED to a couple of sentences and otherwise left alone.
|
|
101
|
+
//
|
|
102
|
+
// It used to be capped at one block per TURN, which was aimed at a real problem: a
|
|
103
|
+
// 23-call turn printed 24 blocks and said the same thing in four of them. But the cap
|
|
104
|
+
// is the wrong instrument, because it cannot tell a repetitive model from a quiet one.
|
|
105
|
+
// Against a model that narrates sparingly it does nothing but guarantee silence for the
|
|
106
|
+
// rest of a long turn, which is exactly how the tool came to look like it had stopped
|
|
107
|
+
// responding. The per-block trim already bounds the wall; the cap only bounded the
|
|
108
|
+
// conversation.
|
|
109
|
+
const text = asReply ? clean : trimNarration(clean);
|
|
110
|
+
let next = { ...s, openAsstId: null, raw: "" };
|
|
111
|
+
if (text)
|
|
112
|
+
next = patchTail(next, id, { text, done: true });
|
|
113
|
+
else
|
|
114
|
+
next = { ...next, tail: next.tail.filter((b) => b.id !== id) };
|
|
115
|
+
if (asReply)
|
|
116
|
+
next = { ...next, lastReply: text };
|
|
117
|
+
else if (text)
|
|
118
|
+
next = { ...next, narrated: true };
|
|
119
|
+
return drain(next);
|
|
120
|
+
}
|
|
121
|
+
export function reduce(s, a) {
|
|
122
|
+
switch (a.type) {
|
|
123
|
+
case "clear":
|
|
124
|
+
// Everything the conversation put on screen goes, and `seq` deliberately does
|
|
125
|
+
// NOT. Block ids are React keys: restarting the counter makes the first block of
|
|
126
|
+
// the new conversation collide with a key React has just seen, and Ink reuses the
|
|
127
|
+
// old node instead of mounting a fresh one. Nothing else in the state survives —
|
|
128
|
+
// a half-open assistant block or a toolMap entry pointing at a discarded id would
|
|
129
|
+
// outlive the conversation it belonged to.
|
|
130
|
+
return { ...initialState(), seq: s.seq };
|
|
131
|
+
case "user": {
|
|
132
|
+
const id = s.seq + 1;
|
|
133
|
+
// A new turn: the narration budget refills here and nowhere else.
|
|
134
|
+
return drain({ ...s, seq: id, narrated: false, tail: s.tail.concat({ kind: "user", id, done: true, text: a.text }) });
|
|
135
|
+
}
|
|
136
|
+
case "token": {
|
|
137
|
+
// Accumulate SILENTLY — the assistant block renders nothing until it seals,
|
|
138
|
+
// then the whole text appears at once. We still open the block so a later
|
|
139
|
+
// seal can find it. Narration after a discovery burst closes the group.
|
|
140
|
+
let next = closeToolGroup(s);
|
|
141
|
+
let openId = next.openAsstId;
|
|
142
|
+
if (openId == null) {
|
|
143
|
+
openId = next.seq + 1;
|
|
144
|
+
next = {
|
|
145
|
+
...next,
|
|
146
|
+
seq: openId,
|
|
147
|
+
openAsstId: openId,
|
|
148
|
+
raw: "",
|
|
149
|
+
tail: next.tail.concat({ kind: "assistant", id: openId, done: false, text: "" }),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return { ...next, raw: next.raw + a.delta };
|
|
153
|
+
}
|
|
154
|
+
case "toolStart": {
|
|
155
|
+
// Seal any narration before the tool (commit it) first.
|
|
156
|
+
const sealed = sealAssistant(s, false);
|
|
157
|
+
if (a.group) {
|
|
158
|
+
// A discovery call: fold it into the open group, or open a new one. The
|
|
159
|
+
// group is NOT drained — it stays live so more calls can join it.
|
|
160
|
+
const open = sealed.tail.find((b) => b.kind === "tools" && !b.done);
|
|
161
|
+
if (open && open.kind === "tools") {
|
|
162
|
+
const item = { toolId: a.toolId, name: a.name, arg: a.arg, kind: a.action, status: "running" };
|
|
163
|
+
return {
|
|
164
|
+
...sealed,
|
|
165
|
+
toolMap: { ...sealed.toolMap, [a.toolId]: open.id },
|
|
166
|
+
tail: sealed.tail.map((b) => b.id === open.id && b.kind === "tools" ? { ...b, items: [...b.items, item] } : b),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const gid = sealed.seq + 1;
|
|
170
|
+
return {
|
|
171
|
+
...sealed,
|
|
172
|
+
seq: gid,
|
|
173
|
+
toolMap: { ...sealed.toolMap, [a.toolId]: gid },
|
|
174
|
+
tail: sealed.tail.concat({
|
|
175
|
+
kind: "tools",
|
|
176
|
+
id: gid,
|
|
177
|
+
done: false,
|
|
178
|
+
live: true,
|
|
179
|
+
items: [{ toolId: a.toolId, name: a.name, arg: a.arg, kind: a.action, status: "running" }],
|
|
180
|
+
}),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
// A mutating/standalone tool: close any open group, then show it on its own row.
|
|
184
|
+
const closed = closeToolGroup(sealed);
|
|
185
|
+
const id = closed.seq + 1;
|
|
186
|
+
return drain({
|
|
187
|
+
...closed,
|
|
188
|
+
seq: id,
|
|
189
|
+
toolMap: { ...closed.toolMap, [a.toolId]: id },
|
|
190
|
+
tail: closed.tail.concat({
|
|
191
|
+
kind: "tool",
|
|
192
|
+
id,
|
|
193
|
+
done: false,
|
|
194
|
+
live: true,
|
|
195
|
+
toolId: a.toolId,
|
|
196
|
+
name: a.name,
|
|
197
|
+
arg: a.arg,
|
|
198
|
+
meta: a.meta,
|
|
199
|
+
action: a.action,
|
|
200
|
+
status: "running",
|
|
201
|
+
}),
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
case "toolEnd": {
|
|
205
|
+
const blockId = s.toolMap[a.toolId];
|
|
206
|
+
if (blockId == null)
|
|
207
|
+
return s;
|
|
208
|
+
const block = s.tail.find((b) => b.id === blockId);
|
|
209
|
+
// A quiet failure never becomes a visible row: the model asked for something it
|
|
210
|
+
// could not have, was told why, and will ask again. Showing "could not edit
|
|
211
|
+
// because…" for a step the agent resolves by itself teaches the user to ignore
|
|
212
|
+
// error rows, which is worse than showing nothing. The model still gets the full
|
|
213
|
+
// reason, and the transcript still records it — this is a display decision only.
|
|
214
|
+
if (a.quiet)
|
|
215
|
+
return dropTool(s, a.toolId, blockId);
|
|
216
|
+
if (block && block.kind === "tools") {
|
|
217
|
+
// Resolve this item's status in place AND capture its one-line result, so the
|
|
218
|
+
// group list shows what each call found (195 lines / 12 files), not just a name.
|
|
219
|
+
return patchTail(s, blockId, {
|
|
220
|
+
items: block.items.map((it) => it.toolId === a.toolId ? { ...it, status: a.ok ? "ok" : "error", note: a.summary } : it),
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
return drain(patchTail(s, blockId, {
|
|
224
|
+
status: a.ok ? "ok" : "error",
|
|
225
|
+
summary: a.summary,
|
|
226
|
+
detail: a.detail,
|
|
227
|
+
detailKind: a.detailKind,
|
|
228
|
+
done: true,
|
|
229
|
+
...(a.action ? { action: a.action } : {}),
|
|
230
|
+
...(a.name ? { name: a.name } : {}),
|
|
231
|
+
}));
|
|
232
|
+
}
|
|
233
|
+
case "error": {
|
|
234
|
+
const sealed = sealAssistant(closeToolGroup(s), false);
|
|
235
|
+
const id = sealed.seq + 1;
|
|
236
|
+
return drain({ ...sealed, seq: id, tail: sealed.tail.concat({ kind: "error", id, done: true, text: a.text }) });
|
|
237
|
+
}
|
|
238
|
+
case "endTurn": {
|
|
239
|
+
// The one moment a tool row is allowed to change after it appears, and it
|
|
240
|
+
// changes by exactly one word: "Reading 2 files" → "Read 2 files". Committed
|
|
241
|
+
// rows are patched as well as tail ones — every block is re-rendered each
|
|
242
|
+
// frame (there is no <Static>), so a row that has already scrolled up still
|
|
243
|
+
// settles into the past tense with the rest of the turn.
|
|
244
|
+
const clear = (b) => (b.kind === "tool" || b.kind === "tools") && b.live ? { ...b, live: false } : b;
|
|
245
|
+
return { ...s, committed: s.committed.map(clear), tail: s.tail.map(clear) };
|
|
246
|
+
}
|
|
247
|
+
case "resetReply":
|
|
248
|
+
// Only the buffer, never a committed block: text accumulates into `raw` and is
|
|
249
|
+
// revealed whole on seal, so a draft rejected before it seals was never on screen.
|
|
250
|
+
return { ...s, raw: "" };
|
|
251
|
+
case "sealNarration":
|
|
252
|
+
return sealAssistant(closeToolGroup(s), false);
|
|
253
|
+
case "finishReply":
|
|
254
|
+
return sealAssistant(closeToolGroup(s), true);
|
|
255
|
+
case "completion": {
|
|
256
|
+
const c = closeToolGroup(s);
|
|
257
|
+
const id = c.seq + 1;
|
|
258
|
+
return drain({ ...c, seq: id, tail: c.tail.concat({ kind: "completion", id, done: true, text: a.text }) });
|
|
259
|
+
}
|
|
260
|
+
case "note": {
|
|
261
|
+
const c = closeToolGroup(s);
|
|
262
|
+
const id = c.seq + 1;
|
|
263
|
+
return drain({ ...c, seq: id, tail: c.tail.concat({ kind: "note", id, done: true, text: a.text }) });
|
|
264
|
+
}
|
|
265
|
+
case "context": {
|
|
266
|
+
const c = closeToolGroup(s);
|
|
267
|
+
const id = c.seq + 1;
|
|
268
|
+
return drain({ ...c, seq: id, tail: c.tail.concat({ kind: "context", id, done: true, text: a.text }) });
|
|
269
|
+
}
|
|
270
|
+
case "say": {
|
|
271
|
+
const c = closeToolGroup(s);
|
|
272
|
+
const id = c.seq + 1;
|
|
273
|
+
return drain({ ...c, seq: id, tail: c.tail.concat({ kind: "assistant", id, done: true, text: a.text }) });
|
|
274
|
+
}
|
|
275
|
+
case "notice": {
|
|
276
|
+
const c = closeToolGroup(s);
|
|
277
|
+
const id = c.seq + 1;
|
|
278
|
+
return drain({ ...c, seq: id, tail: c.tail.concat({ kind: "notice", id, done: true, title: a.title, body: a.body }) });
|
|
279
|
+
}
|
|
280
|
+
case "compaction": {
|
|
281
|
+
const c = closeToolGroup(s);
|
|
282
|
+
const id = c.seq + 1;
|
|
283
|
+
return drain({ ...c, seq: id, tail: c.tail.concat({ kind: "compaction", id, done: true, report: a.report }) });
|
|
284
|
+
}
|
|
285
|
+
case "subagentStart": {
|
|
286
|
+
const entry = {
|
|
287
|
+
agentId: a.agentId,
|
|
288
|
+
task: a.task,
|
|
289
|
+
readOnly: a.readOnly,
|
|
290
|
+
status: "running",
|
|
291
|
+
items: [],
|
|
292
|
+
};
|
|
293
|
+
// A worker starting while another is still going JOINS that block rather than
|
|
294
|
+
// opening its own. Read-only workers fan out in parallel, and as separate blocks
|
|
295
|
+
// their rows interleaved into a stripe nobody could follow.
|
|
296
|
+
const open = s.tail.find((b) => b.kind === "subagent" && !b.done);
|
|
297
|
+
if (open && open.kind === "subagent") {
|
|
298
|
+
return patchTail(s, open.id, { agents: [...open.agents, entry] });
|
|
299
|
+
}
|
|
300
|
+
// Otherwise a new nested block: seal any narration, close any open discovery
|
|
301
|
+
// group, then open it. Left LIVE (done:false) so more workers and their tool
|
|
302
|
+
// calls can join it.
|
|
303
|
+
const sealed = closeToolGroup(sealAssistant(s, false));
|
|
304
|
+
const id = sealed.seq + 1;
|
|
305
|
+
return drain({
|
|
306
|
+
...sealed,
|
|
307
|
+
seq: id,
|
|
308
|
+
tail: sealed.tail.concat({ kind: "subagent", id, done: false, agents: [entry] }),
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
case "subToolStart": {
|
|
312
|
+
const item = { toolId: a.toolId, name: a.name, arg: a.arg, kind: a.action, status: "running" };
|
|
313
|
+
return patchAgent(s, a.agentId, (ag) => ({ ...ag, items: [...ag.items, item] }));
|
|
314
|
+
}
|
|
315
|
+
case "subToolEnd": {
|
|
316
|
+
return patchAgent(s, a.agentId, (ag) => ({
|
|
317
|
+
...ag,
|
|
318
|
+
items: ag.items.map((it) => it.toolId === a.toolId ? { ...it, status: a.ok ? "ok" : "error", note: a.summary } : it),
|
|
319
|
+
}));
|
|
320
|
+
}
|
|
321
|
+
case "subagentEnd": {
|
|
322
|
+
// The BLOCK is done only when every worker in it is. One finishing while another
|
|
323
|
+
// is mid-flight must not commit the block and strand the other's rows.
|
|
324
|
+
const next = patchAgent(s, a.agentId, (ag) => ({
|
|
325
|
+
...ag,
|
|
326
|
+
status: a.ok ? "ok" : "error",
|
|
327
|
+
summary: a.summary,
|
|
328
|
+
}));
|
|
329
|
+
const blk = findAgentBlock(next, a.agentId);
|
|
330
|
+
if (!blk)
|
|
331
|
+
return next;
|
|
332
|
+
const allDone = blk.agents.every((ag) => ag.status !== "running");
|
|
333
|
+
return allDone ? drain(patchTail(next, blk.id, { done: true })) : next;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
/** The open sub-agent block containing this worker, if one is in the tail. */
|
|
338
|
+
function findAgentBlock(s, agentId) {
|
|
339
|
+
const blk = s.tail.find((b) => b.kind === "subagent" && !b.done && b.agents.some((ag) => ag.agentId === agentId));
|
|
340
|
+
return blk && blk.kind === "subagent" ? blk : undefined;
|
|
341
|
+
}
|
|
342
|
+
/** Apply a change to ONE worker inside its block, leaving its siblings untouched. */
|
|
343
|
+
function patchAgent(s, agentId, change) {
|
|
344
|
+
const blk = findAgentBlock(s, agentId);
|
|
345
|
+
if (!blk)
|
|
346
|
+
return s;
|
|
347
|
+
return patchTail(s, blk.id, {
|
|
348
|
+
agents: blk.agents.map((ag) => (ag.agentId === agentId ? change(ag) : ag)),
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/cli/transcript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trust.ts — whether Mindweave should ask before working in a folder.
|
|
3
|
+
*
|
|
4
|
+
* Opening somewhere is a permission decision, and it is the widest one there is: every
|
|
5
|
+
* later guard is scoped to the workspace, so the workspace itself is the thing that has
|
|
6
|
+
* to be chosen deliberately. Opened at `D:\` the workspace is the entire drive, and the
|
|
7
|
+
* outside-the-workspace prompt — which exists precisely to catch a write somewhere the
|
|
8
|
+
* user did not intend — can never fire, because nothing on that drive is outside it.
|
|
9
|
+
*
|
|
10
|
+
* Asking once per folder is the established shape for this, and the home directory is
|
|
11
|
+
* the case everyone treats specially: trust is accepted for the session and never
|
|
12
|
+
* written to disk. Drive and filesystem roots join home in that category here, because
|
|
13
|
+
* they are broader still.
|
|
14
|
+
*/
|
|
15
|
+
import { homedir } from "node:os";
|
|
16
|
+
import { join, parse, resolve, sep } from "node:path";
|
|
17
|
+
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
18
|
+
/**
|
|
19
|
+
* A root is "root" when it is a filesystem or drive root (`/`, `D:\`), "home" when it is
|
|
20
|
+
* the user's home directory, and ordinary otherwise.
|
|
21
|
+
*/
|
|
22
|
+
export function rootBreadth(cwd) {
|
|
23
|
+
const abs = resolve(cwd);
|
|
24
|
+
if (abs === parse(abs).root)
|
|
25
|
+
return "root";
|
|
26
|
+
// Trailing separator normalised first: `C:\Users\me\` and `C:\Users\me` are one place.
|
|
27
|
+
const trimmed = abs.endsWith(sep) ? abs.slice(0, -sep.length) : abs;
|
|
28
|
+
const home = resolve(homedir());
|
|
29
|
+
return trimmed.toLowerCase() === home.toLowerCase() ? "home" : "ordinary";
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Should a yes here be remembered for next time?
|
|
33
|
+
*
|
|
34
|
+
* No for the broad ones. Agreeing to work in your home directory once should not quietly
|
|
35
|
+
* make it a trusted workspace forever — the answer was about today's task, and the folder
|
|
36
|
+
* covers everything you own.
|
|
37
|
+
*/
|
|
38
|
+
export function trustPersists(breadth) {
|
|
39
|
+
return breadth === "ordinary";
|
|
40
|
+
}
|
|
41
|
+
/** What the screen says about a root, in the user's terms. */
|
|
42
|
+
export function breadthWarning(breadth, cwd) {
|
|
43
|
+
switch (breadth) {
|
|
44
|
+
case "root":
|
|
45
|
+
return `This is a whole drive. Everything on ${resolve(cwd)} counts as the project, so nothing is outside it.`;
|
|
46
|
+
case "home":
|
|
47
|
+
return "This is your home directory. Everything you own counts as the project, including files that are nothing to do with code.";
|
|
48
|
+
default:
|
|
49
|
+
return "";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Has the user already agreed to work here?
|
|
54
|
+
*
|
|
55
|
+
* Recorded as a file in the project's own state directory rather than in a central
|
|
56
|
+
* list, so it travels with everything else Mindweave keeps about that project and
|
|
57
|
+
* disappears with it. A folder whose trust does not persist (home, a drive root) never
|
|
58
|
+
* writes one, so it is asked every session by design.
|
|
59
|
+
*/
|
|
60
|
+
export function trustMarkerPath(stateDir) {
|
|
61
|
+
return join(stateDir, "trusted");
|
|
62
|
+
}
|
|
63
|
+
export function isTrusted(stateDir, breadth) {
|
|
64
|
+
if (!trustPersists(breadth))
|
|
65
|
+
return false;
|
|
66
|
+
return existsSync(trustMarkerPath(stateDir));
|
|
67
|
+
}
|
|
68
|
+
export function rememberTrust(stateDir, breadth) {
|
|
69
|
+
if (!trustPersists(breadth))
|
|
70
|
+
return;
|
|
71
|
+
try {
|
|
72
|
+
mkdirSync(stateDir, { recursive: true });
|
|
73
|
+
writeFileSync(trustMarkerPath(stateDir), `${new Date().toISOString()}\n`);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Best-effort: failing to record it means being asked again, which is safe.
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/cli/trust.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAK/D;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAC3C,uFAAuF;IACvF,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,OAAO,KAAK,UAAU,CAAC;AAChC,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,GAAW;IAC1D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,wCAAwC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC;QACjH,KAAK,MAAM;YACT,OAAO,0HAA0H,CAAC;QACpI;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAgB;IAC1D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAgB;IAC9D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO;IACpC,IAAI,CAAC;QACH,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* updateCheck.ts — a quiet check for a newer release.
|
|
3
|
+
*
|
|
4
|
+
* Reads exactly one public fact from the registry — the version currently tagged
|
|
5
|
+
* `latest` — the same request `npm install` itself makes. Nothing describing the
|
|
6
|
+
* user leaves the machine: no identifier, no payload, nothing that makes this the
|
|
7
|
+
* telemetry the project promises it does not have. Still opt-out
|
|
8
|
+
* (MINDWEAVE_NO_UPDATE_CHECK), because a network call at startup a user cannot turn
|
|
9
|
+
* off reads as a small breach of that promise even when it is harmless.
|
|
10
|
+
*
|
|
11
|
+
* Checked at most once a day, cached in ~/.mindweave/update-check.json, so an
|
|
12
|
+
* ordinary session never adds a network round trip to every launch. Fails silent on
|
|
13
|
+
* every path — a slow or unreachable registry must never be the reason the app
|
|
14
|
+
* hesitates, errors, or even prints a warning.
|
|
15
|
+
*/
|
|
16
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
17
|
+
import { join } from "node:path";
|
|
18
|
+
import { globalConfigDir } from "./bootstrap.js";
|
|
19
|
+
import { appVersion } from "./version.js";
|
|
20
|
+
const REGISTRY_URL = "https://registry.npmjs.org/mindweave/latest";
|
|
21
|
+
const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
22
|
+
const FETCH_TIMEOUT_MS = 3000;
|
|
23
|
+
function cachePath() {
|
|
24
|
+
return join(globalConfigDir(), "update-check.json");
|
|
25
|
+
}
|
|
26
|
+
function readCache() {
|
|
27
|
+
try {
|
|
28
|
+
const raw = JSON.parse(readFileSync(cachePath(), "utf8"));
|
|
29
|
+
if (typeof raw.checkedAt === "number" && typeof raw.latest === "string")
|
|
30
|
+
return raw;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// No cache yet, or it is corrupt — treat as absent rather than crashing on it.
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
function writeCache(cache) {
|
|
38
|
+
try {
|
|
39
|
+
writeFileSync(cachePath(), JSON.stringify(cache));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// A read-only disk should not turn a version check into a startup failure.
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Plain x.y.z compare. Positive when `a` is newer than `b`. A missing or
|
|
47
|
+
* non-numeric part reads as 0 rather than throwing, so a malformed string from the
|
|
48
|
+
* registry — or from a stale cache file — degrades to "no update" instead of a crash.
|
|
49
|
+
*/
|
|
50
|
+
export function compareVersions(a, b) {
|
|
51
|
+
const parts = (v) => v.split(".").map((n) => Number.parseInt(n, 10) || 0);
|
|
52
|
+
const pa = parts(a);
|
|
53
|
+
const pb = parts(b);
|
|
54
|
+
for (let i = 0; i < 3; i++) {
|
|
55
|
+
const diff = (pa[i] ?? 0) - (pb[i] ?? 0);
|
|
56
|
+
if (diff !== 0)
|
|
57
|
+
return diff;
|
|
58
|
+
}
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
async function fetchLatest(fetchImpl) {
|
|
62
|
+
const controller = new AbortController();
|
|
63
|
+
const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
64
|
+
try {
|
|
65
|
+
const res = await fetchImpl(REGISTRY_URL, { signal: controller.signal });
|
|
66
|
+
if (!res.ok)
|
|
67
|
+
return null;
|
|
68
|
+
const body = (await res.json());
|
|
69
|
+
return typeof body.version === "string" ? body.version : null;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Offline, DNS failure, a timeout, a non-JSON body — all the same outcome: no answer.
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
clearTimeout(timer);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The newer version string if one is genuinely available, else null. Every
|
|
81
|
+
* dependency is injectable so a test never touches the real registry or the real
|
|
82
|
+
* disk; production code calls it with no arguments.
|
|
83
|
+
*/
|
|
84
|
+
export async function checkForUpdate(deps = {}) {
|
|
85
|
+
if (process.env.MINDWEAVE_NO_UPDATE_CHECK)
|
|
86
|
+
return null;
|
|
87
|
+
const running = deps.running ?? appVersion();
|
|
88
|
+
if (!running)
|
|
89
|
+
return null;
|
|
90
|
+
const now = deps.now ?? Date.now();
|
|
91
|
+
const readC = deps.readCacheImpl ?? readCache;
|
|
92
|
+
const writeC = deps.writeCacheImpl ?? writeCache;
|
|
93
|
+
const fetchImpl = deps.fetchImpl ?? fetch;
|
|
94
|
+
const cached = readC();
|
|
95
|
+
if (cached && now - cached.checkedAt < CHECK_INTERVAL_MS) {
|
|
96
|
+
return compareVersions(cached.latest, running) > 0 ? cached.latest : null;
|
|
97
|
+
}
|
|
98
|
+
const latest = await fetchLatest(fetchImpl);
|
|
99
|
+
// A failed fetch writes nothing: a machine that is genuinely offline should try
|
|
100
|
+
// again on its next launch rather than going quiet for a full day on the strength
|
|
101
|
+
// of one bad request.
|
|
102
|
+
if (!latest)
|
|
103
|
+
return null;
|
|
104
|
+
writeC({ checkedAt: now, latest });
|
|
105
|
+
return compareVersions(latest, running) > 0 ? latest : null;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=updateCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../src/cli/updateCheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* version.ts — the version shown in the banner, read from package.json.
|
|
3
|
+
*
|
|
4
|
+
* It was a literal in App.tsx, in two places, and it drifted: the banner said
|
|
5
|
+
* v0.0.1 through three releases. That kind of bug cannot fail — it type-checks,
|
|
6
|
+
* every test passes, nothing throws — it is simply false, on screen, every single
|
|
7
|
+
* launch. So the literal goes and there is exactly one source of truth.
|
|
8
|
+
*
|
|
9
|
+
* Read from disk rather than imported, because a JSON import needs an assertion
|
|
10
|
+
* and a resolver flag this build doesn't carry. Read once, cached; a missing or
|
|
11
|
+
* unparseable package.json degrades to no version rather than crashing the UI.
|
|
12
|
+
*/
|
|
13
|
+
import { readFileSync } from "node:fs";
|
|
14
|
+
import { fileURLToPath } from "node:url";
|
|
15
|
+
import { dirname, join } from "node:path";
|
|
16
|
+
let cached = null;
|
|
17
|
+
/** The package version, e.g. "1.1.2". Empty string if it can't be determined. */
|
|
18
|
+
export function appVersion() {
|
|
19
|
+
if (cached !== null)
|
|
20
|
+
return cached;
|
|
21
|
+
cached = "";
|
|
22
|
+
// dist/cli/version.js and src/cli/version.ts are both two levels below the root.
|
|
23
|
+
const root = join(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
24
|
+
try {
|
|
25
|
+
const pkg = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
|
|
26
|
+
if (typeof pkg.version === "string")
|
|
27
|
+
cached = pkg.version;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// No package.json (or it's malformed) — show no version rather than a wrong one.
|
|
31
|
+
}
|
|
32
|
+
return cached;
|
|
33
|
+
}
|
|
34
|
+
/** The banner's tagline, with the version when we know it. */
|
|
35
|
+
export function versionLabel() {
|
|
36
|
+
const v = appVersion();
|
|
37
|
+
return v ? ` — terminal coding agent (v${v})` : " — terminal coding agent";
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC,iFAAiF;AACjF,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACnC,MAAM,GAAG,EAAE,CAAC;IACZ,iFAAiF;IACjF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAA0B,CAAC;QAClG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,iFAAiF;IACnF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,YAAY;IAC1B,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,OAAO,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,0BAA0B,CAAC;AAC7E,CAAC"}
|