wispy-ai 1.4.0 → 1.5.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/.env.example +47 -37
- package/dist/a2a/delegation.d.ts.map +1 -1
- package/dist/a2a/delegation.js +9 -1
- package/dist/a2a/delegation.js.map +1 -1
- package/dist/agents/tool-executor.d.ts +11 -0
- package/dist/agents/tool-executor.d.ts.map +1 -1
- package/dist/agents/tool-executor.js +283 -24
- package/dist/agents/tool-executor.js.map +1 -1
- package/dist/ai/model-registry.d.ts +8 -2
- package/dist/ai/model-registry.d.ts.map +1 -1
- package/dist/ai/model-registry.js +60 -6
- package/dist/ai/model-registry.js.map +1 -1
- package/dist/ai/prompts.d.ts.map +1 -1
- package/dist/ai/prompts.js +32 -1
- package/dist/ai/prompts.js.map +1 -1
- package/dist/ai/providers/anthropic.d.ts +24 -0
- package/dist/ai/providers/anthropic.d.ts.map +1 -0
- package/dist/ai/providers/anthropic.js +153 -0
- package/dist/ai/providers/anthropic.js.map +1 -0
- package/dist/ai/tools.d.ts.map +1 -1
- package/dist/ai/tools.js +80 -7
- package/dist/ai/tools.js.map +1 -1
- package/dist/channels/dock.d.ts +10 -0
- package/dist/channels/dock.d.ts.map +1 -1
- package/dist/channels/dock.js +9 -0
- package/dist/channels/dock.js.map +1 -1
- package/dist/channels/telegram/adapter.d.ts +8 -0
- package/dist/channels/telegram/adapter.d.ts.map +1 -1
- package/dist/channels/telegram/adapter.js +181 -20
- package/dist/channels/telegram/adapter.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +303 -5
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +20 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/ink/App.d.ts +1 -0
- package/dist/cli/ink/App.d.ts.map +1 -1
- package/dist/cli/ink/App.js +524 -139
- package/dist/cli/ink/App.js.map +1 -1
- package/dist/cli/ink/MarkdownText.d.ts.map +1 -1
- package/dist/cli/ink/MarkdownText.js +16 -4
- package/dist/cli/ink/MarkdownText.js.map +1 -1
- package/dist/cli/ink/ThinkingSpinner.d.ts +26 -6
- package/dist/cli/ink/ThinkingSpinner.d.ts.map +1 -1
- package/dist/cli/ink/ThinkingSpinner.js +105 -25
- package/dist/cli/ink/ThinkingSpinner.js.map +1 -1
- package/dist/cli/ink/ThoughtSignature.d.ts +10 -9
- package/dist/cli/ink/ThoughtSignature.d.ts.map +1 -1
- package/dist/cli/ink/ThoughtSignature.js +51 -4
- package/dist/cli/ink/ThoughtSignature.js.map +1 -1
- package/dist/cli/ink/ink-repl.d.ts.map +1 -1
- package/dist/cli/ink/ink-repl.js +96 -36
- package/dist/cli/ink/ink-repl.js.map +1 -1
- package/dist/cli/ink/types.d.ts +4 -0
- package/dist/cli/ink/types.d.ts.map +1 -1
- package/dist/cli/repl.d.ts.map +1 -1
- package/dist/cli/repl.js +7 -1
- package/dist/cli/repl.js.map +1 -1
- package/dist/cli/setup/wizard.d.ts.map +1 -1
- package/dist/cli/setup/wizard.js +131 -72
- package/dist/cli/setup/wizard.js.map +1 -1
- package/dist/cli/tui/output-renderer.d.ts +2 -2
- package/dist/cli/tui/output-renderer.js +2 -2
- package/dist/cli/ui/banner.d.ts +1 -1
- package/dist/cli/ui/banner.d.ts.map +1 -1
- package/dist/cli/ui/banner.js +1 -1
- package/dist/cli/ui/banner.js.map +1 -1
- package/dist/cli/ui/theme.d.ts +1 -0
- package/dist/cli/ui/theme.d.ts.map +1 -1
- package/dist/cli/ui/theme.js +4 -0
- package/dist/cli/ui/theme.js.map +1 -1
- package/dist/config/schema.d.ts +3 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +20 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/documents/x402-report.d.ts.map +1 -1
- package/dist/documents/x402-report.js +17 -10
- package/dist/documents/x402-report.js.map +1 -1
- package/dist/infra/ports.d.ts +5 -0
- package/dist/infra/ports.d.ts.map +1 -1
- package/dist/infra/ports.js +24 -1
- package/dist/infra/ports.js.map +1 -1
- package/dist/integrations/agentic-commerce/ap2/receipts.js +5 -5
- package/dist/integrations/agentic-commerce/ap2/receipts.js.map +1 -1
- package/dist/integrations/agentic-commerce/bite/encrypted-tx.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/bite/encrypted-tx.js +9 -4
- package/dist/integrations/agentic-commerce/bite/encrypted-tx.js.map +1 -1
- package/dist/integrations/agentic-commerce/config.d.ts +101 -8
- package/dist/integrations/agentic-commerce/config.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/config.js +109 -13
- package/dist/integrations/agentic-commerce/config.js.map +1 -1
- package/dist/integrations/agentic-commerce/defi/swap.d.ts +12 -0
- package/dist/integrations/agentic-commerce/defi/swap.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/defi/swap.js +113 -47
- package/dist/integrations/agentic-commerce/defi/swap.js.map +1 -1
- package/dist/integrations/agentic-commerce/demo/scenarios/track4-defi.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/demo/scenarios/track4-defi.js +12 -7
- package/dist/integrations/agentic-commerce/demo/scenarios/track4-defi.js.map +1 -1
- package/dist/integrations/agentic-commerce/demo/server.d.ts +2 -1
- package/dist/integrations/agentic-commerce/demo/server.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/demo/server.js +13 -1
- package/dist/integrations/agentic-commerce/demo/server.js.map +1 -1
- package/dist/integrations/agentic-commerce/index.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/index.js +188 -37
- package/dist/integrations/agentic-commerce/index.js.map +1 -1
- package/dist/integrations/agentic-commerce/x402/buyer.d.ts +5 -2
- package/dist/integrations/agentic-commerce/x402/buyer.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/x402/buyer.js +20 -20
- package/dist/integrations/agentic-commerce/x402/buyer.js.map +1 -1
- package/dist/integrations/agentic-commerce/x402/registry.d.ts +2 -0
- package/dist/integrations/agentic-commerce/x402/registry.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/x402/registry.js +11 -4
- package/dist/integrations/agentic-commerce/x402/registry.js.map +1 -1
- package/dist/integrations/agentic-commerce/x402/seller.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/x402/seller.js +6 -1
- package/dist/integrations/agentic-commerce/x402/seller.js.map +1 -1
- package/dist/integrations/agentic-commerce/x402/tracker.d.ts +3 -1
- package/dist/integrations/agentic-commerce/x402/tracker.d.ts.map +1 -1
- package/dist/integrations/agentic-commerce/x402/tracker.js +40 -28
- package/dist/integrations/agentic-commerce/x402/tracker.js.map +1 -1
- package/dist/integrations/ai-models/anthropic.d.ts +5 -3
- package/dist/integrations/ai-models/anthropic.d.ts.map +1 -1
- package/dist/integrations/ai-models/anthropic.js +58 -31
- package/dist/integrations/ai-models/anthropic.js.map +1 -1
- package/dist/integrations/ai-models/groq.d.ts +18 -0
- package/dist/integrations/ai-models/groq.d.ts.map +1 -0
- package/dist/integrations/ai-models/groq.js +109 -0
- package/dist/integrations/ai-models/groq.js.map +1 -0
- package/dist/integrations/ai-models/kimi.d.ts +18 -0
- package/dist/integrations/ai-models/kimi.d.ts.map +1 -0
- package/dist/integrations/ai-models/kimi.js +108 -0
- package/dist/integrations/ai-models/kimi.js.map +1 -0
- package/dist/integrations/ai-models/openrouter.d.ts +18 -0
- package/dist/integrations/ai-models/openrouter.d.ts.map +1 -0
- package/dist/integrations/ai-models/openrouter.js +115 -0
- package/dist/integrations/ai-models/openrouter.js.map +1 -0
- package/dist/integrations/browser-engine/automation/auth-manager.d.ts +24 -0
- package/dist/integrations/browser-engine/automation/auth-manager.d.ts.map +1 -0
- package/dist/integrations/browser-engine/automation/auth-manager.js +102 -0
- package/dist/integrations/browser-engine/automation/auth-manager.js.map +1 -0
- package/dist/integrations/browser-engine/automation/captcha-detector.d.ts +16 -0
- package/dist/integrations/browser-engine/automation/captcha-detector.d.ts.map +1 -0
- package/dist/integrations/browser-engine/automation/captcha-detector.js +83 -0
- package/dist/integrations/browser-engine/automation/captcha-detector.js.map +1 -0
- package/dist/integrations/browser-engine/automation/cookie-banner.d.ts +17 -0
- package/dist/integrations/browser-engine/automation/cookie-banner.d.ts.map +1 -0
- package/dist/integrations/browser-engine/automation/cookie-banner.js +93 -0
- package/dist/integrations/browser-engine/automation/cookie-banner.js.map +1 -0
- package/dist/integrations/browser-engine/automation/dialog-handler.d.ts +37 -0
- package/dist/integrations/browser-engine/automation/dialog-handler.d.ts.map +1 -0
- package/dist/integrations/browser-engine/automation/dialog-handler.js +92 -0
- package/dist/integrations/browser-engine/automation/dialog-handler.js.map +1 -0
- package/dist/integrations/browser-engine/automation/download-manager.d.ts +32 -0
- package/dist/integrations/browser-engine/automation/download-manager.d.ts.map +1 -0
- package/dist/integrations/browser-engine/automation/download-manager.js +96 -0
- package/dist/integrations/browser-engine/automation/download-manager.js.map +1 -0
- package/dist/integrations/browser-engine/automation/drag-drop.d.ts +24 -0
- package/dist/integrations/browser-engine/automation/drag-drop.d.ts.map +1 -0
- package/dist/integrations/browser-engine/automation/drag-drop.js +59 -0
- package/dist/integrations/browser-engine/automation/drag-drop.js.map +1 -0
- package/dist/integrations/browser-engine/automation/form-filler.d.ts +39 -0
- package/dist/integrations/browser-engine/automation/form-filler.d.ts.map +1 -0
- package/dist/integrations/browser-engine/automation/form-filler.js +185 -0
- package/dist/integrations/browser-engine/automation/form-filler.js.map +1 -0
- package/dist/integrations/browser-engine/automation/wait-strategies.d.ts +21 -0
- package/dist/integrations/browser-engine/automation/wait-strategies.d.ts.map +1 -0
- package/dist/integrations/browser-engine/automation/wait-strategies.js +73 -0
- package/dist/integrations/browser-engine/automation/wait-strategies.js.map +1 -0
- package/dist/integrations/browser-engine/automation/workflow-engine.d.ts +15 -0
- package/dist/integrations/browser-engine/automation/workflow-engine.d.ts.map +1 -0
- package/dist/integrations/browser-engine/automation/workflow-engine.js +403 -0
- package/dist/integrations/browser-engine/automation/workflow-engine.js.map +1 -0
- package/dist/integrations/browser-engine/config.d.ts +58 -0
- package/dist/integrations/browser-engine/config.d.ts.map +1 -0
- package/dist/integrations/browser-engine/config.js +75 -0
- package/dist/integrations/browser-engine/config.js.map +1 -0
- package/dist/integrations/browser-engine/core/history-navigator.d.ts +25 -0
- package/dist/integrations/browser-engine/core/history-navigator.d.ts.map +1 -0
- package/dist/integrations/browser-engine/core/history-navigator.js +68 -0
- package/dist/integrations/browser-engine/core/history-navigator.js.map +1 -0
- package/dist/integrations/browser-engine/core/network-monitor.d.ts +44 -0
- package/dist/integrations/browser-engine/core/network-monitor.d.ts.map +1 -0
- package/dist/integrations/browser-engine/core/network-monitor.js +145 -0
- package/dist/integrations/browser-engine/core/network-monitor.js.map +1 -0
- package/dist/integrations/browser-engine/core/page-monitor.d.ts +61 -0
- package/dist/integrations/browser-engine/core/page-monitor.d.ts.map +1 -0
- package/dist/integrations/browser-engine/core/page-monitor.js +111 -0
- package/dist/integrations/browser-engine/core/page-monitor.js.map +1 -0
- package/dist/integrations/browser-engine/core/page-search.d.ts +51 -0
- package/dist/integrations/browser-engine/core/page-search.d.ts.map +1 -0
- package/dist/integrations/browser-engine/core/page-search.js +146 -0
- package/dist/integrations/browser-engine/core/page-search.js.map +1 -0
- package/dist/integrations/browser-engine/core/proxy-manager.d.ts +31 -0
- package/dist/integrations/browser-engine/core/proxy-manager.d.ts.map +1 -0
- package/dist/integrations/browser-engine/core/proxy-manager.js +90 -0
- package/dist/integrations/browser-engine/core/proxy-manager.js.map +1 -0
- package/dist/integrations/browser-engine/core/retry-engine.d.ts +38 -0
- package/dist/integrations/browser-engine/core/retry-engine.d.ts.map +1 -0
- package/dist/integrations/browser-engine/core/retry-engine.js +117 -0
- package/dist/integrations/browser-engine/core/retry-engine.js.map +1 -0
- package/dist/integrations/browser-engine/core/session-manager.d.ts +45 -0
- package/dist/integrations/browser-engine/core/session-manager.d.ts.map +1 -0
- package/dist/integrations/browser-engine/core/session-manager.js +233 -0
- package/dist/integrations/browser-engine/core/session-manager.js.map +1 -0
- package/dist/integrations/browser-engine/core/stealth-engine.d.ts +19 -0
- package/dist/integrations/browser-engine/core/stealth-engine.d.ts.map +1 -0
- package/dist/integrations/browser-engine/core/stealth-engine.js +233 -0
- package/dist/integrations/browser-engine/core/stealth-engine.js.map +1 -0
- package/dist/integrations/browser-engine/core/tab-manager.d.ts +40 -0
- package/dist/integrations/browser-engine/core/tab-manager.d.ts.map +1 -0
- package/dist/integrations/browser-engine/core/tab-manager.js +94 -0
- package/dist/integrations/browser-engine/core/tab-manager.js.map +1 -0
- package/dist/integrations/browser-engine/extraction/dom-processor.d.ts +22 -0
- package/dist/integrations/browser-engine/extraction/dom-processor.d.ts.map +1 -0
- package/dist/integrations/browser-engine/extraction/dom-processor.js +197 -0
- package/dist/integrations/browser-engine/extraction/dom-processor.js.map +1 -0
- package/dist/integrations/browser-engine/extraction/element-finder.d.ts +53 -0
- package/dist/integrations/browser-engine/extraction/element-finder.d.ts.map +1 -0
- package/dist/integrations/browser-engine/extraction/element-finder.js +108 -0
- package/dist/integrations/browser-engine/extraction/element-finder.js.map +1 -0
- package/dist/integrations/browser-engine/extraction/iframe-processor.d.ts +69 -0
- package/dist/integrations/browser-engine/extraction/iframe-processor.d.ts.map +1 -0
- package/dist/integrations/browser-engine/extraction/iframe-processor.js +199 -0
- package/dist/integrations/browser-engine/extraction/iframe-processor.js.map +1 -0
- package/dist/integrations/browser-engine/extraction/media-extractor.d.ts +24 -0
- package/dist/integrations/browser-engine/extraction/media-extractor.d.ts.map +1 -0
- package/dist/integrations/browser-engine/extraction/media-extractor.js +108 -0
- package/dist/integrations/browser-engine/extraction/media-extractor.js.map +1 -0
- package/dist/integrations/browser-engine/extraction/schema-extractor.d.ts +34 -0
- package/dist/integrations/browser-engine/extraction/schema-extractor.d.ts.map +1 -0
- package/dist/integrations/browser-engine/extraction/schema-extractor.js +149 -0
- package/dist/integrations/browser-engine/extraction/schema-extractor.js.map +1 -0
- package/dist/integrations/browser-engine/extraction/table-extractor.d.ts +16 -0
- package/dist/integrations/browser-engine/extraction/table-extractor.d.ts.map +1 -0
- package/dist/integrations/browser-engine/extraction/table-extractor.js +87 -0
- package/dist/integrations/browser-engine/extraction/table-extractor.js.map +1 -0
- package/dist/integrations/browser-engine/index.d.ts +77 -0
- package/dist/integrations/browser-engine/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/index.js +1819 -0
- package/dist/integrations/browser-engine/index.js.map +1 -0
- package/dist/integrations/browser-engine/profiles/cookie-jar.d.ts +14 -0
- package/dist/integrations/browser-engine/profiles/cookie-jar.d.ts.map +1 -0
- package/dist/integrations/browser-engine/profiles/cookie-jar.js +82 -0
- package/dist/integrations/browser-engine/profiles/cookie-jar.js.map +1 -0
- package/dist/integrations/browser-engine/profiles/profile-store.d.ts +30 -0
- package/dist/integrations/browser-engine/profiles/profile-store.d.ts.map +1 -0
- package/dist/integrations/browser-engine/profiles/profile-store.js +101 -0
- package/dist/integrations/browser-engine/profiles/profile-store.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/developer/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/developer/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/developer/index.js +229 -0
- package/dist/integrations/browser-engine/skills/built-in/developer/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/ecommerce/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/ecommerce/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/ecommerce/index.js +194 -0
- package/dist/integrations/browser-engine/skills/built-in/ecommerce/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/financial/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/financial/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/financial/index.js +194 -0
- package/dist/integrations/browser-engine/skills/built-in/financial/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/jobs/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/jobs/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/jobs/index.js +132 -0
- package/dist/integrations/browser-engine/skills/built-in/jobs/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/news/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/news/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/news/index.js +183 -0
- package/dist/integrations/browser-engine/skills/built-in/news/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/productivity/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/productivity/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/productivity/index.js +115 -0
- package/dist/integrations/browser-engine/skills/built-in/productivity/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/search/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/search/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/search/index.js +156 -0
- package/dist/integrations/browser-engine/skills/built-in/search/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/social/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/social/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/social/index.js +217 -0
- package/dist/integrations/browser-engine/skills/built-in/social/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/travel/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/travel/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/travel/index.js +135 -0
- package/dist/integrations/browser-engine/skills/built-in/travel/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/utility/index.d.ts +6 -0
- package/dist/integrations/browser-engine/skills/built-in/utility/index.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/built-in/utility/index.js +150 -0
- package/dist/integrations/browser-engine/skills/built-in/utility/index.js.map +1 -0
- package/dist/integrations/browser-engine/skills/executor.d.ts +10 -0
- package/dist/integrations/browser-engine/skills/executor.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/executor.js +179 -0
- package/dist/integrations/browser-engine/skills/executor.js.map +1 -0
- package/dist/integrations/browser-engine/skills/registry.d.ts +24 -0
- package/dist/integrations/browser-engine/skills/registry.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/registry.js +94 -0
- package/dist/integrations/browser-engine/skills/registry.js.map +1 -0
- package/dist/integrations/browser-engine/skills/skill-generator.d.ts +21 -0
- package/dist/integrations/browser-engine/skills/skill-generator.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/skill-generator.js +205 -0
- package/dist/integrations/browser-engine/skills/skill-generator.js.map +1 -0
- package/dist/integrations/browser-engine/skills/skill-store.d.ts +24 -0
- package/dist/integrations/browser-engine/skills/skill-store.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/skill-store.js +86 -0
- package/dist/integrations/browser-engine/skills/skill-store.js.map +1 -0
- package/dist/integrations/browser-engine/skills/types.d.ts +61 -0
- package/dist/integrations/browser-engine/skills/types.d.ts.map +1 -0
- package/dist/integrations/browser-engine/skills/types.js +8 -0
- package/dist/integrations/browser-engine/skills/types.js.map +1 -0
- package/dist/integrations/browser-engine/types.d.ts +260 -0
- package/dist/integrations/browser-engine/types.d.ts.map +1 -0
- package/dist/integrations/browser-engine/types.js +5 -0
- package/dist/integrations/browser-engine/types.js.map +1 -0
- package/dist/integrations/loader.js +8 -0
- package/dist/integrations/loader.js.map +1 -1
- package/dist/integrations/social/zoho-email.d.ts +25 -0
- package/dist/integrations/social/zoho-email.d.ts.map +1 -0
- package/dist/integrations/social/zoho-email.js +208 -0
- package/dist/integrations/social/zoho-email.js.map +1 -0
- package/dist/memory/vector-store.d.ts.map +1 -1
- package/dist/memory/vector-store.js +36 -34
- package/dist/memory/vector-store.js.map +1 -1
- package/dist/security/action-guard.d.ts.map +1 -1
- package/dist/security/action-guard.js +2 -0
- package/dist/security/action-guard.js.map +1 -1
- package/dist/security/input-sanitizer.d.ts +41 -0
- package/dist/security/input-sanitizer.d.ts.map +1 -0
- package/dist/security/input-sanitizer.js +138 -0
- package/dist/security/input-sanitizer.js.map +1 -0
- package/dist/vision/live-stream.d.ts +50 -0
- package/dist/vision/live-stream.d.ts.map +1 -0
- package/dist/vision/live-stream.js +129 -0
- package/dist/vision/live-stream.js.map +1 -0
- package/dist/vision/webcam.d.ts +43 -0
- package/dist/vision/webcam.d.ts.map +1 -0
- package/dist/vision/webcam.js +259 -0
- package/dist/vision/webcam.js.map +1 -0
- package/dist/wallet/explorer.d.ts.map +1 -1
- package/dist/wallet/explorer.js +9 -1
- package/dist/wallet/explorer.js.map +1 -1
- package/dist/wallet/solana.d.ts +48 -0
- package/dist/wallet/solana.d.ts.map +1 -0
- package/dist/wallet/solana.js +126 -0
- package/dist/wallet/solana.js.map +1 -0
- package/dist/wallet/x402.d.ts +11 -0
- package/dist/wallet/x402.d.ts.map +1 -1
- package/dist/wallet/x402.js +38 -1
- package/dist/wallet/x402.js.map +1 -1
- package/package.json +1 -1
- package/wispy/skills/shadcn-ui/SKILL.md +170 -170
- package/wispy/skills/tabler-icons/SKILL.md +141 -141
- package/wispy/memory/2026-01-29.md +0 -35
- package/wispy/memory/2026-01-30.md +0 -4
- package/wispy/memory/2026-02-03.md +0 -41
- package/wispy/memory/2026-02-04.md +0 -46
- package/wispy/memory/2026-02-05.md +0 -48
- package/wispy/memory/2026-02-06.md +0 -15
package/.env.example
CHANGED
|
@@ -1,37 +1,47 @@
|
|
|
1
|
-
# Gemini API Key (required)
|
|
2
|
-
GEMINI_API_KEY=your_gemini_api_key_here
|
|
3
|
-
|
|
4
|
-
# Telegram Bot Token (optional)
|
|
5
|
-
TELEGRAM_BOT_TOKEN=
|
|
6
|
-
|
|
7
|
-
# WhatsApp (auto-configured via QR)
|
|
8
|
-
|
|
9
|
-
# x402 Wallet (auto-generated on first run)
|
|
10
|
-
# WALLET_ENCRYPTION_PASSWORD=
|
|
11
|
-
|
|
12
|
-
# SKALE BITE V2 Agentic Commerce (required for x402/DeFi/BITE)
|
|
13
|
-
# Fund with sFUEL from https://www.sfuelstation.com/
|
|
14
|
-
# AGENT_PRIVATE_KEY=0x...your_private_key_here
|
|
15
|
-
# SELLER_PRIVATE_KEY=0x...for_mock_seller_server
|
|
16
|
-
|
|
17
|
-
# CDP Wallet (Coinbase Developer Platform) — for x402 track compliance
|
|
18
|
-
# Get keys from https://portal.cdp.coinbase.com/
|
|
19
|
-
# CDP_API_KEY_NAME=your_cdp_api_key_name
|
|
20
|
-
# CDP_PRIVATE_KEY=-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----
|
|
21
|
-
# CDP_NETWORK_ID=base-sepolia
|
|
22
|
-
|
|
23
|
-
# SKALE Network (defaults are built-in, override if needed)
|
|
24
|
-
# SKALE_RPC=https://base-sepolia-testnet.skalenodes.com/v1/bite-v2-sandbox
|
|
25
|
-
# SKALE_CHAIN_ID=103698795
|
|
26
|
-
# USDC_CONTRACT=0xc4083B1E81ceb461Ccef3FDa8A9F24F0d764B6D8
|
|
27
|
-
# FACILITATOR_URL=https://gateway.kobaru.io
|
|
28
|
-
|
|
29
|
-
#
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
# Gemini API Key (required)
|
|
2
|
+
GEMINI_API_KEY=your_gemini_api_key_here
|
|
3
|
+
|
|
4
|
+
# Telegram Bot Token (optional)
|
|
5
|
+
TELEGRAM_BOT_TOKEN=
|
|
6
|
+
|
|
7
|
+
# WhatsApp (auto-configured via QR)
|
|
8
|
+
|
|
9
|
+
# x402 Wallet (auto-generated on first run)
|
|
10
|
+
# WALLET_ENCRYPTION_PASSWORD=
|
|
11
|
+
|
|
12
|
+
# SKALE BITE V2 Agentic Commerce (required for x402/DeFi/BITE)
|
|
13
|
+
# Fund with sFUEL from https://www.sfuelstation.com/
|
|
14
|
+
# AGENT_PRIVATE_KEY=0x...your_private_key_here
|
|
15
|
+
# SELLER_PRIVATE_KEY=0x...for_mock_seller_server
|
|
16
|
+
|
|
17
|
+
# CDP Wallet (Coinbase Developer Platform) — for x402 track compliance
|
|
18
|
+
# Get keys from https://portal.cdp.coinbase.com/
|
|
19
|
+
# CDP_API_KEY_NAME=your_cdp_api_key_name
|
|
20
|
+
# CDP_PRIVATE_KEY=-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----
|
|
21
|
+
# CDP_NETWORK_ID=base-sepolia
|
|
22
|
+
|
|
23
|
+
# SKALE Network (defaults are built-in, override if needed)
|
|
24
|
+
# SKALE_RPC=https://base-sepolia-testnet.skalenodes.com/v1/bite-v2-sandbox
|
|
25
|
+
# SKALE_CHAIN_ID=103698795
|
|
26
|
+
# USDC_CONTRACT=0xc4083B1E81ceb461Ccef3FDa8A9F24F0d764B6D8
|
|
27
|
+
# FACILITATOR_URL=https://gateway.kobaru.io
|
|
28
|
+
|
|
29
|
+
# Base Mainnet x402 (real USDC payments to external services)
|
|
30
|
+
# Set ENABLE_BASE_MAINNET=true to activate Base alongside SKALE
|
|
31
|
+
# ENABLE_BASE_MAINNET=true
|
|
32
|
+
# BASE_RPC_URL=https://mainnet.base.org
|
|
33
|
+
|
|
34
|
+
# Commerce Limits (overrides -- stricter defaults apply when Base active)
|
|
35
|
+
# MAX_PER_TRANSACTION=1.0
|
|
36
|
+
# DAILY_LIMIT=5.0
|
|
37
|
+
# AUTO_APPROVE_BELOW=0.05
|
|
38
|
+
|
|
39
|
+
# Twitter/X API (optional, for content publishing)
|
|
40
|
+
TWITTER_API_KEY=
|
|
41
|
+
TWITTER_API_SECRET=
|
|
42
|
+
TWITTER_ACCESS_TOKEN=
|
|
43
|
+
TWITTER_ACCESS_SECRET=
|
|
44
|
+
|
|
45
|
+
# Dashboard
|
|
46
|
+
DASHBOARD_PORT=3000
|
|
47
|
+
GATEWAY_PORT=4000
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../../src/a2a/delegation.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,YAAY,EAElB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAIxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAK9C,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,GAAG,CAAkB;gBAG3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK;IAYd,OAAO,CAAC,WAAW;IAwEnB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAUtB,KAAK,CAAC,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../../src/a2a/delegation.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,YAAY,EAElB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAIxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAK9C,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,GAAG,CAAkB;gBAG3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK;IAYd,OAAO,CAAC,WAAW;IAwEnB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAUtB,KAAK,CAAC,IAAI,EAAE,MAAM;IAcZ,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAwCzB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;CAuB3D"}
|
package/dist/a2a/delegation.js
CHANGED
|
@@ -96,9 +96,17 @@ export class A2AServer {
|
|
|
96
96
|
type, payload);
|
|
97
97
|
}
|
|
98
98
|
start(port) {
|
|
99
|
-
this.app.listen(port, () => {
|
|
99
|
+
const server = this.app.listen(port, () => {
|
|
100
100
|
log.info("A2A server listening on port %d", port);
|
|
101
101
|
});
|
|
102
|
+
server.on("error", (err) => {
|
|
103
|
+
if (err.code === "EADDRINUSE") {
|
|
104
|
+
log.warn("A2A port %d in use, running without A2A server", port);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
log.error("A2A server error: %s", err.message);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
102
110
|
}
|
|
103
111
|
// Send a task to another agent
|
|
104
112
|
async delegateTask(peerDeviceId, instruction, context) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../src/a2a/delegation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../src/a2a/delegation.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,12 @@ export declare class ToolExecutor {
|
|
|
29
29
|
private cronService?;
|
|
30
30
|
private reminderService?;
|
|
31
31
|
private progressCallback?;
|
|
32
|
+
private liveStream?;
|
|
32
33
|
constructor(config: WispyConfig, runtimeDir: string, soulDir: string, memoryManager?: MemoryManager, integrationRegistry?: IntegrationRegistry, mcpRegistry?: McpRegistry);
|
|
34
|
+
/**
|
|
35
|
+
* Check if a file path is allowed based on filesystem access settings.
|
|
36
|
+
*/
|
|
37
|
+
private isPathAllowed;
|
|
33
38
|
/**
|
|
34
39
|
* Set callback for progress notifications (used by Telegram visuals)
|
|
35
40
|
*/
|
|
@@ -145,6 +150,7 @@ export declare class ToolExecutor {
|
|
|
145
150
|
private executeResearchReport;
|
|
146
151
|
private executeGenerateX402Report;
|
|
147
152
|
private executeSendDocumentToTelegram;
|
|
153
|
+
private executeTelegramListFiles;
|
|
148
154
|
private executeSendProgressUpdate;
|
|
149
155
|
private executeAskUserConfirmation;
|
|
150
156
|
private executeFilePermissions;
|
|
@@ -160,6 +166,11 @@ export declare class ToolExecutor {
|
|
|
160
166
|
private executeRealisticVoiceReply;
|
|
161
167
|
private executeDesktopScreenshot;
|
|
162
168
|
private executeScreenRecord;
|
|
169
|
+
private executeWebcamCapture;
|
|
170
|
+
private executeWebcamRecord;
|
|
171
|
+
private executeWebcamListDevices;
|
|
172
|
+
private executeWebcamLiveStart;
|
|
173
|
+
private executeWebcamLiveStop;
|
|
163
174
|
private executeGitInit;
|
|
164
175
|
private executeGitCommit;
|
|
165
176
|
private executeGitPush;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/agents/tool-executor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAK5D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA2CD,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE;IACrC,IAAI,EAAE,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,iBAAiB,CAAC;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3B,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAClD,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAC,CAAmB;
|
|
1
|
+
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/agents/tool-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,7 @@ export class ToolExecutor {
|
|
|
58
58
|
cronService;
|
|
59
59
|
reminderService;
|
|
60
60
|
progressCallback;
|
|
61
|
+
liveStream;
|
|
61
62
|
constructor(config, runtimeDir, soulDir, memoryManager, integrationRegistry, mcpRegistry) {
|
|
62
63
|
this.config = config;
|
|
63
64
|
this.runtimeDir = runtimeDir;
|
|
@@ -66,6 +67,22 @@ export class ToolExecutor {
|
|
|
66
67
|
this.integrationRegistry = integrationRegistry;
|
|
67
68
|
this.mcpRegistry = mcpRegistry;
|
|
68
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Check if a file path is allowed based on filesystem access settings.
|
|
72
|
+
*/
|
|
73
|
+
isPathAllowed(filePath) {
|
|
74
|
+
// Always allow runtime and soul directories
|
|
75
|
+
if (filePath.startsWith(this.runtimeDir) || filePath.startsWith(this.soulDir))
|
|
76
|
+
return true;
|
|
77
|
+
// Autonomous mode or full filesystem access: allow all
|
|
78
|
+
if (this.config.security.autonomousMode || this.config.security.fullFilesystemAccess)
|
|
79
|
+
return true;
|
|
80
|
+
// Standard mode: restrict to workspace
|
|
81
|
+
const workspaceDir = resolve(this.runtimeDir, "workspace");
|
|
82
|
+
if (filePath.startsWith(workspaceDir))
|
|
83
|
+
return true;
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
69
86
|
/**
|
|
70
87
|
* Set callback for progress notifications (used by Telegram visuals)
|
|
71
88
|
*/
|
|
@@ -242,6 +259,8 @@ export class ToolExecutor {
|
|
|
242
259
|
// === Telegram Document Delivery ===
|
|
243
260
|
case "send_document_to_telegram":
|
|
244
261
|
return this.executeSendDocumentToTelegram(tool.args);
|
|
262
|
+
case "telegram_list_files":
|
|
263
|
+
return this.executeTelegramListFiles(tool.args);
|
|
245
264
|
case "send_progress_update":
|
|
246
265
|
return this.executeSendProgressUpdate(tool.args);
|
|
247
266
|
case "ask_user_confirmation":
|
|
@@ -276,6 +295,17 @@ export class ToolExecutor {
|
|
|
276
295
|
return this.executeDesktopScreenshot(tool.args);
|
|
277
296
|
case "screen_record":
|
|
278
297
|
return this.executeScreenRecord(tool.args);
|
|
298
|
+
// === Webcam & Live Vision ===
|
|
299
|
+
case "webcam_capture":
|
|
300
|
+
return this.executeWebcamCapture(tool.args);
|
|
301
|
+
case "webcam_record":
|
|
302
|
+
return this.executeWebcamRecord(tool.args);
|
|
303
|
+
case "webcam_list_devices":
|
|
304
|
+
return this.executeWebcamListDevices();
|
|
305
|
+
case "webcam_live_start":
|
|
306
|
+
return this.executeWebcamLiveStart(tool.args);
|
|
307
|
+
case "webcam_live_stop":
|
|
308
|
+
return this.executeWebcamLiveStop();
|
|
279
309
|
// === Git & GitHub ===
|
|
280
310
|
case "git_init":
|
|
281
311
|
return this.executeGitInit(tool.args);
|
|
@@ -363,14 +393,22 @@ export class ToolExecutor {
|
|
|
363
393
|
}
|
|
364
394
|
}
|
|
365
395
|
try {
|
|
366
|
-
//
|
|
367
|
-
const { join } = await import("path");
|
|
368
|
-
const
|
|
369
|
-
|
|
396
|
+
// Determine working directory: explicit cwd arg, or fallback to workspace
|
|
397
|
+
const { join, isAbsolute } = await import("path");
|
|
398
|
+
const customCwd = args.cwd ? String(args.cwd) : "";
|
|
399
|
+
let effectiveCwd;
|
|
400
|
+
if (customCwd && isAbsolute(customCwd) && existsSync(customCwd)) {
|
|
401
|
+
effectiveCwd = customCwd;
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
const workspaceDir = join(this.runtimeDir, "workspace");
|
|
405
|
+
ensureDir(workspaceDir);
|
|
406
|
+
effectiveCwd = workspaceDir;
|
|
407
|
+
}
|
|
370
408
|
const { stdout, stderr } = await execAsync(command, {
|
|
371
409
|
timeout: 180000, // 3 minutes for npm operations
|
|
372
410
|
maxBuffer: 10 * 1024 * 1024, // 10MB for large outputs
|
|
373
|
-
cwd:
|
|
411
|
+
cwd: effectiveCwd,
|
|
374
412
|
env: { ...process.env },
|
|
375
413
|
});
|
|
376
414
|
const combined = stdout + (stderr ? `\nSTDERR: ${stderr}` : "");
|
|
@@ -449,6 +487,9 @@ export class ToolExecutor {
|
|
|
449
487
|
const path = String(args.path || "");
|
|
450
488
|
if (!path)
|
|
451
489
|
return { success: false, output: "", error: "No path provided" };
|
|
490
|
+
if (!this.isPathAllowed(resolve(path))) {
|
|
491
|
+
return { success: false, output: "", error: `Access denied: ${path}\nEnable full filesystem access with: /setup or set security.fullFilesystemAccess in config.` };
|
|
492
|
+
}
|
|
452
493
|
if (!existsSync(path))
|
|
453
494
|
return { success: false, output: "", error: `File not found: ${path}` };
|
|
454
495
|
try {
|
|
@@ -476,6 +517,9 @@ export class ToolExecutor {
|
|
|
476
517
|
ensureDir(workspaceDir);
|
|
477
518
|
path = resolvePath(workspaceDir, path);
|
|
478
519
|
}
|
|
520
|
+
if (!this.isPathAllowed(path)) {
|
|
521
|
+
return { success: false, output: "", error: `Access denied: ${path}\nEnable full filesystem access with: /setup or set security.fullFilesystemAccess in config.` };
|
|
522
|
+
}
|
|
479
523
|
// Create checkpoint before overwrite
|
|
480
524
|
if (existsSync(path)) {
|
|
481
525
|
try {
|
|
@@ -498,11 +542,10 @@ export class ToolExecutor {
|
|
|
498
542
|
catch (err) {
|
|
499
543
|
// Handle permission errors with helpful message
|
|
500
544
|
if (err.code === "EPERM" || err.code === "EACCES") {
|
|
501
|
-
const workspaceDir = join(this.runtimeDir, "workspace");
|
|
502
545
|
return {
|
|
503
546
|
success: false,
|
|
504
547
|
output: "",
|
|
505
|
-
error: `Permission denied: ${path}\n\nI don't have write access to this location. Try
|
|
548
|
+
error: `Permission denied: ${path}\n\nI don't have write access to this location. Try a different directory, or check folder permissions.`,
|
|
506
549
|
};
|
|
507
550
|
}
|
|
508
551
|
return { success: false, output: "", error: err.message };
|
|
@@ -824,23 +867,44 @@ export class ToolExecutor {
|
|
|
824
867
|
return { success: false, output: "", error: "No image path provided" };
|
|
825
868
|
if (!existsSync(imagePath))
|
|
826
869
|
return { success: false, output: "", error: `Image not found: ${imagePath}` };
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
870
|
+
// Try direct chat context first (available when request came from Telegram/WhatsApp)
|
|
871
|
+
if (this.currentChatContext?.sendImage) {
|
|
872
|
+
try {
|
|
873
|
+
await this.currentChatContext.sendImage(imagePath, caption);
|
|
874
|
+
return {
|
|
875
|
+
success: true,
|
|
876
|
+
output: `Image sent to ${this.currentChatContext.channel}:${this.currentChatContext.peerId}\nPath: ${imagePath}${caption ? `\nCaption: ${caption}` : ""}`,
|
|
877
|
+
};
|
|
878
|
+
}
|
|
879
|
+
catch (err) {
|
|
880
|
+
return { success: false, output: "", error: `Failed to send image: ${err.message}` };
|
|
881
|
+
}
|
|
833
882
|
}
|
|
883
|
+
// Fallback: cross-channel dispatch via dock (CLI -> Telegram)
|
|
834
884
|
try {
|
|
835
|
-
await
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
885
|
+
const { getChannelDispatcher, getChannel } = await import("../channels/dock.js");
|
|
886
|
+
const telegramDispatcher = getChannelDispatcher("telegram");
|
|
887
|
+
const telegramChannel = getChannel("telegram");
|
|
888
|
+
if (telegramDispatcher && telegramChannel?.status === "connected") {
|
|
889
|
+
const chatId = process.env.TELEGRAM_CHAT_ID || process.env.WISPY_TELEGRAM_CHAT_ID;
|
|
890
|
+
if (chatId) {
|
|
891
|
+
const sent = await telegramDispatcher.sendImage(chatId, imagePath, caption);
|
|
892
|
+
if (sent) {
|
|
893
|
+
return {
|
|
894
|
+
success: true,
|
|
895
|
+
output: `Image sent to Telegram chat ${chatId} via cross-channel dispatch\nPath: ${imagePath}${caption ? `\nCaption: ${caption}` : ""}`,
|
|
896
|
+
};
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
return { success: false, output: "", error: "Telegram is connected but no TELEGRAM_CHAT_ID set. Set the env var to enable cross-channel image sending from CLI." };
|
|
900
|
+
}
|
|
843
901
|
}
|
|
902
|
+
catch { /* dock import or dispatch failed -- fall through */ }
|
|
903
|
+
return {
|
|
904
|
+
success: false,
|
|
905
|
+
output: "",
|
|
906
|
+
error: "No chat context available and no connected Telegram channel found. Use this tool from Telegram, or set TELEGRAM_CHAT_ID to enable cross-channel dispatch.",
|
|
907
|
+
};
|
|
844
908
|
}
|
|
845
909
|
async executeSendMessage(args) {
|
|
846
910
|
const channel = String(args.channel || "");
|
|
@@ -1389,11 +1453,10 @@ export class ToolExecutor {
|
|
|
1389
1453
|
catch (err) {
|
|
1390
1454
|
// Handle permission errors with helpful message
|
|
1391
1455
|
if (err.code === "EPERM" || err.code === "EACCES") {
|
|
1392
|
-
const workspaceDir = join(this.runtimeDir, "workspace");
|
|
1393
1456
|
return {
|
|
1394
1457
|
success: false,
|
|
1395
1458
|
output: "",
|
|
1396
|
-
error: `Permission denied: ${path}\n\
|
|
1459
|
+
error: `Permission denied: ${path}\n\nI don't have access to this location. Try a different directory, or check folder permissions.`,
|
|
1397
1460
|
};
|
|
1398
1461
|
}
|
|
1399
1462
|
return { success: false, output: "", error: err.message };
|
|
@@ -3274,6 +3337,40 @@ export default ${componentName};
|
|
|
3274
3337
|
return { success: false, output: "", error: `Send document error: ${err.message}` };
|
|
3275
3338
|
}
|
|
3276
3339
|
}
|
|
3340
|
+
async executeTelegramListFiles(args) {
|
|
3341
|
+
try {
|
|
3342
|
+
const { homedir } = await import("os");
|
|
3343
|
+
const { join, basename } = await import("path");
|
|
3344
|
+
const targetDir = String(args.directory || join(homedir(), "Downloads"));
|
|
3345
|
+
if (!existsSync(targetDir)) {
|
|
3346
|
+
return { success: false, output: "", error: `Directory not found: ${targetDir}` };
|
|
3347
|
+
}
|
|
3348
|
+
const entries = readdirSync(targetDir, { withFileTypes: true })
|
|
3349
|
+
.slice(0, 50)
|
|
3350
|
+
.map((e) => {
|
|
3351
|
+
const icon = e.isDirectory() ? "[DIR]" : "[FILE]";
|
|
3352
|
+
return `${icon} ${e.name}`;
|
|
3353
|
+
});
|
|
3354
|
+
const listing = `Directory: ${targetDir}\n\n${entries.join("\n") || "(empty)"}`;
|
|
3355
|
+
// If sendFile is specified, also send that file as attachment
|
|
3356
|
+
const sendFile = args.sendFile ? String(args.sendFile) : "";
|
|
3357
|
+
if (sendFile && existsSync(sendFile)) {
|
|
3358
|
+
const chatId = this.currentChatContext?.chatId
|
|
3359
|
+
|| process.env.TELEGRAM_CHAT_ID;
|
|
3360
|
+
if (chatId) {
|
|
3361
|
+
try {
|
|
3362
|
+
const { sendTelegramDocument } = await import("../channels/telegram/adapter.js");
|
|
3363
|
+
await sendTelegramDocument(chatId, sendFile, basename(sendFile));
|
|
3364
|
+
}
|
|
3365
|
+
catch { /* non-fatal */ }
|
|
3366
|
+
}
|
|
3367
|
+
}
|
|
3368
|
+
return { success: true, output: listing };
|
|
3369
|
+
}
|
|
3370
|
+
catch (err) {
|
|
3371
|
+
return { success: false, output: "", error: `List files error: ${err.message}` };
|
|
3372
|
+
}
|
|
3373
|
+
}
|
|
3277
3374
|
async executeSendProgressUpdate(args) {
|
|
3278
3375
|
const type = String(args.type || "update");
|
|
3279
3376
|
const message = String(args.message || "");
|
|
@@ -3371,7 +3468,7 @@ export default ${componentName};
|
|
|
3371
3468
|
// For grant actions, we just report what would happen (actual chmod is too dangerous)
|
|
3372
3469
|
return {
|
|
3373
3470
|
success: true,
|
|
3374
|
-
output: `Permission action '${action}' noted.
|
|
3471
|
+
output: `Permission action '${action}' noted. Use file_write with an absolute path to write files anywhere you have access.`,
|
|
3375
3472
|
};
|
|
3376
3473
|
}
|
|
3377
3474
|
catch (err) {
|
|
@@ -3998,6 +4095,168 @@ ${newTaskContext}
|
|
|
3998
4095
|
}
|
|
3999
4096
|
}
|
|
4000
4097
|
// ═══════════════════════════════════════════════════════════════════════════════
|
|
4098
|
+
// WEBCAM & LIVE VISION TOOLS
|
|
4099
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
4100
|
+
async executeWebcamCapture(args) {
|
|
4101
|
+
try {
|
|
4102
|
+
const { captureFrame } = await import("../vision/webcam.js");
|
|
4103
|
+
const outputDir = resolve(this.runtimeDir, "captures");
|
|
4104
|
+
const framePath = captureFrame({
|
|
4105
|
+
device: args.device ? String(args.device) : undefined,
|
|
4106
|
+
width: args.width ? Number(args.width) : undefined,
|
|
4107
|
+
height: args.height ? Number(args.height) : undefined,
|
|
4108
|
+
outputDir,
|
|
4109
|
+
});
|
|
4110
|
+
// Send to chat if requested
|
|
4111
|
+
if (args.sendToChat && this.currentChatContext?.chatId) {
|
|
4112
|
+
try {
|
|
4113
|
+
const { sendDocument } = await import("../documents/telegram-delivery.js");
|
|
4114
|
+
await sendDocument(this.currentChatContext.chatId, framePath, {
|
|
4115
|
+
caption: "Webcam capture",
|
|
4116
|
+
});
|
|
4117
|
+
}
|
|
4118
|
+
catch (sendErr) {
|
|
4119
|
+
log.warn("Failed to send webcam capture to chat: %s", sendErr.message);
|
|
4120
|
+
}
|
|
4121
|
+
}
|
|
4122
|
+
return {
|
|
4123
|
+
success: true,
|
|
4124
|
+
output: `Webcam frame captured!\nPath: ${framePath}${args.sendToChat ? "\nSent to Telegram: Yes" : ""}`,
|
|
4125
|
+
};
|
|
4126
|
+
}
|
|
4127
|
+
catch (err) {
|
|
4128
|
+
return { success: false, output: "", error: `Webcam capture failed: ${err.message}` };
|
|
4129
|
+
}
|
|
4130
|
+
}
|
|
4131
|
+
async executeWebcamRecord(args) {
|
|
4132
|
+
try {
|
|
4133
|
+
const { recordVideo } = await import("../vision/webcam.js");
|
|
4134
|
+
const outputDir = resolve(this.runtimeDir, "captures");
|
|
4135
|
+
const videoPath = recordVideo({
|
|
4136
|
+
device: args.device ? String(args.device) : undefined,
|
|
4137
|
+
duration: args.duration ? Number(args.duration) : undefined,
|
|
4138
|
+
fps: args.fps ? Number(args.fps) : undefined,
|
|
4139
|
+
outputDir,
|
|
4140
|
+
});
|
|
4141
|
+
const { statSync } = await import("fs");
|
|
4142
|
+
const stats = statSync(videoPath);
|
|
4143
|
+
const sizeMB = (stats.size / (1024 * 1024)).toFixed(2);
|
|
4144
|
+
// Send to chat if requested
|
|
4145
|
+
if (args.sendToChat && this.currentChatContext?.chatId) {
|
|
4146
|
+
try {
|
|
4147
|
+
const { sendDocument } = await import("../documents/telegram-delivery.js");
|
|
4148
|
+
await sendDocument(this.currentChatContext.chatId, videoPath, {
|
|
4149
|
+
caption: `Webcam recording (${args.duration || 10}s)`,
|
|
4150
|
+
});
|
|
4151
|
+
}
|
|
4152
|
+
catch (sendErr) {
|
|
4153
|
+
log.warn("Failed to send webcam video to chat: %s", sendErr.message);
|
|
4154
|
+
}
|
|
4155
|
+
}
|
|
4156
|
+
return {
|
|
4157
|
+
success: true,
|
|
4158
|
+
output: `Webcam video recorded!\nPath: ${videoPath}\nDuration: ${args.duration || 10}s\nSize: ${sizeMB} MB${args.sendToChat ? "\nSent to Telegram: Yes" : ""}`,
|
|
4159
|
+
};
|
|
4160
|
+
}
|
|
4161
|
+
catch (err) {
|
|
4162
|
+
return { success: false, output: "", error: `Webcam recording failed: ${err.message}` };
|
|
4163
|
+
}
|
|
4164
|
+
}
|
|
4165
|
+
async executeWebcamListDevices() {
|
|
4166
|
+
try {
|
|
4167
|
+
const { listDevices, isFfmpegAvailable } = await import("../vision/webcam.js");
|
|
4168
|
+
if (!isFfmpegAvailable()) {
|
|
4169
|
+
return {
|
|
4170
|
+
success: false,
|
|
4171
|
+
output: "",
|
|
4172
|
+
error: "FFmpeg not found. Install FFmpeg to use webcam features: https://ffmpeg.org/download.html",
|
|
4173
|
+
};
|
|
4174
|
+
}
|
|
4175
|
+
const devices = listDevices();
|
|
4176
|
+
if (devices.length === 0) {
|
|
4177
|
+
return {
|
|
4178
|
+
success: true,
|
|
4179
|
+
output: "No video capture devices found. Make sure a webcam is connected.",
|
|
4180
|
+
};
|
|
4181
|
+
}
|
|
4182
|
+
const lines = devices.map((d, i) => `${i + 1}. ${d.name} (ID: ${d.id}, Type: ${d.type})`);
|
|
4183
|
+
return {
|
|
4184
|
+
success: true,
|
|
4185
|
+
output: `Found ${devices.length} video device(s):\n${lines.join("\n")}`,
|
|
4186
|
+
};
|
|
4187
|
+
}
|
|
4188
|
+
catch (err) {
|
|
4189
|
+
return { success: false, output: "", error: `Device listing failed: ${err.message}` };
|
|
4190
|
+
}
|
|
4191
|
+
}
|
|
4192
|
+
async executeWebcamLiveStart(args) {
|
|
4193
|
+
try {
|
|
4194
|
+
// Check if already running
|
|
4195
|
+
if (this.liveStream?.getStatus().running) {
|
|
4196
|
+
return {
|
|
4197
|
+
success: false,
|
|
4198
|
+
output: "",
|
|
4199
|
+
error: "A live stream is already running. Call webcam_live_stop first.",
|
|
4200
|
+
};
|
|
4201
|
+
}
|
|
4202
|
+
const { LiveVisionStream } = await import("../vision/live-stream.js");
|
|
4203
|
+
this.liveStream = new LiveVisionStream();
|
|
4204
|
+
const intervalMs = args.intervalMs ? Number(args.intervalMs) : 2000;
|
|
4205
|
+
const maxFrames = args.maxFrames ? Number(args.maxFrames) : 30;
|
|
4206
|
+
const prompt = args.prompt ? String(args.prompt) : undefined;
|
|
4207
|
+
const device = args.device ? String(args.device) : undefined;
|
|
4208
|
+
const outputDir = resolve(this.runtimeDir, "captures");
|
|
4209
|
+
// Start the stream -- onFrame sends analysis to chat or logs it
|
|
4210
|
+
const chatCtx = this.currentChatContext;
|
|
4211
|
+
await this.liveStream.start({
|
|
4212
|
+
device,
|
|
4213
|
+
intervalMs,
|
|
4214
|
+
maxFrames,
|
|
4215
|
+
prompt,
|
|
4216
|
+
outputDir,
|
|
4217
|
+
onFrame: async (analysis, frameIndex) => {
|
|
4218
|
+
const msg = `[Frame ${frameIndex}] ${analysis}`;
|
|
4219
|
+
log.info(msg);
|
|
4220
|
+
// Send to Telegram if available
|
|
4221
|
+
if (chatCtx?.chatId) {
|
|
4222
|
+
try {
|
|
4223
|
+
const { sendDocument } = await import("../documents/telegram-delivery.js");
|
|
4224
|
+
// Use Telegram bot API to send text message
|
|
4225
|
+
const token = process.env.TELEGRAM_BOT_TOKEN;
|
|
4226
|
+
if (token) {
|
|
4227
|
+
await fetch(`https://api.telegram.org/bot${token}/sendMessage`, {
|
|
4228
|
+
method: "POST",
|
|
4229
|
+
headers: { "Content-Type": "application/json" },
|
|
4230
|
+
body: JSON.stringify({ chat_id: chatCtx.chatId, text: msg }),
|
|
4231
|
+
});
|
|
4232
|
+
}
|
|
4233
|
+
}
|
|
4234
|
+
catch { /* best-effort */ }
|
|
4235
|
+
}
|
|
4236
|
+
},
|
|
4237
|
+
});
|
|
4238
|
+
return {
|
|
4239
|
+
success: true,
|
|
4240
|
+
output: `Live vision stream started!\nInterval: ${intervalMs}ms\nMax frames: ${maxFrames}\nPrompt: ${prompt || "Describe what you see"}\nDevice: ${device || "default"}`,
|
|
4241
|
+
};
|
|
4242
|
+
}
|
|
4243
|
+
catch (err) {
|
|
4244
|
+
return { success: false, output: "", error: `Live stream failed: ${err.message}` };
|
|
4245
|
+
}
|
|
4246
|
+
}
|
|
4247
|
+
async executeWebcamLiveStop() {
|
|
4248
|
+
if (!this.liveStream) {
|
|
4249
|
+
return { success: false, output: "", error: "No live stream is running." };
|
|
4250
|
+
}
|
|
4251
|
+
const status = this.liveStream.getStatus();
|
|
4252
|
+
this.liveStream.stop();
|
|
4253
|
+
const elapsed = status.startedAt ? Math.round((Date.now() - status.startedAt) / 1000) : 0;
|
|
4254
|
+
return {
|
|
4255
|
+
success: true,
|
|
4256
|
+
output: `Live stream stopped.\nFrames analyzed: ${status.framesAnalyzed}\nDuration: ${elapsed}s\nLast analysis: ${status.lastAnalysis || "N/A"}`,
|
|
4257
|
+
};
|
|
4258
|
+
}
|
|
4259
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
4001
4260
|
// GIT & GITHUB TOOLS
|
|
4002
4261
|
// ═══════════════════════════════════════════════════════════════════════════════
|
|
4003
4262
|
async executeGitInit(args) {
|