agent-messenger 1.14.0 → 2.0.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 (931) hide show
  1. package/.claude-plugin/README.md +94 -13
  2. package/.claude-plugin/marketplace.json +51 -12
  3. package/.claude-plugin/plugin.json +14 -3
  4. package/CONTRIBUTING.md +49 -3
  5. package/README.md +211 -54
  6. package/bun.lock +350 -2
  7. package/cubic.yaml +69 -0
  8. package/dist/package.json +118 -9
  9. package/dist/src/cli.d.ts.map +1 -1
  10. package/dist/src/cli.js +27 -6
  11. package/dist/src/cli.js.map +1 -1
  12. package/dist/src/platforms/channeltalk/client.d.ts +5 -1
  13. package/dist/src/platforms/channeltalk/client.d.ts.map +1 -1
  14. package/dist/src/platforms/channeltalk/client.js +23 -6
  15. package/dist/src/platforms/channeltalk/client.js.map +1 -1
  16. package/dist/src/platforms/channeltalk/commands/auth.d.ts +1 -1
  17. package/dist/src/platforms/channeltalk/commands/auth.d.ts.map +1 -1
  18. package/dist/src/platforms/channeltalk/commands/auth.js +4 -4
  19. package/dist/src/platforms/channeltalk/commands/auth.js.map +1 -1
  20. package/dist/src/platforms/channeltalk/commands/shared.js +1 -1
  21. package/dist/src/platforms/channeltalk/commands/shared.js.map +1 -1
  22. package/dist/src/platforms/channeltalk/ensure-auth.d.ts +2 -2
  23. package/dist/src/platforms/channeltalk/ensure-auth.d.ts.map +1 -1
  24. package/dist/src/platforms/channeltalk/ensure-auth.js +4 -4
  25. package/dist/src/platforms/channeltalk/ensure-auth.js.map +1 -1
  26. package/dist/src/platforms/channeltalk/index.d.ts +2 -2
  27. package/dist/src/platforms/channeltalk/index.d.ts.map +1 -1
  28. package/dist/src/platforms/channeltalk/index.js +1 -2
  29. package/dist/src/platforms/channeltalk/index.js.map +1 -1
  30. package/dist/src/platforms/channeltalk/token-extractor.d.ts +8 -0
  31. package/dist/src/platforms/channeltalk/token-extractor.d.ts.map +1 -1
  32. package/dist/src/platforms/channeltalk/token-extractor.js +127 -13
  33. package/dist/src/platforms/channeltalk/token-extractor.js.map +1 -1
  34. package/dist/src/platforms/channeltalk/types.d.ts +52 -949
  35. package/dist/src/platforms/channeltalk/types.d.ts.map +1 -1
  36. package/dist/src/platforms/channeltalk/types.js +1 -1
  37. package/dist/src/platforms/channeltalk/types.js.map +1 -1
  38. package/dist/src/platforms/channeltalkbot/client.d.ts +5 -1
  39. package/dist/src/platforms/channeltalkbot/client.d.ts.map +1 -1
  40. package/dist/src/platforms/channeltalkbot/client.js +24 -9
  41. package/dist/src/platforms/channeltalkbot/client.js.map +1 -1
  42. package/dist/src/platforms/channeltalkbot/commands/auth.js +2 -2
  43. package/dist/src/platforms/channeltalkbot/commands/auth.js.map +1 -1
  44. package/dist/src/platforms/channeltalkbot/commands/shared.js +1 -1
  45. package/dist/src/platforms/channeltalkbot/commands/shared.js.map +1 -1
  46. package/dist/src/platforms/channeltalkbot/index.d.ts +2 -1
  47. package/dist/src/platforms/channeltalkbot/index.d.ts.map +1 -1
  48. package/dist/src/platforms/channeltalkbot/index.js.map +1 -1
  49. package/dist/src/platforms/channeltalkbot/types.d.ts +24 -186
  50. package/dist/src/platforms/channeltalkbot/types.d.ts.map +1 -1
  51. package/dist/src/platforms/discord/client.d.ts +7 -1
  52. package/dist/src/platforms/discord/client.d.ts.map +1 -1
  53. package/dist/src/platforms/discord/client.js +27 -6
  54. package/dist/src/platforms/discord/client.js.map +1 -1
  55. package/dist/src/platforms/discord/commands/auth.js +2 -2
  56. package/dist/src/platforms/discord/commands/auth.js.map +1 -1
  57. package/dist/src/platforms/discord/commands/channel.js +3 -3
  58. package/dist/src/platforms/discord/commands/channel.js.map +1 -1
  59. package/dist/src/platforms/discord/commands/dm.js +2 -2
  60. package/dist/src/platforms/discord/commands/dm.js.map +1 -1
  61. package/dist/src/platforms/discord/commands/file.js +3 -3
  62. package/dist/src/platforms/discord/commands/file.js.map +1 -1
  63. package/dist/src/platforms/discord/commands/friend.js +1 -1
  64. package/dist/src/platforms/discord/commands/friend.js.map +1 -1
  65. package/dist/src/platforms/discord/commands/member.js +1 -1
  66. package/dist/src/platforms/discord/commands/member.js.map +1 -1
  67. package/dist/src/platforms/discord/commands/mention.js +1 -1
  68. package/dist/src/platforms/discord/commands/mention.js.map +1 -1
  69. package/dist/src/platforms/discord/commands/message.js +6 -6
  70. package/dist/src/platforms/discord/commands/message.js.map +1 -1
  71. package/dist/src/platforms/discord/commands/note.js +2 -2
  72. package/dist/src/platforms/discord/commands/note.js.map +1 -1
  73. package/dist/src/platforms/discord/commands/profile.js +1 -1
  74. package/dist/src/platforms/discord/commands/profile.js.map +1 -1
  75. package/dist/src/platforms/discord/commands/reaction.js +3 -3
  76. package/dist/src/platforms/discord/commands/reaction.js.map +1 -1
  77. package/dist/src/platforms/discord/commands/server.js +1 -1
  78. package/dist/src/platforms/discord/commands/server.js.map +1 -1
  79. package/dist/src/platforms/discord/commands/snapshot.js +1 -1
  80. package/dist/src/platforms/discord/commands/snapshot.js.map +1 -1
  81. package/dist/src/platforms/discord/commands/thread.js +2 -2
  82. package/dist/src/platforms/discord/commands/thread.js.map +1 -1
  83. package/dist/src/platforms/discord/commands/user.js +3 -3
  84. package/dist/src/platforms/discord/commands/user.js.map +1 -1
  85. package/dist/src/platforms/discord/ensure-auth.js +1 -1
  86. package/dist/src/platforms/discord/ensure-auth.js.map +1 -1
  87. package/dist/src/platforms/discord/index.d.ts +6 -0
  88. package/dist/src/platforms/discord/index.d.ts.map +1 -0
  89. package/dist/src/platforms/discord/index.js +5 -0
  90. package/dist/src/platforms/discord/index.js.map +1 -0
  91. package/dist/src/platforms/discord/listener.d.ts +41 -0
  92. package/dist/src/platforms/discord/listener.d.ts.map +1 -0
  93. package/dist/src/platforms/discord/listener.js +262 -0
  94. package/dist/src/platforms/discord/listener.js.map +1 -0
  95. package/dist/src/platforms/discord/types.d.ts +150 -352
  96. package/dist/src/platforms/discord/types.d.ts.map +1 -1
  97. package/dist/src/platforms/discord/types.js +28 -0
  98. package/dist/src/platforms/discord/types.js.map +1 -1
  99. package/dist/src/platforms/discordbot/client.d.ts +4 -1
  100. package/dist/src/platforms/discordbot/client.d.ts.map +1 -1
  101. package/dist/src/platforms/discordbot/client.js +23 -7
  102. package/dist/src/platforms/discordbot/client.js.map +1 -1
  103. package/dist/src/platforms/discordbot/commands/auth.js +2 -2
  104. package/dist/src/platforms/discordbot/commands/auth.js.map +1 -1
  105. package/dist/src/platforms/discordbot/commands/shared.js +1 -1
  106. package/dist/src/platforms/discordbot/commands/shared.js.map +1 -1
  107. package/dist/src/platforms/discordbot/types.d.ts +15 -203
  108. package/dist/src/platforms/discordbot/types.d.ts.map +1 -1
  109. package/dist/src/platforms/instagram/cli.d.ts +5 -0
  110. package/dist/src/platforms/instagram/cli.d.ts.map +1 -0
  111. package/dist/src/platforms/instagram/cli.js +30 -0
  112. package/dist/src/platforms/instagram/cli.js.map +1 -0
  113. package/dist/src/platforms/instagram/client.d.ts +65 -0
  114. package/dist/src/platforms/instagram/client.d.ts.map +1 -0
  115. package/dist/src/platforms/instagram/client.js +524 -0
  116. package/dist/src/platforms/instagram/client.js.map +1 -0
  117. package/dist/src/platforms/instagram/commands/auth.d.ts +3 -0
  118. package/dist/src/platforms/instagram/commands/auth.d.ts.map +1 -0
  119. package/dist/src/platforms/instagram/commands/auth.js +330 -0
  120. package/dist/src/platforms/instagram/commands/auth.js.map +1 -0
  121. package/dist/src/platforms/instagram/commands/chat.d.ts +3 -0
  122. package/dist/src/platforms/instagram/commands/chat.d.ts.map +1 -0
  123. package/dist/src/platforms/instagram/commands/chat.js +42 -0
  124. package/dist/src/platforms/instagram/commands/chat.js.map +1 -0
  125. package/dist/src/platforms/instagram/commands/index.d.ts +4 -0
  126. package/dist/src/platforms/instagram/commands/index.d.ts.map +1 -0
  127. package/dist/src/platforms/instagram/commands/index.js +4 -0
  128. package/dist/src/platforms/instagram/commands/index.js.map +1 -0
  129. package/dist/src/platforms/instagram/commands/message.d.ts +3 -0
  130. package/dist/src/platforms/instagram/commands/message.d.ts.map +1 -0
  131. package/dist/src/platforms/instagram/commands/message.js +102 -0
  132. package/dist/src/platforms/instagram/commands/message.js.map +1 -0
  133. package/dist/src/platforms/instagram/commands/shared.d.ts +8 -0
  134. package/dist/src/platforms/instagram/commands/shared.d.ts.map +1 -0
  135. package/dist/src/platforms/instagram/commands/shared.js +31 -0
  136. package/dist/src/platforms/instagram/commands/shared.js.map +1 -0
  137. package/dist/src/platforms/instagram/credential-manager.d.ts +20 -0
  138. package/dist/src/platforms/instagram/credential-manager.d.ts.map +1 -0
  139. package/dist/src/platforms/instagram/credential-manager.js +104 -0
  140. package/dist/src/platforms/instagram/credential-manager.js.map +1 -0
  141. package/dist/src/platforms/instagram/ensure-auth.d.ts +2 -0
  142. package/dist/src/platforms/instagram/ensure-auth.d.ts.map +1 -0
  143. package/dist/src/platforms/instagram/ensure-auth.js +21 -0
  144. package/dist/src/platforms/instagram/ensure-auth.js.map +1 -0
  145. package/dist/src/platforms/instagram/index.d.ts +5 -0
  146. package/dist/src/platforms/instagram/index.d.ts.map +1 -0
  147. package/dist/src/platforms/instagram/index.js +5 -0
  148. package/dist/src/platforms/instagram/index.js.map +1 -0
  149. package/dist/src/platforms/instagram/listener.d.ts +32 -0
  150. package/dist/src/platforms/instagram/listener.d.ts.map +1 -0
  151. package/dist/src/platforms/instagram/listener.js +87 -0
  152. package/dist/src/platforms/instagram/listener.js.map +1 -0
  153. package/dist/src/platforms/instagram/types.d.ts +61 -0
  154. package/dist/src/platforms/instagram/types.d.ts.map +1 -0
  155. package/dist/src/platforms/instagram/types.js +89 -0
  156. package/dist/src/platforms/instagram/types.js.map +1 -0
  157. package/dist/src/platforms/kakaotalk/auth/kakao-login.d.ts +27 -0
  158. package/dist/src/platforms/kakaotalk/auth/kakao-login.d.ts.map +1 -0
  159. package/dist/src/platforms/kakaotalk/auth/kakao-login.js +213 -0
  160. package/dist/src/platforms/kakaotalk/auth/kakao-login.js.map +1 -0
  161. package/dist/src/platforms/kakaotalk/cli.d.ts +5 -0
  162. package/dist/src/platforms/kakaotalk/cli.d.ts.map +1 -0
  163. package/dist/src/platforms/kakaotalk/cli.js +30 -0
  164. package/dist/src/platforms/kakaotalk/cli.js.map +1 -0
  165. package/dist/src/platforms/kakaotalk/client.d.ts +40 -0
  166. package/dist/src/platforms/kakaotalk/client.d.ts.map +1 -0
  167. package/dist/src/platforms/kakaotalk/client.js +290 -0
  168. package/dist/src/platforms/kakaotalk/client.js.map +1 -0
  169. package/dist/src/platforms/kakaotalk/commands/auth.d.ts +3 -0
  170. package/dist/src/platforms/kakaotalk/commands/auth.d.ts.map +1 -0
  171. package/dist/src/platforms/kakaotalk/commands/auth.js +515 -0
  172. package/dist/src/platforms/kakaotalk/commands/auth.js.map +1 -0
  173. package/dist/src/platforms/kakaotalk/commands/chat.d.ts +3 -0
  174. package/dist/src/platforms/kakaotalk/commands/chat.d.ts.map +1 -0
  175. package/dist/src/platforms/kakaotalk/commands/chat.js +23 -0
  176. package/dist/src/platforms/kakaotalk/commands/chat.js.map +1 -0
  177. package/dist/src/platforms/kakaotalk/commands/index.d.ts +4 -0
  178. package/dist/src/platforms/kakaotalk/commands/index.d.ts.map +1 -0
  179. package/dist/src/platforms/kakaotalk/commands/index.js +4 -0
  180. package/dist/src/platforms/kakaotalk/commands/index.js.map +1 -0
  181. package/dist/src/platforms/kakaotalk/commands/message.d.ts +3 -0
  182. package/dist/src/platforms/kakaotalk/commands/message.d.ts.map +1 -0
  183. package/dist/src/platforms/kakaotalk/commands/message.js +41 -0
  184. package/dist/src/platforms/kakaotalk/commands/message.js.map +1 -0
  185. package/dist/src/platforms/kakaotalk/commands/shared.d.ts +7 -0
  186. package/dist/src/platforms/kakaotalk/commands/shared.d.ts.map +1 -0
  187. package/dist/src/platforms/kakaotalk/commands/shared.js +24 -0
  188. package/dist/src/platforms/kakaotalk/commands/shared.js.map +1 -0
  189. package/dist/src/platforms/kakaotalk/credential-manager.d.ts +27 -0
  190. package/dist/src/platforms/kakaotalk/credential-manager.d.ts.map +1 -0
  191. package/dist/src/platforms/kakaotalk/credential-manager.js +82 -0
  192. package/dist/src/platforms/kakaotalk/credential-manager.js.map +1 -0
  193. package/dist/src/platforms/kakaotalk/ensure-auth.d.ts +3 -0
  194. package/dist/src/platforms/kakaotalk/ensure-auth.d.ts.map +1 -0
  195. package/dist/src/platforms/kakaotalk/ensure-auth.js +11 -0
  196. package/dist/src/platforms/kakaotalk/ensure-auth.js.map +1 -0
  197. package/dist/src/platforms/kakaotalk/index.d.ts +7 -0
  198. package/dist/src/platforms/kakaotalk/index.d.ts.map +1 -0
  199. package/dist/src/platforms/kakaotalk/index.js +5 -0
  200. package/dist/src/platforms/kakaotalk/index.js.map +1 -0
  201. package/dist/src/platforms/kakaotalk/listener.d.ts +24 -0
  202. package/dist/src/platforms/kakaotalk/listener.d.ts.map +1 -0
  203. package/dist/src/platforms/kakaotalk/listener.js +171 -0
  204. package/dist/src/platforms/kakaotalk/listener.js.map +1 -0
  205. package/dist/src/platforms/kakaotalk/protocol/config.d.ts +14 -0
  206. package/dist/src/platforms/kakaotalk/protocol/config.d.ts.map +1 -0
  207. package/dist/src/platforms/kakaotalk/protocol/config.js +23 -0
  208. package/dist/src/platforms/kakaotalk/protocol/config.js.map +1 -0
  209. package/dist/src/platforms/kakaotalk/protocol/connection.d.ts +25 -0
  210. package/dist/src/platforms/kakaotalk/protocol/connection.d.ts.map +1 -0
  211. package/dist/src/platforms/kakaotalk/protocol/connection.js +144 -0
  212. package/dist/src/platforms/kakaotalk/protocol/connection.js.map +1 -0
  213. package/dist/src/platforms/kakaotalk/protocol/crypto.d.ts +8 -0
  214. package/dist/src/platforms/kakaotalk/protocol/crypto.d.ts.map +1 -0
  215. package/dist/src/platforms/kakaotalk/protocol/crypto.js +51 -0
  216. package/dist/src/platforms/kakaotalk/protocol/crypto.js.map +1 -0
  217. package/dist/src/platforms/kakaotalk/protocol/packet.d.ts +7 -0
  218. package/dist/src/platforms/kakaotalk/protocol/packet.d.ts.map +1 -0
  219. package/dist/src/platforms/kakaotalk/protocol/packet.js +38 -0
  220. package/dist/src/platforms/kakaotalk/protocol/packet.js.map +1 -0
  221. package/dist/src/platforms/kakaotalk/protocol/session.d.ts +18 -0
  222. package/dist/src/platforms/kakaotalk/protocol/session.d.ts.map +1 -0
  223. package/dist/src/platforms/kakaotalk/protocol/session.js +127 -0
  224. package/dist/src/platforms/kakaotalk/protocol/session.js.map +1 -0
  225. package/dist/src/platforms/kakaotalk/protocol/types.d.ts +41 -0
  226. package/dist/src/platforms/kakaotalk/protocol/types.d.ts.map +1 -0
  227. package/dist/src/platforms/kakaotalk/protocol/types.js +8 -0
  228. package/dist/src/platforms/kakaotalk/protocol/types.js.map +1 -0
  229. package/dist/src/platforms/kakaotalk/token-extractor.d.ts +17 -0
  230. package/dist/src/platforms/kakaotalk/token-extractor.d.ts.map +1 -0
  231. package/dist/src/platforms/kakaotalk/token-extractor.js +273 -0
  232. package/dist/src/platforms/kakaotalk/token-extractor.js.map +1 -0
  233. package/dist/src/platforms/kakaotalk/types.d.ts +198 -0
  234. package/dist/src/platforms/kakaotalk/types.d.ts.map +1 -0
  235. package/dist/src/platforms/kakaotalk/types.js +74 -0
  236. package/dist/src/platforms/kakaotalk/types.js.map +1 -0
  237. package/dist/src/platforms/line/cli.d.ts +5 -0
  238. package/dist/src/platforms/line/cli.d.ts.map +1 -0
  239. package/dist/src/platforms/line/cli.js +32 -0
  240. package/dist/src/platforms/line/cli.js.map +1 -0
  241. package/dist/src/platforms/line/client.d.ts +31 -0
  242. package/dist/src/platforms/line/client.d.ts.map +1 -0
  243. package/dist/src/platforms/line/client.js +296 -0
  244. package/dist/src/platforms/line/client.js.map +1 -0
  245. package/dist/src/platforms/line/commands/auth.d.ts +3 -0
  246. package/dist/src/platforms/line/commands/auth.d.ts.map +1 -0
  247. package/dist/src/platforms/line/commands/auth.js +199 -0
  248. package/dist/src/platforms/line/commands/auth.js.map +1 -0
  249. package/dist/src/platforms/line/commands/chat.d.ts +3 -0
  250. package/dist/src/platforms/line/commands/chat.d.ts.map +1 -0
  251. package/dist/src/platforms/line/commands/chat.js +28 -0
  252. package/dist/src/platforms/line/commands/chat.js.map +1 -0
  253. package/dist/src/platforms/line/commands/friend.d.ts +3 -0
  254. package/dist/src/platforms/line/commands/friend.d.ts.map +1 -0
  255. package/dist/src/platforms/line/commands/friend.js +25 -0
  256. package/dist/src/platforms/line/commands/friend.js.map +1 -0
  257. package/dist/src/platforms/line/commands/index.d.ts +6 -0
  258. package/dist/src/platforms/line/commands/index.d.ts.map +1 -0
  259. package/dist/src/platforms/line/commands/index.js +6 -0
  260. package/dist/src/platforms/line/commands/index.js.map +1 -0
  261. package/dist/src/platforms/line/commands/message.d.ts +3 -0
  262. package/dist/src/platforms/line/commands/message.d.ts.map +1 -0
  263. package/dist/src/platforms/line/commands/message.js +48 -0
  264. package/dist/src/platforms/line/commands/message.js.map +1 -0
  265. package/dist/src/platforms/line/commands/profile.d.ts +3 -0
  266. package/dist/src/platforms/line/commands/profile.d.ts.map +1 -0
  267. package/dist/src/platforms/line/commands/profile.js +23 -0
  268. package/dist/src/platforms/line/commands/profile.js.map +1 -0
  269. package/dist/src/platforms/line/credential-manager.d.ts +22 -0
  270. package/dist/src/platforms/line/credential-manager.d.ts.map +1 -0
  271. package/dist/src/platforms/line/credential-manager.js +71 -0
  272. package/dist/src/platforms/line/credential-manager.js.map +1 -0
  273. package/dist/src/platforms/line/ensure-auth.d.ts +3 -0
  274. package/dist/src/platforms/line/ensure-auth.d.ts.map +1 -0
  275. package/dist/src/platforms/line/ensure-auth.js +10 -0
  276. package/dist/src/platforms/line/ensure-auth.js.map +1 -0
  277. package/dist/src/platforms/line/index.d.ts +7 -0
  278. package/dist/src/platforms/line/index.d.ts.map +1 -0
  279. package/dist/src/platforms/line/index.js +6 -0
  280. package/dist/src/platforms/line/index.js.map +1 -0
  281. package/dist/src/platforms/line/listener.d.ts +22 -0
  282. package/dist/src/platforms/line/listener.d.ts.map +1 -0
  283. package/dist/src/platforms/line/listener.js +121 -0
  284. package/dist/src/platforms/line/listener.js.map +1 -0
  285. package/dist/src/platforms/line/types.d.ts +165 -0
  286. package/dist/src/platforms/line/types.d.ts.map +1 -0
  287. package/dist/src/platforms/line/types.js +79 -0
  288. package/dist/src/platforms/line/types.js.map +1 -0
  289. package/dist/src/platforms/slack/cli.d.ts.map +1 -1
  290. package/dist/src/platforms/slack/cli.js +6 -1
  291. package/dist/src/platforms/slack/cli.js.map +1 -1
  292. package/dist/src/platforms/slack/client.d.ts +85 -3
  293. package/dist/src/platforms/slack/client.d.ts.map +1 -1
  294. package/dist/src/platforms/slack/client.js +577 -40
  295. package/dist/src/platforms/slack/client.js.map +1 -1
  296. package/dist/src/platforms/slack/commands/activity.js +1 -1
  297. package/dist/src/platforms/slack/commands/activity.js.map +1 -1
  298. package/dist/src/platforms/slack/commands/auth.js +2 -2
  299. package/dist/src/platforms/slack/commands/auth.js.map +1 -1
  300. package/dist/src/platforms/slack/commands/bookmark.d.ts +3 -0
  301. package/dist/src/platforms/slack/commands/bookmark.d.ts.map +1 -0
  302. package/dist/src/platforms/slack/commands/bookmark.js +116 -0
  303. package/dist/src/platforms/slack/commands/bookmark.js.map +1 -0
  304. package/dist/src/platforms/slack/commands/channel.d.ts.map +1 -1
  305. package/dist/src/platforms/slack/commands/channel.js +198 -5
  306. package/dist/src/platforms/slack/commands/channel.js.map +1 -1
  307. package/dist/src/platforms/slack/commands/drafts.js +1 -1
  308. package/dist/src/platforms/slack/commands/drafts.js.map +1 -1
  309. package/dist/src/platforms/slack/commands/emoji.d.ts +3 -0
  310. package/dist/src/platforms/slack/commands/emoji.d.ts.map +1 -0
  311. package/dist/src/platforms/slack/commands/emoji.js +27 -0
  312. package/dist/src/platforms/slack/commands/emoji.js.map +1 -0
  313. package/dist/src/platforms/slack/commands/file.d.ts.map +1 -1
  314. package/dist/src/platforms/slack/commands/file.js +26 -5
  315. package/dist/src/platforms/slack/commands/file.js.map +1 -1
  316. package/dist/src/platforms/slack/commands/index.d.ts +5 -0
  317. package/dist/src/platforms/slack/commands/index.d.ts.map +1 -1
  318. package/dist/src/platforms/slack/commands/index.js +5 -0
  319. package/dist/src/platforms/slack/commands/index.js.map +1 -1
  320. package/dist/src/platforms/slack/commands/message.d.ts.map +1 -1
  321. package/dist/src/platforms/slack/commands/message.js +134 -8
  322. package/dist/src/platforms/slack/commands/message.js.map +1 -1
  323. package/dist/src/platforms/slack/commands/pin.d.ts +3 -0
  324. package/dist/src/platforms/slack/commands/pin.d.ts.map +1 -0
  325. package/dist/src/platforms/slack/commands/pin.js +76 -0
  326. package/dist/src/platforms/slack/commands/pin.js.map +1 -0
  327. package/dist/src/platforms/slack/commands/reaction.js +3 -3
  328. package/dist/src/platforms/slack/commands/reaction.js.map +1 -1
  329. package/dist/src/platforms/slack/commands/reminder.d.ts +3 -0
  330. package/dist/src/platforms/slack/commands/reminder.d.ts.map +1 -0
  331. package/dist/src/platforms/slack/commands/reminder.js +98 -0
  332. package/dist/src/platforms/slack/commands/reminder.js.map +1 -0
  333. package/dist/src/platforms/slack/commands/saved.js +1 -1
  334. package/dist/src/platforms/slack/commands/saved.js.map +1 -1
  335. package/dist/src/platforms/slack/commands/sections.js +1 -1
  336. package/dist/src/platforms/slack/commands/sections.js.map +1 -1
  337. package/dist/src/platforms/slack/commands/snapshot.d.ts.map +1 -1
  338. package/dist/src/platforms/slack/commands/snapshot.js +12 -1
  339. package/dist/src/platforms/slack/commands/snapshot.js.map +1 -1
  340. package/dist/src/platforms/slack/commands/unread.js +3 -3
  341. package/dist/src/platforms/slack/commands/unread.js.map +1 -1
  342. package/dist/src/platforms/slack/commands/user.d.ts.map +1 -1
  343. package/dist/src/platforms/slack/commands/user.js +78 -1
  344. package/dist/src/platforms/slack/commands/user.js.map +1 -1
  345. package/dist/src/platforms/slack/commands/usergroup.d.ts +3 -0
  346. package/dist/src/platforms/slack/commands/usergroup.d.ts.map +1 -0
  347. package/dist/src/platforms/slack/commands/usergroup.js +190 -0
  348. package/dist/src/platforms/slack/commands/usergroup.js.map +1 -0
  349. package/dist/src/platforms/slack/credential-manager.d.ts +2 -1
  350. package/dist/src/platforms/slack/credential-manager.d.ts.map +1 -1
  351. package/dist/src/platforms/slack/credential-manager.js +2 -1
  352. package/dist/src/platforms/slack/credential-manager.js.map +1 -1
  353. package/dist/src/platforms/slack/ensure-auth.js +4 -4
  354. package/dist/src/platforms/slack/ensure-auth.js.map +1 -1
  355. package/dist/src/platforms/slack/index.d.ts +4 -1
  356. package/dist/src/platforms/slack/index.d.ts.map +1 -1
  357. package/dist/src/platforms/slack/index.js +3 -1
  358. package/dist/src/platforms/slack/index.js.map +1 -1
  359. package/dist/src/platforms/slack/listener.d.ts +30 -0
  360. package/dist/src/platforms/slack/listener.d.ts.map +1 -0
  361. package/dist/src/platforms/slack/listener.js +157 -0
  362. package/dist/src/platforms/slack/listener.js.map +1 -0
  363. package/dist/src/platforms/slack/types.d.ts +198 -275
  364. package/dist/src/platforms/slack/types.d.ts.map +1 -1
  365. package/dist/src/platforms/slack/types.js +22 -0
  366. package/dist/src/platforms/slack/types.js.map +1 -1
  367. package/dist/src/platforms/slackbot/client.d.ts +4 -1
  368. package/dist/src/platforms/slackbot/client.d.ts.map +1 -1
  369. package/dist/src/platforms/slackbot/client.js +40 -21
  370. package/dist/src/platforms/slackbot/client.js.map +1 -1
  371. package/dist/src/platforms/slackbot/commands/auth.js +2 -2
  372. package/dist/src/platforms/slackbot/commands/auth.js.map +1 -1
  373. package/dist/src/platforms/slackbot/commands/shared.js +1 -1
  374. package/dist/src/platforms/slackbot/commands/shared.js.map +1 -1
  375. package/dist/src/platforms/slackbot/types.d.ts +20 -282
  376. package/dist/src/platforms/slackbot/types.d.ts.map +1 -1
  377. package/dist/src/platforms/teams/client.d.ts +5 -1
  378. package/dist/src/platforms/teams/client.d.ts.map +1 -1
  379. package/dist/src/platforms/teams/client.js +27 -9
  380. package/dist/src/platforms/teams/client.js.map +1 -1
  381. package/dist/src/platforms/teams/commands/auth.js +3 -3
  382. package/dist/src/platforms/teams/commands/auth.js.map +1 -1
  383. package/dist/src/platforms/teams/commands/channel.js +3 -3
  384. package/dist/src/platforms/teams/commands/channel.js.map +1 -1
  385. package/dist/src/platforms/teams/commands/file.js +3 -3
  386. package/dist/src/platforms/teams/commands/file.js.map +1 -1
  387. package/dist/src/platforms/teams/commands/message.js +4 -4
  388. package/dist/src/platforms/teams/commands/message.js.map +1 -1
  389. package/dist/src/platforms/teams/commands/reaction.js +2 -2
  390. package/dist/src/platforms/teams/commands/reaction.js.map +1 -1
  391. package/dist/src/platforms/teams/commands/snapshot.js +1 -1
  392. package/dist/src/platforms/teams/commands/snapshot.js.map +1 -1
  393. package/dist/src/platforms/teams/commands/team.js +1 -1
  394. package/dist/src/platforms/teams/commands/team.js.map +1 -1
  395. package/dist/src/platforms/teams/commands/user.js +3 -3
  396. package/dist/src/platforms/teams/commands/user.js.map +1 -1
  397. package/dist/src/platforms/teams/ensure-auth.js +1 -1
  398. package/dist/src/platforms/teams/ensure-auth.js.map +1 -1
  399. package/dist/src/platforms/teams/index.d.ts +6 -0
  400. package/dist/src/platforms/teams/index.d.ts.map +1 -0
  401. package/dist/src/platforms/teams/index.js +5 -0
  402. package/dist/src/platforms/teams/index.js.map +1 -0
  403. package/dist/src/platforms/teams/types.d.ts +26 -193
  404. package/dist/src/platforms/teams/types.d.ts.map +1 -1
  405. package/dist/src/platforms/telegram/app-config.d.ts +7 -0
  406. package/dist/src/platforms/telegram/app-config.d.ts.map +1 -0
  407. package/dist/src/platforms/telegram/app-config.js +39 -0
  408. package/dist/src/platforms/telegram/app-config.js.map +1 -0
  409. package/dist/src/platforms/telegram/chat-utils.d.ts +5 -0
  410. package/dist/src/platforms/telegram/chat-utils.d.ts.map +1 -0
  411. package/dist/src/platforms/telegram/chat-utils.js +33 -0
  412. package/dist/src/platforms/telegram/chat-utils.js.map +1 -0
  413. package/dist/src/platforms/telegram/cli.d.ts +5 -0
  414. package/dist/src/platforms/telegram/cli.d.ts.map +1 -0
  415. package/dist/src/platforms/telegram/cli.js +15 -0
  416. package/dist/src/platforms/telegram/cli.js.map +1 -0
  417. package/dist/src/platforms/telegram/client.d.ts +47 -0
  418. package/dist/src/platforms/telegram/client.d.ts.map +1 -0
  419. package/dist/src/platforms/telegram/client.js +481 -0
  420. package/dist/src/platforms/telegram/client.js.map +1 -0
  421. package/dist/src/platforms/telegram/commands/auth.d.ts +44 -0
  422. package/dist/src/platforms/telegram/commands/auth.d.ts.map +1 -0
  423. package/dist/src/platforms/telegram/commands/auth.js +522 -0
  424. package/dist/src/platforms/telegram/commands/auth.js.map +1 -0
  425. package/dist/src/platforms/telegram/commands/chat.d.ts +3 -0
  426. package/dist/src/platforms/telegram/commands/chat.d.ts.map +1 -0
  427. package/dist/src/platforms/telegram/commands/chat.js +55 -0
  428. package/dist/src/platforms/telegram/commands/chat.js.map +1 -0
  429. package/dist/src/platforms/telegram/commands/index.d.ts +4 -0
  430. package/dist/src/platforms/telegram/commands/index.d.ts.map +1 -0
  431. package/dist/src/platforms/telegram/commands/index.js +4 -0
  432. package/dist/src/platforms/telegram/commands/index.js.map +1 -0
  433. package/dist/src/platforms/telegram/commands/message.d.ts +3 -0
  434. package/dist/src/platforms/telegram/commands/message.d.ts.map +1 -0
  435. package/dist/src/platforms/telegram/commands/message.js +40 -0
  436. package/dist/src/platforms/telegram/commands/message.js.map +1 -0
  437. package/dist/src/platforms/telegram/commands/shared.d.ts +10 -0
  438. package/dist/src/platforms/telegram/commands/shared.d.ts.map +1 -0
  439. package/dist/src/platforms/telegram/commands/shared.js +32 -0
  440. package/dist/src/platforms/telegram/commands/shared.js.map +1 -0
  441. package/dist/src/platforms/telegram/credential-manager.d.ts +25 -0
  442. package/dist/src/platforms/telegram/credential-manager.d.ts.map +1 -0
  443. package/dist/src/platforms/telegram/credential-manager.js +159 -0
  444. package/dist/src/platforms/telegram/credential-manager.js.map +1 -0
  445. package/dist/src/platforms/telegram/my-telegram-org.d.ts +14 -0
  446. package/dist/src/platforms/telegram/my-telegram-org.d.ts.map +1 -0
  447. package/dist/src/platforms/telegram/my-telegram-org.js +164 -0
  448. package/dist/src/platforms/telegram/my-telegram-org.js.map +1 -0
  449. package/dist/src/platforms/telegram/tdlib.d.ts +11 -0
  450. package/dist/src/platforms/telegram/tdlib.d.ts.map +1 -0
  451. package/dist/src/platforms/telegram/tdlib.js +113 -0
  452. package/dist/src/platforms/telegram/tdlib.js.map +1 -0
  453. package/dist/src/platforms/telegram/types.d.ts +192 -0
  454. package/dist/src/platforms/telegram/types.d.ts.map +1 -0
  455. package/dist/src/platforms/telegram/types.js +183 -0
  456. package/dist/src/platforms/telegram/types.js.map +1 -0
  457. package/dist/src/platforms/whatsapp/cli.d.ts +6 -0
  458. package/dist/src/platforms/whatsapp/cli.d.ts.map +1 -0
  459. package/dist/src/platforms/whatsapp/cli.js +31 -0
  460. package/dist/src/platforms/whatsapp/cli.js.map +1 -0
  461. package/dist/src/platforms/whatsapp/client.d.ts +39 -0
  462. package/dist/src/platforms/whatsapp/client.d.ts.map +1 -0
  463. package/dist/src/platforms/whatsapp/client.js +436 -0
  464. package/dist/src/platforms/whatsapp/client.js.map +1 -0
  465. package/dist/src/platforms/whatsapp/commands/auth.d.ts +3 -0
  466. package/dist/src/platforms/whatsapp/commands/auth.d.ts.map +1 -0
  467. package/dist/src/platforms/whatsapp/commands/auth.js +170 -0
  468. package/dist/src/platforms/whatsapp/commands/auth.js.map +1 -0
  469. package/dist/src/platforms/whatsapp/commands/chat.d.ts +3 -0
  470. package/dist/src/platforms/whatsapp/commands/chat.d.ts.map +1 -0
  471. package/dist/src/platforms/whatsapp/commands/chat.js +42 -0
  472. package/dist/src/platforms/whatsapp/commands/chat.js.map +1 -0
  473. package/dist/src/platforms/whatsapp/commands/index.d.ts +4 -0
  474. package/dist/src/platforms/whatsapp/commands/index.d.ts.map +1 -0
  475. package/dist/src/platforms/whatsapp/commands/index.js +4 -0
  476. package/dist/src/platforms/whatsapp/commands/index.js.map +1 -0
  477. package/dist/src/platforms/whatsapp/commands/message.d.ts +3 -0
  478. package/dist/src/platforms/whatsapp/commands/message.d.ts.map +1 -0
  479. package/dist/src/platforms/whatsapp/commands/message.js +61 -0
  480. package/dist/src/platforms/whatsapp/commands/message.js.map +1 -0
  481. package/dist/src/platforms/whatsapp/commands/shared.d.ts +8 -0
  482. package/dist/src/platforms/whatsapp/commands/shared.d.ts.map +1 -0
  483. package/dist/src/platforms/whatsapp/commands/shared.js +37 -0
  484. package/dist/src/platforms/whatsapp/commands/shared.js.map +1 -0
  485. package/dist/src/platforms/whatsapp/credential-manager.d.ts +20 -0
  486. package/dist/src/platforms/whatsapp/credential-manager.d.ts.map +1 -0
  487. package/dist/src/platforms/whatsapp/credential-manager.js +104 -0
  488. package/dist/src/platforms/whatsapp/credential-manager.js.map +1 -0
  489. package/dist/src/platforms/whatsapp/ensure-auth.d.ts +2 -0
  490. package/dist/src/platforms/whatsapp/ensure-auth.d.ts.map +1 -0
  491. package/dist/src/platforms/whatsapp/ensure-auth.js +23 -0
  492. package/dist/src/platforms/whatsapp/ensure-auth.js.map +1 -0
  493. package/dist/src/platforms/whatsapp/index.d.ts +4 -0
  494. package/dist/src/platforms/whatsapp/index.d.ts.map +1 -0
  495. package/dist/src/platforms/whatsapp/index.js +4 -0
  496. package/dist/src/platforms/whatsapp/index.js.map +1 -0
  497. package/dist/src/platforms/whatsapp/suppress-ws-warnings.d.ts +11 -0
  498. package/dist/src/platforms/whatsapp/suppress-ws-warnings.d.ts.map +1 -0
  499. package/dist/src/platforms/whatsapp/suppress-ws-warnings.js +24 -0
  500. package/dist/src/platforms/whatsapp/suppress-ws-warnings.js.map +1 -0
  501. package/dist/src/platforms/whatsapp/types.d.ts +42 -0
  502. package/dist/src/platforms/whatsapp/types.d.ts.map +1 -0
  503. package/dist/src/platforms/whatsapp/types.js +75 -0
  504. package/dist/src/platforms/whatsapp/types.js.map +1 -0
  505. package/dist/src/platforms/whatsappbot/cli.d.ts +5 -0
  506. package/dist/src/platforms/whatsappbot/cli.d.ts.map +1 -0
  507. package/dist/src/platforms/whatsappbot/cli.js +17 -0
  508. package/dist/src/platforms/whatsappbot/cli.js.map +1 -0
  509. package/dist/src/platforms/whatsappbot/client.d.ts +31 -0
  510. package/dist/src/platforms/whatsappbot/client.d.ts.map +1 -0
  511. package/dist/src/platforms/whatsappbot/client.js +202 -0
  512. package/dist/src/platforms/whatsappbot/client.js.map +1 -0
  513. package/dist/src/platforms/whatsappbot/commands/auth.d.ts +28 -0
  514. package/dist/src/platforms/whatsappbot/commands/auth.d.ts.map +1 -0
  515. package/dist/src/platforms/whatsappbot/commands/auth.js +163 -0
  516. package/dist/src/platforms/whatsappbot/commands/auth.js.map +1 -0
  517. package/dist/src/platforms/whatsappbot/commands/index.d.ts +4 -0
  518. package/dist/src/platforms/whatsappbot/commands/index.d.ts.map +1 -0
  519. package/dist/src/platforms/whatsappbot/commands/index.js +4 -0
  520. package/dist/src/platforms/whatsappbot/commands/index.js.map +1 -0
  521. package/dist/src/platforms/whatsappbot/commands/message.d.ts +27 -0
  522. package/dist/src/platforms/whatsappbot/commands/message.d.ts.map +1 -0
  523. package/dist/src/platforms/whatsappbot/commands/message.js +122 -0
  524. package/dist/src/platforms/whatsappbot/commands/message.js.map +1 -0
  525. package/dist/src/platforms/whatsappbot/commands/shared.d.ts +9 -0
  526. package/dist/src/platforms/whatsappbot/commands/shared.d.ts.map +1 -0
  527. package/dist/src/platforms/whatsappbot/commands/shared.js +13 -0
  528. package/dist/src/platforms/whatsappbot/commands/shared.js.map +1 -0
  529. package/dist/src/platforms/whatsappbot/commands/template.d.ts +16 -0
  530. package/dist/src/platforms/whatsappbot/commands/template.d.ts.map +1 -0
  531. package/dist/src/platforms/whatsappbot/commands/template.js +51 -0
  532. package/dist/src/platforms/whatsappbot/commands/template.js.map +1 -0
  533. package/dist/src/platforms/whatsappbot/credential-manager.d.ts +17 -0
  534. package/dist/src/platforms/whatsappbot/credential-manager.d.ts.map +1 -0
  535. package/dist/src/platforms/whatsappbot/credential-manager.js +121 -0
  536. package/dist/src/platforms/whatsappbot/credential-manager.js.map +1 -0
  537. package/dist/src/platforms/whatsappbot/index.d.ts +5 -0
  538. package/dist/src/platforms/whatsappbot/index.d.ts.map +1 -0
  539. package/dist/src/platforms/whatsappbot/index.js +4 -0
  540. package/dist/src/platforms/whatsappbot/index.js.map +1 -0
  541. package/dist/src/platforms/whatsappbot/types.d.ts +66 -0
  542. package/dist/src/platforms/whatsappbot/types.d.ts.map +1 -0
  543. package/dist/src/platforms/whatsappbot/types.js +28 -0
  544. package/dist/src/platforms/whatsappbot/types.js.map +1 -0
  545. package/dist/src/tui/adapters/channeltalk-adapter.d.ts +19 -0
  546. package/dist/src/tui/adapters/channeltalk-adapter.d.ts.map +1 -0
  547. package/dist/src/tui/adapters/channeltalk-adapter.js +88 -0
  548. package/dist/src/tui/adapters/channeltalk-adapter.js.map +1 -0
  549. package/dist/src/tui/adapters/discord-adapter.d.ts +22 -0
  550. package/dist/src/tui/adapters/discord-adapter.d.ts.map +1 -0
  551. package/dist/src/tui/adapters/discord-adapter.js +100 -0
  552. package/dist/src/tui/adapters/discord-adapter.js.map +1 -0
  553. package/dist/src/tui/adapters/instagram-adapter.d.ts +18 -0
  554. package/dist/src/tui/adapters/instagram-adapter.d.ts.map +1 -0
  555. package/dist/src/tui/adapters/instagram-adapter.js +115 -0
  556. package/dist/src/tui/adapters/instagram-adapter.js.map +1 -0
  557. package/dist/src/tui/adapters/kakaotalk-adapter.d.ts +18 -0
  558. package/dist/src/tui/adapters/kakaotalk-adapter.d.ts.map +1 -0
  559. package/dist/src/tui/adapters/kakaotalk-adapter.js +146 -0
  560. package/dist/src/tui/adapters/kakaotalk-adapter.js.map +1 -0
  561. package/dist/src/tui/adapters/line-adapter.d.ts +18 -0
  562. package/dist/src/tui/adapters/line-adapter.d.ts.map +1 -0
  563. package/dist/src/tui/adapters/line-adapter.js +92 -0
  564. package/dist/src/tui/adapters/line-adapter.js.map +1 -0
  565. package/dist/src/tui/adapters/slack-adapter.d.ts +23 -0
  566. package/dist/src/tui/adapters/slack-adapter.d.ts.map +1 -0
  567. package/dist/src/tui/adapters/slack-adapter.js +111 -0
  568. package/dist/src/tui/adapters/slack-adapter.js.map +1 -0
  569. package/dist/src/tui/adapters/teams-adapter.d.ts +20 -0
  570. package/dist/src/tui/adapters/teams-adapter.d.ts.map +1 -0
  571. package/dist/src/tui/adapters/teams-adapter.js +85 -0
  572. package/dist/src/tui/adapters/teams-adapter.js.map +1 -0
  573. package/dist/src/tui/adapters/telegram-adapter.d.ts +18 -0
  574. package/dist/src/tui/adapters/telegram-adapter.d.ts.map +1 -0
  575. package/dist/src/tui/adapters/telegram-adapter.js +183 -0
  576. package/dist/src/tui/adapters/telegram-adapter.js.map +1 -0
  577. package/dist/src/tui/adapters/types.d.ts +41 -0
  578. package/dist/src/tui/adapters/types.d.ts.map +1 -0
  579. package/dist/src/tui/adapters/types.js +2 -0
  580. package/dist/src/tui/adapters/types.js.map +1 -0
  581. package/dist/src/tui/adapters/whatsapp-adapter.d.ts +18 -0
  582. package/dist/src/tui/adapters/whatsapp-adapter.d.ts.map +1 -0
  583. package/dist/src/tui/adapters/whatsapp-adapter.js +120 -0
  584. package/dist/src/tui/adapters/whatsapp-adapter.js.map +1 -0
  585. package/dist/src/tui/app.d.ts +2 -0
  586. package/dist/src/tui/app.d.ts.map +1 -0
  587. package/dist/src/tui/app.js +652 -0
  588. package/dist/src/tui/app.js.map +1 -0
  589. package/dist/src/tui/cli.d.ts +3 -0
  590. package/dist/src/tui/cli.d.ts.map +1 -0
  591. package/dist/src/tui/cli.js +14 -0
  592. package/dist/src/tui/cli.js.map +1 -0
  593. package/dist/src/tui/utils.d.ts +5 -0
  594. package/dist/src/tui/utils.d.ts.map +1 -0
  595. package/dist/src/tui/utils.js +54 -0
  596. package/dist/src/tui/utils.js.map +1 -0
  597. package/dist/src/tui/views/channel-picker.d.ts +18 -0
  598. package/dist/src/tui/views/channel-picker.d.ts.map +1 -0
  599. package/dist/src/tui/views/channel-picker.js +131 -0
  600. package/dist/src/tui/views/channel-picker.js.map +1 -0
  601. package/dist/src/tui/views/workspace-picker.d.ts +18 -0
  602. package/dist/src/tui/views/workspace-picker.d.ts.map +1 -0
  603. package/dist/src/tui/views/workspace-picker.js +131 -0
  604. package/dist/src/tui/views/workspace-picker.js.map +1 -0
  605. package/docs/bun.lock +2 -666
  606. package/docs/content/docs/agent-skills.mdx +1 -1
  607. package/docs/content/docs/cli/channeltalk.mdx +264 -0
  608. package/docs/content/docs/cli/channeltalkbot.mdx +261 -0
  609. package/docs/content/docs/cli/instagram.mdx +211 -0
  610. package/docs/content/docs/cli/kakaotalk.mdx +286 -0
  611. package/docs/content/docs/cli/line.mdx +306 -0
  612. package/docs/content/docs/cli/meta.json +18 -0
  613. package/docs/content/docs/cli/slack.mdx +395 -0
  614. package/docs/content/docs/{integrations → cli}/slackbot.mdx +1 -1
  615. package/docs/content/docs/{integrations → cli}/teams.mdx +2 -2
  616. package/docs/content/docs/cli/telegram.mdx +107 -0
  617. package/docs/content/docs/cli/whatsapp.mdx +163 -0
  618. package/docs/content/docs/cli/whatsappbot.mdx +169 -0
  619. package/docs/content/docs/index.mdx +21 -13
  620. package/docs/content/docs/meta.json +9 -1
  621. package/docs/content/docs/quick-start.mdx +29 -6
  622. package/docs/content/docs/sdk/channeltalk.mdx +384 -0
  623. package/docs/content/docs/sdk/channeltalkbot.mdx +395 -0
  624. package/docs/content/docs/sdk/discord.mdx +535 -0
  625. package/docs/content/docs/sdk/instagram.mdx +367 -0
  626. package/docs/content/docs/sdk/kakaotalk.mdx +290 -0
  627. package/docs/content/docs/sdk/line.mdx +347 -0
  628. package/docs/content/docs/sdk/meta.json +4 -0
  629. package/docs/content/docs/sdk/slack.mdx +671 -0
  630. package/docs/content/docs/sdk/teams.mdx +350 -0
  631. package/docs/content/docs/sdk/whatsapp.mdx +293 -0
  632. package/docs/content/docs/sdk/whatsappbot.mdx +266 -0
  633. package/docs/content/docs/tui.mdx +137 -0
  634. package/docs/public/tui.png +0 -0
  635. package/docs/src/app/page.tsx +885 -308
  636. package/e2e/discordbot.e2e.test.ts +1 -1
  637. package/examples/discord-listen.ts +56 -0
  638. package/examples/kakaotalk-listen.ts +49 -0
  639. package/examples/slack-listen.ts +60 -0
  640. package/package.json +118 -9
  641. package/scripts/postbuild.ts +1 -0
  642. package/scripts/prepublish.ts +21 -1
  643. package/skills/agent-channeltalk/SKILL.md +18 -6
  644. package/skills/agent-channeltalkbot/SKILL.md +1 -1
  645. package/skills/agent-discord/SKILL.md +77 -2
  646. package/skills/agent-discord/references/common-patterns.md +1 -1
  647. package/skills/agent-discordbot/SKILL.md +1 -1
  648. package/skills/agent-instagram/SKILL.md +383 -0
  649. package/skills/agent-instagram/references/authentication.md +256 -0
  650. package/skills/agent-instagram/references/common-patterns.md +362 -0
  651. package/skills/agent-instagram/templates/chat-summary.sh +124 -0
  652. package/skills/agent-instagram/templates/monitor-chat.sh +143 -0
  653. package/skills/agent-instagram/templates/post-message.sh +130 -0
  654. package/skills/agent-kakaotalk/SKILL.md +587 -0
  655. package/skills/agent-kakaotalk/references/authentication.md +343 -0
  656. package/skills/agent-kakaotalk/references/common-patterns.md +403 -0
  657. package/skills/agent-kakaotalk/templates/chat-summary.sh +121 -0
  658. package/skills/agent-kakaotalk/templates/monitor-chat.sh +160 -0
  659. package/skills/agent-kakaotalk/templates/post-message.sh +123 -0
  660. package/skills/agent-line/SKILL.md +490 -0
  661. package/skills/agent-line/references/authentication.md +297 -0
  662. package/skills/agent-line/references/common-patterns.md +355 -0
  663. package/skills/agent-line/templates/chat-summary.sh +63 -0
  664. package/skills/agent-line/templates/monitor-chat.sh +76 -0
  665. package/skills/agent-line/templates/post-message.sh +123 -0
  666. package/skills/agent-slack/SKILL.md +266 -7
  667. package/skills/agent-slack/references/common-patterns.md +105 -39
  668. package/skills/agent-slackbot/SKILL.md +1 -1
  669. package/skills/agent-slackbot/references/common-patterns.md +52 -0
  670. package/skills/agent-teams/SKILL.md +49 -1
  671. package/skills/agent-telegram/SKILL.md +123 -0
  672. package/skills/agent-whatsapp/SKILL.md +382 -0
  673. package/skills/agent-whatsapp/references/authentication.md +191 -0
  674. package/skills/agent-whatsapp/references/common-patterns.md +336 -0
  675. package/skills/agent-whatsapp/templates/chat-summary.sh +122 -0
  676. package/skills/agent-whatsapp/templates/monitor-chat.sh +157 -0
  677. package/skills/agent-whatsapp/templates/post-message.sh +120 -0
  678. package/skills/agent-whatsappbot/SKILL.md +371 -0
  679. package/skills/agent-whatsappbot/references/authentication.md +216 -0
  680. package/skills/agent-whatsappbot/references/common-patterns.md +331 -0
  681. package/skills/agent-whatsappbot/templates/account-summary.sh +127 -0
  682. package/skills/agent-whatsappbot/templates/post-message.sh +120 -0
  683. package/skills/agent-whatsappbot/templates/send-template.sh +153 -0
  684. package/src/cli.ts +34 -6
  685. package/src/platforms/channeltalk/client.test.ts +30 -28
  686. package/src/platforms/channeltalk/client.ts +29 -8
  687. package/src/platforms/channeltalk/commands/auth.ts +9 -7
  688. package/src/platforms/channeltalk/commands/shared.ts +1 -1
  689. package/src/platforms/channeltalk/ensure-auth.ts +10 -8
  690. package/src/platforms/channeltalk/index.test.ts +114 -0
  691. package/src/platforms/channeltalk/index.ts +27 -14
  692. package/src/platforms/channeltalk/token-extractor.test.ts +227 -65
  693. package/src/platforms/channeltalk/token-extractor.ts +146 -25
  694. package/src/platforms/channeltalk/types.ts +3 -1
  695. package/src/platforms/channeltalkbot/client.test.ts +12 -12
  696. package/src/platforms/channeltalkbot/client.ts +31 -11
  697. package/src/platforms/channeltalkbot/commands/auth.test.ts +1 -5
  698. package/src/platforms/channeltalkbot/commands/auth.ts +2 -2
  699. package/src/platforms/channeltalkbot/commands/shared.ts +1 -1
  700. package/src/platforms/channeltalkbot/index.test.ts +76 -0
  701. package/src/platforms/channeltalkbot/index.ts +14 -11
  702. package/src/platforms/discord/client.test.ts +30 -30
  703. package/src/platforms/discord/client.ts +33 -6
  704. package/src/platforms/discord/commands/auth.test.ts +2 -2
  705. package/src/platforms/discord/commands/auth.ts +2 -2
  706. package/src/platforms/discord/commands/channel.test.ts +6 -6
  707. package/src/platforms/discord/commands/channel.ts +3 -3
  708. package/src/platforms/discord/commands/dm.ts +2 -2
  709. package/src/platforms/discord/commands/file.ts +3 -3
  710. package/src/platforms/discord/commands/friend.test.ts +5 -5
  711. package/src/platforms/discord/commands/friend.ts +1 -1
  712. package/src/platforms/discord/commands/member.test.ts +4 -4
  713. package/src/platforms/discord/commands/member.ts +1 -1
  714. package/src/platforms/discord/commands/mention.test.ts +4 -4
  715. package/src/platforms/discord/commands/mention.ts +1 -1
  716. package/src/platforms/discord/commands/message.ts +6 -6
  717. package/src/platforms/discord/commands/note.ts +2 -2
  718. package/src/platforms/discord/commands/profile.ts +1 -1
  719. package/src/platforms/discord/commands/reaction.ts +3 -3
  720. package/src/platforms/discord/commands/server.test.ts +2 -2
  721. package/src/platforms/discord/commands/server.ts +1 -1
  722. package/src/platforms/discord/commands/snapshot.ts +1 -1
  723. package/src/platforms/discord/commands/thread.test.ts +5 -5
  724. package/src/platforms/discord/commands/thread.ts +2 -2
  725. package/src/platforms/discord/commands/user.ts +3 -3
  726. package/src/platforms/discord/ensure-auth.ts +1 -1
  727. package/src/platforms/discord/index.test.ts +84 -0
  728. package/src/platforms/discord/index.ts +51 -0
  729. package/src/platforms/discord/listener.test.ts +782 -0
  730. package/src/platforms/discord/listener.ts +297 -0
  731. package/src/platforms/discord/types.ts +133 -0
  732. package/src/platforms/discordbot/client.test.ts +33 -33
  733. package/src/platforms/discordbot/client.ts +28 -7
  734. package/src/platforms/discordbot/commands/auth.test.ts +1 -5
  735. package/src/platforms/discordbot/commands/auth.ts +2 -2
  736. package/src/platforms/discordbot/commands/channel.test.ts +1 -5
  737. package/src/platforms/discordbot/commands/message.test.ts +1 -3
  738. package/src/platforms/discordbot/commands/server.test.ts +1 -5
  739. package/src/platforms/discordbot/commands/shared.ts +1 -1
  740. package/src/platforms/discordbot/commands/snapshot.test.ts +1 -3
  741. package/src/platforms/discordbot/commands/thread.test.ts +1 -3
  742. package/src/platforms/discordbot/commands/user.test.ts +1 -5
  743. package/src/platforms/instagram/cli.ts +37 -0
  744. package/src/platforms/instagram/client.test.ts +396 -0
  745. package/src/platforms/instagram/client.ts +655 -0
  746. package/src/platforms/instagram/commands/auth.ts +401 -0
  747. package/src/platforms/instagram/commands/chat.ts +49 -0
  748. package/src/platforms/instagram/commands/index.ts +3 -0
  749. package/src/platforms/instagram/commands/message.ts +134 -0
  750. package/src/platforms/instagram/commands/shared.test.ts +51 -0
  751. package/src/platforms/instagram/commands/shared.ts +55 -0
  752. package/src/platforms/instagram/credential-manager.test.ts +277 -0
  753. package/src/platforms/instagram/credential-manager.ts +134 -0
  754. package/src/platforms/instagram/ensure-auth.test.ts +84 -0
  755. package/src/platforms/instagram/ensure-auth.ts +24 -0
  756. package/src/platforms/instagram/index.test.ts +44 -0
  757. package/src/platforms/instagram/index.ts +16 -0
  758. package/src/platforms/instagram/listener.test.ts +130 -0
  759. package/src/platforms/instagram/listener.ts +106 -0
  760. package/src/platforms/instagram/types.test.ts +228 -0
  761. package/src/platforms/instagram/types.ts +153 -0
  762. package/src/platforms/kakaotalk/auth/kakao-login.ts +296 -0
  763. package/src/platforms/kakaotalk/cli.ts +37 -0
  764. package/src/platforms/kakaotalk/client.test.ts +490 -0
  765. package/src/platforms/kakaotalk/client.ts +328 -0
  766. package/src/platforms/kakaotalk/commands/auth.ts +569 -0
  767. package/src/platforms/kakaotalk/commands/chat.ts +34 -0
  768. package/src/platforms/kakaotalk/commands/index.ts +3 -0
  769. package/src/platforms/kakaotalk/commands/message.ts +56 -0
  770. package/src/platforms/kakaotalk/commands/shared.ts +38 -0
  771. package/src/platforms/kakaotalk/credential-manager.test.ts +231 -0
  772. package/src/platforms/kakaotalk/credential-manager.ts +110 -0
  773. package/src/platforms/kakaotalk/ensure-auth.ts +16 -0
  774. package/src/platforms/kakaotalk/index.test.ts +68 -0
  775. package/src/platforms/kakaotalk/index.ts +30 -0
  776. package/src/platforms/kakaotalk/listener.test.ts +370 -0
  777. package/src/platforms/kakaotalk/listener.ts +203 -0
  778. package/src/platforms/kakaotalk/protocol/NOTICE.md +51 -0
  779. package/src/platforms/kakaotalk/protocol/config.ts +28 -0
  780. package/src/platforms/kakaotalk/protocol/connection.ts +159 -0
  781. package/src/platforms/kakaotalk/protocol/crypto.ts +71 -0
  782. package/src/platforms/kakaotalk/protocol/packet.ts +47 -0
  783. package/src/platforms/kakaotalk/protocol/session.ts +156 -0
  784. package/src/platforms/kakaotalk/protocol/types.ts +42 -0
  785. package/src/platforms/kakaotalk/token-extractor.ts +320 -0
  786. package/src/platforms/kakaotalk/types.ts +212 -0
  787. package/src/platforms/line/cli.ts +39 -0
  788. package/src/platforms/line/client.test.ts +162 -0
  789. package/src/platforms/line/client.ts +352 -0
  790. package/src/platforms/line/commands/auth.ts +219 -0
  791. package/src/platforms/line/commands/chat.ts +34 -0
  792. package/src/platforms/line/commands/friend.ts +28 -0
  793. package/src/platforms/line/commands/index.ts +5 -0
  794. package/src/platforms/line/commands/message.ts +59 -0
  795. package/src/platforms/line/commands/profile.ts +24 -0
  796. package/src/platforms/line/credential-manager.test.ts +163 -0
  797. package/src/platforms/line/credential-manager.ts +99 -0
  798. package/src/platforms/line/ensure-auth.ts +13 -0
  799. package/src/platforms/line/index.test.ts +48 -0
  800. package/src/platforms/line/index.ts +27 -0
  801. package/src/platforms/line/listener.test.ts +341 -0
  802. package/src/platforms/line/listener.ts +138 -0
  803. package/src/platforms/line/types.test.ts +157 -0
  804. package/src/platforms/line/types.ts +181 -0
  805. package/src/platforms/slack/cli.ts +10 -0
  806. package/src/platforms/slack/client.test.ts +703 -69
  807. package/src/platforms/slack/client.ts +664 -43
  808. package/src/platforms/slack/commands/activity.ts +1 -1
  809. package/src/platforms/slack/commands/auth.ts +2 -2
  810. package/src/platforms/slack/commands/bookmark.test.ts +91 -0
  811. package/src/platforms/slack/commands/bookmark.ts +148 -0
  812. package/src/platforms/slack/commands/channel.test.ts +47 -1
  813. package/src/platforms/slack/commands/channel.ts +255 -4
  814. package/src/platforms/slack/commands/drafts.ts +1 -1
  815. package/src/platforms/slack/commands/emoji.test.ts +32 -0
  816. package/src/platforms/slack/commands/emoji.ts +33 -0
  817. package/src/platforms/slack/commands/file.ts +30 -4
  818. package/src/platforms/slack/commands/index.ts +5 -0
  819. package/src/platforms/slack/commands/message.ts +173 -7
  820. package/src/platforms/slack/commands/pin.test.ts +72 -0
  821. package/src/platforms/slack/commands/pin.ts +93 -0
  822. package/src/platforms/slack/commands/reaction.ts +3 -3
  823. package/src/platforms/slack/commands/reminder.test.ts +86 -0
  824. package/src/platforms/slack/commands/reminder.ts +125 -0
  825. package/src/platforms/slack/commands/saved.ts +1 -1
  826. package/src/platforms/slack/commands/sections.ts +1 -1
  827. package/src/platforms/slack/commands/snapshot.test.ts +4 -4
  828. package/src/platforms/slack/commands/snapshot.ts +14 -1
  829. package/src/platforms/slack/commands/unread.test.ts +3 -3
  830. package/src/platforms/slack/commands/unread.ts +3 -3
  831. package/src/platforms/slack/commands/user.ts +90 -1
  832. package/src/platforms/slack/commands/usergroup.test.ts +157 -0
  833. package/src/platforms/slack/commands/usergroup.ts +242 -0
  834. package/src/platforms/slack/credential-manager.ts +3 -1
  835. package/src/platforms/slack/ensure-auth.ts +4 -4
  836. package/src/platforms/slack/index.test.ts +59 -0
  837. package/src/platforms/slack/index.ts +46 -1
  838. package/src/platforms/slack/listener.test.ts +370 -0
  839. package/src/platforms/slack/listener.ts +181 -0
  840. package/src/platforms/slack/types.ts +187 -0
  841. package/src/platforms/slackbot/client.test.ts +26 -26
  842. package/src/platforms/slackbot/client.ts +40 -22
  843. package/src/platforms/slackbot/commands/auth.test.ts +1 -5
  844. package/src/platforms/slackbot/commands/auth.ts +2 -2
  845. package/src/platforms/slackbot/commands/shared.ts +1 -1
  846. package/src/platforms/teams/client.test.ts +34 -34
  847. package/src/platforms/teams/client.ts +32 -9
  848. package/src/platforms/teams/commands/auth.test.ts +2 -2
  849. package/src/platforms/teams/commands/auth.ts +3 -3
  850. package/src/platforms/teams/commands/channel.test.ts +6 -6
  851. package/src/platforms/teams/commands/channel.ts +3 -3
  852. package/src/platforms/teams/commands/file.ts +3 -3
  853. package/src/platforms/teams/commands/message.ts +4 -4
  854. package/src/platforms/teams/commands/reaction.ts +2 -2
  855. package/src/platforms/teams/commands/snapshot.ts +1 -1
  856. package/src/platforms/teams/commands/team.test.ts +2 -2
  857. package/src/platforms/teams/commands/team.ts +1 -1
  858. package/src/platforms/teams/commands/user.ts +3 -3
  859. package/src/platforms/teams/ensure-auth.ts +1 -1
  860. package/src/platforms/teams/index.test.ts +74 -0
  861. package/src/platforms/teams/index.ts +30 -0
  862. package/src/platforms/telegram/app-config.test.ts +44 -0
  863. package/src/platforms/telegram/app-config.ts +53 -0
  864. package/src/platforms/telegram/chat-utils.test.ts +71 -0
  865. package/src/platforms/telegram/chat-utils.ts +39 -0
  866. package/src/platforms/telegram/cli.ts +20 -0
  867. package/src/platforms/telegram/client.test.ts +90 -0
  868. package/src/platforms/telegram/client.ts +623 -0
  869. package/src/platforms/telegram/commands/auth.test.ts +113 -0
  870. package/src/platforms/telegram/commands/auth.ts +662 -0
  871. package/src/platforms/telegram/commands/chat.ts +65 -0
  872. package/src/platforms/telegram/commands/index.ts +3 -0
  873. package/src/platforms/telegram/commands/message.ts +51 -0
  874. package/src/platforms/telegram/commands/shared.test.ts +15 -0
  875. package/src/platforms/telegram/commands/shared.ts +50 -0
  876. package/src/platforms/telegram/credential-manager.test.ts +152 -0
  877. package/src/platforms/telegram/credential-manager.ts +203 -0
  878. package/src/platforms/telegram/my-telegram-org.ts +206 -0
  879. package/src/platforms/telegram/tdlib.ts +159 -0
  880. package/src/platforms/telegram/types.test.ts +74 -0
  881. package/src/platforms/telegram/types.ts +417 -0
  882. package/src/platforms/whatsapp/cli.ts +38 -0
  883. package/src/platforms/whatsapp/client.ts +526 -0
  884. package/src/platforms/whatsapp/commands/auth.ts +205 -0
  885. package/src/platforms/whatsapp/commands/chat.ts +49 -0
  886. package/src/platforms/whatsapp/commands/index.ts +3 -0
  887. package/src/platforms/whatsapp/commands/message.ts +79 -0
  888. package/src/platforms/whatsapp/commands/shared.ts +61 -0
  889. package/src/platforms/whatsapp/credential-manager.test.ts +278 -0
  890. package/src/platforms/whatsapp/credential-manager.ts +134 -0
  891. package/src/platforms/whatsapp/ensure-auth.test.ts +85 -0
  892. package/src/platforms/whatsapp/ensure-auth.ts +26 -0
  893. package/src/platforms/whatsapp/index.test.ts +39 -0
  894. package/src/platforms/whatsapp/index.ts +16 -0
  895. package/src/platforms/whatsapp/suppress-ws-warnings.ts +21 -0
  896. package/src/platforms/whatsapp/types.test.ts +190 -0
  897. package/src/platforms/whatsapp/types.ts +95 -0
  898. package/src/platforms/whatsappbot/cli.ts +23 -0
  899. package/src/platforms/whatsappbot/client.test.ts +411 -0
  900. package/src/platforms/whatsappbot/client.ts +256 -0
  901. package/src/platforms/whatsappbot/commands/auth.ts +206 -0
  902. package/src/platforms/whatsappbot/commands/index.ts +3 -0
  903. package/src/platforms/whatsappbot/commands/message.ts +148 -0
  904. package/src/platforms/whatsappbot/commands/shared.ts +22 -0
  905. package/src/platforms/whatsappbot/commands/template.ts +69 -0
  906. package/src/platforms/whatsappbot/credential-manager.test.ts +303 -0
  907. package/src/platforms/whatsappbot/credential-manager.ts +148 -0
  908. package/src/platforms/whatsappbot/index.test.ts +34 -0
  909. package/src/platforms/whatsappbot/index.ts +18 -0
  910. package/src/platforms/whatsappbot/types.test.ts +141 -0
  911. package/src/platforms/whatsappbot/types.ts +71 -0
  912. package/src/tui/adapters/channeltalk-adapter.ts +102 -0
  913. package/src/tui/adapters/discord-adapter.ts +112 -0
  914. package/src/tui/adapters/instagram-adapter.ts +132 -0
  915. package/src/tui/adapters/kakaotalk-adapter.ts +163 -0
  916. package/src/tui/adapters/line-adapter.ts +109 -0
  917. package/src/tui/adapters/slack-adapter.ts +128 -0
  918. package/src/tui/adapters/teams-adapter.ts +95 -0
  919. package/src/tui/adapters/telegram-adapter.ts +203 -0
  920. package/src/tui/adapters/types.ts +43 -0
  921. package/src/tui/adapters/whatsapp-adapter.ts +138 -0
  922. package/src/tui/app.ts +689 -0
  923. package/src/tui/cli.ts +18 -0
  924. package/src/tui/utils.test.ts +149 -0
  925. package/src/tui/utils.ts +58 -0
  926. package/src/tui/views/channel-picker.ts +146 -0
  927. package/src/tui/views/workspace-picker.ts +146 -0
  928. package/docs/content/docs/integrations/meta.json +0 -5
  929. package/docs/content/docs/integrations/slack.mdx +0 -218
  930. package/docs/content/docs/{integrations → cli}/discord.mdx +19 -19
  931. package/docs/content/docs/{integrations → cli}/discordbot.mdx +8 -8
@@ -1,89 +1,16 @@
1
1
  'use client'
2
2
 
3
- import { useTheme } from 'next-themes'
4
3
  import Link from 'next/link'
4
+ import { useTheme } from 'next-themes'
5
5
  import { useEffect, useState } from 'react'
6
6
 
7
- function KeyIcon({ className }: { className?: string }) {
8
- return (
9
- <svg
10
- xmlns="http://www.w3.org/2000/svg"
11
- viewBox="0 0 24 24"
12
- fill="none"
13
- stroke="currentColor"
14
- strokeWidth="2"
15
- strokeLinecap="round"
16
- strokeLinejoin="round"
17
- className={className}
18
- >
19
- <title>Key icon</title>
20
- <path d="m21 2-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0 3 3L22 7l-3-3m-3.5 3.5L19 4" />
21
- </svg>
22
- )
23
- }
24
-
25
- function GlobeIcon({ className }: { className?: string }) {
26
- return (
27
- <svg
28
- xmlns="http://www.w3.org/2000/svg"
29
- viewBox="0 0 24 24"
30
- fill="none"
31
- stroke="currentColor"
32
- strokeWidth="2"
33
- strokeLinecap="round"
34
- strokeLinejoin="round"
35
- className={className}
36
- >
37
- <title>Globe icon</title>
38
- <circle cx="12" cy="12" r="10" />
39
- <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" />
40
- <line x1="2" y1="12" x2="22" y2="12" />
41
- </svg>
42
- )
43
- }
44
-
45
- function BotIcon({ className }: { className?: string }) {
46
- return (
47
- <svg
48
- xmlns="http://www.w3.org/2000/svg"
49
- viewBox="0 0 24 24"
50
- fill="none"
51
- stroke="currentColor"
52
- strokeWidth="2"
53
- strokeLinecap="round"
54
- strokeLinejoin="round"
55
- className={className}
56
- >
57
- <title>Bot icon</title>
58
- <path d="M12 8V4H8" />
59
- <rect width="16" height="12" x="4" y="8" rx="2" />
60
- <path d="M8 16h.01M16 16h.01" />
61
- <path d="M9 12h6" />
62
- </svg>
63
- )
64
- }
65
-
66
- function ZapIcon({ className }: { className?: string }) {
67
- return (
68
- <svg
69
- xmlns="http://www.w3.org/2000/svg"
70
- viewBox="0 0 24 24"
71
- fill="none"
72
- stroke="currentColor"
73
- strokeWidth="2"
74
- strokeLinecap="round"
75
- strokeLinejoin="round"
76
- className={className}
77
- >
78
- <title>Zap icon</title>
79
- <polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2" />
80
- </svg>
81
- )
82
- }
7
+ // ============================================================
8
+ // Platform Icon Components (128x128 viewBox with brand colors)
9
+ // ============================================================
83
10
 
84
- function SlackIcon({ className }: { className?: string }) {
11
+ function SlackIcon({ className, style }: { className?: string; style?: React.CSSProperties }) {
85
12
  return (
86
- <svg viewBox="0 0 128 128" fill="currentColor" className={className}>
13
+ <svg viewBox="0 0 128 128" fill="currentColor" className={className} style={style}>
87
14
  <title>Slack icon</title>
88
15
  <path
89
16
  d="M27.255 80.719c0 7.33-5.978 13.317-13.309 13.317C6.616 94.036.63 88.049.63 80.719s5.987-13.317 13.317-13.317h13.309zm6.709 0c0-7.33 5.987-13.317 13.317-13.317s13.317 5.986 13.317 13.317v33.335c0 7.33-5.986 13.317-13.317 13.317-7.33 0-13.317-5.987-13.317-13.317zm0 0"
@@ -105,9 +32,9 @@ function SlackIcon({ className }: { className?: string }) {
105
32
  )
106
33
  }
107
34
 
108
- function DiscordIcon({ className }: { className?: string }) {
35
+ function DiscordIcon({ className, style }: { className?: string; style?: React.CSSProperties }) {
109
36
  return (
110
- <svg viewBox="0 0 128 128" fill="currentColor" className={className}>
37
+ <svg viewBox="0 0 128 128" fill="currentColor" className={className} style={style}>
111
38
  <title>Discord icon</title>
112
39
  <path
113
40
  d="M107.7,30.8c-8-3.7-16.5-6.4-25.5-7.9c-0.1,0-0.2,0-0.3,0.1c-1.1,2-2.3,4.5-3.2,6.6c-9.6-1.4-19.2-1.4-28.6,0c-0.9-2.1-2.1-4.6-3.2-6.6c-0.1-0.1-0.2-0.1-0.3-0.1c-8.9,1.5-17.5,4.2-25.5,7.9c0,0-0.1,0.1-0.1,0.1C7.1,51.5,3,71.7,5.1,91.6c0,0.1,0.1,0.2,0.1,0.2c10.7,7.9,21.1,12.7,31.3,15.8c0.1,0,0.2,0,0.3-0.1c2.4-3.3,4.6-6.8,6.4-10.4c0.1-0.2,0-0.4-0.2-0.5c-3.4-1.3-6.7-2.9-9.8-4.7c-0.2-0.1-0.2-0.4,0-0.6c0.7-0.5,1.3-1,1.9-1.5c0.1-0.1,0.2-0.1,0.3,0c20.6,9.4,42.9,9.4,63.3,0c0.1-0.1,0.2,0,0.3,0c0.6,0.5,1.3,1,1.9,1.5c0.2,0.2,0.2,0.4,0,0.6c-3.1,1.9-6.4,3.5-9.8,4.7c-0.2,0.1-0.3,0.3-0.2,0.5c1.9,3.6,4,7.1,6.4,10.4c0.1,0.1,0.2,0.1,0.3,0.1c10.2-3.1,20.6-7.9,31.3-15.8c0.1-0.1,0.1-0.1,0.1-0.2C125.6,68.8,119.2,49.2,107.7,30.8C107.7,30.9,107.7,30.8,107.7,30.8z M45.3,79.9c-5.3,0-9.6-4.8-9.6-10.8s4.2-10.8,9.6-10.8c5.4,0,9.7,4.9,9.6,10.8C54.9,75.1,50.6,79.9,45.3,79.9z M82.8,79.9c-5.3,0-9.6-4.8-9.6-10.8s4.2-10.8,9.6-10.8c5.4,0,9.7,4.9,9.6,10.8C92.4,75.1,88.2,79.9,82.8,79.9z"
@@ -117,9 +44,9 @@ function DiscordIcon({ className }: { className?: string }) {
117
44
  )
118
45
  }
119
46
 
120
- function TeamsIcon({ className }: { className?: string }) {
47
+ function TeamsIcon({ className, style }: { className?: string; style?: React.CSSProperties }) {
121
48
  return (
122
- <svg viewBox="0 0 128 128" fill="currentColor" className={className}>
49
+ <svg viewBox="0 0 128 128" fill="currentColor" className={className} style={style}>
123
50
  <title>Teams icon</title>
124
51
  <path
125
52
  d="M86.3,44.5h32.5c2.6,0,4.7,2.1,4.7,4.7v29.4c0,12.9-10.5,23.4-23.4,23.4h-0.3c-12.9,0-23.4-10.5-23.4-23.4V54.4C76.4,48.9,80.8,44.5,86.3,44.5z"
@@ -160,313 +87,963 @@ function TeamsIcon({ className }: { className?: string }) {
160
87
  )
161
88
  }
162
89
 
163
- function SunIcon({ className }: { className?: string }) {
90
+ function TelegramIcon({ className, style }: { className?: string; style?: React.CSSProperties }) {
164
91
  return (
165
- <svg
166
- xmlns="http://www.w3.org/2000/svg"
167
- viewBox="0 0 24 24"
168
- fill="none"
169
- stroke="currentColor"
170
- strokeWidth="2"
171
- strokeLinecap="round"
172
- strokeLinejoin="round"
173
- className={className}
174
- >
175
- <title>Light mode</title>
176
- <circle cx="12" cy="12" r="4" />
177
- <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41" />
92
+ <svg viewBox="0 0 128 128" fill="currentColor" className={className} style={style}>
93
+ <title>Telegram icon</title>
94
+ <path
95
+ d="M64 0C28.7 0 0 28.7 0 64s28.7 64 64 64 64-28.7 64-64S99.3 0 64 0zm29.3 43.6L82 93.2c-.7 3.1-2.5 3.8-5.1 2.4l-14.1-10.4-6.8 6.6c-.8.8-1.4 1.4-2.8 1.4l1-14.3 25.8-23.3c1.1-1 -.2-1.6-1.8-.6L44.5 73.1l-13.8-4.3c-3-.9-3-3 .6-4.4l54-20.8c2.5-.9 4.7.6 3.9 4.4z"
96
+ fill="#2AABEE"
97
+ />
178
98
  </svg>
179
99
  )
180
100
  }
181
101
 
182
- function MoonIcon({ className }: { className?: string }) {
102
+ function WhatsAppIcon({ className, style }: { className?: string; style?: React.CSSProperties }) {
183
103
  return (
184
- <svg
185
- xmlns="http://www.w3.org/2000/svg"
186
- viewBox="0 0 24 24"
187
- fill="none"
188
- stroke="currentColor"
189
- strokeWidth="2"
190
- strokeLinecap="round"
191
- strokeLinejoin="round"
192
- className={className}
193
- >
194
- <title>Dark mode</title>
195
- <path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" />
104
+ <svg viewBox="0 0 128 128" fill="currentColor" className={className} style={style}>
105
+ <title>WhatsApp icon</title>
106
+ <path
107
+ d="M64 0C28.7 0 0 28.7 0 64c0 11.3 2.9 21.9 8.1 31.1L0 128l33.6-8.8C42.5 124.7 53 128 64 128c35.3 0 64-28.7 64-64S99.3 0 64 0zm0 117.1c-10.1 0-19.6-2.8-27.7-7.6l-2-1.2-20.5 5.4 5.5-20.1-1.3-2.1C12.7 83.3 9.6 73.9 9.6 64c0-30 24.4-54.4 54.4-54.4S118.4 34 118.4 64s-24.4 53.1-54.4 53.1zm29.8-40.7c-1.6-.8-9.6-4.7-11.1-5.3-1.5-.5-2.6-.8-3.7.8s-4.2 5.3-5.2 6.4c-1 1.1-1.9 1.2-3.5.4-1.6-.8-6.8-2.5-13-8-4.8-4.3-8-9.5-9-11.1-.9-1.6-.1-2.5.7-3.3.8-.7 1.6-1.9 2.4-2.8.8-1 1.1-1.6 1.6-2.7.5-1.1.3-2-.1-2.8-.5-.8-3.7-8.9-5.1-12.2-1.3-3.2-2.7-2.8-3.7-2.8-1 0-2.1-.1-3.2-.1s-2.9.4-4.4 2c-1.5 1.6-5.8 5.7-5.8 13.8s5.9 16 6.7 17.1c.8 1.1 11.6 17.7 28.1 24.8 3.9 1.7 7 2.7 9.4 3.5 3.9 1.2 7.5 1.1 10.3.6 3.2-.5 9.6-3.9 10.9-7.7 1.4-3.8 1.4-7 1-7.7-.5-.7-1.6-1.1-3.2-1.9z"
108
+ fill="#25D366"
109
+ />
110
+ </svg>
111
+ )
112
+ }
113
+
114
+ function KakaoTalkIcon({ className, style }: { className?: string; style?: React.CSSProperties }) {
115
+ return (
116
+ <svg viewBox="0 0 128 128" fill="currentColor" className={className} style={style}>
117
+ <title>KakaoTalk icon</title>
118
+ <rect width="128" height="128" rx="28" fill="#FEE500" />
119
+ <path
120
+ d="M64 32C45.2 32 30 43.8 30 58.4c0 9.4 6.2 17.7 15.6 22.4l-3.2 11.8c-.3 1 .9 1.8 1.7 1.2l14.1-9.4c1.9.3 3.8.4 5.8.4 18.8 0 34-11.8 34-26.4S82.8 32 64 32z"
121
+ fill="#3C1E1E"
122
+ />
123
+ </svg>
124
+ )
125
+ }
126
+
127
+ function LineIcon({ className, style }: { className?: string; style?: React.CSSProperties }) {
128
+ return (
129
+ <svg viewBox="0 0 24 24" fill="currentColor" className={className} style={style}>
130
+ <title>LINE icon</title>
131
+ <path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314" />
132
+ </svg>
133
+ )
134
+ }
135
+
136
+ function InstagramIcon({ className, style }: { className?: string; style?: React.CSSProperties }) {
137
+ return (
138
+ <svg viewBox="0 0 24 24" fill="currentColor" className={className} style={style}>
139
+ <title>Instagram icon</title>
140
+ <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z" />
141
+ </svg>
142
+ )
143
+ }
144
+
145
+ function ChannelTalkIcon({ className, style }: { className?: string; style?: React.CSSProperties }) {
146
+ return (
147
+ <svg viewBox="0 0 128 128" fill="currentColor" className={className} style={style}>
148
+ <title>Channel Talk icon</title>
149
+ <rect width="128" height="128" rx="28" fill="#3B3FE4" />
150
+ <text x="64" y="82" textAnchor="middle" fill="white" fontSize="48" fontWeight="bold" fontFamily="monospace">CT</text>
151
+ </svg>
152
+ )
153
+ }
154
+
155
+ // ============================================================
156
+ // Feature Icons (Lucide-style, stroke-based)
157
+ // ============================================================
158
+
159
+ function ShieldIcon({ className }: { className?: string }) {
160
+ return (
161
+ <svg className={className} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
162
+ <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" />
163
+ <path d="M9.5 12.5L11 14l3.5-3.5" />
196
164
  </svg>
197
165
  )
198
166
  }
199
167
 
168
+ function UserIcon({ className }: { className?: string }) {
169
+ return (
170
+ <svg className={className} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
171
+ <path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2" />
172
+ <circle cx="12" cy="7" r="4" />
173
+ </svg>
174
+ )
175
+ }
176
+
177
+ function TerminalIcon({ className }: { className?: string }) {
178
+ return (
179
+ <svg className={className} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
180
+ <polyline points="4 17 10 11 4 5" />
181
+ <line x1="12" y1="19" x2="20" y2="19" />
182
+ </svg>
183
+ )
184
+ }
185
+
186
+ function CpuIcon({ className }: { className?: string }) {
187
+ return (
188
+ <svg className={className} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
189
+ <rect x="4" y="4" width="16" height="16" rx="2" />
190
+ <rect x="9" y="9" width="6" height="6" />
191
+ <line x1="9" y1="1" x2="9" y2="4" />
192
+ <line x1="15" y1="1" x2="15" y2="4" />
193
+ <line x1="9" y1="20" x2="9" y2="23" />
194
+ <line x1="15" y1="20" x2="15" y2="23" />
195
+ <line x1="20" y1="9" x2="23" y2="9" />
196
+ <line x1="20" y1="14" x2="23" y2="14" />
197
+ <line x1="1" y1="9" x2="4" y2="9" />
198
+ <line x1="1" y1="14" x2="4" y2="14" />
199
+ </svg>
200
+ )
201
+ }
202
+
203
+ function ZapIcon({ className }: { className?: string }) {
204
+ return (
205
+ <svg className={className} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
206
+ <polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2" />
207
+ </svg>
208
+ )
209
+ }
210
+
211
+ function DatabaseIcon({ className }: { className?: string }) {
212
+ return (
213
+ <svg className={className} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round">
214
+ <ellipse cx="12" cy="5" rx="9" ry="3" />
215
+ <path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3" />
216
+ <path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5" />
217
+ </svg>
218
+ )
219
+ }
220
+
221
+ // ============================================================
222
+ // Utility Components
223
+ // ============================================================
224
+
225
+ function CopyButton({ text }: { text: string }) {
226
+ const [copied, setCopied] = useState(false)
227
+
228
+ return (
229
+ <button
230
+ type="button"
231
+ onClick={() => {
232
+ navigator.clipboard.writeText(text).then(() => {
233
+ setCopied(true)
234
+ setTimeout(() => setCopied(false), 2000)
235
+ })
236
+ }}
237
+ className="flex items-center justify-center rounded-md p-1.5 text-zinc-400 transition-colors hover:text-zinc-600 dark:text-zinc-500 dark:hover:text-zinc-300"
238
+ aria-label={copied ? 'Copied' : 'Copy to clipboard'}
239
+ >
240
+ {copied ? (
241
+ <svg className="size-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
242
+ <polyline points="20 6 9 17 4 12" />
243
+ </svg>
244
+ ) : (
245
+ <svg className="size-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
246
+ <rect x="9" y="9" width="13" height="13" rx="2" ry="2" />
247
+ <path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1" />
248
+ </svg>
249
+ )}
250
+ </button>
251
+ )
252
+ }
253
+
200
254
  function ThemeToggle() {
201
- const { setTheme, resolvedTheme } = useTheme()
202
255
  const [mounted, setMounted] = useState(false)
256
+ const { setTheme, resolvedTheme } = useTheme()
203
257
 
204
258
  useEffect(() => {
205
259
  setMounted(true)
206
260
  }, [])
207
261
 
208
262
  if (!mounted) {
209
- return <div className="h-9 w-9" />
263
+ return <div className="size-9" />
210
264
  }
211
265
 
212
266
  return (
213
267
  <button
214
268
  type="button"
215
269
  onClick={() => setTheme(resolvedTheme === 'dark' ? 'light' : 'dark')}
216
- className="rounded-lg p-2 text-zinc-600 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800"
270
+ className="flex size-9 items-center justify-center rounded-lg text-zinc-600 transition-colors hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100"
217
271
  aria-label="Toggle theme"
218
272
  >
219
- {resolvedTheme === 'dark' ? <SunIcon className="h-5 w-5" /> : <MoonIcon className="h-5 w-5" />}
273
+ {resolvedTheme === 'dark' ? (
274
+ <svg className="size-[18px]" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
275
+ <circle cx="12" cy="12" r="5" />
276
+ <line x1="12" y1="1" x2="12" y2="3" />
277
+ <line x1="12" y1="21" x2="12" y2="23" />
278
+ <line x1="4.22" y1="4.22" x2="5.64" y2="5.64" />
279
+ <line x1="18.36" y1="18.36" x2="19.78" y2="19.78" />
280
+ <line x1="1" y1="12" x2="3" y2="12" />
281
+ <line x1="21" y1="12" x2="23" y2="12" />
282
+ <line x1="4.22" y1="19.78" x2="5.64" y2="18.36" />
283
+ <line x1="18.36" y1="5.64" x2="19.78" y2="4.22" />
284
+ </svg>
285
+ ) : (
286
+ <svg className="size-[18px]" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
287
+ <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z" />
288
+ </svg>
289
+ )}
220
290
  </button>
221
291
  )
222
292
  }
223
293
 
224
- async function fetchNpmVersion(): Promise<string | null> {
225
- try {
226
- const res = await fetch('https://registry.npmjs.org/agent-messenger/latest')
227
- if (!res.ok) return null
228
- const data = await res.json()
229
- return data.version ?? null
230
- } catch {
231
- return null
232
- }
294
+ // ============================================================
295
+ // Terminal Block Component
296
+ // ============================================================
297
+
298
+ function TerminalBlock({
299
+ title,
300
+ copyText,
301
+ children,
302
+ }: {
303
+ title?: string
304
+ copyText: string
305
+ children: React.ReactNode
306
+ }) {
307
+ return (
308
+ <div className="overflow-hidden rounded-xl border border-zinc-200 bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-950">
309
+ <div className="flex items-center justify-between border-b border-zinc-200 bg-zinc-100 px-4 py-3 dark:border-zinc-800 dark:bg-zinc-900">
310
+ <div className="flex gap-2">
311
+ <span className="size-3 rounded-full bg-zinc-300 dark:bg-zinc-700" />
312
+ <span className="size-3 rounded-full bg-zinc-300 dark:bg-zinc-700" />
313
+ <span className="size-3 rounded-full bg-zinc-300 dark:bg-zinc-700" />
314
+ </div>
315
+ <span className="font-mono text-xs text-zinc-400 dark:text-zinc-500">{title ?? 'terminal'}</span>
316
+ <CopyButton text={copyText} />
317
+ </div>
318
+ <pre className="overflow-x-auto p-5 font-mono text-sm leading-relaxed">
319
+ <code>{children}</code>
320
+ </pre>
321
+ </div>
322
+ )
233
323
  }
234
324
 
235
- export default function Home() {
236
- const [npmVersion, setNpmVersion] = useState<string | null>(null)
325
+ // ============================================================
326
+ // Platform Terminal (cycling demo)
327
+ // ============================================================
328
+
329
+ function PlatformTerminal() {
330
+ const [active, setActive] = useState(0)
331
+ const [paused, setPaused] = useState(false)
237
332
 
238
333
  useEffect(() => {
239
- fetchNpmVersion().then(setNpmVersion)
240
- }, [])
334
+ if (paused) return
335
+ const timer = setInterval(() => {
336
+ setActive((prev) => (prev + 1) % TERMINAL_DEMOS.length)
337
+ }, 3500)
338
+ return () => clearInterval(timer)
339
+ }, [paused])
340
+
341
+ const demo = TERMINAL_DEMOS[active]
241
342
 
242
343
  return (
243
- <div className="flex min-h-screen flex-col bg-zinc-50 dark:bg-black">
244
- <header className="sticky top-0 z-50 border-b border-zinc-200 bg-zinc-50/80 backdrop-blur-sm dark:border-zinc-800 dark:bg-black/80">
245
- <div className="mx-auto flex h-16 max-w-7xl items-center justify-between px-6">
246
- <Link href="/" className="text-xl font-bold text-zinc-900 dark:text-white">
247
- Agent Messenger
248
- </Link>
249
- <nav className="flex items-center gap-6">
250
- <Link
251
- href="/docs"
252
- className="text-sm font-medium text-zinc-600 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-white"
253
- >
254
- Docs
255
- </Link>
256
- <a
257
- href="https://github.com/devxoul/agent-messenger"
258
- target="_blank"
259
- rel="noopener noreferrer"
260
- className="text-sm font-medium text-zinc-600 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-white"
261
- >
262
- GitHub
263
- </a>
264
- <ThemeToggle />
265
- </nav>
344
+ <div
345
+ className="overflow-hidden rounded-xl border border-zinc-200 bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-950"
346
+ onMouseEnter={() => setPaused(true)}
347
+ onMouseLeave={() => setPaused(false)}
348
+ >
349
+ <div className="border-b border-zinc-200 bg-zinc-100 dark:border-zinc-800 dark:bg-zinc-900">
350
+ <div className="flex items-center justify-between px-4 py-3">
351
+ <div className="flex gap-2">
352
+ <span className="size-3 rounded-full bg-zinc-300 dark:bg-zinc-700" />
353
+ <span className="size-3 rounded-full bg-zinc-300 dark:bg-zinc-700" />
354
+ <span className="size-3 rounded-full bg-zinc-300 dark:bg-zinc-700" />
355
+ </div>
356
+ <span className="font-mono text-xs text-zinc-400 dark:text-zinc-500">agent-messenger</span>
357
+ <CopyButton text={demo.commands.filter((c) => 'cmd' in c).map((c) => c.cmd).join('\n')} />
266
358
  </div>
267
- </header>
268
-
269
- <section className="flex flex-col items-center justify-center px-6 pt-24 pb-20 text-center">
270
- <div className="mb-8 inline-flex items-center gap-2 rounded-full bg-zinc-100 px-3 py-1 text-sm font-medium text-zinc-800 dark:bg-zinc-800 dark:text-zinc-200">
271
- <span className="relative flex h-2 w-2">
272
- <span className="absolute inline-flex h-full w-full animate-ping rounded-full bg-green-400 opacity-75"></span>
273
- <span className="relative inline-flex h-2 w-2 rounded-full bg-green-500"></span>
274
- </span>
275
- {npmVersion ? `v${npmVersion} Available Now` : 'Available Now'}
359
+ <div className="flex gap-0 overflow-x-auto px-2">
360
+ {TERMINAL_DEMOS.map((d, i) => (
361
+ <button
362
+ key={d.platform}
363
+ type="button"
364
+ onClick={() => { setActive(i); setPaused(true) }}
365
+ className={`whitespace-nowrap px-3 py-2 font-mono text-xs transition-colors duration-200 ${
366
+ i === active
367
+ ? 'border-b-2 border-blue-500 text-zinc-800 dark:text-zinc-200'
368
+ : 'border-b-2 border-transparent text-zinc-400 hover:text-zinc-600 dark:text-zinc-600 dark:hover:text-zinc-400'
369
+ }`}
370
+ >
371
+ {d.platform}
372
+ </button>
373
+ ))}
276
374
  </div>
277
- <h1 className="max-w-4xl text-5xl font-extrabold tracking-tight text-zinc-900 sm:text-6xl md:text-7xl dark:text-white">
278
- Give your AI agent the power to <br className="hidden sm:block" />
279
- <span className="bg-gradient-to-r from-blue-600 to-indigo-600 bg-clip-text text-transparent dark:from-blue-400 dark:to-indigo-400">
280
- read and send messages
281
- </span>
282
- </h1>
283
- <p className="mt-6 max-w-2xl text-lg text-zinc-600 sm:text-xl dark:text-zinc-400">
284
- A unified, agent-friendly CLI for messaging platforms. Zero-config credential extraction. No OAuth flows. No
285
- API keys. Works out of the box.
286
- </p>
287
- <div className="mt-10 flex flex-col gap-4 sm:flex-row">
375
+ </div>
376
+
377
+ <pre className="overflow-x-auto p-5 font-mono text-sm leading-relaxed">
378
+ <code>
379
+ {demo.commands.map((line, i) => (
380
+ <span key={`${demo.platform}-${i}`}>
381
+ {'cmd' in line ? (
382
+ <>
383
+ <span className="text-zinc-400 dark:text-zinc-500">{line.prompt}</span>
384
+ <span className="text-zinc-800 dark:text-zinc-100">{line.cmd}</span>
385
+ </>
386
+ ) : (
387
+ <>
388
+ <span className="text-zinc-400 dark:text-zinc-500">{' '}</span>
389
+ <span className="text-emerald-600 dark:text-emerald-400">{line.output}</span>
390
+ </>
391
+ )}
392
+ {i < demo.commands.length - 1 ? '\n' : ''}
393
+ </span>
394
+ ))}
395
+ </code>
396
+ </pre>
397
+ </div>
398
+ )
399
+ }
400
+
401
+ // ============================================================
402
+ // Data
403
+ // ============================================================
404
+
405
+ const FEATURES = [
406
+ {
407
+ icon: <ShieldIcon className="size-5" />,
408
+ title: 'Auto-Extract Auth',
409
+ description: 'Reads tokens from Slack, Discord, Teams, KakaoTalk, and Channel Talk desktop apps. Telegram and WhatsApp authenticate with a one-time code — still under a minute.',
410
+ },
411
+ {
412
+ icon: <UserIcon className="size-5" />,
413
+ title: 'Act As Yourself',
414
+ description: 'Extracts your user session — not a bot token. Your agent sends messages, reacts, and searches as you. Need bot mode? Bot CLIs are included too.',
415
+ },
416
+ {
417
+ icon: <TerminalIcon className="size-5" />,
418
+ title: 'One Interface',
419
+ description: 'Same command patterns across 7 platforms: message send, message search, channel list, snapshot. Learn once.',
420
+ },
421
+ {
422
+ icon: <CpuIcon className="size-5" />,
423
+ title: 'Agent-Native Output',
424
+ description: 'JSON by default for LLM tool use. --pretty for human-readable. Structured output your agent can parse and act on.',
425
+ },
426
+ {
427
+ icon: <ZapIcon className="size-5" />,
428
+ title: 'Token Efficient',
429
+ description: 'CLI, not MCP. One skill file, one shell command per action. No server to run, no tool registration.',
430
+ },
431
+ {
432
+ icon: <DatabaseIcon className="size-5" />,
433
+ title: 'Persistent Memory',
434
+ description: 'Stores workspace IDs, channel mappings, and preferences in ~/.config so your agent never asks twice.',
435
+ },
436
+ ]
437
+
438
+ const TERMINAL_DEMOS = [
439
+ {
440
+ platform: 'Slack',
441
+ commands: [
442
+ { prompt: '$ ', cmd: 'agent-slack message search "deployment rollback"' },
443
+ { output: '✓ 7 messages found in #incidents' },
444
+ { prompt: '$ ', cmd: 'agent-slack message replies incidents 1711234567.123456' },
445
+ { output: '✓ 14 replies loaded' },
446
+ { prompt: '$ ', cmd: 'agent-slack message send incidents "Postmortem draft ready"' },
447
+ { output: '✓ Message sent to #incidents' },
448
+ ],
449
+ },
450
+ {
451
+ platform: 'Discord',
452
+ commands: [
453
+ { prompt: '$ ', cmd: 'agent-discord snapshot' },
454
+ { output: '✓ 12 channels, 48 members, recent activity captured' },
455
+ { prompt: '$ ', cmd: 'agent-discord message search "API redesign"' },
456
+ { output: '✓ Found 8 messages' },
457
+ { prompt: '$ ', cmd: 'agent-discord message send 1098765432 "Summary posted"' },
458
+ { output: '✓ Message sent' },
459
+ ],
460
+ },
461
+ {
462
+ platform: 'Teams',
463
+ commands: [
464
+ { prompt: '$ ', cmd: 'agent-teams channel list 19:abc' },
465
+ { output: '✓ 8 channels in Engineering team' },
466
+ { prompt: '$ ', cmd: 'agent-teams message list 19:abc 19:general --limit 5' },
467
+ { output: '✓ 5 messages loaded' },
468
+ { prompt: '$ ', cmd: 'agent-teams message send 19:abc 19:general "Standup notes"' },
469
+ { output: '✓ Message sent' },
470
+ ],
471
+ },
472
+ {
473
+ platform: 'Telegram',
474
+ commands: [
475
+ { prompt: '$ ', cmd: 'agent-telegram chat search "engineering"' },
476
+ { output: '✓ 3 matching chats found' },
477
+ { prompt: '$ ', cmd: 'agent-telegram message list 12345 --limit 10' },
478
+ { output: '✓ 10 messages loaded' },
479
+ { prompt: '$ ', cmd: 'agent-telegram message send 12345 "CI green, merging now"' },
480
+ { output: '✓ Message sent' },
481
+ ],
482
+ },
483
+ {
484
+ platform: 'WhatsApp',
485
+ commands: [
486
+ { prompt: '$ ', cmd: 'agent-whatsapp chat list --limit 5' },
487
+ { output: '✓ 5 recent chats loaded' },
488
+ { prompt: '$ ', cmd: 'agent-whatsapp message list 1234@s.whatsapp.net' },
489
+ { output: '✓ 10 messages loaded' },
490
+ { prompt: '$ ', cmd: 'agent-whatsapp message react 1234@s.whatsapp.net msg123 👍' },
491
+ { output: '✓ Reaction added' },
492
+ ],
493
+ },
494
+ {
495
+ platform: 'KakaoTalk',
496
+ commands: [
497
+ { prompt: '$ ', cmd: 'agent-kakaotalk chat list' },
498
+ { output: '✓ 12 chat rooms loaded' },
499
+ { prompt: '$ ', cmd: 'agent-kakaotalk message list 9876543210 -n 10' },
500
+ { output: '✓ 10 messages loaded' },
501
+ { prompt: '$ ', cmd: 'agent-kakaotalk message send 9876543210 "Build passed, deploying now"' },
502
+ { output: '✓ Message sent' },
503
+ ],
504
+ },
505
+ {
506
+ platform: 'Channel Talk',
507
+ commands: [
508
+ { prompt: '$ ', cmd: 'agent-channeltalk message search "billing issue"' },
509
+ { output: '✓ 4 messages found across 2 chats' },
510
+ { prompt: '$ ', cmd: 'agent-channeltalk message list user-chat 6812abc' },
511
+ { output: '✓ 15 messages loaded' },
512
+ { prompt: '$ ', cmd: 'agent-channeltalk message send user-chat 6812abc "Refund processed"' },
513
+ { output: '✓ Message sent' },
514
+ ],
515
+ },
516
+ ]
517
+
518
+ const PLATFORMS = [
519
+ { name: 'Slack', href: '/docs/cli/slack', Icon: SlackIcon, color: '#4A154B', glowColor: 'rgba(74,21,75,0.4)' },
520
+ { name: 'Discord', href: '/docs/cli/discord', Icon: DiscordIcon, color: '#5865F2', glowColor: 'rgba(88,101,242,0.4)' },
521
+ { name: 'Teams', href: '/docs/cli/teams', Icon: TeamsIcon, color: '#6264A7', glowColor: 'rgba(98,100,167,0.4)' },
522
+ { name: 'Telegram', href: '/docs/cli/telegram', Icon: TelegramIcon, color: '#2AABEE', glowColor: 'rgba(42,171,238,0.4)' },
523
+ { name: 'WhatsApp', href: '/docs/cli/whatsapp', Icon: WhatsAppIcon, color: '#25D366', glowColor: 'rgba(37,211,102,0.4)' },
524
+ { name: 'LINE', href: '/docs/cli/line', Icon: LineIcon, color: '#06C755', glowColor: 'rgba(6,199,85,0.4)' },
525
+ { name: 'Instagram', href: '/docs/cli/instagram', Icon: InstagramIcon, color: '#E4405F', glowColor: 'rgba(228,64,95,0.4)' },
526
+ { name: 'KakaoTalk', href: '/docs/cli/kakaotalk', Icon: KakaoTalkIcon, color: '#FEE500', glowColor: 'rgba(254,229,0,0.4)' },
527
+ { name: 'Channel Talk', href: '/docs/cli/channeltalk', Icon: ChannelTalkIcon, color: '#3B3FE4', glowColor: 'rgba(59,63,228,0.4)' },
528
+ ]
529
+
530
+ const HOW_IT_WORKS = [
531
+ {
532
+ step: 1,
533
+ title: 'Install',
534
+ code: 'npm install -g agent-messenger',
535
+ description: 'Installs agent-slack, agent-discord, agent-teams, agent-telegram, agent-whatsapp, agent-line, agent-instagram, agent-kakaotalk, agent-channeltalk, plus bot variants.',
536
+ },
537
+ {
538
+ step: 2,
539
+ title: 'Run',
540
+ code: 'agent-slack snapshot --pretty',
541
+ description: 'Slack, Discord, Teams, KakaoTalk, and Channel Talk tokens are read from your desktop app automatically. Telegram and WhatsApp authenticate with a one-time code.',
542
+ },
543
+ {
544
+ step: 3,
545
+ title: 'Teach Your Agent',
546
+ code: 'npx skills add devxoul/agent-messenger',
547
+ description: 'Install Agent Skills via Skills CLI, Claude Code, OpenCode, or SkillPad — your agent learns every command and starts messaging on its own.',
548
+ },
549
+ ]
550
+
551
+ const USE_CASES = [
552
+ 'Read the #incident-api-outage thread in Slack and write a postmortem draft',
553
+ 'Post the deployment changelog to #releases in Slack and #announcements in Discord',
554
+ 'Search the Teams #design channel for the latest discussion about the new onboarding flow',
555
+ 'Check my unread Slack messages right now and draft replies for anything urgent',
556
+ 'Look up who reacted to my last message in #general on Discord and what they said after',
557
+ 'Summarize today\'s WhatsApp group chat and send the summary to #standup in Slack',
558
+ ]
559
+
560
+ const CAPABILITIES: {
561
+ feature: string
562
+ slack: boolean
563
+ discord: boolean
564
+ teams: boolean
565
+ telegram: boolean
566
+ whatsapp: boolean
567
+ line: boolean
568
+ instagram: boolean
569
+ kakaotalk: boolean
570
+ channeltalk: boolean
571
+ }[] = [
572
+ { feature: 'Zero-config credentials', slack: true, discord: true, teams: true, telegram: false, whatsapp: false, line: false, instagram: false, kakaotalk: true, channeltalk: true },
573
+ { feature: 'Send & list messages', slack: true, discord: true, teams: true, telegram: true, whatsapp: true, line: true, instagram: true, kakaotalk: true, channeltalk: true },
574
+ { feature: 'Search messages', slack: true, discord: true, teams: false, telegram: false, whatsapp: true, line: false, instagram: true, kakaotalk: false, channeltalk: true },
575
+ { feature: 'Threads', slack: true, discord: true, teams: false, telegram: false, whatsapp: false, line: false, instagram: false, kakaotalk: false, channeltalk: false },
576
+ { feature: 'Reactions', slack: true, discord: true, teams: true, telegram: false, whatsapp: true, line: false, instagram: false, kakaotalk: false, channeltalk: false },
577
+ { feature: 'File upload & download', slack: true, discord: true, teams: true, telegram: false, whatsapp: false, line: false, instagram: false, kakaotalk: false, channeltalk: false },
578
+ { feature: 'Workspace snapshot', slack: true, discord: true, teams: true, telegram: false, whatsapp: false, line: false, instagram: false, kakaotalk: false, channeltalk: true },
579
+ { feature: 'Multi-account', slack: true, discord: true, teams: true, telegram: true, whatsapp: true, line: true, instagram: true, kakaotalk: false, channeltalk: true },
580
+ { feature: 'Bot CLI available', slack: true, discord: true, teams: false, telegram: false, whatsapp: true, line: false, instagram: false, kakaotalk: false, channeltalk: true },
581
+ { feature: 'Real-time events (SDK)', slack: true, discord: false, teams: false, telegram: false, whatsapp: false, line: true, instagram: true, kakaotalk: false, channeltalk: false },
582
+ ]
583
+
584
+ const PLATFORM_COLUMNS = ['Slack', 'Discord', 'Teams', 'Telegram', 'WhatsApp', 'LINE', 'Instagram', 'KakaoTalk', 'Ch. Talk'] as const
585
+ const PLATFORM_KEYS = ['slack', 'discord', 'teams', 'telegram', 'whatsapp', 'line', 'instagram', 'kakaotalk', 'channeltalk'] as const
586
+
587
+
588
+
589
+ // ============================================================
590
+ // Page Component
591
+ // ============================================================
592
+
593
+ export default function Home() {
594
+ return (
595
+ <div className="min-h-screen bg-white text-zinc-900 dark:bg-zinc-950 dark:text-zinc-100">
596
+
597
+ {/* ================================================================
598
+ AMBIENT GLOW BACKGROUND
599
+ ================================================================ */}
600
+ <div className="pointer-events-none fixed inset-0 overflow-hidden">
601
+ <div className="absolute -top-[20%] left-1/2 h-[900px] w-[900px] -translate-x-1/2 rounded-full bg-[radial-gradient(circle,rgba(139,92,246,0.15)_0%,rgba(59,130,246,0.08)_40%,transparent_70%)] opacity-[0.03] dark:opacity-[0.08]" />
602
+ <div className="absolute -bottom-[10%] -right-[5%] h-[600px] w-[600px] rounded-full bg-[radial-gradient(circle,rgba(59,130,246,0.5)_0%,transparent_60%)] opacity-[0.02] dark:opacity-[0.05]" />
603
+ </div>
604
+
605
+ {/* ================================================================
606
+ 1. HEADER / NAV (Glass)
607
+ ================================================================ */}
608
+ <nav className="fixed inset-x-0 top-0 z-50 flex h-16 items-center justify-between border-b border-zinc-200/40 bg-white/80 px-4 backdrop-blur-xl sm:px-6 dark:border-white/[0.06] dark:bg-zinc-950/80">
609
+ <Link href="/" className="font-mono text-sm font-semibold tracking-wide text-zinc-900 dark:text-zinc-100">
610
+ agent-messenger
611
+ </Link>
612
+ <div className="flex items-center gap-1 sm:gap-2">
288
613
  <Link
289
614
  href="/docs"
290
- className="inline-flex items-center justify-center rounded-lg bg-black px-8 py-3 text-base font-semibold text-white transition-all hover:scale-105 hover:bg-zinc-800 active:scale-95 dark:bg-white dark:text-black dark:hover:bg-zinc-200"
615
+ className="rounded-lg px-3 py-2 font-mono text-xs text-zinc-500 transition-colors hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-100"
291
616
  >
292
- Get Started
617
+ docs
293
618
  </Link>
294
619
  <a
295
620
  href="https://github.com/devxoul/agent-messenger"
296
621
  target="_blank"
297
622
  rel="noopener noreferrer"
298
- className="inline-flex items-center justify-center rounded-lg border border-zinc-200 bg-white px-8 py-3 text-base font-medium text-zinc-900 transition-all hover:border-zinc-300 hover:bg-zinc-50 dark:border-zinc-800 dark:bg-zinc-900 dark:text-white dark:hover:bg-zinc-800"
623
+ className="rounded-lg px-3 py-2 font-mono text-xs text-zinc-500 transition-colors hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-100"
299
624
  >
300
- View on GitHub
625
+ github
301
626
  </a>
627
+ <ThemeToggle />
628
+ </div>
629
+ </nav>
630
+
631
+ {/* ================================================================
632
+ 2. HERO (Gradient text + glass CTAs)
633
+ ================================================================ */}
634
+ <section className="relative z-10 px-4 pt-36 pb-20 sm:px-6 sm:pt-44 sm:pb-24">
635
+ <div className="mx-auto max-w-4xl text-center">
636
+ {/* Badge */}
637
+ <div className="inline-flex items-center gap-2 rounded-full border border-zinc-200/40 bg-zinc-50/80 px-4 py-1.5 font-mono text-xs tracking-wide text-zinc-600 backdrop-blur-sm dark:border-white/[0.06] dark:bg-white/[0.03] dark:text-zinc-400">
638
+ <span className="size-2 animate-pulse rounded-full bg-emerald-500" />
639
+ open source
640
+ </div>
641
+
642
+ {/* Headline with gradient text */}
643
+ <h1 className="mt-8 text-4xl font-bold tracking-tight sm:text-5xl lg:text-6xl">
644
+ <span className="bg-gradient-to-br from-zinc-900 to-zinc-500 bg-clip-text text-transparent dark:from-white dark:to-zinc-400">
645
+ Your agent messages as you — not as a bot
646
+ </span>
647
+ </h1>
648
+
649
+ {/* Subtitle */}
650
+ <p className="mx-auto mt-6 max-w-2xl text-lg leading-relaxed text-zinc-600 dark:text-zinc-400">
651
+ One CLI for Slack, Discord, Teams, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, and Channel Talk.
652
+ Credentials extracted from desktop apps or authenticated in seconds — no API keys, no OAuth, no admin approval.
653
+ </p>
654
+
655
+ {/* CTAs with glass treatment in dark mode */}
656
+ <div className="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row">
657
+ <Link
658
+ href="/docs"
659
+ className="inline-flex items-center justify-center rounded-xl bg-zinc-900 px-6 py-3 text-sm font-medium text-white transition-all duration-300 hover:bg-zinc-800 dark:border dark:border-white/15 dark:bg-white/10 dark:backdrop-blur-xl dark:hover:bg-white/15 dark:hover:shadow-[0_0_30px_-5px_rgba(139,92,246,0.2)]"
660
+ >
661
+ Get Started
662
+ </Link>
663
+ <a
664
+ href="https://github.com/devxoul/agent-messenger"
665
+ target="_blank"
666
+ rel="noopener noreferrer"
667
+ className="inline-flex items-center justify-center rounded-xl border border-zinc-300 px-6 py-3 text-sm font-medium text-zinc-700 transition-all duration-300 hover:bg-zinc-50 dark:border-white/[0.06] dark:text-zinc-300 dark:hover:border-white/15 dark:hover:bg-white/[0.05]"
668
+ >
669
+ View on GitHub
670
+ </a>
671
+ </div>
672
+
673
+ <div className="mx-auto mt-14 max-w-2xl text-left">
674
+ <PlatformTerminal />
675
+ </div>
302
676
  </div>
303
677
  </section>
304
678
 
305
- <section className="px-6 py-12 sm:py-20">
306
- <div className="mx-auto max-w-7xl">
307
- <div className="grid gap-8 sm:grid-cols-2 lg:grid-cols-4">
308
- <div className="group rounded-2xl border border-zinc-200 bg-white p-8 shadow-sm transition-all hover:border-zinc-300 hover:shadow-md dark:border-zinc-800 dark:bg-zinc-900/50 dark:hover:border-zinc-700">
309
- <div className="mb-4 inline-flex rounded-xl bg-blue-100 p-3 text-blue-600 dark:bg-blue-900/30 dark:text-blue-400">
310
- <KeyIcon className="h-6 w-6" />
311
- </div>
312
- <h3 className="mb-2 text-lg font-semibold text-zinc-900 dark:text-white">No API keys needed</h3>
313
- <p className="text-zinc-600 dark:text-zinc-400">
314
- Automatically extracts credentials from your installed desktop apps.
315
- </p>
316
- </div>
317
- <div className="group rounded-2xl border border-zinc-200 bg-white p-8 shadow-sm transition-all hover:border-zinc-300 hover:shadow-md dark:border-zinc-800 dark:bg-zinc-900/50 dark:hover:border-zinc-700">
318
- <div className="mb-4 inline-flex rounded-xl bg-purple-100 p-3 text-purple-600 dark:bg-purple-900/30 dark:text-purple-400">
319
- <GlobeIcon className="h-6 w-6" />
679
+ {/* ================================================================
680
+ 3. TRUST / PLATFORM BAR (Platform pills with brand glow)
681
+ ================================================================ */}
682
+ <section className="relative z-10 border-y border-zinc-100/50 px-4 py-16 sm:px-6 dark:border-white/[0.04]">
683
+ <div className="mx-auto max-w-5xl text-center">
684
+ <p className="font-mono text-xs uppercase tracking-widest text-zinc-400 dark:text-zinc-600">
685
+ Works with the platforms your team already uses
686
+ </p>
687
+ <div className="mt-8 flex flex-wrap items-center justify-center gap-3">
688
+ {PLATFORMS.map((p) => (
689
+ <Link
690
+ key={p.name}
691
+ href={p.href}
692
+ className="group relative flex items-center gap-3 rounded-full border border-zinc-200/40 bg-white/70 px-5 py-3 backdrop-blur-xl transition-all duration-300 hover:border-zinc-300/60 dark:border-white/[0.06] dark:bg-white/[0.04] dark:hover:border-white/15"
693
+ >
694
+ {/* Brand glow on hover */}
695
+ <div
696
+ className="absolute inset-0 -z-10 rounded-full opacity-0 transition-opacity duration-300 group-hover:opacity-100"
697
+ style={{ boxShadow: `0 0 40px -10px ${p.glowColor}` }}
698
+ />
699
+ <div className="size-6">
700
+ <p.Icon />
701
+ </div>
702
+ <span className="font-mono text-xs font-medium text-zinc-600 transition-colors duration-300 group-hover:text-zinc-900 dark:text-zinc-400 dark:group-hover:text-zinc-200">
703
+ {p.name}
704
+ </span>
705
+ </Link>
706
+ ))}
707
+ </div>
708
+ </div>
709
+ </section>
710
+
711
+ {/* ================================================================
712
+ 4. WHY AGENT MESSENGER? (Glass cards)
713
+ ================================================================ */}
714
+ <section className="relative z-10 px-4 py-20 sm:px-6 sm:py-24">
715
+ <div className="mx-auto max-w-5xl">
716
+ <div className="text-center">
717
+ <p className="font-mono text-xs font-medium uppercase tracking-widest text-blue-600 dark:text-blue-400">Why Agent Messenger?</p>
718
+ <h2 className="mt-3 text-3xl font-bold tracking-tight sm:text-4xl">
719
+ You shouldn&apos;t need a bot token to send a message
720
+ </h2>
721
+ </div>
722
+
723
+ <div className="mt-14 grid grid-cols-1 gap-6 md:grid-cols-2">
724
+ {/* The Problem */}
725
+ <div className="rounded-2xl border border-zinc-200/40 bg-white/60 p-8 backdrop-blur-xl transition-all duration-300 hover:border-zinc-300/60 hover:shadow-lg dark:border-white/[0.06] dark:bg-white/[0.03] dark:hover:border-white/15 dark:hover:shadow-[0_0_40px_-15px_rgba(139,92,246,0.15)]">
726
+ <div className="mb-4 inline-flex items-center gap-2 rounded-full bg-red-50 px-3 py-1 font-mono text-xs font-medium uppercase tracking-wider text-red-600 dark:bg-red-950/50 dark:text-red-400">
727
+ <span className="size-1.5 rounded-full bg-red-500" />
728
+ Problem
320
729
  </div>
321
- <h3 className="mb-2 text-lg font-semibold text-zinc-900 dark:text-white">One interface</h3>
322
- <p className="text-zinc-600 dark:text-zinc-400">
323
- Learn once, use everywhere. Unified commands for Slack, Discord, and Teams.
730
+ <p className="leading-relaxed text-zinc-600 dark:text-zinc-400">
731
+ Every platform gates API access behind OAuth apps that need admin approval — days of waiting just to send a message.
732
+ And even then, your agent is a <strong className="text-zinc-900 dark:text-zinc-100">bot</strong>, not you. Different name, different permissions, different context.
324
733
  </p>
325
734
  </div>
326
- <div className="group rounded-2xl border border-zinc-200 bg-white p-8 shadow-sm transition-all hover:border-zinc-300 hover:shadow-md dark:border-zinc-800 dark:bg-zinc-900/50 dark:hover:border-zinc-700">
327
- <div className="mb-4 inline-flex rounded-xl bg-green-100 p-3 text-green-600 dark:bg-green-900/30 dark:text-green-400">
328
- <BotIcon className="h-6 w-6" />
735
+
736
+ {/* The Solution */}
737
+ <div className="rounded-2xl border border-zinc-200/40 bg-white/60 p-8 backdrop-blur-xl transition-all duration-300 hover:border-zinc-300/60 hover:shadow-lg dark:border-white/[0.06] dark:bg-white/[0.03] dark:hover:border-white/15 dark:hover:shadow-[0_0_40px_-15px_rgba(139,92,246,0.15)]">
738
+ <div className="mb-4 inline-flex items-center gap-2 rounded-full bg-emerald-50 px-3 py-1 font-mono text-xs font-medium uppercase tracking-wider text-emerald-600 dark:bg-emerald-950/50 dark:text-emerald-400">
739
+ <span className="size-1.5 rounded-full bg-emerald-500" />
740
+ Solution
329
741
  </div>
330
- <h3 className="mb-2 text-lg font-semibold text-zinc-900 dark:text-white">AI-agent friendly</h3>
331
- <p className="text-zinc-600 dark:text-zinc-400">
332
- JSON output by default. Perfect for LLM tool use and automation.
742
+ <p className="leading-relaxed text-zinc-600 dark:text-zinc-400">
743
+ Agent Messenger reads session tokens from your Slack, Discord, Teams, or KakaoTalk desktop app — zero config.
744
+ Telegram, WhatsApp, LINE, and Instagram authenticate with a one-time code or credentials.
745
+ Either way, your agent operates <strong className="text-zinc-900 dark:text-zinc-100">as you</strong> — same name, same permissions, same context.
333
746
  </p>
334
747
  </div>
335
- <div className="group rounded-2xl border border-zinc-200 bg-white p-8 shadow-sm transition-all hover:border-zinc-300 hover:shadow-md dark:border-zinc-800 dark:bg-zinc-900/50 dark:hover:border-zinc-700">
336
- <div className="mb-4 inline-flex rounded-xl bg-amber-100 p-3 text-amber-600 dark:bg-amber-900/30 dark:text-amber-400">
337
- <ZapIcon className="h-6 w-6" />
748
+ </div>
749
+
750
+ <p className="mt-6 text-center text-sm text-zinc-400 dark:text-zinc-600">
751
+ Credentials are stored locally in ~/.config/agent-messenger/ with restricted permissions. Nothing is sent to third-party servers.
752
+ </p>
753
+ </div>
754
+ </section>
755
+
756
+ {/* ================================================================
757
+ 5. FEATURES GRID (Glass cards with hover glow)
758
+ ================================================================ */}
759
+ <section className="relative z-10 border-t border-zinc-100/50 px-4 py-20 sm:px-6 sm:py-24 dark:border-white/[0.04]">
760
+ <div className="mx-auto max-w-5xl">
761
+ <div className="text-center">
762
+ <p className="font-mono text-xs font-medium uppercase tracking-widest text-blue-600 dark:text-blue-400">Features</p>
763
+ <h2 className="mt-3 text-3xl font-bold tracking-tight sm:text-4xl">
764
+ Built for agents, not humans
765
+ </h2>
766
+ </div>
767
+
768
+ <div className="mt-14 grid grid-cols-1 gap-4 sm:grid-cols-2 sm:gap-6 lg:grid-cols-3">
769
+ {FEATURES.map((f) => (
770
+ <div
771
+ key={f.title}
772
+ className="group rounded-2xl border border-zinc-200/40 bg-white/60 p-6 backdrop-blur-xl transition-all duration-300 hover:border-zinc-300/60 hover:shadow-lg dark:border-white/[0.06] dark:bg-white/[0.03] dark:hover:border-white/15 dark:hover:shadow-[0_0_40px_-15px_rgba(139,92,246,0.15)]"
773
+ >
774
+ <div className="flex size-10 items-center justify-center rounded-xl bg-blue-50 text-blue-600 transition-colors duration-300 dark:bg-blue-950/50 dark:text-blue-400">
775
+ {f.icon}
776
+ </div>
777
+ <h3 className="mt-4 font-mono text-sm font-semibold text-zinc-900 dark:text-zinc-100">{f.title}</h3>
778
+ <p className="mt-2 text-sm leading-relaxed text-zinc-600 dark:text-zinc-400">{f.description}</p>
338
779
  </div>
339
- <h3 className="mb-2 text-lg font-semibold text-zinc-900 dark:text-white">Token efficient</h3>
340
- <p className="text-zinc-600 dark:text-zinc-400">
341
- CLI approach, not MCP. Load only what you need to keep context small.
342
- </p>
780
+ ))}
781
+ </div>
782
+ </div>
783
+ </section>
784
+
785
+ {/* ================================================================
786
+ 6. HOW IT WORKS (Vertical timeline with glass nodes + cards)
787
+ ================================================================ */}
788
+ <section className="relative z-10 border-t border-zinc-100/50 px-4 py-20 sm:px-6 sm:py-24 dark:border-white/[0.04]">
789
+ <div className="mx-auto max-w-3xl">
790
+ <div className="text-center">
791
+ <p className="font-mono text-xs font-medium uppercase tracking-widest text-blue-600 dark:text-blue-400">How It Works</p>
792
+ <h2 className="mt-3 text-3xl font-bold tracking-tight sm:text-4xl">
793
+ Running in under a minute
794
+ </h2>
795
+ </div>
796
+
797
+ {/* Vertical Timeline */}
798
+ <div className="relative mt-14">
799
+ {/* Gradient Timeline Line */}
800
+ <div className="absolute left-[27px] top-8 bottom-8 w-px bg-gradient-to-b from-violet-300/50 via-blue-300/30 to-transparent dark:from-violet-500/30 dark:via-blue-500/20 dark:to-transparent" />
801
+
802
+ <div className="space-y-8">
803
+ {HOW_IT_WORKS.map((step) => (
804
+ <div key={step.step} className="relative flex gap-6">
805
+ {/* Numbered Node */}
806
+ <div className="relative z-10 flex-shrink-0">
807
+ <div className="flex size-[54px] items-center justify-center rounded-2xl border border-zinc-200/60 bg-white font-mono text-xs font-bold text-zinc-400 shadow-sm backdrop-blur-xl transition-all duration-300 dark:border-white/10 dark:bg-white/[0.05] dark:text-white/50 dark:shadow-none">
808
+ {String(step.step).padStart(2, '0')}
809
+ </div>
810
+ </div>
811
+
812
+ {/* Content Card */}
813
+ <div className="flex-1 rounded-2xl border border-zinc-200/40 bg-white/60 p-5 backdrop-blur-xl transition-all duration-300 hover:border-zinc-300/60 dark:border-white/[0.06] dark:bg-white/[0.03] dark:hover:border-white/15">
814
+ <h3 className="text-base font-semibold text-zinc-900 dark:text-zinc-100">
815
+ {step.title}
816
+ </h3>
817
+ <p className="mt-1 text-sm text-zinc-500 dark:text-zinc-400">
818
+ {step.description}
819
+ </p>
820
+ <code className="mt-3 inline-block rounded-lg border border-zinc-100 bg-zinc-50 px-3 py-1.5 font-mono text-xs text-blue-600 dark:border-white/[0.04] dark:bg-white/[0.04] dark:text-blue-400">
821
+ {step.code}
822
+ </code>
823
+ </div>
824
+ </div>
825
+ ))}
343
826
  </div>
344
827
  </div>
345
828
  </div>
346
829
  </section>
347
830
 
348
- <section className="bg-zinc-100 px-6 py-20 dark:bg-zinc-900">
831
+ {/* ================================================================
832
+ 7. USE CASES (Quote blocks with glass background)
833
+ ================================================================ */}
834
+ <section className="relative z-10 border-t border-zinc-100/50 px-4 py-20 sm:px-6 sm:py-24 dark:border-white/[0.04]">
349
835
  <div className="mx-auto max-w-5xl">
350
- <div className="mb-12 text-center">
351
- <h2 className="text-3xl font-bold text-zinc-900 sm:text-4xl dark:text-white">
352
- Get up and running in 30 seconds
836
+ <div className="text-center">
837
+ <p className="font-mono text-xs font-medium uppercase tracking-widest text-blue-600 dark:text-blue-400">Use Cases</p>
838
+ <h2 className="mt-3 text-3xl font-bold tracking-tight sm:text-4xl">
839
+ What agents build with this
840
+ </h2>
841
+ </div>
842
+
843
+ <div className="mt-14 grid grid-cols-1 gap-4 md:grid-cols-2">
844
+ {USE_CASES.map((uc) => (
845
+ <div
846
+ key={uc}
847
+ className="rounded-r-xl border-l-4 border-blue-500 bg-white/60 px-5 py-4 backdrop-blur-xl transition-all duration-300 dark:bg-white/[0.02]"
848
+ >
849
+ <p className="text-sm leading-relaxed text-zinc-600 italic dark:text-zinc-400">
850
+ &ldquo;{uc}&rdquo;
851
+ </p>
852
+ </div>
853
+ ))}
854
+ </div>
855
+ </div>
856
+ </section>
857
+
858
+ {/* ================================================================
859
+ 8. WHY CLI, NOT MCP? (Glass comparison cards)
860
+ ================================================================ */}
861
+ <section className="relative z-10 border-t border-zinc-100/50 px-4 py-20 sm:px-6 sm:py-24 dark:border-white/[0.04]">
862
+ <div className="mx-auto max-w-4xl">
863
+ <div className="text-center">
864
+ <p className="font-mono text-xs font-medium uppercase tracking-widest text-blue-600 dark:text-blue-400">Philosophy</p>
865
+ <h2 className="mt-3 text-3xl font-bold tracking-tight sm:text-4xl">
866
+ Why CLI, not MCP?
353
867
  </h2>
354
- <p className="mt-4 text-lg text-zinc-600 dark:text-zinc-400">No configuration files. No lengthy setups.</p>
355
868
  </div>
356
869
 
357
- <div className="overflow-hidden rounded-2xl border border-zinc-800 bg-zinc-950 shadow-2xl">
358
- <div className="flex items-center gap-2 border-b border-zinc-800 bg-zinc-900/50 px-4 py-3">
359
- <div className="h-3 w-3 rounded-full bg-red-500" />
360
- <div className="h-3 w-3 rounded-full bg-yellow-500" />
361
- <div className="h-3 w-3 rounded-full bg-green-500" />
362
- <span className="ml-2 text-xs font-medium text-zinc-500">bash</span>
870
+ <div className="mt-14 grid grid-cols-1 gap-6 md:grid-cols-2">
871
+ {/* MCP */}
872
+ <div className="rounded-2xl border border-zinc-200/40 bg-white/60 p-8 backdrop-blur-xl transition-all duration-300 dark:border-white/[0.06] dark:bg-white/[0.03]">
873
+ <span className="inline-block rounded-md bg-zinc-100 px-3 py-1 font-mono text-sm font-semibold text-zinc-500 dark:bg-white/[0.06] dark:text-zinc-400">
874
+ MCP
875
+ </span>
876
+ <ul className="mt-6 space-y-4">
877
+ {[
878
+ 'Requires a running server process per integration',
879
+ 'Registers all tools upfront — larger context window footprint',
880
+ 'Additional protocol layer between agent and action',
881
+ ].map((point) => (
882
+ <li key={point} className="flex items-start gap-3 text-sm text-zinc-500 dark:text-zinc-500">
883
+ <span className="mt-0.5 text-red-400 dark:text-red-500">✕</span>
884
+ {point}
885
+ </li>
886
+ ))}
887
+ </ul>
363
888
  </div>
364
- <div className="overflow-x-auto p-6 font-mono text-sm sm:p-8 sm:text-base">
365
- <pre className="text-zinc-300">
366
- <code>
367
- <span className="text-zinc-500"># 1. Extract credentials from your Slack desktop app</span>
368
- {'\n'}
369
- <span className="text-purple-400">agent-slack</span> auth extract
370
- {'\n\n'}
371
- <span className="text-zinc-500"># 2. See your workspace at a glance</span>
372
- {'\n'}
373
- <span className="text-purple-400">agent-slack</span> snapshot --pretty
374
- {'\n\n'}
375
- <span className="text-zinc-500"># 3. Send a message</span>
376
- {'\n'}
377
- <span className="text-purple-400">agent-slack</span> message send general{' '}
378
- <span className="text-green-400">&quot;Hello from the CLI!&quot;</span>
379
- </code>
380
- </pre>
889
+
890
+ {/* CLI */}
891
+ <div className="rounded-2xl border border-zinc-200/40 bg-white/60 p-8 backdrop-blur-xl transition-all duration-300 hover:border-zinc-300/60 hover:shadow-lg dark:border-white/[0.06] dark:bg-white/[0.03] dark:hover:border-white/15 dark:hover:shadow-[0_0_40px_-15px_rgba(139,92,246,0.15)]">
892
+ <span className="inline-block rounded-md bg-blue-50 px-3 py-1 font-mono text-sm font-semibold text-blue-600 dark:bg-blue-950/50 dark:text-blue-400">
893
+ Agent Skills + CLI
894
+ </span>
895
+ <ul className="mt-6 space-y-4">
896
+ {[
897
+ 'Agent learns one skill, calls one CLI command',
898
+ 'Minimal token footprint — only the tool it needs',
899
+ 'Structured JSON output, compact session references',
900
+ ].map((point) => (
901
+ <li key={point} className="flex items-start gap-3 text-sm text-zinc-700 dark:text-zinc-300">
902
+ <span className="mt-0.5 text-emerald-500">✓</span>
903
+ {point}
904
+ </li>
905
+ ))}
906
+ </ul>
381
907
  </div>
382
908
  </div>
383
909
  </div>
384
910
  </section>
385
911
 
386
- <section className="px-6 py-20">
387
- <div className="mx-auto max-w-4xl text-center">
388
- <h2 className="mb-12 text-3xl font-bold text-zinc-900 dark:text-white">Supported Platforms</h2>
389
- <div className="grid gap-8 sm:grid-cols-2 lg:grid-cols-4">
390
- <Link
391
- href="/docs/integrations/slack"
392
- className="flex flex-col items-center rounded-2xl bg-white p-8 shadow-sm ring-1 ring-zinc-200 transition-all hover:shadow-md hover:ring-zinc-300 dark:bg-zinc-900 dark:ring-zinc-800 dark:hover:ring-zinc-700"
393
- >
394
- <div className="mb-4">
395
- <SlackIcon className="h-12 w-12" />
396
- </div>
397
- <h3 className="text-xl font-bold text-zinc-900 dark:text-white">Slack</h3>
398
- <p className="mt-2 text-sm text-zinc-600 dark:text-zinc-400">Full messaging and thread support</p>
399
- </Link>
400
- <Link
401
- href="/docs/integrations/discord"
402
- className="flex flex-col items-center rounded-2xl bg-white p-8 shadow-sm ring-1 ring-zinc-200 transition-all hover:shadow-md hover:ring-zinc-300 dark:bg-zinc-900 dark:ring-zinc-800 dark:hover:ring-zinc-700"
403
- >
404
- <div className="mb-4">
405
- <DiscordIcon className="h-12 w-12" />
406
- </div>
407
- <h3 className="text-xl font-bold text-zinc-900 dark:text-white">Discord</h3>
408
- <p className="mt-2 text-sm text-zinc-600 dark:text-zinc-400">Guilds, channels, and DMs</p>
409
- </Link>
410
- <Link
411
- href="/docs/integrations/teams"
412
- className="flex flex-col items-center rounded-2xl bg-white p-8 shadow-sm ring-1 ring-zinc-200 transition-all hover:shadow-md hover:ring-zinc-300 dark:bg-zinc-900 dark:ring-zinc-800 dark:hover:ring-zinc-700"
413
- >
414
- <div className="mb-4">
415
- <TeamsIcon className="h-12 w-12" />
416
- </div>
417
- <h3 className="text-xl font-bold text-zinc-900 dark:text-white">Teams</h3>
418
- <p className="mt-2 text-sm text-zinc-600 dark:text-zinc-400">Microsoft Teams support</p>
419
- </Link>
420
- <div className="flex flex-col items-center justify-center rounded-2xl border-2 border-dashed border-zinc-300 p-8 dark:border-zinc-700">
421
- <div className="mb-4 text-zinc-400 dark:text-zinc-500">
422
- <svg
423
- xmlns="http://www.w3.org/2000/svg"
424
- viewBox="0 0 24 24"
425
- fill="none"
426
- stroke="currentColor"
427
- strokeWidth="2"
428
- strokeLinecap="round"
429
- strokeLinejoin="round"
430
- className="h-12 w-12"
431
- >
432
- <title>More platforms coming soon</title>
433
- <circle cx="12" cy="12" r="10" />
434
- <path d="M8 12h8" />
435
- <path d="M12 8v8" />
436
- </svg>
437
- </div>
438
- <h3 className="text-xl font-bold text-zinc-500 dark:text-zinc-400">More</h3>
439
- <p className="mt-2 text-sm text-zinc-500 dark:text-zinc-500">Coming soon</p>
912
+ {/* ================================================================
913
+ 9. PLATFORM FEATURE MATRIX (Glass table)
914
+ ================================================================ */}
915
+ <section className="relative z-10 border-t border-zinc-100/50 px-4 py-20 sm:px-6 sm:py-24 dark:border-white/[0.04]">
916
+ <div className="mx-auto max-w-5xl">
917
+ <div className="text-center">
918
+ <p className="font-mono text-xs font-medium uppercase tracking-widest text-blue-600 dark:text-blue-400">Compatibility</p>
919
+ <h2 className="mt-3 text-3xl font-bold tracking-tight sm:text-4xl">
920
+ Platform capabilities
921
+ </h2>
922
+ </div>
923
+
924
+ <div className="mt-14 overflow-x-auto rounded-2xl border border-zinc-200/40 bg-white/50 backdrop-blur-xl dark:border-white/[0.06] dark:bg-white/[0.02]">
925
+ <table className="w-full text-sm">
926
+ <thead>
927
+ <tr className="border-b border-zinc-200/40 dark:border-white/[0.06]">
928
+ <th className="px-4 py-3 text-left font-mono text-xs font-semibold tracking-wide text-zinc-500 uppercase dark:text-zinc-500">
929
+ Feature
930
+ </th>
931
+ {PLATFORM_COLUMNS.map((col) => (
932
+ <th
933
+ key={col}
934
+ className="px-4 py-3 text-center font-mono text-xs font-semibold tracking-wide text-zinc-500 uppercase whitespace-nowrap dark:text-zinc-500"
935
+ >
936
+ {col}
937
+ </th>
938
+ ))}
939
+ </tr>
940
+ </thead>
941
+ <tbody>
942
+ {CAPABILITIES.map((row, i) => (
943
+ <tr
944
+ key={row.feature}
945
+ className={
946
+ i % 2 === 0
947
+ ? 'bg-white/30 dark:bg-white/[0.01]'
948
+ : 'bg-zinc-50/30 dark:bg-transparent'
949
+ }
950
+ >
951
+ <td className="px-4 py-3 font-medium text-zinc-700 whitespace-nowrap dark:text-zinc-300">
952
+ {row.feature}
953
+ </td>
954
+ {PLATFORM_KEYS.map((key) => (
955
+ <td key={key} className="px-4 py-3 text-center">
956
+ {row[key] ? (
957
+ <span className="font-mono text-emerald-500">✓</span>
958
+ ) : (
959
+ <span className="text-zinc-300 dark:text-zinc-700">—</span>
960
+ )}
961
+ </td>
962
+ ))}
963
+ </tr>
964
+ ))}
965
+ </tbody>
966
+ </table>
967
+ </div>
968
+ <p className="mt-6 text-center text-sm text-zinc-500 dark:text-zinc-400">
969
+ Slack goes deepest — scheduled messages, ephemeral sends, file downloads, real-time events SDK, activity feed, drafts, saved items, reminders, pins, and bookmarks.
970
+ </p>
971
+ </div>
972
+ </section>
973
+
974
+ {/* ================================================================
975
+ 10. INSTALL CTA (Glass card with glow)
976
+ ================================================================ */}
977
+
978
+ <section className="relative z-10 border-t border-zinc-100/50 px-4 py-20 sm:px-6 sm:py-24 dark:border-white/[0.04]">
979
+ <div className="mx-auto max-w-2xl">
980
+ <div className="relative overflow-hidden rounded-3xl border border-zinc-200/40 bg-white/60 p-10 text-center backdrop-blur-xl dark:border-white/[0.08] dark:bg-white/[0.03]">
981
+ {/* Subtle CTA glow behind */}
982
+ <div className="absolute inset-0 -z-10 bg-[radial-gradient(ellipse_at_center,rgba(139,92,246,0.08)_0%,transparent_60%)] opacity-0 dark:opacity-100" />
983
+
984
+ <h2 className="text-3xl font-bold tracking-tight sm:text-4xl">
985
+ Install once. Message everywhere.
986
+ </h2>
987
+
988
+ <div className="mx-auto mt-10 max-w-lg text-left">
989
+ <TerminalBlock
990
+ copyText="npm install -g agent-messenger"
991
+ >
992
+ <span className="text-zinc-400 dark:text-zinc-500">$ </span>
993
+ <span className="text-zinc-800 dark:text-zinc-100">npm install -g agent-messenger</span>
994
+ </TerminalBlock>
995
+ </div>
996
+
997
+ <div className="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row">
998
+ <Link
999
+ href="/docs"
1000
+ className="inline-flex items-center justify-center rounded-xl bg-zinc-900 px-6 py-3 text-sm font-medium text-white transition-all duration-300 hover:bg-zinc-800 dark:border dark:border-white/15 dark:bg-white/10 dark:backdrop-blur-xl dark:hover:bg-white/15"
1001
+ >
1002
+ Read the Docs
1003
+ </Link>
1004
+ <a
1005
+ href="https://github.com/devxoul/agent-messenger"
1006
+ target="_blank"
1007
+ rel="noopener noreferrer"
1008
+ className="inline-flex items-center justify-center rounded-xl border border-zinc-300 px-6 py-3 text-sm font-medium text-zinc-700 transition-all duration-300 hover:bg-white dark:border-white/[0.06] dark:text-zinc-300 dark:hover:border-white/15 dark:hover:bg-white/[0.05]"
1009
+ >
1010
+ View on GitHub
1011
+ </a>
440
1012
  </div>
441
1013
  </div>
442
1014
  </div>
443
1015
  </section>
444
1016
 
445
- <section className="px-6 pt-10 pb-32 text-center">
446
- <div className="mx-auto max-w-3xl rounded-3xl bg-zinc-900 px-6 py-16 text-center shadow-2xl dark:bg-zinc-100">
447
- <h2 className="text-3xl font-bold text-white sm:text-4xl dark:text-black">Ready to empower your agent?</h2>
448
- <p className="mx-auto mt-4 max-w-xl text-zinc-300 dark:text-zinc-600">
449
- Start using Agent Messenger today. It&apos;s free and open source.
450
- </p>
451
- <div className="mt-8 flex justify-center gap-4">
452
- <Link
453
- href="/docs"
454
- className="rounded-lg bg-white px-8 py-3 font-semibold text-black transition-colors hover:bg-zinc-200 dark:bg-black dark:text-white dark:hover:bg-zinc-800"
455
- >
456
- Read the Docs
1017
+ {/* ================================================================
1018
+ 11. FOOTER (Glass top border)
1019
+ ================================================================ */}
1020
+ <footer className="relative z-10 border-t border-zinc-200/40 px-4 py-12 dark:border-white/[0.06]">
1021
+ <div className="mx-auto max-w-5xl text-center">
1022
+ <div className="flex items-center justify-center gap-6 font-mono text-xs text-zinc-400 dark:text-zinc-600">
1023
+ <Link href="/docs" className="transition-colors duration-300 hover:text-zinc-700 dark:hover:text-zinc-300">
1024
+ docs
457
1025
  </Link>
458
- <Link
459
- href="/docs/quick-start"
460
- className="rounded-lg border border-zinc-700 bg-transparent px-8 py-3 font-medium text-white transition-colors hover:bg-zinc-800 dark:border-zinc-300 dark:text-black dark:hover:bg-zinc-200"
1026
+ <a
1027
+ href="https://github.com/devxoul/agent-messenger"
1028
+ target="_blank"
1029
+ rel="noopener noreferrer"
1030
+ className="transition-colors duration-300 hover:text-zinc-700 dark:hover:text-zinc-300"
461
1031
  >
462
- Quick Start
463
- </Link>
1032
+ github
1033
+ </a>
1034
+ <a
1035
+ href="https://www.npmjs.com/package/agent-messenger"
1036
+ target="_blank"
1037
+ rel="noopener noreferrer"
1038
+ className="transition-colors duration-300 hover:text-zinc-700 dark:hover:text-zinc-300"
1039
+ >
1040
+ npm
1041
+ </a>
464
1042
  </div>
1043
+ <p className="mt-6 font-mono text-xs text-zinc-400 dark:text-zinc-600">
1044
+ &copy; {new Date().getFullYear()} agent-messenger · MIT
1045
+ </p>
465
1046
  </div>
466
- </section>
467
-
468
- <footer className="border-t border-zinc-200 bg-white py-12 text-center text-sm text-zinc-500 dark:border-zinc-800 dark:bg-black dark:text-zinc-400">
469
- <p>© {new Date().getFullYear()} Agent Messenger. Released under the MIT License.</p>
470
1047
  </footer>
471
1048
  </div>
472
1049
  )