@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,198 @@
1
+ import { CURRENT_SLACK_MANIFEST_VERSION, } from '../../shared/slack-manifest.js';
2
+ import { AgentConfigError } from './agent-config-ops.js';
3
+ import { AgentService } from './agent.service.js';
4
+ import { appIdFromAppToken, getBotTokenScopes, getSlackDisplayInfo, validateSlackTokenPair, } from './agent-slack-validation.js';
5
+ import { nowIso } from '../ids.js';
6
+ import { WakeQueueService } from '../inbox/wake-queue.service.js';
7
+ import { slackAppInstallUrl, slackAppManifestUrl, slackAppManifestYaml, } from '../slack/app-manifest.js';
8
+ import { createSlackWebClient } from '../slack/client.js';
9
+ import { hasCommandsScope, } from '../slack/shortcuts.js';
10
+ import { SlackWorkspaceDirectoryService } from '../slack/workspace-directory.service.js';
11
+ export class AgentSlackService {
12
+ agentService;
13
+ constructor(agentService) {
14
+ this.agentService = agentService;
15
+ }
16
+ // Per-agent Slack workflows. Lower-level Slack details stay private here.
17
+ async validateTokens(input) {
18
+ return validateSlackTokenPair(input);
19
+ }
20
+ async connect(input) {
21
+ const validation = await validateSlackTokenPair(input);
22
+ if (!validation.connection.valid) {
23
+ throw new AgentConfigError(400, 'Slack token validation failed');
24
+ }
25
+ const connection = validation.connection;
26
+ const hasCurrentManifest = hasCommandsScope(await getBotTokenScopes(input.botToken).catch(() => []));
27
+ const current = await this.agentService.getConfig();
28
+ return this.agentService.saveConfig({
29
+ ...current,
30
+ slack: {
31
+ ...current.slack,
32
+ appId: connection.appId || '',
33
+ appToken: input.appToken,
34
+ avatarUrl: connection.botAvatarUrl || '',
35
+ botToken: input.botToken,
36
+ manifestVersion: hasCurrentManifest ? CURRENT_SLACK_MANIFEST_VERSION : 0,
37
+ teamId: connection.teamId || '',
38
+ workspaceIconUrl: connection.workspaceIconUrl || '',
39
+ workspaceName: connection.workspaceName || '',
40
+ },
41
+ });
42
+ }
43
+ async getManifestUpdateInfo() {
44
+ const agent = await this.agentService.getConfig();
45
+ const appId = agent.slack.appId || appIdFromAppToken(agent.slack.appToken);
46
+ const agentVersion = agent.slack.manifestVersion ?? 0;
47
+ return {
48
+ agentVersion,
49
+ ...(appId ? {
50
+ appManifestUrl: slackAppManifestUrl(appId, agent.slack.teamId),
51
+ reinstallUrl: slackAppInstallUrl(appId),
52
+ } : {}),
53
+ currentVersion: CURRENT_SLACK_MANIFEST_VERSION,
54
+ manifestUpdateYaml: await slackAppManifestYaml(agent),
55
+ needsUpdate: agentVersion < CURRENT_SLACK_MANIFEST_VERSION,
56
+ };
57
+ }
58
+ async upgradeManifestVersion(input) {
59
+ const agent = await this.agentService.getConfig();
60
+ if (!agent.slack.appToken) {
61
+ throw new AgentConfigError(400, `Agent ${agent.id} has no app token configured`);
62
+ }
63
+ const validation = await validateSlackTokenPair({
64
+ appToken: agent.slack.appToken,
65
+ botToken: input.botToken,
66
+ });
67
+ if (!validation.connection.valid) {
68
+ throw new AgentConfigError(400, 'Slack token validation failed');
69
+ }
70
+ const scopes = await getBotTokenScopes(input.botToken);
71
+ if (!hasCommandsScope(scopes)) {
72
+ throw new AgentConfigError(400, 'New bot token is missing the commands scope. Update the Slack app manifest, reinstall the app, then paste the new Bot User OAuth Token.');
73
+ }
74
+ const connection = validation.connection;
75
+ return this.agentService.saveConfig({
76
+ ...agent,
77
+ slack: {
78
+ ...agent.slack,
79
+ appId: connection.appId || agent.slack.appId || '',
80
+ avatarUrl: connection.botAvatarUrl || '',
81
+ botToken: input.botToken,
82
+ manifestVersion: CURRENT_SLACK_MANIFEST_VERSION,
83
+ teamId: connection.teamId || '',
84
+ workspaceIconUrl: connection.workspaceIconUrl || '',
85
+ workspaceName: connection.workspaceName || '',
86
+ },
87
+ });
88
+ }
89
+ async syncDisplayInfo() {
90
+ const agent = await this.agentService.getConfig();
91
+ const info = await getSlackDisplayInfo(await this.getWebClient());
92
+ const appId = info.appId ?? appIdFromAppToken(agent.slack.appToken);
93
+ return this.agentService.saveConfig({
94
+ ...agent,
95
+ slack: {
96
+ ...agent.slack,
97
+ ...info,
98
+ ...(appId ? { appId } : {}),
99
+ },
100
+ });
101
+ }
102
+ async getWebClient() {
103
+ return (await this.getAgentWebClient()).client;
104
+ }
105
+ async getAgentWebClient() {
106
+ const agent = await this.agentService.getConfig();
107
+ return { agent, client: this.webClientForAgent(agent) };
108
+ }
109
+ webClientForAgent(agent) {
110
+ return createSlackWebClient(requireBotToken(agent));
111
+ }
112
+ async fetchPrivateUrl(url) {
113
+ const agent = await this.agentService.getConfig();
114
+ return fetch(url, { headers: { Authorization: `Bearer ${requireBotToken(agent)}` } });
115
+ }
116
+ async listUsers() {
117
+ const { agent, client } = await this.getAgentWebClient();
118
+ return new SlackWorkspaceDirectoryService({ client, teamId: agent.slack.teamId }).getUserCandidates();
119
+ }
120
+ async setOwner(input) {
121
+ const agent = await this.agentService.getConfig();
122
+ const client = this.webClientForAgent(agent);
123
+ const candidates = await new SlackWorkspaceDirectoryService({ client, teamId: agent.slack.teamId }).getUserCandidates();
124
+ const owner = candidates.find((user) => user.slackUserId === input.slackUserId);
125
+ if (!owner)
126
+ throw new AgentConfigError(400, `Slack user not found: ${input.slackUserId}`);
127
+ const introduce = input.introduce !== false; // default true
128
+ const onboardingPromptedAt = introduce
129
+ ? await this.ensureOwnerOnboardingPrompt(agent, owner, input.openerNote)
130
+ : (agent.owner?.slackUserId === owner.slackUserId ? agent.owner.onboardingPromptedAt : undefined);
131
+ return this.agentService.saveConfig({
132
+ ...agent,
133
+ owner: { ...owner, ...(onboardingPromptedAt ? { onboardingPromptedAt } : {}) },
134
+ });
135
+ }
136
+ async getInstallUrl() {
137
+ const agent = await this.agentService.getConfig();
138
+ const manifestYaml = await slackAppManifestYaml(agent);
139
+ return `https://api.slack.com/apps?new_app=1&manifest_yaml=${encodeURIComponent(manifestYaml)}`;
140
+ }
141
+ async ensureOwnerOnboardingPrompt(agent, owner, openerNote) {
142
+ const existingPromptedAt = agent.owner?.slackUserId === owner.slackUserId ? agent.owner.onboardingPromptedAt : undefined;
143
+ if (existingPromptedAt)
144
+ return existingPromptedAt;
145
+ const client = await this.getWebClient();
146
+ const auth = await client.auth.test();
147
+ if (!auth.team_id)
148
+ throw new AgentConfigError(502, 'Slack auth.test did not return a team id');
149
+ const dm = await new SlackWorkspaceDirectoryService({ client, teamId: auth.team_id }).openDm(owner.slackUserId);
150
+ if (!dm.id)
151
+ throw new AgentConfigError(502, `Slack did not return a DM channel for ${owner.slackUserId}`);
152
+ const mention = `<@${owner.slackUserId}>`;
153
+ const ownerName = owner.displayName?.trim()
154
+ || operatorHandleLabel(owner.handle)
155
+ || mention;
156
+ const now = nowIso();
157
+ const textLines = [
158
+ ownerName === mention
159
+ ? `You've been set up here. Your owner is ${mention}.`
160
+ : `You've been set up here. Your owner is ${ownerName} (${mention}).`,
161
+ ];
162
+ if (openerNote?.trim()) {
163
+ textLines.push(`Context from whoever set you up (might be ${ownerName}, might be someone else): ${openerNote.trim()}`);
164
+ textLines.push(`Treat this as their intent, not fact — confirm with ${ownerName} what they actually need.`);
165
+ }
166
+ textLines.push(`Start by reading your MEMORY.md — its Onboarding section walks you through getting set up — then reply here to introduce yourself to ${ownerName}.`);
167
+ await new WakeQueueService(agent.id).enqueue({
168
+ channelId: dm.id,
169
+ handling: { createdAt: now, queuedAt: now, status: 'queued', updatedAt: now },
170
+ id: `agent-onboarding:${agent.id}:${owner.slackUserId}`,
171
+ kind: 'onboarding',
172
+ operator: {
173
+ displayName: owner.displayName,
174
+ ...(owner.handle ? { handle: owner.handle } : {}),
175
+ slackUserId: owner.slackUserId,
176
+ },
177
+ receivedAt: now,
178
+ teamId: auth.team_id,
179
+ text: textLines.join('\n'),
180
+ });
181
+ return now;
182
+ }
183
+ }
184
+ export function agentSlackServiceForAgent(agentId) {
185
+ return new AgentSlackService(new AgentService(agentId));
186
+ }
187
+ function requireBotToken(agent) {
188
+ const token = agent.slack.botToken;
189
+ if (!token)
190
+ throw new AgentConfigError(400, `Agent ${agent.id} has no bot token configured`);
191
+ return token;
192
+ }
193
+ function operatorHandleLabel(handle) {
194
+ const trimmed = handle?.trim();
195
+ if (!trimmed)
196
+ return undefined;
197
+ return trimmed.startsWith('@') ? trimmed : `@${trimmed}`;
198
+ }
@@ -0,0 +1,41 @@
1
+ import { type AgentConfig, type AgentCreateRequest, type AgentUpdateProfileRequest, type AgentUpdateProviderRequest } from '../../shared/agent-config.js';
2
+ import type { AgentSkills } from '../../shared/skills.js';
3
+ import { AgentRegistryStore, AgentStore } from '../storage/schema/agent.store.js';
4
+ import { type KbRegistryService } from '../kb/kb.service.js';
5
+ import { SessionStore, type ArchivedProviderSession, type Session } from '../storage/schema/session.store.js';
6
+ export { AgentConfigError } from './agent-config-ops.js';
7
+ export interface RotateSessionResult {
8
+ agentId: string;
9
+ archivedAt: string;
10
+ archivedProviderSessions: ArchivedProviderSession[];
11
+ }
12
+ export declare class AgentService {
13
+ private readonly agentId;
14
+ private readonly store;
15
+ private readonly sessionStore;
16
+ constructor(agentId: string, store?: AgentStore, sessionStore?: SessionStore);
17
+ exists(): boolean;
18
+ getConfig(): Promise<AgentConfig>;
19
+ createAgent(agent: AgentConfig): Promise<AgentConfig>;
20
+ setEnabled(enabled: boolean): Promise<AgentConfig>;
21
+ updateHome(homePath: string): Promise<AgentConfig>;
22
+ updateProfile(profile: AgentUpdateProfileRequest): Promise<AgentConfig>;
23
+ updateProvider(provider: AgentUpdateProviderRequest): Promise<AgentConfig>;
24
+ getSession(): Promise<Session | null>;
25
+ getSkills(): Promise<AgentSkills>;
26
+ rotateSession(note?: string): Promise<RotateSessionResult>;
27
+ removeAgent(): Promise<AgentConfig>;
28
+ saveConfig(agent: AgentConfig): Promise<AgentConfig>;
29
+ private archiveCurrentProviderSession;
30
+ }
31
+ export declare class AgentRegistryService {
32
+ private readonly registry;
33
+ private readonly kbRegistryService;
34
+ constructor(registry?: AgentRegistryStore, kbRegistryService?: KbRegistryService);
35
+ listAgentConfigs(): Promise<AgentConfig[]>;
36
+ listAgentIds(): Promise<string[]>;
37
+ createAgent(input: AgentCreateRequest): Promise<AgentConfig>;
38
+ serviceFor(agentId: string): AgentService;
39
+ }
40
+ export declare const defaultAgentRegistryService: AgentRegistryService;
41
+ //# sourceMappingURL=agent.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.service.d.ts","sourceRoot":"","sources":["../../../server/agents/agent.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAa1D,OAAO,EACL,kBAAkB,EAClB,UAAU,EACX,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,KAAK,uBAAuB,EAC5B,KAAK,OAAO,EACb,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB,EAAE,uBAAuB,EAAE,CAAC;CACrD;AAWD,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,UAAoC,EAC3C,YAAY,GAAE,YAAwC;IAGzE,MAAM,IAAI,OAAO;IAIX,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAQjC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAOrD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAKlD,aAAa,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,WAAW,CAAC;IAKvE,cAAc,CAAC,QAAQ,EAAE,0BAA0B,GAAG,OAAO,CAAC,WAAW,CAAC;IAW1E,UAAU,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIrC,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAIjC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAM1D,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAMnC,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAO5C,6BAA6B;CAkC5C;AAED,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBADjB,QAAQ,GAAE,kBAA6C,EACvD,iBAAiB,GAAE,iBAA4C;IAG5E,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAKhD,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI3B,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAclE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;CAG1C;AAED,eAAO,MAAM,2BAA2B,sBAA6B,CAAC"}
@@ -0,0 +1,149 @@
1
+ import { AgentConfigError, agentConfigWithProviderUpdate, agentConfigFromCreateInput, assertAgentConfigId, ensureCreateAgentHome, ensureExistingAgentHome, normalizeAgentConfig, validateAgentConfig, } from './agent-config-ops.js';
2
+ import { scanAgentSkills } from './agent-skills.js';
3
+ import { activityServiceForAgent } from '../activities/activity.service.js';
4
+ import { AgentRegistryStore, AgentStore, } from '../storage/schema/agent.store.js';
5
+ import { mkdir } from 'node:fs/promises';
6
+ import { join } from 'node:path';
7
+ import { nowIso } from '../ids.js';
8
+ import { writeSeedMemory } from './seed-memory.js';
9
+ import { defaultKbRegistryService } from '../kb/kb.service.js';
10
+ import { SessionStore, } from '../storage/schema/session.store.js';
11
+ export { AgentConfigError } from './agent-config-ops.js';
12
+ // ---------------------------------------------------------------------------
13
+ // AgentService
14
+ // ---------------------------------------------------------------------------
15
+ export class AgentService {
16
+ agentId;
17
+ store;
18
+ sessionStore;
19
+ constructor(agentId, store = new AgentStore(agentId), sessionStore = new SessionStore(agentId)) {
20
+ this.agentId = agentId;
21
+ this.store = store;
22
+ this.sessionStore = sessionStore;
23
+ }
24
+ exists() {
25
+ return this.store.exists();
26
+ }
27
+ async getConfig() {
28
+ const path = this.store.path();
29
+ if (!this.store.exists())
30
+ throw new AgentConfigError(404, `Agent not found in config: ${this.agentId}`);
31
+ const agent = await this.store.read();
32
+ assertAgentConfigId(this.agentId, agent, path);
33
+ return agent;
34
+ }
35
+ async createAgent(agent) {
36
+ if (this.store.exists()) {
37
+ throw new AgentConfigError(409, `Agent already exists in config: ${this.agentId}`);
38
+ }
39
+ return this.saveConfig(agent);
40
+ }
41
+ async setEnabled(enabled) {
42
+ return this.saveConfig({ ...(await this.getConfig()), enabled });
43
+ }
44
+ async updateHome(homePath) {
45
+ await ensureExistingAgentHome(homePath);
46
+ return this.saveConfig({ ...(await this.getConfig()), homePath });
47
+ }
48
+ async updateProfile(profile) {
49
+ const current = await this.getConfig();
50
+ return this.saveConfig({ ...current, profile: { ...current.profile, ...profile } });
51
+ }
52
+ async updateProvider(provider) {
53
+ const current = await this.getConfig();
54
+ const next = await this.saveConfig(agentConfigWithProviderUpdate(current, provider));
55
+ if (provider.kind && provider.kind !== current.provider.kind) {
56
+ await this.archiveCurrentProviderSession(`provider switched from ${current.provider.kind} to ${next.provider.kind}`);
57
+ }
58
+ return next;
59
+ }
60
+ async getSession() {
61
+ return (await this.sessionStore.read()) ?? null;
62
+ }
63
+ async getSkills() {
64
+ return scanAgentSkills(await this.getConfig());
65
+ }
66
+ async rotateSession(note) {
67
+ const archived = await this.archiveCurrentProviderSession(note?.trim() || undefined);
68
+ if (!archived)
69
+ throw new AgentConfigError(409, `No active provider sessions for agent ${this.agentId}`);
70
+ return { agentId: this.agentId, ...archived };
71
+ }
72
+ async removeAgent() {
73
+ const agent = await this.getConfig();
74
+ await this.store.remove();
75
+ return agent;
76
+ }
77
+ async saveConfig(agent) {
78
+ const next = normalizeAgentConfig(this.agentId, agent);
79
+ await validateAgentConfig(next);
80
+ await this.store.write(next);
81
+ return this.getConfig();
82
+ }
83
+ async archiveCurrentProviderSession(note) {
84
+ const archivedAt = nowIso();
85
+ let updated;
86
+ let archived;
87
+ await this.sessionStore.update((session) => {
88
+ if (!session?.current)
89
+ return undefined;
90
+ archived = {
91
+ ...session.current,
92
+ archivedAt,
93
+ archivedBy: 'operator',
94
+ ...(note ? { note } : {}),
95
+ };
96
+ const { current: _current, latestProviderStats: _latestProviderStats, ...rest } = session;
97
+ updated = {
98
+ ...rest,
99
+ archived: dedupeArchivedSessions([archived, ...(session.archived ?? [])]),
100
+ currentStartedAt: archivedAt,
101
+ updatedAt: archivedAt,
102
+ };
103
+ return updated;
104
+ });
105
+ if (!updated || !archived)
106
+ return undefined;
107
+ const archivedProviderSessions = [archived];
108
+ await activityServiceForAgent(this.agentId).record({
109
+ type: 'anima.session.rotate',
110
+ payload: { archivedAt, archivedCount: 1, archivedProviderSessions, ...(note ? { note } : {}) },
111
+ });
112
+ return { archivedAt, archivedProviderSessions };
113
+ }
114
+ }
115
+ export class AgentRegistryService {
116
+ registry;
117
+ kbRegistryService;
118
+ constructor(registry = new AgentRegistryStore(), kbRegistryService = defaultKbRegistryService) {
119
+ this.registry = registry;
120
+ this.kbRegistryService = kbRegistryService;
121
+ }
122
+ async listAgentConfigs() {
123
+ const ids = await this.registry.listIds();
124
+ return Promise.all(ids.map((id) => this.serviceFor(id).getConfig()));
125
+ }
126
+ listAgentIds() {
127
+ return this.registry.listIds();
128
+ }
129
+ async createAgent(input) {
130
+ const agent = agentConfigFromCreateInput(input);
131
+ const service = this.serviceFor(agent.id);
132
+ if (service.exists()) {
133
+ throw new AgentConfigError(409, `Agent already exists in config: ${agent.id}`);
134
+ }
135
+ await ensureCreateAgentHome(agent.homePath);
136
+ await this.kbRegistryService.ensureDefaultTeamKbForAgentHome(agent.homePath);
137
+ const created = await service.createAgent(agent);
138
+ await writeSeedMemory(created);
139
+ await mkdir(join(created.homePath, 'notes'), { recursive: true });
140
+ return created;
141
+ }
142
+ serviceFor(agentId) {
143
+ return new AgentService(agentId);
144
+ }
145
+ }
146
+ export const defaultAgentRegistryService = new AgentRegistryService();
147
+ function dedupeArchivedSessions(sessions) {
148
+ return [...new Map(sessions.map((s) => [`${s.kind}:${s.id}`, s])).values()];
149
+ }
@@ -0,0 +1,4 @@
1
+ import type { AgentConfig } from '../../shared/agent-config.js';
2
+ export declare function writeSeedMemory(agent: AgentConfig): Promise<void>;
3
+ export declare function renderSeedMemory(agent: Pick<AgentConfig, 'id' | 'profile'>): Promise<string>;
4
+ //# sourceMappingURL=seed-memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed-memory.d.ts","sourceRoot":"","sources":["../../../server/agents/seed-memory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAQhE,wBAAsB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvE;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAIlG"}
@@ -0,0 +1,26 @@
1
+ import { readFile, writeFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { readBundledTemplate } from '../bundled-templates.js';
4
+ import { isMissingFile } from '../storage/json-file.js';
5
+ // Template file: templates/agent-seed-memory.md
6
+ // Keep it generic — no team-specific content; operating mechanics live in the standing prompt.
7
+ const TEMPLATE_FILE = 'agent-seed-memory.md';
8
+ export async function writeSeedMemory(agent) {
9
+ if (!agent.homePath)
10
+ throw new Error(`Agent ${agent.id}: homePath is required`);
11
+ const memoryPath = join(agent.homePath, 'MEMORY.md');
12
+ try {
13
+ await readFile(memoryPath, 'utf8');
14
+ return;
15
+ }
16
+ catch (error) {
17
+ if (!isMissingFile(error))
18
+ throw error;
19
+ }
20
+ await writeFile(memoryPath, await renderSeedMemory(agent), 'utf8');
21
+ }
22
+ export async function renderSeedMemory(agent) {
23
+ const template = await readBundledTemplate(TEMPLATE_FILE);
24
+ const displayName = agent.profile?.displayName?.trim() || agent.id;
25
+ return template.replaceAll('{{displayName}}', displayName);
26
+ }
@@ -0,0 +1,3 @@
1
+ export declare function resolveAnimaHome(): string;
2
+ export declare function withAnimaHome<T>(dir: string, body: () => Promise<T>): Promise<T>;
3
+ //# sourceMappingURL=anima-home.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anima-home.d.ts","sourceRoot":"","sources":["../../server/anima-home.ts"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,IAAI,MAAM,CAQzC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhF"}
@@ -0,0 +1,28 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { statSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { join, resolve } from 'node:path';
5
+ const animaHomeScope = new AsyncLocalStorage();
6
+ export function resolveAnimaHome() {
7
+ const scopedHome = animaHomeScope.getStore();
8
+ if (scopedHome)
9
+ return scopedHome;
10
+ const envHome = process.env.ANIMA_HOME?.trim();
11
+ if (envHome)
12
+ return resolve(envHome);
13
+ const local = resolve('.anima');
14
+ if (isDirectory(local))
15
+ return local;
16
+ return join(homedir(), '.anima');
17
+ }
18
+ export function withAnimaHome(dir, body) {
19
+ return animaHomeScope.run(resolve(dir), body);
20
+ }
21
+ function isDirectory(path) {
22
+ try {
23
+ return statSync(path).isDirectory();
24
+ }
25
+ catch {
26
+ return false;
27
+ }
28
+ }
@@ -0,0 +1,54 @@
1
+ import type { WebClient } from '@slack/web-api';
2
+ import type { AgentOwner } from '../../shared/agent-config.js';
3
+ import type { ChoiceResponseInboxItem } from '../../shared/inbox.js';
4
+ import { type ActivityService } from '../activities/activity.service.js';
5
+ import { WakeQueueService } from '../inbox/wake-queue.service.js';
6
+ import { type SlackUserInfo } from '../slack/workspace-directory.service.js';
7
+ import { InteractiveAskStore, type InteractiveAskOption, type InteractiveAskRecord } from '../storage/schema/interactive-ask.store.js';
8
+ export declare const INTERACTIVE_ASK_ACTION_ID = "anima.ask.answer";
9
+ export interface InteractiveAskAnswerInput {
10
+ askId: string;
11
+ client: WebClient;
12
+ optionId: string;
13
+ userId: string;
14
+ }
15
+ export interface InteractiveAskAnswerResult {
16
+ ask?: InteractiveAskRecord;
17
+ outcome: 'answered' | 'already_answered' | 'forbidden' | 'not_found' | 'invalid_option';
18
+ queued?: boolean;
19
+ }
20
+ export declare class InteractiveAskService {
21
+ private readonly store;
22
+ private readonly queue;
23
+ private readonly activity;
24
+ constructor(agentId: string, store?: InteractiveAskStore, queue?: WakeQueueService, activity?: ActivityService);
25
+ saveAsk(record: InteractiveAskRecord): Promise<InteractiveAskRecord>;
26
+ getAsk(askId: string): Promise<InteractiveAskRecord | undefined>;
27
+ answerAsk(input: InteractiveAskAnswerInput): Promise<InteractiveAskAnswerResult>;
28
+ replaceAnsweredMessage(input: {
29
+ ask: InteractiveAskRecord;
30
+ client: WebClient;
31
+ }): Promise<void>;
32
+ notifyForbiddenClick(input: {
33
+ ask: InteractiveAskRecord;
34
+ client: WebClient;
35
+ userId: string;
36
+ }): Promise<void>;
37
+ private canUserAnswer;
38
+ private answeringUser;
39
+ private recordAnswerActivity;
40
+ private pruneOldAnswered;
41
+ }
42
+ export declare function interactiveAskServiceForAgent(agentId: string): InteractiveAskService;
43
+ export declare function choiceResponseInboxItem(ask: InteractiveAskRecord, option: InteractiveAskOption, answeredBy: NonNullable<InteractiveAskRecord['answeredBy']>): ChoiceResponseInboxItem;
44
+ export declare function slackAnswerUser(user: SlackUserInfo | undefined, fallback: string): {
45
+ displayName?: string;
46
+ handle?: string;
47
+ slackUserId: string;
48
+ };
49
+ export declare function ownerAllowedUser(owner: AgentOwner): {
50
+ displayName?: string;
51
+ handle?: string;
52
+ slackUserId: string;
53
+ };
54
+ //# sourceMappingURL=interactive-ask.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-ask.service.d.ts","sourceRoot":"","sources":["../../../server/asks/interactive-ask.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAElG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7G,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,4CAA4C,CAAC;AAEpD,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAG5D,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,UAAU,GAAG,kBAAkB,GAAG,WAAW,GAAG,WAAW,GAAG,gBAAgB,CAAC;IACxF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,OAAO,EAAE,MAAM,EACE,KAAK,GAAE,mBAAsD,EAC7D,KAAK,GAAE,gBAAgD,EACvD,QAAQ,GAAE,eAAkD;IAGzE,OAAO,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMpE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAIhE,SAAS,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAqDhF,sBAAsB,CAAC,KAAK,EAAE;QAClC,GAAG,EAAE,oBAAoB,CAAC;QAC1B,MAAM,EAAE,SAAS,CAAC;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBX,oBAAoB,CAAC,KAAK,EAAE;QAChC,GAAG,EAAE,oBAAoB,CAAC;QAC1B,MAAM,EAAE,SAAS,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjB,OAAO,CAAC,aAAa;YAIP,aAAa;YAYb,oBAAoB;YAmBpB,gBAAgB;CAQ/B;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAEpF;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,oBAAoB,EACzB,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,WAAW,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,GAC1D,uBAAuB,CAmBzB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAaA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAMA"}