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.
Files changed (357) hide show
  1. package/.env.example +47 -37
  2. package/dist/a2a/delegation.d.ts.map +1 -1
  3. package/dist/a2a/delegation.js +9 -1
  4. package/dist/a2a/delegation.js.map +1 -1
  5. package/dist/agents/tool-executor.d.ts +11 -0
  6. package/dist/agents/tool-executor.d.ts.map +1 -1
  7. package/dist/agents/tool-executor.js +283 -24
  8. package/dist/agents/tool-executor.js.map +1 -1
  9. package/dist/ai/model-registry.d.ts +8 -2
  10. package/dist/ai/model-registry.d.ts.map +1 -1
  11. package/dist/ai/model-registry.js +60 -6
  12. package/dist/ai/model-registry.js.map +1 -1
  13. package/dist/ai/prompts.d.ts.map +1 -1
  14. package/dist/ai/prompts.js +32 -1
  15. package/dist/ai/prompts.js.map +1 -1
  16. package/dist/ai/providers/anthropic.d.ts +24 -0
  17. package/dist/ai/providers/anthropic.d.ts.map +1 -0
  18. package/dist/ai/providers/anthropic.js +153 -0
  19. package/dist/ai/providers/anthropic.js.map +1 -0
  20. package/dist/ai/tools.d.ts.map +1 -1
  21. package/dist/ai/tools.js +80 -7
  22. package/dist/ai/tools.js.map +1 -1
  23. package/dist/channels/dock.d.ts +10 -0
  24. package/dist/channels/dock.d.ts.map +1 -1
  25. package/dist/channels/dock.js +9 -0
  26. package/dist/channels/dock.js.map +1 -1
  27. package/dist/channels/telegram/adapter.d.ts +8 -0
  28. package/dist/channels/telegram/adapter.d.ts.map +1 -1
  29. package/dist/channels/telegram/adapter.js +181 -20
  30. package/dist/channels/telegram/adapter.js.map +1 -1
  31. package/dist/cli/commands.d.ts.map +1 -1
  32. package/dist/cli/commands.js +303 -5
  33. package/dist/cli/commands.js.map +1 -1
  34. package/dist/cli/doctor.d.ts.map +1 -1
  35. package/dist/cli/doctor.js +20 -0
  36. package/dist/cli/doctor.js.map +1 -1
  37. package/dist/cli/ink/App.d.ts +1 -0
  38. package/dist/cli/ink/App.d.ts.map +1 -1
  39. package/dist/cli/ink/App.js +524 -139
  40. package/dist/cli/ink/App.js.map +1 -1
  41. package/dist/cli/ink/MarkdownText.d.ts.map +1 -1
  42. package/dist/cli/ink/MarkdownText.js +16 -4
  43. package/dist/cli/ink/MarkdownText.js.map +1 -1
  44. package/dist/cli/ink/ThinkingSpinner.d.ts +26 -6
  45. package/dist/cli/ink/ThinkingSpinner.d.ts.map +1 -1
  46. package/dist/cli/ink/ThinkingSpinner.js +105 -25
  47. package/dist/cli/ink/ThinkingSpinner.js.map +1 -1
  48. package/dist/cli/ink/ThoughtSignature.d.ts +10 -9
  49. package/dist/cli/ink/ThoughtSignature.d.ts.map +1 -1
  50. package/dist/cli/ink/ThoughtSignature.js +51 -4
  51. package/dist/cli/ink/ThoughtSignature.js.map +1 -1
  52. package/dist/cli/ink/ink-repl.d.ts.map +1 -1
  53. package/dist/cli/ink/ink-repl.js +96 -36
  54. package/dist/cli/ink/ink-repl.js.map +1 -1
  55. package/dist/cli/ink/types.d.ts +4 -0
  56. package/dist/cli/ink/types.d.ts.map +1 -1
  57. package/dist/cli/repl.d.ts.map +1 -1
  58. package/dist/cli/repl.js +7 -1
  59. package/dist/cli/repl.js.map +1 -1
  60. package/dist/cli/setup/wizard.d.ts.map +1 -1
  61. package/dist/cli/setup/wizard.js +131 -72
  62. package/dist/cli/setup/wizard.js.map +1 -1
  63. package/dist/cli/tui/output-renderer.d.ts +2 -2
  64. package/dist/cli/tui/output-renderer.js +2 -2
  65. package/dist/cli/ui/banner.d.ts +1 -1
  66. package/dist/cli/ui/banner.d.ts.map +1 -1
  67. package/dist/cli/ui/banner.js +1 -1
  68. package/dist/cli/ui/banner.js.map +1 -1
  69. package/dist/cli/ui/theme.d.ts +1 -0
  70. package/dist/cli/ui/theme.d.ts.map +1 -1
  71. package/dist/cli/ui/theme.js +4 -0
  72. package/dist/cli/ui/theme.js.map +1 -1
  73. package/dist/config/schema.d.ts +3 -1
  74. package/dist/config/schema.d.ts.map +1 -1
  75. package/dist/config/schema.js +20 -1
  76. package/dist/config/schema.js.map +1 -1
  77. package/dist/documents/x402-report.d.ts.map +1 -1
  78. package/dist/documents/x402-report.js +17 -10
  79. package/dist/documents/x402-report.js.map +1 -1
  80. package/dist/infra/ports.d.ts +5 -0
  81. package/dist/infra/ports.d.ts.map +1 -1
  82. package/dist/infra/ports.js +24 -1
  83. package/dist/infra/ports.js.map +1 -1
  84. package/dist/integrations/agentic-commerce/ap2/receipts.js +5 -5
  85. package/dist/integrations/agentic-commerce/ap2/receipts.js.map +1 -1
  86. package/dist/integrations/agentic-commerce/bite/encrypted-tx.d.ts.map +1 -1
  87. package/dist/integrations/agentic-commerce/bite/encrypted-tx.js +9 -4
  88. package/dist/integrations/agentic-commerce/bite/encrypted-tx.js.map +1 -1
  89. package/dist/integrations/agentic-commerce/config.d.ts +101 -8
  90. package/dist/integrations/agentic-commerce/config.d.ts.map +1 -1
  91. package/dist/integrations/agentic-commerce/config.js +109 -13
  92. package/dist/integrations/agentic-commerce/config.js.map +1 -1
  93. package/dist/integrations/agentic-commerce/defi/swap.d.ts +12 -0
  94. package/dist/integrations/agentic-commerce/defi/swap.d.ts.map +1 -1
  95. package/dist/integrations/agentic-commerce/defi/swap.js +113 -47
  96. package/dist/integrations/agentic-commerce/defi/swap.js.map +1 -1
  97. package/dist/integrations/agentic-commerce/demo/scenarios/track4-defi.d.ts.map +1 -1
  98. package/dist/integrations/agentic-commerce/demo/scenarios/track4-defi.js +12 -7
  99. package/dist/integrations/agentic-commerce/demo/scenarios/track4-defi.js.map +1 -1
  100. package/dist/integrations/agentic-commerce/demo/server.d.ts +2 -1
  101. package/dist/integrations/agentic-commerce/demo/server.d.ts.map +1 -1
  102. package/dist/integrations/agentic-commerce/demo/server.js +13 -1
  103. package/dist/integrations/agentic-commerce/demo/server.js.map +1 -1
  104. package/dist/integrations/agentic-commerce/index.d.ts.map +1 -1
  105. package/dist/integrations/agentic-commerce/index.js +188 -37
  106. package/dist/integrations/agentic-commerce/index.js.map +1 -1
  107. package/dist/integrations/agentic-commerce/x402/buyer.d.ts +5 -2
  108. package/dist/integrations/agentic-commerce/x402/buyer.d.ts.map +1 -1
  109. package/dist/integrations/agentic-commerce/x402/buyer.js +20 -20
  110. package/dist/integrations/agentic-commerce/x402/buyer.js.map +1 -1
  111. package/dist/integrations/agentic-commerce/x402/registry.d.ts +2 -0
  112. package/dist/integrations/agentic-commerce/x402/registry.d.ts.map +1 -1
  113. package/dist/integrations/agentic-commerce/x402/registry.js +11 -4
  114. package/dist/integrations/agentic-commerce/x402/registry.js.map +1 -1
  115. package/dist/integrations/agentic-commerce/x402/seller.d.ts.map +1 -1
  116. package/dist/integrations/agentic-commerce/x402/seller.js +6 -1
  117. package/dist/integrations/agentic-commerce/x402/seller.js.map +1 -1
  118. package/dist/integrations/agentic-commerce/x402/tracker.d.ts +3 -1
  119. package/dist/integrations/agentic-commerce/x402/tracker.d.ts.map +1 -1
  120. package/dist/integrations/agentic-commerce/x402/tracker.js +40 -28
  121. package/dist/integrations/agentic-commerce/x402/tracker.js.map +1 -1
  122. package/dist/integrations/ai-models/anthropic.d.ts +5 -3
  123. package/dist/integrations/ai-models/anthropic.d.ts.map +1 -1
  124. package/dist/integrations/ai-models/anthropic.js +58 -31
  125. package/dist/integrations/ai-models/anthropic.js.map +1 -1
  126. package/dist/integrations/ai-models/groq.d.ts +18 -0
  127. package/dist/integrations/ai-models/groq.d.ts.map +1 -0
  128. package/dist/integrations/ai-models/groq.js +109 -0
  129. package/dist/integrations/ai-models/groq.js.map +1 -0
  130. package/dist/integrations/ai-models/kimi.d.ts +18 -0
  131. package/dist/integrations/ai-models/kimi.d.ts.map +1 -0
  132. package/dist/integrations/ai-models/kimi.js +108 -0
  133. package/dist/integrations/ai-models/kimi.js.map +1 -0
  134. package/dist/integrations/ai-models/openrouter.d.ts +18 -0
  135. package/dist/integrations/ai-models/openrouter.d.ts.map +1 -0
  136. package/dist/integrations/ai-models/openrouter.js +115 -0
  137. package/dist/integrations/ai-models/openrouter.js.map +1 -0
  138. package/dist/integrations/browser-engine/automation/auth-manager.d.ts +24 -0
  139. package/dist/integrations/browser-engine/automation/auth-manager.d.ts.map +1 -0
  140. package/dist/integrations/browser-engine/automation/auth-manager.js +102 -0
  141. package/dist/integrations/browser-engine/automation/auth-manager.js.map +1 -0
  142. package/dist/integrations/browser-engine/automation/captcha-detector.d.ts +16 -0
  143. package/dist/integrations/browser-engine/automation/captcha-detector.d.ts.map +1 -0
  144. package/dist/integrations/browser-engine/automation/captcha-detector.js +83 -0
  145. package/dist/integrations/browser-engine/automation/captcha-detector.js.map +1 -0
  146. package/dist/integrations/browser-engine/automation/cookie-banner.d.ts +17 -0
  147. package/dist/integrations/browser-engine/automation/cookie-banner.d.ts.map +1 -0
  148. package/dist/integrations/browser-engine/automation/cookie-banner.js +93 -0
  149. package/dist/integrations/browser-engine/automation/cookie-banner.js.map +1 -0
  150. package/dist/integrations/browser-engine/automation/dialog-handler.d.ts +37 -0
  151. package/dist/integrations/browser-engine/automation/dialog-handler.d.ts.map +1 -0
  152. package/dist/integrations/browser-engine/automation/dialog-handler.js +92 -0
  153. package/dist/integrations/browser-engine/automation/dialog-handler.js.map +1 -0
  154. package/dist/integrations/browser-engine/automation/download-manager.d.ts +32 -0
  155. package/dist/integrations/browser-engine/automation/download-manager.d.ts.map +1 -0
  156. package/dist/integrations/browser-engine/automation/download-manager.js +96 -0
  157. package/dist/integrations/browser-engine/automation/download-manager.js.map +1 -0
  158. package/dist/integrations/browser-engine/automation/drag-drop.d.ts +24 -0
  159. package/dist/integrations/browser-engine/automation/drag-drop.d.ts.map +1 -0
  160. package/dist/integrations/browser-engine/automation/drag-drop.js +59 -0
  161. package/dist/integrations/browser-engine/automation/drag-drop.js.map +1 -0
  162. package/dist/integrations/browser-engine/automation/form-filler.d.ts +39 -0
  163. package/dist/integrations/browser-engine/automation/form-filler.d.ts.map +1 -0
  164. package/dist/integrations/browser-engine/automation/form-filler.js +185 -0
  165. package/dist/integrations/browser-engine/automation/form-filler.js.map +1 -0
  166. package/dist/integrations/browser-engine/automation/wait-strategies.d.ts +21 -0
  167. package/dist/integrations/browser-engine/automation/wait-strategies.d.ts.map +1 -0
  168. package/dist/integrations/browser-engine/automation/wait-strategies.js +73 -0
  169. package/dist/integrations/browser-engine/automation/wait-strategies.js.map +1 -0
  170. package/dist/integrations/browser-engine/automation/workflow-engine.d.ts +15 -0
  171. package/dist/integrations/browser-engine/automation/workflow-engine.d.ts.map +1 -0
  172. package/dist/integrations/browser-engine/automation/workflow-engine.js +403 -0
  173. package/dist/integrations/browser-engine/automation/workflow-engine.js.map +1 -0
  174. package/dist/integrations/browser-engine/config.d.ts +58 -0
  175. package/dist/integrations/browser-engine/config.d.ts.map +1 -0
  176. package/dist/integrations/browser-engine/config.js +75 -0
  177. package/dist/integrations/browser-engine/config.js.map +1 -0
  178. package/dist/integrations/browser-engine/core/history-navigator.d.ts +25 -0
  179. package/dist/integrations/browser-engine/core/history-navigator.d.ts.map +1 -0
  180. package/dist/integrations/browser-engine/core/history-navigator.js +68 -0
  181. package/dist/integrations/browser-engine/core/history-navigator.js.map +1 -0
  182. package/dist/integrations/browser-engine/core/network-monitor.d.ts +44 -0
  183. package/dist/integrations/browser-engine/core/network-monitor.d.ts.map +1 -0
  184. package/dist/integrations/browser-engine/core/network-monitor.js +145 -0
  185. package/dist/integrations/browser-engine/core/network-monitor.js.map +1 -0
  186. package/dist/integrations/browser-engine/core/page-monitor.d.ts +61 -0
  187. package/dist/integrations/browser-engine/core/page-monitor.d.ts.map +1 -0
  188. package/dist/integrations/browser-engine/core/page-monitor.js +111 -0
  189. package/dist/integrations/browser-engine/core/page-monitor.js.map +1 -0
  190. package/dist/integrations/browser-engine/core/page-search.d.ts +51 -0
  191. package/dist/integrations/browser-engine/core/page-search.d.ts.map +1 -0
  192. package/dist/integrations/browser-engine/core/page-search.js +146 -0
  193. package/dist/integrations/browser-engine/core/page-search.js.map +1 -0
  194. package/dist/integrations/browser-engine/core/proxy-manager.d.ts +31 -0
  195. package/dist/integrations/browser-engine/core/proxy-manager.d.ts.map +1 -0
  196. package/dist/integrations/browser-engine/core/proxy-manager.js +90 -0
  197. package/dist/integrations/browser-engine/core/proxy-manager.js.map +1 -0
  198. package/dist/integrations/browser-engine/core/retry-engine.d.ts +38 -0
  199. package/dist/integrations/browser-engine/core/retry-engine.d.ts.map +1 -0
  200. package/dist/integrations/browser-engine/core/retry-engine.js +117 -0
  201. package/dist/integrations/browser-engine/core/retry-engine.js.map +1 -0
  202. package/dist/integrations/browser-engine/core/session-manager.d.ts +45 -0
  203. package/dist/integrations/browser-engine/core/session-manager.d.ts.map +1 -0
  204. package/dist/integrations/browser-engine/core/session-manager.js +233 -0
  205. package/dist/integrations/browser-engine/core/session-manager.js.map +1 -0
  206. package/dist/integrations/browser-engine/core/stealth-engine.d.ts +19 -0
  207. package/dist/integrations/browser-engine/core/stealth-engine.d.ts.map +1 -0
  208. package/dist/integrations/browser-engine/core/stealth-engine.js +233 -0
  209. package/dist/integrations/browser-engine/core/stealth-engine.js.map +1 -0
  210. package/dist/integrations/browser-engine/core/tab-manager.d.ts +40 -0
  211. package/dist/integrations/browser-engine/core/tab-manager.d.ts.map +1 -0
  212. package/dist/integrations/browser-engine/core/tab-manager.js +94 -0
  213. package/dist/integrations/browser-engine/core/tab-manager.js.map +1 -0
  214. package/dist/integrations/browser-engine/extraction/dom-processor.d.ts +22 -0
  215. package/dist/integrations/browser-engine/extraction/dom-processor.d.ts.map +1 -0
  216. package/dist/integrations/browser-engine/extraction/dom-processor.js +197 -0
  217. package/dist/integrations/browser-engine/extraction/dom-processor.js.map +1 -0
  218. package/dist/integrations/browser-engine/extraction/element-finder.d.ts +53 -0
  219. package/dist/integrations/browser-engine/extraction/element-finder.d.ts.map +1 -0
  220. package/dist/integrations/browser-engine/extraction/element-finder.js +108 -0
  221. package/dist/integrations/browser-engine/extraction/element-finder.js.map +1 -0
  222. package/dist/integrations/browser-engine/extraction/iframe-processor.d.ts +69 -0
  223. package/dist/integrations/browser-engine/extraction/iframe-processor.d.ts.map +1 -0
  224. package/dist/integrations/browser-engine/extraction/iframe-processor.js +199 -0
  225. package/dist/integrations/browser-engine/extraction/iframe-processor.js.map +1 -0
  226. package/dist/integrations/browser-engine/extraction/media-extractor.d.ts +24 -0
  227. package/dist/integrations/browser-engine/extraction/media-extractor.d.ts.map +1 -0
  228. package/dist/integrations/browser-engine/extraction/media-extractor.js +108 -0
  229. package/dist/integrations/browser-engine/extraction/media-extractor.js.map +1 -0
  230. package/dist/integrations/browser-engine/extraction/schema-extractor.d.ts +34 -0
  231. package/dist/integrations/browser-engine/extraction/schema-extractor.d.ts.map +1 -0
  232. package/dist/integrations/browser-engine/extraction/schema-extractor.js +149 -0
  233. package/dist/integrations/browser-engine/extraction/schema-extractor.js.map +1 -0
  234. package/dist/integrations/browser-engine/extraction/table-extractor.d.ts +16 -0
  235. package/dist/integrations/browser-engine/extraction/table-extractor.d.ts.map +1 -0
  236. package/dist/integrations/browser-engine/extraction/table-extractor.js +87 -0
  237. package/dist/integrations/browser-engine/extraction/table-extractor.js.map +1 -0
  238. package/dist/integrations/browser-engine/index.d.ts +77 -0
  239. package/dist/integrations/browser-engine/index.d.ts.map +1 -0
  240. package/dist/integrations/browser-engine/index.js +1819 -0
  241. package/dist/integrations/browser-engine/index.js.map +1 -0
  242. package/dist/integrations/browser-engine/profiles/cookie-jar.d.ts +14 -0
  243. package/dist/integrations/browser-engine/profiles/cookie-jar.d.ts.map +1 -0
  244. package/dist/integrations/browser-engine/profiles/cookie-jar.js +82 -0
  245. package/dist/integrations/browser-engine/profiles/cookie-jar.js.map +1 -0
  246. package/dist/integrations/browser-engine/profiles/profile-store.d.ts +30 -0
  247. package/dist/integrations/browser-engine/profiles/profile-store.d.ts.map +1 -0
  248. package/dist/integrations/browser-engine/profiles/profile-store.js +101 -0
  249. package/dist/integrations/browser-engine/profiles/profile-store.js.map +1 -0
  250. package/dist/integrations/browser-engine/skills/built-in/developer/index.d.ts +6 -0
  251. package/dist/integrations/browser-engine/skills/built-in/developer/index.d.ts.map +1 -0
  252. package/dist/integrations/browser-engine/skills/built-in/developer/index.js +229 -0
  253. package/dist/integrations/browser-engine/skills/built-in/developer/index.js.map +1 -0
  254. package/dist/integrations/browser-engine/skills/built-in/ecommerce/index.d.ts +6 -0
  255. package/dist/integrations/browser-engine/skills/built-in/ecommerce/index.d.ts.map +1 -0
  256. package/dist/integrations/browser-engine/skills/built-in/ecommerce/index.js +194 -0
  257. package/dist/integrations/browser-engine/skills/built-in/ecommerce/index.js.map +1 -0
  258. package/dist/integrations/browser-engine/skills/built-in/financial/index.d.ts +6 -0
  259. package/dist/integrations/browser-engine/skills/built-in/financial/index.d.ts.map +1 -0
  260. package/dist/integrations/browser-engine/skills/built-in/financial/index.js +194 -0
  261. package/dist/integrations/browser-engine/skills/built-in/financial/index.js.map +1 -0
  262. package/dist/integrations/browser-engine/skills/built-in/jobs/index.d.ts +6 -0
  263. package/dist/integrations/browser-engine/skills/built-in/jobs/index.d.ts.map +1 -0
  264. package/dist/integrations/browser-engine/skills/built-in/jobs/index.js +132 -0
  265. package/dist/integrations/browser-engine/skills/built-in/jobs/index.js.map +1 -0
  266. package/dist/integrations/browser-engine/skills/built-in/news/index.d.ts +6 -0
  267. package/dist/integrations/browser-engine/skills/built-in/news/index.d.ts.map +1 -0
  268. package/dist/integrations/browser-engine/skills/built-in/news/index.js +183 -0
  269. package/dist/integrations/browser-engine/skills/built-in/news/index.js.map +1 -0
  270. package/dist/integrations/browser-engine/skills/built-in/productivity/index.d.ts +6 -0
  271. package/dist/integrations/browser-engine/skills/built-in/productivity/index.d.ts.map +1 -0
  272. package/dist/integrations/browser-engine/skills/built-in/productivity/index.js +115 -0
  273. package/dist/integrations/browser-engine/skills/built-in/productivity/index.js.map +1 -0
  274. package/dist/integrations/browser-engine/skills/built-in/search/index.d.ts +6 -0
  275. package/dist/integrations/browser-engine/skills/built-in/search/index.d.ts.map +1 -0
  276. package/dist/integrations/browser-engine/skills/built-in/search/index.js +156 -0
  277. package/dist/integrations/browser-engine/skills/built-in/search/index.js.map +1 -0
  278. package/dist/integrations/browser-engine/skills/built-in/social/index.d.ts +6 -0
  279. package/dist/integrations/browser-engine/skills/built-in/social/index.d.ts.map +1 -0
  280. package/dist/integrations/browser-engine/skills/built-in/social/index.js +217 -0
  281. package/dist/integrations/browser-engine/skills/built-in/social/index.js.map +1 -0
  282. package/dist/integrations/browser-engine/skills/built-in/travel/index.d.ts +6 -0
  283. package/dist/integrations/browser-engine/skills/built-in/travel/index.d.ts.map +1 -0
  284. package/dist/integrations/browser-engine/skills/built-in/travel/index.js +135 -0
  285. package/dist/integrations/browser-engine/skills/built-in/travel/index.js.map +1 -0
  286. package/dist/integrations/browser-engine/skills/built-in/utility/index.d.ts +6 -0
  287. package/dist/integrations/browser-engine/skills/built-in/utility/index.d.ts.map +1 -0
  288. package/dist/integrations/browser-engine/skills/built-in/utility/index.js +150 -0
  289. package/dist/integrations/browser-engine/skills/built-in/utility/index.js.map +1 -0
  290. package/dist/integrations/browser-engine/skills/executor.d.ts +10 -0
  291. package/dist/integrations/browser-engine/skills/executor.d.ts.map +1 -0
  292. package/dist/integrations/browser-engine/skills/executor.js +179 -0
  293. package/dist/integrations/browser-engine/skills/executor.js.map +1 -0
  294. package/dist/integrations/browser-engine/skills/registry.d.ts +24 -0
  295. package/dist/integrations/browser-engine/skills/registry.d.ts.map +1 -0
  296. package/dist/integrations/browser-engine/skills/registry.js +94 -0
  297. package/dist/integrations/browser-engine/skills/registry.js.map +1 -0
  298. package/dist/integrations/browser-engine/skills/skill-generator.d.ts +21 -0
  299. package/dist/integrations/browser-engine/skills/skill-generator.d.ts.map +1 -0
  300. package/dist/integrations/browser-engine/skills/skill-generator.js +205 -0
  301. package/dist/integrations/browser-engine/skills/skill-generator.js.map +1 -0
  302. package/dist/integrations/browser-engine/skills/skill-store.d.ts +24 -0
  303. package/dist/integrations/browser-engine/skills/skill-store.d.ts.map +1 -0
  304. package/dist/integrations/browser-engine/skills/skill-store.js +86 -0
  305. package/dist/integrations/browser-engine/skills/skill-store.js.map +1 -0
  306. package/dist/integrations/browser-engine/skills/types.d.ts +61 -0
  307. package/dist/integrations/browser-engine/skills/types.d.ts.map +1 -0
  308. package/dist/integrations/browser-engine/skills/types.js +8 -0
  309. package/dist/integrations/browser-engine/skills/types.js.map +1 -0
  310. package/dist/integrations/browser-engine/types.d.ts +260 -0
  311. package/dist/integrations/browser-engine/types.d.ts.map +1 -0
  312. package/dist/integrations/browser-engine/types.js +5 -0
  313. package/dist/integrations/browser-engine/types.js.map +1 -0
  314. package/dist/integrations/loader.js +8 -0
  315. package/dist/integrations/loader.js.map +1 -1
  316. package/dist/integrations/social/zoho-email.d.ts +25 -0
  317. package/dist/integrations/social/zoho-email.d.ts.map +1 -0
  318. package/dist/integrations/social/zoho-email.js +208 -0
  319. package/dist/integrations/social/zoho-email.js.map +1 -0
  320. package/dist/memory/vector-store.d.ts.map +1 -1
  321. package/dist/memory/vector-store.js +36 -34
  322. package/dist/memory/vector-store.js.map +1 -1
  323. package/dist/security/action-guard.d.ts.map +1 -1
  324. package/dist/security/action-guard.js +2 -0
  325. package/dist/security/action-guard.js.map +1 -1
  326. package/dist/security/input-sanitizer.d.ts +41 -0
  327. package/dist/security/input-sanitizer.d.ts.map +1 -0
  328. package/dist/security/input-sanitizer.js +138 -0
  329. package/dist/security/input-sanitizer.js.map +1 -0
  330. package/dist/vision/live-stream.d.ts +50 -0
  331. package/dist/vision/live-stream.d.ts.map +1 -0
  332. package/dist/vision/live-stream.js +129 -0
  333. package/dist/vision/live-stream.js.map +1 -0
  334. package/dist/vision/webcam.d.ts +43 -0
  335. package/dist/vision/webcam.d.ts.map +1 -0
  336. package/dist/vision/webcam.js +259 -0
  337. package/dist/vision/webcam.js.map +1 -0
  338. package/dist/wallet/explorer.d.ts.map +1 -1
  339. package/dist/wallet/explorer.js +9 -1
  340. package/dist/wallet/explorer.js.map +1 -1
  341. package/dist/wallet/solana.d.ts +48 -0
  342. package/dist/wallet/solana.d.ts.map +1 -0
  343. package/dist/wallet/solana.js +126 -0
  344. package/dist/wallet/solana.js.map +1 -0
  345. package/dist/wallet/x402.d.ts +11 -0
  346. package/dist/wallet/x402.d.ts.map +1 -1
  347. package/dist/wallet/x402.js +38 -1
  348. package/dist/wallet/x402.js.map +1 -1
  349. package/package.json +1 -1
  350. package/wispy/skills/shadcn-ui/SKILL.md +170 -170
  351. package/wispy/skills/tabler-icons/SKILL.md +141 -141
  352. package/wispy/memory/2026-01-29.md +0 -35
  353. package/wispy/memory/2026-01-30.md +0 -4
  354. package/wispy/memory/2026-02-03.md +0 -41
  355. package/wispy/memory/2026-02-04.md +0 -46
  356. package/wispy/memory/2026-02-05.md +0 -48
  357. 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
- # Twitter/X API (optional, for content publishing)
30
- TWITTER_API_KEY=
31
- TWITTER_API_SECRET=
32
- TWITTER_ACCESS_TOKEN=
33
- TWITTER_ACCESS_SECRET=
34
-
35
- # Dashboard
36
- DASHBOARD_PORT=3000
37
- GATEWAY_PORT=4000
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;IAOZ,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"}
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"}
@@ -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":"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"}
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;IAC5C,OAAO,CAAC,UAAU,CAAC,CAAsD;gBAGvE,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,aAAa,EAC7B,mBAAmB,CAAC,EAAE,mBAAmB,EACzC,WAAW,CAAC,EAAE,WAAW;IAU3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIrD;;OAEG;YACW,YAAY;IAU1B;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAI9C;;OAEG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIpD,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;YAgQpC,WAAW;IA0EzB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAyDlC,OAAO,CAAC,eAAe;YAoBT,gBAAgB;IA+C9B,OAAO,CAAC,iBAAiB;YA6BX,mBAAmB;IAiBjC,OAAO,CAAC,iBAAiB;YAUX,eAAe;YA0Cf,gBAAgB;YAkBhB,oBAAoB;YA4EpB,4BAA4B;YAsC5B,2BAA2B;IAkGzC,OAAO,CAAC,kBAAkB,CAAC,CAAsH;IAE1I,cAAc,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE;YAIhI,sBAAsB;YA+CtB,kBAAkB;IAchC,OAAO,CAAC,mBAAmB;IAsC3B,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,aAAa,CAAC,CAAwD;IAE9E;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI;IAIvF;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,eAAe,IAAI,MAAM;YAIX,iBAAiB;IAmE/B,OAAO,CAAC,mBAAmB;YAsBb,mBAAmB;YAyBnB,gBAAgB;YAwBhB,oBAAoB;YA6DpB,gBAAgB;YAoGhB,qBAAqB;YAmFrB,oBAAoB;IAiDlC,OAAO,CAAC,oBAAoB;YAad,mBAAmB;YA4BnB,iBAAiB;YA+BjB,eAAe;YAuBf,eAAe;YAgBf,qBAAqB;IAyInC;;OAEG;YACW,sBAAsB;YAwBtB,sBAAsB;YAmBtB,mBAAmB;YAmBnB,kBAAkB;YAoBlB,wBAAwB;YAcxB,sBAAsB;YAqBtB,oBAAoB;YAcpB,kBAAkB;YAkBlB,oBAAoB;YAkBpB,sBAAsB;YAqBtB,mBAAmB;YAgCnB,uBAAuB;YAsBvB,gBAAgB;YA6BhB,kBAAkB;YAyBlB,sBAAsB;YAwBtB,wBAAwB;YA4BxB,sBAAsB;YA6BtB,oBAAoB;YAoCpB,kBAAkB;YAsBlB,kBAAkB;YA6BlB,wBAAwB;YA4BxB,kBAAkB;YAyDlB,gBAAgB;YA+BhB,oBAAoB;IAuGlC,OAAO,CAAC,qBAAqB;IAyf7B,OAAO,CAAC,sBAAsB;YA+EhB,qBAAqB;YAiDrB,mBAAmB;YAiEnB,mBAAmB;YAsGnB,qBAAqB;YAsCrB,oBAAoB;YAuCpB,wBAAwB;YAsCxB,oBAAoB;YAsCpB,mBAAmB;YAuBnB,qBAAqB;YA0CrB,yBAAyB;YA6DzB,6BAA6B;YAyD7B,wBAAwB;YAuCxB,yBAAyB;YAmCzB,0BAA0B;YAqC1B,sBAAsB;YA8CtB,eAAe;YAiCf,iBAAiB;YAoCjB,sBAAsB;YAgDtB,2BAA2B;YA+D3B,wBAAwB;YAuDxB,wBAAwB;YA0DxB,sBAAsB;YA4CtB,wBAAwB;YAgDxB,kCAAkC;YAiElC,0BAA0B;YA0E1B,wBAAwB;YA8GxB,mBAAmB;YAmGnB,oBAAoB;YAiCpB,mBAAmB;YAqCnB,wBAAwB;YAkCxB,sBAAsB;YA2DtB,qBAAqB;YAoBrB,cAAc;YAwCd,gBAAgB;YAuChB,cAAc;YAgEd,gBAAgB;YAgChB,mBAAmB;YAuDnB,iBAAiB;YAoCjB,iBAAiB;YAmCjB,aAAa;YAmDb,gBAAgB;YAwEhB,gBAAgB;YA4DhB,mBAAmB;CA8ClC"}
@@ -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
- // Use workspace directory as cwd for relative commands
367
- const { join } = await import("path");
368
- const workspaceDir = join(this.runtimeDir, "workspace");
369
- ensureDir(workspaceDir);
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: workspaceDir, // Run commands in workspace
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 using a relative path (e.g., "calculator/index.html") and I'll create it in my workspace: ${workspaceDir}`,
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
- if (!this.currentChatContext?.sendImage) {
828
- return {
829
- success: false,
830
- output: "",
831
- error: "No chat context available. This tool only works when responding to a message in Telegram/WhatsApp.",
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 this.currentChatContext.sendImage(imagePath, caption);
836
- return {
837
- success: true,
838
- output: `Image sent to ${this.currentChatContext.channel}:${this.currentChatContext.peerId}\nPath: ${imagePath}${caption ? `\nCaption: ${caption}` : ""}`,
839
- };
840
- }
841
- catch (err) {
842
- return { success: false, output: "", error: `Failed to send image: ${err.message}` };
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\nTry using a relative path (e.g., "my-project") and I'll create it in my workspace: ${workspaceDir}`,
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. In sandboxed mode, use workspace directory for full access: ${resolve(this.runtimeDir, "workspace")}`,
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) {