agent-messenger 1.0.0 → 1.2.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 (512) hide show
  1. package/.claude/commands/release.md +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.github/workflows/ci.yml +1 -1
  4. package/.github/workflows/e2e.yml.disabled +69 -0
  5. package/CONTRIBUTING.md +2 -2
  6. package/README.md +18 -15
  7. package/biome.json +34 -2
  8. package/bun.lock +63 -0
  9. package/dist/package.json +8 -4
  10. package/dist/src/cli.d.ts.map +1 -1
  11. package/dist/src/cli.js +4 -1
  12. package/dist/src/cli.js.map +1 -1
  13. package/dist/src/platforms/discord/cli.js +4 -4
  14. package/dist/src/platforms/discord/cli.js.map +1 -1
  15. package/dist/src/platforms/discord/client.d.ts +26 -5
  16. package/dist/src/platforms/discord/client.d.ts.map +1 -1
  17. package/dist/src/platforms/discord/client.js +115 -17
  18. package/dist/src/platforms/discord/client.js.map +1 -1
  19. package/dist/src/platforms/discord/commands/auth.js +16 -16
  20. package/dist/src/platforms/discord/commands/auth.js.map +1 -1
  21. package/dist/src/platforms/discord/commands/channel.js +4 -4
  22. package/dist/src/platforms/discord/commands/channel.js.map +1 -1
  23. package/dist/src/platforms/discord/commands/dm.d.ts +9 -0
  24. package/dist/src/platforms/discord/commands/dm.d.ts.map +1 -0
  25. package/dist/src/platforms/discord/commands/dm.js +68 -0
  26. package/dist/src/platforms/discord/commands/dm.js.map +1 -0
  27. package/dist/src/platforms/discord/commands/friend.d.ts +3 -0
  28. package/dist/src/platforms/discord/commands/friend.d.ts.map +1 -0
  29. package/dist/src/platforms/discord/commands/friend.js +39 -0
  30. package/dist/src/platforms/discord/commands/friend.js.map +1 -0
  31. package/dist/src/platforms/discord/commands/index.d.ts +1 -1
  32. package/dist/src/platforms/discord/commands/index.d.ts.map +1 -1
  33. package/dist/src/platforms/discord/commands/index.js +1 -1
  34. package/dist/src/platforms/discord/commands/index.js.map +1 -1
  35. package/dist/src/platforms/discord/commands/member.d.ts +3 -0
  36. package/dist/src/platforms/discord/commands/member.d.ts.map +1 -0
  37. package/dist/src/platforms/discord/commands/member.js +47 -0
  38. package/dist/src/platforms/discord/commands/member.js.map +1 -0
  39. package/dist/src/platforms/discord/commands/mention.d.ts +8 -0
  40. package/dist/src/platforms/discord/commands/mention.d.ts.map +1 -0
  41. package/dist/src/platforms/discord/commands/mention.js +47 -0
  42. package/dist/src/platforms/discord/commands/mention.js.map +1 -0
  43. package/dist/src/platforms/discord/commands/message.d.ts +13 -0
  44. package/dist/src/platforms/discord/commands/message.d.ts.map +1 -1
  45. package/dist/src/platforms/discord/commands/message.js +95 -1
  46. package/dist/src/platforms/discord/commands/message.js.map +1 -1
  47. package/dist/src/platforms/discord/commands/note.d.ts +3 -0
  48. package/dist/src/platforms/discord/commands/note.d.ts.map +1 -0
  49. package/dist/src/platforms/discord/commands/note.js +56 -0
  50. package/dist/src/platforms/discord/commands/note.js.map +1 -0
  51. package/dist/src/platforms/discord/commands/profile.d.ts +3 -0
  52. package/dist/src/platforms/discord/commands/profile.d.ts.map +1 -0
  53. package/dist/src/platforms/discord/commands/profile.js +47 -0
  54. package/dist/src/platforms/discord/commands/profile.js.map +1 -0
  55. package/dist/src/platforms/discord/commands/server.d.ts +15 -0
  56. package/dist/src/platforms/discord/commands/server.d.ts.map +1 -0
  57. package/dist/src/platforms/discord/commands/server.js +102 -0
  58. package/dist/src/platforms/discord/commands/server.js.map +1 -0
  59. package/dist/src/platforms/discord/commands/snapshot.js +10 -10
  60. package/dist/src/platforms/discord/commands/snapshot.js.map +1 -1
  61. package/dist/src/platforms/discord/commands/thread.d.ts +10 -0
  62. package/dist/src/platforms/discord/commands/thread.d.ts.map +1 -0
  63. package/dist/src/platforms/discord/commands/thread.js +67 -0
  64. package/dist/src/platforms/discord/commands/thread.js.map +1 -0
  65. package/dist/src/platforms/discord/commands/user.d.ts.map +1 -1
  66. package/dist/src/platforms/discord/commands/user.js +14 -5
  67. package/dist/src/platforms/discord/commands/user.js.map +1 -1
  68. package/dist/src/platforms/discord/credential-manager.d.ts +13 -13
  69. package/dist/src/platforms/discord/credential-manager.d.ts.map +1 -1
  70. package/dist/src/platforms/discord/credential-manager.js +28 -22
  71. package/dist/src/platforms/discord/credential-manager.js.map +1 -1
  72. package/dist/src/platforms/discord/super-properties.d.ts +4 -0
  73. package/dist/src/platforms/discord/super-properties.d.ts.map +1 -0
  74. package/dist/src/platforms/discord/super-properties.js +50 -0
  75. package/dist/src/platforms/discord/super-properties.js.map +1 -0
  76. package/dist/src/platforms/discord/token-extractor.d.ts +6 -1
  77. package/dist/src/platforms/discord/token-extractor.d.ts.map +1 -1
  78. package/dist/src/platforms/discord/token-extractor.js +27 -2
  79. package/dist/src/platforms/discord/token-extractor.js.map +1 -1
  80. package/dist/src/platforms/discord/types.d.ts +389 -22
  81. package/dist/src/platforms/discord/types.d.ts.map +1 -1
  82. package/dist/src/platforms/discord/types.js +46 -4
  83. package/dist/src/platforms/discord/types.js.map +1 -1
  84. package/dist/src/platforms/slack/cli.d.ts.map +1 -1
  85. package/dist/src/platforms/slack/cli.js +7 -2
  86. package/dist/src/platforms/slack/cli.js.map +1 -1
  87. package/dist/src/platforms/slack/client.d.ts +19 -1
  88. package/dist/src/platforms/slack/client.d.ts.map +1 -1
  89. package/dist/src/platforms/slack/client.js +134 -0
  90. package/dist/src/platforms/slack/client.js.map +1 -1
  91. package/dist/src/platforms/slack/commands/activity.d.ts +3 -0
  92. package/dist/src/platforms/slack/commands/activity.d.ts.map +1 -0
  93. package/dist/src/platforms/slack/commands/activity.js +40 -0
  94. package/dist/src/platforms/slack/commands/activity.js.map +1 -0
  95. package/dist/src/platforms/slack/commands/drafts.d.ts +3 -0
  96. package/dist/src/platforms/slack/commands/drafts.d.ts.map +1 -0
  97. package/dist/src/platforms/slack/commands/drafts.js +45 -0
  98. package/dist/src/platforms/slack/commands/drafts.js.map +1 -0
  99. package/dist/src/platforms/slack/commands/index.d.ts +5 -0
  100. package/dist/src/platforms/slack/commands/index.d.ts.map +1 -1
  101. package/dist/src/platforms/slack/commands/index.js +5 -0
  102. package/dist/src/platforms/slack/commands/index.js.map +1 -1
  103. package/dist/src/platforms/slack/commands/saved.d.ts +3 -0
  104. package/dist/src/platforms/slack/commands/saved.d.ts.map +1 -0
  105. package/dist/src/platforms/slack/commands/saved.js +54 -0
  106. package/dist/src/platforms/slack/commands/saved.js.map +1 -0
  107. package/dist/src/platforms/slack/commands/sections.d.ts +3 -0
  108. package/dist/src/platforms/slack/commands/sections.d.ts.map +1 -0
  109. package/dist/src/platforms/slack/commands/sections.js +37 -0
  110. package/dist/src/platforms/slack/commands/sections.js.map +1 -0
  111. package/dist/src/platforms/slack/commands/unread.d.ts +12 -0
  112. package/dist/src/platforms/slack/commands/unread.d.ts.map +1 -0
  113. package/dist/src/platforms/slack/commands/unread.js +89 -0
  114. package/dist/src/platforms/slack/commands/unread.js.map +1 -0
  115. package/dist/src/platforms/slack/credential-manager.d.ts.map +1 -1
  116. package/dist/src/platforms/slack/credential-manager.js +20 -6
  117. package/dist/src/platforms/slack/credential-manager.js.map +1 -1
  118. package/dist/src/platforms/slack/token-extractor.d.ts +8 -1
  119. package/dist/src/platforms/slack/token-extractor.d.ts.map +1 -1
  120. package/dist/src/platforms/slack/token-extractor.js +83 -11
  121. package/dist/src/platforms/slack/token-extractor.js.map +1 -1
  122. package/dist/src/platforms/slack/types.d.ts +52 -0
  123. package/dist/src/platforms/slack/types.d.ts.map +1 -1
  124. package/dist/src/platforms/slack/types.js.map +1 -1
  125. package/dist/src/platforms/teams/cli.d.ts.map +1 -0
  126. package/dist/{cli.js → src/platforms/teams/cli.js} +11 -10
  127. package/dist/src/platforms/teams/cli.js.map +1 -0
  128. package/dist/src/platforms/teams/client.d.ts +32 -0
  129. package/dist/src/platforms/teams/client.d.ts.map +1 -0
  130. package/dist/src/platforms/teams/client.js +202 -0
  131. package/dist/src/platforms/teams/client.js.map +1 -0
  132. package/dist/src/platforms/teams/commands/auth.d.ts +14 -0
  133. package/dist/src/platforms/teams/commands/auth.d.ts.map +1 -0
  134. package/dist/src/platforms/teams/commands/auth.js +176 -0
  135. package/dist/src/platforms/teams/commands/auth.js.map +1 -0
  136. package/dist/src/platforms/teams/commands/channel.d.ts +13 -0
  137. package/dist/src/platforms/teams/commands/channel.d.ts.map +1 -0
  138. package/dist/src/platforms/teams/commands/channel.js +97 -0
  139. package/dist/src/platforms/teams/commands/channel.js.map +1 -0
  140. package/dist/src/platforms/teams/commands/file.d.ts +12 -0
  141. package/dist/src/platforms/teams/commands/file.d.ts.map +1 -0
  142. package/dist/src/platforms/teams/commands/file.js +104 -0
  143. package/dist/src/platforms/teams/commands/file.js.map +1 -0
  144. package/dist/{commands → src/platforms/teams/commands}/index.d.ts +5 -2
  145. package/dist/src/platforms/teams/commands/index.d.ts.map +1 -0
  146. package/dist/{commands → src/platforms/teams/commands}/index.js +5 -2
  147. package/dist/src/platforms/teams/commands/index.js.map +1 -0
  148. package/dist/src/platforms/teams/commands/message.d.ts +17 -0
  149. package/dist/src/platforms/teams/commands/message.d.ts.map +1 -0
  150. package/dist/src/platforms/teams/commands/message.js +133 -0
  151. package/dist/src/platforms/teams/commands/message.js.map +1 -0
  152. package/dist/src/platforms/teams/commands/reaction.d.ts +9 -0
  153. package/dist/src/platforms/teams/commands/reaction.d.ts.map +1 -0
  154. package/dist/src/platforms/teams/commands/reaction.js +68 -0
  155. package/dist/src/platforms/teams/commands/reaction.js.map +1 -0
  156. package/dist/src/platforms/teams/commands/snapshot.d.ts +10 -0
  157. package/dist/src/platforms/teams/commands/snapshot.d.ts.map +1 -0
  158. package/dist/src/platforms/teams/commands/snapshot.js +85 -0
  159. package/dist/src/platforms/teams/commands/snapshot.js.map +1 -0
  160. package/dist/src/platforms/teams/commands/team.d.ts +18 -0
  161. package/dist/src/platforms/teams/commands/team.d.ts.map +1 -0
  162. package/dist/src/platforms/teams/commands/team.js +130 -0
  163. package/dist/src/platforms/teams/commands/team.js.map +1 -0
  164. package/dist/src/platforms/teams/commands/user.d.ts.map +1 -0
  165. package/dist/src/platforms/teams/commands/user.js +88 -0
  166. package/dist/src/platforms/teams/commands/user.js.map +1 -0
  167. package/dist/src/platforms/teams/credential-manager.d.ts +18 -0
  168. package/dist/src/platforms/teams/credential-manager.d.ts.map +1 -0
  169. package/dist/src/platforms/teams/credential-manager.js +81 -0
  170. package/dist/src/platforms/teams/credential-manager.js.map +1 -0
  171. package/dist/src/platforms/teams/index.d.ts +4 -0
  172. package/dist/src/platforms/teams/index.d.ts.map +1 -0
  173. package/dist/src/platforms/teams/index.js +6 -0
  174. package/dist/src/platforms/teams/index.js.map +1 -0
  175. package/dist/src/platforms/teams/token-extractor.d.ts +41 -0
  176. package/dist/src/platforms/teams/token-extractor.d.ts.map +1 -0
  177. package/dist/src/platforms/teams/token-extractor.js +360 -0
  178. package/dist/src/platforms/teams/token-extractor.js.map +1 -0
  179. package/dist/src/platforms/teams/types.d.ts +209 -0
  180. package/dist/src/platforms/teams/types.d.ts.map +1 -0
  181. package/dist/src/platforms/teams/types.js +65 -0
  182. package/dist/src/platforms/teams/types.js.map +1 -0
  183. package/dist/src/shared/utils/derived-key-cache.d.ts +20 -0
  184. package/dist/src/shared/utils/derived-key-cache.d.ts.map +1 -0
  185. package/dist/src/shared/utils/derived-key-cache.js +52 -0
  186. package/dist/src/shared/utils/derived-key-cache.js.map +1 -0
  187. package/docs/README.md +113 -0
  188. package/docs/biome.json +8 -0
  189. package/docs/bun.lock +1426 -0
  190. package/docs/content/docs/agent-skills.mdx +98 -0
  191. package/docs/content/docs/index.mdx +124 -0
  192. package/docs/{discord.md → content/docs/integrations/discord.mdx} +46 -21
  193. package/docs/content/docs/integrations/meta.json +5 -0
  194. package/docs/{slack.md → content/docs/integrations/slack.mdx} +5 -4
  195. package/docs/content/docs/integrations/teams.mdx +322 -0
  196. package/docs/content/docs/meta.json +8 -0
  197. package/docs/content/docs/quick-start.mdx +103 -0
  198. package/docs/eslint.config.mjs +30 -0
  199. package/docs/next.config.ts +10 -0
  200. package/docs/package.json +42 -0
  201. package/docs/postcss.config.mjs +7 -0
  202. package/docs/public/file.svg +1 -0
  203. package/docs/public/globe.svg +1 -0
  204. package/docs/public/next.svg +1 -0
  205. package/docs/public/vercel.svg +1 -0
  206. package/docs/public/window.svg +1 -0
  207. package/docs/source.config.ts +11 -0
  208. package/docs/src/app/api/search/route.ts +4 -0
  209. package/docs/src/app/docs/[[...slug]]/page.tsx +53 -0
  210. package/docs/src/app/docs/layout.tsx +21 -0
  211. package/docs/src/app/globals.css +10 -0
  212. package/docs/src/app/icon.png +0 -0
  213. package/docs/src/app/layout.config.tsx +7 -0
  214. package/docs/src/app/layout.tsx +35 -0
  215. package/docs/src/app/page.tsx +489 -0
  216. package/docs/src/lib/source.ts +15 -0
  217. package/docs/src/mdx-components.tsx +18 -0
  218. package/docs/tsconfig.json +36 -0
  219. package/e2e/README.md +256 -0
  220. package/e2e/config.ts +51 -0
  221. package/e2e/discord.e2e.test.ts +252 -0
  222. package/e2e/helpers.ts +107 -0
  223. package/e2e/slack.e2e.test.ts +309 -0
  224. package/package.json +8 -4
  225. package/scripts/postbuild.ts +15 -0
  226. package/skills/agent-discord/SKILL.md +96 -30
  227. package/skills/agent-discord/references/authentication.md +27 -27
  228. package/skills/agent-discord/references/common-patterns.md +15 -15
  229. package/skills/agent-discord/templates/post-message.sh +6 -6
  230. package/skills/agent-discord/templates/{guild-summary.sh → server-summary.sh} +20 -20
  231. package/skills/agent-slack/SKILL.md +53 -0
  232. package/skills/agent-teams/SKILL.md +292 -0
  233. package/skills/agent-teams/references/authentication.md +375 -0
  234. package/skills/agent-teams/references/common-patterns.md +596 -0
  235. package/skills/agent-teams/templates/monitor-channel.sh +239 -0
  236. package/skills/agent-teams/templates/post-message.sh +224 -0
  237. package/skills/agent-teams/templates/team-summary.sh +210 -0
  238. package/src/cli.ts +4 -0
  239. package/src/platforms/discord/cli.ts +3 -3
  240. package/src/platforms/discord/client.test.ts +15 -15
  241. package/src/platforms/discord/client.ts +163 -17
  242. package/src/platforms/discord/commands/auth.test.ts +53 -37
  243. package/src/platforms/discord/commands/auth.ts +16 -16
  244. package/src/platforms/discord/commands/channel.test.ts +58 -46
  245. package/src/platforms/discord/commands/channel.ts +4 -4
  246. package/src/platforms/discord/commands/dm.test.ts +146 -0
  247. package/src/platforms/discord/commands/dm.ts +85 -0
  248. package/src/platforms/discord/commands/file.test.ts +40 -53
  249. package/src/platforms/discord/commands/friend.test.ts +134 -0
  250. package/src/platforms/discord/commands/friend.ts +45 -0
  251. package/src/platforms/discord/commands/index.ts +1 -1
  252. package/src/platforms/discord/commands/member.test.ts +98 -0
  253. package/src/platforms/discord/commands/member.ts +59 -0
  254. package/src/platforms/discord/commands/mention.test.ts +129 -0
  255. package/src/platforms/discord/commands/mention.ts +59 -0
  256. package/src/platforms/discord/commands/message.test.ts +139 -44
  257. package/src/platforms/discord/commands/message.ts +134 -1
  258. package/src/platforms/discord/commands/note.test.ts +84 -0
  259. package/src/platforms/discord/commands/note.ts +73 -0
  260. package/src/platforms/discord/commands/profile.test.ts +107 -0
  261. package/src/platforms/discord/commands/profile.ts +55 -0
  262. package/src/platforms/discord/commands/reaction.test.ts +54 -42
  263. package/src/platforms/discord/commands/server.test.ts +137 -0
  264. package/src/platforms/discord/commands/{guild.ts → server.ts} +31 -31
  265. package/src/platforms/discord/commands/snapshot.test.ts +1 -1
  266. package/src/platforms/discord/commands/snapshot.ts +10 -10
  267. package/src/platforms/discord/commands/thread.test.ts +121 -0
  268. package/src/platforms/discord/commands/thread.ts +92 -0
  269. package/src/platforms/discord/commands/user.test.ts +8 -8
  270. package/src/platforms/discord/commands/user.ts +16 -5
  271. package/src/platforms/discord/credential-manager.test.ts +137 -136
  272. package/src/platforms/discord/credential-manager.ts +35 -26
  273. package/src/platforms/discord/super-properties.ts +55 -0
  274. package/src/platforms/discord/token-extractor.test.ts +133 -383
  275. package/src/platforms/discord/token-extractor.ts +37 -3
  276. package/src/platforms/discord/types.test.ts +8 -8
  277. package/src/platforms/discord/types.ts +144 -8
  278. package/{tests → src/platforms/slack}/cli.test.ts +3 -3
  279. package/src/platforms/slack/cli.ts +10 -0
  280. package/{tests/slack-client.test.ts → src/platforms/slack/client.test.ts} +1 -1
  281. package/src/platforms/slack/client.ts +172 -1
  282. package/src/platforms/slack/commands/activity.test.ts +147 -0
  283. package/src/platforms/slack/commands/activity.ts +65 -0
  284. package/{tests → src/platforms/slack}/commands/auth.test.ts +25 -13
  285. package/{tests → src/platforms/slack}/commands/channel.test.ts +2 -2
  286. package/src/platforms/slack/commands/drafts.test.ts +136 -0
  287. package/src/platforms/slack/commands/drafts.ts +62 -0
  288. package/{tests → src/platforms/slack}/commands/file.test.ts +2 -2
  289. package/src/platforms/slack/commands/index.ts +5 -0
  290. package/{tests → src/platforms/slack}/commands/message.test.ts +2 -2
  291. package/{tests → src/platforms/slack}/commands/reaction.test.ts +1 -1
  292. package/src/platforms/slack/commands/saved.test.ts +140 -0
  293. package/src/platforms/slack/commands/saved.ts +71 -0
  294. package/src/platforms/slack/commands/sections.test.ts +80 -0
  295. package/src/platforms/slack/commands/sections.ts +50 -0
  296. package/{tests → src/platforms/slack}/commands/snapshot.test.ts +117 -105
  297. package/src/platforms/slack/commands/unread.test.ts +139 -0
  298. package/src/platforms/slack/commands/unread.ts +129 -0
  299. package/{tests → src/platforms/slack}/commands/user.test.ts +3 -3
  300. package/{tests → src/platforms/slack}/commands/workspace.test.ts +44 -95
  301. package/{tests → src/platforms/slack}/credential-manager.test.ts +2 -2
  302. package/src/platforms/slack/credential-manager.ts +22 -7
  303. package/src/platforms/slack/token-extractor-node-test.ts +40 -0
  304. package/src/platforms/slack/token-extractor-node.test.ts +10 -0
  305. package/src/platforms/slack/token-extractor.ts +93 -12
  306. package/{tests → src/platforms/slack}/types.test.ts +1 -1
  307. package/src/platforms/slack/types.ts +58 -0
  308. package/src/platforms/teams/cli.ts +36 -0
  309. package/src/platforms/teams/client.test.ts +500 -0
  310. package/src/platforms/teams/client.ts +365 -0
  311. package/src/platforms/teams/commands/auth.test.ts +99 -0
  312. package/src/platforms/teams/commands/auth.ts +232 -0
  313. package/src/platforms/teams/commands/channel.test.ts +147 -0
  314. package/src/platforms/teams/commands/channel.ts +129 -0
  315. package/src/platforms/teams/commands/file.test.ts +88 -0
  316. package/src/platforms/teams/commands/file.ts +144 -0
  317. package/src/platforms/teams/commands/index.ts +12 -0
  318. package/src/platforms/teams/commands/message.test.ts +110 -0
  319. package/src/platforms/teams/commands/message.ts +188 -0
  320. package/src/platforms/teams/commands/reaction.test.ts +87 -0
  321. package/src/platforms/teams/commands/reaction.ts +104 -0
  322. package/src/platforms/teams/commands/snapshot.test.ts +35 -0
  323. package/src/platforms/teams/commands/snapshot.ts +115 -0
  324. package/src/platforms/teams/commands/team.test.ts +157 -0
  325. package/src/platforms/teams/commands/team.ts +164 -0
  326. package/src/platforms/teams/commands/user.test.ts +83 -0
  327. package/src/platforms/teams/commands/user.ts +112 -0
  328. package/src/platforms/teams/credential-manager.test.ts +178 -0
  329. package/src/platforms/teams/credential-manager.ts +92 -0
  330. package/src/platforms/teams/index.ts +5 -0
  331. package/src/platforms/teams/token-extractor.test.ts +429 -0
  332. package/src/platforms/teams/token-extractor.ts +490 -0
  333. package/src/platforms/teams/types.test.ts +226 -0
  334. package/src/platforms/teams/types.ts +140 -0
  335. package/src/shared/utils/derived-key-cache.test.ts +136 -0
  336. package/src/shared/utils/derived-key-cache.ts +63 -0
  337. package/tsconfig.json +1 -1
  338. package/dist/cli.d.ts.map +0 -1
  339. package/dist/cli.js.map +0 -1
  340. package/dist/commands/auth.d.ts +0 -3
  341. package/dist/commands/auth.d.ts.map +0 -1
  342. package/dist/commands/auth.js +0 -140
  343. package/dist/commands/auth.js.map +0 -1
  344. package/dist/commands/channel.d.ts +0 -3
  345. package/dist/commands/channel.d.ts.map +0 -1
  346. package/dist/commands/channel.js +0 -118
  347. package/dist/commands/channel.js.map +0 -1
  348. package/dist/commands/file.d.ts +0 -3
  349. package/dist/commands/file.d.ts.map +0 -1
  350. package/dist/commands/file.js +0 -113
  351. package/dist/commands/file.js.map +0 -1
  352. package/dist/commands/index.d.ts.map +0 -1
  353. package/dist/commands/index.js.map +0 -1
  354. package/dist/commands/message.d.ts +0 -3
  355. package/dist/commands/message.d.ts.map +0 -1
  356. package/dist/commands/message.js +0 -214
  357. package/dist/commands/message.js.map +0 -1
  358. package/dist/commands/reaction.d.ts +0 -3
  359. package/dist/commands/reaction.d.ts.map +0 -1
  360. package/dist/commands/reaction.js +0 -100
  361. package/dist/commands/reaction.js.map +0 -1
  362. package/dist/commands/snapshot.d.ts +0 -3
  363. package/dist/commands/snapshot.d.ts.map +0 -1
  364. package/dist/commands/snapshot.js +0 -88
  365. package/dist/commands/snapshot.js.map +0 -1
  366. package/dist/commands/user.d.ts.map +0 -1
  367. package/dist/commands/user.js +0 -96
  368. package/dist/commands/user.js.map +0 -1
  369. package/dist/commands/workspace.d.ts +0 -3
  370. package/dist/commands/workspace.d.ts.map +0 -1
  371. package/dist/commands/workspace.js +0 -89
  372. package/dist/commands/workspace.js.map +0 -1
  373. package/dist/lib/credential-manager.d.ts +0 -13
  374. package/dist/lib/credential-manager.d.ts.map +0 -1
  375. package/dist/lib/credential-manager.js +0 -58
  376. package/dist/lib/credential-manager.js.map +0 -1
  377. package/dist/lib/index.d.ts +0 -3
  378. package/dist/lib/index.d.ts.map +0 -1
  379. package/dist/lib/index.js +0 -3
  380. package/dist/lib/index.js.map +0 -1
  381. package/dist/lib/ref-manager.d.ts +0 -26
  382. package/dist/lib/ref-manager.d.ts.map +0 -1
  383. package/dist/lib/ref-manager.js +0 -92
  384. package/dist/lib/ref-manager.js.map +0 -1
  385. package/dist/lib/slack-client.d.ts +0 -37
  386. package/dist/lib/slack-client.d.ts.map +0 -1
  387. package/dist/lib/slack-client.js +0 -379
  388. package/dist/lib/slack-client.js.map +0 -1
  389. package/dist/lib/token-extractor.d.ts +0 -28
  390. package/dist/lib/token-extractor.d.ts.map +0 -1
  391. package/dist/lib/token-extractor.js +0 -401
  392. package/dist/lib/token-extractor.js.map +0 -1
  393. package/dist/src/platforms/discord/client.test.d.ts +0 -2
  394. package/dist/src/platforms/discord/client.test.d.ts.map +0 -1
  395. package/dist/src/platforms/discord/client.test.js +0 -367
  396. package/dist/src/platforms/discord/client.test.js.map +0 -1
  397. package/dist/src/platforms/discord/commands/auth.test.d.ts +0 -2
  398. package/dist/src/platforms/discord/commands/auth.test.d.ts.map +0 -1
  399. package/dist/src/platforms/discord/commands/auth.test.js +0 -65
  400. package/dist/src/platforms/discord/commands/auth.test.js.map +0 -1
  401. package/dist/src/platforms/discord/commands/channel.test.d.ts +0 -2
  402. package/dist/src/platforms/discord/commands/channel.test.d.ts.map +0 -1
  403. package/dist/src/platforms/discord/commands/channel.test.js +0 -136
  404. package/dist/src/platforms/discord/commands/channel.test.js.map +0 -1
  405. package/dist/src/platforms/discord/commands/file.test.d.ts +0 -2
  406. package/dist/src/platforms/discord/commands/file.test.d.ts.map +0 -1
  407. package/dist/src/platforms/discord/commands/file.test.js +0 -83
  408. package/dist/src/platforms/discord/commands/file.test.js.map +0 -1
  409. package/dist/src/platforms/discord/commands/guild.test.d.ts +0 -2
  410. package/dist/src/platforms/discord/commands/guild.test.d.ts.map +0 -1
  411. package/dist/src/platforms/discord/commands/guild.test.js +0 -100
  412. package/dist/src/platforms/discord/commands/guild.test.js.map +0 -1
  413. package/dist/src/platforms/discord/commands/message.test.d.ts +0 -2
  414. package/dist/src/platforms/discord/commands/message.test.d.ts.map +0 -1
  415. package/dist/src/platforms/discord/commands/message.test.js +0 -91
  416. package/dist/src/platforms/discord/commands/message.test.js.map +0 -1
  417. package/dist/src/platforms/discord/commands/reaction.test.d.ts +0 -2
  418. package/dist/src/platforms/discord/commands/reaction.test.d.ts.map +0 -1
  419. package/dist/src/platforms/discord/commands/reaction.test.js +0 -115
  420. package/dist/src/platforms/discord/commands/reaction.test.js.map +0 -1
  421. package/dist/src/platforms/discord/commands/snapshot.test.d.ts +0 -2
  422. package/dist/src/platforms/discord/commands/snapshot.test.d.ts.map +0 -1
  423. package/dist/src/platforms/discord/commands/snapshot.test.js +0 -25
  424. package/dist/src/platforms/discord/commands/snapshot.test.js.map +0 -1
  425. package/dist/src/platforms/discord/commands/user.test.d.ts +0 -2
  426. package/dist/src/platforms/discord/commands/user.test.d.ts.map +0 -1
  427. package/dist/src/platforms/discord/commands/user.test.js +0 -103
  428. package/dist/src/platforms/discord/commands/user.test.js.map +0 -1
  429. package/dist/src/platforms/discord/credential-manager.test.d.ts +0 -2
  430. package/dist/src/platforms/discord/credential-manager.test.d.ts.map +0 -1
  431. package/dist/src/platforms/discord/credential-manager.test.js +0 -136
  432. package/dist/src/platforms/discord/credential-manager.test.js.map +0 -1
  433. package/dist/src/platforms/discord/token-extractor.test.d.ts +0 -2
  434. package/dist/src/platforms/discord/token-extractor.test.d.ts.map +0 -1
  435. package/dist/src/platforms/discord/token-extractor.test.js +0 -789
  436. package/dist/src/platforms/discord/token-extractor.test.js.map +0 -1
  437. package/dist/src/platforms/discord/types.test.d.ts +0 -2
  438. package/dist/src/platforms/discord/types.test.d.ts.map +0 -1
  439. package/dist/src/platforms/discord/types.test.js +0 -211
  440. package/dist/src/platforms/discord/types.test.js.map +0 -1
  441. package/dist/src/shared/utils/concurrency.test.d.ts +0 -2
  442. package/dist/src/shared/utils/concurrency.test.d.ts.map +0 -1
  443. package/dist/src/shared/utils/concurrency.test.js +0 -39
  444. package/dist/src/shared/utils/concurrency.test.js.map +0 -1
  445. package/dist/tests/cli.test.d.ts +0 -2
  446. package/dist/tests/cli.test.d.ts.map +0 -1
  447. package/dist/tests/cli.test.js +0 -83
  448. package/dist/tests/cli.test.js.map +0 -1
  449. package/dist/tests/commands/.test-slack-data/Local Storage/leveldb/CURRENT +0 -1
  450. package/dist/tests/commands/.test-slack-data/Local Storage/leveldb/LOCK +0 -0
  451. package/dist/tests/commands/.test-slack-data/Local Storage/leveldb/LOG +0 -3
  452. package/dist/tests/commands/.test-slack-data/Local Storage/leveldb/LOG.old +0 -1
  453. package/dist/tests/commands/.test-slack-data/Local Storage/leveldb/MANIFEST-000004 +0 -0
  454. package/dist/tests/commands/auth.test.d.ts +0 -2
  455. package/dist/tests/commands/auth.test.d.ts.map +0 -1
  456. package/dist/tests/commands/auth.test.js +0 -304
  457. package/dist/tests/commands/auth.test.js.map +0 -1
  458. package/dist/tests/commands/channel.test.d.ts +0 -2
  459. package/dist/tests/commands/channel.test.d.ts.map +0 -1
  460. package/dist/tests/commands/channel.test.js +0 -166
  461. package/dist/tests/commands/channel.test.js.map +0 -1
  462. package/dist/tests/commands/file.test.d.ts +0 -2
  463. package/dist/tests/commands/file.test.d.ts.map +0 -1
  464. package/dist/tests/commands/file.test.js +0 -175
  465. package/dist/tests/commands/file.test.js.map +0 -1
  466. package/dist/tests/commands/message.test.d.ts +0 -2
  467. package/dist/tests/commands/message.test.d.ts.map +0 -1
  468. package/dist/tests/commands/message.test.js +0 -293
  469. package/dist/tests/commands/message.test.js.map +0 -1
  470. package/dist/tests/commands/reaction.test.d.ts +0 -2
  471. package/dist/tests/commands/reaction.test.d.ts.map +0 -1
  472. package/dist/tests/commands/reaction.test.js +0 -84
  473. package/dist/tests/commands/reaction.test.js.map +0 -1
  474. package/dist/tests/commands/snapshot.test.d.ts +0 -2
  475. package/dist/tests/commands/snapshot.test.d.ts.map +0 -1
  476. package/dist/tests/commands/snapshot.test.js +0 -280
  477. package/dist/tests/commands/snapshot.test.js.map +0 -1
  478. package/dist/tests/commands/user.test.d.ts +0 -2
  479. package/dist/tests/commands/user.test.d.ts.map +0 -1
  480. package/dist/tests/commands/user.test.js +0 -117
  481. package/dist/tests/commands/user.test.js.map +0 -1
  482. package/dist/tests/commands/workspace.test.d.ts +0 -2
  483. package/dist/tests/commands/workspace.test.d.ts.map +0 -1
  484. package/dist/tests/commands/workspace.test.js +0 -453
  485. package/dist/tests/commands/workspace.test.js.map +0 -1
  486. package/dist/tests/credential-manager.test.d.ts +0 -2
  487. package/dist/tests/credential-manager.test.d.ts.map +0 -1
  488. package/dist/tests/credential-manager.test.js +0 -199
  489. package/dist/tests/credential-manager.test.js.map +0 -1
  490. package/dist/tests/slack-client.test.d.ts +0 -2
  491. package/dist/tests/slack-client.test.d.ts.map +0 -1
  492. package/dist/tests/slack-client.test.js +0 -741
  493. package/dist/tests/slack-client.test.js.map +0 -1
  494. package/dist/tests/types.test.d.ts +0 -2
  495. package/dist/tests/types.test.d.ts.map +0 -1
  496. package/dist/tests/types.test.js +0 -215
  497. package/dist/tests/types.test.js.map +0 -1
  498. package/dist/types/index.d.ts +0 -369
  499. package/dist/types/index.d.ts.map +0 -1
  500. package/dist/types/index.js +0 -92
  501. package/dist/types/index.js.map +0 -1
  502. package/dist/utils/error-handler.d.ts +0 -2
  503. package/dist/utils/error-handler.d.ts.map +0 -1
  504. package/dist/utils/error-handler.js +0 -5
  505. package/dist/utils/error-handler.js.map +0 -1
  506. package/dist/utils/output.d.ts +0 -2
  507. package/dist/utils/output.d.ts.map +0 -1
  508. package/dist/utils/output.js +0 -4
  509. package/dist/utils/output.js.map +0 -1
  510. package/src/platforms/discord/commands/guild.test.ts +0 -117
  511. /package/dist/{cli.d.ts → src/platforms/teams/cli.d.ts} +0 -0
  512. /package/dist/{commands → src/platforms/teams/commands}/user.d.ts +0 -0
@@ -0,0 +1,360 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { createDecipheriv, pbkdf2Sync } from 'node:crypto';
3
+ import { copyFileSync, existsSync, readFileSync, unlinkSync } from 'node:fs';
4
+ import { homedir, tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { DerivedKeyCache } from '../../shared/utils/derived-key-cache';
7
+ const TEAMS_PROCESS_NAMES = {
8
+ darwin: 'Microsoft Teams',
9
+ win32: 'Teams.exe',
10
+ linux: 'teams',
11
+ };
12
+ const SKYPETOKEN_COOKIE_NAME = 'skypetoken_asm';
13
+ const TEAMS_HOST_PATTERNS = [
14
+ '.asyncgw.teams.microsoft.com',
15
+ '.asm.skype.com',
16
+ 'teams.microsoft.com',
17
+ 'teams.live.com',
18
+ '.microsoft.com',
19
+ ];
20
+ export class TeamsTokenExtractor {
21
+ platform;
22
+ keyCache;
23
+ cachedKey = null;
24
+ constructor(platform, keyCache) {
25
+ this.platform = platform ?? process.platform;
26
+ this.keyCache = keyCache ?? new DerivedKeyCache();
27
+ }
28
+ getTeamsCookiesPaths() {
29
+ switch (this.platform) {
30
+ case 'darwin':
31
+ return [
32
+ join(homedir(), 'Library', 'Containers', 'com.microsoft.teams2', 'Data', 'Library', 'Application Support', 'Microsoft', 'MSTeams', 'EBWebView', 'WV2Profile_tfw', 'Cookies'),
33
+ join(homedir(), 'Library', 'Containers', 'com.microsoft.teams2', 'Data', 'Library', 'Application Support', 'Microsoft', 'MSTeams', 'EBWebView', 'WV2Profile_tfl', 'Cookies'),
34
+ join(homedir(), 'Library', 'Containers', 'com.microsoft.teams2', 'Data', 'Library', 'Application Support', 'Microsoft', 'MSTeams', 'EBWebView', 'Default', 'Cookies'),
35
+ join(homedir(), 'Library', 'Application Support', 'Microsoft', 'Teams', 'Cookies'),
36
+ ];
37
+ case 'linux':
38
+ return [join(homedir(), '.config', 'Microsoft', 'Microsoft Teams', 'Cookies')];
39
+ case 'win32': {
40
+ const localAppData = process.env.LOCALAPPDATA || join(homedir(), 'AppData', 'Local');
41
+ const appdata = process.env.APPDATA || join(homedir(), 'AppData', 'Roaming');
42
+ return [
43
+ // New Teams (MSIX/Store) - WebView2 profile paths
44
+ join(localAppData, 'Packages', 'MSTeams_8wekyb3d8bbwe', 'LocalCache', 'Microsoft', 'MSTeams', 'EBWebView', 'WV2Profile_tfw', 'Cookies'),
45
+ join(localAppData, 'Packages', 'MSTeams_8wekyb3d8bbwe', 'LocalCache', 'Microsoft', 'MSTeams', 'EBWebView', 'WV2Profile_tfl', 'Cookies'),
46
+ join(localAppData, 'Packages', 'MSTeams_8wekyb3d8bbwe', 'LocalCache', 'Microsoft', 'MSTeams', 'EBWebView', 'Default', 'Cookies'),
47
+ // Classic Teams fallback
48
+ join(appdata, 'Microsoft', 'Teams', 'Cookies'),
49
+ ];
50
+ }
51
+ default:
52
+ return [];
53
+ }
54
+ }
55
+ getLocalStatePath() {
56
+ switch (this.platform) {
57
+ case 'darwin':
58
+ return join(homedir(), 'Library', 'Application Support', 'Microsoft', 'Teams', 'Local State');
59
+ case 'linux':
60
+ return join(homedir(), '.config', 'Microsoft', 'Microsoft Teams', 'Local State');
61
+ case 'win32': {
62
+ const localAppData = process.env.LOCALAPPDATA || join(homedir(), 'AppData', 'Local');
63
+ const appdata = process.env.APPDATA || join(homedir(), 'AppData', 'Roaming');
64
+ const newTeamsPath = join(localAppData, 'Packages', 'MSTeams_8wekyb3d8bbwe', 'LocalCache', 'Microsoft', 'MSTeams', 'EBWebView', 'Local State');
65
+ if (existsSync(newTeamsPath))
66
+ return newTeamsPath;
67
+ return join(appdata, 'Microsoft', 'Teams', 'Local State');
68
+ }
69
+ default:
70
+ return '';
71
+ }
72
+ }
73
+ getKeychainVariants() {
74
+ return [
75
+ // New Teams (com.microsoft.teams2) keychain entry - try first
76
+ { service: 'Microsoft Teams Safe Storage', account: 'Microsoft Teams' },
77
+ // Work/school variant
78
+ {
79
+ service: 'Microsoft Teams (work or school) Safe Storage',
80
+ account: 'Microsoft Teams (work or school)',
81
+ },
82
+ // Edge WebView2 fallback
83
+ { service: 'Microsoft Edge Safe Storage', account: 'Microsoft Edge' },
84
+ // Classic Teams fallback
85
+ { service: 'Teams Safe Storage', account: 'Teams' },
86
+ ];
87
+ }
88
+ isValidSkypeToken(token) {
89
+ if (!token || token.length === 0)
90
+ return false;
91
+ // Skype tokens are typically JWT format or long base64 strings (50+ chars)
92
+ return token.length >= 50;
93
+ }
94
+ isEncryptedValue(value) {
95
+ if (!value || value.length < 4)
96
+ return false;
97
+ const prefix = value.subarray(0, 3).toString('utf8');
98
+ return prefix === 'v10' || prefix === 'v11';
99
+ }
100
+ async extract() {
101
+ await this.loadCachedKey();
102
+ const cookieToken = await this.extractFromCookiesDB();
103
+ if (cookieToken && this.isValidSkypeToken(cookieToken)) {
104
+ return { token: cookieToken };
105
+ }
106
+ return null;
107
+ }
108
+ async loadCachedKey() {
109
+ if (this.platform !== 'darwin')
110
+ return;
111
+ const cached = await this.keyCache.get('teams');
112
+ if (cached) {
113
+ this.cachedKey = cached;
114
+ }
115
+ }
116
+ async clearKeyCache() {
117
+ await this.keyCache.clear('teams');
118
+ this.cachedKey = null;
119
+ }
120
+ async extractFromCookiesDB() {
121
+ const dbPaths = this.getTeamsCookiesPaths();
122
+ for (const dbPath of dbPaths) {
123
+ if (!dbPath || !existsSync(dbPath))
124
+ continue;
125
+ // Try copy-first strategy to handle file locking
126
+ const token = await this.copyAndExtract(dbPath);
127
+ if (token)
128
+ return token;
129
+ }
130
+ return null;
131
+ }
132
+ async copyAndExtract(dbPath) {
133
+ const tempPath = join(tmpdir(), `teams-cookies-${Date.now()}`);
134
+ try {
135
+ this.copyDatabaseToTemp(dbPath, tempPath);
136
+ const token = await this.extractFromSQLite(tempPath);
137
+ this.cleanupTempFile(tempPath);
138
+ return token;
139
+ }
140
+ catch {
141
+ // File locked or copy failed
142
+ this.cleanupTempFile(tempPath);
143
+ return null;
144
+ }
145
+ }
146
+ copyDatabaseToTemp(sourcePath, destPath) {
147
+ copyFileSync(sourcePath, destPath);
148
+ return destPath;
149
+ }
150
+ cleanupTempFile(tempPath) {
151
+ try {
152
+ if (existsSync(tempPath)) {
153
+ unlinkSync(tempPath);
154
+ }
155
+ }
156
+ catch {
157
+ // Ignore cleanup errors
158
+ }
159
+ }
160
+ async extractFromSQLite(dbPath) {
161
+ try {
162
+ for (const hostPattern of TEAMS_HOST_PATTERNS) {
163
+ const sql = `
164
+ SELECT encrypted_value
165
+ FROM cookies
166
+ WHERE name = '${SKYPETOKEN_COOKIE_NAME}'
167
+ AND host_key LIKE '%${hostPattern}%'
168
+ LIMIT 1
169
+ `;
170
+ let row;
171
+ if (typeof globalThis.Bun !== 'undefined') {
172
+ const { Database } = require('bun:sqlite');
173
+ const db = new Database(dbPath, { readonly: true });
174
+ row = db.query(sql).get();
175
+ db.close();
176
+ }
177
+ else {
178
+ const Database = require('better-sqlite3');
179
+ const db = new Database(dbPath, { readonly: true });
180
+ row = db.prepare(sql).get();
181
+ db.close();
182
+ }
183
+ if (row?.encrypted_value) {
184
+ const decrypted = this.decryptCookie(Buffer.from(row.encrypted_value));
185
+ if (decrypted && this.isValidSkypeToken(decrypted)) {
186
+ return decrypted;
187
+ }
188
+ }
189
+ }
190
+ return null;
191
+ }
192
+ catch {
193
+ return null;
194
+ }
195
+ }
196
+ decryptCookie(encryptedValue) {
197
+ if (!this.isEncryptedValue(encryptedValue)) {
198
+ // Not encrypted, return as-is
199
+ return encryptedValue.toString('utf8');
200
+ }
201
+ if (this.platform === 'win32') {
202
+ return this.decryptWindowsCookie(encryptedValue);
203
+ }
204
+ else if (this.platform === 'darwin') {
205
+ return this.decryptMacCookie(encryptedValue);
206
+ }
207
+ else if (this.platform === 'linux') {
208
+ return this.decryptLinuxCookie(encryptedValue);
209
+ }
210
+ return null;
211
+ }
212
+ decryptWindowsCookie(encryptedData) {
213
+ try {
214
+ const localStatePath = this.getLocalStatePath();
215
+ if (!existsSync(localStatePath))
216
+ return null;
217
+ const localState = JSON.parse(readFileSync(localStatePath, 'utf8'));
218
+ const encryptedKey = Buffer.from(localState.os_crypt.encrypted_key, 'base64');
219
+ // Remove DPAPI prefix (5 bytes)
220
+ const dpapiBlobKey = encryptedKey.subarray(5);
221
+ const masterKey = this.decryptDPAPI(dpapiBlobKey);
222
+ if (!masterKey)
223
+ return null;
224
+ return this.decryptAESGCM(encryptedData, masterKey);
225
+ }
226
+ catch {
227
+ return null;
228
+ }
229
+ }
230
+ decryptDPAPI(encryptedBlob) {
231
+ try {
232
+ const b64 = encryptedBlob.toString('base64');
233
+ const psScript = `
234
+ Add-Type -AssemblyName System.Security
235
+ $bytes = [Convert]::FromBase64String('${b64}')
236
+ $decrypted = [Security.Cryptography.ProtectedData]::Unprotect($bytes, $null, 'CurrentUser')
237
+ [Convert]::ToBase64String($decrypted)
238
+ `.replace(/\n/g, ' ');
239
+ const result = execSync(`powershell -Command "${psScript}"`, { encoding: 'utf8' });
240
+ return Buffer.from(result.trim(), 'base64');
241
+ }
242
+ catch {
243
+ return null;
244
+ }
245
+ }
246
+ decryptMacCookie(encryptedData) {
247
+ if (this.cachedKey) {
248
+ const decrypted = this.decryptAESCBC(encryptedData, this.cachedKey);
249
+ if (decrypted)
250
+ return decrypted;
251
+ }
252
+ const password = this.getKeychainPassword();
253
+ if (!password)
254
+ return null;
255
+ const key = pbkdf2Sync(password, 'saltysalt', 1003, 16, 'sha1');
256
+ const decrypted = this.decryptAESCBC(encryptedData, key);
257
+ if (decrypted) {
258
+ this.cachedKey = key;
259
+ this.keyCache.set('teams', key).catch(() => { });
260
+ }
261
+ return decrypted;
262
+ }
263
+ decryptLinuxCookie(encryptedData) {
264
+ // Linux uses a hardcoded password 'peanuts' for Chromium-based apps
265
+ const key = pbkdf2Sync('peanuts', 'saltysalt', 1, 16, 'sha1');
266
+ return this.decryptAESCBC(encryptedData, key);
267
+ }
268
+ getKeychainPassword() {
269
+ const variants = this.getKeychainVariants();
270
+ for (const variant of variants) {
271
+ const password = this.execSecurityCommand(variant.service, variant.account);
272
+ if (password)
273
+ return password;
274
+ }
275
+ return null;
276
+ }
277
+ execSecurityCommand(service, account) {
278
+ try {
279
+ // Escape double quotes in service/account to prevent command injection
280
+ const safeService = service.replace(/"/g, '\\"');
281
+ const safeAccount = account.replace(/"/g, '\\"');
282
+ const result = execSync(`security find-generic-password -s "${safeService}" -a "${safeAccount}" -w 2>/dev/null`, { encoding: 'utf8' });
283
+ return result.trim();
284
+ }
285
+ catch {
286
+ return null;
287
+ }
288
+ }
289
+ decryptAESCBC(encryptedData, key) {
290
+ try {
291
+ const ciphertext = encryptedData.subarray(3);
292
+ const iv = Buffer.alloc(16, 0x20);
293
+ const decipher = createDecipheriv('aes-128-cbc', key, iv);
294
+ decipher.setAutoPadding(true);
295
+ const decrypted = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
296
+ const decryptedStr = decrypted.toString('utf8');
297
+ // Chromium v24+ prepends a 32-byte integrity hash before the actual value
298
+ // Look for JWT token start (eyJ) or other token patterns
299
+ const jwtStart = decryptedStr.indexOf('eyJ');
300
+ if (jwtStart > 0 && jwtStart <= 32) {
301
+ return decryptedStr.substring(jwtStart);
302
+ }
303
+ // If no JWT prefix found but decryption succeeded, check if first 32 bytes are garbage
304
+ if (decrypted.length > 32) {
305
+ const possibleToken = decryptedStr.substring(32);
306
+ if (possibleToken.length > 50 && /^[A-Za-z0-9._-]+$/.test(possibleToken.substring(0, 50))) {
307
+ return possibleToken;
308
+ }
309
+ }
310
+ return decryptedStr;
311
+ }
312
+ catch {
313
+ return null;
314
+ }
315
+ }
316
+ decryptAESGCM(encryptedData, key) {
317
+ try {
318
+ // Format: v10 (3 bytes) + IV (12 bytes) + ciphertext + auth tag (16 bytes)
319
+ if (encryptedData.length < 3 + 12 + 16)
320
+ return null;
321
+ const iv = encryptedData.subarray(3, 15);
322
+ const authTag = encryptedData.subarray(-16);
323
+ const ciphertext = encryptedData.subarray(15, -16);
324
+ const decipher = createDecipheriv('aes-256-gcm', key, iv);
325
+ decipher.setAuthTag(authTag);
326
+ const decrypted = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
327
+ return decrypted.toString('utf8');
328
+ }
329
+ catch {
330
+ return null;
331
+ }
332
+ }
333
+ async isTeamsRunning() {
334
+ const processName = this.getProcessName();
335
+ return this.checkProcessRunning(processName);
336
+ }
337
+ getProcessName() {
338
+ return TEAMS_PROCESS_NAMES[this.platform] || TEAMS_PROCESS_NAMES.linux;
339
+ }
340
+ checkProcessRunning(processName) {
341
+ try {
342
+ if (this.platform === 'win32') {
343
+ const result = execSync(`tasklist /FI "IMAGENAME eq ${processName}" 2>nul`, {
344
+ encoding: 'utf8',
345
+ });
346
+ return result.toLowerCase().includes(processName.toLowerCase());
347
+ }
348
+ else {
349
+ const result = execSync(`pgrep -f "${processName}" 2>/dev/null || true`, {
350
+ encoding: 'utf8',
351
+ });
352
+ return result.trim().length > 0;
353
+ }
354
+ }
355
+ catch {
356
+ return false;
357
+ }
358
+ }
359
+ }
360
+ //# sourceMappingURL=token-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-extractor.js","sourceRoot":"","sources":["../../../../src/platforms/teams/token-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Core type definitions for Microsoft Teams platform
3
+ */
4
+ import { z } from 'zod';
5
+ export interface TeamsTeam {
6
+ id: string;
7
+ name: string;
8
+ description?: string;
9
+ }
10
+ export interface TeamsChannel {
11
+ id: string;
12
+ team_id: string;
13
+ name: string;
14
+ type: string;
15
+ }
16
+ export interface TeamsMessage {
17
+ id: string;
18
+ channel_id: string;
19
+ author: {
20
+ id: string;
21
+ displayName: string;
22
+ };
23
+ content: string;
24
+ timestamp: string;
25
+ }
26
+ export interface TeamsUser {
27
+ id: string;
28
+ displayName: string;
29
+ email?: string;
30
+ userPrincipalName?: string;
31
+ }
32
+ export interface TeamsReaction {
33
+ emoji: string;
34
+ count: number;
35
+ }
36
+ export interface TeamsFile {
37
+ id: string;
38
+ name: string;
39
+ size: number;
40
+ url: string;
41
+ contentType?: string;
42
+ }
43
+ export interface TeamsCredentials {
44
+ token: string;
45
+ cookie?: string;
46
+ }
47
+ export interface TeamsConfig {
48
+ current_team: string | null;
49
+ token: string;
50
+ token_expires_at?: string;
51
+ teams: Record<string, {
52
+ team_id: string;
53
+ team_name: string;
54
+ }>;
55
+ }
56
+ export declare const TeamsTeamSchema: z.ZodObject<{
57
+ id: z.ZodString;
58
+ name: z.ZodString;
59
+ description: z.ZodOptional<z.ZodString>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ id: string;
62
+ name: string;
63
+ description?: string | undefined;
64
+ }, {
65
+ id: string;
66
+ name: string;
67
+ description?: string | undefined;
68
+ }>;
69
+ export declare const TeamsChannelSchema: z.ZodObject<{
70
+ id: z.ZodString;
71
+ team_id: z.ZodString;
72
+ name: z.ZodString;
73
+ type: z.ZodString;
74
+ }, "strip", z.ZodTypeAny, {
75
+ id: string;
76
+ name: string;
77
+ type: string;
78
+ team_id: string;
79
+ }, {
80
+ id: string;
81
+ name: string;
82
+ type: string;
83
+ team_id: string;
84
+ }>;
85
+ export declare const TeamsMessageSchema: z.ZodObject<{
86
+ id: z.ZodString;
87
+ channel_id: z.ZodString;
88
+ author: z.ZodObject<{
89
+ id: z.ZodString;
90
+ displayName: z.ZodString;
91
+ }, "strip", z.ZodTypeAny, {
92
+ id: string;
93
+ displayName: string;
94
+ }, {
95
+ id: string;
96
+ displayName: string;
97
+ }>;
98
+ content: z.ZodString;
99
+ timestamp: z.ZodString;
100
+ }, "strip", z.ZodTypeAny, {
101
+ timestamp: string;
102
+ id: string;
103
+ channel_id: string;
104
+ author: {
105
+ id: string;
106
+ displayName: string;
107
+ };
108
+ content: string;
109
+ }, {
110
+ timestamp: string;
111
+ id: string;
112
+ channel_id: string;
113
+ author: {
114
+ id: string;
115
+ displayName: string;
116
+ };
117
+ content: string;
118
+ }>;
119
+ export declare const TeamsUserSchema: z.ZodObject<{
120
+ id: z.ZodString;
121
+ displayName: z.ZodString;
122
+ email: z.ZodOptional<z.ZodString>;
123
+ userPrincipalName: z.ZodOptional<z.ZodString>;
124
+ }, "strip", z.ZodTypeAny, {
125
+ id: string;
126
+ displayName: string;
127
+ email?: string | undefined;
128
+ userPrincipalName?: string | undefined;
129
+ }, {
130
+ id: string;
131
+ displayName: string;
132
+ email?: string | undefined;
133
+ userPrincipalName?: string | undefined;
134
+ }>;
135
+ export declare const TeamsReactionSchema: z.ZodObject<{
136
+ emoji: z.ZodString;
137
+ count: z.ZodNumber;
138
+ }, "strip", z.ZodTypeAny, {
139
+ emoji: string;
140
+ count: number;
141
+ }, {
142
+ emoji: string;
143
+ count: number;
144
+ }>;
145
+ export declare const TeamsFileSchema: z.ZodObject<{
146
+ id: z.ZodString;
147
+ name: z.ZodString;
148
+ size: z.ZodNumber;
149
+ url: z.ZodString;
150
+ contentType: z.ZodOptional<z.ZodString>;
151
+ }, "strip", z.ZodTypeAny, {
152
+ id: string;
153
+ name: string;
154
+ size: number;
155
+ url: string;
156
+ contentType?: string | undefined;
157
+ }, {
158
+ id: string;
159
+ name: string;
160
+ size: number;
161
+ url: string;
162
+ contentType?: string | undefined;
163
+ }>;
164
+ export declare const TeamsCredentialsSchema: z.ZodObject<{
165
+ token: z.ZodString;
166
+ cookie: z.ZodOptional<z.ZodString>;
167
+ }, "strip", z.ZodTypeAny, {
168
+ token: string;
169
+ cookie?: string | undefined;
170
+ }, {
171
+ token: string;
172
+ cookie?: string | undefined;
173
+ }>;
174
+ export declare const TeamsConfigSchema: z.ZodObject<{
175
+ current_team: z.ZodNullable<z.ZodString>;
176
+ token: z.ZodString;
177
+ token_expires_at: z.ZodOptional<z.ZodString>;
178
+ teams: z.ZodRecord<z.ZodString, z.ZodObject<{
179
+ team_id: z.ZodString;
180
+ team_name: z.ZodString;
181
+ }, "strip", z.ZodTypeAny, {
182
+ team_id: string;
183
+ team_name: string;
184
+ }, {
185
+ team_id: string;
186
+ team_name: string;
187
+ }>>;
188
+ }, "strip", z.ZodTypeAny, {
189
+ teams: Record<string, {
190
+ team_id: string;
191
+ team_name: string;
192
+ }>;
193
+ token: string;
194
+ current_team: string | null;
195
+ token_expires_at?: string | undefined;
196
+ }, {
197
+ teams: Record<string, {
198
+ team_id: string;
199
+ team_name: string;
200
+ }>;
201
+ token: string;
202
+ current_team: string | null;
203
+ token_expires_at?: string | undefined;
204
+ }>;
205
+ export declare class TeamsError extends Error {
206
+ code: string;
207
+ constructor(message: string, code: string);
208
+ }
209
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/platforms/teams/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAA;QACV,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,EAAE,MAAM,CACX,MAAM,EACN;QACE,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;KAClB,CACF,CAAA;CACF;AAGD,eAAO,MAAM,eAAe;;;;;;;;;;;;EAI1B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;EAK1B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAA;AAEF,qBAAa,UAAW,SAAQ,KAAK;IACnC,IAAI,EAAE,MAAM,CAAA;gBAEA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Core type definitions for Microsoft Teams platform
3
+ */
4
+ import { z } from 'zod';
5
+ // Zod validation schemas
6
+ export const TeamsTeamSchema = z.object({
7
+ id: z.string(),
8
+ name: z.string(),
9
+ description: z.string().optional(),
10
+ });
11
+ export const TeamsChannelSchema = z.object({
12
+ id: z.string(),
13
+ team_id: z.string(),
14
+ name: z.string(),
15
+ type: z.string(),
16
+ });
17
+ export const TeamsMessageSchema = z.object({
18
+ id: z.string(),
19
+ channel_id: z.string(),
20
+ author: z.object({
21
+ id: z.string(),
22
+ displayName: z.string(),
23
+ }),
24
+ content: z.string(),
25
+ timestamp: z.string(),
26
+ });
27
+ export const TeamsUserSchema = z.object({
28
+ id: z.string(),
29
+ displayName: z.string(),
30
+ email: z.string().optional(),
31
+ userPrincipalName: z.string().optional(),
32
+ });
33
+ export const TeamsReactionSchema = z.object({
34
+ emoji: z.string(),
35
+ count: z.number(),
36
+ });
37
+ export const TeamsFileSchema = z.object({
38
+ id: z.string(),
39
+ name: z.string(),
40
+ size: z.number(),
41
+ url: z.string(),
42
+ contentType: z.string().optional(),
43
+ });
44
+ export const TeamsCredentialsSchema = z.object({
45
+ token: z.string(),
46
+ cookie: z.string().optional(),
47
+ });
48
+ export const TeamsConfigSchema = z.object({
49
+ current_team: z.string().nullable(),
50
+ token: z.string(),
51
+ token_expires_at: z.string().optional(),
52
+ teams: z.record(z.string(), z.object({
53
+ team_id: z.string(),
54
+ team_name: z.string(),
55
+ })),
56
+ });
57
+ export class TeamsError extends Error {
58
+ code;
59
+ constructor(message, code) {
60
+ super(message);
61
+ this.name = 'TeamsError';
62
+ this.code = code;
63
+ }
64
+ }
65
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/platforms/teams/types.ts"],"names":[],"mappings":"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"}