@wingman-ai/gateway 0.1.0
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/.wingman/agents/README.md +161 -0
- package/.wingman/agents/coding/agent.md +147 -0
- package/.wingman/agents/coding/implementor.md +56 -0
- package/.wingman/agents/main/agent.md +19 -0
- package/.wingman/agents/researcher/agent.md +62 -0
- package/.wingman/agents/stock-trader/agent.md +223 -0
- package/.wingman/agents/stock-trader/chain-curator.md +24 -0
- package/.wingman/agents/stock-trader/goal-translator.md +42 -0
- package/.wingman/agents/stock-trader/guardrails-veto.md +11 -0
- package/.wingman/agents/stock-trader/path-planner.md +23 -0
- package/.wingman/agents/stock-trader/regime-analyst.md +15 -0
- package/.wingman/agents/stock-trader/risk.md +20 -0
- package/.wingman/agents/stock-trader/selection.md +22 -0
- package/.wingman/agents/stock-trader/strategy-composer.md +38 -0
- package/.wingman/agents/wingman/agent.json +12 -0
- package/bin/wingman +7 -0
- package/dist/agent/config/agentConfig.cjs +95 -0
- package/dist/agent/config/agentConfig.d.ts +187 -0
- package/dist/agent/config/agentConfig.js +52 -0
- package/dist/agent/config/agentLoader.cjs +242 -0
- package/dist/agent/config/agentLoader.d.ts +42 -0
- package/dist/agent/config/agentLoader.js +208 -0
- package/dist/agent/config/mcpClientManager.cjs +168 -0
- package/dist/agent/config/mcpClientManager.d.ts +41 -0
- package/dist/agent/config/mcpClientManager.js +134 -0
- package/dist/agent/config/modelFactory.cjs +175 -0
- package/dist/agent/config/modelFactory.d.ts +33 -0
- package/dist/agent/config/modelFactory.js +141 -0
- package/dist/agent/config/toolRegistry.cjs +111 -0
- package/dist/agent/config/toolRegistry.d.ts +25 -0
- package/dist/agent/config/toolRegistry.js +71 -0
- package/dist/agent/middleware/additional-messages.cjs +60 -0
- package/dist/agent/middleware/additional-messages.d.ts +7 -0
- package/dist/agent/middleware/additional-messages.js +26 -0
- package/dist/agent/middleware/hooks/executor.cjs +137 -0
- package/dist/agent/middleware/hooks/executor.d.ts +52 -0
- package/dist/agent/middleware/hooks/executor.js +103 -0
- package/dist/agent/middleware/hooks/input-builder.cjs +55 -0
- package/dist/agent/middleware/hooks/input-builder.d.ts +15 -0
- package/dist/agent/middleware/hooks/input-builder.js +21 -0
- package/dist/agent/middleware/hooks/matcher.cjs +59 -0
- package/dist/agent/middleware/hooks/matcher.d.ts +27 -0
- package/dist/agent/middleware/hooks/matcher.js +22 -0
- package/dist/agent/middleware/hooks/merger.cjs +54 -0
- package/dist/agent/middleware/hooks/merger.d.ts +18 -0
- package/dist/agent/middleware/hooks/merger.js +20 -0
- package/dist/agent/middleware/hooks/types.cjs +62 -0
- package/dist/agent/middleware/hooks/types.d.ts +82 -0
- package/dist/agent/middleware/hooks/types.js +19 -0
- package/dist/agent/middleware/hooks.cjs +79 -0
- package/dist/agent/middleware/hooks.d.ts +19 -0
- package/dist/agent/middleware/hooks.js +45 -0
- package/dist/agent/middleware/media-compat.cjs +80 -0
- package/dist/agent/middleware/media-compat.d.ts +7 -0
- package/dist/agent/middleware/media-compat.js +46 -0
- package/dist/agent/tests/agentConfig.test.cjs +132 -0
- package/dist/agent/tests/agentConfig.test.d.ts +1 -0
- package/dist/agent/tests/agentConfig.test.js +126 -0
- package/dist/agent/tests/agentLoader.test.cjs +235 -0
- package/dist/agent/tests/agentLoader.test.d.ts +1 -0
- package/dist/agent/tests/agentLoader.test.js +229 -0
- package/dist/agent/tests/modelFactory.test.cjs +114 -0
- package/dist/agent/tests/modelFactory.test.d.ts +1 -0
- package/dist/agent/tests/modelFactory.test.js +108 -0
- package/dist/agent/tests/test-agent-loader.cjs +33 -0
- package/dist/agent/tests/test-agent-loader.d.ts +1 -0
- package/dist/agent/tests/test-agent-loader.js +27 -0
- package/dist/agent/tests/test-subagent-loading.cjs +99 -0
- package/dist/agent/tests/test-subagent-loading.d.ts +1 -0
- package/dist/agent/tests/test-subagent-loading.js +93 -0
- package/dist/agent/tests/toolRegistry.test.cjs +109 -0
- package/dist/agent/tests/toolRegistry.test.d.ts +1 -0
- package/dist/agent/tests/toolRegistry.test.js +103 -0
- package/dist/agent/tools/code_search.cjs +108 -0
- package/dist/agent/tools/code_search.d.ts +24 -0
- package/dist/agent/tools/code_search.js +74 -0
- package/dist/agent/tools/command_execute.cjs +136 -0
- package/dist/agent/tools/command_execute.d.ts +12 -0
- package/dist/agent/tools/command_execute.js +99 -0
- package/dist/agent/tools/git_status.cjs +126 -0
- package/dist/agent/tools/git_status.d.ts +15 -0
- package/dist/agent/tools/git_status.js +92 -0
- package/dist/agent/tools/internet_search.cjs +93 -0
- package/dist/agent/tools/internet_search.d.ts +25 -0
- package/dist/agent/tools/internet_search.js +56 -0
- package/dist/agent/tools/think.cjs +53 -0
- package/dist/agent/tools/think.d.ts +26 -0
- package/dist/agent/tools/think.js +16 -0
- package/dist/agent/tools/web_crawler.cjs +180 -0
- package/dist/agent/tools/web_crawler.d.ts +31 -0
- package/dist/agent/tools/web_crawler.js +143 -0
- package/dist/agent/utils.cjs +54 -0
- package/dist/agent/utils.d.ts +1 -0
- package/dist/agent/utils.js +10 -0
- package/dist/cli/commands/agent.cjs +169 -0
- package/dist/cli/commands/agent.d.ts +15 -0
- package/dist/cli/commands/agent.js +125 -0
- package/dist/cli/commands/gateway.cjs +601 -0
- package/dist/cli/commands/gateway.d.ts +12 -0
- package/dist/cli/commands/gateway.js +567 -0
- package/dist/cli/commands/init.cjs +681 -0
- package/dist/cli/commands/init.d.ts +10 -0
- package/dist/cli/commands/init.js +634 -0
- package/dist/cli/commands/provider.cjs +208 -0
- package/dist/cli/commands/provider.d.ts +5 -0
- package/dist/cli/commands/provider.js +174 -0
- package/dist/cli/commands/skill.cjs +145 -0
- package/dist/cli/commands/skill.d.ts +10 -0
- package/dist/cli/commands/skill.js +111 -0
- package/dist/cli/config/loader.cjs +143 -0
- package/dist/cli/config/loader.d.ts +14 -0
- package/dist/cli/config/loader.js +109 -0
- package/dist/cli/config/schema.cjs +262 -0
- package/dist/cli/config/schema.d.ts +268 -0
- package/dist/cli/config/schema.js +213 -0
- package/dist/cli/core/agentInvoker.cjs +284 -0
- package/dist/cli/core/agentInvoker.d.ts +77 -0
- package/dist/cli/core/agentInvoker.js +247 -0
- package/dist/cli/core/commandHandler.cjs +257 -0
- package/dist/cli/core/commandHandler.d.ts +62 -0
- package/dist/cli/core/commandHandler.js +223 -0
- package/dist/cli/core/database/bunSqliteAdapter.cjs +87 -0
- package/dist/cli/core/database/bunSqliteAdapter.d.ts +34 -0
- package/dist/cli/core/database/bunSqliteAdapter.js +53 -0
- package/dist/cli/core/loggerBridge.cjs +42 -0
- package/dist/cli/core/loggerBridge.d.ts +8 -0
- package/dist/cli/core/loggerBridge.js +8 -0
- package/dist/cli/core/outputManager.cjs +106 -0
- package/dist/cli/core/outputManager.d.ts +43 -0
- package/dist/cli/core/outputManager.js +72 -0
- package/dist/cli/core/sessionManager.cjs +535 -0
- package/dist/cli/core/sessionManager.d.ts +111 -0
- package/dist/cli/core/sessionManager.js +486 -0
- package/dist/cli/core/streamParser.cjs +328 -0
- package/dist/cli/core/streamParser.d.ts +42 -0
- package/dist/cli/core/streamParser.js +288 -0
- package/dist/cli/index.cjs +211 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +205 -0
- package/dist/cli/services/skillRepository.cjs +178 -0
- package/dist/cli/services/skillRepository.d.ts +35 -0
- package/dist/cli/services/skillRepository.js +144 -0
- package/dist/cli/services/skillService.cjs +336 -0
- package/dist/cli/services/skillService.d.ts +48 -0
- package/dist/cli/services/skillService.js +302 -0
- package/dist/cli/types/gateway.cjs +18 -0
- package/dist/cli/types/gateway.d.ts +18 -0
- package/dist/cli/types/gateway.js +0 -0
- package/dist/cli/types/init.cjs +18 -0
- package/dist/cli/types/init.d.ts +13 -0
- package/dist/cli/types/init.js +0 -0
- package/dist/cli/types/provider.cjs +18 -0
- package/dist/cli/types/provider.d.ts +9 -0
- package/dist/cli/types/provider.js +0 -0
- package/dist/cli/types/skill.cjs +18 -0
- package/dist/cli/types/skill.d.ts +71 -0
- package/dist/cli/types/skill.js +0 -0
- package/dist/cli/types.cjs +18 -0
- package/dist/cli/types.d.ts +175 -0
- package/dist/cli/types.js +0 -0
- package/dist/cli/ui/AgentOutput.cjs +82 -0
- package/dist/cli/ui/AgentOutput.d.ts +8 -0
- package/dist/cli/ui/AgentOutput.js +38 -0
- package/dist/cli/ui/App.cjs +285 -0
- package/dist/cli/ui/App.d.ts +6 -0
- package/dist/cli/ui/App.js +241 -0
- package/dist/cli/ui/ErrorDisplay.cjs +65 -0
- package/dist/cli/ui/ErrorDisplay.d.ts +8 -0
- package/dist/cli/ui/ErrorDisplay.js +21 -0
- package/dist/cli/ui/LogDisplay.cjs +74 -0
- package/dist/cli/ui/LogDisplay.d.ts +13 -0
- package/dist/cli/ui/LogDisplay.js +30 -0
- package/dist/cli/ui/SessionListDisplay.cjs +135 -0
- package/dist/cli/ui/SessionListDisplay.d.ts +9 -0
- package/dist/cli/ui/SessionListDisplay.js +91 -0
- package/dist/cli/ui/blockHelpers.cjs +80 -0
- package/dist/cli/ui/blockHelpers.d.ts +21 -0
- package/dist/cli/ui/blockHelpers.js +40 -0
- package/dist/cli/ui/components/ToolCallDisplay.cjs +207 -0
- package/dist/cli/ui/components/ToolCallDisplay.d.ts +7 -0
- package/dist/cli/ui/components/ToolCallDisplay.js +162 -0
- package/dist/cli/ui/components/ToolResultDisplay.cjs +86 -0
- package/dist/cli/ui/components/ToolResultDisplay.d.ts +8 -0
- package/dist/cli/ui/components/ToolResultDisplay.js +42 -0
- package/dist/cli/ui/toolDisplayHelpers.cjs +112 -0
- package/dist/cli/ui/toolDisplayHelpers.d.ts +3 -0
- package/dist/cli/ui/toolDisplayHelpers.js +72 -0
- package/dist/gateway/adapters/discord.cjs +298 -0
- package/dist/gateway/adapters/discord.d.ts +42 -0
- package/dist/gateway/adapters/discord.js +246 -0
- package/dist/gateway/auth.cjs +94 -0
- package/dist/gateway/auth.d.ts +36 -0
- package/dist/gateway/auth.js +60 -0
- package/dist/gateway/broadcast.cjs +131 -0
- package/dist/gateway/broadcast.d.ts +76 -0
- package/dist/gateway/broadcast.js +97 -0
- package/dist/gateway/client.cjs +282 -0
- package/dist/gateway/client.d.ts +141 -0
- package/dist/gateway/client.js +248 -0
- package/dist/gateway/daemon.cjs +195 -0
- package/dist/gateway/daemon.d.ts +67 -0
- package/dist/gateway/daemon.js +161 -0
- package/dist/gateway/discovery/index.cjs +72 -0
- package/dist/gateway/discovery/index.d.ts +3 -0
- package/dist/gateway/discovery/index.js +3 -0
- package/dist/gateway/discovery/mdns.cjs +221 -0
- package/dist/gateway/discovery/mdns.d.ts +37 -0
- package/dist/gateway/discovery/mdns.js +177 -0
- package/dist/gateway/discovery/tailscale.cjs +140 -0
- package/dist/gateway/discovery/tailscale.d.ts +31 -0
- package/dist/gateway/discovery/tailscale.js +106 -0
- package/dist/gateway/discovery/types.cjs +18 -0
- package/dist/gateway/discovery/types.d.ts +41 -0
- package/dist/gateway/discovery/types.js +0 -0
- package/dist/gateway/env.cjs +45 -0
- package/dist/gateway/env.d.ts +2 -0
- package/dist/gateway/env.js +8 -0
- package/dist/gateway/hooks/loader.cjs +137 -0
- package/dist/gateway/hooks/loader.d.ts +10 -0
- package/dist/gateway/hooks/loader.js +103 -0
- package/dist/gateway/hooks/registry.cjs +128 -0
- package/dist/gateway/hooks/registry.d.ts +13 -0
- package/dist/gateway/hooks/registry.js +94 -0
- package/dist/gateway/hooks/types.cjs +58 -0
- package/dist/gateway/hooks/types.d.ts +50 -0
- package/dist/gateway/hooks/types.js +18 -0
- package/dist/gateway/http/agents.cjs +280 -0
- package/dist/gateway/http/agents.d.ts +2 -0
- package/dist/gateway/http/agents.js +246 -0
- package/dist/gateway/http/fs.cjs +81 -0
- package/dist/gateway/http/fs.d.ts +2 -0
- package/dist/gateway/http/fs.js +47 -0
- package/dist/gateway/http/providers.cjs +120 -0
- package/dist/gateway/http/providers.d.ts +2 -0
- package/dist/gateway/http/providers.js +86 -0
- package/dist/gateway/http/routines.cjs +196 -0
- package/dist/gateway/http/routines.d.ts +20 -0
- package/dist/gateway/http/routines.js +159 -0
- package/dist/gateway/http/sessions.cjs +241 -0
- package/dist/gateway/http/sessions.d.ts +2 -0
- package/dist/gateway/http/sessions.js +207 -0
- package/dist/gateway/http/types.cjs +18 -0
- package/dist/gateway/http/types.d.ts +25 -0
- package/dist/gateway/http/types.js +0 -0
- package/dist/gateway/http/voice.cjs +167 -0
- package/dist/gateway/http/voice.d.ts +2 -0
- package/dist/gateway/http/voice.js +133 -0
- package/dist/gateway/http/webhooks.cjs +353 -0
- package/dist/gateway/http/webhooks.d.ts +22 -0
- package/dist/gateway/http/webhooks.js +313 -0
- package/dist/gateway/index.cjs +119 -0
- package/dist/gateway/index.d.ts +8 -0
- package/dist/gateway/index.js +9 -0
- package/dist/gateway/node.cjs +218 -0
- package/dist/gateway/node.d.ts +112 -0
- package/dist/gateway/node.js +184 -0
- package/dist/gateway/router.cjs +85 -0
- package/dist/gateway/router.d.ts +9 -0
- package/dist/gateway/router.js +51 -0
- package/dist/gateway/rpcClient.cjs +152 -0
- package/dist/gateway/rpcClient.d.ts +24 -0
- package/dist/gateway/rpcClient.js +118 -0
- package/dist/gateway/server.cjs +1175 -0
- package/dist/gateway/server.d.ts +185 -0
- package/dist/gateway/server.js +1138 -0
- package/dist/gateway/transport/http.cjs +153 -0
- package/dist/gateway/transport/http.d.ts +25 -0
- package/dist/gateway/transport/http.js +119 -0
- package/dist/gateway/transport/index.cjs +40 -0
- package/dist/gateway/transport/index.d.ts +3 -0
- package/dist/gateway/transport/index.js +3 -0
- package/dist/gateway/transport/types.cjs +18 -0
- package/dist/gateway/transport/types.d.ts +59 -0
- package/dist/gateway/transport/types.js +0 -0
- package/dist/gateway/transport/websocket.cjs +132 -0
- package/dist/gateway/transport/websocket.d.ts +21 -0
- package/dist/gateway/transport/websocket.js +98 -0
- package/dist/gateway/types.cjs +18 -0
- package/dist/gateway/types.d.ts +215 -0
- package/dist/gateway/types.js +0 -0
- package/dist/gateway/validation.cjs +225 -0
- package/dist/gateway/validation.d.ts +157 -0
- package/dist/gateway/validation.js +158 -0
- package/dist/index.cjs +95 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/logger.cjs +270 -0
- package/dist/logger.d.ts +54 -0
- package/dist/logger.js +215 -0
- package/dist/providers/copilot.cjs +148 -0
- package/dist/providers/copilot.d.ts +3 -0
- package/dist/providers/copilot.js +114 -0
- package/dist/providers/credentials.cjs +154 -0
- package/dist/providers/credentials.d.ts +26 -0
- package/dist/providers/credentials.js +99 -0
- package/dist/providers/oauth.cjs +279 -0
- package/dist/providers/oauth.d.ts +13 -0
- package/dist/providers/oauth.js +245 -0
- package/dist/providers/registry.cjs +138 -0
- package/dist/providers/registry.d.ts +32 -0
- package/dist/providers/registry.js +98 -0
- package/dist/tests/additionalMessageMiddleware.test.cjs +45 -0
- package/dist/tests/additionalMessageMiddleware.test.d.ts +1 -0
- package/dist/tests/additionalMessageMiddleware.test.js +39 -0
- package/dist/tests/agent-config-voice.test.cjs +25 -0
- package/dist/tests/agent-config-voice.test.d.ts +1 -0
- package/dist/tests/agent-config-voice.test.js +19 -0
- package/dist/tests/agentInvokerAttachments.test.cjs +67 -0
- package/dist/tests/agentInvokerAttachments.test.d.ts +1 -0
- package/dist/tests/agentInvokerAttachments.test.js +61 -0
- package/dist/tests/attachments-utils.test.cjs +46 -0
- package/dist/tests/attachments-utils.test.d.ts +1 -0
- package/dist/tests/attachments-utils.test.js +40 -0
- package/dist/tests/bunSqliteAdapter.test.cjs +265 -0
- package/dist/tests/bunSqliteAdapter.test.d.ts +1 -0
- package/dist/tests/bunSqliteAdapter.test.js +259 -0
- package/dist/tests/candleRange.test.cjs +48 -0
- package/dist/tests/candleRange.test.d.ts +1 -0
- package/dist/tests/candleRange.test.js +42 -0
- package/dist/tests/cli-config-loader.test.cjs +364 -0
- package/dist/tests/cli-config-loader.test.d.ts +1 -0
- package/dist/tests/cli-config-loader.test.js +358 -0
- package/dist/tests/cli-init.test.cjs +82 -0
- package/dist/tests/cli-init.test.d.ts +1 -0
- package/dist/tests/cli-init.test.js +76 -0
- package/dist/tests/discord-adapter.test.cjs +55 -0
- package/dist/tests/discord-adapter.test.d.ts +1 -0
- package/dist/tests/discord-adapter.test.js +49 -0
- package/dist/tests/gateway.test.cjs +319 -0
- package/dist/tests/gateway.test.d.ts +1 -0
- package/dist/tests/gateway.test.js +313 -0
- package/dist/tests/hooks-matcher.test.cjs +309 -0
- package/dist/tests/hooks-matcher.test.d.ts +1 -0
- package/dist/tests/hooks-matcher.test.js +303 -0
- package/dist/tests/hooks-merger.test.cjs +528 -0
- package/dist/tests/hooks-merger.test.d.ts +1 -0
- package/dist/tests/hooks-merger.test.js +522 -0
- package/dist/tests/integration/agent-invocation.integration.test.cjs +264 -0
- package/dist/tests/integration/agent-invocation.integration.test.d.ts +1 -0
- package/dist/tests/integration/agent-invocation.integration.test.js +258 -0
- package/dist/tests/integration/finnhub-candles.integration.test.cjs +98 -0
- package/dist/tests/integration/finnhub-candles.integration.test.d.ts +1 -0
- package/dist/tests/integration/finnhub-candles.integration.test.js +92 -0
- package/dist/tests/logger.test.cjs +353 -0
- package/dist/tests/logger.test.d.ts +1 -0
- package/dist/tests/logger.test.js +347 -0
- package/dist/tests/mediaCompatibilityMiddleware.test.cjs +106 -0
- package/dist/tests/mediaCompatibilityMiddleware.test.d.ts +1 -0
- package/dist/tests/mediaCompatibilityMiddleware.test.js +100 -0
- package/dist/tests/routines-api.test.cjs +107 -0
- package/dist/tests/routines-api.test.d.ts +1 -0
- package/dist/tests/routines-api.test.js +101 -0
- package/dist/tests/sessionMessageAttachments.test.cjs +108 -0
- package/dist/tests/sessionMessageAttachments.test.d.ts +1 -0
- package/dist/tests/sessionMessageAttachments.test.js +102 -0
- package/dist/tests/sessionMessageRole.test.cjs +44 -0
- package/dist/tests/sessionMessageRole.test.d.ts +1 -0
- package/dist/tests/sessionMessageRole.test.js +38 -0
- package/dist/tests/sessionStateMessages.test.cjs +72 -0
- package/dist/tests/sessionStateMessages.test.d.ts +1 -0
- package/dist/tests/sessionStateMessages.test.js +66 -0
- package/dist/tests/sessions-api.test.cjs +68 -0
- package/dist/tests/sessions-api.test.d.ts +1 -0
- package/dist/tests/sessions-api.test.js +62 -0
- package/dist/tests/technicalIndicators.test.cjs +82 -0
- package/dist/tests/technicalIndicators.test.d.ts +1 -0
- package/dist/tests/technicalIndicators.test.js +76 -0
- package/dist/tests/toolDisplayHelpers.test.cjs +43 -0
- package/dist/tests/toolDisplayHelpers.test.d.ts +1 -0
- package/dist/tests/toolDisplayHelpers.test.js +37 -0
- package/dist/tests/voice-config.test.cjs +35 -0
- package/dist/tests/voice-config.test.d.ts +1 -0
- package/dist/tests/voice-config.test.js +29 -0
- package/dist/tests/yahooCandles.test.cjs +111 -0
- package/dist/tests/yahooCandles.test.d.ts +1 -0
- package/dist/tests/yahooCandles.test.js +105 -0
- package/dist/tools/finance/candleRange.cjs +71 -0
- package/dist/tools/finance/candleRange.d.ts +21 -0
- package/dist/tools/finance/candleRange.js +28 -0
- package/dist/tools/finance/optionsAnalytics.cjs +222 -0
- package/dist/tools/finance/optionsAnalytics.d.ts +44 -0
- package/dist/tools/finance/optionsAnalytics.js +188 -0
- package/dist/tools/finance/optionsAnalytics.test.cjs +128 -0
- package/dist/tools/finance/optionsAnalytics.test.d.ts +1 -0
- package/dist/tools/finance/optionsAnalytics.test.js +122 -0
- package/dist/tools/finance/technicalIndicators.cjs +111 -0
- package/dist/tools/finance/technicalIndicators.d.ts +15 -0
- package/dist/tools/finance/technicalIndicators.js +68 -0
- package/dist/tools/finance/yahooCandles.cjs +125 -0
- package/dist/tools/finance/yahooCandles.d.ts +41 -0
- package/dist/tools/finance/yahooCandles.js +85 -0
- package/dist/tools/mcp-finance.cjs +649 -0
- package/dist/tools/mcp-finance.d.ts +1 -0
- package/dist/tools/mcp-finance.js +631 -0
- package/dist/types/agents.cjs +18 -0
- package/dist/types/agents.d.ts +11 -0
- package/dist/types/agents.js +0 -0
- package/dist/types/hooks.cjs +18 -0
- package/dist/types/hooks.d.ts +82 -0
- package/dist/types/hooks.js +0 -0
- package/dist/types/mcp.cjs +86 -0
- package/dist/types/mcp.d.ts +107 -0
- package/dist/types/mcp.js +40 -0
- package/dist/types/voice.cjs +103 -0
- package/dist/types/voice.d.ts +117 -0
- package/dist/types/voice.js +51 -0
- package/dist/utils/attachments.cjs +46 -0
- package/dist/utils/attachments.d.ts +7 -0
- package/dist/utils/attachments.js +12 -0
- package/dist/voice/config.cjs +52 -0
- package/dist/voice/config.d.ts +8 -0
- package/dist/voice/config.js +18 -0
- package/dist/webui/assets/index-BA0HaStz.css +1 -0
- package/dist/webui/assets/index-NHgTZsWN.js +112 -0
- package/dist/webui/assets/wingman_icon-DOy91UEF.webp +0 -0
- package/dist/webui/assets/wingman_logo-Cogyt3qm.webp +0 -0
- package/dist/webui/index.html +19 -0
- package/package.json +130 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
webCrawler: ()=>webCrawler,
|
|
28
|
+
createWebCrawlerTool: ()=>createWebCrawlerTool
|
|
29
|
+
});
|
|
30
|
+
const external_langchain_namespaceObject = require("langchain");
|
|
31
|
+
const external_zod_namespaceObject = require("zod");
|
|
32
|
+
const external_logger_cjs_namespaceObject = require("../../logger.cjs");
|
|
33
|
+
const logger = (0, external_logger_cjs_namespaceObject.createLogger)();
|
|
34
|
+
function extractTextContent(html) {
|
|
35
|
+
let text = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, "");
|
|
36
|
+
text = text.replace(/<[^>]+>/g, " ");
|
|
37
|
+
text = text.replace(/ /g, " ").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/'/g, "'");
|
|
38
|
+
text = text.replace(/\s+/g, " ").trim();
|
|
39
|
+
return text;
|
|
40
|
+
}
|
|
41
|
+
function extractTitle(html) {
|
|
42
|
+
const titleMatch = html.match(/<title[^>]*>(.*?)<\/title>/i);
|
|
43
|
+
return titleMatch ? extractTextContent(titleMatch[1]) : "";
|
|
44
|
+
}
|
|
45
|
+
function extractLinks(html, baseUrl) {
|
|
46
|
+
const links = new Set();
|
|
47
|
+
const linkRegex = /<a[^>]+href=["']([^"']+)["']/gi;
|
|
48
|
+
let match = null;
|
|
49
|
+
while(null !== (match = linkRegex.exec(html)))try {
|
|
50
|
+
const href = match[1];
|
|
51
|
+
if (href.startsWith("#") || href.startsWith("javascript:") || href.startsWith("mailto:") || href.startsWith("tel:")) continue;
|
|
52
|
+
const absoluteUrl = new URL(href, baseUrl).href;
|
|
53
|
+
links.add(absoluteUrl);
|
|
54
|
+
} catch {}
|
|
55
|
+
return Array.from(links);
|
|
56
|
+
}
|
|
57
|
+
async function crawlPage(url) {
|
|
58
|
+
const controller = new AbortController();
|
|
59
|
+
const timeoutId = setTimeout(()=>controller.abort(), 30000);
|
|
60
|
+
try {
|
|
61
|
+
const response = await fetch(url, {
|
|
62
|
+
signal: controller.signal,
|
|
63
|
+
headers: {
|
|
64
|
+
"User-Agent": "Mozilla/5.0 (compatible; WingmanBot/1.0; +https://github.com/RussellCanfield/wingman-ai)",
|
|
65
|
+
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
|
66
|
+
"Accept-Language": "en-US,en;q=0.5"
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
clearTimeout(timeoutId);
|
|
70
|
+
if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
71
|
+
const contentType = response.headers.get("content-type") || "";
|
|
72
|
+
if (!contentType.includes("text/html") && !contentType.includes("application/xhtml")) throw new Error(`Not an HTML page: ${contentType}`);
|
|
73
|
+
const html = await response.text();
|
|
74
|
+
return {
|
|
75
|
+
url,
|
|
76
|
+
title: extractTitle(html),
|
|
77
|
+
content: extractTextContent(html),
|
|
78
|
+
links: extractLinks(html, url),
|
|
79
|
+
metadata: {
|
|
80
|
+
statusCode: response.status,
|
|
81
|
+
contentType,
|
|
82
|
+
timestamp: new Date().toISOString()
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
} catch (error) {
|
|
86
|
+
clearTimeout(timeoutId);
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async function crawlMultiplePages(startUrl, maxPages, sameDomain) {
|
|
91
|
+
const visited = new Set();
|
|
92
|
+
const queue = [
|
|
93
|
+
startUrl
|
|
94
|
+
];
|
|
95
|
+
const results = [];
|
|
96
|
+
const startDomain = new URL(startUrl).hostname;
|
|
97
|
+
while(queue.length > 0 && results.length < maxPages){
|
|
98
|
+
const url = queue.shift();
|
|
99
|
+
if (visited.has(url)) continue;
|
|
100
|
+
visited.add(url);
|
|
101
|
+
try {
|
|
102
|
+
const result = await crawlPage(url);
|
|
103
|
+
results.push(result);
|
|
104
|
+
if (results.length < maxPages) {
|
|
105
|
+
for (const link of result.links)if (!visited.has(link)) {
|
|
106
|
+
if (sameDomain) {
|
|
107
|
+
const linkDomain = new URL(link).hostname;
|
|
108
|
+
if (linkDomain !== startDomain) continue;
|
|
109
|
+
}
|
|
110
|
+
queue.push(link);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
} catch (error) {
|
|
114
|
+
logger.error(`Failed to crawl ${url}`, error);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return results;
|
|
118
|
+
}
|
|
119
|
+
const createWebCrawlerTool = ()=>(0, external_langchain_namespaceObject.tool)(async ({ url, maxPages = 1, sameDomain = true })=>{
|
|
120
|
+
try {
|
|
121
|
+
new URL(url);
|
|
122
|
+
if (maxPages < 1 || maxPages > 10) return "Error: maxPages must be between 1 and 10";
|
|
123
|
+
const results = await crawlMultiplePages(url, maxPages, sameDomain);
|
|
124
|
+
if (0 === results.length) return `Failed to crawl ${url}. The page may be inaccessible or blocked.`;
|
|
125
|
+
let output = "";
|
|
126
|
+
if (1 === results.length) {
|
|
127
|
+
const result = results[0];
|
|
128
|
+
output = `# ${result.title || "Untitled Page"}
|
|
129
|
+
|
|
130
|
+
**URL**: ${result.url}
|
|
131
|
+
**Status**: ${result.metadata.statusCode}
|
|
132
|
+
**Crawled**: ${result.metadata.timestamp}
|
|
133
|
+
|
|
134
|
+
## Content
|
|
135
|
+
|
|
136
|
+
${result.content.substring(0, 10000)}${result.content.length > 10000 ? "\n\n[Content truncated - showing first 10,000 characters]" : ""}
|
|
137
|
+
|
|
138
|
+
## Links Found
|
|
139
|
+
|
|
140
|
+
${result.links.length > 0 ? result.links.slice(0, 20).map((link)=>`- ${link}`).join("\n") : "No links found"}${result.links.length > 20 ? `\n\n[${result.links.length - 20} more links not shown]` : ""}`;
|
|
141
|
+
} else {
|
|
142
|
+
output = `# Crawled ${results.length} pages from ${url}\n\n`;
|
|
143
|
+
for (const result of results)output += `## ${result.title || "Untitled Page"}
|
|
144
|
+
|
|
145
|
+
**URL**: ${result.url}
|
|
146
|
+
|
|
147
|
+
${result.content.substring(0, 2000)}${result.content.length > 2000 ? "..." : ""}
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
`;
|
|
152
|
+
output += `\n## Summary
|
|
153
|
+
|
|
154
|
+
Total pages crawled: ${results.length}
|
|
155
|
+
Total links discovered: ${results.reduce((sum, r)=>sum + r.links.length, 0)}`;
|
|
156
|
+
}
|
|
157
|
+
return output;
|
|
158
|
+
} catch (error) {
|
|
159
|
+
if (error instanceof TypeError && error.message.includes("Invalid URL")) return `Error: Invalid URL format - ${url}`;
|
|
160
|
+
return `Error crawling ${url}: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
161
|
+
}
|
|
162
|
+
}, {
|
|
163
|
+
name: "web_crawler",
|
|
164
|
+
description: "Crawls web pages and extracts their content. Can visit a single page or crawl multiple pages following links. Handles modern SPAs and JavaScript-rendered content. Use this to gather detailed information from websites, documentation, or web applications. Maximum 10 pages per crawl.",
|
|
165
|
+
schema: external_zod_namespaceObject.z.object({
|
|
166
|
+
url: external_zod_namespaceObject.z.string().describe("The URL to start crawling from (must be a valid HTTP/HTTPS URL)"),
|
|
167
|
+
maxPages: external_zod_namespaceObject.z.number().optional().default(1).describe("Maximum number of pages to crawl (1-10). Default is 1 for single page crawl."),
|
|
168
|
+
sameDomain: external_zod_namespaceObject.z.boolean().optional().default(true).describe("Whether to restrict crawling to the same domain as the start URL. Default is true.")
|
|
169
|
+
})
|
|
170
|
+
});
|
|
171
|
+
const webCrawler = createWebCrawlerTool();
|
|
172
|
+
exports.createWebCrawlerTool = __webpack_exports__.createWebCrawlerTool;
|
|
173
|
+
exports.webCrawler = __webpack_exports__.webCrawler;
|
|
174
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
175
|
+
"createWebCrawlerTool",
|
|
176
|
+
"webCrawler"
|
|
177
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
178
|
+
Object.defineProperty(exports, '__esModule', {
|
|
179
|
+
value: true
|
|
180
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a web crawler tool for visiting and extracting content from web pages.
|
|
4
|
+
* SPA-friendly: handles basic JavaScript-rendered content via fetch.
|
|
5
|
+
*/
|
|
6
|
+
export declare const createWebCrawlerTool: () => import("langchain").DynamicStructuredTool<z.ZodObject<{
|
|
7
|
+
url: z.ZodString;
|
|
8
|
+
maxPages: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
9
|
+
sameDomain: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
10
|
+
}, z.core.$strip>, {
|
|
11
|
+
url: string;
|
|
12
|
+
maxPages?: number;
|
|
13
|
+
sameDomain?: boolean;
|
|
14
|
+
}, {
|
|
15
|
+
url: string;
|
|
16
|
+
maxPages?: number | undefined;
|
|
17
|
+
sameDomain?: boolean | undefined;
|
|
18
|
+
}, string, "web_crawler">;
|
|
19
|
+
export declare const webCrawler: import("langchain").DynamicStructuredTool<z.ZodObject<{
|
|
20
|
+
url: z.ZodString;
|
|
21
|
+
maxPages: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
22
|
+
sameDomain: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
23
|
+
}, z.core.$strip>, {
|
|
24
|
+
url: string;
|
|
25
|
+
maxPages?: number;
|
|
26
|
+
sameDomain?: boolean;
|
|
27
|
+
}, {
|
|
28
|
+
url: string;
|
|
29
|
+
maxPages?: number | undefined;
|
|
30
|
+
sameDomain?: boolean | undefined;
|
|
31
|
+
}, string, "web_crawler">;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { tool } from "langchain";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { createLogger } from "../../logger.js";
|
|
4
|
+
const logger = createLogger();
|
|
5
|
+
function extractTextContent(html) {
|
|
6
|
+
let text = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, "");
|
|
7
|
+
text = text.replace(/<[^>]+>/g, " ");
|
|
8
|
+
text = text.replace(/ /g, " ").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/'/g, "'");
|
|
9
|
+
text = text.replace(/\s+/g, " ").trim();
|
|
10
|
+
return text;
|
|
11
|
+
}
|
|
12
|
+
function extractTitle(html) {
|
|
13
|
+
const titleMatch = html.match(/<title[^>]*>(.*?)<\/title>/i);
|
|
14
|
+
return titleMatch ? extractTextContent(titleMatch[1]) : "";
|
|
15
|
+
}
|
|
16
|
+
function extractLinks(html, baseUrl) {
|
|
17
|
+
const links = new Set();
|
|
18
|
+
const linkRegex = /<a[^>]+href=["']([^"']+)["']/gi;
|
|
19
|
+
let match = null;
|
|
20
|
+
while(null !== (match = linkRegex.exec(html)))try {
|
|
21
|
+
const href = match[1];
|
|
22
|
+
if (href.startsWith("#") || href.startsWith("javascript:") || href.startsWith("mailto:") || href.startsWith("tel:")) continue;
|
|
23
|
+
const absoluteUrl = new URL(href, baseUrl).href;
|
|
24
|
+
links.add(absoluteUrl);
|
|
25
|
+
} catch {}
|
|
26
|
+
return Array.from(links);
|
|
27
|
+
}
|
|
28
|
+
async function crawlPage(url) {
|
|
29
|
+
const controller = new AbortController();
|
|
30
|
+
const timeoutId = setTimeout(()=>controller.abort(), 30000);
|
|
31
|
+
try {
|
|
32
|
+
const response = await fetch(url, {
|
|
33
|
+
signal: controller.signal,
|
|
34
|
+
headers: {
|
|
35
|
+
"User-Agent": "Mozilla/5.0 (compatible; WingmanBot/1.0; +https://github.com/RussellCanfield/wingman-ai)",
|
|
36
|
+
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
|
37
|
+
"Accept-Language": "en-US,en;q=0.5"
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
clearTimeout(timeoutId);
|
|
41
|
+
if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
42
|
+
const contentType = response.headers.get("content-type") || "";
|
|
43
|
+
if (!contentType.includes("text/html") && !contentType.includes("application/xhtml")) throw new Error(`Not an HTML page: ${contentType}`);
|
|
44
|
+
const html = await response.text();
|
|
45
|
+
return {
|
|
46
|
+
url,
|
|
47
|
+
title: extractTitle(html),
|
|
48
|
+
content: extractTextContent(html),
|
|
49
|
+
links: extractLinks(html, url),
|
|
50
|
+
metadata: {
|
|
51
|
+
statusCode: response.status,
|
|
52
|
+
contentType,
|
|
53
|
+
timestamp: new Date().toISOString()
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
} catch (error) {
|
|
57
|
+
clearTimeout(timeoutId);
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async function crawlMultiplePages(startUrl, maxPages, sameDomain) {
|
|
62
|
+
const visited = new Set();
|
|
63
|
+
const queue = [
|
|
64
|
+
startUrl
|
|
65
|
+
];
|
|
66
|
+
const results = [];
|
|
67
|
+
const startDomain = new URL(startUrl).hostname;
|
|
68
|
+
while(queue.length > 0 && results.length < maxPages){
|
|
69
|
+
const url = queue.shift();
|
|
70
|
+
if (visited.has(url)) continue;
|
|
71
|
+
visited.add(url);
|
|
72
|
+
try {
|
|
73
|
+
const result = await crawlPage(url);
|
|
74
|
+
results.push(result);
|
|
75
|
+
if (results.length < maxPages) {
|
|
76
|
+
for (const link of result.links)if (!visited.has(link)) {
|
|
77
|
+
if (sameDomain) {
|
|
78
|
+
const linkDomain = new URL(link).hostname;
|
|
79
|
+
if (linkDomain !== startDomain) continue;
|
|
80
|
+
}
|
|
81
|
+
queue.push(link);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
} catch (error) {
|
|
85
|
+
logger.error(`Failed to crawl ${url}`, error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return results;
|
|
89
|
+
}
|
|
90
|
+
const createWebCrawlerTool = ()=>tool(async ({ url, maxPages = 1, sameDomain = true })=>{
|
|
91
|
+
try {
|
|
92
|
+
new URL(url);
|
|
93
|
+
if (maxPages < 1 || maxPages > 10) return "Error: maxPages must be between 1 and 10";
|
|
94
|
+
const results = await crawlMultiplePages(url, maxPages, sameDomain);
|
|
95
|
+
if (0 === results.length) return `Failed to crawl ${url}. The page may be inaccessible or blocked.`;
|
|
96
|
+
let output = "";
|
|
97
|
+
if (1 === results.length) {
|
|
98
|
+
const result = results[0];
|
|
99
|
+
output = `# ${result.title || "Untitled Page"}
|
|
100
|
+
|
|
101
|
+
**URL**: ${result.url}
|
|
102
|
+
**Status**: ${result.metadata.statusCode}
|
|
103
|
+
**Crawled**: ${result.metadata.timestamp}
|
|
104
|
+
|
|
105
|
+
## Content
|
|
106
|
+
|
|
107
|
+
${result.content.substring(0, 10000)}${result.content.length > 10000 ? "\n\n[Content truncated - showing first 10,000 characters]" : ""}
|
|
108
|
+
|
|
109
|
+
## Links Found
|
|
110
|
+
|
|
111
|
+
${result.links.length > 0 ? result.links.slice(0, 20).map((link)=>`- ${link}`).join("\n") : "No links found"}${result.links.length > 20 ? `\n\n[${result.links.length - 20} more links not shown]` : ""}`;
|
|
112
|
+
} else {
|
|
113
|
+
output = `# Crawled ${results.length} pages from ${url}\n\n`;
|
|
114
|
+
for (const result of results)output += `## ${result.title || "Untitled Page"}
|
|
115
|
+
|
|
116
|
+
**URL**: ${result.url}
|
|
117
|
+
|
|
118
|
+
${result.content.substring(0, 2000)}${result.content.length > 2000 ? "..." : ""}
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
`;
|
|
123
|
+
output += `\n## Summary
|
|
124
|
+
|
|
125
|
+
Total pages crawled: ${results.length}
|
|
126
|
+
Total links discovered: ${results.reduce((sum, r)=>sum + r.links.length, 0)}`;
|
|
127
|
+
}
|
|
128
|
+
return output;
|
|
129
|
+
} catch (error) {
|
|
130
|
+
if (error instanceof TypeError && error.message.includes("Invalid URL")) return `Error: Invalid URL format - ${url}`;
|
|
131
|
+
return `Error crawling ${url}: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
132
|
+
}
|
|
133
|
+
}, {
|
|
134
|
+
name: "web_crawler",
|
|
135
|
+
description: "Crawls web pages and extracts their content. Can visit a single page or crawl multiple pages following links. Handles modern SPAs and JavaScript-rendered content. Use this to gather detailed information from websites, documentation, or web applications. Maximum 10 pages per crawl.",
|
|
136
|
+
schema: z.object({
|
|
137
|
+
url: z.string().describe("The URL to start crawling from (must be a valid HTTP/HTTPS URL)"),
|
|
138
|
+
maxPages: z.number().optional().default(1).describe("Maximum number of pages to crawl (1-10). Default is 1 for single page crawl."),
|
|
139
|
+
sameDomain: z.boolean().optional().default(true).describe("Whether to restrict crawling to the same domain as the start URL. Default is true.")
|
|
140
|
+
})
|
|
141
|
+
});
|
|
142
|
+
const webCrawler = createWebCrawlerTool();
|
|
143
|
+
export { createWebCrawlerTool, webCrawler };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
14
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: definition[key]
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
})();
|
|
20
|
+
(()=>{
|
|
21
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
22
|
+
})();
|
|
23
|
+
(()=>{
|
|
24
|
+
__webpack_require__.r = (exports1)=>{
|
|
25
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
26
|
+
value: 'Module'
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
29
|
+
value: true
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
})();
|
|
33
|
+
var __webpack_exports__ = {};
|
|
34
|
+
__webpack_require__.r(__webpack_exports__);
|
|
35
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
+
getMachineDetails: ()=>getMachineDetails
|
|
37
|
+
});
|
|
38
|
+
const external_node_os_namespaceObject = require("node:os");
|
|
39
|
+
var external_node_os_default = /*#__PURE__*/ __webpack_require__.n(external_node_os_namespaceObject);
|
|
40
|
+
const getMachineDetails = ()=>{
|
|
41
|
+
const userInfo = external_node_os_default().userInfo();
|
|
42
|
+
const machineInfo = `# User's Machine Information
|
|
43
|
+
Operating System: ${external_node_os_default().platform()}
|
|
44
|
+
Architecture: ${external_node_os_default().arch()}
|
|
45
|
+
Default Shell: ${userInfo.shell}`;
|
|
46
|
+
return machineInfo;
|
|
47
|
+
};
|
|
48
|
+
exports.getMachineDetails = __webpack_exports__.getMachineDetails;
|
|
49
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
50
|
+
"getMachineDetails"
|
|
51
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
52
|
+
Object.defineProperty(exports, '__esModule', {
|
|
53
|
+
value: true
|
|
54
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getMachineDetails: () => string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import node_os from "node:os";
|
|
2
|
+
const getMachineDetails = ()=>{
|
|
3
|
+
const userInfo = node_os.userInfo();
|
|
4
|
+
const machineInfo = `# User's Machine Information
|
|
5
|
+
Operating System: ${node_os.platform()}
|
|
6
|
+
Architecture: ${node_os.arch()}
|
|
7
|
+
Default Shell: ${userInfo.shell}`;
|
|
8
|
+
return machineInfo;
|
|
9
|
+
};
|
|
10
|
+
export { getMachineDetails };
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
14
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: definition[key]
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
})();
|
|
20
|
+
(()=>{
|
|
21
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
22
|
+
})();
|
|
23
|
+
(()=>{
|
|
24
|
+
__webpack_require__.r = (exports1)=>{
|
|
25
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
26
|
+
value: 'Module'
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
29
|
+
value: true
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
})();
|
|
33
|
+
var __webpack_exports__ = {};
|
|
34
|
+
__webpack_require__.r(__webpack_exports__);
|
|
35
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
+
executeAgentCommand: ()=>executeAgentCommand
|
|
37
|
+
});
|
|
38
|
+
const external_react_namespaceObject = require("react");
|
|
39
|
+
var external_react_default = /*#__PURE__*/ __webpack_require__.n(external_react_namespaceObject);
|
|
40
|
+
const external_ink_namespaceObject = require("ink");
|
|
41
|
+
const agentInvoker_cjs_namespaceObject = require("../core/agentInvoker.cjs");
|
|
42
|
+
const outputManager_cjs_namespaceObject = require("../core/outputManager.cjs");
|
|
43
|
+
const sessionManager_cjs_namespaceObject = require("../core/sessionManager.cjs");
|
|
44
|
+
const external_logger_cjs_namespaceObject = require("../../logger.cjs");
|
|
45
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
46
|
+
const App_cjs_namespaceObject = require("../ui/App.cjs");
|
|
47
|
+
const rpcClient_cjs_namespaceObject = require("../../gateway/rpcClient.cjs");
|
|
48
|
+
async function executeAgentCommand(args, options = {}) {
|
|
49
|
+
const outputManager = new outputManager_cjs_namespaceObject.OutputManager(args.outputMode);
|
|
50
|
+
let inkInstance;
|
|
51
|
+
if ("interactive" === args.outputMode) inkInstance = (0, external_ink_namespaceObject.render)(external_react_default().createElement(App_cjs_namespaceObject.App, {
|
|
52
|
+
outputManager
|
|
53
|
+
}));
|
|
54
|
+
const logger = (0, external_logger_cjs_namespaceObject.createLogger)(args.verbosity);
|
|
55
|
+
let sessionManager = null;
|
|
56
|
+
try {
|
|
57
|
+
if (!args.agent) {
|
|
58
|
+
const invoker = new agentInvoker_cjs_namespaceObject.AgentInvoker({
|
|
59
|
+
workspace: options.workspace,
|
|
60
|
+
configDir: options.configDir,
|
|
61
|
+
outputManager,
|
|
62
|
+
logger
|
|
63
|
+
});
|
|
64
|
+
const agents = invoker.listAgents();
|
|
65
|
+
const logFile = (0, external_logger_cjs_namespaceObject.getLogFilePath)();
|
|
66
|
+
logger.error("No agent specified");
|
|
67
|
+
if ("interactive" === outputManager.getMode()) {
|
|
68
|
+
console.log("\nAvailable agents:");
|
|
69
|
+
for (const agent of agents)console.log(` ${agent.name}: ${agent.description}`);
|
|
70
|
+
console.log('\nUsage: wingman agent --agent <name> "your prompt here"');
|
|
71
|
+
console.error(`\nLogs: ${logFile}`);
|
|
72
|
+
} else outputManager.emitEvent({
|
|
73
|
+
type: "agent-error",
|
|
74
|
+
error: "No agent specified",
|
|
75
|
+
logFile,
|
|
76
|
+
timestamp: new Date().toISOString()
|
|
77
|
+
});
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
if (!options.local) {
|
|
81
|
+
if (!options.gatewayUrl) throw new Error("Gateway URL not configured. Use --gateway or set gateway.host/port in wingman.config.json.");
|
|
82
|
+
const client = new rpcClient_cjs_namespaceObject.GatewayRpcClient(options.gatewayUrl, {
|
|
83
|
+
token: options.token,
|
|
84
|
+
password: options.password,
|
|
85
|
+
clientType: "cli"
|
|
86
|
+
});
|
|
87
|
+
await client.connect();
|
|
88
|
+
await client.requestAgent({
|
|
89
|
+
agentId: args.agent,
|
|
90
|
+
content: args.prompt,
|
|
91
|
+
routing: {
|
|
92
|
+
channel: "cli",
|
|
93
|
+
peer: {
|
|
94
|
+
kind: "channel",
|
|
95
|
+
id: "cli"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
sessionKey: options.sessionId
|
|
99
|
+
}, (event)=>{
|
|
100
|
+
outputManager.emitEvent(event);
|
|
101
|
+
});
|
|
102
|
+
client.disconnect();
|
|
103
|
+
if (inkInstance) inkInstance.unmount();
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const workspace = options.workspace || process.cwd();
|
|
107
|
+
const configDir = options.configDir || ".wingman";
|
|
108
|
+
const dbPath = (0, external_node_path_namespaceObject.join)(workspace, configDir, "wingman.db");
|
|
109
|
+
sessionManager = new sessionManager_cjs_namespaceObject.SessionManager(dbPath);
|
|
110
|
+
await sessionManager.initialize();
|
|
111
|
+
const invoker = new agentInvoker_cjs_namespaceObject.AgentInvoker({
|
|
112
|
+
workspace,
|
|
113
|
+
configDir,
|
|
114
|
+
outputManager,
|
|
115
|
+
logger,
|
|
116
|
+
sessionManager
|
|
117
|
+
});
|
|
118
|
+
let sessionId = options.sessionId;
|
|
119
|
+
if (!sessionId) {
|
|
120
|
+
const lastSession = sessionManager.getLastSession();
|
|
121
|
+
if (lastSession && lastSession.agentName === args.agent) {
|
|
122
|
+
sessionId = lastSession.id;
|
|
123
|
+
logger.debug(`Resuming session: ${sessionId}`);
|
|
124
|
+
} else {
|
|
125
|
+
const newSession = sessionManager.createSession(args.agent);
|
|
126
|
+
sessionId = newSession.id;
|
|
127
|
+
logger.info(`Created new session: ${sessionId}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
sessionManager.updateSession(sessionId, {
|
|
131
|
+
lastMessagePreview: args.prompt.substring(0, 200)
|
|
132
|
+
});
|
|
133
|
+
await invoker.invokeAgent(args.agent, args.prompt, sessionId);
|
|
134
|
+
const session = sessionManager.getSession(sessionId);
|
|
135
|
+
if (session) sessionManager.updateSession(sessionId, {
|
|
136
|
+
messageCount: session.messageCount + 1
|
|
137
|
+
});
|
|
138
|
+
sessionManager.close();
|
|
139
|
+
sessionManager = null;
|
|
140
|
+
if (inkInstance) inkInstance.unmount();
|
|
141
|
+
} catch (error) {
|
|
142
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
143
|
+
const logFile = (0, external_logger_cjs_namespaceObject.getLogFilePath)();
|
|
144
|
+
logger.error("Agent command failed", {
|
|
145
|
+
error: errorMsg
|
|
146
|
+
});
|
|
147
|
+
if (sessionManager) {
|
|
148
|
+
sessionManager.close();
|
|
149
|
+
sessionManager = null;
|
|
150
|
+
}
|
|
151
|
+
if (inkInstance) inkInstance.unmount();
|
|
152
|
+
if ("interactive" === outputManager.getMode()) {
|
|
153
|
+
console.error(`\nError: ${errorMsg}`);
|
|
154
|
+
console.error(`Logs: ${logFile}`);
|
|
155
|
+
process.exit(1);
|
|
156
|
+
} else {
|
|
157
|
+
const isAgentError = Boolean(error instanceof Error && error.isAgentError);
|
|
158
|
+
if (!isAgentError) outputManager.emitAgentError(error);
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.executeAgentCommand = __webpack_exports__.executeAgentCommand;
|
|
164
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
165
|
+
"executeAgentCommand"
|
|
166
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
167
|
+
Object.defineProperty(exports, '__esModule', {
|
|
168
|
+
value: true
|
|
169
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AgentCommandArgs } from "../types.js";
|
|
2
|
+
export interface AgentCommandOptions {
|
|
3
|
+
workspace?: string;
|
|
4
|
+
configDir?: string;
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
local?: boolean;
|
|
7
|
+
gatewayUrl?: string;
|
|
8
|
+
token?: string;
|
|
9
|
+
password?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Execute the agent command
|
|
13
|
+
* This is the handler for: wingman agent --agent <name> <prompt>
|
|
14
|
+
*/
|
|
15
|
+
export declare function executeAgentCommand(args: AgentCommandArgs, options?: AgentCommandOptions): Promise<void>;
|