@trenchwork/erosolar 1.1.40
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 +225 -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 +203 -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 +11 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +16 -0
- package/dist/capabilities/index.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 +790 -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 +184 -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/adversarial.d.ts +38 -0
- package/dist/core/adversarial.d.ts.map +1 -0
- package/dist/core/adversarial.js +106 -0
- package/dist/core/adversarial.js.map +1 -0
- package/dist/core/agent.d.ts +329 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +1668 -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/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 +272 -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 +236 -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 +67 -0
- package/dist/core/preferences.d.ts.map +1 -0
- package/dist/core/preferences.js +315 -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 +266 -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 +477 -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/headless/interactiveShell.d.ts +39 -0
- package/dist/headless/interactiveShell.d.ts.map +1 -0
- package/dist/headless/interactiveShell.js +2052 -0
- package/dist/headless/interactiveShell.js.map +1 -0
- package/dist/headless/printMode.d.ts +17 -0
- package/dist/headless/printMode.d.ts.map +1 -0
- package/dist/headless/printMode.js +40 -0
- package/dist/headless/printMode.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 +59 -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/mcp/mcpPlugin.d.ts +3 -0
- package/dist/plugins/tools/mcp/mcpPlugin.d.ts.map +1 -0
- package/dist/plugins/tools/mcp/mcpPlugin.js +27 -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 +33 -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 +70 -0
- package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -0
- package/dist/providers/openaiChatCompletionsProvider.js +1043 -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 +50 -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/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 +383 -0
- package/dist/tools/webTools.js.map +1 -0
- package/dist/ui/ink/App.d.ts +42 -0
- package/dist/ui/ink/App.d.ts.map +1 -0
- package/dist/ui/ink/App.js +10 -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 +289 -0
- package/dist/ui/ink/InkPromptController.d.ts.map +1 -0
- package/dist/ui/ink/InkPromptController.js +552 -0
- package/dist/ui/ink/InkPromptController.js.map +1 -0
- package/dist/ui/ink/Menu.d.ts +21 -0
- package/dist/ui/ink/Menu.d.ts.map +1 -0
- package/dist/ui/ink/Menu.js +61 -0
- package/dist/ui/ink/Menu.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 +21 -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/theme.d.ts +351 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +437 -0
- package/dist/ui/theme.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/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 +132 -0
- package/dist/utils/securityUtils.d.ts.map +1 -0
- package/dist/utils/securityUtils.js +324 -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 +123 -0
- package/scripts/postinstall.cjs +58 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-in-the-Loop (HITL) System
|
|
3
|
+
* Pauses AI execution and prompts users for important decision paths
|
|
4
|
+
* This is the ONLY HITL system in the repository
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'node:events';
|
|
7
|
+
/**
|
|
8
|
+
* Module-level event bus that fires when a HITL prompt opens or closes. Other
|
|
9
|
+
* subsystems subscribe to:
|
|
10
|
+
* - pause their own run-timeouts so user think-time doesn't abort the agent
|
|
11
|
+
* (see AgentController),
|
|
12
|
+
* - hand the terminal off cleanly so the prompt and post-prompt I/O don't
|
|
13
|
+
* fight (see UnifiedUIRenderer / interactiveShell).
|
|
14
|
+
*
|
|
15
|
+
* Always paired: every `prompt-open` is followed by exactly one `prompt-close`,
|
|
16
|
+
* including on timeout, Ctrl+C, custom-input, and shutdown paths.
|
|
17
|
+
*/
|
|
18
|
+
export declare const hitlEvents: EventEmitter<any>;
|
|
19
|
+
export declare function isHITLPromptActive(): boolean;
|
|
20
|
+
export interface DecisionOption {
|
|
21
|
+
id: string;
|
|
22
|
+
label: string;
|
|
23
|
+
description: string;
|
|
24
|
+
shortcut?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface DecisionRequest {
|
|
27
|
+
id: string;
|
|
28
|
+
title: string;
|
|
29
|
+
description: string;
|
|
30
|
+
context: string;
|
|
31
|
+
options: DecisionOption[];
|
|
32
|
+
defaultOptionId?: string;
|
|
33
|
+
requiresExplicitChoice: boolean;
|
|
34
|
+
metadata?: Record<string, any>;
|
|
35
|
+
}
|
|
36
|
+
export interface DecisionResponse {
|
|
37
|
+
requestId: string;
|
|
38
|
+
selectedOptionId: string;
|
|
39
|
+
userInput?: string;
|
|
40
|
+
timestamp: Date;
|
|
41
|
+
}
|
|
42
|
+
export interface HITLConfig {
|
|
43
|
+
/**
|
|
44
|
+
* Whether to automatically pause execution for decisions
|
|
45
|
+
* If false, decisions will be logged but execution continues
|
|
46
|
+
*/
|
|
47
|
+
autoPause: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Timeout in milliseconds before auto-proceeding with default
|
|
50
|
+
* 0 means no timeout (wait indefinitely)
|
|
51
|
+
*/
|
|
52
|
+
timeoutMs: number;
|
|
53
|
+
/**
|
|
54
|
+
* Default option to choose if timeout occurs
|
|
55
|
+
*/
|
|
56
|
+
timeoutDefaultOptionId?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Log level: 'none' | 'minimal' | 'detailed'
|
|
59
|
+
*/
|
|
60
|
+
logLevel: 'none' | 'minimal' | 'detailed';
|
|
61
|
+
}
|
|
62
|
+
export declare class HITLSystem {
|
|
63
|
+
private config;
|
|
64
|
+
private pendingDecisions;
|
|
65
|
+
private decisionHistory;
|
|
66
|
+
private rl?;
|
|
67
|
+
constructor(config?: Partial<HITLConfig>);
|
|
68
|
+
/**
|
|
69
|
+
* Request a human decision
|
|
70
|
+
* @returns Promise that resolves with the selected option ID
|
|
71
|
+
*/
|
|
72
|
+
requestDecision(request: DecisionRequest): Promise<string>;
|
|
73
|
+
/**
|
|
74
|
+
* Present decision to user and wait for input using interactive arrow-key selection
|
|
75
|
+
*/
|
|
76
|
+
private promptUserForDecision;
|
|
77
|
+
private cleanupReadline;
|
|
78
|
+
private getOptionLabel;
|
|
79
|
+
private logDecisionRequest;
|
|
80
|
+
private recordDecision;
|
|
81
|
+
/**
|
|
82
|
+
* Get decision history
|
|
83
|
+
*/
|
|
84
|
+
getHistory(): DecisionResponse[];
|
|
85
|
+
/**
|
|
86
|
+
* Clear decision history
|
|
87
|
+
*/
|
|
88
|
+
clearHistory(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Update configuration
|
|
91
|
+
*/
|
|
92
|
+
updateConfig(config: Partial<HITLConfig>): void;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the global HITL instance
|
|
96
|
+
*/
|
|
97
|
+
export declare function getHITL(config?: Partial<HITLConfig>): HITLSystem;
|
|
98
|
+
/**
|
|
99
|
+
* Helper function for common decision patterns
|
|
100
|
+
*/
|
|
101
|
+
export declare const hitl: {
|
|
102
|
+
/**
|
|
103
|
+
* Request a yes/no decision
|
|
104
|
+
*/
|
|
105
|
+
askYesNo(title: string, description: string, context?: string, defaultYes?: boolean): Promise<boolean>;
|
|
106
|
+
/**
|
|
107
|
+
* Request selection from multiple options
|
|
108
|
+
*/
|
|
109
|
+
selectOption(title: string, description: string, options: Array<{
|
|
110
|
+
id: string;
|
|
111
|
+
label: string;
|
|
112
|
+
description: string;
|
|
113
|
+
}>, context?: string, defaultOptionId?: string): Promise<string>;
|
|
114
|
+
/**
|
|
115
|
+
* Request approval for a risky operation
|
|
116
|
+
*/
|
|
117
|
+
requestApproval(title: string, riskDescription: string, operationDetails: string): Promise<boolean>;
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=hitl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hitl.d.ts","sourceRoot":"","sources":["../../src/core/hitl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,mBAAqB,CAAC;AAK7C,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;CAC3C;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,EAAE,CAAC,CAAqB;gBAEpB,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;IASxC;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAoChE;;OAEG;YACW,qBAAqB;IA4LnC,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,UAAU,IAAI,gBAAgB,EAAE;IAIhC;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;CAGhD;AAKD;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAUhE;AAED;;GAEG;AACH,eAAO,MAAM,IAAI;IACf;;OAEG;oBACmB,MAAM,eAAe,MAAM,YAAW,MAAM,eAAmB,OAAO,GAAU,OAAO,CAAC,OAAO,CAAC;IA6BtH;;OAEG;wBACuB,MAAM,eAAe,MAAM,WAAW,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAAC,YAAW,MAAM,oBAAyB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBzL;;OAEG;2BAC0B,MAAM,mBAAmB,MAAM,oBAAoB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQ1G,CAAC"}
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-in-the-Loop (HITL) System
|
|
3
|
+
* Pauses AI execution and prompts users for important decision paths
|
|
4
|
+
* This is the ONLY HITL system in the repository
|
|
5
|
+
*/
|
|
6
|
+
import { stdin, stdout } from 'node:process';
|
|
7
|
+
import * as readline from 'node:readline';
|
|
8
|
+
import { EventEmitter } from 'node:events';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { authorizedShutdown, isShutdownInProgress, onShutdown, installSignalHandlers } from './shutdown.js';
|
|
11
|
+
/**
|
|
12
|
+
* Module-level event bus that fires when a HITL prompt opens or closes. Other
|
|
13
|
+
* subsystems subscribe to:
|
|
14
|
+
* - pause their own run-timeouts so user think-time doesn't abort the agent
|
|
15
|
+
* (see AgentController),
|
|
16
|
+
* - hand the terminal off cleanly so the prompt and post-prompt I/O don't
|
|
17
|
+
* fight (see UnifiedUIRenderer / interactiveShell).
|
|
18
|
+
*
|
|
19
|
+
* Always paired: every `prompt-open` is followed by exactly one `prompt-close`,
|
|
20
|
+
* including on timeout, Ctrl+C, custom-input, and shutdown paths.
|
|
21
|
+
*/
|
|
22
|
+
export const hitlEvents = new EventEmitter();
|
|
23
|
+
hitlEvents.setMaxListeners(50);
|
|
24
|
+
let activePromptCount = 0;
|
|
25
|
+
export function isHITLPromptActive() {
|
|
26
|
+
return activePromptCount > 0;
|
|
27
|
+
}
|
|
28
|
+
export class HITLSystem {
|
|
29
|
+
config;
|
|
30
|
+
pendingDecisions = new Map();
|
|
31
|
+
decisionHistory = [];
|
|
32
|
+
rl;
|
|
33
|
+
constructor(config) {
|
|
34
|
+
this.config = {
|
|
35
|
+
autoPause: true,
|
|
36
|
+
timeoutMs: 0,
|
|
37
|
+
logLevel: 'detailed',
|
|
38
|
+
...config
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Request a human decision
|
|
43
|
+
* @returns Promise that resolves with the selected option ID
|
|
44
|
+
*/
|
|
45
|
+
async requestDecision(request) {
|
|
46
|
+
// If request already has an ID, use it, otherwise generate one
|
|
47
|
+
const requestId = request.id || `DECISION-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
48
|
+
const fullRequest = {
|
|
49
|
+
...request,
|
|
50
|
+
id: requestId
|
|
51
|
+
};
|
|
52
|
+
this.pendingDecisions.set(requestId, fullRequest);
|
|
53
|
+
if (this.config.logLevel !== 'none') {
|
|
54
|
+
this.logDecisionRequest(fullRequest);
|
|
55
|
+
}
|
|
56
|
+
// If auto-pause is disabled, return default or first option
|
|
57
|
+
if (!this.config.autoPause) {
|
|
58
|
+
const selectedOptionId = request.defaultOptionId || request.options[0]?.id;
|
|
59
|
+
if (selectedOptionId) {
|
|
60
|
+
const response = {
|
|
61
|
+
requestId,
|
|
62
|
+
selectedOptionId,
|
|
63
|
+
timestamp: new Date()
|
|
64
|
+
};
|
|
65
|
+
this.recordDecision(response);
|
|
66
|
+
if (this.config.logLevel === 'detailed') {
|
|
67
|
+
console.log(chalk.yellow(`⚠️ Auto-proceeding with option: ${this.getOptionLabel(request, selectedOptionId)}`));
|
|
68
|
+
}
|
|
69
|
+
return selectedOptionId;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Show decision prompt to user
|
|
73
|
+
return this.promptUserForDecision(fullRequest);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Present decision to user and wait for input using interactive arrow-key selection
|
|
77
|
+
*/
|
|
78
|
+
async promptUserForDecision(request) {
|
|
79
|
+
// Ensure signal handlers are installed for Ctrl+C fallback
|
|
80
|
+
installSignalHandlers();
|
|
81
|
+
// Check if shutdown is already in progress
|
|
82
|
+
if (isShutdownInProgress()) {
|
|
83
|
+
const defaultOption = request.defaultOptionId || request.options[0]?.id;
|
|
84
|
+
if (defaultOption)
|
|
85
|
+
return defaultOption;
|
|
86
|
+
throw new Error('Shutdown in progress');
|
|
87
|
+
}
|
|
88
|
+
// Build menu items: all options + "Enter your own" at the end
|
|
89
|
+
const menuItems = [
|
|
90
|
+
...request.options.map(opt => ({ id: opt.id, label: opt.label, description: opt.description })),
|
|
91
|
+
{ id: '__custom__', label: 'Enter your own', description: 'Type a custom plan, instruction, or alternative approach', isCustom: true }
|
|
92
|
+
];
|
|
93
|
+
// Start selection on "Enter your own" (last item)
|
|
94
|
+
let selectedIndex = menuItems.length - 1;
|
|
95
|
+
return new Promise((resolve, _reject) => {
|
|
96
|
+
// Snapshot the terminal state *before* we touch it so we can restore
|
|
97
|
+
// exactly what the parent renderer had set up — UnifiedUIRenderer keeps
|
|
98
|
+
// raw mode ON and stdin flowing; clearing those breaks the next prompt.
|
|
99
|
+
const priorRawMode = stdin.isTTY ? Boolean(stdin.isRaw) : false;
|
|
100
|
+
const priorPaused = stdin.isPaused();
|
|
101
|
+
let cleanedUp = false;
|
|
102
|
+
const promptId = request.id;
|
|
103
|
+
activePromptCount += 1;
|
|
104
|
+
hitlEvents.emit('prompt-open', { id: promptId });
|
|
105
|
+
// Single funnel for every exit path so listeners and event counts stay
|
|
106
|
+
// consistent regardless of how the prompt resolves.
|
|
107
|
+
const cleanup = () => {
|
|
108
|
+
if (cleanedUp)
|
|
109
|
+
return;
|
|
110
|
+
cleanedUp = true;
|
|
111
|
+
if (timeoutId)
|
|
112
|
+
clearTimeout(timeoutId);
|
|
113
|
+
unregisterCleanup();
|
|
114
|
+
try {
|
|
115
|
+
stdin.removeListener('data', handleKeypress);
|
|
116
|
+
}
|
|
117
|
+
catch { /* ignore */ }
|
|
118
|
+
if (stdin.isTTY) {
|
|
119
|
+
try {
|
|
120
|
+
stdin.setRawMode(priorRawMode);
|
|
121
|
+
}
|
|
122
|
+
catch { /* ignore */ }
|
|
123
|
+
}
|
|
124
|
+
if (priorPaused) {
|
|
125
|
+
try {
|
|
126
|
+
stdin.pause();
|
|
127
|
+
}
|
|
128
|
+
catch { /* ignore */ }
|
|
129
|
+
}
|
|
130
|
+
this.cleanupReadline();
|
|
131
|
+
activePromptCount = Math.max(0, activePromptCount - 1);
|
|
132
|
+
hitlEvents.emit('prompt-close', { id: promptId });
|
|
133
|
+
};
|
|
134
|
+
// Register cleanup callback for graceful shutdown
|
|
135
|
+
const unregisterCleanup = onShutdown(() => { cleanup(); });
|
|
136
|
+
const timeoutId = this.config.timeoutMs > 0
|
|
137
|
+
? setTimeout(() => {
|
|
138
|
+
// Only honor the timeout if a default option was provided; without
|
|
139
|
+
// one, the prompt is required to wait indefinitely.
|
|
140
|
+
if (!this.config.timeoutDefaultOptionId)
|
|
141
|
+
return;
|
|
142
|
+
console.log(chalk.yellow(`\n⏰ Timeout - auto-selecting default option`));
|
|
143
|
+
cleanup();
|
|
144
|
+
resolve(this.config.timeoutDefaultOptionId);
|
|
145
|
+
}, this.config.timeoutMs)
|
|
146
|
+
: undefined;
|
|
147
|
+
// Render the menu
|
|
148
|
+
const renderMenu = () => {
|
|
149
|
+
// Clear screen and move cursor to top
|
|
150
|
+
stdout.write('\x1b[2J\x1b[H');
|
|
151
|
+
console.log(chalk.bold.cyan('╔═══════════════════════════════════════════════════════════╗'));
|
|
152
|
+
console.log(chalk.bold.cyan('║ HUMAN DECISION REQUIRED ║'));
|
|
153
|
+
console.log(chalk.bold.cyan('╚═══════════════════════════════════════════════════════════╝\n'));
|
|
154
|
+
console.log(chalk.bold.white(`📋 ${request.title}`));
|
|
155
|
+
console.log(chalk.dim(request.description));
|
|
156
|
+
console.log('');
|
|
157
|
+
if (request.context) {
|
|
158
|
+
console.log(chalk.blue('📝 Context:'));
|
|
159
|
+
console.log(chalk.dim(request.context));
|
|
160
|
+
console.log('');
|
|
161
|
+
}
|
|
162
|
+
console.log(chalk.bold.green('🔘 Use ↑↓ arrows to select, Enter to confirm:\n'));
|
|
163
|
+
menuItems.forEach((item, index) => {
|
|
164
|
+
const isSelected = index === selectedIndex;
|
|
165
|
+
const marker = isSelected ? chalk.bold.cyan('▸ ') : ' ';
|
|
166
|
+
const labelStyle = isSelected ? chalk.bold.cyan : chalk.white;
|
|
167
|
+
const descStyle = isSelected ? chalk.cyan : chalk.dim;
|
|
168
|
+
console.log(`${marker}${labelStyle(item.label)}`);
|
|
169
|
+
console.log(` ${descStyle(item.description)}`);
|
|
170
|
+
console.log('');
|
|
171
|
+
});
|
|
172
|
+
console.log(chalk.dim('Press Ctrl+C to cancel'));
|
|
173
|
+
};
|
|
174
|
+
// Handle custom input after selection. We tear down the raw-mode menu
|
|
175
|
+
// listener first, then hand stdin to a one-shot readline. The shared
|
|
176
|
+
// `cleanup()` is deferred until *after* the user submits, so the
|
|
177
|
+
// prompt-open/close pairing stays balanced.
|
|
178
|
+
const handleCustomInput = () => {
|
|
179
|
+
try {
|
|
180
|
+
stdin.removeListener('data', handleKeypress);
|
|
181
|
+
}
|
|
182
|
+
catch { /* ignore */ }
|
|
183
|
+
if (stdin.isTTY) {
|
|
184
|
+
try {
|
|
185
|
+
stdin.setRawMode(false);
|
|
186
|
+
}
|
|
187
|
+
catch { /* ignore */ }
|
|
188
|
+
}
|
|
189
|
+
console.log(chalk.cyan('\n📝 Enter your custom plan or instruction:'));
|
|
190
|
+
const customRl = readline.createInterface({
|
|
191
|
+
input: stdin,
|
|
192
|
+
output: stdout,
|
|
193
|
+
terminal: stdin.isTTY
|
|
194
|
+
});
|
|
195
|
+
customRl.question(chalk.bold.magenta('👉 Your input: '), (customInput) => {
|
|
196
|
+
customRl.close();
|
|
197
|
+
cleanup();
|
|
198
|
+
if (customInput.trim()) {
|
|
199
|
+
console.log(chalk.green(`\n✅ Using custom input: "${customInput.trim()}"`));
|
|
200
|
+
const customOptionId = `custom-${Date.now()}`;
|
|
201
|
+
const response = {
|
|
202
|
+
requestId: request.id,
|
|
203
|
+
selectedOptionId: customOptionId,
|
|
204
|
+
userInput: customInput.trim(),
|
|
205
|
+
timestamp: new Date()
|
|
206
|
+
};
|
|
207
|
+
this.recordDecision(response);
|
|
208
|
+
resolve(customOptionId);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
console.log(chalk.yellow('⚠️ Empty input, using first option'));
|
|
212
|
+
resolve(request.options[0]?.id || '__custom__');
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
};
|
|
216
|
+
// Take stdin into raw mode for arrow-key navigation. `cleanup()` will
|
|
217
|
+
// restore whatever state the parent renderer had.
|
|
218
|
+
if (stdin.isTTY) {
|
|
219
|
+
stdin.setRawMode(true);
|
|
220
|
+
}
|
|
221
|
+
stdin.resume();
|
|
222
|
+
const handleKeypress = (chunk) => {
|
|
223
|
+
const key = chunk.toString();
|
|
224
|
+
// Ctrl+C
|
|
225
|
+
if (key === '\x03') {
|
|
226
|
+
cleanup();
|
|
227
|
+
console.log(chalk.red('\n❌ Operation cancelled'));
|
|
228
|
+
void authorizedShutdown(130);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
// Enter key
|
|
232
|
+
if (key === '\r' || key === '\n') {
|
|
233
|
+
const selectedItem = menuItems[selectedIndex];
|
|
234
|
+
if (selectedItem?.isCustom) {
|
|
235
|
+
// handleCustomInput defers cleanup() until after readline returns.
|
|
236
|
+
handleCustomInput();
|
|
237
|
+
}
|
|
238
|
+
else if (selectedItem) {
|
|
239
|
+
cleanup();
|
|
240
|
+
console.log(chalk.green(`\n✅ Selected: ${selectedItem.label}`));
|
|
241
|
+
resolve(selectedItem.id);
|
|
242
|
+
}
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
// Arrow keys (escape sequences)
|
|
246
|
+
if (key === '\x1b[A' || key === 'k') {
|
|
247
|
+
// Up arrow or k
|
|
248
|
+
selectedIndex = Math.max(0, selectedIndex - 1);
|
|
249
|
+
renderMenu();
|
|
250
|
+
}
|
|
251
|
+
else if (key === '\x1b[B' || key === 'j') {
|
|
252
|
+
// Down arrow or j
|
|
253
|
+
selectedIndex = Math.min(menuItems.length - 1, selectedIndex + 1);
|
|
254
|
+
renderMenu();
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
stdin.on('data', handleKeypress);
|
|
258
|
+
// Initial render
|
|
259
|
+
renderMenu();
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
cleanupReadline() {
|
|
263
|
+
if (this.rl) {
|
|
264
|
+
this.rl.close();
|
|
265
|
+
this.rl = undefined;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
getOptionLabel(request, optionId) {
|
|
269
|
+
const option = request.options.find(opt => opt.id === optionId);
|
|
270
|
+
return option ? option.label : optionId;
|
|
271
|
+
}
|
|
272
|
+
logDecisionRequest(request) {
|
|
273
|
+
if (this.config.logLevel === 'minimal') {
|
|
274
|
+
console.log(chalk.yellow(`⚠️ Decision required: ${request.title}`));
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
console.log(chalk.yellow(`\n⚠️ Decision Point: ${request.title}`));
|
|
278
|
+
console.log(chalk.dim(` ${request.description}`));
|
|
279
|
+
console.log(chalk.dim(` Options: ${request.options.map(o => o.label).join(', ')}`));
|
|
280
|
+
}
|
|
281
|
+
recordDecision(response) {
|
|
282
|
+
this.decisionHistory.push(response);
|
|
283
|
+
this.pendingDecisions.delete(response.requestId);
|
|
284
|
+
// Log the decision
|
|
285
|
+
if (this.config.logLevel === 'detailed') {
|
|
286
|
+
const request = this.pendingDecisions.get(response.requestId);
|
|
287
|
+
const optionLabel = request ? this.getOptionLabel(request, response.selectedOptionId) : response.selectedOptionId;
|
|
288
|
+
console.log(chalk.green(`📝 Decision recorded: ${optionLabel}`));
|
|
289
|
+
if (response.userInput) {
|
|
290
|
+
console.log(chalk.dim(` Custom input: ${response.userInput}`));
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get decision history
|
|
296
|
+
*/
|
|
297
|
+
getHistory() {
|
|
298
|
+
return [...this.decisionHistory];
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Clear decision history
|
|
302
|
+
*/
|
|
303
|
+
clearHistory() {
|
|
304
|
+
this.decisionHistory = [];
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Update configuration
|
|
308
|
+
*/
|
|
309
|
+
updateConfig(config) {
|
|
310
|
+
this.config = { ...this.config, ...config };
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
// Singleton instance
|
|
314
|
+
let hitlInstance = null;
|
|
315
|
+
/**
|
|
316
|
+
* Get the global HITL instance
|
|
317
|
+
*/
|
|
318
|
+
export function getHITL(config) {
|
|
319
|
+
if (!hitlInstance) {
|
|
320
|
+
hitlInstance = new HITLSystem(config);
|
|
321
|
+
}
|
|
322
|
+
if (config) {
|
|
323
|
+
hitlInstance.updateConfig(config);
|
|
324
|
+
}
|
|
325
|
+
return hitlInstance;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Helper function for common decision patterns
|
|
329
|
+
*/
|
|
330
|
+
export const hitl = {
|
|
331
|
+
/**
|
|
332
|
+
* Request a yes/no decision
|
|
333
|
+
*/
|
|
334
|
+
async askYesNo(title, description, context = '', defaultYes = true) {
|
|
335
|
+
const hitl = getHITL();
|
|
336
|
+
const decision = await hitl.requestDecision({
|
|
337
|
+
id: `yesno-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`,
|
|
338
|
+
title,
|
|
339
|
+
description,
|
|
340
|
+
context,
|
|
341
|
+
options: [
|
|
342
|
+
{
|
|
343
|
+
id: 'yes',
|
|
344
|
+
label: 'Yes',
|
|
345
|
+
description: 'Proceed with the suggested plan',
|
|
346
|
+
shortcut: 'y'
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
id: 'no',
|
|
350
|
+
label: 'No',
|
|
351
|
+
description: 'Do not proceed',
|
|
352
|
+
shortcut: 'n'
|
|
353
|
+
}
|
|
354
|
+
],
|
|
355
|
+
defaultOptionId: defaultYes ? 'yes' : 'no',
|
|
356
|
+
requiresExplicitChoice: true
|
|
357
|
+
});
|
|
358
|
+
return decision === 'yes';
|
|
359
|
+
},
|
|
360
|
+
/**
|
|
361
|
+
* Request selection from multiple options
|
|
362
|
+
*/
|
|
363
|
+
async selectOption(title, description, options, context = '', defaultOptionId) {
|
|
364
|
+
const hitl = getHITL();
|
|
365
|
+
const decision = await hitl.requestDecision({
|
|
366
|
+
id: `select-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`,
|
|
367
|
+
title,
|
|
368
|
+
description,
|
|
369
|
+
context,
|
|
370
|
+
options: options.map((opt, index) => ({
|
|
371
|
+
...opt,
|
|
372
|
+
shortcut: String(index + 1)
|
|
373
|
+
})),
|
|
374
|
+
defaultOptionId,
|
|
375
|
+
requiresExplicitChoice: true
|
|
376
|
+
});
|
|
377
|
+
return decision;
|
|
378
|
+
},
|
|
379
|
+
/**
|
|
380
|
+
* Request approval for a risky operation
|
|
381
|
+
*/
|
|
382
|
+
async requestApproval(title, riskDescription, operationDetails) {
|
|
383
|
+
return hitl.askYesNo(`APPROVAL REQUIRED: ${title}`, riskDescription, operationDetails, false // Default to "no" for safety
|
|
384
|
+
);
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
//# sourceMappingURL=hitl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hitl.js","sourceRoot":"","sources":["../../src/core/hitl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE5G;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAC7C,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAE/B,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAE1B,MAAM,UAAU,kBAAkB;IAChC,OAAO,iBAAiB,GAAG,CAAC,CAAC;AAC/B,CAAC;AAmDD,MAAM,OAAO,UAAU;IACb,MAAM,CAAa;IACnB,gBAAgB,GAAiC,IAAI,GAAG,EAAE,CAAC;IAC3D,eAAe,GAAuB,EAAE,CAAC;IACzC,EAAE,CAAsB;IAEhC,YAAY,MAA4B;QACtC,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,UAAU;YACpB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,OAAwB;QAC5C,+DAA+D;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,IAAI,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,WAAW,GAAoB;YACnC,GAAG,OAAO;YACV,EAAE,EAAE,SAAS;SACd,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,gBAAgB,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC3E,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAqB;oBACjC,SAAS;oBACT,gBAAgB;oBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAE9B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;oBACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClH,CAAC;gBACD,OAAO,gBAAgB,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,OAAwB;QAC1D,2DAA2D;QAC3D,qBAAqB,EAAE,CAAC;QAExB,2CAA2C;QAC3C,IAAI,oBAAoB,EAAE,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACxE,IAAI,aAAa;gBAAE,OAAO,aAAa,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,8DAA8D;QAC9D,MAAM,SAAS,GAAkF;YAC/F,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/F,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,0DAA0D,EAAE,QAAQ,EAAE,IAAI,EAAE;SACvI,CAAC;QAEF,kDAAkD;QAClD,IAAI,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACtC,qEAAqE;YACrE,wEAAwE;YACxE,wEAAwE;YACxE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAE,KAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACvF,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;YAE5B,iBAAiB,IAAI,CAAC,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEjD,uEAAuE;YACvE,oDAAoD;YACpD,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,SAAS;oBAAE,OAAO;gBACtB,SAAS,GAAG,IAAI,CAAC;gBACjB,IAAI,SAAS;oBAAE,YAAY,CAAC,SAAS,CAAC,CAAC;gBACvC,iBAAiB,EAAE,CAAC;gBACpB,IAAI,CAAC;oBAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC5E,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,IAAI,CAAC;wBAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC;wBAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;gBACvD,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC;YAEF,kDAAkD;YAClD,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE3D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC;gBACzC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;oBACd,mEAAmE;oBACnE,oDAAoD;oBACpD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB;wBAAE,OAAO;oBAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC,CAAC;oBACzE,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;gBAC9C,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC3B,CAAC,CAAC,SAAS,CAAC;YAEd,kBAAkB;YAClB,MAAM,UAAU,GAAG,GAAG,EAAE;gBACtB,sCAAsC;gBACtC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBAE9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC,CAAC;gBAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC,CAAC;gBAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC,CAAC;gBAEhG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAEhB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;gBAEjF,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,UAAU,GAAG,KAAK,KAAK,aAAa,CAAC;oBAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACzD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC9D,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;oBAEtD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACnD,CAAC,CAAC;YAEF,sEAAsE;YACtE,qEAAqE;YACrE,iEAAiE;YACjE,4CAA4C;YAC5C,MAAM,iBAAiB,GAAG,GAAG,EAAE;gBAC7B,IAAI,CAAC;oBAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC5E,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAAC,IAAI,CAAC;wBAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;gBAEvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC;oBACxC,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,KAAK,CAAC,KAAK;iBACtB,CAAC,CAAC;gBAEH,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,WAAmB,EAAE,EAAE;oBAC/E,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACjB,OAAO,EAAE,CAAC;oBAEV,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC5E,MAAM,cAAc,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;wBAC9C,MAAM,QAAQ,GAAqB;4BACjC,SAAS,EAAE,OAAO,CAAC,EAAE;4BACrB,gBAAgB,EAAE,cAAc;4BAChC,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE;4BAC7B,SAAS,EAAE,IAAI,IAAI,EAAE;yBACtB,CAAC;wBACF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;wBAC9B,OAAO,CAAC,cAAc,CAAC,CAAC;oBAC1B,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;wBACjE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,YAAY,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,sEAAsE;YACtE,kDAAkD;YAClD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,KAAK,CAAC,MAAM,EAAE,CAAC;YAEf,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE;gBACvC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAE7B,SAAS;gBACT,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACnB,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;oBAClD,KAAK,kBAAkB,CAAC,GAAG,CAAC,CAAC;oBAC7B,OAAO;gBACT,CAAC;gBAED,YAAY;gBACZ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACjC,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;oBAC9C,IAAI,YAAY,EAAE,QAAQ,EAAE,CAAC;wBAC3B,mEAAmE;wBACnE,iBAAiB,EAAE,CAAC;oBACtB,CAAC;yBAAM,IAAI,YAAY,EAAE,CAAC;wBACxB,OAAO,EAAE,CAAC;wBACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAChE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;oBAC3B,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,gCAAgC;gBAChC,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;oBACpC,gBAAgB;oBAChB,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;oBAC/C,UAAU,EAAE,CAAC;gBACf,CAAC;qBAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;oBAC3C,kBAAkB;oBAClB,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;oBAClE,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC,CAAC;YAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAEjC,iBAAiB;YACjB,UAAU,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,OAAwB,EAAE,QAAgB;QAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAEO,kBAAkB,CAAC,OAAwB;QACjD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IAEO,cAAc,CAAC,QAA0B;QAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEjD,mBAAmB;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAElH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC,CAAC;YACjE,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAA2B;QACtC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9C,CAAC;CACF;AAED,qBAAqB;AACrB,IAAI,YAAY,GAAsB,IAAI,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAA4B;IAClD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,WAAmB,EAAE,UAAkB,EAAE,EAAE,aAAsB,IAAI;QACjG,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;YAC1C,EAAE,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACvE,KAAK;YACL,WAAW;YACX,OAAO;YACP,OAAO,EAAE;gBACP;oBACE,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,iCAAiC;oBAC9C,QAAQ,EAAE,GAAG;iBACd;gBACD;oBACE,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE,IAAI;oBACX,WAAW,EAAE,gBAAgB;oBAC7B,QAAQ,EAAE,GAAG;iBACd;aACF;YACD,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YAC1C,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC;QAEH,OAAO,QAAQ,KAAK,KAAK,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,WAAmB,EAAE,OAAgE,EAAE,UAAkB,EAAE,EAAE,eAAwB;QACrK,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;YAC1C,EAAE,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACxE,KAAK;YACL,WAAW;YACX,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACpC,GAAG,GAAG;gBACN,QAAQ,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;aAC5B,CAAC,CAAC;YACH,eAAe;YACf,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,KAAa,EAAE,eAAuB,EAAE,gBAAwB;QACpF,OAAO,IAAI,CAAC,QAAQ,CAClB,sBAAsB,KAAK,EAAE,EAC7B,eAAe,EACf,gBAAgB,EAChB,KAAK,CAAC,6BAA6B;SACpC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks — Claude-Code-style shell-command hooks that fire around
|
|
3
|
+
* tool execution. Lets users customize agent behavior without
|
|
4
|
+
* editing source: run a linter after every Edit, log Bash commands,
|
|
5
|
+
* block dangerous tools, etc.
|
|
6
|
+
*
|
|
7
|
+
* Settings file (per Claude Code convention):
|
|
8
|
+
* {
|
|
9
|
+
* "hooks": {
|
|
10
|
+
* "PreToolUse": [
|
|
11
|
+
* { "matcher": "Bash", "hooks": [{ "type": "command", "command": "/path/to/script.sh" }] }
|
|
12
|
+
* ],
|
|
13
|
+
* "PostToolUse": [ ... ]
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* Loaded from (in priority order):
|
|
18
|
+
* 1. <workingDir>/.erosolar/settings.json (project-local)
|
|
19
|
+
* 2. ~/.erosolar/settings.json (user-global)
|
|
20
|
+
*
|
|
21
|
+
* Both load — project-local extends user-global; matchers from both
|
|
22
|
+
* files fire if applicable.
|
|
23
|
+
*
|
|
24
|
+
* Hook contract: the command receives a JSON envelope on stdin,
|
|
25
|
+
* shape:
|
|
26
|
+
* { event: 'PreToolUse'|'PostToolUse', toolName, toolArgs, toolResult? }
|
|
27
|
+
* The command exits 0 + writes a JSON response on stdout to either
|
|
28
|
+
* pass through or shape the result:
|
|
29
|
+
* {} — pass through
|
|
30
|
+
* { "decision": "block",
|
|
31
|
+
* "reason": "string" } — PreToolUse: block the tool call
|
|
32
|
+
* { "appendToResult": "..." } — PostToolUse: append text to the
|
|
33
|
+
* model-visible tool result
|
|
34
|
+
*
|
|
35
|
+
* Hooks are best-effort: a hook that times out, errors, or returns
|
|
36
|
+
* malformed JSON is logged and skipped — never crashes the agent.
|
|
37
|
+
*/
|
|
38
|
+
export type HookEvent = 'PreToolUse' | 'PostToolUse' | 'UserPromptSubmit' | 'Stop' | 'SessionStart';
|
|
39
|
+
export interface HookCommand {
|
|
40
|
+
/** Always 'command' for now; reserved for future inline-JS hooks. */
|
|
41
|
+
type: 'command';
|
|
42
|
+
/** Shell command to invoke. Run via the user's default shell. */
|
|
43
|
+
command: string;
|
|
44
|
+
/** Per-hook timeout in ms. Default: 5000. Cap: 30000. */
|
|
45
|
+
timeoutMs?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface HookMatcher {
|
|
48
|
+
/**
|
|
49
|
+
* For PreToolUse / PostToolUse: a tool-name regex (anchored). Use
|
|
50
|
+
* "*" or omit to match every tool. For other events: ignored.
|
|
51
|
+
*/
|
|
52
|
+
matcher?: string;
|
|
53
|
+
hooks: HookCommand[];
|
|
54
|
+
}
|
|
55
|
+
export interface HooksConfig {
|
|
56
|
+
hooks?: Partial<Record<HookEvent, HookMatcher[]>>;
|
|
57
|
+
}
|
|
58
|
+
export interface PreToolUseInput {
|
|
59
|
+
event: 'PreToolUse';
|
|
60
|
+
toolName: string;
|
|
61
|
+
toolArgs: unknown;
|
|
62
|
+
}
|
|
63
|
+
export interface PostToolUseInput {
|
|
64
|
+
event: 'PostToolUse';
|
|
65
|
+
toolName: string;
|
|
66
|
+
toolArgs: unknown;
|
|
67
|
+
toolResult: unknown;
|
|
68
|
+
}
|
|
69
|
+
export interface PreToolUseDecision {
|
|
70
|
+
decision?: 'block';
|
|
71
|
+
reason?: string;
|
|
72
|
+
}
|
|
73
|
+
export interface PostToolUseDecision {
|
|
74
|
+
appendToResult?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Read + merge settings from project-local + user-global locations.
|
|
78
|
+
* Returns an empty config if neither file exists. Malformed JSON is
|
|
79
|
+
* silently skipped (with a console.warn).
|
|
80
|
+
*/
|
|
81
|
+
export declare function loadHooksConfig(workingDir: string): HooksConfig;
|
|
82
|
+
/**
|
|
83
|
+
* Run all PreToolUse hooks matching `toolName`. Returns the FIRST
|
|
84
|
+
* blocking decision encountered, or null if no hook blocks.
|
|
85
|
+
*/
|
|
86
|
+
export declare function runPreToolUseHooks(config: HooksConfig, toolName: string, toolArgs: unknown): Promise<PreToolUseDecision | null>;
|
|
87
|
+
/**
|
|
88
|
+
* Run all PostToolUse hooks matching `toolName`. Concatenates any
|
|
89
|
+
* appendToResult strings (in matcher order) so multiple hooks can
|
|
90
|
+
* each contribute a note.
|
|
91
|
+
*/
|
|
92
|
+
export declare function runPostToolUseHooks(config: HooksConfig, toolName: string, toolArgs: unknown, toolResult: unknown): Promise<{
|
|
93
|
+
appendToResult: string;
|
|
94
|
+
} | null>;
|
|
95
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAOH,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,kBAAkB,GAAG,MAAM,GAAG,cAAc,CAAC;AAEpG,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,IAAI,EAAE,SAAS,CAAC;IAChB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CA+B/D;AAsGD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAoBpC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAqB5C"}
|