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,19 @@
1
+ /**
2
+ * Linear Integration
3
+ *
4
+ * Provides access to Linear project management via its GraphQL API.
5
+ * Supports creating issues, listing issues, and updating issue state.
6
+ *
7
+ * @requires LINEAR_API_KEY - Personal API key from Linear settings.
8
+ * @see https://developers.linear.app/docs/graphql/working-with-the-graphql-api
9
+ */
10
+ import { Integration, type IntegrationManifest, type ToolResult } from "../base.js";
11
+ export default class LinearIntegration extends Integration {
12
+ readonly manifest: IntegrationManifest;
13
+ private graphql;
14
+ executeTool(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
15
+ private createIssue;
16
+ private listIssues;
17
+ private updateIssue;
18
+ }
19
+ //# sourceMappingURL=linear.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../src/integrations/productivity/linear.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAIpF,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAW;IACxD,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAiDpC;YAEY,OAAO;IAmBf,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAiBzE,WAAW;YAkBX,UAAU;YAoBV,WAAW;CAgC1B"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Linear Integration
3
+ *
4
+ * Provides access to Linear project management via its GraphQL API.
5
+ * Supports creating issues, listing issues, and updating issue state.
6
+ *
7
+ * @requires LINEAR_API_KEY - Personal API key from Linear settings.
8
+ * @see https://developers.linear.app/docs/graphql/working-with-the-graphql-api
9
+ */
10
+ import { Integration } from "../base.js";
11
+ const API_URL = "https://api.linear.app/graphql";
12
+ export default class LinearIntegration extends Integration {
13
+ manifest = {
14
+ id: "linear",
15
+ name: "Linear",
16
+ category: "productivity",
17
+ version: "1.0.0",
18
+ description: "Create, list, and update issues in Linear.",
19
+ auth: {
20
+ type: "api-key",
21
+ envVars: ["LINEAR_API_KEY"],
22
+ },
23
+ tools: [
24
+ {
25
+ name: "linear_create_issue",
26
+ description: "Create a new issue in Linear.",
27
+ parameters: {
28
+ type: "object",
29
+ properties: {
30
+ title: { type: "string", description: "Issue title." },
31
+ description: { type: "string", description: "Issue description (Markdown)." },
32
+ teamId: { type: "string", description: "Team ID to create the issue in." },
33
+ },
34
+ required: ["title", "teamId"],
35
+ },
36
+ },
37
+ {
38
+ name: "linear_list_issues",
39
+ description: "List issues for a team, optionally filtered by state.",
40
+ parameters: {
41
+ type: "object",
42
+ properties: {
43
+ teamId: { type: "string", description: "Team ID." },
44
+ state: { type: "string", description: "Filter by state name (e.g. In Progress, Done)." },
45
+ },
46
+ required: ["teamId"],
47
+ },
48
+ },
49
+ {
50
+ name: "linear_update_issue",
51
+ description: "Update the state of an existing issue.",
52
+ parameters: {
53
+ type: "object",
54
+ properties: {
55
+ issueId: { type: "string", description: "Issue ID." },
56
+ state: { type: "string", description: "New state name (e.g. In Progress, Done)." },
57
+ },
58
+ required: ["issueId", "state"],
59
+ },
60
+ },
61
+ ],
62
+ };
63
+ async graphql(query, variables) {
64
+ const creds = await this.getCredentials();
65
+ if (!creds?.LINEAR_API_KEY)
66
+ throw new Error("Missing LINEAR_API_KEY");
67
+ const res = await fetch(API_URL, {
68
+ method: "POST",
69
+ headers: {
70
+ Authorization: creds.LINEAR_API_KEY,
71
+ "Content-Type": "application/json",
72
+ },
73
+ body: JSON.stringify({ query, variables }),
74
+ });
75
+ if (!res.ok)
76
+ throw new Error(`Linear ${res.status}: ${await res.text()}`);
77
+ const data = await res.json();
78
+ if (data.errors?.length)
79
+ throw new Error(data.errors[0].message);
80
+ return data.data;
81
+ }
82
+ async executeTool(toolName, args) {
83
+ try {
84
+ switch (toolName) {
85
+ case "linear_create_issue":
86
+ return await this.createIssue(args.title, args.teamId, args.description);
87
+ case "linear_list_issues":
88
+ return await this.listIssues(args.teamId, args.state);
89
+ case "linear_update_issue":
90
+ return await this.updateIssue(args.issueId, args.state);
91
+ default:
92
+ return this.error(`Unknown tool: ${toolName}`);
93
+ }
94
+ }
95
+ catch (err) {
96
+ return this.error(`Linear error: ${err.message}`);
97
+ }
98
+ }
99
+ async createIssue(title, teamId, description) {
100
+ const data = await this.graphql(`mutation CreateIssue($input: IssueCreateInput!) {
101
+ issueCreate(input: $input) {
102
+ success
103
+ issue { id identifier title url }
104
+ }
105
+ }`, { input: { title, description, teamId } });
106
+ const issue = data.issueCreate.issue;
107
+ return this.ok(`Created ${issue.identifier}: ${issue.title}\n${issue.url}`, {
108
+ id: issue.id,
109
+ identifier: issue.identifier,
110
+ url: issue.url,
111
+ });
112
+ }
113
+ async listIssues(teamId, state) {
114
+ const filter = { team: { id: { eq: teamId } } };
115
+ if (state)
116
+ filter.state = { name: { eq: state } };
117
+ const data = await this.graphql(`query ListIssues($filter: IssueFilter) {
118
+ issues(filter: $filter, first: 50) {
119
+ nodes { id identifier title state { name } assignee { name } }
120
+ }
121
+ }`, { filter });
122
+ const issues = data.issues.nodes;
123
+ const summary = issues
124
+ .map((i) => `${i.identifier} [${i.state.name}] ${i.title}${i.assignee ? ` (${i.assignee.name})` : ""}`)
125
+ .join("\n");
126
+ return this.ok(summary || "No issues found.", { count: issues.length });
127
+ }
128
+ async updateIssue(issueId, stateName) {
129
+ // First resolve the state ID by looking up the issue's team workflow states
130
+ const issueData = await this.graphql(`query GetIssue($id: String!) {
131
+ issue(id: $id) {
132
+ id identifier
133
+ team { states { nodes { id name } } }
134
+ }
135
+ }`, { id: issueId });
136
+ const states = issueData.issue.team.states.nodes;
137
+ const target = states.find((s) => s.name.toLowerCase() === stateName.toLowerCase());
138
+ if (!target) {
139
+ const available = states.map((s) => s.name).join(", ");
140
+ return this.error(`State "${stateName}" not found. Available: ${available}`);
141
+ }
142
+ const data = await this.graphql(`mutation UpdateIssue($id: String!, $input: IssueUpdateInput!) {
143
+ issueUpdate(id: $id, input: $input) {
144
+ success
145
+ issue { id identifier title state { name } }
146
+ }
147
+ }`, { id: issueId, input: { stateId: target.id } });
148
+ const issue = data.issueUpdate.issue;
149
+ return this.ok(`${issue.identifier} updated to "${issue.state.name}"`, { id: issue.id });
150
+ }
151
+ }
152
+ //# sourceMappingURL=linear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../src/integrations/productivity/linear.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Notion Integration
3
+ *
4
+ * Provides access to Notion workspaces -- search, create pages, read pages,
5
+ * and query databases via the Notion REST API.
6
+ *
7
+ * @requires NOTION_TOKEN - Internal integration token from https://www.notion.so/my-integrations
8
+ * @see https://developers.notion.com/reference
9
+ */
10
+ import { Integration, type IntegrationManifest, type ToolResult } from "../base.js";
11
+ export default class NotionIntegration extends Integration {
12
+ readonly manifest: IntegrationManifest;
13
+ private request;
14
+ executeTool(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
15
+ private search;
16
+ private createPage;
17
+ private readPage;
18
+ private queryDatabase;
19
+ }
20
+ //# sourceMappingURL=notion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notion.d.ts","sourceRoot":"","sources":["../../../src/integrations/productivity/notion.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAKpF,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAW;IACxD,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CA2DpC;YAEY,OAAO;IAkBf,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAmBzE,MAAM;YAcN,UAAU;YAuBV,QAAQ;YAqBR,aAAa;CA0B5B"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Notion Integration
3
+ *
4
+ * Provides access to Notion workspaces -- search, create pages, read pages,
5
+ * and query databases via the Notion REST API.
6
+ *
7
+ * @requires NOTION_TOKEN - Internal integration token from https://www.notion.so/my-integrations
8
+ * @see https://developers.notion.com/reference
9
+ */
10
+ import { Integration } from "../base.js";
11
+ const API_BASE = "https://api.notion.com/v1";
12
+ const NOTION_VERSION = "2022-06-28";
13
+ export default class NotionIntegration extends Integration {
14
+ manifest = {
15
+ id: "notion",
16
+ name: "Notion",
17
+ category: "productivity",
18
+ version: "1.0.0",
19
+ description: "Search, create pages, read pages, and query databases in Notion.",
20
+ auth: {
21
+ type: "token",
22
+ envVars: ["NOTION_TOKEN"],
23
+ },
24
+ tools: [
25
+ {
26
+ name: "notion_search",
27
+ description: "Search across all pages and databases in the workspace.",
28
+ parameters: {
29
+ type: "object",
30
+ properties: {
31
+ query: { type: "string", description: "Search query." },
32
+ },
33
+ required: ["query"],
34
+ },
35
+ },
36
+ {
37
+ name: "notion_create_page",
38
+ description: "Create a new page under a parent page.",
39
+ parameters: {
40
+ type: "object",
41
+ properties: {
42
+ parentId: { type: "string", description: "Parent page ID." },
43
+ title: { type: "string", description: "Page title." },
44
+ content: { type: "string", description: "Page body text (plain text, added as a paragraph block)." },
45
+ },
46
+ required: ["parentId", "title"],
47
+ },
48
+ },
49
+ {
50
+ name: "notion_read_page",
51
+ description: "Read the properties and content blocks of a Notion page.",
52
+ parameters: {
53
+ type: "object",
54
+ properties: {
55
+ pageId: { type: "string", description: "Page ID to read." },
56
+ },
57
+ required: ["pageId"],
58
+ },
59
+ },
60
+ {
61
+ name: "notion_query_database",
62
+ description: "Query a Notion database with an optional filter.",
63
+ parameters: {
64
+ type: "object",
65
+ properties: {
66
+ databaseId: { type: "string", description: "Database ID." },
67
+ filter: { type: "object", description: "Notion filter object (optional)." },
68
+ },
69
+ required: ["databaseId"],
70
+ },
71
+ },
72
+ ],
73
+ };
74
+ async request(path, options = {}) {
75
+ const creds = await this.getCredentials();
76
+ if (!creds?.NOTION_TOKEN)
77
+ throw new Error("Missing NOTION_TOKEN");
78
+ const res = await fetch(`${API_BASE}${path}`, {
79
+ ...options,
80
+ headers: {
81
+ Authorization: `Bearer ${creds.NOTION_TOKEN}`,
82
+ "Notion-Version": NOTION_VERSION,
83
+ "Content-Type": "application/json",
84
+ ...options.headers,
85
+ },
86
+ });
87
+ if (!res.ok)
88
+ throw new Error(`Notion ${res.status}: ${await res.text()}`);
89
+ return res.json();
90
+ }
91
+ async executeTool(toolName, args) {
92
+ try {
93
+ switch (toolName) {
94
+ case "notion_search":
95
+ return await this.search(args.query);
96
+ case "notion_create_page":
97
+ return await this.createPage(args.parentId, args.title, args.content);
98
+ case "notion_read_page":
99
+ return await this.readPage(args.pageId);
100
+ case "notion_query_database":
101
+ return await this.queryDatabase(args.databaseId, args.filter);
102
+ default:
103
+ return this.error(`Unknown tool: ${toolName}`);
104
+ }
105
+ }
106
+ catch (err) {
107
+ return this.error(`Notion error: ${err.message}`);
108
+ }
109
+ }
110
+ async search(query) {
111
+ const data = await this.request("/search", {
112
+ method: "POST",
113
+ body: JSON.stringify({ query }),
114
+ });
115
+ const results = (data.results ?? []).map((r) => {
116
+ const title = r.properties?.title?.title?.[0]?.plain_text
117
+ ?? r.properties?.Name?.title?.[0]?.plain_text
118
+ ?? r.id;
119
+ return `[${r.object}] ${title} (${r.id})`;
120
+ });
121
+ return this.ok(results.join("\n") || "No results found.", { count: data.results?.length ?? 0 });
122
+ }
123
+ async createPage(parentId, title, content) {
124
+ const children = [];
125
+ if (content) {
126
+ children.push({
127
+ object: "block",
128
+ type: "paragraph",
129
+ paragraph: { rich_text: [{ type: "text", text: { content } }] },
130
+ });
131
+ }
132
+ const data = await this.request("/pages", {
133
+ method: "POST",
134
+ body: JSON.stringify({
135
+ parent: { page_id: parentId },
136
+ properties: {
137
+ title: { title: [{ text: { content: title } }] },
138
+ },
139
+ children,
140
+ }),
141
+ });
142
+ return this.ok(`Page created: ${data.id}`, { pageId: data.id, url: data.url });
143
+ }
144
+ async readPage(pageId) {
145
+ const [page, blocks] = await Promise.all([
146
+ this.request(`/pages/${pageId}`),
147
+ this.request(`/blocks/${pageId}/children`),
148
+ ]);
149
+ const title = page.properties?.title?.title?.[0]?.plain_text
150
+ ?? page.properties?.Name?.title?.[0]?.plain_text
151
+ ?? "Untitled";
152
+ const content = (blocks.results ?? [])
153
+ .map((b) => {
154
+ const texts = b[b.type]?.rich_text?.map((t) => t.plain_text).join("") ?? "";
155
+ return texts;
156
+ })
157
+ .filter(Boolean)
158
+ .join("\n");
159
+ return this.ok(`# ${title}\n\n${content}`, { pageId, url: page.url });
160
+ }
161
+ async queryDatabase(databaseId, filter) {
162
+ const body = {};
163
+ if (filter)
164
+ body.filter = filter;
165
+ const data = await this.request(`/databases/${databaseId}/query`, {
166
+ method: "POST",
167
+ body: JSON.stringify(body),
168
+ });
169
+ const rows = (data.results ?? []).map((r) => {
170
+ const props = Object.entries(r.properties)
171
+ .map(([key, val]) => {
172
+ const text = val.title?.[0]?.plain_text
173
+ ?? val.rich_text?.[0]?.plain_text
174
+ ?? val.select?.name
175
+ ?? val.number
176
+ ?? val.checkbox
177
+ ?? "";
178
+ return `${key}: ${text}`;
179
+ })
180
+ .join(", ");
181
+ return `[${r.id}] ${props}`;
182
+ });
183
+ return this.ok(rows.join("\n") || "No results.", { count: data.results?.length ?? 0 });
184
+ }
185
+ }
186
+ //# sourceMappingURL=notion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notion.js","sourceRoot":"","sources":["../../../src/integrations/productivity/notion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Obsidian Integration
3
+ *
4
+ * Provides filesystem-based access to a local Obsidian vault.
5
+ * Reads, writes, searches, and lists markdown notes.
6
+ *
7
+ * @requires OBSIDIAN_VAULT_PATH - Absolute path to the Obsidian vault directory.
8
+ * @see https://obsidian.md
9
+ */
10
+ import { Integration, type IntegrationManifest, type ToolResult } from "../base.js";
11
+ export default class ObsidianIntegration extends Integration {
12
+ readonly manifest: IntegrationManifest;
13
+ private get vaultPath();
14
+ private resolve;
15
+ executeTool(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
16
+ private readNote;
17
+ private writeNote;
18
+ private search;
19
+ private listNotes;
20
+ }
21
+ //# sourceMappingURL=obsidian.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obsidian.d.ts","sourceRoot":"","sources":["../../../src/integrations/productivity/obsidian.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAIpF,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,WAAW;IAC1D,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAuDpC;IAEF,OAAO,KAAK,SAAS,GAIpB;IAED,OAAO,CAAC,OAAO;IAMT,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAmBzE,QAAQ;YAKR,SAAS;YAOT,MAAM;YAuBN,SAAS;CAQxB"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Obsidian Integration
3
+ *
4
+ * Provides filesystem-based access to a local Obsidian vault.
5
+ * Reads, writes, searches, and lists markdown notes.
6
+ *
7
+ * @requires OBSIDIAN_VAULT_PATH - Absolute path to the Obsidian vault directory.
8
+ * @see https://obsidian.md
9
+ */
10
+ import { Integration } from "../base.js";
11
+ import { readFile, writeFile, readdir, mkdir } from "node:fs/promises";
12
+ import { join, relative, dirname, extname } from "node:path";
13
+ export default class ObsidianIntegration extends Integration {
14
+ manifest = {
15
+ id: "obsidian",
16
+ name: "Obsidian",
17
+ category: "productivity",
18
+ version: "1.0.0",
19
+ description: "Read, write, search, and list notes in a local Obsidian vault.",
20
+ auth: { type: "none" },
21
+ requires: { env: ["OBSIDIAN_VAULT_PATH"] },
22
+ capabilities: { offline: true },
23
+ tools: [
24
+ {
25
+ name: "obsidian_read_note",
26
+ description: "Read the contents of a note.",
27
+ parameters: {
28
+ type: "object",
29
+ properties: {
30
+ path: { type: "string", description: "Relative path to the note (e.g. folder/note.md)." },
31
+ },
32
+ required: ["path"],
33
+ },
34
+ },
35
+ {
36
+ name: "obsidian_write_note",
37
+ description: "Create or overwrite a note.",
38
+ parameters: {
39
+ type: "object",
40
+ properties: {
41
+ path: { type: "string", description: "Relative path for the note." },
42
+ content: { type: "string", description: "Markdown content to write." },
43
+ },
44
+ required: ["path", "content"],
45
+ },
46
+ },
47
+ {
48
+ name: "obsidian_search",
49
+ description: "Search for notes containing a query string.",
50
+ parameters: {
51
+ type: "object",
52
+ properties: {
53
+ query: { type: "string", description: "Text to search for." },
54
+ },
55
+ required: ["query"],
56
+ },
57
+ },
58
+ {
59
+ name: "obsidian_list_notes",
60
+ description: "List all notes in a folder.",
61
+ parameters: {
62
+ type: "object",
63
+ properties: {
64
+ folder: { type: "string", description: "Relative folder path (empty string for vault root).", default: "" },
65
+ },
66
+ },
67
+ },
68
+ ],
69
+ };
70
+ get vaultPath() {
71
+ const p = process.env.OBSIDIAN_VAULT_PATH;
72
+ if (!p)
73
+ throw new Error("OBSIDIAN_VAULT_PATH is not set");
74
+ return p;
75
+ }
76
+ resolve(relPath) {
77
+ const full = join(this.vaultPath, relPath);
78
+ if (!full.startsWith(this.vaultPath))
79
+ throw new Error("Path traversal detected");
80
+ return full;
81
+ }
82
+ async executeTool(toolName, args) {
83
+ try {
84
+ switch (toolName) {
85
+ case "obsidian_read_note":
86
+ return await this.readNote(args.path);
87
+ case "obsidian_write_note":
88
+ return await this.writeNote(args.path, args.content);
89
+ case "obsidian_search":
90
+ return await this.search(args.query);
91
+ case "obsidian_list_notes":
92
+ return await this.listNotes(args.folder ?? "");
93
+ default:
94
+ return this.error(`Unknown tool: ${toolName}`);
95
+ }
96
+ }
97
+ catch (err) {
98
+ return this.error(`Obsidian error: ${err.message}`);
99
+ }
100
+ }
101
+ async readNote(path) {
102
+ const content = await readFile(this.resolve(path), "utf-8");
103
+ return this.ok(content, { path });
104
+ }
105
+ async writeNote(path, content) {
106
+ const fullPath = this.resolve(path);
107
+ await mkdir(dirname(fullPath), { recursive: true });
108
+ await writeFile(fullPath, content, "utf-8");
109
+ return this.ok(`Note written: ${path}`, { path });
110
+ }
111
+ async search(query) {
112
+ const matches = [];
113
+ const lowerQuery = query.toLowerCase();
114
+ const walk = async (dir) => {
115
+ const entries = await readdir(dir, { withFileTypes: true });
116
+ for (const entry of entries) {
117
+ const full = join(dir, entry.name);
118
+ if (entry.isDirectory() && !entry.name.startsWith(".")) {
119
+ await walk(full);
120
+ }
121
+ else if (entry.isFile() && extname(entry.name) === ".md") {
122
+ const content = await readFile(full, "utf-8");
123
+ if (content.toLowerCase().includes(lowerQuery)) {
124
+ matches.push(relative(this.vaultPath, full));
125
+ }
126
+ }
127
+ }
128
+ };
129
+ await walk(this.vaultPath);
130
+ return this.ok(matches.join("\n") || "No matching notes found.", { count: matches.length });
131
+ }
132
+ async listNotes(folder) {
133
+ const dir = this.resolve(folder);
134
+ const entries = await readdir(dir, { withFileTypes: true });
135
+ const items = entries
136
+ .filter((e) => e.isFile() ? extname(e.name) === ".md" : !e.name.startsWith("."))
137
+ .map((e) => `${e.isDirectory() ? "[folder] " : ""}${e.name}`);
138
+ return this.ok(items.join("\n") || "Empty folder.", { count: items.length });
139
+ }
140
+ }
141
+ //# sourceMappingURL=obsidian.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obsidian.js","sourceRoot":"","sources":["../../../src/integrations/productivity/obsidian.ts"],"names":[],"mappings":"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"}