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,125 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* KeySetup.tsx — the first screen a new user sees.
|
|
4
|
+
*
|
|
5
|
+
* Two steps in one place. The LIST shows every provider Mindweave speaks to, with the
|
|
6
|
+
* ones already set up marked, and a Continue row that lights up as soon as one of them
|
|
7
|
+
* is. Choosing a provider opens a single masked field for its key; saving returns to the
|
|
8
|
+
* list, so someone who wants two or five keys just keeps going.
|
|
9
|
+
*
|
|
10
|
+
* It replaced a screen that asked for the DEFAULT provider's key and nothing else, which
|
|
11
|
+
* meant a user holding a key for any of the other twelve had no way in at all.
|
|
12
|
+
*
|
|
13
|
+
* Height matters here as it does in the footer: thirteen providers plus a Continue row
|
|
14
|
+
* plus the header does not fit a short terminal, so the list scrolls around the
|
|
15
|
+
* selection rather than being clipped at the bottom where Continue lives.
|
|
16
|
+
*/
|
|
17
|
+
import { Box, Text } from "ink";
|
|
18
|
+
import TextInput from "ink-text-input";
|
|
19
|
+
import { FirstRunFrame, FIRST_RUN_TIPS } from "./FirstRunFrame.js";
|
|
20
|
+
import { stripMouse } from "../mouse.js";
|
|
21
|
+
import { useState } from "react";
|
|
22
|
+
import { useInput } from "ink";
|
|
23
|
+
import { initialRow } from "../keySetup.js";
|
|
24
|
+
/** Rows visible at once, so the screen fits a small terminal. */
|
|
25
|
+
/**
|
|
26
|
+
* How many providers fit alongside everything else on the screen.
|
|
27
|
+
*
|
|
28
|
+
* Derived from the terminal height rather than fixed, because the first launch also
|
|
29
|
+
* carries a welcome and four tips — measured, a fixed nine overflowed a 30-row window by
|
|
30
|
+
* a line, and the line it lost was the bottom of the list.
|
|
31
|
+
*/
|
|
32
|
+
function windowFor(rows, hasTips) {
|
|
33
|
+
const chrome = hasTips ? 22 : 18;
|
|
34
|
+
return Math.max(4, Math.min(9, rows - chrome));
|
|
35
|
+
}
|
|
36
|
+
export function KeySetup({ view, rows, version, envPath, docsUrl, onSaveKey, onContinue, active = true, onCancel }) {
|
|
37
|
+
const [sel, setSel] = useState(() => initialRow(view));
|
|
38
|
+
const [entering, setEntering] = useState(null);
|
|
39
|
+
const [value, setValue] = useState("");
|
|
40
|
+
// Continue sits after the providers, as one more row, so there is a single list to
|
|
41
|
+
// move through rather than a list plus a separate control with its own key.
|
|
42
|
+
const rowCount = view.rows.length + 1;
|
|
43
|
+
const onContinueRow = sel === view.rows.length;
|
|
44
|
+
useInput((input, key) => {
|
|
45
|
+
// Escape is handled FIRST, and even while the field owns the keyboard. Choosing a
|
|
46
|
+
// provider and then finding no way back to the list is the trap people hit
|
|
47
|
+
// immediately, and "submit nothing to go back" is a rule nobody should have to
|
|
48
|
+
// learn. On the list itself it only leaves when there is somewhere to leave to —
|
|
49
|
+
// a first run has no session behind it.
|
|
50
|
+
if (key.escape) {
|
|
51
|
+
if (entering) {
|
|
52
|
+
setEntering(null);
|
|
53
|
+
setValue("");
|
|
54
|
+
}
|
|
55
|
+
else
|
|
56
|
+
onCancel?.();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (entering)
|
|
60
|
+
return; // everything else belongs to the field
|
|
61
|
+
if (key.upArrow)
|
|
62
|
+
setSel((s) => (s - 1 + rowCount) % rowCount);
|
|
63
|
+
else if (key.downArrow)
|
|
64
|
+
setSel((s) => (s + 1) % rowCount);
|
|
65
|
+
else if (key.return)
|
|
66
|
+
choose(sel);
|
|
67
|
+
else {
|
|
68
|
+
// ONE keypress commits, so only single digits can ever arrive here: typing "1"
|
|
69
|
+
// for row 11 picks row 1 before the second key is pressed. The hint below says
|
|
70
|
+
// 1-9 for that reason — it used to advertise the full range, which was a
|
|
71
|
+
// shortcut four providers did not have, Gemini among them.
|
|
72
|
+
const n = Number.parseInt(input, 10);
|
|
73
|
+
if (Number.isInteger(n) && n >= 1 && n <= Math.min(9, view.rows.length))
|
|
74
|
+
choose(n - 1);
|
|
75
|
+
}
|
|
76
|
+
}, { isActive: active });
|
|
77
|
+
function choose(index) {
|
|
78
|
+
if (index === view.rows.length) {
|
|
79
|
+
// Ignored rather than refused: a row that cannot act yet says so in its own label,
|
|
80
|
+
// and an error for pressing Enter on it would be noise.
|
|
81
|
+
if (view.canContinue)
|
|
82
|
+
onContinue();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const row = view.rows[index];
|
|
86
|
+
if (row) {
|
|
87
|
+
setValue("");
|
|
88
|
+
setEntering(row);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (entering) {
|
|
92
|
+
return (_jsxs(FirstRunFrame, { rows: rows, version: version, children: [_jsxs(Text, { children: ["Paste your ", _jsx(Text, { bold: true, children: entering.label }), " API key:"] }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: " key › " }), _jsx(TextInput, { value: value,
|
|
93
|
+
// Mouse reports arrive at a focused field as TYPED TEXT once wheel reporting is
|
|
94
|
+
// on, so scrolling while pasting a key fills it with escape sequences and the
|
|
95
|
+
// key fails in a way that looks like the key itself is wrong. The prompt has
|
|
96
|
+
// stripped these for a long time; these fields are new and did not.
|
|
97
|
+
onChange: (v) => setValue(stripMouse(v)), onSubmit: (v) => {
|
|
98
|
+
const key = v.trim();
|
|
99
|
+
// An empty submit is how you back out — there is nothing to save, and
|
|
100
|
+
// needing a separate key for "never mind" on a field is one more thing to
|
|
101
|
+
// explain on the first screen anyone sees.
|
|
102
|
+
if (key)
|
|
103
|
+
onSaveKey(entering, key);
|
|
104
|
+
setEntering(null);
|
|
105
|
+
setValue("");
|
|
106
|
+
}, placeholder: "paste, then press Enter", mask: "\u2022" })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["Don't have one? Get a key at ", entering.keysUrl] }), _jsxs(Text, { dimColor: true, children: ["Saved to ", envPath, " \u2014 on this machine only, sent only to ", entering.label, "."] }), _jsx(Text, { dimColor: true, children: "Esc to go back to the list." })] })] }));
|
|
107
|
+
}
|
|
108
|
+
const win = windowFor(rows, view.readyCount === 0);
|
|
109
|
+
const start = windowStart(sel, rowCount, win);
|
|
110
|
+
return (_jsxs(FirstRunFrame, { rows: rows, version: version, subtitle: view.readyCount === 0
|
|
111
|
+
? "Welcome — a coding agent that runs in your terminal, on your own key."
|
|
112
|
+
: `Ready: ${view.rows.filter((r) => r.ready).map((r) => r.label).join(", ")}. Add more, or continue.`, tips: view.readyCount === 0 ? FIRST_RUN_TIPS : undefined, children: [_jsx(Text, { children: "Add a key for whichever provider you already use \u2014 one is enough." }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [view.rows.slice(start, start + win).map((row, i) => {
|
|
113
|
+
const index = start + i;
|
|
114
|
+
const on = index === sel;
|
|
115
|
+
return (_jsxs(Box, { children: [_jsxs(Text, { color: on ? "cyan" : undefined, bold: on, children: [on ? " › " : " ", `${String(index + 1).padStart(2)} `] }), _jsx(Box, { width: 16, children: _jsx(Text, { color: on ? "cyan" : undefined, bold: on, wrap: "truncate-end", children: row.label }) }), _jsx(Text, { color: row.ready ? "green" : undefined, dimColor: !row.ready, children: row.ready ? "✓ key added" : row.envVar })] }, row.id));
|
|
116
|
+
}), start + win < view.rows.length ? (_jsx(Text, { dimColor: true, children: ` … ${view.rows.length - start - win} more below` })) : null, _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: onContinueRow ? "cyan" : undefined, bold: onContinueRow, dimColor: !view.canContinue, children: [onContinueRow ? " › " : " ", view.canContinue ? "Continue → start chatting" : "Continue → (add a key first)"] }) })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["\u2191/\u2193 to move \u00B7 1-", Math.min(9, view.rows.length), " to jump \u00B7 Enter to choose", onCancel ? " · Esc to leave" : ""] }), _jsxs(Text, { dimColor: true, children: ["Keys are saved to ", envPath, ", on this machine only. Learn more: ", docsUrl] })] })] }));
|
|
117
|
+
}
|
|
118
|
+
/** Scroll the window so the selection stays inside it. */
|
|
119
|
+
export function windowStart(sel, rowCount, size) {
|
|
120
|
+
if (rowCount <= size)
|
|
121
|
+
return 0;
|
|
122
|
+
const half = Math.floor(size / 2);
|
|
123
|
+
return Math.max(0, Math.min(sel - half, rowCount - 1 - size));
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=KeySetup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeySetup.js","sourceRoot":"","sources":["../../../src/cli/components/KeySetup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* MenuFrame — the ONE bordered box every navigation/decision surface renders inside.
|
|
4
|
+
*
|
|
5
|
+
* It is a pure wrapper: just the border, padding and top separation. The `/` command
|
|
6
|
+
* menu and every Picker (provider, model, reasoning, session resume, shells, MCP,
|
|
7
|
+
* forbidden-lift) render their own header/rows/hint as this box's CHILDREN. The point
|
|
8
|
+
* is that the caller renders exactly one MenuFrame at one position, so as you move from
|
|
9
|
+
* `/` into an option React keeps this box mounted and only its children change — the box
|
|
10
|
+
* never gets torn down and rebuilt, so it doesn't flicker or jump. One box, always the
|
|
11
|
+
* same; the content inside is what changes. Keeping the border in one place is also what
|
|
12
|
+
* stops the surfaces drifting into different looks.
|
|
13
|
+
*
|
|
14
|
+
* Same box treatment as the input field above it — single gray border, one column of
|
|
15
|
+
* horizontal padding, a blank row of separation above. `flexShrink:0` on the frame (and
|
|
16
|
+
* on every row a caller puts inside it) so a footer that's over budget clips cleanly at
|
|
17
|
+
* the bottom rather than compressing its own border lines into the rows (confirmed with
|
|
18
|
+
* a bare Ink render; see the chat viewport's own rows in App.tsx for the same reason).
|
|
19
|
+
*/
|
|
20
|
+
import { Box } from "ink";
|
|
21
|
+
export function MenuFrame({ width, children }) {
|
|
22
|
+
return (_jsx(Box, { flexDirection: "column", width: width, flexShrink: 0, borderStyle: "single", borderColor: "gray", paddingX: 1, marginTop: 1, children: children }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=MenuFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuFrame.js","sourceRoot":"","sources":["../../../src/cli/components/MenuFrame.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1B,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAA0C;IACnF,OAAO,CACL,KAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,CAAC,EACb,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,CAAC,YAEX,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Picker — a reusable interactive list, the one selection primitive for the whole
|
|
4
|
+
* UI. The session resume list (`/continue`), the model/reasoning choosers
|
|
5
|
+
* (`/model`, `/think`), and the forbidden-lift approval prompt all render through
|
|
6
|
+
* this, so selection looks and feels identical everywhere.
|
|
7
|
+
*
|
|
8
|
+
* It owns only a highlight index. ↑/↓ move (wrapping), Enter selects, Esc cancels.
|
|
9
|
+
* Like the input box, it captures keys via `useInput`; the caller gates it with
|
|
10
|
+
* `active` so exactly one input owner is live at a time (the prompt is disabled
|
|
11
|
+
* while a picker is open).
|
|
12
|
+
*/
|
|
13
|
+
import { useState } from "react";
|
|
14
|
+
import { Box, Text, useInput } from "ink";
|
|
15
|
+
import { clipRows } from "../wrap.js";
|
|
16
|
+
const MAX_VISIBLE = 10;
|
|
17
|
+
/**
|
|
18
|
+
* The title is clipped to this many rendered rows, wrapping included.
|
|
19
|
+
*
|
|
20
|
+
* The list has always been windowed; the title was not, and that was the whole bug.
|
|
21
|
+
* A picker renders in the FOOTER, whose height is measured and subtracted from the
|
|
22
|
+
* chat — but nothing bounded it, so a caller passing long text (exit_plan passed an
|
|
23
|
+
* entire 40-step plan) pushed the frame past `stdout.rows`. Ink then swaps to
|
|
24
|
+
* clearTerminal-and-redraw, stops tracking how many lines it wrote, and the screen
|
|
25
|
+
* tears: header stranded at the top, no input box, scrolling moves a sliver.
|
|
26
|
+
*
|
|
27
|
+
* The fix that lasts is here rather than in the callers. A caller can be careless and
|
|
28
|
+
* the worst outcome is a truncated prompt, not an unusable app — long context belongs
|
|
29
|
+
* in `detail`, which prints to the transcript (see ToolContext.requestApproval).
|
|
30
|
+
*/
|
|
31
|
+
const MAX_TITLE_ROWS = 6;
|
|
32
|
+
export function Picker({ title, items, onSelect, onCancel, width, active = true, initialIndex = 0, maxTitleRows = MAX_TITLE_ROWS, maxRows = MAX_VISIBLE, }) {
|
|
33
|
+
// Same window size as the command menu (App clamps maxRows to a safe ceiling), so the
|
|
34
|
+
// picker box and the command box are the SAME fixed height.
|
|
35
|
+
const visible = Math.max(1, maxRows);
|
|
36
|
+
const [sel, setSel] = useState(Math.min(Math.max(0, initialIndex), Math.max(0, items.length - 1)));
|
|
37
|
+
useInput((_input, key) => {
|
|
38
|
+
if (key.upArrow)
|
|
39
|
+
setSel((s) => (s - 1 + items.length) % items.length);
|
|
40
|
+
else if (key.downArrow)
|
|
41
|
+
setSel((s) => (s + 1) % items.length);
|
|
42
|
+
else if (key.return)
|
|
43
|
+
onSelect(sel);
|
|
44
|
+
// Esc closes, and so does Backspace/Delete: the input line above is empty, so a
|
|
45
|
+
// delete is the natural "take it back" — the same gesture that removes the `/` and
|
|
46
|
+
// closes the command menu. Without it the only way out was Esc, which is not
|
|
47
|
+
// discoverable when your instinct is to delete what you just chose.
|
|
48
|
+
else if (key.escape || key.backspace || key.delete)
|
|
49
|
+
onCancel();
|
|
50
|
+
}, { isActive: active && items.length > 0 });
|
|
51
|
+
// A scrolling window so a long list never blows past the visible rows.
|
|
52
|
+
const start = Math.min(Math.max(0, sel - (visible - 1)), Math.max(0, items.length - visible));
|
|
53
|
+
const shown = items.slice(start, start + visible);
|
|
54
|
+
const labelWidth = Math.min(40, Math.max(...items.map((i) => i.label.length), 1));
|
|
55
|
+
// Widths subtract the input box's chrome — border (2) + paddingX (2) = 4 — plus the
|
|
56
|
+
// 2-col prefix, so a truncated label/description ends INSIDE the border rather than
|
|
57
|
+
// overflowing the row and wrapping onto a blank continuation line.
|
|
58
|
+
const rowWidth = width - 4;
|
|
59
|
+
const descWidth = Math.max(4, rowWidth - 2 - labelWidth);
|
|
60
|
+
// Where you are in the list, on the title row. A window over a long list otherwise gives
|
|
61
|
+
// no sign that there is more of it, and the rows that used to say so were removed for
|
|
62
|
+
// changing the box's height as you reached the ends. A counter on a row that already
|
|
63
|
+
// exists says the same thing and cannot resize anything.
|
|
64
|
+
const counter = items.length > visible ? ` ${sel + 1} of ${items.length}` : "";
|
|
65
|
+
const titleRows = clipRows(title, Math.max(4, rowWidth - counter.length), maxTitleRows);
|
|
66
|
+
// Blank rows so title + list is a fixed count, matching the command menu's header(1) +
|
|
67
|
+
// maxRows. The box is then the SAME height as the command box and never resizes when a
|
|
68
|
+
// shorter list is shown — the surplus is empty space, not a smaller box.
|
|
69
|
+
const pad = Math.max(0, maxRows + 1 - titleRows.length - shown.length);
|
|
70
|
+
// Content only — the surrounding box is the ONE input box in PromptInput, shared with
|
|
71
|
+
// the input line, so opening this picker from the command menu swaps the box's
|
|
72
|
+
// contents rather than replacing the box. Same header treatment as the command menu:
|
|
73
|
+
// a plain bold label, not a loud colour, so every surface reads as one family. The
|
|
74
|
+
// description sits in its own fixed-width Box for the same reason as the command
|
|
75
|
+
// menu's — a bare Text has nothing to truncate against and wraps instead.
|
|
76
|
+
return (_jsxs(_Fragment, { children: [titleRows.map((line, i) => (_jsxs(Box, { width: rowWidth, flexShrink: 0, children: [_jsx(Text, { bold: true, wrap: "truncate-end", children: line }), i === 0 && counter ? _jsx(Text, { dimColor: true, children: counter }) : null] }, `t${i}`))), shown.map((item, i) => {
|
|
77
|
+
const idx = start + i;
|
|
78
|
+
const activeRow = idx === sel;
|
|
79
|
+
return (_jsxs(Box, { width: rowWidth, flexShrink: 0, children: [_jsxs(Text, { color: activeRow ? "cyan" : undefined, bold: activeRow, children: [activeRow ? "› " : " ", item.label.padEnd(labelWidth)] }), item.description ? (_jsx(Box, { width: descWidth, children: _jsx(Text, { dimColor: true, wrap: "truncate-end", children: " " + item.description }) })) : null] }, idx));
|
|
80
|
+
}), Array.from({ length: pad }).map((_, i) => (_jsx(Box, { flexShrink: 0, children: _jsx(Text, { children: " " }) }, `pad${i}`))), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: "↑/↓ move · Enter select · Esc or ⌫ back" }) })] }));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=Picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Picker.js","sourceRoot":"","sources":["../../../src/cli/components/Picker.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA2BtC,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;;;;;;;;;;;;GAaG;AACH,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,UAAU,MAAM,CAAC,EACrB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,GAAG,IAAI,EACb,YAAY,GAAG,CAAC,EAChB,YAAY,GAAG,cAAc,EAC7B,OAAO,GAAG,WAAW,GACT;IACZ,sFAAsF;IACtF,4DAA4D;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnG,QAAQ,CACN,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACd,IAAI,GAAG,CAAC,OAAO;YAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;aACjE,IAAI,GAAG,CAAC,SAAS;YAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;aACzD,IAAI,GAAG,CAAC,MAAM;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,gFAAgF;QAChF,mFAAmF;QACnF,6EAA6E;QAC7E,oEAAoE;aAC/D,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM;YAAE,QAAQ,EAAE,CAAC;IACjE,CAAC,EACD,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CACzC,CAAC;IAEF,uEAAuE;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAElF,oFAAoF;IACpF,oFAAoF;IACpF,mEAAmE;IACnE,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IACzD,yFAAyF;IACzF,sFAAsF;IACtF,qFAAqF;IACrF,yDAAyD;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;IAExF,uFAAuF;IACvF,uFAAuF;IACvF,yEAAyE;IACzE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEvE,sFAAsF;IACtF,+EAA+E;IAC/E,qFAAqF;IACrF,mFAAmF;IACnF,iFAAiF;IACjF,0EAA0E;IAC1E,OAAO,CACL,8BACG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,MAAC,GAAG,IAAe,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,aAC/C,KAAC,IAAI,IAAC,IAAI,QAAC,IAAI,EAAC,cAAc,YAAE,IAAI,GAAQ,EAC3C,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,GAAQ,CAAC,CAAC,CAAC,IAAI,KAFpD,IAAI,CAAC,EAAE,CAGX,CACP,CAAC,EACD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACrB,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;gBACtB,MAAM,SAAS,GAAG,GAAG,KAAK,GAAG,CAAC;gBAC9B,OAAO,CACL,MAAC,GAAG,IAAW,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,aAC3C,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,aACzD,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IACzB,EACN,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAClB,KAAC,GAAG,IAAC,KAAK,EAAE,SAAS,YACnB,KAAC,IAAI,IAAC,QAAQ,QAAC,IAAI,EAAC,cAAc,YAAE,IAAI,GAAG,IAAI,CAAC,WAAW,GAAQ,GAC/D,CACP,CAAC,CAAC,CAAC,IAAI,KATA,GAAG,CAUP,CACP,CAAC;YACJ,CAAC,CAAC,EACD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzC,KAAC,GAAG,IAAiB,UAAU,EAAE,CAAC,YAAE,KAAC,IAAI,oBAAS,IAAxC,MAAM,CAAC,EAAE,CAAqC,CACzD,CAAC,EACF,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAIhB,KAAC,IAAI,IAAC,QAAQ,kBAAE,yCAAyC,GAAQ,GAC7D,IACL,CACJ,CAAC;AACJ,CAAC"}
|