daemora 1.0.0-alpha.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 (1238) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +645 -0
  3. package/crew/_template/plugin.json +18 -0
  4. package/crew/analyst/plugin.json +29 -0
  5. package/crew/architect/plugin.json +29 -0
  6. package/crew/assistant/plugin.json +29 -0
  7. package/crew/backend/plugin.json +31 -0
  8. package/crew/devops/plugin.json +30 -0
  9. package/crew/facebook/plugin.json +36 -0
  10. package/crew/frontend/plugin.json +30 -0
  11. package/crew/github/plugin.json +18 -0
  12. package/crew/gmail/plugin.json +34 -0
  13. package/crew/google-calendar/plugin.json +26 -0
  14. package/crew/google-services/plugin.json +25 -0
  15. package/crew/imessage/plugin.json +24 -0
  16. package/crew/instagram/plugin.json +34 -0
  17. package/crew/linkedin/plugin.json +24 -0
  18. package/crew/meeting-attendant/plugin.json +27 -0
  19. package/crew/notifications/plugin.json +23 -0
  20. package/crew/notion/plugin.json +18 -0
  21. package/crew/planner/plugin.json +25 -0
  22. package/crew/reddit/plugin.json +32 -0
  23. package/crew/researcher/plugin.json +29 -0
  24. package/crew/reviewer/plugin.json +29 -0
  25. package/crew/security/plugin.json +30 -0
  26. package/crew/smart-home/plugin.json +23 -0
  27. package/crew/ssh-remote/plugin.json +28 -0
  28. package/crew/tiktok/plugin.json +26 -0
  29. package/crew/twitter/plugin.json +46 -0
  30. package/crew/video-editor/plugin.json +19 -0
  31. package/crew/video-editor/rules/3d.md +86 -0
  32. package/crew/video-editor/rules/animations.md +31 -0
  33. package/crew/video-editor/rules/assets/charts-bar-chart.tsx +173 -0
  34. package/crew/video-editor/rules/assets/text-animations-typewriter.tsx +100 -0
  35. package/crew/video-editor/rules/assets/text-animations-word-highlight.tsx +103 -0
  36. package/crew/video-editor/rules/assets.md +78 -0
  37. package/crew/video-editor/rules/audio-visualization.md +198 -0
  38. package/crew/video-editor/rules/audio.md +169 -0
  39. package/crew/video-editor/rules/calculate-metadata.md +134 -0
  40. package/crew/video-editor/rules/can-decode.md +81 -0
  41. package/crew/video-editor/rules/charts.md +120 -0
  42. package/crew/video-editor/rules/compositions.md +154 -0
  43. package/crew/video-editor/rules/cursor-and-clicks.md +108 -0
  44. package/crew/video-editor/rules/display-captions.md +184 -0
  45. package/crew/video-editor/rules/extract-frames.md +229 -0
  46. package/crew/video-editor/rules/ffmpeg.md +34 -0
  47. package/crew/video-editor/rules/focus-zoom.md +108 -0
  48. package/crew/video-editor/rules/fonts.md +152 -0
  49. package/crew/video-editor/rules/get-audio-duration.md +58 -0
  50. package/crew/video-editor/rules/get-video-dimensions.md +68 -0
  51. package/crew/video-editor/rules/get-video-duration.md +60 -0
  52. package/crew/video-editor/rules/gifs.md +141 -0
  53. package/crew/video-editor/rules/images.md +134 -0
  54. package/crew/video-editor/rules/import-srt-captions.md +69 -0
  55. package/crew/video-editor/rules/light-leaks.md +73 -0
  56. package/crew/video-editor/rules/lottie.md +70 -0
  57. package/crew/video-editor/rules/maps.md +412 -0
  58. package/crew/video-editor/rules/measuring-dom-nodes.md +34 -0
  59. package/crew/video-editor/rules/measuring-text.md +140 -0
  60. package/crew/video-editor/rules/parameters.md +109 -0
  61. package/crew/video-editor/rules/sequencing.md +118 -0
  62. package/crew/video-editor/rules/sfx.md +30 -0
  63. package/crew/video-editor/rules/silence-detection.md +71 -0
  64. package/crew/video-editor/rules/subtitles.md +36 -0
  65. package/crew/video-editor/rules/tailwind.md +11 -0
  66. package/crew/video-editor/rules/text-animations.md +20 -0
  67. package/crew/video-editor/rules/theme-switching.md +103 -0
  68. package/crew/video-editor/rules/timing.md +136 -0
  69. package/crew/video-editor/rules/transcribe-captions.md +70 -0
  70. package/crew/video-editor/rules/transitions.md +197 -0
  71. package/crew/video-editor/rules/transparent-videos.md +106 -0
  72. package/crew/video-editor/rules/trimming.md +51 -0
  73. package/crew/video-editor/rules/ui-chrome.md +139 -0
  74. package/crew/video-editor/rules/videos.md +171 -0
  75. package/crew/video-editor/rules/voiceover.md +99 -0
  76. package/crew/video-editor/template/README.md +42 -0
  77. package/crew/video-editor/template/package.json +24 -0
  78. package/crew/video-editor/template/public/.gitkeep +0 -0
  79. package/crew/video-editor/template/public/image.png +0 -0
  80. package/crew/video-editor/template/public/logo.png +0 -0
  81. package/crew/video-editor/template/remotion.config.ts +5 -0
  82. package/crew/video-editor/template/src/Root.tsx +21 -0
  83. package/crew/video-editor/template/src/Video.tsx +38 -0
  84. package/crew/video-editor/template/src/components/LogoStinger.tsx +77 -0
  85. package/crew/video-editor/template/src/index.ts +4 -0
  86. package/crew/video-editor/template/tsconfig.json +16 -0
  87. package/crew/youtube/plugin.json +42 -0
  88. package/dist/auth/AuthProvider.d.ts +35 -0
  89. package/dist/auth/AuthProvider.d.ts.map +1 -0
  90. package/dist/auth/AuthProvider.js +13 -0
  91. package/dist/auth/AuthProvider.js.map +1 -0
  92. package/dist/auth/AuthStore.d.ts +79 -0
  93. package/dist/auth/AuthStore.d.ts.map +1 -0
  94. package/dist/auth/AuthStore.js +139 -0
  95. package/dist/auth/AuthStore.js.map +1 -0
  96. package/dist/auth/LocalAuthProvider.d.ts +28 -0
  97. package/dist/auth/LocalAuthProvider.d.ts.map +1 -0
  98. package/dist/auth/LocalAuthProvider.js +70 -0
  99. package/dist/auth/LocalAuthProvider.js.map +1 -0
  100. package/dist/auth/TokenService.d.ts +83 -0
  101. package/dist/auth/TokenService.d.ts.map +1 -0
  102. package/dist/auth/TokenService.js +129 -0
  103. package/dist/auth/TokenService.js.map +1 -0
  104. package/dist/auth/fileToken.d.ts +33 -0
  105. package/dist/auth/fileToken.d.ts.map +1 -0
  106. package/dist/auth/fileToken.js +69 -0
  107. package/dist/auth/fileToken.js.map +1 -0
  108. package/dist/auth/index.d.ts +47 -0
  109. package/dist/auth/index.d.ts.map +1 -0
  110. package/dist/auth/index.js +76 -0
  111. package/dist/auth/index.js.map +1 -0
  112. package/dist/auth/jwt.d.ts +27 -0
  113. package/dist/auth/jwt.d.ts.map +1 -0
  114. package/dist/auth/jwt.js +67 -0
  115. package/dist/auth/jwt.js.map +1 -0
  116. package/dist/channels/BaseChannel.d.ts +139 -0
  117. package/dist/channels/BaseChannel.d.ts.map +1 -0
  118. package/dist/channels/BaseChannel.js +103 -0
  119. package/dist/channels/BaseChannel.js.map +1 -0
  120. package/dist/channels/BlueBubblesChannel.d.ts +37 -0
  121. package/dist/channels/BlueBubblesChannel.d.ts.map +1 -0
  122. package/dist/channels/BlueBubblesChannel.js +115 -0
  123. package/dist/channels/BlueBubblesChannel.js.map +1 -0
  124. package/dist/channels/ChannelManager.d.ts +85 -0
  125. package/dist/channels/ChannelManager.d.ts.map +1 -0
  126. package/dist/channels/ChannelManager.js +557 -0
  127. package/dist/channels/ChannelManager.js.map +1 -0
  128. package/dist/channels/ChannelRegistry.d.ts +57 -0
  129. package/dist/channels/ChannelRegistry.d.ts.map +1 -0
  130. package/dist/channels/ChannelRegistry.js +93 -0
  131. package/dist/channels/ChannelRegistry.js.map +1 -0
  132. package/dist/channels/DiscordChannel.d.ts +87 -0
  133. package/dist/channels/DiscordChannel.d.ts.map +1 -0
  134. package/dist/channels/DiscordChannel.js +469 -0
  135. package/dist/channels/DiscordChannel.js.map +1 -0
  136. package/dist/channels/EmailChannel.d.ts +64 -0
  137. package/dist/channels/EmailChannel.d.ts.map +1 -0
  138. package/dist/channels/EmailChannel.js +226 -0
  139. package/dist/channels/EmailChannel.js.map +1 -0
  140. package/dist/channels/FeishuChannel.d.ts +40 -0
  141. package/dist/channels/FeishuChannel.d.ts.map +1 -0
  142. package/dist/channels/FeishuChannel.js +169 -0
  143. package/dist/channels/FeishuChannel.js.map +1 -0
  144. package/dist/channels/GoogleChatChannel.d.ts +46 -0
  145. package/dist/channels/GoogleChatChannel.d.ts.map +1 -0
  146. package/dist/channels/GoogleChatChannel.js +184 -0
  147. package/dist/channels/GoogleChatChannel.js.map +1 -0
  148. package/dist/channels/IRCChannel.d.ts +50 -0
  149. package/dist/channels/IRCChannel.d.ts.map +1 -0
  150. package/dist/channels/IRCChannel.js +149 -0
  151. package/dist/channels/IRCChannel.js.map +1 -0
  152. package/dist/channels/LineChannel.d.ts +35 -0
  153. package/dist/channels/LineChannel.d.ts.map +1 -0
  154. package/dist/channels/LineChannel.js +118 -0
  155. package/dist/channels/LineChannel.js.map +1 -0
  156. package/dist/channels/MatrixChannel.d.ts +45 -0
  157. package/dist/channels/MatrixChannel.d.ts.map +1 -0
  158. package/dist/channels/MatrixChannel.js +156 -0
  159. package/dist/channels/MatrixChannel.js.map +1 -0
  160. package/dist/channels/MattermostChannel.d.ts +42 -0
  161. package/dist/channels/MattermostChannel.d.ts.map +1 -0
  162. package/dist/channels/MattermostChannel.js +144 -0
  163. package/dist/channels/MattermostChannel.js.map +1 -0
  164. package/dist/channels/NextcloudChannel.d.ts +46 -0
  165. package/dist/channels/NextcloudChannel.d.ts.map +1 -0
  166. package/dist/channels/NextcloudChannel.js +146 -0
  167. package/dist/channels/NextcloudChannel.js.map +1 -0
  168. package/dist/channels/SignalChannel.d.ts +39 -0
  169. package/dist/channels/SignalChannel.d.ts.map +1 -0
  170. package/dist/channels/SignalChannel.js +160 -0
  171. package/dist/channels/SignalChannel.js.map +1 -0
  172. package/dist/channels/SlackChannel.d.ts +81 -0
  173. package/dist/channels/SlackChannel.d.ts.map +1 -0
  174. package/dist/channels/SlackChannel.js +363 -0
  175. package/dist/channels/SlackChannel.js.map +1 -0
  176. package/dist/channels/StreamingEditor.d.ts +37 -0
  177. package/dist/channels/StreamingEditor.d.ts.map +1 -0
  178. package/dist/channels/StreamingEditor.js +108 -0
  179. package/dist/channels/StreamingEditor.js.map +1 -0
  180. package/dist/channels/TelegramChannel.d.ts +84 -0
  181. package/dist/channels/TelegramChannel.d.ts.map +1 -0
  182. package/dist/channels/TelegramChannel.js +469 -0
  183. package/dist/channels/TelegramChannel.js.map +1 -0
  184. package/dist/channels/TwitchChannel.d.ts +45 -0
  185. package/dist/channels/TwitchChannel.d.ts.map +1 -0
  186. package/dist/channels/TwitchChannel.js +117 -0
  187. package/dist/channels/TwitchChannel.js.map +1 -0
  188. package/dist/channels/WhatsAppChannel.d.ts +45 -0
  189. package/dist/channels/WhatsAppChannel.d.ts.map +1 -0
  190. package/dist/channels/WhatsAppChannel.js +153 -0
  191. package/dist/channels/WhatsAppChannel.js.map +1 -0
  192. package/dist/channels/ZaloChannel.d.ts +42 -0
  193. package/dist/channels/ZaloChannel.d.ts.map +1 -0
  194. package/dist/channels/ZaloChannel.js +114 -0
  195. package/dist/channels/ZaloChannel.js.map +1 -0
  196. package/dist/cli/commands/config.d.ts +10 -0
  197. package/dist/cli/commands/config.d.ts.map +1 -0
  198. package/dist/cli/commands/config.js +107 -0
  199. package/dist/cli/commands/config.js.map +1 -0
  200. package/dist/cli/commands/daemon.d.ts +17 -0
  201. package/dist/cli/commands/daemon.d.ts.map +1 -0
  202. package/dist/cli/commands/daemon.js +82 -0
  203. package/dist/cli/commands/daemon.js.map +1 -0
  204. package/dist/cli/commands/doctor.d.ts +17 -0
  205. package/dist/cli/commands/doctor.d.ts.map +1 -0
  206. package/dist/cli/commands/doctor.js +138 -0
  207. package/dist/cli/commands/doctor.js.map +1 -0
  208. package/dist/cli/commands/setup.d.ts +16 -0
  209. package/dist/cli/commands/setup.d.ts.map +1 -0
  210. package/dist/cli/commands/setup.js +206 -0
  211. package/dist/cli/commands/setup.js.map +1 -0
  212. package/dist/cli/commands/start.d.ts +8 -0
  213. package/dist/cli/commands/start.d.ts.map +1 -0
  214. package/dist/cli/commands/start.js +444 -0
  215. package/dist/cli/commands/start.js.map +1 -0
  216. package/dist/cli/commands/vault.d.ts +15 -0
  217. package/dist/cli/commands/vault.d.ts.map +1 -0
  218. package/dist/cli/commands/vault.js +167 -0
  219. package/dist/cli/commands/vault.js.map +1 -0
  220. package/dist/cli/index.d.ts +13 -0
  221. package/dist/cli/index.d.ts.map +1 -0
  222. package/dist/cli/index.js +93 -0
  223. package/dist/cli/index.js.map +1 -0
  224. package/dist/cli/loadEnv.d.ts +14 -0
  225. package/dist/cli/loadEnv.d.ts.map +1 -0
  226. package/dist/cli/loadEnv.js +18 -0
  227. package/dist/cli/loadEnv.js.map +1 -0
  228. package/dist/config/ConfigManager.d.ts +79 -0
  229. package/dist/config/ConfigManager.d.ts.map +1 -0
  230. package/dist/config/ConfigManager.js +118 -0
  231. package/dist/config/ConfigManager.js.map +1 -0
  232. package/dist/config/Secret.d.ts +29 -0
  233. package/dist/config/Secret.d.ts.map +1 -0
  234. package/dist/config/Secret.js +47 -0
  235. package/dist/config/Secret.js.map +1 -0
  236. package/dist/config/SecretVault.d.ts +53 -0
  237. package/dist/config/SecretVault.d.ts.map +1 -0
  238. package/dist/config/SecretVault.js +205 -0
  239. package/dist/config/SecretVault.js.map +1 -0
  240. package/dist/config/SettingsStore.d.ts +46 -0
  241. package/dist/config/SettingsStore.d.ts.map +1 -0
  242. package/dist/config/SettingsStore.js +132 -0
  243. package/dist/config/SettingsStore.js.map +1 -0
  244. package/dist/config/env.d.ts +21 -0
  245. package/dist/config/env.d.ts.map +1 -0
  246. package/dist/config/env.js +62 -0
  247. package/dist/config/env.js.map +1 -0
  248. package/dist/config/schema.d.ts +127 -0
  249. package/dist/config/schema.d.ts.map +1 -0
  250. package/dist/config/schema.js +346 -0
  251. package/dist/config/schema.js.map +1 -0
  252. package/dist/core/AgentLoop.d.ts +180 -0
  253. package/dist/core/AgentLoop.d.ts.map +1 -0
  254. package/dist/core/AgentLoop.js +428 -0
  255. package/dist/core/AgentLoop.js.map +1 -0
  256. package/dist/core/AttachmentProcessor.d.ts +75 -0
  257. package/dist/core/AttachmentProcessor.d.ts.map +1 -0
  258. package/dist/core/AttachmentProcessor.js +191 -0
  259. package/dist/core/AttachmentProcessor.js.map +1 -0
  260. package/dist/core/Compaction.d.ts +62 -0
  261. package/dist/core/Compaction.d.ts.map +1 -0
  262. package/dist/core/Compaction.js +260 -0
  263. package/dist/core/Compaction.js.map +1 -0
  264. package/dist/core/InboundDebouncer.d.ts +42 -0
  265. package/dist/core/InboundDebouncer.d.ts.map +1 -0
  266. package/dist/core/InboundDebouncer.js +81 -0
  267. package/dist/core/InboundDebouncer.js.map +1 -0
  268. package/dist/core/LoopDetector.d.ts +36 -0
  269. package/dist/core/LoopDetector.d.ts.map +1 -0
  270. package/dist/core/LoopDetector.js +139 -0
  271. package/dist/core/LoopDetector.js.map +1 -0
  272. package/dist/core/TaskRunner.d.ts +134 -0
  273. package/dist/core/TaskRunner.d.ts.map +1 -0
  274. package/dist/core/TaskRunner.js +454 -0
  275. package/dist/core/TaskRunner.js.map +1 -0
  276. package/dist/costs/CostTracker.d.ts +70 -0
  277. package/dist/costs/CostTracker.d.ts.map +1 -0
  278. package/dist/costs/CostTracker.js +176 -0
  279. package/dist/costs/CostTracker.js.map +1 -0
  280. package/dist/crew/CrewAgentRunner.d.ts +55 -0
  281. package/dist/crew/CrewAgentRunner.d.ts.map +1 -0
  282. package/dist/crew/CrewAgentRunner.js +208 -0
  283. package/dist/crew/CrewAgentRunner.js.map +1 -0
  284. package/dist/crew/CrewLoader.d.ts +43 -0
  285. package/dist/crew/CrewLoader.d.ts.map +1 -0
  286. package/dist/crew/CrewLoader.js +122 -0
  287. package/dist/crew/CrewLoader.js.map +1 -0
  288. package/dist/crew/CrewRegistry.d.ts +30 -0
  289. package/dist/crew/CrewRegistry.d.ts.map +1 -0
  290. package/dist/crew/CrewRegistry.js +56 -0
  291. package/dist/crew/CrewRegistry.js.map +1 -0
  292. package/dist/crew/types.d.ts +79 -0
  293. package/dist/crew/types.d.ts.map +1 -0
  294. package/dist/crew/types.js +36 -0
  295. package/dist/crew/types.js.map +1 -0
  296. package/dist/cron/CronScheduler.d.ts +40 -0
  297. package/dist/cron/CronScheduler.d.ts.map +1 -0
  298. package/dist/cron/CronScheduler.js +119 -0
  299. package/dist/cron/CronScheduler.js.map +1 -0
  300. package/dist/cron/CronStore.d.ts +73 -0
  301. package/dist/cron/CronStore.d.ts.map +1 -0
  302. package/dist/cron/CronStore.js +209 -0
  303. package/dist/cron/CronStore.js.map +1 -0
  304. package/dist/cron/cronParser.d.ts +33 -0
  305. package/dist/cron/cronParser.d.ts.map +1 -0
  306. package/dist/cron/cronParser.js +211 -0
  307. package/dist/cron/cronParser.js.map +1 -0
  308. package/dist/daemon/DaemonManager.d.ts +59 -0
  309. package/dist/daemon/DaemonManager.d.ts.map +1 -0
  310. package/dist/daemon/DaemonManager.js +380 -0
  311. package/dist/daemon/DaemonManager.js.map +1 -0
  312. package/dist/embeddings/Embeddings.d.ts +70 -0
  313. package/dist/embeddings/Embeddings.d.ts.map +1 -0
  314. package/dist/embeddings/Embeddings.js +252 -0
  315. package/dist/embeddings/Embeddings.js.map +1 -0
  316. package/dist/embeddings/TfIdf.d.ts +26 -0
  317. package/dist/embeddings/TfIdf.d.ts.map +1 -0
  318. package/dist/embeddings/TfIdf.js +88 -0
  319. package/dist/embeddings/TfIdf.js.map +1 -0
  320. package/dist/events/eventBus.d.ts +97 -0
  321. package/dist/events/eventBus.d.ts.map +1 -0
  322. package/dist/events/eventBus.js +26 -0
  323. package/dist/events/eventBus.js.map +1 -0
  324. package/dist/goals/GoalStore.d.ts +40 -0
  325. package/dist/goals/GoalStore.d.ts.map +1 -0
  326. package/dist/goals/GoalStore.js +82 -0
  327. package/dist/goals/GoalStore.js.map +1 -0
  328. package/dist/hooks/HookRunner.d.ts +80 -0
  329. package/dist/hooks/HookRunner.d.ts.map +1 -0
  330. package/dist/hooks/HookRunner.js +218 -0
  331. package/dist/hooks/HookRunner.js.map +1 -0
  332. package/dist/integrations/IntegrationCrewSync.d.ts +33 -0
  333. package/dist/integrations/IntegrationCrewSync.d.ts.map +1 -0
  334. package/dist/integrations/IntegrationCrewSync.js +96 -0
  335. package/dist/integrations/IntegrationCrewSync.js.map +1 -0
  336. package/dist/integrations/IntegrationManager.d.ts +116 -0
  337. package/dist/integrations/IntegrationManager.d.ts.map +1 -0
  338. package/dist/integrations/IntegrationManager.js +580 -0
  339. package/dist/integrations/IntegrationManager.js.map +1 -0
  340. package/dist/integrations/IntegrationStore.d.ts +42 -0
  341. package/dist/integrations/IntegrationStore.d.ts.map +1 -0
  342. package/dist/integrations/IntegrationStore.js +146 -0
  343. package/dist/integrations/IntegrationStore.js.map +1 -0
  344. package/dist/integrations/authFetch.d.ts +21 -0
  345. package/dist/integrations/authFetch.d.ts.map +1 -0
  346. package/dist/integrations/authFetch.js +36 -0
  347. package/dist/integrations/authFetch.js.map +1 -0
  348. package/dist/integrations/facebook/FacebookClient.d.ts +33 -0
  349. package/dist/integrations/facebook/FacebookClient.d.ts.map +1 -0
  350. package/dist/integrations/facebook/FacebookClient.js +88 -0
  351. package/dist/integrations/facebook/FacebookClient.js.map +1 -0
  352. package/dist/integrations/facebook/tools.d.ts +9 -0
  353. package/dist/integrations/facebook/tools.d.ts.map +1 -0
  354. package/dist/integrations/facebook/tools.js +324 -0
  355. package/dist/integrations/facebook/tools.js.map +1 -0
  356. package/dist/integrations/gmail/GmailClient.d.ts +34 -0
  357. package/dist/integrations/gmail/GmailClient.d.ts.map +1 -0
  358. package/dist/integrations/gmail/GmailClient.js +69 -0
  359. package/dist/integrations/gmail/GmailClient.js.map +1 -0
  360. package/dist/integrations/gmail/tools.d.ts +14 -0
  361. package/dist/integrations/gmail/tools.d.ts.map +1 -0
  362. package/dist/integrations/gmail/tools.js +295 -0
  363. package/dist/integrations/gmail/tools.js.map +1 -0
  364. package/dist/integrations/google-calendar/CalendarClient.d.ts +16 -0
  365. package/dist/integrations/google-calendar/CalendarClient.d.ts.map +1 -0
  366. package/dist/integrations/google-calendar/CalendarClient.js +39 -0
  367. package/dist/integrations/google-calendar/CalendarClient.js.map +1 -0
  368. package/dist/integrations/google-calendar/tools.d.ts +15 -0
  369. package/dist/integrations/google-calendar/tools.d.ts.map +1 -0
  370. package/dist/integrations/google-calendar/tools.js +246 -0
  371. package/dist/integrations/google-calendar/tools.js.map +1 -0
  372. package/dist/integrations/instagram/InstagramClient.d.ts +33 -0
  373. package/dist/integrations/instagram/InstagramClient.d.ts.map +1 -0
  374. package/dist/integrations/instagram/InstagramClient.js +93 -0
  375. package/dist/integrations/instagram/InstagramClient.js.map +1 -0
  376. package/dist/integrations/instagram/tools.d.ts +17 -0
  377. package/dist/integrations/instagram/tools.d.ts.map +1 -0
  378. package/dist/integrations/instagram/tools.js +348 -0
  379. package/dist/integrations/instagram/tools.js.map +1 -0
  380. package/dist/integrations/keys.d.ts +56 -0
  381. package/dist/integrations/keys.d.ts.map +1 -0
  382. package/dist/integrations/keys.js +174 -0
  383. package/dist/integrations/keys.js.map +1 -0
  384. package/dist/integrations/linkedin/LinkedInClient.d.ts +24 -0
  385. package/dist/integrations/linkedin/LinkedInClient.d.ts.map +1 -0
  386. package/dist/integrations/linkedin/LinkedInClient.js +56 -0
  387. package/dist/integrations/linkedin/LinkedInClient.js.map +1 -0
  388. package/dist/integrations/linkedin/tools.d.ts +14 -0
  389. package/dist/integrations/linkedin/tools.d.ts.map +1 -0
  390. package/dist/integrations/linkedin/tools.js +154 -0
  391. package/dist/integrations/linkedin/tools.js.map +1 -0
  392. package/dist/integrations/pkce.d.ts +17 -0
  393. package/dist/integrations/pkce.d.ts.map +1 -0
  394. package/dist/integrations/pkce.js +22 -0
  395. package/dist/integrations/pkce.js.map +1 -0
  396. package/dist/integrations/providers/github.d.ts +20 -0
  397. package/dist/integrations/providers/github.d.ts.map +1 -0
  398. package/dist/integrations/providers/github.js +113 -0
  399. package/dist/integrations/providers/github.js.map +1 -0
  400. package/dist/integrations/providers/google.d.ts +17 -0
  401. package/dist/integrations/providers/google.d.ts.map +1 -0
  402. package/dist/integrations/providers/google.js +115 -0
  403. package/dist/integrations/providers/google.js.map +1 -0
  404. package/dist/integrations/providers/linkedin.d.ts +22 -0
  405. package/dist/integrations/providers/linkedin.d.ts.map +1 -0
  406. package/dist/integrations/providers/linkedin.js +103 -0
  407. package/dist/integrations/providers/linkedin.js.map +1 -0
  408. package/dist/integrations/providers/meta.d.ts +19 -0
  409. package/dist/integrations/providers/meta.d.ts.map +1 -0
  410. package/dist/integrations/providers/meta.js +116 -0
  411. package/dist/integrations/providers/meta.js.map +1 -0
  412. package/dist/integrations/providers/notion.d.ts +21 -0
  413. package/dist/integrations/providers/notion.d.ts.map +1 -0
  414. package/dist/integrations/providers/notion.js +96 -0
  415. package/dist/integrations/providers/notion.js.map +1 -0
  416. package/dist/integrations/providers/reddit.d.ts +18 -0
  417. package/dist/integrations/providers/reddit.d.ts.map +1 -0
  418. package/dist/integrations/providers/reddit.js +104 -0
  419. package/dist/integrations/providers/reddit.js.map +1 -0
  420. package/dist/integrations/providers/tiktok.d.ts +28 -0
  421. package/dist/integrations/providers/tiktok.d.ts.map +1 -0
  422. package/dist/integrations/providers/tiktok.js +138 -0
  423. package/dist/integrations/providers/tiktok.js.map +1 -0
  424. package/dist/integrations/providers/twitter.d.ts +26 -0
  425. package/dist/integrations/providers/twitter.d.ts.map +1 -0
  426. package/dist/integrations/providers/twitter.js +141 -0
  427. package/dist/integrations/providers/twitter.js.map +1 -0
  428. package/dist/integrations/reddit/RedditClient.d.ts +18 -0
  429. package/dist/integrations/reddit/RedditClient.d.ts.map +1 -0
  430. package/dist/integrations/reddit/RedditClient.js +54 -0
  431. package/dist/integrations/reddit/RedditClient.js.map +1 -0
  432. package/dist/integrations/reddit/tools.d.ts +16 -0
  433. package/dist/integrations/reddit/tools.d.ts.map +1 -0
  434. package/dist/integrations/reddit/tools.js +293 -0
  435. package/dist/integrations/reddit/tools.js.map +1 -0
  436. package/dist/integrations/tiktok/TikTokClient.d.ts +21 -0
  437. package/dist/integrations/tiktok/TikTokClient.d.ts.map +1 -0
  438. package/dist/integrations/tiktok/TikTokClient.js +44 -0
  439. package/dist/integrations/tiktok/TikTokClient.js.map +1 -0
  440. package/dist/integrations/tiktok/tools.d.ts +17 -0
  441. package/dist/integrations/tiktok/tools.d.ts.map +1 -0
  442. package/dist/integrations/tiktok/tools.js +258 -0
  443. package/dist/integrations/tiktok/tools.js.map +1 -0
  444. package/dist/integrations/tools.d.ts +20 -0
  445. package/dist/integrations/tools.d.ts.map +1 -0
  446. package/dist/integrations/tools.js +43 -0
  447. package/dist/integrations/tools.js.map +1 -0
  448. package/dist/integrations/twitter/TwitterClient.d.ts +19 -0
  449. package/dist/integrations/twitter/TwitterClient.d.ts.map +1 -0
  450. package/dist/integrations/twitter/TwitterClient.js +51 -0
  451. package/dist/integrations/twitter/TwitterClient.js.map +1 -0
  452. package/dist/integrations/twitter/tools.d.ts +11 -0
  453. package/dist/integrations/twitter/tools.d.ts.map +1 -0
  454. package/dist/integrations/twitter/tools.js +459 -0
  455. package/dist/integrations/twitter/tools.js.map +1 -0
  456. package/dist/integrations/types.d.ts +118 -0
  457. package/dist/integrations/types.d.ts.map +1 -0
  458. package/dist/integrations/types.js +10 -0
  459. package/dist/integrations/types.js.map +1 -0
  460. package/dist/integrations/youtube/YouTubeClient.d.ts +45 -0
  461. package/dist/integrations/youtube/YouTubeClient.d.ts.map +1 -0
  462. package/dist/integrations/youtube/YouTubeClient.js +115 -0
  463. package/dist/integrations/youtube/YouTubeClient.js.map +1 -0
  464. package/dist/integrations/youtube/tools.d.ts +14 -0
  465. package/dist/integrations/youtube/tools.d.ts.map +1 -0
  466. package/dist/integrations/youtube/tools.js +500 -0
  467. package/dist/integrations/youtube/tools.js.map +1 -0
  468. package/dist/learning/BackgroundReviewer.d.ts +43 -0
  469. package/dist/learning/BackgroundReviewer.d.ts.map +1 -0
  470. package/dist/learning/BackgroundReviewer.js +143 -0
  471. package/dist/learning/BackgroundReviewer.js.map +1 -0
  472. package/dist/learning/ExtractionPipeline.d.ts +46 -0
  473. package/dist/learning/ExtractionPipeline.d.ts.map +1 -0
  474. package/dist/learning/ExtractionPipeline.js +220 -0
  475. package/dist/learning/ExtractionPipeline.js.map +1 -0
  476. package/dist/learning/MemoryDecay.d.ts +63 -0
  477. package/dist/learning/MemoryDecay.d.ts.map +1 -0
  478. package/dist/learning/MemoryDecay.js +204 -0
  479. package/dist/learning/MemoryDecay.js.map +1 -0
  480. package/dist/learning/SmartRecall.d.ts +58 -0
  481. package/dist/learning/SmartRecall.d.ts.map +1 -0
  482. package/dist/learning/SmartRecall.js +182 -0
  483. package/dist/learning/SmartRecall.js.map +1 -0
  484. package/dist/mcp/MCPIntegrationBridge.d.ts +40 -0
  485. package/dist/mcp/MCPIntegrationBridge.d.ts.map +1 -0
  486. package/dist/mcp/MCPIntegrationBridge.js +136 -0
  487. package/dist/mcp/MCPIntegrationBridge.js.map +1 -0
  488. package/dist/mcp/MCPManager.d.ts +126 -0
  489. package/dist/mcp/MCPManager.d.ts.map +1 -0
  490. package/dist/mcp/MCPManager.js +418 -0
  491. package/dist/mcp/MCPManager.js.map +1 -0
  492. package/dist/mcp/MCPStore.d.ts +41 -0
  493. package/dist/mcp/MCPStore.d.ts.map +1 -0
  494. package/dist/mcp/MCPStore.js +102 -0
  495. package/dist/mcp/MCPStore.js.map +1 -0
  496. package/dist/mcp/defaults.d.ts +51 -0
  497. package/dist/mcp/defaults.d.ts.map +1 -0
  498. package/dist/mcp/defaults.js +243 -0
  499. package/dist/mcp/defaults.js.map +1 -0
  500. package/dist/memory/DeclarativeMemoryStore.d.ts +54 -0
  501. package/dist/memory/DeclarativeMemoryStore.d.ts.map +1 -0
  502. package/dist/memory/DeclarativeMemoryStore.js +195 -0
  503. package/dist/memory/DeclarativeMemoryStore.js.map +1 -0
  504. package/dist/memory/MemoryStore.d.ts +65 -0
  505. package/dist/memory/MemoryStore.d.ts.map +1 -0
  506. package/dist/memory/MemoryStore.js +189 -0
  507. package/dist/memory/MemoryStore.js.map +1 -0
  508. package/dist/memory/SessionStore.d.ts +207 -0
  509. package/dist/memory/SessionStore.d.ts.map +1 -0
  510. package/dist/memory/SessionStore.js +391 -0
  511. package/dist/memory/SessionStore.js.map +1 -0
  512. package/dist/models/ModelRouter.d.ts +57 -0
  513. package/dist/models/ModelRouter.d.ts.map +1 -0
  514. package/dist/models/ModelRouter.js +301 -0
  515. package/dist/models/ModelRouter.js.map +1 -0
  516. package/dist/models/discovery.d.ts +44 -0
  517. package/dist/models/discovery.d.ts.map +1 -0
  518. package/dist/models/discovery.js +456 -0
  519. package/dist/models/discovery.js.map +1 -0
  520. package/dist/models/providers.d.ts +82 -0
  521. package/dist/models/providers.d.ts.map +1 -0
  522. package/dist/models/providers.js +455 -0
  523. package/dist/models/providers.js.map +1 -0
  524. package/dist/models/registry.d.ts +13 -0
  525. package/dist/models/registry.d.ts.map +1 -0
  526. package/dist/models/registry.js +42 -0
  527. package/dist/models/registry.js.map +1 -0
  528. package/dist/models/types.d.ts +24 -0
  529. package/dist/models/types.d.ts.map +1 -0
  530. package/dist/models/types.js +8 -0
  531. package/dist/models/types.js.map +1 -0
  532. package/dist/projects/ProjectStore.d.ts +73 -0
  533. package/dist/projects/ProjectStore.d.ts.map +1 -0
  534. package/dist/projects/ProjectStore.js +132 -0
  535. package/dist/projects/ProjectStore.js.map +1 -0
  536. package/dist/safety/AuditLog.d.ts +53 -0
  537. package/dist/safety/AuditLog.d.ts.map +1 -0
  538. package/dist/safety/AuditLog.js +170 -0
  539. package/dist/safety/AuditLog.js.map +1 -0
  540. package/dist/safety/CircuitBreaker.d.ts +53 -0
  541. package/dist/safety/CircuitBreaker.d.ts.map +1 -0
  542. package/dist/safety/CircuitBreaker.js +112 -0
  543. package/dist/safety/CircuitBreaker.js.map +1 -0
  544. package/dist/safety/CommandGuard.d.ts +32 -0
  545. package/dist/safety/CommandGuard.d.ts.map +1 -0
  546. package/dist/safety/CommandGuard.js +157 -0
  547. package/dist/safety/CommandGuard.js.map +1 -0
  548. package/dist/safety/DockerSandbox.d.ts +72 -0
  549. package/dist/safety/DockerSandbox.d.ts.map +1 -0
  550. package/dist/safety/DockerSandbox.js +188 -0
  551. package/dist/safety/DockerSandbox.js.map +1 -0
  552. package/dist/safety/EgressGuard.d.ts +35 -0
  553. package/dist/safety/EgressGuard.d.ts.map +1 -0
  554. package/dist/safety/EgressGuard.js +95 -0
  555. package/dist/safety/EgressGuard.js.map +1 -0
  556. package/dist/safety/ExecApproval.d.ts +53 -0
  557. package/dist/safety/ExecApproval.d.ts.map +1 -0
  558. package/dist/safety/ExecApproval.js +120 -0
  559. package/dist/safety/ExecApproval.js.map +1 -0
  560. package/dist/safety/FilesystemGuard.d.ts +94 -0
  561. package/dist/safety/FilesystemGuard.d.ts.map +1 -0
  562. package/dist/safety/FilesystemGuard.js +275 -0
  563. package/dist/safety/FilesystemGuard.js.map +1 -0
  564. package/dist/safety/GitRollback.d.ts +47 -0
  565. package/dist/safety/GitRollback.d.ts.map +1 -0
  566. package/dist/safety/GitRollback.js +161 -0
  567. package/dist/safety/GitRollback.js.map +1 -0
  568. package/dist/safety/HumanApproval.d.ts +65 -0
  569. package/dist/safety/HumanApproval.d.ts.map +1 -0
  570. package/dist/safety/HumanApproval.js +157 -0
  571. package/dist/safety/HumanApproval.js.map +1 -0
  572. package/dist/safety/InputSanitizer.d.ts +59 -0
  573. package/dist/safety/InputSanitizer.d.ts.map +1 -0
  574. package/dist/safety/InputSanitizer.js +111 -0
  575. package/dist/safety/InputSanitizer.js.map +1 -0
  576. package/dist/safety/PermissionGuard.d.ts +49 -0
  577. package/dist/safety/PermissionGuard.d.ts.map +1 -0
  578. package/dist/safety/PermissionGuard.js +136 -0
  579. package/dist/safety/PermissionGuard.js.map +1 -0
  580. package/dist/safety/Sandbox.d.ts +38 -0
  581. package/dist/safety/Sandbox.d.ts.map +1 -0
  582. package/dist/safety/Sandbox.js +82 -0
  583. package/dist/safety/Sandbox.js.map +1 -0
  584. package/dist/safety/SecretScanner.d.ts +67 -0
  585. package/dist/safety/SecretScanner.d.ts.map +1 -0
  586. package/dist/safety/SecretScanner.js +150 -0
  587. package/dist/safety/SecretScanner.js.map +1 -0
  588. package/dist/safety/Supervisor.d.ts +69 -0
  589. package/dist/safety/Supervisor.d.ts.map +1 -0
  590. package/dist/safety/Supervisor.js +165 -0
  591. package/dist/safety/Supervisor.js.map +1 -0
  592. package/dist/scheduler/CronExecutor.d.ts +18 -0
  593. package/dist/scheduler/CronExecutor.d.ts.map +1 -0
  594. package/dist/scheduler/CronExecutor.js +57 -0
  595. package/dist/scheduler/CronExecutor.js.map +1 -0
  596. package/dist/scheduler/DailyLog.d.ts +29 -0
  597. package/dist/scheduler/DailyLog.d.ts.map +1 -0
  598. package/dist/scheduler/DailyLog.js +84 -0
  599. package/dist/scheduler/DailyLog.js.map +1 -0
  600. package/dist/scheduler/DeliveryPresetStore.d.ts +47 -0
  601. package/dist/scheduler/DeliveryPresetStore.d.ts.map +1 -0
  602. package/dist/scheduler/DeliveryPresetStore.js +101 -0
  603. package/dist/scheduler/DeliveryPresetStore.js.map +1 -0
  604. package/dist/scheduler/GoalPulse.d.ts +42 -0
  605. package/dist/scheduler/GoalPulse.d.ts.map +1 -0
  606. package/dist/scheduler/GoalPulse.js +123 -0
  607. package/dist/scheduler/GoalPulse.js.map +1 -0
  608. package/dist/scheduler/Heartbeat.d.ts +87 -0
  609. package/dist/scheduler/Heartbeat.d.ts.map +1 -0
  610. package/dist/scheduler/Heartbeat.js +313 -0
  611. package/dist/scheduler/Heartbeat.js.map +1 -0
  612. package/dist/scheduler/MorningPulse.d.ts +23 -0
  613. package/dist/scheduler/MorningPulse.d.ts.map +1 -0
  614. package/dist/scheduler/MorningPulse.js +45 -0
  615. package/dist/scheduler/MorningPulse.js.map +1 -0
  616. package/dist/server/index.d.ts +77 -0
  617. package/dist/server/index.d.ts.map +1 -0
  618. package/dist/server/index.js +227 -0
  619. package/dist/server/index.js.map +1 -0
  620. package/dist/server/middleware/requireAuth.d.ts +41 -0
  621. package/dist/server/middleware/requireAuth.d.ts.map +1 -0
  622. package/dist/server/middleware/requireAuth.js +72 -0
  623. package/dist/server/middleware/requireAuth.js.map +1 -0
  624. package/dist/server/middleware/security.d.ts +83 -0
  625. package/dist/server/middleware/security.d.ts.map +1 -0
  626. package/dist/server/middleware/security.js +171 -0
  627. package/dist/server/middleware/security.js.map +1 -0
  628. package/dist/server/routes/auth.d.ts +24 -0
  629. package/dist/server/routes/auth.d.ts.map +1 -0
  630. package/dist/server/routes/auth.js +65 -0
  631. package/dist/server/routes/auth.js.map +1 -0
  632. package/dist/server/routes/channels.d.ts +7 -0
  633. package/dist/server/routes/channels.d.ts.map +1 -0
  634. package/dist/server/routes/channels.js +90 -0
  635. package/dist/server/routes/channels.js.map +1 -0
  636. package/dist/server/routes/chat.d.ts +19 -0
  637. package/dist/server/routes/chat.d.ts.map +1 -0
  638. package/dist/server/routes/chat.js +209 -0
  639. package/dist/server/routes/chat.js.map +1 -0
  640. package/dist/server/routes/compat.d.ts +8 -0
  641. package/dist/server/routes/compat.d.ts.map +1 -0
  642. package/dist/server/routes/compat.js +661 -0
  643. package/dist/server/routes/compat.js.map +1 -0
  644. package/dist/server/routes/config.d.ts +10 -0
  645. package/dist/server/routes/config.d.ts.map +1 -0
  646. package/dist/server/routes/config.js +142 -0
  647. package/dist/server/routes/config.js.map +1 -0
  648. package/dist/server/routes/costs.d.ts +7 -0
  649. package/dist/server/routes/costs.d.ts.map +1 -0
  650. package/dist/server/routes/costs.js +23 -0
  651. package/dist/server/routes/costs.js.map +1 -0
  652. package/dist/server/routes/crew.d.ts +21 -0
  653. package/dist/server/routes/crew.d.ts.map +1 -0
  654. package/dist/server/routes/crew.js +372 -0
  655. package/dist/server/routes/crew.js.map +1 -0
  656. package/dist/server/routes/cron.d.ts +9 -0
  657. package/dist/server/routes/cron.d.ts.map +1 -0
  658. package/dist/server/routes/cron.js +91 -0
  659. package/dist/server/routes/cron.js.map +1 -0
  660. package/dist/server/routes/deliveryPresets.d.ts +13 -0
  661. package/dist/server/routes/deliveryPresets.d.ts.map +1 -0
  662. package/dist/server/routes/deliveryPresets.js +42 -0
  663. package/dist/server/routes/deliveryPresets.js.map +1 -0
  664. package/dist/server/routes/goals.d.ts +7 -0
  665. package/dist/server/routes/goals.d.ts.map +1 -0
  666. package/dist/server/routes/goals.js +65 -0
  667. package/dist/server/routes/goals.js.map +1 -0
  668. package/dist/server/routes/integrations.d.ts +35 -0
  669. package/dist/server/routes/integrations.d.ts.map +1 -0
  670. package/dist/server/routes/integrations.js +448 -0
  671. package/dist/server/routes/integrations.js.map +1 -0
  672. package/dist/server/routes/mcp.d.ts +7 -0
  673. package/dist/server/routes/mcp.d.ts.map +1 -0
  674. package/dist/server/routes/mcp.js +88 -0
  675. package/dist/server/routes/mcp.js.map +1 -0
  676. package/dist/server/routes/memory.d.ts +15 -0
  677. package/dist/server/routes/memory.d.ts.map +1 -0
  678. package/dist/server/routes/memory.js +104 -0
  679. package/dist/server/routes/memory.js.map +1 -0
  680. package/dist/server/routes/providers.d.ts +15 -0
  681. package/dist/server/routes/providers.d.ts.map +1 -0
  682. package/dist/server/routes/providers.js +209 -0
  683. package/dist/server/routes/providers.js.map +1 -0
  684. package/dist/server/routes/security.d.ts +15 -0
  685. package/dist/server/routes/security.d.ts.map +1 -0
  686. package/dist/server/routes/security.js +117 -0
  687. package/dist/server/routes/security.js.map +1 -0
  688. package/dist/server/routes/sessions.d.ts +12 -0
  689. package/dist/server/routes/sessions.d.ts.map +1 -0
  690. package/dist/server/routes/sessions.js +172 -0
  691. package/dist/server/routes/sessions.js.map +1 -0
  692. package/dist/server/routes/skills.d.ts +11 -0
  693. package/dist/server/routes/skills.d.ts.map +1 -0
  694. package/dist/server/routes/skills.js +214 -0
  695. package/dist/server/routes/skills.js.map +1 -0
  696. package/dist/server/routes/tasks.d.ts +10 -0
  697. package/dist/server/routes/tasks.d.ts.map +1 -0
  698. package/dist/server/routes/tasks.js +38 -0
  699. package/dist/server/routes/tasks.js.map +1 -0
  700. package/dist/server/routes/teams.d.ts +7 -0
  701. package/dist/server/routes/teams.d.ts.map +1 -0
  702. package/dist/server/routes/teams.js +61 -0
  703. package/dist/server/routes/teams.js.map +1 -0
  704. package/dist/server/routes/tunnel.d.ts +12 -0
  705. package/dist/server/routes/tunnel.d.ts.map +1 -0
  706. package/dist/server/routes/tunnel.js +18 -0
  707. package/dist/server/routes/tunnel.js.map +1 -0
  708. package/dist/server/routes/vault.d.ts +15 -0
  709. package/dist/server/routes/vault.d.ts.map +1 -0
  710. package/dist/server/routes/vault.js +82 -0
  711. package/dist/server/routes/vault.js.map +1 -0
  712. package/dist/server/routes/voice.d.ts +16 -0
  713. package/dist/server/routes/voice.d.ts.map +1 -0
  714. package/dist/server/routes/voice.js +431 -0
  715. package/dist/server/routes/voice.js.map +1 -0
  716. package/dist/server/routes/watchers.d.ts +14 -0
  717. package/dist/server/routes/watchers.d.ts.map +1 -0
  718. package/dist/server/routes/watchers.js +143 -0
  719. package/dist/server/routes/watchers.js.map +1 -0
  720. package/dist/services/Cleanup.d.ts +50 -0
  721. package/dist/services/Cleanup.d.ts.map +1 -0
  722. package/dist/services/Cleanup.js +104 -0
  723. package/dist/services/Cleanup.js.map +1 -0
  724. package/dist/skills/SecurityScanner.d.ts +18 -0
  725. package/dist/skills/SecurityScanner.d.ts.map +1 -0
  726. package/dist/skills/SecurityScanner.js +49 -0
  727. package/dist/skills/SecurityScanner.js.map +1 -0
  728. package/dist/skills/SkillLoader.d.ts +45 -0
  729. package/dist/skills/SkillLoader.d.ts.map +1 -0
  730. package/dist/skills/SkillLoader.js +336 -0
  731. package/dist/skills/SkillLoader.js.map +1 -0
  732. package/dist/skills/SkillRegistry.d.ts +78 -0
  733. package/dist/skills/SkillRegistry.d.ts.map +1 -0
  734. package/dist/skills/SkillRegistry.js +185 -0
  735. package/dist/skills/SkillRegistry.js.map +1 -0
  736. package/dist/skills/SkillSnapshot.d.ts +37 -0
  737. package/dist/skills/SkillSnapshot.d.ts.map +1 -0
  738. package/dist/skills/SkillSnapshot.js +106 -0
  739. package/dist/skills/SkillSnapshot.js.map +1 -0
  740. package/dist/skills/types.d.ts +184 -0
  741. package/dist/skills/types.d.ts.map +1 -0
  742. package/dist/skills/types.js +58 -0
  743. package/dist/skills/types.js.map +1 -0
  744. package/dist/tasks/TaskStore.d.ts +70 -0
  745. package/dist/tasks/TaskStore.d.ts.map +1 -0
  746. package/dist/tasks/TaskStore.js +200 -0
  747. package/dist/tasks/TaskStore.js.map +1 -0
  748. package/dist/teams/TeamRunner.d.ts +46 -0
  749. package/dist/teams/TeamRunner.d.ts.map +1 -0
  750. package/dist/teams/TeamRunner.js +186 -0
  751. package/dist/teams/TeamRunner.js.map +1 -0
  752. package/dist/teams/TeamStore.d.ts +84 -0
  753. package/dist/teams/TeamStore.d.ts.map +1 -0
  754. package/dist/teams/TeamStore.js +231 -0
  755. package/dist/teams/TeamStore.js.map +1 -0
  756. package/dist/teams/templates.d.ts +18 -0
  757. package/dist/teams/templates.d.ts.map +1 -0
  758. package/dist/teams/templates.js +89 -0
  759. package/dist/teams/templates.js.map +1 -0
  760. package/dist/tools/core/applyPatch.d.ts +19 -0
  761. package/dist/tools/core/applyPatch.d.ts.map +1 -0
  762. package/dist/tools/core/applyPatch.js +51 -0
  763. package/dist/tools/core/applyPatch.js.map +1 -0
  764. package/dist/tools/core/broadcast.d.ts +67 -0
  765. package/dist/tools/core/broadcast.d.ts.map +1 -0
  766. package/dist/tools/core/broadcast.js +93 -0
  767. package/dist/tools/core/broadcast.js.map +1 -0
  768. package/dist/tools/core/clipboard.d.ts +17 -0
  769. package/dist/tools/core/clipboard.d.ts.map +1 -0
  770. package/dist/tools/core/clipboard.js +38 -0
  771. package/dist/tools/core/clipboard.js.map +1 -0
  772. package/dist/tools/core/createDocument.d.ts +27 -0
  773. package/dist/tools/core/createDocument.d.ts.map +1 -0
  774. package/dist/tools/core/createDocument.js +297 -0
  775. package/dist/tools/core/createDocument.js.map +1 -0
  776. package/dist/tools/core/cronTool.d.ts +55 -0
  777. package/dist/tools/core/cronTool.d.ts.map +1 -0
  778. package/dist/tools/core/cronTool.js +162 -0
  779. package/dist/tools/core/cronTool.js.map +1 -0
  780. package/dist/tools/core/desktop.d.ts +16 -0
  781. package/dist/tools/core/desktop.d.ts.map +1 -0
  782. package/dist/tools/core/desktop.js +480 -0
  783. package/dist/tools/core/desktop.js.map +1 -0
  784. package/dist/tools/core/editFile.d.ts +43 -0
  785. package/dist/tools/core/editFile.d.ts.map +1 -0
  786. package/dist/tools/core/editFile.js +104 -0
  787. package/dist/tools/core/editFile.js.map +1 -0
  788. package/dist/tools/core/executeCommand.d.ts +36 -0
  789. package/dist/tools/core/executeCommand.d.ts.map +1 -0
  790. package/dist/tools/core/executeCommand.js +92 -0
  791. package/dist/tools/core/executeCommand.js.map +1 -0
  792. package/dist/tools/core/fetchUrl.d.ts +38 -0
  793. package/dist/tools/core/fetchUrl.d.ts.map +1 -0
  794. package/dist/tools/core/fetchUrl.js +111 -0
  795. package/dist/tools/core/fetchUrl.js.map +1 -0
  796. package/dist/tools/core/generateImage.d.ts +42 -0
  797. package/dist/tools/core/generateImage.d.ts.map +1 -0
  798. package/dist/tools/core/generateImage.js +143 -0
  799. package/dist/tools/core/generateImage.js.map +1 -0
  800. package/dist/tools/core/generateMusic.d.ts +42 -0
  801. package/dist/tools/core/generateMusic.d.ts.map +1 -0
  802. package/dist/tools/core/generateMusic.js +158 -0
  803. package/dist/tools/core/generateMusic.js.map +1 -0
  804. package/dist/tools/core/generateVideo.d.ts +45 -0
  805. package/dist/tools/core/generateVideo.d.ts.map +1 -0
  806. package/dist/tools/core/generateVideo.js +447 -0
  807. package/dist/tools/core/generateVideo.js.map +1 -0
  808. package/dist/tools/core/gitTool.d.ts +81 -0
  809. package/dist/tools/core/gitTool.d.ts.map +1 -0
  810. package/dist/tools/core/gitTool.js +196 -0
  811. package/dist/tools/core/gitTool.js.map +1 -0
  812. package/dist/tools/core/glob.d.ts +26 -0
  813. package/dist/tools/core/glob.d.ts.map +1 -0
  814. package/dist/tools/core/glob.js +104 -0
  815. package/dist/tools/core/glob.js.map +1 -0
  816. package/dist/tools/core/goalTool.d.ts +50 -0
  817. package/dist/tools/core/goalTool.d.ts.map +1 -0
  818. package/dist/tools/core/goalTool.js +150 -0
  819. package/dist/tools/core/goalTool.js.map +1 -0
  820. package/dist/tools/core/grep.d.ts +32 -0
  821. package/dist/tools/core/grep.d.ts.map +1 -0
  822. package/dist/tools/core/grep.js +83 -0
  823. package/dist/tools/core/grep.js.map +1 -0
  824. package/dist/tools/core/imageAnalysis.d.ts +18 -0
  825. package/dist/tools/core/imageAnalysis.d.ts.map +1 -0
  826. package/dist/tools/core/imageAnalysis.js +77 -0
  827. package/dist/tools/core/imageAnalysis.js.map +1 -0
  828. package/dist/tools/core/imageOps.d.ts +70 -0
  829. package/dist/tools/core/imageOps.d.ts.map +1 -0
  830. package/dist/tools/core/imageOps.js +179 -0
  831. package/dist/tools/core/imageOps.js.map +1 -0
  832. package/dist/tools/core/index.d.ts +50 -0
  833. package/dist/tools/core/index.d.ts.map +1 -0
  834. package/dist/tools/core/index.js +159 -0
  835. package/dist/tools/core/index.js.map +1 -0
  836. package/dist/tools/core/listCrews.d.ts +41 -0
  837. package/dist/tools/core/listCrews.d.ts.map +1 -0
  838. package/dist/tools/core/listCrews.js +50 -0
  839. package/dist/tools/core/listCrews.js.map +1 -0
  840. package/dist/tools/core/listDirectory.d.ts +33 -0
  841. package/dist/tools/core/listDirectory.d.ts.map +1 -0
  842. package/dist/tools/core/listDirectory.js +89 -0
  843. package/dist/tools/core/listDirectory.js.map +1 -0
  844. package/dist/tools/core/manageAgents.d.ts +48 -0
  845. package/dist/tools/core/manageAgents.d.ts.map +1 -0
  846. package/dist/tools/core/manageAgents.js +104 -0
  847. package/dist/tools/core/manageAgents.js.map +1 -0
  848. package/dist/tools/core/manageMCP.d.ts +52 -0
  849. package/dist/tools/core/manageMCP.d.ts.map +1 -0
  850. package/dist/tools/core/manageMCP.js +160 -0
  851. package/dist/tools/core/manageMCP.js.map +1 -0
  852. package/dist/tools/core/memory.d.ts +49 -0
  853. package/dist/tools/core/memory.d.ts.map +1 -0
  854. package/dist/tools/core/memory.js +80 -0
  855. package/dist/tools/core/memory.js.map +1 -0
  856. package/dist/tools/core/memoryRecall.d.ts +39 -0
  857. package/dist/tools/core/memoryRecall.d.ts.map +1 -0
  858. package/dist/tools/core/memoryRecall.js +42 -0
  859. package/dist/tools/core/memoryRecall.js.map +1 -0
  860. package/dist/tools/core/memorySave.d.ts +33 -0
  861. package/dist/tools/core/memorySave.d.ts.map +1 -0
  862. package/dist/tools/core/memorySave.js +41 -0
  863. package/dist/tools/core/memorySave.js.map +1 -0
  864. package/dist/tools/core/messageChannel.d.ts +27 -0
  865. package/dist/tools/core/messageChannel.d.ts.map +1 -0
  866. package/dist/tools/core/messageChannel.js +59 -0
  867. package/dist/tools/core/messageChannel.js.map +1 -0
  868. package/dist/tools/core/parallelCrew.d.ts +54 -0
  869. package/dist/tools/core/parallelCrew.d.ts.map +1 -0
  870. package/dist/tools/core/parallelCrew.js +60 -0
  871. package/dist/tools/core/parallelCrew.js.map +1 -0
  872. package/dist/tools/core/pollTool.d.ts +36 -0
  873. package/dist/tools/core/pollTool.d.ts.map +1 -0
  874. package/dist/tools/core/pollTool.js +69 -0
  875. package/dist/tools/core/pollTool.js.map +1 -0
  876. package/dist/tools/core/projectTracker.d.ts +71 -0
  877. package/dist/tools/core/projectTracker.d.ts.map +1 -0
  878. package/dist/tools/core/projectTracker.js +181 -0
  879. package/dist/tools/core/projectTracker.js.map +1 -0
  880. package/dist/tools/core/readFile.d.ts +24 -0
  881. package/dist/tools/core/readFile.d.ts.map +1 -0
  882. package/dist/tools/core/readFile.js +49 -0
  883. package/dist/tools/core/readFile.js.map +1 -0
  884. package/dist/tools/core/readPDF.d.ts +32 -0
  885. package/dist/tools/core/readPDF.d.ts.map +1 -0
  886. package/dist/tools/core/readPDF.js +135 -0
  887. package/dist/tools/core/readPDF.js.map +1 -0
  888. package/dist/tools/core/reloadTool.d.ts +36 -0
  889. package/dist/tools/core/reloadTool.d.ts.map +1 -0
  890. package/dist/tools/core/reloadTool.js +109 -0
  891. package/dist/tools/core/reloadTool.js.map +1 -0
  892. package/dist/tools/core/replyToUser.d.ts +14 -0
  893. package/dist/tools/core/replyToUser.d.ts.map +1 -0
  894. package/dist/tools/core/replyToUser.js +19 -0
  895. package/dist/tools/core/replyToUser.js.map +1 -0
  896. package/dist/tools/core/screenCapture.d.ts +17 -0
  897. package/dist/tools/core/screenCapture.d.ts.map +1 -0
  898. package/dist/tools/core/screenCapture.js +34 -0
  899. package/dist/tools/core/screenCapture.js.map +1 -0
  900. package/dist/tools/core/sendEmail.d.ts +34 -0
  901. package/dist/tools/core/sendEmail.d.ts.map +1 -0
  902. package/dist/tools/core/sendEmail.js +56 -0
  903. package/dist/tools/core/sendEmail.js.map +1 -0
  904. package/dist/tools/core/sendFile.d.ts +37 -0
  905. package/dist/tools/core/sendFile.d.ts.map +1 -0
  906. package/dist/tools/core/sendFile.js +53 -0
  907. package/dist/tools/core/sendFile.js.map +1 -0
  908. package/dist/tools/core/sessionSearch.d.ts +62 -0
  909. package/dist/tools/core/sessionSearch.d.ts.map +1 -0
  910. package/dist/tools/core/sessionSearch.js +154 -0
  911. package/dist/tools/core/sessionSearch.js.map +1 -0
  912. package/dist/tools/core/skillManage.d.ts +71 -0
  913. package/dist/tools/core/skillManage.d.ts.map +1 -0
  914. package/dist/tools/core/skillManage.js +353 -0
  915. package/dist/tools/core/skillManage.js.map +1 -0
  916. package/dist/tools/core/skillView.d.ts +46 -0
  917. package/dist/tools/core/skillView.d.ts.map +1 -0
  918. package/dist/tools/core/skillView.js +101 -0
  919. package/dist/tools/core/skillView.js.map +1 -0
  920. package/dist/tools/core/teamTool.d.ts +71 -0
  921. package/dist/tools/core/teamTool.d.ts.map +1 -0
  922. package/dist/tools/core/teamTool.js +132 -0
  923. package/dist/tools/core/teamTool.js.map +1 -0
  924. package/dist/tools/core/textToSpeech.d.ts +25 -0
  925. package/dist/tools/core/textToSpeech.d.ts.map +1 -0
  926. package/dist/tools/core/textToSpeech.js +87 -0
  927. package/dist/tools/core/textToSpeech.js.map +1 -0
  928. package/dist/tools/core/transcribeAudio.d.ts +21 -0
  929. package/dist/tools/core/transcribeAudio.d.ts.map +1 -0
  930. package/dist/tools/core/transcribeAudio.js +27 -0
  931. package/dist/tools/core/transcribeAudio.js.map +1 -0
  932. package/dist/tools/core/useCrew.d.ts +38 -0
  933. package/dist/tools/core/useCrew.d.ts.map +1 -0
  934. package/dist/tools/core/useCrew.js +48 -0
  935. package/dist/tools/core/useCrew.js.map +1 -0
  936. package/dist/tools/core/useMCP.d.ts +40 -0
  937. package/dist/tools/core/useMCP.d.ts.map +1 -0
  938. package/dist/tools/core/useMCP.js +64 -0
  939. package/dist/tools/core/useMCP.js.map +1 -0
  940. package/dist/tools/core/watcherTool.d.ts +47 -0
  941. package/dist/tools/core/watcherTool.d.ts.map +1 -0
  942. package/dist/tools/core/watcherTool.js +119 -0
  943. package/dist/tools/core/watcherTool.js.map +1 -0
  944. package/dist/tools/core/webFetch.d.ts +48 -0
  945. package/dist/tools/core/webFetch.d.ts.map +1 -0
  946. package/dist/tools/core/webFetch.js +265 -0
  947. package/dist/tools/core/webFetch.js.map +1 -0
  948. package/dist/tools/core/webSearch.d.ts +55 -0
  949. package/dist/tools/core/webSearch.d.ts.map +1 -0
  950. package/dist/tools/core/webSearch.js +429 -0
  951. package/dist/tools/core/webSearch.js.map +1 -0
  952. package/dist/tools/core/writeFile.d.ts +27 -0
  953. package/dist/tools/core/writeFile.d.ts.map +1 -0
  954. package/dist/tools/core/writeFile.js +51 -0
  955. package/dist/tools/core/writeFile.js.map +1 -0
  956. package/dist/tools/registry.d.ts +36 -0
  957. package/dist/tools/registry.d.ts.map +1 -0
  958. package/dist/tools/registry.js +73 -0
  959. package/dist/tools/registry.js.map +1 -0
  960. package/dist/tools/types.d.ts +50 -0
  961. package/dist/tools/types.d.ts.map +1 -0
  962. package/dist/tools/types.js +20 -0
  963. package/dist/tools/types.js.map +1 -0
  964. package/dist/tunnels/TunnelManager.d.ts +52 -0
  965. package/dist/tunnels/TunnelManager.d.ts.map +1 -0
  966. package/dist/tunnels/TunnelManager.js +183 -0
  967. package/dist/tunnels/TunnelManager.js.map +1 -0
  968. package/dist/tunnels/urls.d.ts +20 -0
  969. package/dist/tunnels/urls.d.ts.map +1 -0
  970. package/dist/tunnels/urls.js +22 -0
  971. package/dist/tunnels/urls.js.map +1 -0
  972. package/dist/util/errors.d.ts +54 -0
  973. package/dist/util/errors.d.ts.map +1 -0
  974. package/dist/util/errors.js +102 -0
  975. package/dist/util/errors.js.map +1 -0
  976. package/dist/util/logger.d.ts +21 -0
  977. package/dist/util/logger.d.ts.map +1 -0
  978. package/dist/util/logger.js +62 -0
  979. package/dist/util/logger.js.map +1 -0
  980. package/dist/util/msgText.d.ts +16 -0
  981. package/dist/util/msgText.d.ts.map +1 -0
  982. package/dist/util/msgText.js +65 -0
  983. package/dist/util/msgText.js.map +1 -0
  984. package/dist/util/result.d.ts +24 -0
  985. package/dist/util/result.d.ts.map +1 -0
  986. package/dist/util/result.js +35 -0
  987. package/dist/util/result.js.map +1 -0
  988. package/dist/util/tokenEstimate.d.ts +12 -0
  989. package/dist/util/tokenEstimate.d.ts.map +1 -0
  990. package/dist/util/tokenEstimate.js +22 -0
  991. package/dist/util/tokenEstimate.js.map +1 -0
  992. package/dist/voice/DaemoraLLM.d.ts +44 -0
  993. package/dist/voice/DaemoraLLM.d.ts.map +1 -0
  994. package/dist/voice/DaemoraLLM.js +185 -0
  995. package/dist/voice/DaemoraLLM.js.map +1 -0
  996. package/dist/voice/ElevenLabsSTT.d.ts +41 -0
  997. package/dist/voice/ElevenLabsSTT.d.ts.map +1 -0
  998. package/dist/voice/ElevenLabsSTT.js +98 -0
  999. package/dist/voice/ElevenLabsSTT.js.map +1 -0
  1000. package/dist/voice/GroqTTS.d.ts +38 -0
  1001. package/dist/voice/GroqTTS.d.ts.map +1 -0
  1002. package/dist/voice/GroqTTS.js +208 -0
  1003. package/dist/voice/GroqTTS.js.map +1 -0
  1004. package/dist/voice/LiveKitServer.d.ts +30 -0
  1005. package/dist/voice/LiveKitServer.d.ts.map +1 -0
  1006. package/dist/voice/LiveKitServer.js +119 -0
  1007. package/dist/voice/LiveKitServer.js.map +1 -0
  1008. package/dist/voice/LiveKitToken.d.ts +25 -0
  1009. package/dist/voice/LiveKitToken.d.ts.map +1 -0
  1010. package/dist/voice/LiveKitToken.js +44 -0
  1011. package/dist/voice/LiveKitToken.js.map +1 -0
  1012. package/dist/voice/SidecarSupervisor.d.ts +39 -0
  1013. package/dist/voice/SidecarSupervisor.d.ts.map +1 -0
  1014. package/dist/voice/SidecarSupervisor.js +194 -0
  1015. package/dist/voice/SidecarSupervisor.js.map +1 -0
  1016. package/dist/voice/VoiceAgent.d.ts +23 -0
  1017. package/dist/voice/VoiceAgent.d.ts.map +1 -0
  1018. package/dist/voice/VoiceAgent.js +265 -0
  1019. package/dist/voice/VoiceAgent.js.map +1 -0
  1020. package/dist/voice/VoiceProviders.d.ts +29 -0
  1021. package/dist/voice/VoiceProviders.d.ts.map +1 -0
  1022. package/dist/voice/VoiceProviders.js +177 -0
  1023. package/dist/voice/VoiceProviders.js.map +1 -0
  1024. package/dist/voice/VoiceSession.d.ts +106 -0
  1025. package/dist/voice/VoiceSession.d.ts.map +1 -0
  1026. package/dist/voice/VoiceSession.js +454 -0
  1027. package/dist/voice/VoiceSession.js.map +1 -0
  1028. package/dist/voice/VoiceSocket.d.ts +49 -0
  1029. package/dist/voice/VoiceSocket.d.ts.map +1 -0
  1030. package/dist/voice/VoiceSocket.js +274 -0
  1031. package/dist/voice/VoiceSocket.js.map +1 -0
  1032. package/dist/voice/stt/DeepgramSTT.d.ts +26 -0
  1033. package/dist/voice/stt/DeepgramSTT.d.ts.map +1 -0
  1034. package/dist/voice/stt/DeepgramSTT.js +188 -0
  1035. package/dist/voice/stt/DeepgramSTT.js.map +1 -0
  1036. package/dist/voice/stt/GroqSTT.d.ts +28 -0
  1037. package/dist/voice/stt/GroqSTT.d.ts.map +1 -0
  1038. package/dist/voice/stt/GroqSTT.js +169 -0
  1039. package/dist/voice/stt/GroqSTT.js.map +1 -0
  1040. package/dist/voice/stt/STTAdapter.d.ts +47 -0
  1041. package/dist/voice/stt/STTAdapter.d.ts.map +1 -0
  1042. package/dist/voice/stt/STTAdapter.js +27 -0
  1043. package/dist/voice/stt/STTAdapter.js.map +1 -0
  1044. package/dist/voice/transcribe.d.ts +33 -0
  1045. package/dist/voice/transcribe.d.ts.map +1 -0
  1046. package/dist/voice/transcribe.js +73 -0
  1047. package/dist/voice/transcribe.js.map +1 -0
  1048. package/dist/voice/transcriptFilter.d.ts +16 -0
  1049. package/dist/voice/transcriptFilter.d.ts.map +1 -0
  1050. package/dist/voice/transcriptFilter.js +36 -0
  1051. package/dist/voice/transcriptFilter.js.map +1 -0
  1052. package/dist/voice/tts/CartesiaTTS.d.ts +31 -0
  1053. package/dist/voice/tts/CartesiaTTS.d.ts.map +1 -0
  1054. package/dist/voice/tts/CartesiaTTS.js +201 -0
  1055. package/dist/voice/tts/CartesiaTTS.js.map +1 -0
  1056. package/dist/voice/tts/ElevenLabsTTS.d.ts +29 -0
  1057. package/dist/voice/tts/ElevenLabsTTS.d.ts.map +1 -0
  1058. package/dist/voice/tts/ElevenLabsTTS.js +210 -0
  1059. package/dist/voice/tts/ElevenLabsTTS.js.map +1 -0
  1060. package/dist/voice/tts/OpenAITTS.d.ts +23 -0
  1061. package/dist/voice/tts/OpenAITTS.d.ts.map +1 -0
  1062. package/dist/voice/tts/OpenAITTS.js +124 -0
  1063. package/dist/voice/tts/OpenAITTS.js.map +1 -0
  1064. package/dist/voice/tts/TTSAdapter.d.ts +46 -0
  1065. package/dist/voice/tts/TTSAdapter.d.ts.map +1 -0
  1066. package/dist/voice/tts/TTSAdapter.js +26 -0
  1067. package/dist/voice/tts/TTSAdapter.js.map +1 -0
  1068. package/dist/voice-worker.mjs +607 -0
  1069. package/dist/watchers/FileWatcher.d.ts +47 -0
  1070. package/dist/watchers/FileWatcher.d.ts.map +1 -0
  1071. package/dist/watchers/FileWatcher.js +103 -0
  1072. package/dist/watchers/FileWatcher.js.map +1 -0
  1073. package/dist/watchers/IntegrationWatcher.d.ts +68 -0
  1074. package/dist/watchers/IntegrationWatcher.d.ts.map +1 -0
  1075. package/dist/watchers/IntegrationWatcher.js +347 -0
  1076. package/dist/watchers/IntegrationWatcher.js.map +1 -0
  1077. package/dist/watchers/PollWatcher.d.ts +54 -0
  1078. package/dist/watchers/PollWatcher.d.ts.map +1 -0
  1079. package/dist/watchers/PollWatcher.js +135 -0
  1080. package/dist/watchers/PollWatcher.js.map +1 -0
  1081. package/dist/watchers/WatcherRunner.d.ts +49 -0
  1082. package/dist/watchers/WatcherRunner.d.ts.map +1 -0
  1083. package/dist/watchers/WatcherRunner.js +203 -0
  1084. package/dist/watchers/WatcherRunner.js.map +1 -0
  1085. package/dist/watchers/WatcherStore.d.ts +43 -0
  1086. package/dist/watchers/WatcherStore.d.ts.map +1 -0
  1087. package/dist/watchers/WatcherStore.js +78 -0
  1088. package/dist/watchers/WatcherStore.js.map +1 -0
  1089. package/dist/webhooks/WebhookHandler.d.ts +36 -0
  1090. package/dist/webhooks/WebhookHandler.d.ts.map +1 -0
  1091. package/dist/webhooks/WebhookHandler.js +264 -0
  1092. package/dist/webhooks/WebhookHandler.js.map +1 -0
  1093. package/dist/webhooks/WebhookTokenStore.d.ts +48 -0
  1094. package/dist/webhooks/WebhookTokenStore.d.ts.map +1 -0
  1095. package/dist/webhooks/WebhookTokenStore.js +136 -0
  1096. package/dist/webhooks/WebhookTokenStore.js.map +1 -0
  1097. package/dist/webhooks/hmac.d.ts +43 -0
  1098. package/dist/webhooks/hmac.d.ts.map +1 -0
  1099. package/dist/webhooks/hmac.js +98 -0
  1100. package/dist/webhooks/hmac.js.map +1 -0
  1101. package/dist/webhooks/watcherTemplates.d.ts +21 -0
  1102. package/dist/webhooks/watcherTemplates.d.ts.map +1 -0
  1103. package/dist/webhooks/watcherTemplates.js +164 -0
  1104. package/dist/webhooks/watcherTemplates.js.map +1 -0
  1105. package/package.json +119 -0
  1106. package/public/architecture.svg +99 -0
  1107. package/public/banner.png +0 -0
  1108. package/public/banner.svg +141 -0
  1109. package/public/multi-agent.svg +109 -0
  1110. package/public/security.svg +84 -0
  1111. package/public/steer-inject.svg +73 -0
  1112. package/public/task-lifecycle.svg +77 -0
  1113. package/skills/_template/SKILL.md +11 -0
  1114. package/skills/api-development.md +35 -0
  1115. package/skills/apple-notes/SKILL.md +77 -0
  1116. package/skills/apple-reminders/SKILL.md +118 -0
  1117. package/skills/artifacts-builder/SKILL.md +74 -0
  1118. package/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  1119. package/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
  1120. package/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  1121. package/skills/brand-guidelines.md +73 -0
  1122. package/skills/browser.md +77 -0
  1123. package/skills/camsnap/SKILL.md +45 -0
  1124. package/skills/changelog-generator.md +104 -0
  1125. package/skills/coding-agent/SKILL.md +316 -0
  1126. package/skills/content-research-writer.md +538 -0
  1127. package/skills/create-new-skill.md +564 -0
  1128. package/skills/data-analysis.md +27 -0
  1129. package/skills/debugging.md +33 -0
  1130. package/skills/devops.md +37 -0
  1131. package/skills/discord/SKILL.md +197 -0
  1132. package/skills/document-docx.md +197 -0
  1133. package/skills/document-pptx.md +484 -0
  1134. package/skills/document-xlsx.md +289 -0
  1135. package/skills/documents.md +13 -0
  1136. package/skills/domain-name-brainstormer.md +212 -0
  1137. package/skills/email.md +13 -0
  1138. package/skills/example-pdf/SKILL.md +17 -0
  1139. package/skills/file-organizer.md +433 -0
  1140. package/skills/frontend-design.md +42 -0
  1141. package/skills/gif-search.md +53 -0
  1142. package/skills/github/SKILL.md +163 -0
  1143. package/skills/google-workspace.md +64 -0
  1144. package/skills/image-enhancer.md +99 -0
  1145. package/skills/image-gen.md +48 -0
  1146. package/skills/invoice-organizer.md +446 -0
  1147. package/skills/lead-research-assistant.md +199 -0
  1148. package/skills/link-understanding.md +21 -0
  1149. package/skills/macos-automation.md +62 -0
  1150. package/skills/mcp-builder/SKILL.md +328 -0
  1151. package/skills/mcp-builder/reference/evaluation.md +602 -0
  1152. package/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  1153. package/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  1154. package/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  1155. package/skills/mcp-builder/scripts/connections.py +151 -0
  1156. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  1157. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  1158. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  1159. package/skills/meeting-attendance.md +37 -0
  1160. package/skills/meeting-insights-analyzer.md +327 -0
  1161. package/skills/model-usage/SKILL.md +69 -0
  1162. package/skills/model-usage/references/codexbar-cli.md +33 -0
  1163. package/skills/model-usage/scripts/model_usage.py +320 -0
  1164. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  1165. package/skills/notion/SKILL.md +174 -0
  1166. package/skills/obsidian/SKILL.md +81 -0
  1167. package/skills/orchestration.md +114 -0
  1168. package/skills/pdf.md +60 -0
  1169. package/skills/planning/SKILL.md +98 -0
  1170. package/skills/planning.md +168 -0
  1171. package/skills/raffle-winner-picker.md +159 -0
  1172. package/skills/remotion.md +126 -0
  1173. package/skills/research.md +13 -0
  1174. package/skills/skill-creator/SKILL.md +372 -0
  1175. package/skills/skill-creator/license.txt +202 -0
  1176. package/skills/skill-creator/scripts/init_skill.py +378 -0
  1177. package/skills/skill-creator/scripts/package_skill.py +139 -0
  1178. package/skills/skill-creator/scripts/quick_validate.py +159 -0
  1179. package/skills/skill-creator/scripts/test_package_skill.py +160 -0
  1180. package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
  1181. package/skills/slack/SKILL.md +144 -0
  1182. package/skills/slack-gif-creator/SKILL.md +646 -0
  1183. package/skills/slack-gif-creator/core/color_palettes.py +302 -0
  1184. package/skills/slack-gif-creator/core/easing.py +230 -0
  1185. package/skills/slack-gif-creator/core/frame_composer.py +469 -0
  1186. package/skills/slack-gif-creator/core/gif_builder.py +246 -0
  1187. package/skills/slack-gif-creator/core/typography.py +357 -0
  1188. package/skills/slack-gif-creator/core/validators.py +264 -0
  1189. package/skills/slack-gif-creator/core/visual_effects.py +494 -0
  1190. package/skills/slack-gif-creator/requirements.txt +4 -0
  1191. package/skills/slack-gif-creator/templates/bounce.py +106 -0
  1192. package/skills/slack-gif-creator/templates/explode.py +331 -0
  1193. package/skills/slack-gif-creator/templates/fade.py +329 -0
  1194. package/skills/slack-gif-creator/templates/flip.py +291 -0
  1195. package/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
  1196. package/skills/slack-gif-creator/templates/morph.py +329 -0
  1197. package/skills/slack-gif-creator/templates/move.py +293 -0
  1198. package/skills/slack-gif-creator/templates/pulse.py +268 -0
  1199. package/skills/slack-gif-creator/templates/shake.py +127 -0
  1200. package/skills/slack-gif-creator/templates/slide.py +291 -0
  1201. package/skills/slack-gif-creator/templates/spin.py +269 -0
  1202. package/skills/slack-gif-creator/templates/wiggle.py +300 -0
  1203. package/skills/slack-gif-creator/templates/zoom.py +312 -0
  1204. package/skills/summarize/SKILL.md +87 -0
  1205. package/skills/system-admin.md +44 -0
  1206. package/skills/tailored-resume-generator.md +345 -0
  1207. package/skills/task-decomposition/SKILL.md +113 -0
  1208. package/skills/theme-factory/SKILL.md +59 -0
  1209. package/skills/theme-factory/theme-showcase.pdf +0 -0
  1210. package/skills/theme-factory/themes/arctic-frost.md +19 -0
  1211. package/skills/theme-factory/themes/botanical-garden.md +19 -0
  1212. package/skills/theme-factory/themes/desert-rose.md +19 -0
  1213. package/skills/theme-factory/themes/forest-canopy.md +19 -0
  1214. package/skills/theme-factory/themes/golden-hour.md +19 -0
  1215. package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  1216. package/skills/theme-factory/themes/modern-minimalist.md +19 -0
  1217. package/skills/theme-factory/themes/ocean-depths.md +19 -0
  1218. package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  1219. package/skills/theme-factory/themes/tech-innovation.md +19 -0
  1220. package/skills/things-mac/SKILL.md +86 -0
  1221. package/skills/tmux/SKILL.md +170 -0
  1222. package/skills/tmux/scripts/find-sessions.sh +112 -0
  1223. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  1224. package/skills/trello/SKILL.md +108 -0
  1225. package/skills/video-downloader.md +99 -0
  1226. package/skills/video-frames/SKILL.md +46 -0
  1227. package/skills/video-frames/scripts/frame.sh +81 -0
  1228. package/skills/weather/SKILL.md +129 -0
  1229. package/skills/web-development.md +32 -0
  1230. package/skills/webapp-testing/SKILL.md +96 -0
  1231. package/skills/webapp-testing/examples/console_logging.py +35 -0
  1232. package/skills/webapp-testing/examples/element_discovery.py +40 -0
  1233. package/skills/webapp-testing/examples/static_html_automation.py +33 -0
  1234. package/skills/webapp-testing/scripts/with_server.py +106 -0
  1235. package/ui/dist/assets/index-DuybLBDW.css +1 -0
  1236. package/ui/dist/assets/index-kK4jTnXz.js +569 -0
  1237. package/ui/dist/favicon.svg +29 -0
  1238. package/ui/dist/index.html +16 -0
@@ -0,0 +1,139 @@
1
+ /**
2
+ * AuthStore — refresh-token persistence + audit trail.
3
+ *
4
+ * Refresh tokens are stored as `sha256(token)` so a DB leak can't be
5
+ * replayed. Rows carry enough metadata to list "active sessions" in
6
+ * the UI (device name, last used, created at) and revoke individually
7
+ * or en masse (on password change).
8
+ *
9
+ * Revocation is soft — `revoked_at` timestamp, never deleted. Keeps
10
+ * audit trail; cleanup is a separate scheduled sweep (not done here).
11
+ */
12
+ import { createHash, randomBytes } from "node:crypto";
13
+ import { createLogger } from "../util/logger.js";
14
+ const log = createLogger("auth.store");
15
+ const SCHEMA = `
16
+ CREATE TABLE IF NOT EXISTS auth_refresh_tokens (
17
+ id TEXT PRIMARY KEY,
18
+ user_id TEXT NOT NULL,
19
+ token_hash TEXT NOT NULL UNIQUE,
20
+ device_name TEXT,
21
+ created_at INTEGER NOT NULL,
22
+ last_used_at INTEGER NOT NULL,
23
+ revoked_at INTEGER,
24
+ expires_at INTEGER
25
+ );
26
+ CREATE INDEX IF NOT EXISTS idx_auth_tokens_user ON auth_refresh_tokens(user_id);
27
+ CREATE INDEX IF NOT EXISTS idx_auth_tokens_hash ON auth_refresh_tokens(token_hash);
28
+
29
+ CREATE TABLE IF NOT EXISTS auth_audit (
30
+ id TEXT PRIMARY KEY,
31
+ at INTEGER NOT NULL,
32
+ user_id TEXT NOT NULL,
33
+ event TEXT NOT NULL,
34
+ ip TEXT,
35
+ detail TEXT
36
+ );
37
+ CREATE INDEX IF NOT EXISTS idx_auth_audit_at ON auth_audit(at DESC);
38
+ CREATE INDEX IF NOT EXISTS idx_auth_audit_user ON auth_audit(user_id);
39
+ `;
40
+ export class AuthStore {
41
+ db;
42
+ stmts;
43
+ constructor(db) {
44
+ this.db = db;
45
+ this.db.exec(SCHEMA);
46
+ this.stmts = this.prepare();
47
+ log.debug("auth store ready");
48
+ }
49
+ // ── Refresh tokens ─────────────────────────────────────────────────────
50
+ /**
51
+ * Mint a fresh refresh token and persist its hash. Returns the
52
+ * plaintext token (caller gives it to the client; server never
53
+ * sees it again except as a hash).
54
+ */
55
+ issueRefresh(opts) {
56
+ const token = randomBytes(32).toString("base64url");
57
+ const tokenHash = hash(token);
58
+ const id = randomBytes(12).toString("hex");
59
+ const now = Date.now();
60
+ this.stmts.insertRefresh.run(id, opts.userId, tokenHash, opts.deviceName ?? null, now, now, null, opts.expiresAt ?? null);
61
+ const row = this.getRefreshById(id);
62
+ return { id, token, row };
63
+ }
64
+ /**
65
+ * Look up by plaintext token. Returns null if the token is unknown,
66
+ * revoked, or expired. Marks the row as used on success.
67
+ *
68
+ * NOTE: caller still has to rotate the token (issue new, revoke old)
69
+ * — that's in TokenService to keep the audit path centralised.
70
+ */
71
+ findActiveByToken(token) {
72
+ const tokenHash = hash(token);
73
+ const row = this.stmts.selectByHash.get(tokenHash);
74
+ if (!row)
75
+ return null;
76
+ if (row.revokedAt !== null)
77
+ return null;
78
+ if (row.expiresAt !== null && row.expiresAt <= Date.now())
79
+ return null;
80
+ return row;
81
+ }
82
+ markUsed(id) {
83
+ this.stmts.touchUsed.run(Date.now(), id);
84
+ }
85
+ revoke(id) {
86
+ const info = this.stmts.revokeOne.run(Date.now(), id);
87
+ return info.changes > 0;
88
+ }
89
+ revokeAllForUser(userId) {
90
+ return this.stmts.revokeUser.run(Date.now(), userId).changes;
91
+ }
92
+ listActiveForUser(userId) {
93
+ return this.stmts.listActive.all(userId);
94
+ }
95
+ getRefreshById(id) {
96
+ return this.stmts.selectById.get(id) ?? null;
97
+ }
98
+ // ── Audit ──────────────────────────────────────────────────────────────
99
+ audit(entry) {
100
+ this.stmts.insertAudit.run(randomBytes(8).toString("hex"), Date.now(), entry.userId, entry.event, entry.ip ?? null, entry.detail ?? null);
101
+ }
102
+ listAudit(opts = {}) {
103
+ const limit = Math.min(opts.limit ?? 100, 500);
104
+ if (opts.userId)
105
+ return this.stmts.auditByUser.all(opts.userId, limit);
106
+ return this.stmts.auditAll.all(limit);
107
+ }
108
+ // ── Internal ───────────────────────────────────────────────────────────
109
+ prepare() {
110
+ return {
111
+ insertRefresh: this.db.prepare(`INSERT INTO auth_refresh_tokens (id, user_id, token_hash, device_name, created_at, last_used_at, revoked_at, expires_at)
112
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`),
113
+ selectByHash: this.db.prepare(`SELECT id, user_id AS userId, token_hash AS tokenHash, device_name AS deviceName,
114
+ created_at AS createdAt, last_used_at AS lastUsedAt,
115
+ revoked_at AS revokedAt, expires_at AS expiresAt
116
+ FROM auth_refresh_tokens WHERE token_hash = ?`),
117
+ selectById: this.db.prepare(`SELECT id, user_id AS userId, token_hash AS tokenHash, device_name AS deviceName,
118
+ created_at AS createdAt, last_used_at AS lastUsedAt,
119
+ revoked_at AS revokedAt, expires_at AS expiresAt
120
+ FROM auth_refresh_tokens WHERE id = ?`),
121
+ listActive: this.db.prepare(`SELECT id, user_id AS userId, token_hash AS tokenHash, device_name AS deviceName,
122
+ created_at AS createdAt, last_used_at AS lastUsedAt,
123
+ revoked_at AS revokedAt, expires_at AS expiresAt
124
+ FROM auth_refresh_tokens
125
+ WHERE user_id = ? AND revoked_at IS NULL
126
+ ORDER BY last_used_at DESC`),
127
+ touchUsed: this.db.prepare(`UPDATE auth_refresh_tokens SET last_used_at = ? WHERE id = ? AND revoked_at IS NULL`),
128
+ revokeOne: this.db.prepare(`UPDATE auth_refresh_tokens SET revoked_at = ? WHERE id = ? AND revoked_at IS NULL`),
129
+ revokeUser: this.db.prepare(`UPDATE auth_refresh_tokens SET revoked_at = ? WHERE user_id = ? AND revoked_at IS NULL`),
130
+ insertAudit: this.db.prepare(`INSERT INTO auth_audit (id, at, user_id, event, ip, detail) VALUES (?, ?, ?, ?, ?, ?)`),
131
+ auditByUser: this.db.prepare(`SELECT id, at, user_id AS userId, event, ip, detail FROM auth_audit WHERE user_id = ? ORDER BY at DESC LIMIT ?`),
132
+ auditAll: this.db.prepare(`SELECT id, at, user_id AS userId, event, ip, detail FROM auth_audit ORDER BY at DESC LIMIT ?`),
133
+ };
134
+ }
135
+ }
136
+ function hash(token) {
137
+ return createHash("sha256").update(token).digest("hex");
138
+ }
139
+ //# sourceMappingURL=AuthStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthStore.js","sourceRoot":"","sources":["../../src/auth/AuthStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * LocalAuthProvider — the vault passphrase IS the credential.
3
+ *
4
+ * Verification path:
5
+ * 1. Attempt `vault.unlock(passphrase)`.
6
+ * 2. Success → user is authenticated as the single local user.
7
+ * Failure → return null (ValidationError maps to "bad passphrase").
8
+ *
9
+ * Scopes: local user has everything. Plan is "self-hosted". These
10
+ * values exist so the downstream token/middleware code is identical
11
+ * to cloud, but they carry no enforcement meaning locally.
12
+ *
13
+ * Locking the vault (manual, idle timeout, or on passphrase rotation)
14
+ * doesn't invalidate existing tokens directly — that's the signing
15
+ * key's job (derived from vault state in TokenService).
16
+ */
17
+ import type { SecretVault } from "../config/SecretVault.js";
18
+ import type { AuthenticatedUser, AuthCredentials, AuthProvider } from "./AuthProvider.js";
19
+ export declare class LocalAuthProvider implements AuthProvider {
20
+ private readonly vault;
21
+ constructor(vault: SecretVault);
22
+ isReady(): boolean;
23
+ verifyCredentials(creds: AuthCredentials): Promise<AuthenticatedUser | null>;
24
+ isUnlocked(): boolean;
25
+ exists(): boolean;
26
+ lock(): void;
27
+ }
28
+ //# sourceMappingURL=LocalAuthProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalAuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/LocalAuthProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAU1F,qBAAa,iBAAkB,YAAW,YAAY;IAExC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,WAAW;IAE/C,OAAO,IAAI,OAAO;IAIZ,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA2BlF,UAAU,IAAI,OAAO;IAIrB,MAAM,IAAI,OAAO;IAIjB,IAAI,IAAI,IAAI;CAGb"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * LocalAuthProvider — the vault passphrase IS the credential.
3
+ *
4
+ * Verification path:
5
+ * 1. Attempt `vault.unlock(passphrase)`.
6
+ * 2. Success → user is authenticated as the single local user.
7
+ * Failure → return null (ValidationError maps to "bad passphrase").
8
+ *
9
+ * Scopes: local user has everything. Plan is "self-hosted". These
10
+ * values exist so the downstream token/middleware code is identical
11
+ * to cloud, but they carry no enforcement meaning locally.
12
+ *
13
+ * Locking the vault (manual, idle timeout, or on passphrase rotation)
14
+ * doesn't invalidate existing tokens directly — that's the signing
15
+ * key's job (derived from vault state in TokenService).
16
+ */
17
+ import { ValidationError } from "../util/errors.js";
18
+ const LOCAL_USER_ID = "local";
19
+ const LOCAL_USER = {
20
+ id: LOCAL_USER_ID,
21
+ scopes: ["chat", "admin", "webhooks", "voice", "settings", "vault"],
22
+ label: "Local user",
23
+ };
24
+ export class LocalAuthProvider {
25
+ vault;
26
+ constructor(vault) {
27
+ this.vault = vault;
28
+ }
29
+ isReady() {
30
+ return true; // vault may be locked, but we can still try to unlock
31
+ }
32
+ async verifyCredentials(creds) {
33
+ const passphrase = creds.passphrase;
34
+ if (!passphrase || passphrase.length < 8)
35
+ return null;
36
+ try {
37
+ if (!this.vault.isUnlocked()) {
38
+ this.vault.unlock(passphrase);
39
+ }
40
+ else {
41
+ // Vault already unlocked — re-derive + compare without changing state.
42
+ // We do this by briefly locking, trying, then restoring: simplest
43
+ // correct implementation since vault.unlock is idempotent and
44
+ // guards against wrong passphrases with ValidationError.
45
+ // This path hits when a second device logs in while the first is live.
46
+ this.vault.lock();
47
+ this.vault.unlock(passphrase);
48
+ }
49
+ }
50
+ catch (e) {
51
+ if (e instanceof ValidationError)
52
+ return null;
53
+ throw e;
54
+ }
55
+ return LOCAL_USER;
56
+ }
57
+ // ── Vault lifecycle passthrough ────────────────────────────────
58
+ // Routes ask the provider (not the vault) about unlock state so the
59
+ // Auth bundle stays the one thing routes import.
60
+ isUnlocked() {
61
+ return this.vault.isUnlocked();
62
+ }
63
+ exists() {
64
+ return this.vault.exists();
65
+ }
66
+ lock() {
67
+ this.vault.lock();
68
+ }
69
+ }
70
+ //# sourceMappingURL=LocalAuthProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalAuthProvider.js","sourceRoot":"","sources":["../../src/auth/LocalAuthProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B,MAAM,UAAU,GAAsB;IACpC,EAAE,EAAE,aAAa;IACjB,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;IACnE,KAAK,EAAE,YAAY;CACpB,CAAC;AAEF,MAAM,OAAO,iBAAiB;IAEC;IAA7B,YAA6B,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IAAG,CAAC;IAEnD,OAAO;QACL,OAAO,IAAI,CAAC,CAAC,sDAAsD;IACrE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAsB;QAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEtD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,uEAAuE;gBACvE,kEAAkE;gBAClE,8DAA8D;gBAC9D,yDAAyD;gBACzD,uEAAuE;gBACvE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,eAAe;gBAAE,OAAO,IAAI,CAAC;YAC9C,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,kEAAkE;IAClE,oEAAoE;IACpE,iDAAiD;IAEjD,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * TokenService — issues access + refresh tokens, rotates refresh on
3
+ * use, verifies access tokens, centralises the audit trail.
4
+ *
5
+ * Access tokens (JWT HS256):
6
+ * - Short-lived (24 h default). Stateless — verification is signature
7
+ * + expiry; no DB hit.
8
+ * - Claims: sub, plan, scopes, iat, exp, deviceName.
9
+ *
10
+ * Refresh tokens (opaque, 32 B, random):
11
+ * - Long-lived / non-expiring by default. Stored as sha256 hash.
12
+ * - Rotated on use: every /auth/refresh invalidates the old token
13
+ * and returns a fresh one. Replay of a used token → "refresh.reuse"
14
+ * audit entry + revoke-all-for-user (defense in depth: if an
15
+ * attacker stole a refresh token and the real user has already
16
+ * rotated, we detect the double-use and kill the whole session set).
17
+ *
18
+ * Signing key:
19
+ * - Passed in at construction. The caller (auth factory) derives it
20
+ * per deploy mode — HKDF from vault locally, env-injected in cloud.
21
+ * - Rotating the key invalidates every outstanding access token.
22
+ * Refresh tokens survive (they're opaque, not signed) so clients
23
+ * transparently get new access tokens on next refresh.
24
+ */
25
+ import type { AuthStore } from "./AuthStore.js";
26
+ import type { AuthenticatedUser } from "./AuthProvider.js";
27
+ import { type VerifyResult } from "./jwt.js";
28
+ export interface IssuedTokens {
29
+ readonly accessToken: string;
30
+ readonly refreshToken: string;
31
+ readonly accessExpiresAt: number;
32
+ readonly refreshId: string;
33
+ readonly user: AuthenticatedUser;
34
+ }
35
+ export interface TokenServiceOptions {
36
+ /** HMAC key for JWT HS256 sign/verify. */
37
+ readonly signingKey: Buffer | string;
38
+ /** Override access-token TTL in seconds (default 24h). */
39
+ readonly accessTtlSeconds?: number;
40
+ /** Device name to tag the refresh token with (for the UI session list). */
41
+ readonly defaultDeviceName?: string;
42
+ }
43
+ export declare class TokenService {
44
+ private readonly store;
45
+ private readonly signingKey;
46
+ private readonly accessTtl;
47
+ constructor(store: AuthStore, opts: TokenServiceOptions);
48
+ /**
49
+ * Called by /auth/login after AuthProvider verified credentials.
50
+ * Issues a fresh refresh + access pair. Passes `deviceName` so the
51
+ * user can distinguish devices in the session list later.
52
+ */
53
+ issueForUser(user: AuthenticatedUser, opts?: {
54
+ deviceName?: string;
55
+ ip?: string | null;
56
+ }): IssuedTokens;
57
+ /**
58
+ * Called by /auth/refresh. Rotates the refresh token (invalidates
59
+ * old, issues new) and mints a fresh access token.
60
+ *
61
+ * `provider` lets us re-resolve the user's current plan/scopes —
62
+ * refresh shouldn't snapshot stale tier info if the user's plan
63
+ * changed since the last login.
64
+ */
65
+ rotateRefresh(refreshToken: string, resolveUser: (userId: string) => AuthenticatedUser | null, opts?: {
66
+ deviceName?: string;
67
+ ip?: string | null;
68
+ }): IssuedTokens | {
69
+ failure: "unknown" | "reused";
70
+ };
71
+ /**
72
+ * Revoke a single refresh token (sign-out this device). Called by
73
+ * /auth/logout.
74
+ */
75
+ logout(refreshToken: string, ip?: string | null): boolean;
76
+ /** Revoke every session for a user (called on passphrase rotation). */
77
+ logoutAll(userId: string, ip?: string | null): number;
78
+ /** Verify an access token. Fast path — no DB hit. */
79
+ verifyAccess(token: string): VerifyResult;
80
+ private mintAccess;
81
+ private audit;
82
+ }
83
+ //# sourceMappingURL=TokenService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenService.d.ts","sourceRoot":"","sources":["../../src/auth/TokenService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAKjF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,0DAA0D;IAC1D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAGhB,KAAK,EAAE,SAAS,EACjC,IAAI,EAAE,mBAAmB;IAM3B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAO,GAAG,YAAY;IAO3G;;;;;;;OAOG;IACH,aAAa,CACX,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,EACzD,IAAI,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAO,GACrD,YAAY,GAAG;QAAE,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAA;KAAE;IAkCnD;;;OAGG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAQzD,uEAAuE;IACvE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAMrD,qDAAqD;IACrD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAMzC,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * TokenService — issues access + refresh tokens, rotates refresh on
3
+ * use, verifies access tokens, centralises the audit trail.
4
+ *
5
+ * Access tokens (JWT HS256):
6
+ * - Short-lived (24 h default). Stateless — verification is signature
7
+ * + expiry; no DB hit.
8
+ * - Claims: sub, plan, scopes, iat, exp, deviceName.
9
+ *
10
+ * Refresh tokens (opaque, 32 B, random):
11
+ * - Long-lived / non-expiring by default. Stored as sha256 hash.
12
+ * - Rotated on use: every /auth/refresh invalidates the old token
13
+ * and returns a fresh one. Replay of a used token → "refresh.reuse"
14
+ * audit entry + revoke-all-for-user (defense in depth: if an
15
+ * attacker stole a refresh token and the real user has already
16
+ * rotated, we detect the double-use and kill the whole session set).
17
+ *
18
+ * Signing key:
19
+ * - Passed in at construction. The caller (auth factory) derives it
20
+ * per deploy mode — HKDF from vault locally, env-injected in cloud.
21
+ * - Rotating the key invalidates every outstanding access token.
22
+ * Refresh tokens survive (they're opaque, not signed) so clients
23
+ * transparently get new access tokens on next refresh.
24
+ */
25
+ import { signJwt, verifyJwt } from "./jwt.js";
26
+ const ACCESS_TTL_SECONDS = 24 * 60 * 60; // 24h
27
+ const REFRESH_REUSE_WINDOW_MS = 5_000; // grace period for legit network retries
28
+ export class TokenService {
29
+ store;
30
+ signingKey;
31
+ accessTtl;
32
+ constructor(store, opts) {
33
+ this.store = store;
34
+ this.signingKey = opts.signingKey;
35
+ this.accessTtl = opts.accessTtlSeconds ?? ACCESS_TTL_SECONDS;
36
+ }
37
+ /**
38
+ * Called by /auth/login after AuthProvider verified credentials.
39
+ * Issues a fresh refresh + access pair. Passes `deviceName` so the
40
+ * user can distinguish devices in the session list later.
41
+ */
42
+ issueForUser(user, opts = {}) {
43
+ const refresh = this.store.issueRefresh({ userId: user.id, ...(opts.deviceName ? { deviceName: opts.deviceName } : {}) });
44
+ const tokens = this.mintAccess(user, refresh.id, opts.deviceName);
45
+ this.audit(user.id, "login.ok", opts.ip ?? null, opts.deviceName);
46
+ return { ...tokens, refreshToken: refresh.token, refreshId: refresh.id, user };
47
+ }
48
+ /**
49
+ * Called by /auth/refresh. Rotates the refresh token (invalidates
50
+ * old, issues new) and mints a fresh access token.
51
+ *
52
+ * `provider` lets us re-resolve the user's current plan/scopes —
53
+ * refresh shouldn't snapshot stale tier info if the user's plan
54
+ * changed since the last login.
55
+ */
56
+ rotateRefresh(refreshToken, resolveUser, opts = {}) {
57
+ const row = this.store.findActiveByToken(refreshToken);
58
+ if (!row) {
59
+ // Token doesn't exist or was already revoked → possible reuse.
60
+ // We can't know whose session to kill without a lookup that
61
+ // doesn't exist here (the hash is the only identifier), so the
62
+ // best we can do is audit a generic reuse event and refuse.
63
+ this.audit("unknown", "refresh.reuse", opts.ip ?? null, `token prefix=${refreshToken.slice(0, 6)}`);
64
+ return { failure: "reused" };
65
+ }
66
+ const user = resolveUser(row.userId);
67
+ if (!user) {
68
+ this.store.revoke(row.id);
69
+ return { failure: "unknown" };
70
+ }
71
+ // Grace period: don't rotate if the same refresh was just rotated
72
+ // a couple seconds ago (retry after a dropped connection).
73
+ const tooRecent = Date.now() - row.lastUsedAt < REFRESH_REUSE_WINDOW_MS && row.lastUsedAt !== row.createdAt;
74
+ if (tooRecent) {
75
+ this.store.markUsed(row.id);
76
+ const access = this.mintAccess(user, row.id, row.deviceName ?? undefined);
77
+ return { ...access, refreshToken, refreshId: row.id, user };
78
+ }
79
+ // Rotate: revoke current, issue new, bind to the same user+device.
80
+ this.store.revoke(row.id);
81
+ const newRow = this.store.issueRefresh({ userId: user.id, ...(row.deviceName ? { deviceName: row.deviceName } : {}) });
82
+ const access = this.mintAccess(user, newRow.id, row.deviceName ?? undefined);
83
+ this.audit(user.id, "refresh.ok", opts.ip ?? null);
84
+ return { ...access, refreshToken: newRow.token, refreshId: newRow.id, user };
85
+ }
86
+ /**
87
+ * Revoke a single refresh token (sign-out this device). Called by
88
+ * /auth/logout.
89
+ */
90
+ logout(refreshToken, ip) {
91
+ const row = this.store.findActiveByToken(refreshToken);
92
+ if (!row)
93
+ return false;
94
+ this.store.revoke(row.id);
95
+ this.audit(row.userId, "logout", ip ?? null);
96
+ return true;
97
+ }
98
+ /** Revoke every session for a user (called on passphrase rotation). */
99
+ logoutAll(userId, ip) {
100
+ const n = this.store.revokeAllForUser(userId);
101
+ this.audit(userId, "revoke.all", ip ?? null, `count=${n}`);
102
+ return n;
103
+ }
104
+ /** Verify an access token. Fast path — no DB hit. */
105
+ verifyAccess(token) {
106
+ return verifyJwt(token, this.signingKey);
107
+ }
108
+ // ── Internal ────────────────────────────────────────────────────────────
109
+ mintAccess(user, refreshId, deviceName) {
110
+ const now = Math.floor(Date.now() / 1000);
111
+ const exp = now + this.accessTtl;
112
+ const claims = {
113
+ sub: user.id,
114
+ iat: now,
115
+ exp,
116
+ scopes: user.scopes,
117
+ rid: refreshId, // pair access ↔ refresh row for audit correlation
118
+ ...(deviceName ? { deviceName } : {}),
119
+ };
120
+ return {
121
+ accessToken: signJwt(claims, this.signingKey),
122
+ accessExpiresAt: exp * 1000,
123
+ };
124
+ }
125
+ audit(userId, event, ip, detail) {
126
+ this.store.audit({ userId, event, ip, ...(detail ? { detail } : {}) });
127
+ }
128
+ }
129
+ //# sourceMappingURL=TokenService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenService.js","sourceRoot":"","sources":["../../src/auth/TokenService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Loopback file-token — the "same-machine script access" escape hatch.
3
+ *
4
+ * Writes a 32-byte random token to `{dataDir}/auth-token` with 0600
5
+ * perms. The middleware accepts it ONLY when the request arrived over
6
+ * loopback (127.0.0.1 / ::1). Remote requests hitting the same endpoint
7
+ * with this token are rejected.
8
+ *
9
+ * Why this is safe:
10
+ * - File perm 0600 limits read to the owning UID. Any process
11
+ * already running as your user has full access anyway — this
12
+ * token just lets them talk to Daemora over HTTP without a full
13
+ * login flow (curl, scripts, the desktop app).
14
+ * - The loopback check uses `req.socket.remoteAddress` directly
15
+ * (not headers) so X-Forwarded-For spoofing doesn't bypass.
16
+ *
17
+ * The UI in the desktop/dev build reads this via server-injected
18
+ * `<meta name="api-token">` — same pattern as the JS daemora.
19
+ */
20
+ export declare function getOrCreateFileToken(dataDir: string): string;
21
+ /**
22
+ * Constant-time comparison. Use for every token-vs-token check to avoid
23
+ * timing-based side channels revealing prefix matches.
24
+ */
25
+ export declare function constantTimeEqual(a: string, b: string): boolean;
26
+ /**
27
+ * Is the socket peer a loopback address? Uses the TCP peer directly,
28
+ * ignoring X-Forwarded-For / X-Real-IP so a malicious proxy can't
29
+ * pretend to be local. If you're running Daemora behind a reverse
30
+ * proxy on the same host, you're fine — the peer IS localhost.
31
+ */
32
+ export declare function isLoopback(remoteAddress: string | undefined): boolean;
33
+ //# sourceMappingURL=fileToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileToken.d.ts","sourceRoot":"","sources":["../../src/auth/fileToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAWH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAc5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAK/D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAOrE"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Loopback file-token — the "same-machine script access" escape hatch.
3
+ *
4
+ * Writes a 32-byte random token to `{dataDir}/auth-token` with 0600
5
+ * perms. The middleware accepts it ONLY when the request arrived over
6
+ * loopback (127.0.0.1 / ::1). Remote requests hitting the same endpoint
7
+ * with this token are rejected.
8
+ *
9
+ * Why this is safe:
10
+ * - File perm 0600 limits read to the owning UID. Any process
11
+ * already running as your user has full access anyway — this
12
+ * token just lets them talk to Daemora over HTTP without a full
13
+ * login flow (curl, scripts, the desktop app).
14
+ * - The loopback check uses `req.socket.remoteAddress` directly
15
+ * (not headers) so X-Forwarded-For spoofing doesn't bypass.
16
+ *
17
+ * The UI in the desktop/dev build reads this via server-injected
18
+ * `<meta name="api-token">` — same pattern as the JS daemora.
19
+ */
20
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
21
+ import { chmodSync, mkdirSync } from "node:fs";
22
+ import { dirname, join } from "node:path";
23
+ import { randomBytes, timingSafeEqual } from "node:crypto";
24
+ import { createLogger } from "../util/logger.js";
25
+ const log = createLogger("auth.filetoken");
26
+ export function getOrCreateFileToken(dataDir) {
27
+ const path = join(dataDir, "auth-token");
28
+ if (existsSync(path)) {
29
+ const token = readFileSync(path, "utf-8").trim();
30
+ if (token.length >= 32)
31
+ return token;
32
+ }
33
+ const token = randomBytes(32).toString("hex");
34
+ mkdirSync(dirname(path), { recursive: true });
35
+ writeFileSync(path, token, "utf-8");
36
+ // chmod 0600 — only the owner can read. Some OS (Windows) may not
37
+ // enforce, but the file path is still inside the user's data dir.
38
+ try {
39
+ chmodSync(path, 0o600);
40
+ }
41
+ catch { /* best effort */ }
42
+ log.info("loopback auth token generated");
43
+ return token;
44
+ }
45
+ /**
46
+ * Constant-time comparison. Use for every token-vs-token check to avoid
47
+ * timing-based side channels revealing prefix matches.
48
+ */
49
+ export function constantTimeEqual(a, b) {
50
+ const ab = Buffer.from(a, "utf-8");
51
+ const bb = Buffer.from(b, "utf-8");
52
+ if (ab.length !== bb.length)
53
+ return false;
54
+ return timingSafeEqual(ab, bb);
55
+ }
56
+ /**
57
+ * Is the socket peer a loopback address? Uses the TCP peer directly,
58
+ * ignoring X-Forwarded-For / X-Real-IP so a malicious proxy can't
59
+ * pretend to be local. If you're running Daemora behind a reverse
60
+ * proxy on the same host, you're fine — the peer IS localhost.
61
+ */
62
+ export function isLoopback(remoteAddress) {
63
+ if (!remoteAddress)
64
+ return false;
65
+ return (remoteAddress === "127.0.0.1" ||
66
+ remoteAddress === "::1" ||
67
+ remoteAddress === "::ffff:127.0.0.1");
68
+ }
69
+ //# sourceMappingURL=fileToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileToken.js","sourceRoot":"","sources":["../../src/auth/fileToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,GAAG,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAE3C,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACzC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,kEAAkE;IAClE,kEAAkE;IAClE,IAAI,CAAC;QAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC3D,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAS,EAAE,CAAS;IACpD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,aAAiC;IAC1D,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,CACL,aAAa,KAAK,WAAW;QAC7B,aAAa,KAAK,KAAK;QACvB,aAAa,KAAK,kBAAkB,CACrC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Auth factory — wires AuthStore + LocalAuthProvider + TokenService
3
+ * together with a signing key derived from the vault.
4
+ *
5
+ * Signing key derivation:
6
+ * - HKDF-SHA256 from the vault's per-install salt + a fixed label
7
+ * ("daemora-auth-sign-v1"). Deterministic per-install, unique
8
+ * across installs.
9
+ * - Rotating the vault (new passphrase, same data) preserves the
10
+ * salt so tokens survive — which is what we want, since
11
+ * legitimate passphrase rotation shouldn't log everyone out by
12
+ * side-effect of invalidating signatures. Explicit "revoke all
13
+ * sessions" handles session invalidation cleanly.
14
+ * - If you wanted every passphrase change to invalidate tokens,
15
+ * rotate the salt too. Deliberately we don't.
16
+ */
17
+ import type Database from "better-sqlite3";
18
+ import type { SecretVault } from "../config/SecretVault.js";
19
+ import { AuthStore } from "./AuthStore.js";
20
+ import { LocalAuthProvider } from "./LocalAuthProvider.js";
21
+ import { TokenService } from "./TokenService.js";
22
+ export interface Auth {
23
+ readonly store: AuthStore;
24
+ readonly provider: LocalAuthProvider;
25
+ readonly tokens: TokenService;
26
+ readonly fileToken: string;
27
+ /**
28
+ * Primary HS256 signing key. Exposed so adjacent subsystems
29
+ * (webhook token encryption, channel signers, etc.) can derive
30
+ * their own sub-keys via `deriveSubKey(primary, label)` instead of
31
+ * generating independent secrets that need separate persistence.
32
+ */
33
+ readonly signingKey: Buffer;
34
+ }
35
+ export interface BuildAuthOpts {
36
+ readonly db: Database.Database;
37
+ readonly vault: SecretVault;
38
+ readonly dataDir: string;
39
+ }
40
+ export declare function buildAuth(opts: BuildAuthOpts): Auth;
41
+ /**
42
+ * Utility: derive a sub-key for a specific purpose (HMAC for webhook
43
+ * tokens, etc.) so we don't reuse the primary signing key for
44
+ * multiple distinct uses.
45
+ */
46
+ export declare function deriveSubKey(primary: Buffer, label: string): Buffer;
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAQnD;AAgCD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE"}