wispy-ai 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. package/.env.example +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +232 -0
  4. package/bin/wispy.js +3 -0
  5. package/dist/a2a/delegation.d.ts +19 -0
  6. package/dist/a2a/delegation.d.ts.map +1 -0
  7. package/dist/a2a/delegation.js +156 -0
  8. package/dist/a2a/delegation.js.map +1 -0
  9. package/dist/a2a/peer.d.ts +19 -0
  10. package/dist/a2a/peer.d.ts.map +1 -0
  11. package/dist/a2a/peer.js +27 -0
  12. package/dist/a2a/peer.js.map +1 -0
  13. package/dist/a2a/protocol.d.ts +36 -0
  14. package/dist/a2a/protocol.d.ts.map +1 -0
  15. package/dist/a2a/protocol.js +23 -0
  16. package/dist/a2a/protocol.js.map +1 -0
  17. package/dist/agents/collaboration.d.ts +59 -0
  18. package/dist/agents/collaboration.d.ts.map +1 -0
  19. package/dist/agents/collaboration.js +110 -0
  20. package/dist/agents/collaboration.js.map +1 -0
  21. package/dist/agents/orchestrator.d.ts +59 -0
  22. package/dist/agents/orchestrator.d.ts.map +1 -0
  23. package/dist/agents/orchestrator.js +171 -0
  24. package/dist/agents/orchestrator.js.map +1 -0
  25. package/dist/agents/tool-executor.d.ts +36 -0
  26. package/dist/agents/tool-executor.d.ts.map +1 -0
  27. package/dist/agents/tool-executor.js +363 -0
  28. package/dist/agents/tool-executor.js.map +1 -0
  29. package/dist/agents/types/coder.d.ts +10 -0
  30. package/dist/agents/types/coder.d.ts.map +1 -0
  31. package/dist/agents/types/coder.js +43 -0
  32. package/dist/agents/types/coder.js.map +1 -0
  33. package/dist/agents/types/data.d.ts +7 -0
  34. package/dist/agents/types/data.d.ts.map +1 -0
  35. package/dist/agents/types/data.js +30 -0
  36. package/dist/agents/types/data.js.map +1 -0
  37. package/dist/agents/types/designer.d.ts +7 -0
  38. package/dist/agents/types/designer.d.ts.map +1 -0
  39. package/dist/agents/types/designer.js +30 -0
  40. package/dist/agents/types/designer.js.map +1 -0
  41. package/dist/agents/types/devops.d.ts +7 -0
  42. package/dist/agents/types/devops.d.ts.map +1 -0
  43. package/dist/agents/types/devops.js +30 -0
  44. package/dist/agents/types/devops.js.map +1 -0
  45. package/dist/agents/types/planner.d.ts +7 -0
  46. package/dist/agents/types/planner.d.ts.map +1 -0
  47. package/dist/agents/types/planner.js +35 -0
  48. package/dist/agents/types/planner.js.map +1 -0
  49. package/dist/agents/types/researcher.d.ts +10 -0
  50. package/dist/agents/types/researcher.d.ts.map +1 -0
  51. package/dist/agents/types/researcher.js +33 -0
  52. package/dist/agents/types/researcher.js.map +1 -0
  53. package/dist/agents/types/security.d.ts +7 -0
  54. package/dist/agents/types/security.d.ts.map +1 -0
  55. package/dist/agents/types/security.js +30 -0
  56. package/dist/agents/types/security.js.map +1 -0
  57. package/dist/agents/types/writer.d.ts +7 -0
  58. package/dist/agents/types/writer.d.ts.map +1 -0
  59. package/dist/agents/types/writer.js +30 -0
  60. package/dist/agents/types/writer.js.map +1 -0
  61. package/dist/agents/workspace.d.ts +61 -0
  62. package/dist/agents/workspace.d.ts.map +1 -0
  63. package/dist/agents/workspace.js +115 -0
  64. package/dist/agents/workspace.js.map +1 -0
  65. package/dist/ai/embeddings.d.ts +4 -0
  66. package/dist/ai/embeddings.d.ts.map +1 -0
  67. package/dist/ai/embeddings.js +20 -0
  68. package/dist/ai/embeddings.js.map +1 -0
  69. package/dist/ai/gemini.d.ts +31 -0
  70. package/dist/ai/gemini.d.ts.map +1 -0
  71. package/dist/ai/gemini.js +121 -0
  72. package/dist/ai/gemini.js.map +1 -0
  73. package/dist/ai/model-registry.d.ts +73 -0
  74. package/dist/ai/model-registry.d.ts.map +1 -0
  75. package/dist/ai/model-registry.js +86 -0
  76. package/dist/ai/model-registry.js.map +1 -0
  77. package/dist/ai/prompts.d.ts +3 -0
  78. package/dist/ai/prompts.d.ts.map +1 -0
  79. package/dist/ai/prompts.js +42 -0
  80. package/dist/ai/prompts.js.map +1 -0
  81. package/dist/ai/providers/ollama.d.ts +22 -0
  82. package/dist/ai/providers/ollama.d.ts.map +1 -0
  83. package/dist/ai/providers/ollama.js +144 -0
  84. package/dist/ai/providers/ollama.js.map +1 -0
  85. package/dist/ai/providers/openai-compat.d.ts +25 -0
  86. package/dist/ai/providers/openai-compat.d.ts.map +1 -0
  87. package/dist/ai/providers/openai-compat.js +141 -0
  88. package/dist/ai/providers/openai-compat.js.map +1 -0
  89. package/dist/ai/router.d.ts +10 -0
  90. package/dist/ai/router.d.ts.map +1 -0
  91. package/dist/ai/router.js +23 -0
  92. package/dist/ai/router.js.map +1 -0
  93. package/dist/ai/tools.d.ts +15 -0
  94. package/dist/ai/tools.d.ts.map +1 -0
  95. package/dist/ai/tools.js +134 -0
  96. package/dist/ai/tools.js.map +1 -0
  97. package/dist/autostart/service.d.ts +24 -0
  98. package/dist/autostart/service.d.ts.map +1 -0
  99. package/dist/autostart/service.js +202 -0
  100. package/dist/autostart/service.js.map +1 -0
  101. package/dist/channels/dock.d.ts +22 -0
  102. package/dist/channels/dock.d.ts.map +1 -0
  103. package/dist/channels/dock.js +21 -0
  104. package/dist/channels/dock.js.map +1 -0
  105. package/dist/channels/rest/adapter.d.ts +4 -0
  106. package/dist/channels/rest/adapter.d.ts.map +1 -0
  107. package/dist/channels/rest/adapter.js +86 -0
  108. package/dist/channels/rest/adapter.js.map +1 -0
  109. package/dist/channels/telegram/adapter.d.ts +3 -0
  110. package/dist/channels/telegram/adapter.d.ts.map +1 -0
  111. package/dist/channels/telegram/adapter.js +56 -0
  112. package/dist/channels/telegram/adapter.js.map +1 -0
  113. package/dist/cli/commands.d.ts +17 -0
  114. package/dist/cli/commands.d.ts.map +1 -0
  115. package/dist/cli/commands.js +258 -0
  116. package/dist/cli/commands.js.map +1 -0
  117. package/dist/cli/doctor.d.ts +8 -0
  118. package/dist/cli/doctor.d.ts.map +1 -0
  119. package/dist/cli/doctor.js +34 -0
  120. package/dist/cli/doctor.js.map +1 -0
  121. package/dist/cli/history.d.ts +9 -0
  122. package/dist/cli/history.d.ts.map +1 -0
  123. package/dist/cli/history.js +32 -0
  124. package/dist/cli/history.js.map +1 -0
  125. package/dist/cli/postinstall.d.ts +5 -0
  126. package/dist/cli/postinstall.d.ts.map +1 -0
  127. package/dist/cli/postinstall.js +20 -0
  128. package/dist/cli/postinstall.js.map +1 -0
  129. package/dist/cli/program.d.ts +3 -0
  130. package/dist/cli/program.d.ts.map +1 -0
  131. package/dist/cli/program.js +537 -0
  132. package/dist/cli/program.js.map +1 -0
  133. package/dist/cli/repl.d.ts +7 -0
  134. package/dist/cli/repl.d.ts.map +1 -0
  135. package/dist/cli/repl.js +132 -0
  136. package/dist/cli/repl.js.map +1 -0
  137. package/dist/cli/setup/wizard.d.ts +17 -0
  138. package/dist/cli/setup/wizard.d.ts.map +1 -0
  139. package/dist/cli/setup/wizard.js +157 -0
  140. package/dist/cli/setup/wizard.js.map +1 -0
  141. package/dist/cli/ui/banner.d.ts +2 -0
  142. package/dist/cli/ui/banner.d.ts.map +1 -0
  143. package/dist/cli/ui/banner.js +9 -0
  144. package/dist/cli/ui/banner.js.map +1 -0
  145. package/dist/cli/ui/renderer.d.ts +6 -0
  146. package/dist/cli/ui/renderer.d.ts.map +1 -0
  147. package/dist/cli/ui/renderer.js +55 -0
  148. package/dist/cli/ui/renderer.js.map +1 -0
  149. package/dist/cli/ui/spinner.d.ts +7 -0
  150. package/dist/cli/ui/spinner.d.ts.map +1 -0
  151. package/dist/cli/ui/spinner.js +31 -0
  152. package/dist/cli/ui/spinner.js.map +1 -0
  153. package/dist/cli/ui/theme.d.ts +21 -0
  154. package/dist/cli/ui/theme.d.ts.map +1 -0
  155. package/dist/cli/ui/theme.js +28 -0
  156. package/dist/cli/ui/theme.js.map +1 -0
  157. package/dist/cli/ui/tool-display.d.ts +9 -0
  158. package/dist/cli/ui/tool-display.d.ts.map +1 -0
  159. package/dist/cli/ui/tool-display.js +19 -0
  160. package/dist/cli/ui/tool-display.js.map +1 -0
  161. package/dist/cli/voice/stt.d.ts +37 -0
  162. package/dist/cli/voice/stt.d.ts.map +1 -0
  163. package/dist/cli/voice/stt.js +115 -0
  164. package/dist/cli/voice/stt.js.map +1 -0
  165. package/dist/cli/voice/tts.d.ts +35 -0
  166. package/dist/cli/voice/tts.d.ts.map +1 -0
  167. package/dist/cli/voice/tts.js +142 -0
  168. package/dist/cli/voice/tts.js.map +1 -0
  169. package/dist/cli/voice/voice-mode.d.ts +35 -0
  170. package/dist/cli/voice/voice-mode.d.ts.map +1 -0
  171. package/dist/cli/voice/voice-mode.js +89 -0
  172. package/dist/cli/voice/voice-mode.js.map +1 -0
  173. package/dist/config/config.d.ts +5 -0
  174. package/dist/config/config.d.ts.map +1 -0
  175. package/dist/config/config.js +68 -0
  176. package/dist/config/config.js.map +1 -0
  177. package/dist/config/hot-reload.d.ts +3 -0
  178. package/dist/config/hot-reload.d.ts.map +1 -0
  179. package/dist/config/hot-reload.js +21 -0
  180. package/dist/config/hot-reload.js.map +1 -0
  181. package/dist/config/schema.d.ts +48 -0
  182. package/dist/config/schema.d.ts.map +1 -0
  183. package/dist/config/schema.js +105 -0
  184. package/dist/config/schema.js.map +1 -0
  185. package/dist/content/pipeline.d.ts +12 -0
  186. package/dist/content/pipeline.d.ts.map +1 -0
  187. package/dist/content/pipeline.js +55 -0
  188. package/dist/content/pipeline.js.map +1 -0
  189. package/dist/content/publisher.d.ts +26 -0
  190. package/dist/content/publisher.d.ts.map +1 -0
  191. package/dist/content/publisher.js +101 -0
  192. package/dist/content/publisher.js.map +1 -0
  193. package/dist/core/agent.d.ts +37 -0
  194. package/dist/core/agent.d.ts.map +1 -0
  195. package/dist/core/agent.js +170 -0
  196. package/dist/core/agent.js.map +1 -0
  197. package/dist/core/heartbeat.d.ts +15 -0
  198. package/dist/core/heartbeat.d.ts.map +1 -0
  199. package/dist/core/heartbeat.js +70 -0
  200. package/dist/core/heartbeat.js.map +1 -0
  201. package/dist/core/identity.d.ts +13 -0
  202. package/dist/core/identity.d.ts.map +1 -0
  203. package/dist/core/identity.js +16 -0
  204. package/dist/core/identity.js.map +1 -0
  205. package/dist/core/memory.d.ts +11 -0
  206. package/dist/core/memory.d.ts.map +1 -0
  207. package/dist/core/memory.js +58 -0
  208. package/dist/core/memory.js.map +1 -0
  209. package/dist/core/session.d.ts +29 -0
  210. package/dist/core/session.d.ts.map +1 -0
  211. package/dist/core/session.js +59 -0
  212. package/dist/core/session.js.map +1 -0
  213. package/dist/core/thinking.d.ts +3 -0
  214. package/dist/core/thinking.d.ts.map +1 -0
  215. package/dist/core/thinking.js +27 -0
  216. package/dist/core/thinking.js.map +1 -0
  217. package/dist/cron/service.d.ts +24 -0
  218. package/dist/cron/service.d.ts.map +1 -0
  219. package/dist/cron/service.js +74 -0
  220. package/dist/cron/service.js.map +1 -0
  221. package/dist/entry.d.ts +2 -0
  222. package/dist/entry.d.ts.map +1 -0
  223. package/dist/entry.js +26 -0
  224. package/dist/entry.js.map +1 -0
  225. package/dist/gateway/boot.d.ts +9 -0
  226. package/dist/gateway/boot.d.ts.map +1 -0
  227. package/dist/gateway/boot.js +64 -0
  228. package/dist/gateway/boot.js.map +1 -0
  229. package/dist/gateway/client.d.ts +19 -0
  230. package/dist/gateway/client.d.ts.map +1 -0
  231. package/dist/gateway/client.js +64 -0
  232. package/dist/gateway/client.js.map +1 -0
  233. package/dist/gateway/protocol/index.d.ts +41 -0
  234. package/dist/gateway/protocol/index.d.ts.map +1 -0
  235. package/dist/gateway/protocol/index.js +30 -0
  236. package/dist/gateway/protocol/index.js.map +1 -0
  237. package/dist/gateway/server.d.ts +9 -0
  238. package/dist/gateway/server.d.ts.map +1 -0
  239. package/dist/gateway/server.js +147 -0
  240. package/dist/gateway/server.js.map +1 -0
  241. package/dist/index.d.ts +10 -0
  242. package/dist/index.d.ts.map +1 -0
  243. package/dist/index.js +10 -0
  244. package/dist/index.js.map +1 -0
  245. package/dist/infra/dotenv.d.ts +2 -0
  246. package/dist/infra/dotenv.d.ts.map +1 -0
  247. package/dist/infra/dotenv.js +7 -0
  248. package/dist/infra/dotenv.js.map +1 -0
  249. package/dist/infra/logger.d.ts +4 -0
  250. package/dist/infra/logger.d.ts.map +1 -0
  251. package/dist/infra/logger.js +12 -0
  252. package/dist/infra/logger.js.map +1 -0
  253. package/dist/infra/ports.d.ts +2 -0
  254. package/dist/infra/ports.d.ts.map +1 -0
  255. package/dist/infra/ports.js +12 -0
  256. package/dist/infra/ports.js.map +1 -0
  257. package/dist/integrations/ai-models/anthropic.d.ts +15 -0
  258. package/dist/integrations/ai-models/anthropic.d.ts.map +1 -0
  259. package/dist/integrations/ai-models/anthropic.js +91 -0
  260. package/dist/integrations/ai-models/anthropic.js.map +1 -0
  261. package/dist/integrations/ai-models/ollama.d.ts +17 -0
  262. package/dist/integrations/ai-models/ollama.d.ts.map +1 -0
  263. package/dist/integrations/ai-models/ollama.js +113 -0
  264. package/dist/integrations/ai-models/ollama.js.map +1 -0
  265. package/dist/integrations/ai-models/openai.d.ts +19 -0
  266. package/dist/integrations/ai-models/openai.d.ts.map +1 -0
  267. package/dist/integrations/ai-models/openai.js +136 -0
  268. package/dist/integrations/ai-models/openai.js.map +1 -0
  269. package/dist/integrations/base.d.ts +102 -0
  270. package/dist/integrations/base.d.ts.map +1 -0
  271. package/dist/integrations/base.js +44 -0
  272. package/dist/integrations/base.js.map +1 -0
  273. package/dist/integrations/categories.d.ts +13 -0
  274. package/dist/integrations/categories.d.ts.map +1 -0
  275. package/dist/integrations/categories.js +69 -0
  276. package/dist/integrations/categories.js.map +1 -0
  277. package/dist/integrations/chat/discord.d.ts +19 -0
  278. package/dist/integrations/chat/discord.d.ts.map +1 -0
  279. package/dist/integrations/chat/discord.js +122 -0
  280. package/dist/integrations/chat/discord.js.map +1 -0
  281. package/dist/integrations/chat/slack.d.ts +19 -0
  282. package/dist/integrations/chat/slack.d.ts.map +1 -0
  283. package/dist/integrations/chat/slack.js +113 -0
  284. package/dist/integrations/chat/slack.js.map +1 -0
  285. package/dist/integrations/chat/whatsapp.d.ts +18 -0
  286. package/dist/integrations/chat/whatsapp.d.ts.map +1 -0
  287. package/dist/integrations/chat/whatsapp.js +115 -0
  288. package/dist/integrations/chat/whatsapp.js.map +1 -0
  289. package/dist/integrations/credential-manager.d.ts +68 -0
  290. package/dist/integrations/credential-manager.d.ts.map +1 -0
  291. package/dist/integrations/credential-manager.js +156 -0
  292. package/dist/integrations/credential-manager.js.map +1 -0
  293. package/dist/integrations/google/calendar.d.ts +17 -0
  294. package/dist/integrations/google/calendar.d.ts.map +1 -0
  295. package/dist/integrations/google/calendar.js +126 -0
  296. package/dist/integrations/google/calendar.js.map +1 -0
  297. package/dist/integrations/google/docs.d.ts +19 -0
  298. package/dist/integrations/google/docs.d.ts.map +1 -0
  299. package/dist/integrations/google/docs.js +153 -0
  300. package/dist/integrations/google/docs.js.map +1 -0
  301. package/dist/integrations/google/drive.d.ts +17 -0
  302. package/dist/integrations/google/drive.d.ts.map +1 -0
  303. package/dist/integrations/google/drive.js +130 -0
  304. package/dist/integrations/google/drive.js.map +1 -0
  305. package/dist/integrations/google/gmail.d.ts +19 -0
  306. package/dist/integrations/google/gmail.d.ts.map +1 -0
  307. package/dist/integrations/google/gmail.js +124 -0
  308. package/dist/integrations/google/gmail.js.map +1 -0
  309. package/dist/integrations/google/maps.d.ts +20 -0
  310. package/dist/integrations/google/maps.d.ts.map +1 -0
  311. package/dist/integrations/google/maps.js +115 -0
  312. package/dist/integrations/google/maps.js.map +1 -0
  313. package/dist/integrations/google/meet.d.ts +16 -0
  314. package/dist/integrations/google/meet.d.ts.map +1 -0
  315. package/dist/integrations/google/meet.js +104 -0
  316. package/dist/integrations/google/meet.js.map +1 -0
  317. package/dist/integrations/google/oauth.d.ts +39 -0
  318. package/dist/integrations/google/oauth.d.ts.map +1 -0
  319. package/dist/integrations/google/oauth.js +134 -0
  320. package/dist/integrations/google/oauth.js.map +1 -0
  321. package/dist/integrations/google/search.d.ts +15 -0
  322. package/dist/integrations/google/search.d.ts.map +1 -0
  323. package/dist/integrations/google/search.js +66 -0
  324. package/dist/integrations/google/search.js.map +1 -0
  325. package/dist/integrations/google/sheets.d.ts +17 -0
  326. package/dist/integrations/google/sheets.d.ts.map +1 -0
  327. package/dist/integrations/google/sheets.js +118 -0
  328. package/dist/integrations/google/sheets.js.map +1 -0
  329. package/dist/integrations/google/youtube.d.ts +19 -0
  330. package/dist/integrations/google/youtube.d.ts.map +1 -0
  331. package/dist/integrations/google/youtube.js +128 -0
  332. package/dist/integrations/google/youtube.js.map +1 -0
  333. package/dist/integrations/loader.d.ts +15 -0
  334. package/dist/integrations/loader.d.ts.map +1 -0
  335. package/dist/integrations/loader.js +97 -0
  336. package/dist/integrations/loader.js.map +1 -0
  337. package/dist/integrations/music/spotify.d.ts +21 -0
  338. package/dist/integrations/music/spotify.d.ts.map +1 -0
  339. package/dist/integrations/music/spotify.js +161 -0
  340. package/dist/integrations/music/spotify.js.map +1 -0
  341. package/dist/integrations/productivity/github.d.ts +20 -0
  342. package/dist/integrations/productivity/github.d.ts.map +1 -0
  343. package/dist/integrations/productivity/github.js +146 -0
  344. package/dist/integrations/productivity/github.js.map +1 -0
  345. package/dist/integrations/productivity/linear.d.ts +19 -0
  346. package/dist/integrations/productivity/linear.d.ts.map +1 -0
  347. package/dist/integrations/productivity/linear.js +152 -0
  348. package/dist/integrations/productivity/linear.js.map +1 -0
  349. package/dist/integrations/productivity/notion.d.ts +20 -0
  350. package/dist/integrations/productivity/notion.d.ts.map +1 -0
  351. package/dist/integrations/productivity/notion.js +186 -0
  352. package/dist/integrations/productivity/notion.js.map +1 -0
  353. package/dist/integrations/productivity/obsidian.d.ts +21 -0
  354. package/dist/integrations/productivity/obsidian.d.ts.map +1 -0
  355. package/dist/integrations/productivity/obsidian.js +141 -0
  356. package/dist/integrations/productivity/obsidian.js.map +1 -0
  357. package/dist/integrations/registry.d.ts +78 -0
  358. package/dist/integrations/registry.d.ts.map +1 -0
  359. package/dist/integrations/registry.js +193 -0
  360. package/dist/integrations/registry.js.map +1 -0
  361. package/dist/integrations/smart-home/homeassistant.d.ts +21 -0
  362. package/dist/integrations/smart-home/homeassistant.d.ts.map +1 -0
  363. package/dist/integrations/smart-home/homeassistant.js +129 -0
  364. package/dist/integrations/smart-home/homeassistant.js.map +1 -0
  365. package/dist/integrations/smart-home/hue.d.ts +23 -0
  366. package/dist/integrations/smart-home/hue.d.ts.map +1 -0
  367. package/dist/integrations/smart-home/hue.js +144 -0
  368. package/dist/integrations/smart-home/hue.js.map +1 -0
  369. package/dist/integrations/social/email-smtp.d.ts +23 -0
  370. package/dist/integrations/social/email-smtp.d.ts.map +1 -0
  371. package/dist/integrations/social/email-smtp.js +168 -0
  372. package/dist/integrations/social/email-smtp.js.map +1 -0
  373. package/dist/integrations/social/twitter.d.ts +28 -0
  374. package/dist/integrations/social/twitter.d.ts.map +1 -0
  375. package/dist/integrations/social/twitter.js +168 -0
  376. package/dist/integrations/social/twitter.js.map +1 -0
  377. package/dist/integrations/tools/browser.d.ts +18 -0
  378. package/dist/integrations/tools/browser.d.ts.map +1 -0
  379. package/dist/integrations/tools/browser.js +131 -0
  380. package/dist/integrations/tools/browser.js.map +1 -0
  381. package/dist/integrations/tools/weather.d.ts +17 -0
  382. package/dist/integrations/tools/weather.d.ts.map +1 -0
  383. package/dist/integrations/tools/weather.js +113 -0
  384. package/dist/integrations/tools/weather.js.map +1 -0
  385. package/dist/integrations/tools/webhooks.d.ts +15 -0
  386. package/dist/integrations/tools/webhooks.d.ts.map +1 -0
  387. package/dist/integrations/tools/webhooks.js +89 -0
  388. package/dist/integrations/tools/webhooks.js.map +1 -0
  389. package/dist/mcp/client.d.ts +42 -0
  390. package/dist/mcp/client.d.ts.map +1 -0
  391. package/dist/mcp/client.js +164 -0
  392. package/dist/mcp/client.js.map +1 -0
  393. package/dist/mcp/server.d.ts +2 -0
  394. package/dist/mcp/server.d.ts.map +1 -0
  395. package/dist/mcp/server.js +114 -0
  396. package/dist/mcp/server.js.map +1 -0
  397. package/dist/mcp/tools-adapter.d.ts +14 -0
  398. package/dist/mcp/tools-adapter.d.ts.map +1 -0
  399. package/dist/mcp/tools-adapter.js +133 -0
  400. package/dist/mcp/tools-adapter.js.map +1 -0
  401. package/dist/memory/manager.d.ts +14 -0
  402. package/dist/memory/manager.d.ts.map +1 -0
  403. package/dist/memory/manager.js +49 -0
  404. package/dist/memory/manager.js.map +1 -0
  405. package/dist/memory/vector-store.d.ts +17 -0
  406. package/dist/memory/vector-store.d.ts.map +1 -0
  407. package/dist/memory/vector-store.js +65 -0
  408. package/dist/memory/vector-store.js.map +1 -0
  409. package/dist/security/action-guard.d.ts +12 -0
  410. package/dist/security/action-guard.d.ts.map +1 -0
  411. package/dist/security/action-guard.js +37 -0
  412. package/dist/security/action-guard.js.map +1 -0
  413. package/dist/security/api-key-guard.d.ts +3 -0
  414. package/dist/security/api-key-guard.d.ts.map +1 -0
  415. package/dist/security/api-key-guard.js +36 -0
  416. package/dist/security/api-key-guard.js.map +1 -0
  417. package/dist/security/auth.d.ts +17 -0
  418. package/dist/security/auth.d.ts.map +1 -0
  419. package/dist/security/auth.js +31 -0
  420. package/dist/security/auth.js.map +1 -0
  421. package/dist/security/device-identity.d.ts +11 -0
  422. package/dist/security/device-identity.d.ts.map +1 -0
  423. package/dist/security/device-identity.js +64 -0
  424. package/dist/security/device-identity.js.map +1 -0
  425. package/dist/security/encryption.d.ts +5 -0
  426. package/dist/security/encryption.d.ts.map +1 -0
  427. package/dist/security/encryption.js +13 -0
  428. package/dist/security/encryption.js.map +1 -0
  429. package/dist/security/isolation.d.ts +11 -0
  430. package/dist/security/isolation.d.ts.map +1 -0
  431. package/dist/security/isolation.js +37 -0
  432. package/dist/security/isolation.js.map +1 -0
  433. package/dist/skills/loader.d.ts +17 -0
  434. package/dist/skills/loader.d.ts.map +1 -0
  435. package/dist/skills/loader.js +68 -0
  436. package/dist/skills/loader.js.map +1 -0
  437. package/dist/token/estimator.d.ts +72 -0
  438. package/dist/token/estimator.d.ts.map +1 -0
  439. package/dist/token/estimator.js +165 -0
  440. package/dist/token/estimator.js.map +1 -0
  441. package/dist/utils/crypto.d.ts +4 -0
  442. package/dist/utils/crypto.d.ts.map +1 -0
  443. package/dist/utils/crypto.js +28 -0
  444. package/dist/utils/crypto.js.map +1 -0
  445. package/dist/utils/file.d.ts +14 -0
  446. package/dist/utils/file.d.ts.map +1 -0
  447. package/dist/utils/file.js +54 -0
  448. package/dist/utils/file.js.map +1 -0
  449. package/dist/utils/media.d.ts +6 -0
  450. package/dist/utils/media.d.ts.map +1 -0
  451. package/dist/utils/media.js +65 -0
  452. package/dist/utils/media.js.map +1 -0
  453. package/dist/wallet/x402.d.ts +22 -0
  454. package/dist/wallet/x402.d.ts.map +1 -0
  455. package/dist/wallet/x402.js +63 -0
  456. package/dist/wallet/x402.js.map +1 -0
  457. package/package.json +79 -0
  458. package/wispy/AGENTS.md +46 -0
  459. package/wispy/BOOT.md +28 -0
  460. package/wispy/CONTEXT.md +13 -0
  461. package/wispy/HEARTBEAT.md +17 -0
  462. package/wispy/IDENTITY.md +26 -0
  463. package/wispy/MEMORY.md +16 -0
  464. package/wispy/SOUL.md +35 -0
  465. package/wispy/TOOLS.md +45 -0
  466. package/wispy/USER.md +16 -0
  467. package/wispy/skills/a2a-delegate/SKILL.md +14 -0
  468. package/wispy/skills/content-creator/SKILL.md +14 -0
  469. package/wispy/skills/image-gen/SKILL.md +14 -0
  470. package/wispy/skills/wallet-ops/SKILL.md +14 -0
  471. package/wispy/skills/x-poster/SKILL.md +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maps.js","sourceRoot":"","sources":["../../../src/integrations/google/maps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Google Meet Integration
3
+ *
4
+ * Provides tools for creating and listing Google Meet meetings.
5
+ * Uses the Calendar API to create events with conference (Meet) data.
6
+ *
7
+ * @see https://developers.google.com/calendar/api/guides/create-events#conferencing
8
+ */
9
+ import { Integration, type IntegrationManifest, type ToolResult } from "../base.js";
10
+ export default class GoogleMeetIntegration extends Integration {
11
+ readonly manifest: IntegrationManifest;
12
+ executeTool(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
13
+ private create;
14
+ private list;
15
+ }
16
+ //# sourceMappingURL=meet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meet.d.ts","sourceRoot":"","sources":["../../../src/integrations/google/meet.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAIpF,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,WAAW;IAC5D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CA4CpC;IAEI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAWzE,MAAM;YAmCN,IAAI;CAsBnB"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Google Meet Integration
3
+ *
4
+ * Provides tools for creating and listing Google Meet meetings.
5
+ * Uses the Calendar API to create events with conference (Meet) data.
6
+ *
7
+ * @see https://developers.google.com/calendar/api/guides/create-events#conferencing
8
+ */
9
+ import { Integration } from "../base.js";
10
+ const BASE = "https://www.googleapis.com/calendar/v3";
11
+ export default class GoogleMeetIntegration extends Integration {
12
+ manifest = {
13
+ id: "google-meet",
14
+ name: "Google Meet",
15
+ category: "google",
16
+ version: "1.0.0",
17
+ description: "Create and list Google Meet video conferences via Calendar events.",
18
+ auth: {
19
+ type: "oauth2",
20
+ scopes: [
21
+ "https://www.googleapis.com/auth/calendar.events",
22
+ ],
23
+ },
24
+ tools: [
25
+ {
26
+ name: "google_meet_create",
27
+ description: "Create a Google Meet meeting (calendar event with video conference).",
28
+ parameters: {
29
+ type: "object",
30
+ properties: {
31
+ summary: { type: "string", description: "Meeting title." },
32
+ startTime: { type: "string", description: "Start datetime (RFC3339)." },
33
+ endTime: { type: "string", description: "End datetime (RFC3339)." },
34
+ attendees: {
35
+ type: "array",
36
+ items: { type: "string", description: "" },
37
+ description: "List of attendee email addresses.",
38
+ },
39
+ },
40
+ required: ["summary", "startTime", "endTime"],
41
+ },
42
+ },
43
+ {
44
+ name: "google_meet_list",
45
+ description: "List upcoming meetings that have Google Meet links.",
46
+ parameters: {
47
+ type: "object",
48
+ properties: {
49
+ timeMin: { type: "string", description: "Lower bound (RFC3339). Defaults to now." },
50
+ maxResults: { type: "number", description: "Max results (default: 10)." },
51
+ },
52
+ required: [],
53
+ },
54
+ },
55
+ ],
56
+ };
57
+ async executeTool(toolName, args) {
58
+ switch (toolName) {
59
+ case "google_meet_create":
60
+ return this.create(args);
61
+ case "google_meet_list":
62
+ return this.list(args);
63
+ default:
64
+ return this.error(`Unknown tool: ${toolName}`);
65
+ }
66
+ }
67
+ async create(args) {
68
+ const { googleApiFetch } = await import("./oauth.js");
69
+ const body = {
70
+ summary: args.summary,
71
+ start: { dateTime: args.startTime },
72
+ end: { dateTime: args.endTime },
73
+ conferenceData: {
74
+ createRequest: {
75
+ requestId: `wispy-meet-${Date.now()}`,
76
+ conferenceSolutionKey: { type: "hangoutsMeet" },
77
+ },
78
+ },
79
+ };
80
+ if (Array.isArray(args.attendees)) {
81
+ body.attendees = args.attendees.map((email) => ({ email }));
82
+ }
83
+ const params = new URLSearchParams({ conferenceDataVersion: "1" });
84
+ const res = await googleApiFetch(this.ctx, this.manifest.id, `${BASE}/calendars/primary/events?${params}`, { method: "POST", body: JSON.stringify(body) });
85
+ const data = await res.json();
86
+ const meetLink = data.conferenceData?.entryPoints?.find((ep) => ep.entryPointType === "video")?.uri;
87
+ return this.ok(JSON.stringify({ ...data, meetLink: meetLink ?? null }, null, 2));
88
+ }
89
+ async list(args) {
90
+ const { googleApiFetch } = await import("./oauth.js");
91
+ const params = new URLSearchParams({
92
+ maxResults: String(args.maxResults ?? 10),
93
+ singleEvents: "true",
94
+ orderBy: "startTime",
95
+ timeMin: args.timeMin || new Date().toISOString(),
96
+ });
97
+ const res = await googleApiFetch(this.ctx, this.manifest.id, `${BASE}/calendars/primary/events?${params}`);
98
+ const data = await res.json();
99
+ // Filter to only events that have a Meet link
100
+ const items = (data.items ?? []).filter((evt) => evt.conferenceData);
101
+ return this.ok(JSON.stringify({ ...data, items }, null, 2));
102
+ }
103
+ }
104
+ //# sourceMappingURL=meet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meet.js","sourceRoot":"","sources":["../../../src/integrations/google/meet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared Google OAuth2 helper.
3
+ *
4
+ * All Google integrations use this module for authentication.
5
+ * Supports the OAuth2 authorization code flow with automatic token refresh.
6
+ */
7
+ import type { IntegrationContext } from "../base.js";
8
+ import type { OAuthTokens } from "../credential-manager.js";
9
+ interface GoogleOAuthConfig {
10
+ clientId: string;
11
+ clientSecret: string;
12
+ redirectUri: string;
13
+ }
14
+ /**
15
+ * Get Google OAuth config from environment.
16
+ */
17
+ export declare function getGoogleOAuthConfig(): GoogleOAuthConfig | null;
18
+ /**
19
+ * Generate an OAuth2 authorization URL for the given scopes.
20
+ */
21
+ export declare function generateAuthUrl(scopes: string[], state: string): string | null;
22
+ /**
23
+ * Exchange an authorization code for tokens.
24
+ */
25
+ export declare function exchangeCode(code: string): Promise<OAuthTokens | null>;
26
+ /**
27
+ * Refresh an access token using a refresh token.
28
+ */
29
+ export declare function refreshAccessToken(refreshToken: string): Promise<OAuthTokens | null>;
30
+ /**
31
+ * Get a valid access token, refreshing if needed.
32
+ */
33
+ export declare function getAccessToken(ctx: IntegrationContext, integrationId: string): Promise<string | null>;
34
+ /**
35
+ * Make an authenticated Google API request.
36
+ */
37
+ export declare function googleApiFetch(ctx: IntegrationContext, integrationId: string, url: string, options?: RequestInit): Promise<Response>;
38
+ export {};
39
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/integrations/google/oauth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQ5D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAW/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe9E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA4B5E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA4B7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,kBAAkB,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,kBAAkB,EACvB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,CAAC,CAUnB"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Shared Google OAuth2 helper.
3
+ *
4
+ * All Google integrations use this module for authentication.
5
+ * Supports the OAuth2 authorization code flow with automatic token refresh.
6
+ */
7
+ import { createLogger } from "../../infra/logger.js";
8
+ const log = createLogger("google-oauth");
9
+ const GOOGLE_AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
10
+ const GOOGLE_TOKEN_URL = "https://oauth2.googleapis.com/token";
11
+ /**
12
+ * Get Google OAuth config from environment.
13
+ */
14
+ export function getGoogleOAuthConfig() {
15
+ const clientId = process.env.GOOGLE_CLIENT_ID;
16
+ const clientSecret = process.env.GOOGLE_CLIENT_SECRET;
17
+ const redirectUri = process.env.GOOGLE_REDIRECT_URI || "http://localhost:4001/oauth/callback";
18
+ if (!clientId || !clientSecret) {
19
+ return null;
20
+ }
21
+ return { clientId, clientSecret, redirectUri };
22
+ }
23
+ /**
24
+ * Generate an OAuth2 authorization URL for the given scopes.
25
+ */
26
+ export function generateAuthUrl(scopes, state) {
27
+ const config = getGoogleOAuthConfig();
28
+ if (!config)
29
+ return null;
30
+ const params = new URLSearchParams({
31
+ client_id: config.clientId,
32
+ redirect_uri: config.redirectUri,
33
+ response_type: "code",
34
+ scope: scopes.join(" "),
35
+ access_type: "offline",
36
+ prompt: "consent",
37
+ state,
38
+ });
39
+ return `${GOOGLE_AUTH_URL}?${params.toString()}`;
40
+ }
41
+ /**
42
+ * Exchange an authorization code for tokens.
43
+ */
44
+ export async function exchangeCode(code) {
45
+ const config = getGoogleOAuthConfig();
46
+ if (!config)
47
+ return null;
48
+ try {
49
+ const res = await fetch(GOOGLE_TOKEN_URL, {
50
+ method: "POST",
51
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
52
+ body: new URLSearchParams({
53
+ code,
54
+ client_id: config.clientId,
55
+ client_secret: config.clientSecret,
56
+ redirect_uri: config.redirectUri,
57
+ grant_type: "authorization_code",
58
+ }),
59
+ });
60
+ if (!res.ok) {
61
+ const err = await res.text();
62
+ log.error("Token exchange failed: %s", err);
63
+ return null;
64
+ }
65
+ return await res.json();
66
+ }
67
+ catch (err) {
68
+ log.error("Token exchange error: %s", err);
69
+ return null;
70
+ }
71
+ }
72
+ /**
73
+ * Refresh an access token using a refresh token.
74
+ */
75
+ export async function refreshAccessToken(refreshToken) {
76
+ const config = getGoogleOAuthConfig();
77
+ if (!config)
78
+ return null;
79
+ try {
80
+ const res = await fetch(GOOGLE_TOKEN_URL, {
81
+ method: "POST",
82
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
83
+ body: new URLSearchParams({
84
+ refresh_token: refreshToken,
85
+ client_id: config.clientId,
86
+ client_secret: config.clientSecret,
87
+ grant_type: "refresh_token",
88
+ }),
89
+ });
90
+ if (!res.ok) {
91
+ log.error("Token refresh failed: %d", res.status);
92
+ return null;
93
+ }
94
+ const tokens = await res.json();
95
+ tokens.refresh_token = tokens.refresh_token || refreshToken;
96
+ return tokens;
97
+ }
98
+ catch (err) {
99
+ log.error("Token refresh error: %s", err);
100
+ return null;
101
+ }
102
+ }
103
+ /**
104
+ * Get a valid access token, refreshing if needed.
105
+ */
106
+ export async function getAccessToken(ctx, integrationId) {
107
+ const tokens = ctx.credentialManager.get(integrationId);
108
+ if (!tokens)
109
+ return null;
110
+ // Check if expired
111
+ if (ctx.credentialManager.isExpired(integrationId) && tokens.refresh_token) {
112
+ log.debug("Refreshing expired token for: %s", integrationId);
113
+ const refreshed = await refreshAccessToken(tokens.refresh_token);
114
+ if (refreshed) {
115
+ ctx.credentialManager.setOAuth2(integrationId, refreshed);
116
+ return refreshed.access_token;
117
+ }
118
+ return null;
119
+ }
120
+ return tokens.access_token;
121
+ }
122
+ /**
123
+ * Make an authenticated Google API request.
124
+ */
125
+ export async function googleApiFetch(ctx, integrationId, url, options = {}) {
126
+ const accessToken = await getAccessToken(ctx, integrationId);
127
+ if (!accessToken) {
128
+ throw new Error(`No valid access token for ${integrationId}. Re-authenticate.`);
129
+ }
130
+ const headers = new Headers(options.headers);
131
+ headers.set("Authorization", `Bearer ${accessToken}`);
132
+ return fetch(url, { ...options, headers });
133
+ }
134
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/integrations/google/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Google Custom Search Integration
3
+ *
4
+ * Provides a web search tool powered by the Google Custom Search JSON API.
5
+ * Requires a Custom Search Engine ID (CX) and API key.
6
+ *
7
+ * @see https://developers.google.com/custom-search/v1/reference/rest
8
+ */
9
+ import { Integration, type IntegrationManifest, type ToolResult } from "../base.js";
10
+ export default class GoogleSearchIntegration extends Integration {
11
+ readonly manifest: IntegrationManifest;
12
+ executeTool(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
13
+ private search;
14
+ }
15
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/integrations/google/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAIpF,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,WAAW;IAC9D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAqBpC;IAEI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YASzE,MAAM;CAiCrB"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Google Custom Search Integration
3
+ *
4
+ * Provides a web search tool powered by the Google Custom Search JSON API.
5
+ * Requires a Custom Search Engine ID (CX) and API key.
6
+ *
7
+ * @see https://developers.google.com/custom-search/v1/reference/rest
8
+ */
9
+ import { Integration } from "../base.js";
10
+ const BASE = "https://www.googleapis.com/customsearch/v1";
11
+ export default class GoogleSearchIntegration extends Integration {
12
+ manifest = {
13
+ id: "google-search",
14
+ name: "Google Custom Search",
15
+ category: "google",
16
+ version: "1.0.0",
17
+ description: "Search the web using Google Custom Search.",
18
+ auth: { type: "api-key" },
19
+ tools: [
20
+ {
21
+ name: "google_search",
22
+ description: "Perform a web search using Google Custom Search.",
23
+ parameters: {
24
+ type: "object",
25
+ properties: {
26
+ query: { type: "string", description: "The search query." },
27
+ num: { type: "number", description: "Number of results to return (1-10, default: 10)." },
28
+ },
29
+ required: ["query"],
30
+ },
31
+ },
32
+ ],
33
+ };
34
+ async executeTool(toolName, args) {
35
+ switch (toolName) {
36
+ case "google_search":
37
+ return this.search(args);
38
+ default:
39
+ return this.error(`Unknown tool: ${toolName}`);
40
+ }
41
+ }
42
+ async search(args) {
43
+ const apiKey = process.env.GOOGLE_SEARCH_API_KEY;
44
+ const cx = process.env.GOOGLE_SEARCH_CX;
45
+ if (!apiKey || !cx) {
46
+ return this.error("GOOGLE_SEARCH_API_KEY and GOOGLE_SEARCH_CX environment variables must be set.");
47
+ }
48
+ const num = Math.min(Math.max(Number(args.num ?? 10), 1), 10);
49
+ const params = new URLSearchParams({
50
+ key: apiKey,
51
+ cx,
52
+ q: args.query,
53
+ num: String(num),
54
+ });
55
+ const res = await fetch(`${BASE}?${params}`);
56
+ const data = await res.json();
57
+ // Return a simplified view of results
58
+ const results = (data.items ?? []).map((item) => ({
59
+ title: item.title,
60
+ link: item.link,
61
+ snippet: item.snippet,
62
+ }));
63
+ return this.ok(JSON.stringify({ totalResults: data.searchInformation?.totalResults, results }, null, 2));
64
+ }
65
+ }
66
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/integrations/google/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAA6C,MAAM,YAAY,CAAC;AAEpF,MAAM,IAAI,GAAG,4CAA4C,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,WAAW;IACrD,QAAQ,GAAwB;QACvC,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,4CAA4C;QACzD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACzB,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,kDAAkD;gBAC/D,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;wBAC3D,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE;qBACzF;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,IAA6B;QAC/D,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B;gBACE,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,IAA6B;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACjD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACxC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,KAAK,CACf,+EAA+E,CAChF,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,GAAG,EAAE,MAAM;YACX,EAAE;YACF,CAAC,EAAE,IAAI,CAAC,KAAe;YACvB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;SACjB,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QAErC,sCAAsC;QACtC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CACpC,CAAC,IAA6B,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CACH,CAAC;QAEF,OAAO,IAAI,CAAC,EAAE,CACZ,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACzF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Google Sheets Integration
3
+ *
4
+ * Provides tools for reading, writing, and creating Google Sheets
5
+ * via the Google Sheets REST API v4.
6
+ *
7
+ * @see https://developers.google.com/sheets/api/reference/rest
8
+ */
9
+ import { Integration, type IntegrationManifest, type ToolResult } from "../base.js";
10
+ export default class GoogleSheetsIntegration extends Integration {
11
+ readonly manifest: IntegrationManifest;
12
+ executeTool(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
13
+ private read;
14
+ private write;
15
+ private create;
16
+ }
17
+ //# sourceMappingURL=sheets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheets.d.ts","sourceRoot":"","sources":["../../../src/integrations/google/sheets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAIpF,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,WAAW;IAC9D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAuDpC;IAEI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAazE,IAAI;YAcJ,KAAK;YAyBL,MAAM;CAYrB"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Google Sheets Integration
3
+ *
4
+ * Provides tools for reading, writing, and creating Google Sheets
5
+ * via the Google Sheets REST API v4.
6
+ *
7
+ * @see https://developers.google.com/sheets/api/reference/rest
8
+ */
9
+ import { Integration } from "../base.js";
10
+ const BASE = "https://sheets.googleapis.com/v4/spreadsheets";
11
+ export default class GoogleSheetsIntegration extends Integration {
12
+ manifest = {
13
+ id: "google-sheets",
14
+ name: "Google Sheets",
15
+ category: "google",
16
+ version: "1.0.0",
17
+ description: "Read, write, and create Google Sheets spreadsheets.",
18
+ auth: {
19
+ type: "oauth2",
20
+ scopes: [
21
+ "https://www.googleapis.com/auth/spreadsheets",
22
+ "https://www.googleapis.com/auth/spreadsheets.readonly",
23
+ ],
24
+ },
25
+ tools: [
26
+ {
27
+ name: "google_sheets_read",
28
+ description: "Read values from a Google Sheets range.",
29
+ parameters: {
30
+ type: "object",
31
+ properties: {
32
+ spreadsheetId: { type: "string", description: "The spreadsheet ID." },
33
+ range: { type: "string", description: "A1 notation range (e.g. 'Sheet1!A1:D10')." },
34
+ },
35
+ required: ["spreadsheetId", "range"],
36
+ },
37
+ },
38
+ {
39
+ name: "google_sheets_write",
40
+ description: "Write values to a Google Sheets range.",
41
+ parameters: {
42
+ type: "object",
43
+ properties: {
44
+ spreadsheetId: { type: "string", description: "The spreadsheet ID." },
45
+ range: { type: "string", description: "A1 notation range to write to." },
46
+ values: {
47
+ type: "array",
48
+ items: { type: "array", description: "", items: { type: "string", description: "" } },
49
+ description: "2D array of cell values (rows x columns).",
50
+ },
51
+ },
52
+ required: ["spreadsheetId", "range", "values"],
53
+ },
54
+ },
55
+ {
56
+ name: "google_sheets_create",
57
+ description: "Create a new Google Sheets spreadsheet.",
58
+ parameters: {
59
+ type: "object",
60
+ properties: {
61
+ title: { type: "string", description: "Spreadsheet title." },
62
+ },
63
+ required: ["title"],
64
+ },
65
+ },
66
+ ],
67
+ };
68
+ async executeTool(toolName, args) {
69
+ switch (toolName) {
70
+ case "google_sheets_read":
71
+ return this.read(args);
72
+ case "google_sheets_write":
73
+ return this.write(args);
74
+ case "google_sheets_create":
75
+ return this.create(args);
76
+ default:
77
+ return this.error(`Unknown tool: ${toolName}`);
78
+ }
79
+ }
80
+ async read(args) {
81
+ const { googleApiFetch } = await import("./oauth.js");
82
+ const id = encodeURIComponent(args.spreadsheetId);
83
+ const range = encodeURIComponent(args.range);
84
+ const res = await googleApiFetch(this.ctx, this.manifest.id, `${BASE}/${id}/values/${range}`);
85
+ const data = await res.json();
86
+ return this.ok(JSON.stringify(data, null, 2));
87
+ }
88
+ async write(args) {
89
+ const { googleApiFetch } = await import("./oauth.js");
90
+ const id = encodeURIComponent(args.spreadsheetId);
91
+ const range = encodeURIComponent(args.range);
92
+ const params = new URLSearchParams({
93
+ valueInputOption: "USER_ENTERED",
94
+ });
95
+ const res = await googleApiFetch(this.ctx, this.manifest.id, `${BASE}/${id}/values/${range}?${params}`, {
96
+ method: "PUT",
97
+ body: JSON.stringify({
98
+ range: args.range,
99
+ majorDimension: "ROWS",
100
+ values: args.values,
101
+ }),
102
+ });
103
+ const data = await res.json();
104
+ return this.ok(JSON.stringify(data, null, 2));
105
+ }
106
+ async create(args) {
107
+ const { googleApiFetch } = await import("./oauth.js");
108
+ const res = await googleApiFetch(this.ctx, this.manifest.id, BASE, {
109
+ method: "POST",
110
+ body: JSON.stringify({
111
+ properties: { title: args.title },
112
+ }),
113
+ });
114
+ const data = await res.json();
115
+ return this.ok(JSON.stringify(data, null, 2));
116
+ }
117
+ }
118
+ //# sourceMappingURL=sheets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheets.js","sourceRoot":"","sources":["../../../src/integrations/google/sheets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * YouTube Integration
3
+ *
4
+ * Provides tools for searching videos, fetching video details, and
5
+ * retrieving channel information via the YouTube Data API v3.
6
+ *
7
+ * @see https://developers.google.com/youtube/v3/docs
8
+ */
9
+ import { Integration, type IntegrationManifest, type ToolResult } from "../base.js";
10
+ export default class GoogleYouTubeIntegration extends Integration {
11
+ readonly manifest: IntegrationManifest;
12
+ /** Retrieve the YouTube / Google API key from environment variables. */
13
+ private getApiKey;
14
+ executeTool(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
15
+ private search;
16
+ private video;
17
+ private channel;
18
+ }
19
+ //# sourceMappingURL=youtube.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"youtube.d.ts","sourceRoot":"","sources":["../../../src/integrations/google/youtube.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAIpF,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,WAAW;IAC/D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CA2CpC;IAEF,wEAAwE;IACxE,OAAO,CAAC,SAAS;IAUX,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAazE,MAAM;YA+BN,KAAK;YAiBL,OAAO;CAgBtB"}