@trenchwork/erosolar 1.1.16
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 +21 -0
- package/README.md +232 -0
- package/agents/erosolar-code.rules.json +199 -0
- package/dist/bin/cliMode.d.ts +8 -0
- package/dist/bin/cliMode.d.ts.map +1 -0
- package/dist/bin/cliMode.js +20 -0
- package/dist/bin/cliMode.js.map +1 -0
- package/dist/bin/deepseek.d.ts +3 -0
- package/dist/bin/deepseek.d.ts.map +1 -0
- package/dist/bin/deepseek.js +232 -0
- package/dist/bin/deepseek.js.map +1 -0
- package/dist/bin/erosolar.d.ts +7 -0
- package/dist/bin/erosolar.d.ts.map +1 -0
- package/dist/bin/erosolar.js +7 -0
- package/dist/bin/erosolar.js.map +1 -0
- package/dist/bin/selfTest.d.ts +14 -0
- package/dist/bin/selfTest.d.ts.map +1 -0
- package/dist/bin/selfTest.js +298 -0
- package/dist/bin/selfTest.js.map +1 -0
- package/dist/capabilities/baseCapability.d.ts +72 -0
- package/dist/capabilities/baseCapability.d.ts.map +1 -0
- package/dist/capabilities/baseCapability.js +183 -0
- package/dist/capabilities/baseCapability.js.map +1 -0
- package/dist/capabilities/bashCapability.d.ts +13 -0
- package/dist/capabilities/bashCapability.d.ts.map +1 -0
- package/dist/capabilities/bashCapability.js +24 -0
- package/dist/capabilities/bashCapability.js.map +1 -0
- package/dist/capabilities/editCapability.d.ts +17 -0
- package/dist/capabilities/editCapability.d.ts.map +1 -0
- package/dist/capabilities/editCapability.js +27 -0
- package/dist/capabilities/editCapability.js.map +1 -0
- package/dist/capabilities/enhancedGitCapability.d.ts +7 -0
- package/dist/capabilities/enhancedGitCapability.d.ts.map +1 -0
- package/dist/capabilities/enhancedGitCapability.js +220 -0
- package/dist/capabilities/enhancedGitCapability.js.map +1 -0
- package/dist/capabilities/filesystemCapability.d.ts +13 -0
- package/dist/capabilities/filesystemCapability.d.ts.map +1 -0
- package/dist/capabilities/filesystemCapability.js +24 -0
- package/dist/capabilities/filesystemCapability.js.map +1 -0
- package/dist/capabilities/gitHistoryCapability.d.ts +6 -0
- package/dist/capabilities/gitHistoryCapability.d.ts.map +1 -0
- package/dist/capabilities/gitHistoryCapability.js +184 -0
- package/dist/capabilities/gitHistoryCapability.js.map +1 -0
- package/dist/capabilities/hitlCapability.d.ts +18 -0
- package/dist/capabilities/hitlCapability.d.ts.map +1 -0
- package/dist/capabilities/hitlCapability.js +29 -0
- package/dist/capabilities/hitlCapability.js.map +1 -0
- package/dist/capabilities/index.d.ts +13 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +18 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/kaliCapability.d.ts +14 -0
- package/dist/capabilities/kaliCapability.d.ts.map +1 -0
- package/dist/capabilities/kaliCapability.js +478 -0
- package/dist/capabilities/kaliCapability.js.map +1 -0
- package/dist/capabilities/mcpCapability.d.ts +7 -0
- package/dist/capabilities/mcpCapability.d.ts.map +1 -0
- package/dist/capabilities/mcpCapability.js +80 -0
- package/dist/capabilities/mcpCapability.js.map +1 -0
- package/dist/capabilities/memoryCapability.d.ts +10 -0
- package/dist/capabilities/memoryCapability.d.ts.map +1 -0
- package/dist/capabilities/memoryCapability.js +22 -0
- package/dist/capabilities/memoryCapability.js.map +1 -0
- package/dist/capabilities/notebookCapability.d.ts +6 -0
- package/dist/capabilities/notebookCapability.d.ts.map +1 -0
- package/dist/capabilities/notebookCapability.js +17 -0
- package/dist/capabilities/notebookCapability.js.map +1 -0
- package/dist/capabilities/searchCapability.d.ts +19 -0
- package/dist/capabilities/searchCapability.d.ts.map +1 -0
- package/dist/capabilities/searchCapability.js +29 -0
- package/dist/capabilities/searchCapability.js.map +1 -0
- package/dist/capabilities/skillCapability.d.ts +6 -0
- package/dist/capabilities/skillCapability.d.ts.map +1 -0
- package/dist/capabilities/skillCapability.js +17 -0
- package/dist/capabilities/skillCapability.js.map +1 -0
- package/dist/capabilities/todoCapability.d.ts +11 -0
- package/dist/capabilities/todoCapability.d.ts.map +1 -0
- package/dist/capabilities/todoCapability.js +22 -0
- package/dist/capabilities/todoCapability.js.map +1 -0
- package/dist/capabilities/toolManifest.d.ts +3 -0
- package/dist/capabilities/toolManifest.d.ts.map +1 -0
- package/dist/capabilities/toolManifest.js +163 -0
- package/dist/capabilities/toolManifest.js.map +1 -0
- package/dist/capabilities/toolRegistry.d.ts +25 -0
- package/dist/capabilities/toolRegistry.d.ts.map +1 -0
- package/dist/capabilities/toolRegistry.js +150 -0
- package/dist/capabilities/toolRegistry.js.map +1 -0
- package/dist/capabilities/unifiedCodingCapability.d.ts +62 -0
- package/dist/capabilities/unifiedCodingCapability.d.ts.map +1 -0
- package/dist/capabilities/unifiedCodingCapability.js +788 -0
- package/dist/capabilities/unifiedCodingCapability.js.map +1 -0
- package/dist/capabilities/webCapability.d.ts +23 -0
- package/dist/capabilities/webCapability.d.ts.map +1 -0
- package/dist/capabilities/webCapability.js +33 -0
- package/dist/capabilities/webCapability.js.map +1 -0
- package/dist/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +155 -0
- package/dist/config.js.map +1 -0
- package/dist/contracts/agent-profiles.schema.json +43 -0
- package/dist/contracts/agent-schemas.json +470 -0
- package/dist/contracts/models.schema.json +9 -0
- package/dist/contracts/module-schema.json +367 -0
- package/dist/contracts/schemas/agent-profile.schema.json +157 -0
- package/dist/contracts/schemas/agent-rules.schema.json +238 -0
- package/dist/contracts/schemas/agent-schemas.schema.json +528 -0
- package/dist/contracts/schemas/agent.schema.json +90 -0
- package/dist/contracts/schemas/tool-selection.schema.json +174 -0
- package/dist/contracts/tools.schema.json +42 -0
- package/dist/contracts/unified-schema.json +660 -0
- package/dist/contracts/v1/agent.d.ts +179 -0
- package/dist/contracts/v1/agent.d.ts.map +1 -0
- package/dist/contracts/v1/agent.js +8 -0
- package/dist/contracts/v1/agent.js.map +1 -0
- package/dist/contracts/v1/agentProfileManifest.d.ts +60 -0
- package/dist/contracts/v1/agentProfileManifest.d.ts.map +1 -0
- package/dist/contracts/v1/agentProfileManifest.js +9 -0
- package/dist/contracts/v1/agentProfileManifest.js.map +1 -0
- package/dist/contracts/v1/agentRules.d.ts +60 -0
- package/dist/contracts/v1/agentRules.d.ts.map +1 -0
- package/dist/contracts/v1/agentRules.js +10 -0
- package/dist/contracts/v1/agentRules.js.map +1 -0
- package/dist/contracts/v1/provider.d.ts +149 -0
- package/dist/contracts/v1/provider.d.ts.map +1 -0
- package/dist/contracts/v1/provider.js +7 -0
- package/dist/contracts/v1/provider.js.map +1 -0
- package/dist/contracts/v1/tool.d.ts +136 -0
- package/dist/contracts/v1/tool.d.ts.map +1 -0
- package/dist/contracts/v1/tool.js +7 -0
- package/dist/contracts/v1/tool.js.map +1 -0
- package/dist/contracts/v1/toolAccess.d.ts +43 -0
- package/dist/contracts/v1/toolAccess.d.ts.map +1 -0
- package/dist/contracts/v1/toolAccess.js +9 -0
- package/dist/contracts/v1/toolAccess.js.map +1 -0
- package/dist/core/agent.d.ts +320 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +1627 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/agentProfileManifest.d.ts +3 -0
- package/dist/core/agentProfileManifest.d.ts.map +1 -0
- package/dist/core/agentProfileManifest.js +188 -0
- package/dist/core/agentProfileManifest.js.map +1 -0
- package/dist/core/agentProfiles.d.ts +22 -0
- package/dist/core/agentProfiles.d.ts.map +1 -0
- package/dist/core/agentProfiles.js +35 -0
- package/dist/core/agentProfiles.js.map +1 -0
- package/dist/core/agentRegistry.d.ts +111 -0
- package/dist/core/agentRegistry.d.ts.map +1 -0
- package/dist/core/agentRegistry.js +229 -0
- package/dist/core/agentRegistry.js.map +1 -0
- package/dist/core/agentRulebook.d.ts +11 -0
- package/dist/core/agentRulebook.d.ts.map +1 -0
- package/dist/core/agentRulebook.js +136 -0
- package/dist/core/agentRulebook.js.map +1 -0
- package/dist/core/agentSchemaLoader.d.ts +131 -0
- package/dist/core/agentSchemaLoader.d.ts.map +1 -0
- package/dist/core/agentSchemaLoader.js +235 -0
- package/dist/core/agentSchemaLoader.js.map +1 -0
- package/dist/core/aiErrorFixer.d.ts +57 -0
- package/dist/core/aiErrorFixer.d.ts.map +1 -0
- package/dist/core/aiErrorFixer.js +214 -0
- package/dist/core/aiErrorFixer.js.map +1 -0
- package/dist/core/auth.d.ts +15 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +291 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/bashCommandGuidance.d.ts +16 -0
- package/dist/core/bashCommandGuidance.d.ts.map +1 -0
- package/dist/core/bashCommandGuidance.js +40 -0
- package/dist/core/bashCommandGuidance.js.map +1 -0
- package/dist/core/constants.d.ts +31 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +62 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/contextManager.d.ts +271 -0
- package/dist/core/contextManager.d.ts.map +1 -0
- package/dist/core/contextManager.js +1073 -0
- package/dist/core/contextManager.js.map +1 -0
- package/dist/core/contextWindow.d.ts +42 -0
- package/dist/core/contextWindow.d.ts.map +1 -0
- package/dist/core/contextWindow.js +123 -0
- package/dist/core/contextWindow.js.map +1 -0
- package/dist/core/customCommands.d.ts +19 -0
- package/dist/core/customCommands.d.ts.map +1 -0
- package/dist/core/customCommands.js +85 -0
- package/dist/core/customCommands.js.map +1 -0
- package/dist/core/errors/apiKeyErrors.d.ts +11 -0
- package/dist/core/errors/apiKeyErrors.d.ts.map +1 -0
- package/dist/core/errors/apiKeyErrors.js +159 -0
- package/dist/core/errors/apiKeyErrors.js.map +1 -0
- package/dist/core/errors/errorTypes.d.ts +111 -0
- package/dist/core/errors/errorTypes.d.ts.map +1 -0
- package/dist/core/errors/errorTypes.js +345 -0
- package/dist/core/errors/errorTypes.js.map +1 -0
- package/dist/core/errors/index.d.ts +50 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +156 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/errors/networkErrors.d.ts +14 -0
- package/dist/core/errors/networkErrors.d.ts.map +1 -0
- package/dist/core/errors/networkErrors.js +53 -0
- package/dist/core/errors/networkErrors.js.map +1 -0
- package/dist/core/errors/safetyValidator.d.ts +109 -0
- package/dist/core/errors/safetyValidator.d.ts.map +1 -0
- package/dist/core/errors/safetyValidator.js +271 -0
- package/dist/core/errors/safetyValidator.js.map +1 -0
- package/dist/core/errors.d.ts +4 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +33 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/finalResponseFormatter.d.ts +10 -0
- package/dist/core/finalResponseFormatter.d.ts.map +1 -0
- package/dist/core/finalResponseFormatter.js +14 -0
- package/dist/core/finalResponseFormatter.js.map +1 -0
- package/dist/core/guardrails.d.ts +146 -0
- package/dist/core/guardrails.d.ts.map +1 -0
- package/dist/core/guardrails.js +361 -0
- package/dist/core/guardrails.js.map +1 -0
- package/dist/core/hitl.d.ts +119 -0
- package/dist/core/hitl.d.ts.map +1 -0
- package/dist/core/hitl.js +387 -0
- package/dist/core/hitl.js.map +1 -0
- package/dist/core/hooks.d.ts +95 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +239 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/inputProtection.d.ts +122 -0
- package/dist/core/inputProtection.d.ts.map +1 -0
- package/dist/core/inputProtection.js +422 -0
- package/dist/core/inputProtection.js.map +1 -0
- package/dist/core/modelDiscovery.d.ts +105 -0
- package/dist/core/modelDiscovery.d.ts.map +1 -0
- package/dist/core/modelDiscovery.js +768 -0
- package/dist/core/modelDiscovery.js.map +1 -0
- package/dist/core/multilinePasteHandler.d.ts +35 -0
- package/dist/core/multilinePasteHandler.d.ts.map +1 -0
- package/dist/core/multilinePasteHandler.js +81 -0
- package/dist/core/multilinePasteHandler.js.map +1 -0
- package/dist/core/preferences.d.ts +65 -0
- package/dist/core/preferences.d.ts.map +1 -0
- package/dist/core/preferences.js +305 -0
- package/dist/core/preferences.js.map +1 -0
- package/dist/core/providerKeys.d.ts +20 -0
- package/dist/core/providerKeys.d.ts.map +1 -0
- package/dist/core/providerKeys.js +40 -0
- package/dist/core/providerKeys.js.map +1 -0
- package/dist/core/refusalDetection.d.ts +2 -0
- package/dist/core/refusalDetection.d.ts.map +1 -0
- package/dist/core/refusalDetection.js +51 -0
- package/dist/core/refusalDetection.js.map +1 -0
- package/dist/core/resultVerification.d.ts +47 -0
- package/dist/core/resultVerification.d.ts.map +1 -0
- package/dist/core/resultVerification.js +126 -0
- package/dist/core/resultVerification.js.map +1 -0
- package/dist/core/schemaValidator.d.ts +49 -0
- package/dist/core/schemaValidator.d.ts.map +1 -0
- package/dist/core/schemaValidator.js +234 -0
- package/dist/core/schemaValidator.js.map +1 -0
- package/dist/core/secretStore.d.ts +48 -0
- package/dist/core/secretStore.d.ts.map +1 -0
- package/dist/core/secretStore.js +268 -0
- package/dist/core/secretStore.js.map +1 -0
- package/dist/core/sessionStorage.d.ts +10 -0
- package/dist/core/sessionStorage.d.ts.map +1 -0
- package/dist/core/sessionStorage.js +46 -0
- package/dist/core/sessionStorage.js.map +1 -0
- package/dist/core/sessionStore.d.ts +35 -0
- package/dist/core/sessionStore.d.ts.map +1 -0
- package/dist/core/sessionStore.js +191 -0
- package/dist/core/sessionStore.js.map +1 -0
- package/dist/core/shutdown.d.ts +34 -0
- package/dist/core/shutdown.d.ts.map +1 -0
- package/dist/core/shutdown.js +186 -0
- package/dist/core/shutdown.js.map +1 -0
- package/dist/core/sudoPasswordManager.d.ts +52 -0
- package/dist/core/sudoPasswordManager.d.ts.map +1 -0
- package/dist/core/sudoPasswordManager.js +115 -0
- package/dist/core/sudoPasswordManager.js.map +1 -0
- package/dist/core/taskCompletionDetector.d.ts +117 -0
- package/dist/core/taskCompletionDetector.d.ts.map +1 -0
- package/dist/core/taskCompletionDetector.js +532 -0
- package/dist/core/taskCompletionDetector.js.map +1 -0
- package/dist/core/testFailureMonitor.d.ts +67 -0
- package/dist/core/testFailureMonitor.d.ts.map +1 -0
- package/dist/core/testFailureMonitor.js +262 -0
- package/dist/core/testFailureMonitor.js.map +1 -0
- package/dist/core/toolPreconditions.d.ts +34 -0
- package/dist/core/toolPreconditions.d.ts.map +1 -0
- package/dist/core/toolPreconditions.js +242 -0
- package/dist/core/toolPreconditions.js.map +1 -0
- package/dist/core/toolRuntime.d.ts +192 -0
- package/dist/core/toolRuntime.d.ts.map +1 -0
- package/dist/core/toolRuntime.js +460 -0
- package/dist/core/toolRuntime.js.map +1 -0
- package/dist/core/types/utilityTypes.d.ts +183 -0
- package/dist/core/types/utilityTypes.d.ts.map +1 -0
- package/dist/core/types/utilityTypes.js +273 -0
- package/dist/core/types/utilityTypes.js.map +1 -0
- package/dist/core/types.d.ts +334 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +76 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/updateChecker.d.ts +148 -0
- package/dist/core/updateChecker.d.ts.map +1 -0
- package/dist/core/updateChecker.js +599 -0
- package/dist/core/updateChecker.js.map +1 -0
- package/dist/core/usageTracker.d.ts +11 -0
- package/dist/core/usageTracker.d.ts.map +1 -0
- package/dist/core/usageTracker.js +128 -0
- package/dist/core/usageTracker.js.map +1 -0
- package/dist/headless/interactiveShell.d.ts +22 -0
- package/dist/headless/interactiveShell.d.ts.map +1 -0
- package/dist/headless/interactiveShell.js +2100 -0
- package/dist/headless/interactiveShell.js.map +1 -0
- package/dist/leanAgent.d.ts +73 -0
- package/dist/leanAgent.d.ts.map +1 -0
- package/dist/leanAgent.js +177 -0
- package/dist/leanAgent.js.map +1 -0
- package/dist/plugins/index.d.ts +49 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +104 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/providers/anthropic/index.d.ts +9 -0
- package/dist/plugins/providers/anthropic/index.d.ts.map +1 -0
- package/dist/plugins/providers/anthropic/index.js +48 -0
- package/dist/plugins/providers/anthropic/index.js.map +1 -0
- package/dist/plugins/providers/deepseek/index.d.ts +11 -0
- package/dist/plugins/providers/deepseek/index.d.ts.map +1 -0
- package/dist/plugins/providers/deepseek/index.js +54 -0
- package/dist/plugins/providers/deepseek/index.js.map +1 -0
- package/dist/plugins/providers/index.d.ts +2 -0
- package/dist/plugins/providers/index.d.ts.map +1 -0
- package/dist/plugins/providers/index.js +17 -0
- package/dist/plugins/providers/index.js.map +1 -0
- package/dist/plugins/providers/openai/index.d.ts +10 -0
- package/dist/plugins/providers/openai/index.d.ts.map +1 -0
- package/dist/plugins/providers/openai/index.js +47 -0
- package/dist/plugins/providers/openai/index.js.map +1 -0
- package/dist/plugins/providers/xai/index.d.ts +10 -0
- package/dist/plugins/providers/xai/index.d.ts.map +1 -0
- package/dist/plugins/providers/xai/index.js +47 -0
- package/dist/plugins/providers/xai/index.js.map +1 -0
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts +10 -0
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js +110 -0
- package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js.map +1 -0
- package/dist/plugins/tools/bash/localBashPlugin.d.ts +3 -0
- package/dist/plugins/tools/bash/localBashPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/bash/localBashPlugin.js +14 -0
- package/dist/plugins/tools/bash/localBashPlugin.js.map +1 -0
- package/dist/plugins/tools/edit/editPlugin.d.ts +9 -0
- package/dist/plugins/tools/edit/editPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/edit/editPlugin.js +15 -0
- package/dist/plugins/tools/edit/editPlugin.js.map +1 -0
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts +3 -0
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js +9 -0
- package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js.map +1 -0
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts +3 -0
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.js +14 -0
- package/dist/plugins/tools/filesystem/localFilesystemPlugin.js.map +1 -0
- package/dist/plugins/tools/gitHistory/gitHistoryPlugin.d.ts +3 -0
- package/dist/plugins/tools/gitHistory/gitHistoryPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/gitHistory/gitHistoryPlugin.js +9 -0
- package/dist/plugins/tools/gitHistory/gitHistoryPlugin.js.map +1 -0
- package/dist/plugins/tools/index.d.ts +3 -0
- package/dist/plugins/tools/index.d.ts.map +1 -0
- package/dist/plugins/tools/index.js +3 -0
- package/dist/plugins/tools/index.js.map +1 -0
- package/dist/plugins/tools/integrity/integrityPlugin.d.ts +3 -0
- package/dist/plugins/tools/integrity/integrityPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/integrity/integrityPlugin.js +31 -0
- package/dist/plugins/tools/integrity/integrityPlugin.js.map +1 -0
- package/dist/plugins/tools/kali/kaliPlugin.d.ts +3 -0
- package/dist/plugins/tools/kali/kaliPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/kali/kaliPlugin.js +10 -0
- package/dist/plugins/tools/kali/kaliPlugin.js.map +1 -0
- package/dist/plugins/tools/mcp/mcpClient.d.ts +49 -0
- package/dist/plugins/tools/mcp/mcpClient.d.ts.map +1 -0
- package/dist/plugins/tools/mcp/mcpClient.js +112 -0
- package/dist/plugins/tools/mcp/mcpClient.js.map +1 -0
- package/dist/plugins/tools/mcp/mcpPlugin.d.ts +3 -0
- package/dist/plugins/tools/mcp/mcpPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/mcp/mcpPlugin.js +10 -0
- package/dist/plugins/tools/mcp/mcpPlugin.js.map +1 -0
- package/dist/plugins/tools/nodeDefaults.d.ts +13 -0
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -0
- package/dist/plugins/tools/nodeDefaults.js +37 -0
- package/dist/plugins/tools/nodeDefaults.js.map +1 -0
- package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts +3 -0
- package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/orchestration/orchestrationPlugin.js +340 -0
- package/dist/plugins/tools/orchestration/orchestrationPlugin.js.map +1 -0
- package/dist/plugins/tools/registry.d.ts +22 -0
- package/dist/plugins/tools/registry.d.ts.map +1 -0
- package/dist/plugins/tools/registry.js +58 -0
- package/dist/plugins/tools/registry.js.map +1 -0
- package/dist/plugins/tools/search/localSearchPlugin.d.ts +3 -0
- package/dist/plugins/tools/search/localSearchPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/search/localSearchPlugin.js +14 -0
- package/dist/plugins/tools/search/localSearchPlugin.js.map +1 -0
- package/dist/plugins/tools/skills/skillPlugin.d.ts +3 -0
- package/dist/plugins/tools/skills/skillPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/skills/skillPlugin.js +27 -0
- package/dist/plugins/tools/skills/skillPlugin.js.map +1 -0
- package/dist/plugins/tools/todo/todoPlugin.d.ts +3 -0
- package/dist/plugins/tools/todo/todoPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/todo/todoPlugin.js +10 -0
- package/dist/plugins/tools/todo/todoPlugin.js.map +1 -0
- package/dist/providers/baseProvider.d.ts +148 -0
- package/dist/providers/baseProvider.d.ts.map +1 -0
- package/dist/providers/baseProvider.js +284 -0
- package/dist/providers/baseProvider.js.map +1 -0
- package/dist/providers/openaiChatCompletionsProvider.d.ts +64 -0
- package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -0
- package/dist/providers/openaiChatCompletionsProvider.js +1018 -0
- package/dist/providers/openaiChatCompletionsProvider.js.map +1 -0
- package/dist/providers/providerFactory.d.ts +22 -0
- package/dist/providers/providerFactory.d.ts.map +1 -0
- package/dist/providers/providerFactory.js +25 -0
- package/dist/providers/providerFactory.js.map +1 -0
- package/dist/providers/resilientProvider.d.ts +103 -0
- package/dist/providers/resilientProvider.d.ts.map +1 -0
- package/dist/providers/resilientProvider.js +468 -0
- package/dist/providers/resilientProvider.js.map +1 -0
- package/dist/runtime/agentController.d.ts +121 -0
- package/dist/runtime/agentController.d.ts.map +1 -0
- package/dist/runtime/agentController.js +739 -0
- package/dist/runtime/agentController.js.map +1 -0
- package/dist/runtime/agentHost.d.ts +61 -0
- package/dist/runtime/agentHost.d.ts.map +1 -0
- package/dist/runtime/agentHost.js +158 -0
- package/dist/runtime/agentHost.js.map +1 -0
- package/dist/runtime/agentSession.d.ts +49 -0
- package/dist/runtime/agentSession.d.ts.map +1 -0
- package/dist/runtime/agentSession.js +218 -0
- package/dist/runtime/agentSession.js.map +1 -0
- package/dist/runtime/agentSpawningWiring.d.ts +23 -0
- package/dist/runtime/agentSpawningWiring.d.ts.map +1 -0
- package/dist/runtime/agentSpawningWiring.js +119 -0
- package/dist/runtime/agentSpawningWiring.js.map +1 -0
- package/dist/runtime/agentWorkerPool.d.ts +167 -0
- package/dist/runtime/agentWorkerPool.d.ts.map +1 -0
- package/dist/runtime/agentWorkerPool.js +435 -0
- package/dist/runtime/agentWorkerPool.js.map +1 -0
- package/dist/runtime/node.d.ts +7 -0
- package/dist/runtime/node.d.ts.map +1 -0
- package/dist/runtime/node.js +56 -0
- package/dist/runtime/node.js.map +1 -0
- package/dist/runtime/universal.d.ts +18 -0
- package/dist/runtime/universal.d.ts.map +1 -0
- package/dist/runtime/universal.js +21 -0
- package/dist/runtime/universal.js.map +1 -0
- package/dist/shell/autoExecutor.d.ts +70 -0
- package/dist/shell/autoExecutor.d.ts.map +1 -0
- package/dist/shell/autoExecutor.js +320 -0
- package/dist/shell/autoExecutor.js.map +1 -0
- package/dist/shell/commandRegistry.d.ts +122 -0
- package/dist/shell/commandRegistry.d.ts.map +1 -0
- package/dist/shell/commandRegistry.js +355 -0
- package/dist/shell/commandRegistry.js.map +1 -0
- package/dist/shell/composableMessage.d.ts +178 -0
- package/dist/shell/composableMessage.d.ts.map +1 -0
- package/dist/shell/composableMessage.js +384 -0
- package/dist/shell/composableMessage.js.map +1 -0
- package/dist/shell/liveStatus.d.ts +27 -0
- package/dist/shell/liveStatus.d.ts.map +1 -0
- package/dist/shell/liveStatus.js +53 -0
- package/dist/shell/liveStatus.js.map +1 -0
- package/dist/shell/systemPrompt.d.ts +12 -0
- package/dist/shell/systemPrompt.d.ts.map +1 -0
- package/dist/shell/systemPrompt.js +16 -0
- package/dist/shell/systemPrompt.js.map +1 -0
- package/dist/shell/vimMode.d.ts +66 -0
- package/dist/shell/vimMode.d.ts.map +1 -0
- package/dist/shell/vimMode.js +435 -0
- package/dist/shell/vimMode.js.map +1 -0
- package/dist/tools/bashTools.d.ts +11 -0
- package/dist/tools/bashTools.d.ts.map +1 -0
- package/dist/tools/bashTools.js +779 -0
- package/dist/tools/bashTools.js.map +1 -0
- package/dist/tools/diffUtils.d.ts +43 -0
- package/dist/tools/diffUtils.d.ts.map +1 -0
- package/dist/tools/diffUtils.js +607 -0
- package/dist/tools/diffUtils.js.map +1 -0
- package/dist/tools/editTools.d.ts +29 -0
- package/dist/tools/editTools.d.ts.map +1 -0
- package/dist/tools/editTools.js +792 -0
- package/dist/tools/editTools.js.map +1 -0
- package/dist/tools/fileChangeTracker.d.ts +47 -0
- package/dist/tools/fileChangeTracker.d.ts.map +1 -0
- package/dist/tools/fileChangeTracker.js +154 -0
- package/dist/tools/fileChangeTracker.js.map +1 -0
- package/dist/tools/fileReadTracker.d.ts +69 -0
- package/dist/tools/fileReadTracker.d.ts.map +1 -0
- package/dist/tools/fileReadTracker.js +213 -0
- package/dist/tools/fileReadTracker.js.map +1 -0
- package/dist/tools/fileTools.d.ts +3 -0
- package/dist/tools/fileTools.d.ts.map +1 -0
- package/dist/tools/fileTools.js +389 -0
- package/dist/tools/fileTools.js.map +1 -0
- package/dist/tools/grepTools.d.ts +3 -0
- package/dist/tools/grepTools.d.ts.map +1 -0
- package/dist/tools/grepTools.js +128 -0
- package/dist/tools/grepTools.js.map +1 -0
- package/dist/tools/heliaControl.d.ts +51 -0
- package/dist/tools/heliaControl.d.ts.map +1 -0
- package/dist/tools/heliaControl.js +93 -0
- package/dist/tools/heliaControl.js.map +1 -0
- package/dist/tools/hitlTools.d.ts +7 -0
- package/dist/tools/hitlTools.d.ts.map +1 -0
- package/dist/tools/hitlTools.js +185 -0
- package/dist/tools/hitlTools.js.map +1 -0
- package/dist/tools/localExplore.d.ts +38 -0
- package/dist/tools/localExplore.d.ts.map +1 -0
- package/dist/tools/localExplore.js +30 -0
- package/dist/tools/localExplore.js.map +1 -0
- package/dist/tools/memoryTools.d.ts +20 -0
- package/dist/tools/memoryTools.d.ts.map +1 -0
- package/dist/tools/memoryTools.js +180 -0
- package/dist/tools/memoryTools.js.map +1 -0
- package/dist/tools/notebookTools.d.ts +20 -0
- package/dist/tools/notebookTools.d.ts.map +1 -0
- package/dist/tools/notebookTools.js +140 -0
- package/dist/tools/notebookTools.js.map +1 -0
- package/dist/tools/searchTools.d.ts +12 -0
- package/dist/tools/searchTools.d.ts.map +1 -0
- package/dist/tools/searchTools.js +413 -0
- package/dist/tools/searchTools.js.map +1 -0
- package/dist/tools/skillTools.d.ts +24 -0
- package/dist/tools/skillTools.d.ts.map +1 -0
- package/dist/tools/skillTools.js +140 -0
- package/dist/tools/skillTools.js.map +1 -0
- package/dist/tools/todoTools.d.ts +24 -0
- package/dist/tools/todoTools.d.ts.map +1 -0
- package/dist/tools/todoTools.js +101 -0
- package/dist/tools/todoTools.js.map +1 -0
- package/dist/tools/webTools.d.ts +26 -0
- package/dist/tools/webTools.d.ts.map +1 -0
- package/dist/tools/webTools.js +332 -0
- package/dist/tools/webTools.js.map +1 -0
- package/dist/ui/RenderGate.d.ts +83 -0
- package/dist/ui/RenderGate.d.ts.map +1 -0
- package/dist/ui/RenderGate.js +138 -0
- package/dist/ui/RenderGate.js.map +1 -0
- package/dist/ui/animatedStatus.d.ts +140 -0
- package/dist/ui/animatedStatus.d.ts.map +1 -0
- package/dist/ui/animatedStatus.js +480 -0
- package/dist/ui/animatedStatus.js.map +1 -0
- package/dist/ui/animation/AnimationScheduler.d.ts +197 -0
- package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
- package/dist/ui/animation/AnimationScheduler.js +440 -0
- package/dist/ui/animation/AnimationScheduler.js.map +1 -0
- package/dist/ui/codeHighlighter.d.ts +6 -0
- package/dist/ui/codeHighlighter.d.ts.map +1 -0
- package/dist/ui/codeHighlighter.js +855 -0
- package/dist/ui/codeHighlighter.js.map +1 -0
- package/dist/ui/designSystem.d.ts +26 -0
- package/dist/ui/designSystem.d.ts.map +1 -0
- package/dist/ui/designSystem.js +114 -0
- package/dist/ui/designSystem.js.map +1 -0
- package/dist/ui/errorFormatter.d.ts +64 -0
- package/dist/ui/errorFormatter.d.ts.map +1 -0
- package/dist/ui/errorFormatter.js +316 -0
- package/dist/ui/errorFormatter.js.map +1 -0
- package/dist/ui/globalWriteLock.d.ts +63 -0
- package/dist/ui/globalWriteLock.d.ts.map +1 -0
- package/dist/ui/globalWriteLock.js +173 -0
- package/dist/ui/globalWriteLock.js.map +1 -0
- package/dist/ui/index.d.ts +31 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +49 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/ink/App.d.ts +39 -0
- package/dist/ui/ink/App.d.ts.map +1 -0
- package/dist/ui/ink/App.js +9 -0
- package/dist/ui/ink/App.js.map +1 -0
- package/dist/ui/ink/ChatStatic.d.ts +29 -0
- package/dist/ui/ink/ChatStatic.d.ts.map +1 -0
- package/dist/ui/ink/ChatStatic.js +14 -0
- package/dist/ui/ink/ChatStatic.js.map +1 -0
- package/dist/ui/ink/InkPromptController.d.ts +282 -0
- package/dist/ui/ink/InkPromptController.d.ts.map +1 -0
- package/dist/ui/ink/InkPromptController.js +508 -0
- package/dist/ui/ink/InkPromptController.js.map +1 -0
- package/dist/ui/ink/Prompt.d.ts +31 -0
- package/dist/ui/ink/Prompt.d.ts.map +1 -0
- package/dist/ui/ink/Prompt.js +197 -0
- package/dist/ui/ink/Prompt.js.map +1 -0
- package/dist/ui/ink/StatusLine.d.ts +25 -0
- package/dist/ui/ink/StatusLine.d.ts.map +1 -0
- package/dist/ui/ink/StatusLine.js +11 -0
- package/dist/ui/ink/StatusLine.js.map +1 -0
- package/dist/ui/ink/adapter.d.ts +58 -0
- package/dist/ui/ink/adapter.d.ts.map +1 -0
- package/dist/ui/ink/adapter.js +113 -0
- package/dist/ui/ink/adapter.js.map +1 -0
- package/dist/ui/interrupts/InterruptManager.d.ts +157 -0
- package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
- package/dist/ui/interrupts/InterruptManager.js +501 -0
- package/dist/ui/interrupts/InterruptManager.js.map +1 -0
- package/dist/ui/layout.d.ts +27 -0
- package/dist/ui/layout.d.ts.map +1 -0
- package/dist/ui/layout.js +184 -0
- package/dist/ui/layout.js.map +1 -0
- package/dist/ui/outputMode.d.ts +58 -0
- package/dist/ui/outputMode.d.ts.map +1 -0
- package/dist/ui/outputMode.js +179 -0
- package/dist/ui/outputMode.js.map +1 -0
- package/dist/ui/overlay/OverlayManager.d.ts +105 -0
- package/dist/ui/overlay/OverlayManager.d.ts.map +1 -0
- package/dist/ui/overlay/OverlayManager.js +304 -0
- package/dist/ui/overlay/OverlayManager.js.map +1 -0
- package/dist/ui/premiumComponents.d.ts +54 -0
- package/dist/ui/premiumComponents.d.ts.map +1 -0
- package/dist/ui/premiumComponents.js +241 -0
- package/dist/ui/premiumComponents.js.map +1 -0
- package/dist/ui/richText.d.ts +13 -0
- package/dist/ui/richText.d.ts.map +1 -0
- package/dist/ui/richText.js +444 -0
- package/dist/ui/richText.js.map +1 -0
- package/dist/ui/telemetry/ResponseTracker.d.ts +22 -0
- package/dist/ui/telemetry/ResponseTracker.d.ts.map +1 -0
- package/dist/ui/telemetry/ResponseTracker.js +60 -0
- package/dist/ui/telemetry/ResponseTracker.js.map +1 -0
- package/dist/ui/telemetry/UITelemetry.d.ts +181 -0
- package/dist/ui/telemetry/UITelemetry.d.ts.map +1 -0
- package/dist/ui/telemetry/UITelemetry.js +446 -0
- package/dist/ui/telemetry/UITelemetry.js.map +1 -0
- package/dist/ui/textHighlighter.d.ts +83 -0
- package/dist/ui/textHighlighter.d.ts.map +1 -0
- package/dist/ui/textHighlighter.js +267 -0
- package/dist/ui/textHighlighter.js.map +1 -0
- package/dist/ui/theme.d.ts +351 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +434 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/toolDisplay.d.ts +221 -0
- package/dist/ui/toolDisplay.d.ts.map +1 -0
- package/dist/ui/toolDisplay.js +1654 -0
- package/dist/ui/toolDisplay.js.map +1 -0
- package/dist/ui/uiConstants.d.ts +253 -0
- package/dist/ui/uiConstants.d.ts.map +1 -0
- package/dist/ui/uiConstants.js +437 -0
- package/dist/ui/uiConstants.js.map +1 -0
- package/dist/utils/analytics.d.ts +2 -0
- package/dist/utils/analytics.d.ts.map +1 -0
- package/dist/utils/analytics.js +51 -0
- package/dist/utils/analytics.js.map +1 -0
- package/dist/utils/askUserPrompt.d.ts +21 -0
- package/dist/utils/askUserPrompt.d.ts.map +1 -0
- package/dist/utils/askUserPrompt.js +87 -0
- package/dist/utils/askUserPrompt.js.map +1 -0
- package/dist/utils/asyncUtils.d.ts +95 -0
- package/dist/utils/asyncUtils.d.ts.map +1 -0
- package/dist/utils/asyncUtils.js +286 -0
- package/dist/utils/asyncUtils.js.map +1 -0
- package/dist/utils/debugLogger.d.ts +6 -0
- package/dist/utils/debugLogger.d.ts.map +1 -0
- package/dist/utils/debugLogger.js +39 -0
- package/dist/utils/debugLogger.js.map +1 -0
- package/dist/utils/errorUtils.d.ts +12 -0
- package/dist/utils/errorUtils.d.ts.map +1 -0
- package/dist/utils/errorUtils.js +83 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +10 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +78 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/packageInfo.d.ts +14 -0
- package/dist/utils/packageInfo.d.ts.map +1 -0
- package/dist/utils/packageInfo.js +45 -0
- package/dist/utils/packageInfo.js.map +1 -0
- package/dist/utils/planFormatter.d.ts +34 -0
- package/dist/utils/planFormatter.d.ts.map +1 -0
- package/dist/utils/planFormatter.js +141 -0
- package/dist/utils/planFormatter.js.map +1 -0
- package/dist/utils/securityUtils.d.ts +145 -0
- package/dist/utils/securityUtils.d.ts.map +1 -0
- package/dist/utils/securityUtils.js +507 -0
- package/dist/utils/securityUtils.js.map +1 -0
- package/dist/utils/statusReporter.d.ts +6 -0
- package/dist/utils/statusReporter.d.ts.map +1 -0
- package/dist/utils/statusReporter.js +26 -0
- package/dist/utils/statusReporter.js.map +1 -0
- package/dist/workspace.d.ts +8 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +135 -0
- package/dist/workspace.js.map +1 -0
- package/dist/workspace.validator.d.ts +49 -0
- package/dist/workspace.validator.d.ts.map +1 -0
- package/dist/workspace.validator.js +215 -0
- package/dist/workspace.validator.js.map +1 -0
- package/package.json +135 -0
- package/scripts/postinstall.cjs +58 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Prompt — Ink-rendered input box.
|
|
4
|
+
*
|
|
5
|
+
* Phase 2 of the Ink migration. Real text input via React reducer + Ink's
|
|
6
|
+
* useInput. The reducer is the single source of truth for buffer + cursor;
|
|
7
|
+
* keystrokes dispatch actions; Ink's reconciler renders. Frame coalescing,
|
|
8
|
+
* visual-column handling, and resize bookkeeping are owned by Ink.
|
|
9
|
+
*
|
|
10
|
+
* Render contract: this component is the only writer for the prompt row.
|
|
11
|
+
* No `process.stdout.write` side-effects — submission and cancellation
|
|
12
|
+
* surface through the `onSubmit` / `onCancel` props so the host can pipe
|
|
13
|
+
* to the existing event bus.
|
|
14
|
+
*
|
|
15
|
+
* Paste sanitization mirrors UnifiedUIRenderer.sanitizePasteContent: ANSI
|
|
16
|
+
* escapes, raw C0 control bytes, and bracketed-paste markers are stripped
|
|
17
|
+
* at intake (issues #3 + #8). The sanitizer runs on every batch of text
|
|
18
|
+
* Ink hands us, so a malicious paste can't survive into the buffer.
|
|
19
|
+
*/
|
|
20
|
+
import { useReducer, useEffect, useRef } from 'react';
|
|
21
|
+
import { Box, Text, useInput } from 'ink';
|
|
22
|
+
function sanitize(text) {
|
|
23
|
+
if (!text)
|
|
24
|
+
return '';
|
|
25
|
+
// Full ANSI sequences (with the \x1b prefix intact).
|
|
26
|
+
let s = text.replace(/\x1b\[[0-9;?]*[A-Za-z~]|\x1b\][^\x07]*\x07|\x1b[PX^_][^\x1b]*\x1b\\|\x1b./g, '');
|
|
27
|
+
// Ink's parseKeypress sometimes splits a chunk such that the \x1b is
|
|
28
|
+
// consumed but the body lands in the next input string (e.g. "[2J" or
|
|
29
|
+
// "[201~"). Strip those leaked CSI bodies too. The pattern matches the
|
|
30
|
+
// standard CSI body shape; legitimate user text rarely matches.
|
|
31
|
+
s = s.replace(/\[[0-9;?]*[A-Za-z~]/g, '');
|
|
32
|
+
s = s.replace(/\r\n/g, '\n');
|
|
33
|
+
// Strip C0 controls EXCEPT the ones the walk-loop in useInput acts on:
|
|
34
|
+
// \x01 (Ctrl+A) → home, \x03 (Ctrl+C) → cancel, \x05 (Ctrl+E) → end,
|
|
35
|
+
// \x09 (tab, accepted as text), \x0a (\n) → submit, \x0d (\r) → submit.
|
|
36
|
+
// Everything else is hostile (NUL, BEL, BS, VT, FF, etc.).
|
|
37
|
+
s = s.replace(/[\x00\x02\x04\x06\x07\x08\x0b\x0c\x0e-\x1f\x7f]/g, '');
|
|
38
|
+
return s;
|
|
39
|
+
}
|
|
40
|
+
function reducer(state, action) {
|
|
41
|
+
switch (action.type) {
|
|
42
|
+
case 'insert': {
|
|
43
|
+
const clean = sanitize(action.text);
|
|
44
|
+
if (!clean)
|
|
45
|
+
return state;
|
|
46
|
+
const before = state.text.slice(0, state.cursor);
|
|
47
|
+
const after = state.text.slice(state.cursor);
|
|
48
|
+
return { text: before + clean + after, cursor: state.cursor + clean.length };
|
|
49
|
+
}
|
|
50
|
+
case 'backspace': {
|
|
51
|
+
if (state.cursor === 0)
|
|
52
|
+
return state;
|
|
53
|
+
const before = state.text.slice(0, state.cursor - 1);
|
|
54
|
+
const after = state.text.slice(state.cursor);
|
|
55
|
+
return { text: before + after, cursor: state.cursor - 1 };
|
|
56
|
+
}
|
|
57
|
+
case 'delete': {
|
|
58
|
+
if (state.cursor >= state.text.length)
|
|
59
|
+
return state;
|
|
60
|
+
const before = state.text.slice(0, state.cursor);
|
|
61
|
+
const after = state.text.slice(state.cursor + 1);
|
|
62
|
+
return { text: before + after, cursor: state.cursor };
|
|
63
|
+
}
|
|
64
|
+
case 'left':
|
|
65
|
+
return { ...state, cursor: Math.max(0, state.cursor - 1) };
|
|
66
|
+
case 'right':
|
|
67
|
+
return { ...state, cursor: Math.min(state.text.length, state.cursor + 1) };
|
|
68
|
+
case 'home':
|
|
69
|
+
return { ...state, cursor: 0 };
|
|
70
|
+
case 'end':
|
|
71
|
+
return { ...state, cursor: state.text.length };
|
|
72
|
+
case 'set':
|
|
73
|
+
return { text: action.text, cursor: action.cursor ?? action.text.length };
|
|
74
|
+
default:
|
|
75
|
+
return state;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export const Prompt = ({ initial = '', prefix = '> ', secret = false, onSubmit, onCancel }) => {
|
|
79
|
+
// Source of truth lives in a ref, not React state. useReducer's state
|
|
80
|
+
// commit is deferred to the next render; Ink can fire useInput multiple
|
|
81
|
+
// times in the same JS turn (parseKeypress splits a chunk into N
|
|
82
|
+
// events), and every closure would read the same stale state. Apply
|
|
83
|
+
// the reducer synchronously to the ref, then force a re-render so the
|
|
84
|
+
// UI catches up. The bumper is the only useState-style hook needed.
|
|
85
|
+
const stateRef = useRef({ text: initial, cursor: initial.length });
|
|
86
|
+
const [, bumpRender] = useReducer((n) => n + 1, 0);
|
|
87
|
+
// Sync the ref to externally-driven `initial` changes. The ref is
|
|
88
|
+
// only initialised once on mount, so when the host clears the buffer
|
|
89
|
+
// after a submit (sets `initial=''` via prop) the ref still holds
|
|
90
|
+
// the old text and the prompt keeps showing it. Watching `initial`
|
|
91
|
+
// here resets the ref whenever it transitions to a new value the
|
|
92
|
+
// user didn't type — the typical case is buffer clearing after
|
|
93
|
+
// submit. We don't reset when `initial` matches what's already in
|
|
94
|
+
// the ref so user keystrokes between renders aren't clobbered.
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
if (initial !== stateRef.current.text) {
|
|
97
|
+
stateRef.current = { text: initial, cursor: initial.length };
|
|
98
|
+
bumpRender();
|
|
99
|
+
}
|
|
100
|
+
}, [initial]);
|
|
101
|
+
const apply = (action) => {
|
|
102
|
+
stateRef.current = reducer(stateRef.current, action);
|
|
103
|
+
bumpRender();
|
|
104
|
+
};
|
|
105
|
+
useInput((input, key) => {
|
|
106
|
+
if (process.env['EROSOLAR_INK_DEBUG'] === '1') {
|
|
107
|
+
process.stderr.write(`KEY: input=${JSON.stringify(input)} ret=${key.return} bs=${key.backspace} ctrl=${key.ctrl}\n`);
|
|
108
|
+
}
|
|
109
|
+
if (key.return) {
|
|
110
|
+
onSubmit(stateRef.current.text);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (key.ctrl && (input === 'c' || input === 'C')) {
|
|
114
|
+
if (stateRef.current.text.length === 0) {
|
|
115
|
+
onCancel();
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
apply({ type: 'set', text: '', cursor: 0 });
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (key.leftArrow)
|
|
123
|
+
return apply({ type: 'left' });
|
|
124
|
+
if (key.rightArrow)
|
|
125
|
+
return apply({ type: 'right' });
|
|
126
|
+
if (key.backspace || key.delete)
|
|
127
|
+
return apply({ type: 'backspace' });
|
|
128
|
+
if (key.ctrl && (input === 'a' || input === 'A'))
|
|
129
|
+
return apply({ type: 'home' });
|
|
130
|
+
if (key.ctrl && (input === 'e' || input === 'E'))
|
|
131
|
+
return apply({ type: 'end' });
|
|
132
|
+
if (key.escape)
|
|
133
|
+
return; // ignored — main shell handles overlays
|
|
134
|
+
// Ink hands us paste / pre-buffered chunks as a single `input` string.
|
|
135
|
+
// parseKeypress only flags key.return / key.ctrl when the chunk is a
|
|
136
|
+
// pure single key. When a control byte is embedded mid-chunk (e.g.
|
|
137
|
+
// 'world\x01' or '[2J' after Ink ate the \x1b prefix) the flags stay
|
|
138
|
+
// false and the raw bytes sit inside `input`. Sanitise the WHOLE
|
|
139
|
+
// chunk first so multi-byte ANSI sequences like '[2J' are stripped
|
|
140
|
+
// as one, then walk for embedded \r / Ctrl+letter and insert the
|
|
141
|
+
// rest. Splitting into per-char dispatches without sanitising the
|
|
142
|
+
// chunk first would let CSI bodies through.
|
|
143
|
+
if (input) {
|
|
144
|
+
const cleaned = sanitize(input);
|
|
145
|
+
for (const ch of cleaned) {
|
|
146
|
+
const code = ch.charCodeAt(0);
|
|
147
|
+
if (ch === '\r' || ch === '\n') {
|
|
148
|
+
onSubmit(stateRef.current.text);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (code === 0x03) {
|
|
152
|
+
if (stateRef.current.text.length === 0) {
|
|
153
|
+
onCancel();
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
apply({ type: 'set', text: '', cursor: 0 });
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (code === 0x01) {
|
|
160
|
+
apply({ type: 'home' });
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (code === 0x05) {
|
|
164
|
+
apply({ type: 'end' });
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
// sanitize() above already stripped C0 bytes other than the
|
|
168
|
+
// shortlist we just handled, so this insert is always safe.
|
|
169
|
+
apply({ type: 'insert', text: ch });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
// Snapshot the ref into a local for the JSX below. Outside the input
|
|
174
|
+
// handler the latest committed render value is the right thing to draw.
|
|
175
|
+
const state = stateRef.current;
|
|
176
|
+
// Render the buffer with a visible cursor block. In secret mode we
|
|
177
|
+
// collapse the buffer to • characters but keep the cursor markers so
|
|
178
|
+
// the user can still see where they are editing.
|
|
179
|
+
// Children must be non-empty strings — empty <Text> siblings collide
|
|
180
|
+
// on React's auto-generated keys and the parent fails to mount, which
|
|
181
|
+
// also prevents useInput's effect from running. Render a single space
|
|
182
|
+
// when a slice would be empty.
|
|
183
|
+
const display = secret ? '•'.repeat(state.text.length) : state.text;
|
|
184
|
+
const before = display.slice(0, state.cursor) || ' ';
|
|
185
|
+
const at = display.slice(state.cursor, state.cursor + 1) || ' ';
|
|
186
|
+
const after = display.slice(state.cursor + 1) || ' ';
|
|
187
|
+
// Surface state via a hidden marker line for subprocess testing.
|
|
188
|
+
// EROSOLAR_INK_DEBUG=1 enables a `STATE: <buffer>|<cursor>` annotation
|
|
189
|
+
// that the test harness greps for. Off by default.
|
|
190
|
+
useEffect(() => {
|
|
191
|
+
if (process.env['EROSOLAR_INK_DEBUG'] === '1') {
|
|
192
|
+
process.stderr.write(`STATE: ${state.text}|${state.cursor}\n`);
|
|
193
|
+
}
|
|
194
|
+
}, [state.text, state.cursor]);
|
|
195
|
+
return (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: prefix }, "prefix"), _jsx(Text, { children: before }, "before"), _jsx(Text, { inverse: true, children: at }, "cursor"), _jsx(Text, { children: after }, "after")] }));
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=Prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../../src/ui/ink/Prompt.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatusLine — Ink-rendered status bar.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 of the Ink migration. Owns nothing today except the spinner /
|
|
5
|
+
* activity message / mode chips. Mounted behind EROSOLAR_INK=1; the rest
|
|
6
|
+
* of the renderer is unchanged. Design goal: prove Ink can ride alongside
|
|
7
|
+
* the existing UnifiedUIRenderer without colliding on stdin or stdout.
|
|
8
|
+
*
|
|
9
|
+
* Render contract: this component is the *only* writer for its row. It
|
|
10
|
+
* does not call console.log, process.stdout.write, or other side-effect
|
|
11
|
+
* sinks. State comes in via props; React's reconciler diffs and Ink
|
|
12
|
+
* commits the minimal escape sequence to the terminal. Frame coalescing
|
|
13
|
+
* and visual-column counting are owned by Ink, not this code.
|
|
14
|
+
*/
|
|
15
|
+
import React from 'react';
|
|
16
|
+
export interface StatusLineProps {
|
|
17
|
+
/** Active line shown next to the spinner. Empty/undefined hides the row. */
|
|
18
|
+
message?: string | null;
|
|
19
|
+
/** Optional secondary line (e.g. mode chips). */
|
|
20
|
+
modeMessage?: string | null;
|
|
21
|
+
/** Show a spinner glyph in front of `message`. */
|
|
22
|
+
spinning?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare const StatusLine: React.FC<StatusLineProps>;
|
|
25
|
+
//# sourceMappingURL=StatusLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusLine.d.ts","sourceRoot":"","sources":["../../../src/ui/ink/StatusLine.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwBhD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import Spinner from 'ink-spinner';
|
|
4
|
+
export const StatusLine = ({ message, modeMessage, spinning }) => {
|
|
5
|
+
const hasMessage = Boolean(message && message.length);
|
|
6
|
+
const hasMode = Boolean(modeMessage && modeMessage.length);
|
|
7
|
+
if (!hasMessage && !hasMode)
|
|
8
|
+
return null;
|
|
9
|
+
return (_jsxs(Box, { flexDirection: "column", children: [hasMessage ? (_jsxs(Box, { children: [spinning ? (_jsxs(Text, { color: "cyan", children: [_jsx(Spinner, { type: "dots" }), ' '] })) : null, _jsx(Text, { color: "white", children: message })] })) : null, hasMode ? (_jsx(Box, { children: _jsx(Text, { color: "gray", children: modeMessage }) })) : null] }));
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=StatusLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusLine.js","sourceRoot":"","sources":["../../../src/ui/ink/StatusLine.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAWlC,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1F,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAEzC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACxB,UAAU,CAAC,CAAC,CAAC,CACZ,MAAC,GAAG,eACD,QAAQ,CAAC,CAAC,CAAC,CACV,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAChB,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,EAAC,GAAG,IACtB,CACR,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,OAAO,GAAQ,IAChC,CACP,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,WAAW,GAAQ,GACnC,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter — Phase 5 of the Ink migration. Bridges the Ink App tree to
|
|
3
|
+
* the rest of the codebase that imports PromptController.
|
|
4
|
+
*
|
|
5
|
+
* Goal: zero changes to interactiveShell.ts. When EROSOLAR_INK=1, the
|
|
6
|
+
* factory returns an Ink-backed instance that satisfies the same
|
|
7
|
+
* surface; otherwise it returns the existing PromptController. This is
|
|
8
|
+
* the migration's safety valve — production keeps the old path until
|
|
9
|
+
* we've grown enough Ink coverage to flip the default.
|
|
10
|
+
*
|
|
11
|
+
* The adapter is intentionally narrow today: it covers prompt input
|
|
12
|
+
* + status + history + suggestions. Methods on PromptController that
|
|
13
|
+
* we haven't ported yet (pinned prompt, secret-mode panels, the chrome
|
|
14
|
+
* banner, etc.) are no-ops or fall through to a tiny event emitter so
|
|
15
|
+
* existing callers don't crash. Each phase of the migration replaces
|
|
16
|
+
* one of those no-ops with a real Ink-backed implementation.
|
|
17
|
+
*/
|
|
18
|
+
import { EventEmitter } from 'node:events';
|
|
19
|
+
import type { ChatItem } from './ChatStatic.js';
|
|
20
|
+
export interface InkPromptAdapterCallbacks {
|
|
21
|
+
onSubmit: (text: string) => void;
|
|
22
|
+
onCancel?: () => void;
|
|
23
|
+
onCtrlC?: (info: {
|
|
24
|
+
hadBuffer: boolean;
|
|
25
|
+
}) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface InkPromptAdapter extends EventEmitter {
|
|
28
|
+
start(): void;
|
|
29
|
+
stop(): void;
|
|
30
|
+
setStatusMessage(message: string | null): void;
|
|
31
|
+
setModeMessage(message: string | null): void;
|
|
32
|
+
appendHistory(item: ChatItem): void;
|
|
33
|
+
setSuggestions(suggestions: {
|
|
34
|
+
label: string;
|
|
35
|
+
hint?: string;
|
|
36
|
+
}[]): void;
|
|
37
|
+
/** Drive the prompt's initial buffer (e.g. resuming an interrupted line). */
|
|
38
|
+
setBuffer(text: string): void;
|
|
39
|
+
/** True when EROSOLAR_INK=1 was honoured at construction time. */
|
|
40
|
+
readonly enabled: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Returns true when the harness should mount the Ink-backed adapter.
|
|
44
|
+
* Three signals — explicit env opt-in, never in plain mode, never under
|
|
45
|
+
* a non-TTY pipe (Ink would refuse raw mode and crash).
|
|
46
|
+
*/
|
|
47
|
+
export declare function shouldUseInkAdapter(opts: {
|
|
48
|
+
plainMode: boolean;
|
|
49
|
+
isTty: boolean;
|
|
50
|
+
}): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Construct a live adapter. The implementation lazy-imports the React +
|
|
53
|
+
* Ink bundle so requiring this module from a non-Ink path doesn't pay
|
|
54
|
+
* the parse cost — the production CLI only loads Ink when actually
|
|
55
|
+
* mounting it.
|
|
56
|
+
*/
|
|
57
|
+
export declare function createInkPromptAdapter(callbacks: InkPromptAdapterCallbacks): Promise<InkPromptAdapter>;
|
|
58
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/ui/ink/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7C,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IACtE,6EAA6E;IAC7E,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAKzF;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,yBAAyB,GACnC,OAAO,CAAC,gBAAgB,CAAC,CA0E3B"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter — Phase 5 of the Ink migration. Bridges the Ink App tree to
|
|
3
|
+
* the rest of the codebase that imports PromptController.
|
|
4
|
+
*
|
|
5
|
+
* Goal: zero changes to interactiveShell.ts. When EROSOLAR_INK=1, the
|
|
6
|
+
* factory returns an Ink-backed instance that satisfies the same
|
|
7
|
+
* surface; otherwise it returns the existing PromptController. This is
|
|
8
|
+
* the migration's safety valve — production keeps the old path until
|
|
9
|
+
* we've grown enough Ink coverage to flip the default.
|
|
10
|
+
*
|
|
11
|
+
* The adapter is intentionally narrow today: it covers prompt input
|
|
12
|
+
* + status + history + suggestions. Methods on PromptController that
|
|
13
|
+
* we haven't ported yet (pinned prompt, secret-mode panels, the chrome
|
|
14
|
+
* banner, etc.) are no-ops or fall through to a tiny event emitter so
|
|
15
|
+
* existing callers don't crash. Each phase of the migration replaces
|
|
16
|
+
* one of those no-ops with a real Ink-backed implementation.
|
|
17
|
+
*/
|
|
18
|
+
import { EventEmitter } from 'node:events';
|
|
19
|
+
/**
|
|
20
|
+
* Returns true when the harness should mount the Ink-backed adapter.
|
|
21
|
+
* Three signals — explicit env opt-in, never in plain mode, never under
|
|
22
|
+
* a non-TTY pipe (Ink would refuse raw mode and crash).
|
|
23
|
+
*/
|
|
24
|
+
export function shouldUseInkAdapter(opts) {
|
|
25
|
+
if (opts.plainMode)
|
|
26
|
+
return false;
|
|
27
|
+
if (!opts.isTty)
|
|
28
|
+
return false;
|
|
29
|
+
const flag = (process.env['EROSOLAR_INK'] || '').toLowerCase();
|
|
30
|
+
return flag === '1' || flag === 'true' || flag === 'on' || flag === 'yes';
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Construct a live adapter. The implementation lazy-imports the React +
|
|
34
|
+
* Ink bundle so requiring this module from a non-Ink path doesn't pay
|
|
35
|
+
* the parse cost — the production CLI only loads Ink when actually
|
|
36
|
+
* mounting it.
|
|
37
|
+
*/
|
|
38
|
+
export async function createInkPromptAdapter(callbacks) {
|
|
39
|
+
// Lazy load — keeps Ink + React out of the cold-start path of every
|
|
40
|
+
// process that imports the adapter type but doesn't mount it.
|
|
41
|
+
const [{ render }, React, { App }] = await Promise.all([
|
|
42
|
+
import('ink'),
|
|
43
|
+
import('react'),
|
|
44
|
+
import('./App.js'),
|
|
45
|
+
]);
|
|
46
|
+
const events = new EventEmitter();
|
|
47
|
+
let status = {};
|
|
48
|
+
let history = [];
|
|
49
|
+
let suggestions = [];
|
|
50
|
+
let initialBuffer = '';
|
|
51
|
+
let inst = null;
|
|
52
|
+
let enabled = true;
|
|
53
|
+
const buildTree = () => React.createElement(App, {
|
|
54
|
+
history,
|
|
55
|
+
status: { message: status.message ?? null, modeMessage: status.modeMessage ?? null },
|
|
56
|
+
suggestions,
|
|
57
|
+
prompt: {
|
|
58
|
+
initial: initialBuffer,
|
|
59
|
+
onSubmit: (text) => callbacks.onSubmit(text),
|
|
60
|
+
onCancel: () => {
|
|
61
|
+
callbacks.onCtrlC?.({ hadBuffer: false });
|
|
62
|
+
callbacks.onCancel?.();
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
const rerender = () => {
|
|
67
|
+
if (!inst)
|
|
68
|
+
return;
|
|
69
|
+
inst.rerender(buildTree());
|
|
70
|
+
};
|
|
71
|
+
const adapter = Object.assign(events, {
|
|
72
|
+
enabled,
|
|
73
|
+
start() {
|
|
74
|
+
if (inst)
|
|
75
|
+
return;
|
|
76
|
+
inst = render(buildTree(), {
|
|
77
|
+
// exitOnCtrlC=false so the host gets Ctrl+C through onCancel.
|
|
78
|
+
exitOnCtrlC: false,
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
stop() {
|
|
82
|
+
if (!inst)
|
|
83
|
+
return;
|
|
84
|
+
try {
|
|
85
|
+
inst.unmount();
|
|
86
|
+
}
|
|
87
|
+
catch { /* ignore */ }
|
|
88
|
+
inst = null;
|
|
89
|
+
},
|
|
90
|
+
setStatusMessage(message) {
|
|
91
|
+
status = { ...status, message };
|
|
92
|
+
rerender();
|
|
93
|
+
},
|
|
94
|
+
setModeMessage(message) {
|
|
95
|
+
status = { ...status, modeMessage: message };
|
|
96
|
+
rerender();
|
|
97
|
+
},
|
|
98
|
+
appendHistory(item) {
|
|
99
|
+
history = [...history, item];
|
|
100
|
+
rerender();
|
|
101
|
+
},
|
|
102
|
+
setSuggestions(next) {
|
|
103
|
+
suggestions = next;
|
|
104
|
+
rerender();
|
|
105
|
+
},
|
|
106
|
+
setBuffer(text) {
|
|
107
|
+
initialBuffer = text;
|
|
108
|
+
rerender();
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
return adapter;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/ui/ink/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InterruptManager - Manages user interruptions with priority queuing
|
|
3
|
+
* Handles interrupt prioritization, deferred execution, and smooth transitions
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
export declare enum InterruptPriority {
|
|
7
|
+
CRITICAL = 100,// System errors, critical failures
|
|
8
|
+
HIGH = 75,// User cancellation requests, important alerts
|
|
9
|
+
NORMAL = 50,// Standard user input, questions
|
|
10
|
+
LOW = 25,// Hints, suggestions
|
|
11
|
+
BACKGROUND = 0
|
|
12
|
+
}
|
|
13
|
+
export type InterruptType = 'user-cancel' | 'user-input' | 'system-error' | 'confirmation' | 'hint' | 'alert' | 'question' | 'menu-selection';
|
|
14
|
+
export interface InterruptConfig {
|
|
15
|
+
id: string;
|
|
16
|
+
type: InterruptType;
|
|
17
|
+
priority: InterruptPriority;
|
|
18
|
+
message: string;
|
|
19
|
+
metadata?: Record<string, unknown>;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
ttl?: number;
|
|
22
|
+
deferrable?: boolean;
|
|
23
|
+
blocking?: boolean;
|
|
24
|
+
handler?: (interrupt: Interrupt) => void | Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export interface Interrupt extends InterruptConfig {
|
|
27
|
+
status: 'pending' | 'active' | 'deferred' | 'completed' | 'expired' | 'cancelled';
|
|
28
|
+
activatedAt?: number;
|
|
29
|
+
completedAt?: number;
|
|
30
|
+
deferredCount: number;
|
|
31
|
+
}
|
|
32
|
+
export interface InterruptPolicy {
|
|
33
|
+
maxQueueSize: number;
|
|
34
|
+
maxDeferrals: number;
|
|
35
|
+
defaultTTL: number;
|
|
36
|
+
allowConcurrent: boolean;
|
|
37
|
+
transitionDuration: number;
|
|
38
|
+
}
|
|
39
|
+
export declare class InterruptManager extends EventEmitter {
|
|
40
|
+
private pendingQueue;
|
|
41
|
+
private activeInterrupts;
|
|
42
|
+
private deferredInterrupts;
|
|
43
|
+
private policy;
|
|
44
|
+
private isProcessing;
|
|
45
|
+
private transitionTimer;
|
|
46
|
+
private expiryTimers;
|
|
47
|
+
private completionPollers;
|
|
48
|
+
private disposed;
|
|
49
|
+
constructor(policy?: Partial<InterruptPolicy>);
|
|
50
|
+
/**
|
|
51
|
+
* Queue a new interrupt
|
|
52
|
+
*/
|
|
53
|
+
queue(config: Omit<InterruptConfig, 'id' | 'timestamp'>): string;
|
|
54
|
+
/**
|
|
55
|
+
* Process the interrupt queue
|
|
56
|
+
*/
|
|
57
|
+
private processQueue;
|
|
58
|
+
/**
|
|
59
|
+
* Check if interrupt can be activated
|
|
60
|
+
*/
|
|
61
|
+
private canActivate;
|
|
62
|
+
/**
|
|
63
|
+
* Activate an interrupt
|
|
64
|
+
*/
|
|
65
|
+
private activateInterrupt;
|
|
66
|
+
/**
|
|
67
|
+
* Complete an interrupt
|
|
68
|
+
*/
|
|
69
|
+
completeInterrupt(id: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Cancel an interrupt
|
|
72
|
+
*/
|
|
73
|
+
cancelInterrupt(id: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Defer an interrupt
|
|
76
|
+
*/
|
|
77
|
+
private deferInterrupt;
|
|
78
|
+
/**
|
|
79
|
+
* Restore deferred interrupts to queue
|
|
80
|
+
*/
|
|
81
|
+
private restoreDeferredInterrupts;
|
|
82
|
+
/**
|
|
83
|
+
* Expire an interrupt
|
|
84
|
+
*/
|
|
85
|
+
private expireInterrupt;
|
|
86
|
+
/**
|
|
87
|
+
* Check if interrupt has expired
|
|
88
|
+
*/
|
|
89
|
+
private isExpired;
|
|
90
|
+
/**
|
|
91
|
+
* Schedule interrupt expiry
|
|
92
|
+
*/
|
|
93
|
+
private scheduleExpiry;
|
|
94
|
+
/**
|
|
95
|
+
* Clear expiry timer for an interrupt
|
|
96
|
+
*/
|
|
97
|
+
private clearExpiryTimer;
|
|
98
|
+
/**
|
|
99
|
+
* Wait for interrupt completion with timeout
|
|
100
|
+
*/
|
|
101
|
+
private waitForCompletion;
|
|
102
|
+
/**
|
|
103
|
+
* Clear completion poller for an interrupt
|
|
104
|
+
*/
|
|
105
|
+
private clearCompletionPoller;
|
|
106
|
+
/**
|
|
107
|
+
* Handle smooth transitions
|
|
108
|
+
*/
|
|
109
|
+
private smoothTransition;
|
|
110
|
+
/**
|
|
111
|
+
* Find insertion index based on priority
|
|
112
|
+
*/
|
|
113
|
+
private findInsertIndex;
|
|
114
|
+
/**
|
|
115
|
+
* Prune expired and low-priority interrupts from queue
|
|
116
|
+
*/
|
|
117
|
+
private pruneQueue;
|
|
118
|
+
/**
|
|
119
|
+
* Generate unique interrupt ID
|
|
120
|
+
*/
|
|
121
|
+
private generateId;
|
|
122
|
+
/**
|
|
123
|
+
* Get interrupt by ID
|
|
124
|
+
*/
|
|
125
|
+
getInterrupt(id: string): Interrupt | undefined;
|
|
126
|
+
/**
|
|
127
|
+
* Get all interrupts with a specific status
|
|
128
|
+
*/
|
|
129
|
+
getInterruptsByStatus(status: Interrupt['status']): Interrupt[];
|
|
130
|
+
/**
|
|
131
|
+
* Get queue statistics
|
|
132
|
+
*/
|
|
133
|
+
getStatistics(): {
|
|
134
|
+
queueLength: number;
|
|
135
|
+
activeCount: number;
|
|
136
|
+
deferredCount: number;
|
|
137
|
+
averagePriority: number;
|
|
138
|
+
oldestTimestamp: number | null;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Clear all interrupts
|
|
142
|
+
*/
|
|
143
|
+
clearAll(): void;
|
|
144
|
+
/**
|
|
145
|
+
* Update interrupt policy
|
|
146
|
+
*/
|
|
147
|
+
updatePolicy(policy: Partial<InterruptPolicy>): void;
|
|
148
|
+
/**
|
|
149
|
+
* Dispose of the manager
|
|
150
|
+
*/
|
|
151
|
+
dispose(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Check if the manager has been disposed
|
|
154
|
+
*/
|
|
155
|
+
isDisposed(): boolean;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=InterruptManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InterruptManager.d.ts","sourceRoot":"","sources":["../../../src/ui/interrupts/InterruptManager.ts"],"names":[],"mappings":"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"}
|