@meetquinn/animactl 0.1.1-canary.21.1.cd63d38

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 (492) hide show
  1. package/README.md +13 -0
  2. package/bin/anima +14 -0
  3. package/bin/animactl +14 -0
  4. package/dist/server/activities/activity.service.d.ts +22 -0
  5. package/dist/server/activities/activity.service.d.ts.map +1 -0
  6. package/dist/server/activities/activity.service.js +49 -0
  7. package/dist/server/agents/agent-config-ops.d.ts +17 -0
  8. package/dist/server/agents/agent-config-ops.d.ts.map +1 -0
  9. package/dist/server/agents/agent-config-ops.js +209 -0
  10. package/dist/server/agents/agent-skills.d.ts +4 -0
  11. package/dist/server/agents/agent-skills.d.ts.map +1 -0
  12. package/dist/server/agents/agent-skills.js +71 -0
  13. package/dist/server/agents/agent-slack-validation.d.ts +16 -0
  14. package/dist/server/agents/agent-slack-validation.d.ts.map +1 -0
  15. package/dist/server/agents/agent-slack-validation.js +155 -0
  16. package/dist/server/agents/agent-slack.service.d.ts +26 -0
  17. package/dist/server/agents/agent-slack.service.d.ts.map +1 -0
  18. package/dist/server/agents/agent-slack.service.js +198 -0
  19. package/dist/server/agents/agent.service.d.ts +41 -0
  20. package/dist/server/agents/agent.service.d.ts.map +1 -0
  21. package/dist/server/agents/agent.service.js +149 -0
  22. package/dist/server/agents/seed-memory.d.ts +4 -0
  23. package/dist/server/agents/seed-memory.d.ts.map +1 -0
  24. package/dist/server/agents/seed-memory.js +26 -0
  25. package/dist/server/anima-home.d.ts +3 -0
  26. package/dist/server/anima-home.d.ts.map +1 -0
  27. package/dist/server/anima-home.js +28 -0
  28. package/dist/server/asks/interactive-ask.service.d.ts +54 -0
  29. package/dist/server/asks/interactive-ask.service.d.ts.map +1 -0
  30. package/dist/server/asks/interactive-ask.service.js +181 -0
  31. package/dist/server/bundled-templates.d.ts +2 -0
  32. package/dist/server/bundled-templates.d.ts.map +1 -0
  33. package/dist/server/bundled-templates.js +24 -0
  34. package/dist/server/cli/anima.d.ts +4 -0
  35. package/dist/server/cli/anima.d.ts.map +1 -0
  36. package/dist/server/cli/anima.js +33 -0
  37. package/dist/server/cli/animactl-npm.d.ts +4 -0
  38. package/dist/server/cli/animactl-npm.d.ts.map +1 -0
  39. package/dist/server/cli/animactl-npm.js +17 -0
  40. package/dist/server/cli/animactl.d.ts +4 -0
  41. package/dist/server/cli/animactl.d.ts.map +1 -0
  42. package/dist/server/cli/animactl.js +26 -0
  43. package/dist/server/cli/runtime-cli.d.ts +33 -0
  44. package/dist/server/cli/runtime-cli.d.ts.map +1 -0
  45. package/dist/server/cli/runtime-cli.js +309 -0
  46. package/dist/server/cli/service.d.ts +3 -0
  47. package/dist/server/cli/service.d.ts.map +1 -0
  48. package/dist/server/cli/service.js +35 -0
  49. package/dist/server/cli/services-cli.d.ts +3 -0
  50. package/dist/server/cli/services-cli.d.ts.map +1 -0
  51. package/dist/server/cli/services-cli.js +191 -0
  52. package/dist/server/cli/shared.d.ts +6 -0
  53. package/dist/server/cli/shared.d.ts.map +1 -0
  54. package/dist/server/cli/shared.js +6 -0
  55. package/dist/server/ids.d.ts +10 -0
  56. package/dist/server/ids.d.ts.map +1 -0
  57. package/dist/server/ids.js +16 -0
  58. package/dist/server/inbox/reminder-subscriber.d.ts +15 -0
  59. package/dist/server/inbox/reminder-subscriber.d.ts.map +1 -0
  60. package/dist/server/inbox/reminder-subscriber.js +69 -0
  61. package/dist/server/inbox/slack-events.d.ts +62 -0
  62. package/dist/server/inbox/slack-events.d.ts.map +1 -0
  63. package/dist/server/inbox/slack-events.js +84 -0
  64. package/dist/server/inbox/slack-profiles.d.ts +41 -0
  65. package/dist/server/inbox/slack-profiles.d.ts.map +1 -0
  66. package/dist/server/inbox/slack-profiles.js +119 -0
  67. package/dist/server/inbox/slack-subscriber.d.ts +23 -0
  68. package/dist/server/inbox/slack-subscriber.d.ts.map +1 -0
  69. package/dist/server/inbox/slack-subscriber.js +301 -0
  70. package/dist/server/inbox/slack-subscription.service.d.ts +74 -0
  71. package/dist/server/inbox/slack-subscription.service.d.ts.map +1 -0
  72. package/dist/server/inbox/slack-subscription.service.js +346 -0
  73. package/dist/server/inbox/subscriber.d.ts +15 -0
  74. package/dist/server/inbox/subscriber.d.ts.map +1 -0
  75. package/dist/server/inbox/subscriber.js +26 -0
  76. package/dist/server/inbox/wake-queue.service.d.ts +58 -0
  77. package/dist/server/inbox/wake-queue.service.d.ts.map +1 -0
  78. package/dist/server/inbox/wake-queue.service.js +127 -0
  79. package/dist/server/json.d.ts +8 -0
  80. package/dist/server/json.d.ts.map +1 -0
  81. package/dist/server/json.js +23 -0
  82. package/dist/server/kb/kb.helper.d.ts +28 -0
  83. package/dist/server/kb/kb.helper.d.ts.map +1 -0
  84. package/dist/server/kb/kb.helper.js +112 -0
  85. package/dist/server/kb/kb.service.d.ts +41 -0
  86. package/dist/server/kb/kb.service.d.ts.map +1 -0
  87. package/dist/server/kb/kb.service.js +282 -0
  88. package/dist/server/messages/message.projection.d.ts +8 -0
  89. package/dist/server/messages/message.projection.d.ts.map +1 -0
  90. package/dist/server/messages/message.projection.js +198 -0
  91. package/dist/server/messages/message.service.d.ts +25 -0
  92. package/dist/server/messages/message.service.d.ts.map +1 -0
  93. package/dist/server/messages/message.service.js +69 -0
  94. package/dist/server/provider-usage/http.d.ts +16 -0
  95. package/dist/server/provider-usage/http.d.ts.map +1 -0
  96. package/dist/server/provider-usage/http.js +39 -0
  97. package/dist/server/provider-usage/provider-usage.service.d.ts +19 -0
  98. package/dist/server/provider-usage/provider-usage.service.d.ts.map +1 -0
  99. package/dist/server/provider-usage/provider-usage.service.js +78 -0
  100. package/dist/server/provider-usage/providers/claude.d.ts +15 -0
  101. package/dist/server/provider-usage/providers/claude.d.ts.map +1 -0
  102. package/dist/server/provider-usage/providers/claude.js +128 -0
  103. package/dist/server/provider-usage/providers/codex.d.ts +9 -0
  104. package/dist/server/provider-usage/providers/codex.d.ts.map +1 -0
  105. package/dist/server/provider-usage/providers/codex.js +64 -0
  106. package/dist/server/provider-usage/providers/common.d.ts +16 -0
  107. package/dist/server/provider-usage/providers/common.d.ts.map +1 -0
  108. package/dist/server/provider-usage/providers/common.js +72 -0
  109. package/dist/server/provider-usage/providers/kimi.d.ts +9 -0
  110. package/dist/server/provider-usage/providers/kimi.d.ts.map +1 -0
  111. package/dist/server/provider-usage/providers/kimi.js +113 -0
  112. package/dist/server/providers/active-runtime.d.ts +9 -0
  113. package/dist/server/providers/active-runtime.d.ts.map +1 -0
  114. package/dist/server/providers/active-runtime.js +24 -0
  115. package/dist/server/providers/child-process.d.ts +21 -0
  116. package/dist/server/providers/child-process.d.ts.map +1 -0
  117. package/dist/server/providers/child-process.js +93 -0
  118. package/dist/server/providers/claude-events.d.ts +11 -0
  119. package/dist/server/providers/claude-events.d.ts.map +1 -0
  120. package/dist/server/providers/claude-events.js +1007 -0
  121. package/dist/server/providers/claude.d.ts +19 -0
  122. package/dist/server/providers/claude.d.ts.map +1 -0
  123. package/dist/server/providers/claude.js +523 -0
  124. package/dist/server/providers/codex-app-server.d.ts +50 -0
  125. package/dist/server/providers/codex-app-server.d.ts.map +1 -0
  126. package/dist/server/providers/codex-app-server.js +357 -0
  127. package/dist/server/providers/codex-events.d.ts +18 -0
  128. package/dist/server/providers/codex-events.d.ts.map +1 -0
  129. package/dist/server/providers/codex-events.js +568 -0
  130. package/dist/server/providers/codex.d.ts +17 -0
  131. package/dist/server/providers/codex.d.ts.map +1 -0
  132. package/dist/server/providers/codex.js +127 -0
  133. package/dist/server/providers/factory.d.ts +3 -0
  134. package/dist/server/providers/factory.d.ts.map +1 -0
  135. package/dist/server/providers/factory.js +12 -0
  136. package/dist/server/providers/kimi-events.d.ts +4 -0
  137. package/dist/server/providers/kimi-events.d.ts.map +1 -0
  138. package/dist/server/providers/kimi-events.js +177 -0
  139. package/dist/server/providers/kimi.d.ts +17 -0
  140. package/dist/server/providers/kimi.d.ts.map +1 -0
  141. package/dist/server/providers/kimi.js +485 -0
  142. package/dist/server/providers/reasoning-events.d.ts +15 -0
  143. package/dist/server/providers/reasoning-events.d.ts.map +1 -0
  144. package/dist/server/providers/reasoning-events.js +25 -0
  145. package/dist/server/reminders/cli.d.ts +3 -0
  146. package/dist/server/reminders/cli.d.ts.map +1 -0
  147. package/dist/server/reminders/cli.js +216 -0
  148. package/dist/server/reminders/reminder.activity.d.ts +29 -0
  149. package/dist/server/reminders/reminder.activity.d.ts.map +1 -0
  150. package/dist/server/reminders/reminder.activity.js +86 -0
  151. package/dist/server/reminders/reminder.helper.d.ts +14 -0
  152. package/dist/server/reminders/reminder.helper.d.ts.map +1 -0
  153. package/dist/server/reminders/reminder.helper.js +160 -0
  154. package/dist/server/reminders/reminder.service.d.ts +48 -0
  155. package/dist/server/reminders/reminder.service.d.ts.map +1 -0
  156. package/dist/server/reminders/reminder.service.js +152 -0
  157. package/dist/server/runtime/active-item.d.ts +22 -0
  158. package/dist/server/runtime/active-item.d.ts.map +1 -0
  159. package/dist/server/runtime/active-item.js +49 -0
  160. package/dist/server/runtime/activity-payload.d.ts +5 -0
  161. package/dist/server/runtime/activity-payload.d.ts.map +1 -0
  162. package/dist/server/runtime/activity-payload.js +21 -0
  163. package/dist/server/runtime/activity-text.d.ts +4 -0
  164. package/dist/server/runtime/activity-text.d.ts.map +1 -0
  165. package/dist/server/runtime/activity-text.js +16 -0
  166. package/dist/server/runtime/activity.d.ts +15 -0
  167. package/dist/server/runtime/activity.d.ts.map +1 -0
  168. package/dist/server/runtime/activity.js +142 -0
  169. package/dist/server/runtime/agent-runner.d.ts +17 -0
  170. package/dist/server/runtime/agent-runner.d.ts.map +1 -0
  171. package/dist/server/runtime/agent-runner.js +51 -0
  172. package/dist/server/runtime/context.d.ts +3 -0
  173. package/dist/server/runtime/context.d.ts.map +1 -0
  174. package/dist/server/runtime/context.js +27 -0
  175. package/dist/server/runtime/delivery-prompt.d.ts +32 -0
  176. package/dist/server/runtime/delivery-prompt.d.ts.map +1 -0
  177. package/dist/server/runtime/delivery-prompt.js +189 -0
  178. package/dist/server/runtime/host.d.ts +44 -0
  179. package/dist/server/runtime/host.d.ts.map +1 -0
  180. package/dist/server/runtime/host.js +363 -0
  181. package/dist/server/runtime/item-activities.d.ts +3 -0
  182. package/dist/server/runtime/item-activities.d.ts.map +1 -0
  183. package/dist/server/runtime/item-activities.js +22 -0
  184. package/dist/server/runtime/managed-runtime.d.ts +73 -0
  185. package/dist/server/runtime/managed-runtime.d.ts.map +1 -0
  186. package/dist/server/runtime/managed-runtime.js +199 -0
  187. package/dist/server/runtime/processing-reactions.d.ts +28 -0
  188. package/dist/server/runtime/processing-reactions.d.ts.map +1 -0
  189. package/dist/server/runtime/processing-reactions.js +65 -0
  190. package/dist/server/runtime/provider-contract.d.ts +55 -0
  191. package/dist/server/runtime/provider-contract.d.ts.map +1 -0
  192. package/dist/server/runtime/provider-contract.js +4 -0
  193. package/dist/server/runtime/runtime-bridge.d.ts +26 -0
  194. package/dist/server/runtime/runtime-bridge.d.ts.map +1 -0
  195. package/dist/server/runtime/runtime-bridge.js +115 -0
  196. package/dist/server/runtime/runtime-release.d.ts +13 -0
  197. package/dist/server/runtime/runtime-release.d.ts.map +1 -0
  198. package/dist/server/runtime/runtime-release.js +97 -0
  199. package/dist/server/runtime/runtime-session.service.d.ts +22 -0
  200. package/dist/server/runtime/runtime-session.service.d.ts.map +1 -0
  201. package/dist/server/runtime/runtime-session.service.js +276 -0
  202. package/dist/server/runtime/runtime-upgrade.d.ts +79 -0
  203. package/dist/server/runtime/runtime-upgrade.d.ts.map +1 -0
  204. package/dist/server/runtime/runtime-upgrade.js +531 -0
  205. package/dist/server/runtime/runtime-worker.d.ts +56 -0
  206. package/dist/server/runtime/runtime-worker.d.ts.map +1 -0
  207. package/dist/server/runtime/runtime-worker.js +540 -0
  208. package/dist/server/runtime/runtime.service.d.ts +13 -0
  209. package/dist/server/runtime/runtime.service.d.ts.map +1 -0
  210. package/dist/server/runtime/runtime.service.js +50 -0
  211. package/dist/server/runtime/standing-prompt.d.ts +6 -0
  212. package/dist/server/runtime/standing-prompt.d.ts.map +1 -0
  213. package/dist/server/runtime/standing-prompt.js +41 -0
  214. package/dist/server/runtime/types.d.ts +16 -0
  215. package/dist/server/runtime/types.d.ts.map +1 -0
  216. package/dist/server/runtime/types.js +1 -0
  217. package/dist/server/runtime/usage.d.ts +5 -0
  218. package/dist/server/runtime/usage.d.ts.map +1 -0
  219. package/dist/server/runtime/usage.js +8 -0
  220. package/dist/server/services/env.d.ts +8 -0
  221. package/dist/server/services/env.d.ts.map +1 -0
  222. package/dist/server/services/env.js +31 -0
  223. package/dist/server/services/restart-drain.d.ts +4 -0
  224. package/dist/server/services/restart-drain.d.ts.map +1 -0
  225. package/dist/server/services/restart-drain.js +39 -0
  226. package/dist/server/services/restart-gate.d.ts +40 -0
  227. package/dist/server/services/restart-gate.d.ts.map +1 -0
  228. package/dist/server/services/restart-gate.js +151 -0
  229. package/dist/server/services/restart-result.d.ts +14 -0
  230. package/dist/server/services/restart-result.d.ts.map +1 -0
  231. package/dist/server/services/restart-result.js +79 -0
  232. package/dist/server/services/supervisor.d.ts +31 -0
  233. package/dist/server/services/supervisor.d.ts.map +1 -0
  234. package/dist/server/services/supervisor.js +201 -0
  235. package/dist/server/settings/settings.service.d.ts +21 -0
  236. package/dist/server/settings/settings.service.d.ts.map +1 -0
  237. package/dist/server/settings/settings.service.js +36 -0
  238. package/dist/server/slack/app-manifest.d.ts +5 -0
  239. package/dist/server/slack/app-manifest.d.ts.map +1 -0
  240. package/dist/server/slack/app-manifest.js +24 -0
  241. package/dist/server/slack/client.d.ts +3 -0
  242. package/dist/server/slack/client.d.ts.map +1 -0
  243. package/dist/server/slack/client.js +7 -0
  244. package/dist/server/slack/shortcut.service.d.ts +140 -0
  245. package/dist/server/slack/shortcut.service.d.ts.map +1 -0
  246. package/dist/server/slack/shortcut.service.js +493 -0
  247. package/dist/server/slack/shortcuts.d.ts +32 -0
  248. package/dist/server/slack/shortcuts.d.ts.map +1 -0
  249. package/dist/server/slack/shortcuts.js +163 -0
  250. package/dist/server/slack/slack-file.service.d.ts +46 -0
  251. package/dist/server/slack/slack-file.service.d.ts.map +1 -0
  252. package/dist/server/slack/slack-file.service.js +125 -0
  253. package/dist/server/slack/slack.helper.d.ts +50 -0
  254. package/dist/server/slack/slack.helper.d.ts.map +1 -0
  255. package/dist/server/slack/slack.helper.js +222 -0
  256. package/dist/server/slack/workspace-directory.service.d.ts +37 -0
  257. package/dist/server/slack/workspace-directory.service.d.ts.map +1 -0
  258. package/dist/server/slack/workspace-directory.service.js +239 -0
  259. package/dist/server/storage/json-file.d.ts +25 -0
  260. package/dist/server/storage/json-file.d.ts.map +1 -0
  261. package/dist/server/storage/json-file.js +97 -0
  262. package/dist/server/storage/json-store.d.ts +15 -0
  263. package/dist/server/storage/json-store.d.ts.map +1 -0
  264. package/dist/server/storage/json-store.js +34 -0
  265. package/dist/server/storage/jsonl-log.d.ts +41 -0
  266. package/dist/server/storage/jsonl-log.d.ts.map +1 -0
  267. package/dist/server/storage/jsonl-log.js +271 -0
  268. package/dist/server/storage/lock.d.ts +2 -0
  269. package/dist/server/storage/lock.d.ts.map +1 -0
  270. package/dist/server/storage/lock.js +90 -0
  271. package/dist/server/storage/safe-filename.d.ts +2 -0
  272. package/dist/server/storage/safe-filename.d.ts.map +1 -0
  273. package/dist/server/storage/safe-filename.js +4 -0
  274. package/dist/server/storage/schema/activity.store.d.ts +25 -0
  275. package/dist/server/storage/schema/activity.store.d.ts.map +1 -0
  276. package/dist/server/storage/schema/activity.store.js +49 -0
  277. package/dist/server/storage/schema/agent-usage.store.d.ts +13 -0
  278. package/dist/server/storage/schema/agent-usage.store.d.ts.map +1 -0
  279. package/dist/server/storage/schema/agent-usage.store.js +29 -0
  280. package/dist/server/storage/schema/agent.store.d.ts +17 -0
  281. package/dist/server/storage/schema/agent.store.d.ts.map +1 -0
  282. package/dist/server/storage/schema/agent.store.js +64 -0
  283. package/dist/server/storage/schema/cache.d.ts +41 -0
  284. package/dist/server/storage/schema/cache.d.ts.map +1 -0
  285. package/dist/server/storage/schema/cache.js +45 -0
  286. package/dist/server/storage/schema/interactive-ask.store.d.ts +77 -0
  287. package/dist/server/storage/schema/interactive-ask.store.d.ts.map +1 -0
  288. package/dist/server/storage/schema/interactive-ask.store.js +87 -0
  289. package/dist/server/storage/schema/kb.store.d.ts +23 -0
  290. package/dist/server/storage/schema/kb.store.d.ts.map +1 -0
  291. package/dist/server/storage/schema/kb.store.js +91 -0
  292. package/dist/server/storage/schema/message.store.d.ts +24 -0
  293. package/dist/server/storage/schema/message.store.d.ts.map +1 -0
  294. package/dist/server/storage/schema/message.store.js +52 -0
  295. package/dist/server/storage/schema/reminder.store.d.ts +53 -0
  296. package/dist/server/storage/schema/reminder.store.d.ts.map +1 -0
  297. package/dist/server/storage/schema/reminder.store.js +75 -0
  298. package/dist/server/storage/schema/server.store.d.ts +21 -0
  299. package/dist/server/storage/schema/server.store.d.ts.map +1 -0
  300. package/dist/server/storage/schema/server.store.js +27 -0
  301. package/dist/server/storage/schema/session.store.d.ts +64 -0
  302. package/dist/server/storage/schema/session.store.d.ts.map +1 -0
  303. package/dist/server/storage/schema/session.store.js +88 -0
  304. package/dist/server/storage/schema/subscription.store.d.ts +72 -0
  305. package/dist/server/storage/schema/subscription.store.d.ts.map +1 -0
  306. package/dist/server/storage/schema/subscription.store.js +93 -0
  307. package/dist/server/storage/schema/wake-queue.store.d.ts +191 -0
  308. package/dist/server/storage/schema/wake-queue.store.d.ts.map +1 -0
  309. package/dist/server/storage/schema/wake-queue.store.js +233 -0
  310. package/dist/server/tools/ask.d.ts +14 -0
  311. package/dist/server/tools/ask.d.ts.map +1 -0
  312. package/dist/server/tools/ask.js +309 -0
  313. package/dist/server/tools/file-send.d.ts +10 -0
  314. package/dist/server/tools/file-send.d.ts.map +1 -0
  315. package/dist/server/tools/file-send.js +128 -0
  316. package/dist/server/tools/files-cli.d.ts +3 -0
  317. package/dist/server/tools/files-cli.d.ts.map +1 -0
  318. package/dist/server/tools/files-cli.js +97 -0
  319. package/dist/server/tools/message-history-cli.d.ts +3 -0
  320. package/dist/server/tools/message-history-cli.d.ts.map +1 -0
  321. package/dist/server/tools/message-history-cli.js +111 -0
  322. package/dist/server/tools/message-read.d.ts +20 -0
  323. package/dist/server/tools/message-read.d.ts.map +1 -0
  324. package/dist/server/tools/message-read.js +138 -0
  325. package/dist/server/tools/messages-cli.d.ts +3 -0
  326. package/dist/server/tools/messages-cli.d.ts.map +1 -0
  327. package/dist/server/tools/messages-cli.js +104 -0
  328. package/dist/server/tools/messages.d.ts +18 -0
  329. package/dist/server/tools/messages.d.ts.map +1 -0
  330. package/dist/server/tools/messages.js +188 -0
  331. package/dist/server/tools/reactions-cli.d.ts +3 -0
  332. package/dist/server/tools/reactions-cli.d.ts.map +1 -0
  333. package/dist/server/tools/reactions-cli.js +87 -0
  334. package/dist/server/tools/reactions.d.ts +11 -0
  335. package/dist/server/tools/reactions.d.ts.map +1 -0
  336. package/dist/server/tools/reactions.js +77 -0
  337. package/dist/server/tools/slack-channel-resolver.d.ts +14 -0
  338. package/dist/server/tools/slack-channel-resolver.d.ts.map +1 -0
  339. package/dist/server/tools/slack-channel-resolver.js +47 -0
  340. package/dist/server/tools/slack-file-upload.d.ts +49 -0
  341. package/dist/server/tools/slack-file-upload.d.ts.map +1 -0
  342. package/dist/server/tools/slack-file-upload.js +93 -0
  343. package/dist/server/tools/slack-message-format.d.ts +13 -0
  344. package/dist/server/tools/slack-message-format.d.ts.map +1 -0
  345. package/dist/server/tools/slack-message-format.js +28 -0
  346. package/dist/server/tools/slack-message-mentions.d.ts +30 -0
  347. package/dist/server/tools/slack-message-mentions.d.ts.map +1 -0
  348. package/dist/server/tools/slack-message-mentions.js +88 -0
  349. package/dist/server/tools/slack-target.d.ts +22 -0
  350. package/dist/server/tools/slack-target.d.ts.map +1 -0
  351. package/dist/server/tools/slack-target.js +94 -0
  352. package/dist/server/tools/slack-transcript.d.ts +40 -0
  353. package/dist/server/tools/slack-transcript.d.ts.map +1 -0
  354. package/dist/server/tools/slack-transcript.js +166 -0
  355. package/dist/server/tools/subscriptions-cli.d.ts +3 -0
  356. package/dist/server/tools/subscriptions-cli.d.ts.map +1 -0
  357. package/dist/server/tools/subscriptions-cli.js +132 -0
  358. package/dist/server/tools/tool-context.d.ts +28 -0
  359. package/dist/server/tools/tool-context.d.ts.map +1 -0
  360. package/dist/server/tools/tool-context.js +79 -0
  361. package/dist/server/web/agent-file-routes.d.ts +3 -0
  362. package/dist/server/web/agent-file-routes.d.ts.map +1 -0
  363. package/dist/server/web/agent-file-routes.js +57 -0
  364. package/dist/server/web/agent-routes.d.ts +3 -0
  365. package/dist/server/web/agent-routes.d.ts.map +1 -0
  366. package/dist/server/web/agent-routes.js +96 -0
  367. package/dist/server/web/agent-slack-routes.d.ts +3 -0
  368. package/dist/server/web/agent-slack-routes.d.ts.map +1 -0
  369. package/dist/server/web/agent-slack-routes.js +17 -0
  370. package/dist/server/web/app.d.ts +3 -0
  371. package/dist/server/web/app.d.ts.map +1 -0
  372. package/dist/server/web/app.js +16 -0
  373. package/dist/server/web/host.d.ts +6 -0
  374. package/dist/server/web/host.d.ts.map +1 -0
  375. package/dist/server/web/host.js +40 -0
  376. package/dist/server/web/http.d.ts +15 -0
  377. package/dist/server/web/http.d.ts.map +1 -0
  378. package/dist/server/web/http.js +66 -0
  379. package/dist/server/web/kb-routes.d.ts +6 -0
  380. package/dist/server/web/kb-routes.d.ts.map +1 -0
  381. package/dist/server/web/kb-routes.js +94 -0
  382. package/dist/server/web/static.d.ts +3 -0
  383. package/dist/server/web/static.d.ts.map +1 -0
  384. package/dist/server/web/static.js +72 -0
  385. package/dist/server/web/system-routes.d.ts +3 -0
  386. package/dist/server/web/system-routes.d.ts.map +1 -0
  387. package/dist/server/web/system-routes.js +181 -0
  388. package/dist/shared/activity.d.ts +107 -0
  389. package/dist/shared/activity.d.ts.map +1 -0
  390. package/dist/shared/activity.js +2 -0
  391. package/dist/shared/agent-config.d.ts +368 -0
  392. package/dist/shared/agent-config.d.ts.map +1 -0
  393. package/dist/shared/agent-config.js +223 -0
  394. package/dist/shared/agent-home.d.ts +4 -0
  395. package/dist/shared/agent-home.d.ts.map +1 -0
  396. package/dist/shared/agent-home.js +5 -0
  397. package/dist/shared/inbox.d.ts +341 -0
  398. package/dist/shared/inbox.d.ts.map +1 -0
  399. package/dist/shared/inbox.js +91 -0
  400. package/dist/shared/kb-file-types.d.ts +5 -0
  401. package/dist/shared/kb-file-types.d.ts.map +1 -0
  402. package/dist/shared/kb-file-types.js +57 -0
  403. package/dist/shared/kb.d.ts +37 -0
  404. package/dist/shared/kb.d.ts.map +1 -0
  405. package/dist/shared/kb.js +9 -0
  406. package/dist/shared/messages.d.ts +52 -0
  407. package/dist/shared/messages.d.ts.map +1 -0
  408. package/dist/shared/messages.js +4 -0
  409. package/dist/shared/provider-catalog.d.ts +30 -0
  410. package/dist/shared/provider-catalog.d.ts.map +1 -0
  411. package/dist/shared/provider-catalog.js +59 -0
  412. package/dist/shared/provider-usage.d.ts +132 -0
  413. package/dist/shared/provider-usage.d.ts.map +1 -0
  414. package/dist/shared/provider-usage.js +41 -0
  415. package/dist/shared/reminder.d.ts +73 -0
  416. package/dist/shared/reminder.d.ts.map +1 -0
  417. package/dist/shared/reminder.js +44 -0
  418. package/dist/shared/runtime-upgrade.d.ts +161 -0
  419. package/dist/shared/runtime-upgrade.d.ts.map +1 -0
  420. package/dist/shared/runtime-upgrade.js +56 -0
  421. package/dist/shared/server-info.d.ts +180 -0
  422. package/dist/shared/server-info.d.ts.map +1 -0
  423. package/dist/shared/server-info.js +50 -0
  424. package/dist/shared/server-settings.d.ts +12 -0
  425. package/dist/shared/server-settings.d.ts.map +1 -0
  426. package/dist/shared/server-settings.js +6 -0
  427. package/dist/shared/skills.d.ts +19 -0
  428. package/dist/shared/skills.d.ts.map +1 -0
  429. package/dist/shared/skills.js +1 -0
  430. package/dist/shared/slack-manifest.d.ts +15 -0
  431. package/dist/shared/slack-manifest.d.ts.map +1 -0
  432. package/dist/shared/slack-manifest.js +8 -0
  433. package/dist/shared/snapshot.d.ts +47 -0
  434. package/dist/shared/snapshot.d.ts.map +1 -0
  435. package/dist/shared/snapshot.js +2 -0
  436. package/dist/shared/url-routes.d.ts +70 -0
  437. package/dist/shared/url-routes.d.ts.map +1 -0
  438. package/dist/shared/url-routes.js +144 -0
  439. package/dist/web/assets/activity-BP0C81IV.js +7 -0
  440. package/dist/web/assets/albert-sans-latin-ext-wght-normal-BAo4qCk1.woff2 +0 -0
  441. package/dist/web/assets/albert-sans-latin-wght-normal-BJ0ssN8N.woff2 +0 -0
  442. package/dist/web/assets/external-link-Dt0qTpmV.js +1 -0
  443. package/dist/web/assets/file-text-Dd9ys6py.js +1 -0
  444. package/dist/web/assets/fraunces-latin-ext-wght-italic-BfTTTDIL.woff2 +0 -0
  445. package/dist/web/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2 +0 -0
  446. package/dist/web/assets/fraunces-latin-wght-italic-Py8at3oI.woff2 +0 -0
  447. package/dist/web/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2 +0 -0
  448. package/dist/web/assets/fraunces-vietnamese-wght-italic-BicUS2cM.woff2 +0 -0
  449. package/dist/web/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2 +0 -0
  450. package/dist/web/assets/globe-DmDZSgDP.js +1 -0
  451. package/dist/web/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  452. package/dist/web/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  453. package/dist/web/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
  454. package/dist/web/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
  455. package/dist/web/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2 +0 -0
  456. package/dist/web/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff +0 -0
  457. package/dist/web/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  458. package/dist/web/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  459. package/dist/web/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
  460. package/dist/web/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
  461. package/dist/web/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff +0 -0
  462. package/dist/web/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2 +0 -0
  463. package/dist/web/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  464. package/dist/web/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  465. package/dist/web/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  466. package/dist/web/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  467. package/dist/web/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
  468. package/dist/web/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
  469. package/dist/web/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  470. package/dist/web/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  471. package/dist/web/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
  472. package/dist/web/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
  473. package/dist/web/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2 +0 -0
  474. package/dist/web/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff +0 -0
  475. package/dist/web/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  476. package/dist/web/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  477. package/dist/web/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
  478. package/dist/web/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
  479. package/dist/web/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2 +0 -0
  480. package/dist/web/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff +0 -0
  481. package/dist/web/assets/index-CzAQnbuO.js +80 -0
  482. package/dist/web/assets/index-DKecrvN0.css +2 -0
  483. package/dist/web/assets/kb-3wFeP2Jt.js +32 -0
  484. package/dist/web/assets/profile-D7wPZXW_.js +1 -0
  485. package/dist/web/assets/reminders-DOhroVwo.js +1 -0
  486. package/dist/web/favicon.svg +1 -0
  487. package/dist/web/icons.svg +24 -0
  488. package/dist/web/index.html +14 -0
  489. package/package.json +42 -0
  490. package/templates/agent-seed-memory.md +30 -0
  491. package/templates/runtime-standing-prompt.md +64 -0
  492. package/templates/slack-app-manifest.yaml +81 -0
@@ -0,0 +1,111 @@
1
+ import { z } from 'zod';
2
+ import { messageServiceForAgent } from '../messages/message.service.js';
3
+ import { resolveToolAgentId } from './tool-context.js';
4
+ const MessageHistorySchema = z.object({
5
+ before: z.string().optional(),
6
+ limit: z.coerce.number().int().positive().optional(),
7
+ since: z.string().optional(),
8
+ });
9
+ export function registerMessageHistoryCommands(program) {
10
+ program
11
+ .command('inbox')
12
+ .description('Show recent messages and wakes received by this agent.')
13
+ .option('--limit <n>', 'max entries to return (default: 20; hard cap: 500)')
14
+ .option('--before <iso>', 'page older than this ISO timestamp')
15
+ .option('--since <iso>', 'only include entries at or after this ISO timestamp')
16
+ .action(async (_, command) => {
17
+ const opts = MessageHistorySchema.parse(command.optsWithGlobals());
18
+ await runMessageHistory('in', opts);
19
+ });
20
+ program
21
+ .command('outbox')
22
+ .description('Show recent Slack messages, files, and reactions sent by this agent.')
23
+ .option('--limit <n>', 'max entries to return (default: 20; hard cap: 500)')
24
+ .option('--before <iso>', 'page older than this ISO timestamp')
25
+ .option('--since <iso>', 'only include entries at or after this ISO timestamp')
26
+ .action(async (_, command) => {
27
+ const opts = MessageHistorySchema.parse(command.optsWithGlobals());
28
+ await runMessageHistory('out', opts);
29
+ });
30
+ }
31
+ async function runMessageHistory(direction, opts) {
32
+ const agentId = resolveToolAgentId({});
33
+ if (!agentId)
34
+ throw new Error(`${direction === 'in' ? 'inbox' : 'outbox'} requires current agent context`);
35
+ const page = await messageServiceForAgent(agentId).list({
36
+ direction,
37
+ ...normalizeTimeWindow(opts),
38
+ limit: opts.limit ?? 20,
39
+ });
40
+ const title = direction === 'in' ? 'Inbox' : 'Outbox';
41
+ if (page.entries.length === 0) {
42
+ console.log(`${title} is empty.`);
43
+ return;
44
+ }
45
+ console.log(`${title} (${page.entries.length} entr${page.entries.length === 1 ? 'y' : 'ies'}, newest first)`);
46
+ for (const entry of page.entries)
47
+ console.log(formatHistoryEntry(entry));
48
+ console.log(`[page has_more=${Boolean(page.nextCursor)} next_cursor=${page.nextCursor ?? '-'}]`);
49
+ }
50
+ function normalizeTimeWindow(opts) {
51
+ return {
52
+ ...(opts.before ? { before: normalizeIsoCursor(opts.before, '--before') } : {}),
53
+ ...(opts.since ? { since: normalizeIsoCursor(opts.since, '--since') } : {}),
54
+ };
55
+ }
56
+ function normalizeIsoCursor(value, flag) {
57
+ const date = new Date(value);
58
+ if (!Number.isFinite(date.getTime()))
59
+ throw new Error(`${flag} must be an ISO timestamp`);
60
+ return date.toISOString();
61
+ }
62
+ function formatHistoryEntry(entry) {
63
+ const attrs = [`time=${entry.timestamp}`];
64
+ const surface = surfaceLabel(entry);
65
+ if (surface)
66
+ attrs.push(`channel=${surface}`);
67
+ if (entry.channelId && entry.channelId !== surface)
68
+ attrs.push(`channel_id=${entry.channelId}`);
69
+ if (entry.threadTs)
70
+ attrs.push(`thread_ts=${entry.threadTs}`);
71
+ if (entry.messageTs)
72
+ attrs.push(`message_ts=${entry.messageTs}`);
73
+ const lead = entry.direction === 'in' ? `${entry.actor ?? 'Unknown'}:` : `${outboxVerb(entry)}:`;
74
+ return `[${attrs.join(' ')}] ${lead} ${oneLineText(entry.text)}`;
75
+ }
76
+ function outboxVerb(entry) {
77
+ if (entry.kind === 'file')
78
+ return 'sent file';
79
+ if (entry.kind === 'reaction') {
80
+ const reaction = entry.reaction;
81
+ if (!reaction)
82
+ return 'reacted';
83
+ return `${reaction.action === 'removed' ? 'removed reaction' : 'reacted'} :${reaction.name}:`;
84
+ }
85
+ if (entry.kind === 'message' && entry.threadTs)
86
+ return 'replied';
87
+ return 'sent';
88
+ }
89
+ function surfaceLabel(entry) {
90
+ if (entry.dmHandle)
91
+ return `@${entry.dmHandle.replace(/^@/, '')}`;
92
+ if (entry.channelKind === 'dm') {
93
+ const raw = entry.channelDisplayName?.replace(/^DM with /i, '');
94
+ if (raw && raw !== entry.channelDisplayName)
95
+ return raw.startsWith('@') ? raw : `@${raw}`;
96
+ return entry.dmUserId ?? 'DM';
97
+ }
98
+ if (entry.channelName)
99
+ return `#${entry.channelName.replace(/^#/, '')}`;
100
+ if (entry.channelDisplayName)
101
+ return entry.channelDisplayName.startsWith('#')
102
+ ? entry.channelDisplayName
103
+ : `#${entry.channelDisplayName.replace(/^#/, '')}`;
104
+ return entry.channelId;
105
+ }
106
+ function oneLineText(text) {
107
+ const normalized = text.replace(/\r?\n/g, '\\n').trim();
108
+ if (normalized.length <= 1000)
109
+ return normalized;
110
+ return `${normalized.slice(0, 997)}...`;
111
+ }
@@ -0,0 +1,20 @@
1
+ interface MessageGlobalInput {
2
+ agent?: string;
3
+ item?: string;
4
+ }
5
+ export interface MessageReadInput extends MessageGlobalInput {
6
+ after?: string;
7
+ around?: string;
8
+ before?: string;
9
+ channel?: string;
10
+ cursor?: string;
11
+ inclusive?: boolean;
12
+ json?: boolean;
13
+ latest?: string;
14
+ limit?: number;
15
+ oldest?: string;
16
+ threadTs?: string;
17
+ }
18
+ export declare function runMessageRead(opts: MessageReadInput): Promise<void>;
19
+ export {};
20
+ //# sourceMappingURL=message-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-read.d.ts","sourceRoot":"","sources":["../../../server/tools/message-read.ts"],"names":[],"mappings":"AAyBA,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA4BD,wBAAsB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B1E"}
@@ -0,0 +1,138 @@
1
+ import { resolveSlackChannelArgument } from './slack-channel-resolver.js';
2
+ import { slackTargetSummary, slackThreadSummary, } from './slack-target.js';
3
+ import { resolveToolAgentId, slackWebClientForOpts, withToolActivity, } from './tool-context.js';
4
+ import { slackTranscriptOutput, slackTranscriptUserLabels, } from './slack-transcript.js';
5
+ export async function runMessageRead(opts) {
6
+ const threadTs = opts.threadTs;
7
+ const mode = threadTs ? 'replies' : 'history';
8
+ const request = await slackReadRequest({ ...opts, threadTs }, mode);
9
+ if (mode === 'replies' && !request.threadTs)
10
+ throw new Error('Missing --thread-ts');
11
+ await runSlackReadTool({
12
+ opts,
13
+ request,
14
+ tool: 'anima.message.read',
15
+ execute: () => mode === 'replies'
16
+ ? request.client.conversations.replies({
17
+ channel: request.channel,
18
+ ...(request.cursor ? { cursor: request.cursor } : {}),
19
+ ...(request.inclusive !== undefined ? { inclusive: request.inclusive } : {}),
20
+ ...(request.latest ? { latest: request.latest } : {}),
21
+ limit: request.limit,
22
+ ...(request.oldest ? { oldest: request.oldest } : {}),
23
+ ts: request.threadTs,
24
+ })
25
+ : request.client.conversations.history({
26
+ channel: request.channel,
27
+ ...(request.cursor ? { cursor: request.cursor } : {}),
28
+ ...(request.inclusive !== undefined ? { inclusive: request.inclusive } : {}),
29
+ ...(request.latest ? { latest: request.latest } : {}),
30
+ limit: request.limit,
31
+ ...(request.oldest ? { oldest: request.oldest } : {}),
32
+ }),
33
+ });
34
+ }
35
+ async function slackReadRequest(opts, mode) {
36
+ const { agent, client } = await slackWebClientForOpts(opts);
37
+ const teamId = agent.slack.teamId || undefined;
38
+ if (!opts.channel)
39
+ throw new Error('Missing --channel');
40
+ const channel = await resolveSlackChannelArgument({
41
+ channel: opts.channel,
42
+ client,
43
+ teamId,
44
+ });
45
+ const agentRangeSelectors = [opts.around, opts.before, opts.after].filter(Boolean);
46
+ if (agentRangeSelectors.length > 1) {
47
+ throw new Error('Pass only one of --around, --before, or --after');
48
+ }
49
+ if (agentRangeSelectors.length > 0 && (opts.latest || opts.oldest || opts.cursor)) {
50
+ throw new Error('Do not combine --around, --before, or --after with --oldest, --latest, or --cursor');
51
+ }
52
+ const latest = opts.latest ?? opts.around ?? opts.before;
53
+ const oldest = opts.oldest ?? opts.after;
54
+ const inclusive = opts.inclusive ?? (opts.around ? true : undefined);
55
+ const threadTs = opts.threadTs;
56
+ const limitDefault = mode === 'replies' ? 50 : 20;
57
+ const limit = Math.min(opts.limit ?? limitDefault, 200);
58
+ return {
59
+ ...(opts.after ? { after: opts.after } : {}),
60
+ ...(opts.around ? { around: opts.around } : {}),
61
+ ...(opts.before ? { before: opts.before } : {}),
62
+ channel: channel.id,
63
+ client,
64
+ ...(channel.name ? { channelName: channel.name } : {}),
65
+ ...('dmHandle' in channel && channel.dmHandle ? { dmHandle: channel.dmHandle } : {}),
66
+ ...('dmUserId' in channel && channel.dmUserId ? { dmUserId: channel.dmUserId } : {}),
67
+ ...(opts.cursor ? { cursor: opts.cursor } : {}),
68
+ ...(inclusive ? { inclusive } : {}),
69
+ ...(latest ? { latest } : {}),
70
+ limit,
71
+ ...(oldest ? { oldest } : {}),
72
+ ...(teamId ? { teamId } : {}),
73
+ ...(threadTs ? { threadTs } : {}),
74
+ ...(await slackTargetSummary({ channel, client, teamId })),
75
+ };
76
+ }
77
+ async function runSlackReadTool(input) {
78
+ const agentId = resolveToolAgentId(input.opts);
79
+ if (!agentId)
80
+ throw new Error('message read requires current agent context for audit');
81
+ const basePayload = slackReadActivityPayload(input.tool, input.request);
82
+ await withToolActivity({
83
+ audit: { agentId },
84
+ basePayload,
85
+ op: async () => {
86
+ const response = await input.execute();
87
+ const messages = slackMessagesWithTimestamps(response.messages);
88
+ const auth = await input.request.client.auth.test().catch(() => undefined);
89
+ const cacheTeamId = auth?.team_id ?? input.request.teamId;
90
+ const cacheContext = { ...(cacheTeamId ? { teamId: cacheTeamId } : {}) };
91
+ const userLabels = await slackTranscriptUserLabels(messages, input.request.client, cacheTeamId);
92
+ console.log(slackTranscriptOutput(messages, input.request, userLabels, {
93
+ hasMore: response.has_more ?? false,
94
+ nextCursor: response.response_metadata?.next_cursor ?? '',
95
+ }, cacheContext));
96
+ return {
97
+ result: undefined,
98
+ completedPayload: {
99
+ hasMore: response.has_more ?? false,
100
+ messageCount: messages.length,
101
+ nextCursor: response.response_metadata?.next_cursor ?? '',
102
+ },
103
+ };
104
+ },
105
+ });
106
+ }
107
+ function slackReadActivityPayload(tool, request) {
108
+ return {
109
+ ...(request.after ? { after: request.after } : {}),
110
+ ...(request.around ? { around: request.around } : {}),
111
+ ...(request.before ? { before: request.before } : {}),
112
+ channel: request.channel,
113
+ ...slackReadOutputTarget(request),
114
+ ...(request.channelName ? { channelName: request.channelName } : {}),
115
+ ...(request.cursor ? { cursor: request.cursor } : {}),
116
+ ...(request.dmHandle ? { dmHandle: request.dmHandle } : {}),
117
+ ...(request.dmUserId ? { dmUserId: request.dmUserId } : {}),
118
+ ...(request.latest ? { latest: request.latest } : {}),
119
+ limit: request.limit,
120
+ ...(request.oldest ? { oldest: request.oldest } : {}),
121
+ ...(request.threadTs ? { threadTs: request.threadTs } : {}),
122
+ tool,
123
+ };
124
+ }
125
+ function slackReadOutputTarget(request) {
126
+ const target = {
127
+ channelDisplayName: request.channelDisplayName,
128
+ channelKind: request.channelKind,
129
+ };
130
+ return request.threadTs
131
+ ? { ...target, ...slackThreadSummary(target, request.threadTs) }
132
+ : target;
133
+ }
134
+ function slackMessagesWithTimestamps(messages) {
135
+ return (messages ?? [])
136
+ .filter((message) => typeof message.ts === 'string')
137
+ .map((message) => message);
138
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerMessageCommands(program: Command): void;
3
+ //# sourceMappingURL=messages-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-cli.d.ts","sourceRoot":"","sources":["../../../server/tools/messages-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2E9D"}
@@ -0,0 +1,104 @@
1
+ import { z } from 'zod';
2
+ import { runMessageRead } from './message-read.js';
3
+ import { runMessageReact } from './reactions.js';
4
+ import { runMessageSend, runMessageUpdate, } from './messages.js';
5
+ const GlobalFlags = z.object({});
6
+ const MessageReadSchema = GlobalFlags.extend({
7
+ after: z.string().optional(),
8
+ around: z.string().optional(),
9
+ before: z.string().optional(),
10
+ channel: z.string().optional(),
11
+ cursor: z.string().optional(),
12
+ inclusive: z.boolean().optional(),
13
+ latest: z.string().optional(),
14
+ limit: z.coerce.number().int().positive().optional(),
15
+ oldest: z.string().optional(),
16
+ threadTs: z.string().optional(),
17
+ });
18
+ const MessageSendSchema = GlobalFlags.extend({
19
+ channel: z.string().optional(),
20
+ threadTs: z.string().optional(),
21
+ });
22
+ const MessageUpdateSchema = GlobalFlags.extend({
23
+ channel: z.string().optional(),
24
+ messageTs: z.string().optional(),
25
+ });
26
+ const MessageReactSchema = GlobalFlags.extend({
27
+ channel: z.string().optional(),
28
+ emoji: z.string().optional(),
29
+ messageTs: z.string().optional(),
30
+ name: z.string().optional(),
31
+ remove: z.boolean().optional(),
32
+ });
33
+ export function registerMessageCommands(program) {
34
+ const message = program
35
+ .command('message')
36
+ .description('Read Slack messages and record Slack outputs');
37
+ // Input: anima message read --channel <id> [--thread-ts <ts>] [--limit <n>]
38
+ // [--around <ts> | --before <ts> | --after <ts>] [--oldest <ts>] [--latest <ts>]
39
+ // [--cursor <c>] [--inclusive]
40
+ // Output: multi-line transcript, oldest → newest, one line per Slack message:
41
+ // [channel=<display> [channel_id=<id>] [thread_ts=<ts>] message_ts=<ts>
42
+ // time=<iso> [user_id=<id>] [user_local_time=<local> user_tz=<tz>]] <actor>: <text>
43
+ // File attachments append a trailing line:
44
+ // attached: id=<id> name=<name> mimetype=<m> size_bytes=<n> (path=<local> | use anima file fetch <id>)
45
+ // Pagination: [page has_more=<bool> next_cursor=<cursor|-}]
46
+ // Failure: human-readable error to stderr; exit 1.
47
+ message
48
+ .command('read')
49
+ .description('Read messages from a Slack channel or thread.')
50
+ .option('--channel <channel>', 'channel ID (e.g. C123ABC) or name (e.g. prod)\nDM: D-prefixed channel ID (e.g. D123ABC)')
51
+ .option('--thread-ts <ts>', 'read a thread; omit for the top-level channel')
52
+ .option('--limit <n>', 'max messages to return (default: 20 for channel, 50 for thread; hard cap: 200)')
53
+ .option('--around <ts>', 'window centered on ts (inclusive); cannot combine with --oldest/--latest/--cursor')
54
+ .option('--before <ts>', 'messages before ts (exclusive); cannot combine with --oldest/--latest/--cursor')
55
+ .option('--after <ts>', 'messages after ts (exclusive); cannot combine with --oldest/--latest/--cursor')
56
+ .option('--oldest <ts>', 'lower bound; cannot combine with --around/--before/--after')
57
+ .option('--latest <ts>', 'upper bound; cannot combine with --around/--before/--after')
58
+ .option('--inclusive', 'include messages at the --oldest/--latest boundaries')
59
+ .option('--cursor <cursor>', 'pagination: next_cursor value from a prior response\'s [page ...] line')
60
+ .action(async (_, command) => {
61
+ const opts = MessageReadSchema.parse(command.optsWithGlobals());
62
+ await runMessageRead(opts);
63
+ });
64
+ // Input: anima message send --channel <id> [--thread-ts <ts>] < body (stdin)
65
+ // Output: sent successfully. (channel=#<name> | dm=<handle>)[, thread_ts=<ts>], message_ts=<ts>.
66
+ // Failure: human-readable error to stderr; exit 1.
67
+ message
68
+ .command('send')
69
+ .description('Post a Slack message (top-level or in a thread).\nMessage body is read from stdin.')
70
+ .option('--channel <channel>', 'channel ID (e.g. C123ABC) or name (e.g. prod)\nDM: D-prefixed channel ID (e.g. D123ABC)')
71
+ .option('--thread-ts <ts>', 'reply inside this thread; omit to post top-level')
72
+ .action(async (_, command) => {
73
+ const opts = MessageSendSchema.parse(command.optsWithGlobals());
74
+ await runMessageSend(opts);
75
+ });
76
+ // Input: anima message update --channel <id> --message-ts <ts> < body (stdin)
77
+ // Output: updated successfully. (channel=#<name> | dm=<handle>), message_ts=<ts>.
78
+ // Failure: human-readable error to stderr; exit 1.
79
+ message
80
+ .command('update')
81
+ .description('Edit a previously sent message in place.\nNew message body is read from stdin.')
82
+ .option('--channel <channel>', 'channel ID (e.g. C123ABC) or name (e.g. prod)\nDM: D-prefixed channel ID (e.g. D123ABC)')
83
+ .option('--message-ts <ts>', 'timestamp of the message to update (from the send output)')
84
+ .action(async (_, command) => {
85
+ const opts = MessageUpdateSchema.parse(command.optsWithGlobals());
86
+ await runMessageUpdate(opts);
87
+ });
88
+ message
89
+ .command('react')
90
+ .description('Add a reaction emoji to a Slack message.')
91
+ .option('--channel <channel>', 'channel ID (e.g. C123ABC) or name (e.g. prod)\nDM: D-prefixed channel ID (e.g. D123ABC)')
92
+ .option('--message-ts <ts>', 'timestamp of the message to react to')
93
+ .option('--name <emoji>', 'emoji name without colons (e.g. white_check_mark, eyes)')
94
+ .option('--emoji <emoji>', 'alias for --name')
95
+ .option('--remove', 'remove the reaction instead of adding it')
96
+ .action(async (_, command) => {
97
+ const opts = MessageReactSchema.parse(command.optsWithGlobals());
98
+ await runMessageReact({
99
+ ...opts,
100
+ name: opts.name ?? opts.emoji,
101
+ remove: Boolean(opts.remove),
102
+ });
103
+ });
104
+ }
@@ -0,0 +1,18 @@
1
+ interface MessageGlobalInput {
2
+ agent?: string;
3
+ item?: string;
4
+ }
5
+ interface MessageSendInput extends MessageGlobalInput {
6
+ channel?: string;
7
+ text?: string;
8
+ threadTs?: string;
9
+ }
10
+ interface MessageUpdateInput extends MessageGlobalInput {
11
+ channel?: string;
12
+ messageTs?: string;
13
+ text?: string;
14
+ }
15
+ export declare function runMessageSend(opts: MessageSendInput): Promise<void>;
16
+ export declare function runMessageUpdate(opts: MessageUpdateInput): Promise<void>;
17
+ export {};
18
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../server/tools/messages.ts"],"names":[],"mappings":"AA4BA,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,gBAAiB,SAAQ,kBAAkB;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,kBAAmB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,wBAAsB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiF1E;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE9E"}
@@ -0,0 +1,188 @@
1
+ import { ensureThreadSubscriptionForSentMessage, recordChannelPost, } from '../inbox/slack-subscription.service.js';
2
+ import { resolveSlackChannelArgument } from './slack-channel-resolver.js';
3
+ import { slackMessageContentForText } from './slack-message-format.js';
4
+ import { mentionWarningsForTarget, slackTextForPostMessage, } from './slack-message-mentions.js';
5
+ import { slackOutputTarget, slackTargetPayload, slackTargetSummary, slackThreadSummary, } from './slack-target.js';
6
+ import { resolveToolAgentId, slackWebClientForOpts, withToolActivity, readStdin, } from './tool-context.js';
7
+ export async function runMessageSend(opts) {
8
+ const text = await readStdin();
9
+ const agentId = resolveToolAgentId(opts);
10
+ if (!agentId)
11
+ throw new Error('message send requires current agent context for audit');
12
+ if (!opts.channel)
13
+ throw new Error('message send requires --channel');
14
+ const { agent, client } = await slackWebClientForOpts(opts);
15
+ const teamId = agent.slack.teamId || undefined;
16
+ const channel = await resolveSlackChannelArgument({
17
+ channel: opts.channel,
18
+ client,
19
+ teamId,
20
+ });
21
+ const threadTs = opts.threadTs;
22
+ const target = await slackTargetSummary({ channel, client, teamId });
23
+ const thread = threadTs ? slackThreadSummary(target, threadTs) : undefined;
24
+ const basePayload = {
25
+ ...slackTargetPayload(channel),
26
+ ...target,
27
+ ...(thread ? thread : {}),
28
+ ...(threadTs ? { threadTs } : {}),
29
+ tool: 'anima.message.send',
30
+ };
31
+ await withToolActivity({
32
+ audit: { agentId },
33
+ basePayload,
34
+ effectType: 'slack.message.send',
35
+ op: async () => {
36
+ const slackText = await slackTextForPostMessage({ client, teamId, text });
37
+ const content = slackMessageContentForText(slackText.text);
38
+ const warnings = await mentionWarningsForTarget({
39
+ channelId: channel.id,
40
+ client,
41
+ slackText,
42
+ target,
43
+ teamId,
44
+ });
45
+ const payload = {
46
+ ...(content.blocks ? { blocks: content.blocks } : {}),
47
+ channel: channel.id,
48
+ text: content.text,
49
+ ...(threadTs ? { thread_ts: threadTs } : {}),
50
+ };
51
+ const response = await client.chat.postMessage(payload);
52
+ const channelId = response.channel ?? channel.id;
53
+ const permalink = slackMessageRedirectLink({ channelId, messageTs: response.ts });
54
+ if (!channel.dmUserId && !threadTs) {
55
+ await recordChannelPost({ agentId, channelId });
56
+ }
57
+ const threadSubscription = channel.dmUserId || !response.ts
58
+ ? undefined
59
+ : await ensureThreadSubscriptionForSentMessage({
60
+ agentId,
61
+ channelId,
62
+ messageTs: response.ts,
63
+ ...(threadTs ? { threadTs } : {}),
64
+ });
65
+ console.log(slackOutputLine({
66
+ messageTs: response.ts,
67
+ status: 'sent',
68
+ target,
69
+ ...(thread ? { thread } : {}),
70
+ warnings,
71
+ }));
72
+ return {
73
+ result: undefined,
74
+ completedPayload: {
75
+ payload,
76
+ ...slackTextPayload(slackText, text),
77
+ messageFormat: content.format,
78
+ ...(content.blockCount ? { blockCount: content.blockCount } : {}),
79
+ ...(permalink ? { permalink } : {}),
80
+ ...(warnings.length ? { warnings } : {}),
81
+ ...(threadSubscription ? { threadSubscription: subscriptionPayload(threadSubscription) } : {}),
82
+ status: 'sent',
83
+ text,
84
+ ...(response.ts ? { ts: response.ts } : {}),
85
+ },
86
+ };
87
+ },
88
+ });
89
+ }
90
+ export async function runMessageUpdate(opts) {
91
+ const text = await readStdin();
92
+ const agentId = resolveToolAgentId(opts);
93
+ if (!agentId)
94
+ throw new Error('message update requires current agent context for audit');
95
+ if (!opts.channel)
96
+ throw new Error('message update requires --channel');
97
+ const targetTs = opts.messageTs;
98
+ if (!targetTs)
99
+ throw new Error('message update requires --message-ts');
100
+ const { agent, client } = await slackWebClientForOpts(opts);
101
+ const teamId = agent.slack.teamId || undefined;
102
+ const channel = await resolveSlackChannelArgument({
103
+ channel: opts.channel,
104
+ client,
105
+ teamId,
106
+ });
107
+ const target = await slackTargetSummary({ channel, client, teamId });
108
+ const basePayload = {
109
+ ...slackTargetPayload(channel),
110
+ ...target,
111
+ targetTs,
112
+ tool: 'anima.message.update',
113
+ };
114
+ await withToolActivity({
115
+ audit: { agentId },
116
+ basePayload,
117
+ effectType: 'slack.message.update',
118
+ op: async () => {
119
+ const slackText = await slackTextForPostMessage({ client, teamId, text });
120
+ const content = slackMessageContentForText(slackText.text);
121
+ const warnings = await mentionWarningsForTarget({
122
+ channelId: channel.id,
123
+ client,
124
+ slackText,
125
+ target,
126
+ teamId,
127
+ });
128
+ const payload = {
129
+ ...(content.blocks ? { blocks: content.blocks } : {}),
130
+ channel: channel.id,
131
+ text: content.text,
132
+ ts: targetTs,
133
+ };
134
+ const response = await client.chat.update(payload);
135
+ const responseTs = response.ts ?? targetTs;
136
+ const permalink = slackMessageRedirectLink({ channelId: channel.id, messageTs: responseTs });
137
+ console.log(slackOutputLine({
138
+ messageTs: responseTs,
139
+ status: 'updated',
140
+ target,
141
+ warnings,
142
+ }));
143
+ return {
144
+ result: undefined,
145
+ completedPayload: {
146
+ payload,
147
+ ...slackTextPayload(slackText, text),
148
+ messageFormat: content.format,
149
+ ...(content.blockCount ? { blockCount: content.blockCount } : {}),
150
+ ...(permalink ? { permalink } : {}),
151
+ ...(warnings.length ? { warnings } : {}),
152
+ status: 'updated',
153
+ text,
154
+ ts: responseTs,
155
+ },
156
+ };
157
+ },
158
+ });
159
+ }
160
+ function subscriptionPayload(subscription) {
161
+ return {
162
+ subscriptionId: subscription.subscriptionId,
163
+ kind: subscription.kind,
164
+ ...(subscription.mutedAt ? { mutedAt: subscription.mutedAt } : {}),
165
+ ...(subscription.threadTs ? { threadTs: subscription.threadTs } : {}),
166
+ };
167
+ }
168
+ function slackTextPayload(slackText, originalText) {
169
+ return {
170
+ ...(slackText.resolved.length > 0 ? { resolvedMentions: slackText.resolved } : {}),
171
+ ...(slackText.text !== originalText ? { slackText: slackText.text } : {}),
172
+ ...(slackText.unresolved.length > 0 ? { unresolvedMentions: slackText.unresolved } : {}),
173
+ };
174
+ }
175
+ function slackMessageRedirectLink(input) {
176
+ if (!input.messageTs)
177
+ return undefined;
178
+ return `https://slack.com/app_redirect?channel=${encodeURIComponent(input.channelId)}&message_ts=${encodeURIComponent(input.messageTs)}`;
179
+ }
180
+ function slackOutputLine(input) {
181
+ const parts = [slackOutputTarget(input.target)];
182
+ if (input.thread)
183
+ parts.push(`thread_ts=${input.thread.threadTs}`);
184
+ if (input.messageTs)
185
+ parts.push(`message_ts=${input.messageTs}`);
186
+ const warning = input.warnings?.length ? ` Warning: ${input.warnings.join(' ')}` : '';
187
+ return `${input.status} successfully. ${parts.join(', ')}.${warning}`;
188
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerReactionCommands(program: Command): void;
3
+ //# sourceMappingURL=reactions-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactions-cli.d.ts","sourceRoot":"","sources":["../../../server/tools/reactions-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAezC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiD/D"}