@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,181 @@
1
+ import { activityServiceForAgent } from '../activities/activity.service.js';
2
+ import { errorMessage, nowIso } from '../ids.js';
3
+ import { WakeQueueService } from '../inbox/wake-queue.service.js';
4
+ import { SlackWorkspaceDirectoryService } from '../slack/workspace-directory.service.js';
5
+ import { InteractiveAskStore, } from '../storage/schema/interactive-ask.store.js';
6
+ export const INTERACTIVE_ASK_ACTION_ID = 'anima.ask.answer';
7
+ const INTERACTIVE_ASK_ANSWERED_RETENTION_MS = 30 * 24 * 60 * 60 * 1000;
8
+ export class InteractiveAskService {
9
+ store;
10
+ queue;
11
+ activity;
12
+ constructor(agentId, store = new InteractiveAskStore(agentId), queue = new WakeQueueService(agentId), activity = activityServiceForAgent(agentId)) {
13
+ this.store = store;
14
+ this.queue = queue;
15
+ this.activity = activity;
16
+ }
17
+ async saveAsk(record) {
18
+ const ask = await this.store.create(record);
19
+ await this.pruneOldAnswered();
20
+ return ask;
21
+ }
22
+ async getAsk(askId) {
23
+ return this.store.find(askId);
24
+ }
25
+ async answerAsk(input) {
26
+ const now = nowIso();
27
+ let result = { outcome: 'not_found' };
28
+ const existingAsk = await this.store.find(input.askId);
29
+ const answeredBy = existingAsk
30
+ && existingAsk.options.some((option) => option.optionId === input.optionId)
31
+ && this.canUserAnswer(existingAsk, input.userId)
32
+ && existingAsk.status === 'pending'
33
+ ? await this.answeringUser(input, existingAsk)
34
+ : undefined;
35
+ if (existingAsk) {
36
+ const touchedAsk = { ...existingAsk, lastInteractionAt: now };
37
+ const option = existingAsk.options.find((candidate) => candidate.optionId === input.optionId);
38
+ if (!option) {
39
+ result = { ask: await this.store.update(touchedAsk), outcome: 'invalid_option' };
40
+ }
41
+ else if (!this.canUserAnswer(existingAsk, input.userId)) {
42
+ result = { ask: await this.store.update(touchedAsk), outcome: 'forbidden' };
43
+ }
44
+ else if (existingAsk.status === 'answered') {
45
+ result = { ask: await this.store.update(touchedAsk), outcome: 'already_answered' };
46
+ }
47
+ else {
48
+ const answeredAsk = {
49
+ ...touchedAsk,
50
+ answeredAt: now,
51
+ answeredBy: answeredBy ?? { slackUserId: input.userId },
52
+ chosenOptionId: option.optionId,
53
+ status: 'answered',
54
+ };
55
+ result = { ask: await this.store.update(answeredAsk), outcome: 'answered' };
56
+ }
57
+ }
58
+ if (result.outcome !== 'answered' || !result.ask) {
59
+ await this.recordAnswerActivity(input.askId, input.optionId, input.userId, result.outcome);
60
+ await this.pruneOldAnswered();
61
+ return result;
62
+ }
63
+ const selected = result.ask.options.find((option) => option.optionId === result.ask?.chosenOptionId);
64
+ if (!selected || !result.ask.answeredBy) {
65
+ await this.recordAnswerActivity(input.askId, input.optionId, input.userId, 'invalid_option');
66
+ await this.pruneOldAnswered();
67
+ return { ask: result.ask, outcome: 'invalid_option' };
68
+ }
69
+ const queued = !(await this.queue.enqueue(choiceResponseInboxItem(result.ask, selected, result.ask.answeredBy))).duplicate;
70
+ await this.recordAnswerActivity(input.askId, input.optionId, input.userId, 'answered', {
71
+ queued,
72
+ optionLabel: selected.label,
73
+ });
74
+ await this.pruneOldAnswered();
75
+ return { ...result, queued };
76
+ }
77
+ async replaceAnsweredMessage(input) {
78
+ const option = input.ask.options.find((candidate) => candidate.optionId === input.ask.chosenOptionId);
79
+ const userId = input.ask.answeredBy?.slackUserId;
80
+ if (!option || !userId)
81
+ return;
82
+ await input.client.chat.update({
83
+ blocks: [
84
+ {
85
+ type: 'section',
86
+ text: {
87
+ type: 'mrkdwn',
88
+ text: `${input.ask.question}\n\n✓ *${option.label}* — chosen by <@${userId}>`,
89
+ },
90
+ },
91
+ ],
92
+ channel: input.ask.channelId,
93
+ text: `${input.ask.question}\n\n✓ ${option.label} — chosen by <@${userId}>`,
94
+ ts: input.ask.messageTs,
95
+ });
96
+ }
97
+ async notifyForbiddenClick(input) {
98
+ const allowed = input.ask.allowedUserIds?.[0];
99
+ if (!allowed)
100
+ return;
101
+ await input.client.chat.postEphemeral({
102
+ channel: input.ask.channelId,
103
+ text: `Only <@${allowed}> can answer this ask.`,
104
+ user: input.userId,
105
+ });
106
+ }
107
+ canUserAnswer(ask, userId) {
108
+ return !ask.allowedUserIds?.length || ask.allowedUserIds.includes(userId);
109
+ }
110
+ async answeringUser(input, ask) {
111
+ const user = await new SlackWorkspaceDirectoryService({
112
+ client: input.client,
113
+ teamId: ask.teamId,
114
+ }).getUser(input.userId).catch(() => undefined);
115
+ return slackAnswerUser(user, input.userId);
116
+ }
117
+ async recordAnswerActivity(askId, optionId, userId, outcome, extra) {
118
+ await this.activity.record({
119
+ type: 'anima.ask.answer',
120
+ payload: {
121
+ askId,
122
+ optionId,
123
+ outcome,
124
+ userId,
125
+ ...(extra ?? {}),
126
+ },
127
+ }).catch(() => undefined);
128
+ }
129
+ async pruneOldAnswered() {
130
+ try {
131
+ const cutoffIso = new Date(Date.now() - INTERACTIVE_ASK_ANSWERED_RETENTION_MS).toISOString();
132
+ await this.store.pruneAnsweredBefore(cutoffIso);
133
+ }
134
+ catch (error) {
135
+ console.warn(`Interactive ask retention failed: ${errorMessage(error)}`);
136
+ }
137
+ }
138
+ }
139
+ export function interactiveAskServiceForAgent(agentId) {
140
+ return new InteractiveAskService(agentId);
141
+ }
142
+ export function choiceResponseInboxItem(ask, option, answeredBy) {
143
+ const now = ask.answeredAt ?? nowIso();
144
+ const threadTs = ask.threadTs ?? ask.messageTs;
145
+ return {
146
+ answeredBy,
147
+ askId: ask.askId,
148
+ channelId: ask.channelId,
149
+ ...(ask.channelName ? { channelName: ask.channelName } : {}),
150
+ handling: { createdAt: now, queuedAt: now, status: 'queued', updatedAt: now },
151
+ id: `choice:${ask.agentId}:${ask.askId}`,
152
+ kind: 'choice_response',
153
+ messageTs: ask.messageTs,
154
+ optionId: option.optionId,
155
+ optionLabel: option.label,
156
+ question: ask.question,
157
+ receivedAt: now,
158
+ teamId: ask.teamId,
159
+ threadTs,
160
+ };
161
+ }
162
+ export function slackAnswerUser(user, fallback) {
163
+ const displayName = user?.profile?.display_name?.trim()
164
+ || user?.profile?.real_name?.trim()
165
+ || user?.real_name?.trim()
166
+ || user?.name?.trim()
167
+ || undefined;
168
+ const handle = user?.name?.trim() || undefined;
169
+ return {
170
+ ...(displayName ? { displayName } : {}),
171
+ ...(handle ? { handle } : {}),
172
+ slackUserId: user?.id ?? fallback,
173
+ };
174
+ }
175
+ export function ownerAllowedUser(owner) {
176
+ return {
177
+ displayName: owner.displayName,
178
+ ...(owner.handle ? { handle: owner.handle } : {}),
179
+ slackUserId: owner.slackUserId,
180
+ };
181
+ }
@@ -0,0 +1,2 @@
1
+ export declare function readBundledTemplate(filename: string): Promise<string>;
2
+ //# sourceMappingURL=bundled-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundled-templates.d.ts","sourceRoot":"","sources":["../../server/bundled-templates.ts"],"names":[],"mappings":"AASA,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc3E"}
@@ -0,0 +1,24 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { dirname, join } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { isMissingFile } from './storage/json-file.js';
5
+ // templates/ ships at the repo root, outside dist. Relative to this module that's
6
+ // two levels up when compiled (dist/server/bundled-templates.js) and one in dev
7
+ // (server/bundled-templates.ts); try both so the same call works either way.
8
+ export async function readBundledTemplate(filename) {
9
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
10
+ const candidates = [
11
+ join(moduleDir, '..', '..', 'templates', filename),
12
+ join(moduleDir, '..', 'templates', filename),
13
+ ];
14
+ for (const path of candidates) {
15
+ try {
16
+ return await readFile(path, 'utf8');
17
+ }
18
+ catch (error) {
19
+ if (!isMissingFile(error))
20
+ throw error;
21
+ }
22
+ }
23
+ throw new Error(`Bundled template not found: ${filename}`);
24
+ }
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ export declare function createCliProgram(): Command;
4
+ //# sourceMappingURL=anima.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anima.d.ts","sourceRoot":"","sources":["../../../server/cli/anima.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,gBAAgB,IAAI,OAAO,CAiB1C"}
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { errorMessage } from '../ids.js';
4
+ import { registerAskCommands } from '../tools/ask.js';
5
+ import { registerReminderCommands } from '../reminders/cli.js';
6
+ import { registerFileCommands } from '../tools/files-cli.js';
7
+ import { registerMessageHistoryCommands } from '../tools/message-history-cli.js';
8
+ import { registerMessageCommands } from '../tools/messages-cli.js';
9
+ import { registerReactionCommands } from '../tools/reactions-cli.js';
10
+ import { registerSubscriptionCommands } from '../tools/subscriptions-cli.js';
11
+ async function main() {
12
+ await createCliProgram().parseAsync(process.argv);
13
+ }
14
+ export function createCliProgram() {
15
+ const program = new Command();
16
+ program
17
+ .name('anima')
18
+ .description('Agent-facing Anima tools')
19
+ .showHelpAfterError()
20
+ .configureHelp({ sortSubcommands: true });
21
+ registerMessageCommands(program);
22
+ registerMessageHistoryCommands(program);
23
+ registerReactionCommands(program);
24
+ registerSubscriptionCommands(program);
25
+ registerReminderCommands(program);
26
+ registerFileCommands(program);
27
+ registerAskCommands(program);
28
+ return program;
29
+ }
30
+ main().catch((error) => {
31
+ console.error(errorMessage(error));
32
+ process.exitCode = 1;
33
+ });
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ export declare function createAnimactlNpmProgram(): Command;
4
+ //# sourceMappingURL=animactl-npm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animactl-npm.d.ts","sourceRoot":"","sources":["../../../server/cli/animactl-npm.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,wBAAwB,IAAI,OAAO,CAKlD"}
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { errorMessage } from '../ids.js';
4
+ import { registerTopLevelRuntimeCommands } from './runtime-cli.js';
5
+ async function main() {
6
+ await createAnimactlNpmProgram().parseAsync(process.argv);
7
+ }
8
+ export function createAnimactlNpmProgram() {
9
+ const program = new Command();
10
+ program.name('animactl');
11
+ registerTopLevelRuntimeCommands(program);
12
+ return program;
13
+ }
14
+ main().catch((error) => {
15
+ console.error(errorMessage(error));
16
+ process.exitCode = 1;
17
+ });
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ export declare function createAdminCliProgram(): Command;
4
+ //# sourceMappingURL=animactl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animactl.d.ts","sourceRoot":"","sources":["../../../server/cli/animactl.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,qBAAqB,IAAI,OAAO,CAc/C"}
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { errorMessage } from '../ids.js';
4
+ import { registerRuntimeCommand } from './runtime-cli.js';
5
+ import { registerServiceCommands } from './service.js';
6
+ import { registerServicesCommand } from './services-cli.js';
7
+ async function main() {
8
+ await createAdminCliProgram().parseAsync(process.argv);
9
+ }
10
+ export function createAdminCliProgram() {
11
+ const program = new Command();
12
+ program
13
+ .name('animactl')
14
+ .description('Operate Anima server and web services')
15
+ .option('--agent <id>')
16
+ .showHelpAfterError()
17
+ .configureHelp({ sortSubcommands: true });
18
+ registerServiceCommands(program);
19
+ registerServicesCommand(program);
20
+ registerRuntimeCommand(program);
21
+ return program;
22
+ }
23
+ main().catch((error) => {
24
+ console.error(errorMessage(error));
25
+ process.exitCode = 1;
26
+ });
@@ -0,0 +1,33 @@
1
+ import type { Command } from 'commander';
2
+ import { type RuntimeInstallOptions, type RuntimeStatus } from '../runtime/managed-runtime.js';
3
+ import { type RuntimeUpgradeStatusResponse } from '../../shared/runtime-upgrade.js';
4
+ interface RuntimeCliOptions {
5
+ channel?: string;
6
+ dashboardHost?: string;
7
+ dashboardPort?: number;
8
+ drainTimeoutMs?: number;
9
+ force?: boolean;
10
+ idleTimeoutMs?: number;
11
+ logPath?: string;
12
+ npm?: string;
13
+ only?: 'agent' | 'web';
14
+ packageName?: string;
15
+ previousStartedAt?: string;
16
+ previousVersion?: string;
17
+ releaseTrack?: string;
18
+ runtimeDir?: string;
19
+ skipInstall?: boolean;
20
+ targetVersion?: string;
21
+ version?: string;
22
+ verifyTimeoutMs?: number;
23
+ }
24
+ export declare function registerRuntimeCommand(program: Command): void;
25
+ export declare function registerTopLevelRuntimeCommands(program: Command): void;
26
+ export declare function runtimeInstallOptions(options: RuntimeCliOptions, defaults?: {
27
+ defaultChannel?: string;
28
+ defaultVersion?: string;
29
+ }): RuntimeInstallOptions;
30
+ export declare function printRuntimeStatus(status: RuntimeStatus): void;
31
+ export declare function printUpgradeStatus(status: RuntimeUpgradeStatusResponse): void;
32
+ export {};
33
+ //# sourceMappingURL=runtime-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-cli.d.ts","sourceRoot":"","sources":["../../../server/cli/runtime-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAOL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAMvC,OAAO,EAAuB,KAAK,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAEzG,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAK7D;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAMtE;AA6HD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,qBAAqB,CAQvB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAc9D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI,CAgB7E"}
@@ -0,0 +1,309 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { withAnimaHome } from '../anima-home.js';
3
+ import { defaultServerSettingsService } from '../settings/settings.service.js';
4
+ import { DEFAULT_RUNTIME_PACKAGE, currentRuntimePackageInfo, ensureManagedRuntime, installManagedRuntime, readManagedRuntimeStatus, resolveManagedAnimaHome, } from '../runtime/managed-runtime.js';
5
+ import { RuntimeUpgradeService, runRuntimeUpgradeWorker, } from '../runtime/runtime-upgrade.js';
6
+ import { RuntimeReleaseTrack } from '../../shared/runtime-upgrade.js';
7
+ export function registerRuntimeCommand(program) {
8
+ const runtime = program
9
+ .command('runtime')
10
+ .description('Manage the local npm-installed Anima runtime');
11
+ registerRuntimeCommands(runtime, { topLevel: false });
12
+ }
13
+ export function registerTopLevelRuntimeCommands(program) {
14
+ program
15
+ .description('Control the local npm-installed Anima runtime')
16
+ .showHelpAfterError()
17
+ .configureHelp({ sortSubcommands: true });
18
+ registerRuntimeCommands(program, { topLevel: true });
19
+ }
20
+ function registerRuntimeCommands(program, options) {
21
+ program
22
+ .command('install')
23
+ .description('Install Anima into the managed runtime directory')
24
+ .option('--channel <tag>', 'npm dist-tag to install, for example latest or canary')
25
+ .option('--version <version>', 'exact package version to install')
26
+ .option('--runtime-dir <path>', 'runtime directory (default: ~/.anima/runtime/current)')
27
+ .option('--package-name <name>', 'npm package name to install', DEFAULT_RUNTIME_PACKAGE)
28
+ .option('--npm <command>', 'npm command to use', 'npm')
29
+ .action(async (options) => {
30
+ const result = await installManagedRuntime(runtimeInstallOptions(options, { defaultChannel: 'latest' }));
31
+ printInstallResult(result.metadata.version, result.metadata.specifier, result.paths.runtimeDir, result.installed);
32
+ });
33
+ const statusCommand = program
34
+ .command('status')
35
+ .description(options.topLevel ? 'Show managed runtime and local service status' : 'Show the managed runtime installation status')
36
+ .option('--runtime-dir <path>', 'runtime directory (default: ~/.anima/runtime/current)')
37
+ .option('--package-name <name>', 'npm package name to inspect', DEFAULT_RUNTIME_PACKAGE);
38
+ statusCommand.action(async (commandOptions) => {
39
+ if (options.topLevel) {
40
+ await runManagedServiceCommand('status', commandOptions);
41
+ return;
42
+ }
43
+ const status = await readManagedRuntimeStatus({
44
+ packageName: commandOptions.packageName,
45
+ runtimeDir: commandOptions.runtimeDir,
46
+ });
47
+ printRuntimeStatus(status);
48
+ if (!status.installed)
49
+ process.exitCode = 1;
50
+ });
51
+ if (options.topLevel) {
52
+ program
53
+ .command('runtime-status')
54
+ .description('Show only the managed runtime installation status')
55
+ .option('--runtime-dir <path>', 'runtime directory (default: ~/.anima/runtime/current)')
56
+ .option('--package-name <name>', 'npm package name to inspect', DEFAULT_RUNTIME_PACKAGE)
57
+ .action(async (commandOptions) => {
58
+ const status = await readManagedRuntimeStatus({
59
+ packageName: commandOptions.packageName,
60
+ runtimeDir: commandOptions.runtimeDir,
61
+ });
62
+ printRuntimeStatus(status);
63
+ if (!status.installed)
64
+ process.exitCode = 1;
65
+ });
66
+ }
67
+ program
68
+ .command('upgrade-status')
69
+ .description('Check whether the managed runtime has an available update')
70
+ .action(async () => {
71
+ await withRuntimeHome(options.topLevel, async () => {
72
+ printUpgradeStatus(await new RuntimeUpgradeService().status());
73
+ });
74
+ });
75
+ program
76
+ .command('release-track')
77
+ .description('Show or set the hidden operator release track: stable or canary')
78
+ .argument('[track]', 'stable or canary')
79
+ .action(async (track) => {
80
+ await withRuntimeHome(options.topLevel, async () => {
81
+ if (track === undefined) {
82
+ console.log(`releaseTrack: ${await defaultServerSettingsService.getReleaseTrack()}`);
83
+ return;
84
+ }
85
+ const parsed = RuntimeReleaseTrack.safeParse(track);
86
+ if (!parsed.success)
87
+ throw new Error('release track must be "stable" or "canary"');
88
+ console.log(`releaseTrack: ${await defaultServerSettingsService.setReleaseTrack(parsed.data)}`);
89
+ });
90
+ });
91
+ program
92
+ .command('upgrade-worker')
93
+ .description('Internal detached runtime upgrade worker')
94
+ .requiredOption('--target-version <version>', 'exact runtime version to install')
95
+ .requiredOption('--release-track <track>', 'stable or canary')
96
+ .option('--dashboard-host <host>', 'dashboard host for post-upgrade verification')
97
+ .option('--dashboard-port <port>', 'dashboard port for post-upgrade verification', parsePositiveInteger)
98
+ .option('--idle-timeout-ms <ms>', 'how long to wait for idle agents before failing', parseNonNegativeInteger)
99
+ .option('--log-path <path>', 'upgrade log path')
100
+ .option('--npm <command>', 'npm command to use')
101
+ .option('--package-name <name>', 'npm package name to install', DEFAULT_RUNTIME_PACKAGE)
102
+ .option('--previous-started-at <iso>', 'server startedAt before the upgrade')
103
+ .option('--previous-version <version>', 'version to rollback to on failure')
104
+ .option('--verify-timeout-ms <ms>', 'how long to wait for the upgraded server to verify', parseNonNegativeInteger)
105
+ .action(async (commandOptions) => {
106
+ await withRuntimeHome(options.topLevel, async () => {
107
+ await runRuntimeUpgradeWorker(workerOptions(commandOptions));
108
+ });
109
+ });
110
+ serviceCommand(program, 'start', { installable: true })
111
+ .description('Install the managed runtime if needed, then start local Anima services')
112
+ .action(async (options) => {
113
+ await runManagedServiceCommand('start', options);
114
+ });
115
+ serviceCommand(program, 'restart', { installable: true })
116
+ .description('Install the managed runtime if needed, then restart local Anima services')
117
+ .option('--drain-timeout-ms <ms>', 'How long to wait for active agents to reach a restart drain point', parseNonNegativeInteger)
118
+ .option('--force', 'Restart even if agent inboxes are running or queued')
119
+ .option('--idle-timeout-ms <ms>', 'How long to wait for idle agents before failing', parseNonNegativeInteger)
120
+ .action(async (options) => {
121
+ await runManagedServiceCommand('restart', options);
122
+ });
123
+ serviceCommand(program, 'stop')
124
+ .description('Stop local Anima services from the managed runtime')
125
+ .action(async (options) => {
126
+ await runManagedServiceCommand('stop', options);
127
+ });
128
+ if (!options.topLevel) {
129
+ serviceCommand(program, 'service-status')
130
+ .description('Show managed runtime and local service status')
131
+ .action(async (commandOptions) => {
132
+ await runManagedServiceCommand('status', commandOptions);
133
+ });
134
+ }
135
+ }
136
+ export function runtimeInstallOptions(options, defaults = {}) {
137
+ return {
138
+ channel: options.version ? undefined : options.channel ?? defaults.defaultChannel,
139
+ npmCommand: options.npm,
140
+ packageName: options.packageName,
141
+ runtimeDir: options.runtimeDir,
142
+ version: options.version ?? defaults.defaultVersion,
143
+ };
144
+ }
145
+ export function printRuntimeStatus(status) {
146
+ if (!status.installed) {
147
+ console.log('runtime: not installed');
148
+ console.log(`dir: ${status.paths.runtimeDir}`);
149
+ console.log('Run `npx @meetquinn/animactl start` to install and start the local runtime.');
150
+ return;
151
+ }
152
+ console.log(`runtime: ${status.packageName}@${status.version ?? 'unknown'}`);
153
+ console.log(`dir: ${status.paths.runtimeDir}`);
154
+ console.log(`animactl: ${status.paths.animactlScript}`);
155
+ if (status.metadata) {
156
+ console.log(`requested: ${status.metadata.requested}`);
157
+ console.log(`installedAt: ${status.metadata.installedAt}`);
158
+ }
159
+ }
160
+ export function printUpgradeStatus(status) {
161
+ console.log(`runtime: ${status.currentVersion}`);
162
+ console.log(`releaseTrack: ${status.releaseTrack}`);
163
+ console.log(`latestOnTrack: ${status.latestOnTrack ?? 'unknown'}`);
164
+ console.log(`update: ${status.updateAvailable ? 'available' : 'none'}`);
165
+ console.log(`checkedAt: ${status.checkedAt}`);
166
+ if (status.checkError)
167
+ console.log(`checkError: ${status.checkError.type}: ${status.checkError.message}`);
168
+ console.log(`gate: ${status.gate.state}${status.gate.blockers.length ? ` (${status.gate.blockers.length} blockers)` : ''}`);
169
+ if (status.operation.status !== 'idle') {
170
+ const parts = [
171
+ status.operation.status,
172
+ status.operation.targetVersion ? `target=${status.operation.targetVersion}` : undefined,
173
+ status.operation.error ? `error=${JSON.stringify(status.operation.error)}` : undefined,
174
+ ].filter(Boolean);
175
+ console.log(`operation: ${parts.join(' ')}`);
176
+ }
177
+ }
178
+ function printInstallResult(version, specifier, runtimeDir, installed) {
179
+ const action = installed ? 'installed' : 'using';
180
+ console.log(`runtime: ${action} ${specifier} -> ${version}`);
181
+ console.log(`dir: ${runtimeDir}`);
182
+ }
183
+ function serviceCommand(runtime, name, options = {}) {
184
+ const command = runtime
185
+ .command(name)
186
+ .option('--only <service>', 'Limit the service command to agent or web')
187
+ .option('--runtime-dir <path>', 'runtime directory (default: ~/.anima/runtime/current)')
188
+ .option('--package-name <name>', 'npm package name to inspect/use', DEFAULT_RUNTIME_PACKAGE);
189
+ if (options.installable) {
190
+ command
191
+ .option('--npm <command>', 'npm command to use', 'npm')
192
+ .option('--channel <tag>', 'npm dist-tag to install before start/restart, for example latest or canary')
193
+ .option('--version <version>', 'exact package version to install before start/restart')
194
+ .option('--skip-install', 'Use the currently installed runtime without running npm install first');
195
+ }
196
+ return command;
197
+ }
198
+ async function runManagedServiceCommand(command, options) {
199
+ assertServiceOptions(options);
200
+ const packageName = options.packageName ?? DEFAULT_RUNTIME_PACKAGE;
201
+ const shouldInstall = (command === 'start' || command === 'restart') && !options.skipInstall;
202
+ const status = shouldInstall
203
+ ? undefined
204
+ : await readManagedRuntimeStatus({ packageName, runtimeDir: options.runtimeDir });
205
+ const paths = shouldInstall
206
+ ? (await installRuntimeForService(options)).paths
207
+ : status?.paths;
208
+ if (!paths)
209
+ throw new Error('Unable to resolve managed runtime paths.');
210
+ if (!shouldInstall) {
211
+ if (command === 'status' && status)
212
+ printRuntimeStatus(status);
213
+ if (!status?.installed) {
214
+ process.exitCode = 1;
215
+ return;
216
+ }
217
+ }
218
+ const exitCode = await runAnimactlServices(paths.animactlScript, paths.packageDir, command, options);
219
+ if (exitCode !== 0)
220
+ process.exitCode = exitCode;
221
+ }
222
+ async function installRuntimeForService(options) {
223
+ const current = await currentRuntimePackageInfo();
224
+ const result = await ensureManagedRuntime(runtimeInstallOptions({
225
+ ...options,
226
+ packageName: options.packageName ?? current.name,
227
+ }, {
228
+ defaultVersion: options.channel ? undefined : current.version,
229
+ }));
230
+ const action = result.installed ? 'installed' : 'using';
231
+ console.log(`runtime: ${action} ${result.metadata.packageName}@${result.metadata.version}`);
232
+ console.log(`dir: ${result.paths.runtimeDir}`);
233
+ return { paths: result.paths };
234
+ }
235
+ function assertServiceOptions(options) {
236
+ if (options.only && options.only !== 'agent' && options.only !== 'web') {
237
+ throw new Error('--only must be "agent" or "web"');
238
+ }
239
+ if (options.channel && options.version)
240
+ throw new Error('Choose either --version or --channel, not both.');
241
+ }
242
+ async function runAnimactlServices(animactlScript, packageDir, command, options) {
243
+ const args = [animactlScript, 'services', command];
244
+ if (options.only)
245
+ args.push('--only', options.only);
246
+ if (command === 'restart') {
247
+ if (options.force) {
248
+ args.push('--force');
249
+ if (options.idleTimeoutMs !== undefined)
250
+ args.push('--idle-timeout-ms', String(options.idleTimeoutMs));
251
+ }
252
+ else {
253
+ args.push('--drain-active', '--resume-running');
254
+ const drainTimeoutMs = options.drainTimeoutMs ?? options.idleTimeoutMs;
255
+ if (drainTimeoutMs !== undefined)
256
+ args.push('--drain-timeout-ms', String(drainTimeoutMs));
257
+ }
258
+ }
259
+ return new Promise((resolveDone, reject) => {
260
+ const child = spawn(process.execPath, args, {
261
+ cwd: packageDir,
262
+ env: {
263
+ ...process.env,
264
+ ANIMA_HOME: resolveManagedAnimaHome(),
265
+ },
266
+ stdio: 'inherit',
267
+ });
268
+ child.once('error', reject);
269
+ child.once('exit', (code, signal) => {
270
+ if (signal)
271
+ reject(new Error(`animactl services ${command} exited from signal ${signal}`));
272
+ else
273
+ resolveDone(code ?? 1);
274
+ });
275
+ });
276
+ }
277
+ function parseNonNegativeInteger(value) {
278
+ const parsed = Number(value);
279
+ if (!Number.isInteger(parsed) || parsed < 0)
280
+ throw new Error('value must be a non-negative integer');
281
+ return parsed;
282
+ }
283
+ function parsePositiveInteger(value) {
284
+ const parsed = Number(value);
285
+ if (!Number.isInteger(parsed) || parsed <= 0)
286
+ throw new Error('value must be a positive integer');
287
+ return parsed;
288
+ }
289
+ function workerOptions(options) {
290
+ if (!options.targetVersion)
291
+ throw new Error('--target-version is required');
292
+ const releaseTrack = RuntimeReleaseTrack.parse(options.releaseTrack);
293
+ return {
294
+ ...(options.dashboardHost ? { dashboardHost: options.dashboardHost } : {}),
295
+ ...(options.dashboardPort !== undefined ? { dashboardPort: options.dashboardPort } : {}),
296
+ ...(options.idleTimeoutMs !== undefined ? { idleTimeoutMs: options.idleTimeoutMs } : {}),
297
+ ...(options.logPath ? { logPath: options.logPath } : {}),
298
+ ...(options.npm ? { npmCommand: options.npm } : {}),
299
+ ...(options.packageName ? { packageName: options.packageName } : {}),
300
+ ...(options.previousStartedAt ? { previousStartedAt: options.previousStartedAt } : {}),
301
+ ...(options.previousVersion ? { previousVersion: options.previousVersion } : {}),
302
+ releaseTrack,
303
+ targetVersion: options.targetVersion,
304
+ ...(options.verifyTimeoutMs !== undefined ? { verifyTimeoutMs: options.verifyTimeoutMs } : {}),
305
+ };
306
+ }
307
+ function withRuntimeHome(topLevel, body) {
308
+ return topLevel ? withAnimaHome(resolveManagedAnimaHome(), body) : body();
309
+ }