@geminixiang/mikan 1.0.0-beta.9 → 1.0.0-beta.90

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 (998) hide show
  1. package/CHANGELOG.md +337 -426
  2. package/README.md +102 -42
  3. package/dist/adapters/commands/admin.d.ts.map +1 -0
  4. package/dist/adapters/commands/admin.js +33 -0
  5. package/dist/adapters/commands/admin.js.map +1 -0
  6. package/dist/adapters/commands/auto-reply.d.ts +5 -0
  7. package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
  8. package/dist/adapters/commands/auto-reply.js +47 -0
  9. package/dist/adapters/commands/auto-reply.js.map +1 -0
  10. package/dist/adapters/commands/login.d.ts +6 -0
  11. package/dist/adapters/commands/login.d.ts.map +1 -0
  12. package/dist/adapters/commands/login.js +158 -0
  13. package/dist/adapters/commands/login.js.map +1 -0
  14. package/dist/adapters/commands/manifest.d.ts +17 -0
  15. package/dist/adapters/commands/manifest.d.ts.map +1 -0
  16. package/dist/adapters/commands/manifest.js +121 -0
  17. package/dist/adapters/commands/manifest.js.map +1 -0
  18. package/dist/adapters/commands/model.d.ts +9 -0
  19. package/dist/adapters/commands/model.d.ts.map +1 -0
  20. package/dist/adapters/commands/model.js +136 -0
  21. package/dist/adapters/commands/model.js.map +1 -0
  22. package/dist/adapters/commands/new.d.ts.map +1 -0
  23. package/dist/adapters/commands/new.js +39 -0
  24. package/dist/adapters/commands/new.js.map +1 -0
  25. package/dist/adapters/commands/registry.d.ts +4 -0
  26. package/dist/adapters/commands/registry.d.ts.map +1 -0
  27. package/dist/adapters/commands/registry.js +35 -0
  28. package/dist/adapters/commands/registry.js.map +1 -0
  29. package/dist/adapters/commands/sandbox.d.ts +6 -0
  30. package/dist/adapters/commands/sandbox.d.ts.map +1 -0
  31. package/dist/adapters/commands/sandbox.js +125 -0
  32. package/dist/adapters/commands/sandbox.js.map +1 -0
  33. package/dist/adapters/commands/session-view.d.ts.map +1 -0
  34. package/dist/adapters/commands/session-view.js +46 -0
  35. package/dist/adapters/commands/session-view.js.map +1 -0
  36. package/dist/adapters/commands/types.d.ts +105 -0
  37. package/dist/adapters/commands/types.d.ts.map +1 -0
  38. package/dist/adapters/commands/types.js.map +1 -0
  39. package/dist/adapters/commands/utils.d.ts +11 -0
  40. package/dist/adapters/commands/utils.d.ts.map +1 -0
  41. package/dist/adapters/commands/utils.js +43 -0
  42. package/dist/adapters/commands/utils.js.map +1 -0
  43. package/dist/adapters/discord/bot.d.ts +14 -18
  44. package/dist/adapters/discord/bot.d.ts.map +1 -1
  45. package/dist/adapters/discord/bot.js +234 -303
  46. package/dist/adapters/discord/bot.js.map +1 -1
  47. package/dist/adapters/discord/components.d.ts +4 -0
  48. package/dist/adapters/discord/components.d.ts.map +1 -0
  49. package/dist/adapters/discord/components.js +9 -0
  50. package/dist/adapters/discord/components.js.map +1 -0
  51. package/dist/adapters/discord/context.d.ts +3 -7
  52. package/dist/adapters/discord/context.d.ts.map +1 -1
  53. package/dist/adapters/discord/context.js +57 -219
  54. package/dist/adapters/discord/context.js.map +1 -1
  55. package/dist/adapters/discord/format.d.ts +2 -0
  56. package/dist/adapters/discord/format.d.ts.map +1 -0
  57. package/dist/adapters/discord/format.js +47 -0
  58. package/dist/adapters/discord/format.js.map +1 -0
  59. package/dist/adapters/discord/types.d.ts +91 -1
  60. package/dist/adapters/discord/types.d.ts.map +1 -1
  61. package/dist/adapters/discord/types.js.map +1 -1
  62. package/dist/adapters/github/activity.d.ts +3 -0
  63. package/dist/adapters/github/activity.d.ts.map +1 -0
  64. package/dist/adapters/github/activity.js +148 -0
  65. package/dist/adapters/github/activity.js.map +1 -0
  66. package/dist/adapters/github/bot.d.ts +24 -37
  67. package/dist/adapters/github/bot.d.ts.map +1 -1
  68. package/dist/adapters/github/bot.js +209 -397
  69. package/dist/adapters/github/bot.js.map +1 -1
  70. package/dist/adapters/github/client.d.ts +32 -49
  71. package/dist/adapters/github/client.d.ts.map +1 -1
  72. package/dist/adapters/github/client.js +108 -118
  73. package/dist/adapters/github/client.js.map +1 -1
  74. package/dist/adapters/github/context.d.ts +3 -8
  75. package/dist/adapters/github/context.d.ts.map +1 -1
  76. package/dist/adapters/github/context.js +74 -138
  77. package/dist/adapters/github/context.js.map +1 -1
  78. package/dist/adapters/github/github-ops.d.ts +14 -0
  79. package/dist/adapters/github/github-ops.d.ts.map +1 -0
  80. package/dist/adapters/github/github-ops.js +218 -0
  81. package/dist/adapters/github/github-ops.js.map +1 -0
  82. package/dist/adapters/github/ids.d.ts +2 -23
  83. package/dist/adapters/github/ids.d.ts.map +1 -1
  84. package/dist/adapters/github/ids.js +6 -36
  85. package/dist/adapters/github/ids.js.map +1 -1
  86. package/dist/adapters/github/policy.d.ts +19 -0
  87. package/dist/adapters/github/policy.d.ts.map +1 -0
  88. package/dist/adapters/github/policy.js +79 -0
  89. package/dist/adapters/github/policy.js.map +1 -0
  90. package/dist/adapters/github/tool-pack.d.ts +4 -0
  91. package/dist/adapters/github/tool-pack.d.ts.map +1 -0
  92. package/dist/adapters/github/tool-pack.js +40 -0
  93. package/dist/adapters/github/tool-pack.js.map +1 -0
  94. package/dist/adapters/github/tools/checks.d.ts +14 -0
  95. package/dist/adapters/github/tools/checks.d.ts.map +1 -0
  96. package/dist/adapters/github/tools/checks.js +78 -0
  97. package/dist/adapters/github/tools/checks.js.map +1 -0
  98. package/dist/adapters/github/tools/issue.d.ts +18 -0
  99. package/dist/adapters/github/tools/issue.d.ts.map +1 -0
  100. package/dist/adapters/github/tools/issue.js +44 -0
  101. package/dist/adapters/github/tools/issue.js.map +1 -0
  102. package/dist/adapters/github/tools/pr.d.ts +17 -0
  103. package/dist/adapters/github/tools/pr.d.ts.map +1 -0
  104. package/dist/adapters/github/tools/pr.js +40 -0
  105. package/dist/adapters/github/tools/pr.js.map +1 -0
  106. package/dist/adapters/github/tools/read.d.ts +17 -0
  107. package/dist/adapters/github/tools/read.d.ts.map +1 -0
  108. package/dist/adapters/github/tools/read.js +134 -0
  109. package/dist/adapters/github/tools/read.js.map +1 -0
  110. package/dist/adapters/github/tools/review-reply.d.ts +14 -0
  111. package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
  112. package/dist/adapters/github/tools/review-reply.js +34 -0
  113. package/dist/adapters/github/tools/review-reply.js.map +1 -0
  114. package/dist/adapters/github/types.d.ts +200 -57
  115. package/dist/adapters/github/types.d.ts.map +1 -1
  116. package/dist/adapters/github/types.js.map +1 -1
  117. package/dist/adapters/github/webhook.d.ts +7 -0
  118. package/dist/adapters/github/webhook.d.ts.map +1 -0
  119. package/dist/adapters/github/webhook.js +104 -0
  120. package/dist/adapters/github/webhook.js.map +1 -0
  121. package/dist/adapters/intake.d.ts +4 -10
  122. package/dist/adapters/intake.d.ts.map +1 -1
  123. package/dist/adapters/intake.js +85 -32
  124. package/dist/adapters/intake.js.map +1 -1
  125. package/dist/adapters/markdown-tables.d.ts +8 -0
  126. package/dist/adapters/markdown-tables.d.ts.map +1 -0
  127. package/dist/adapters/markdown-tables.js +111 -0
  128. package/dist/adapters/markdown-tables.js.map +1 -0
  129. package/dist/adapters/messages.d.ts +13 -0
  130. package/dist/adapters/messages.d.ts.map +1 -0
  131. package/dist/adapters/messages.js +39 -0
  132. package/dist/adapters/messages.js.map +1 -0
  133. package/dist/adapters/progressive-renderer.d.ts +7 -0
  134. package/dist/adapters/progressive-renderer.d.ts.map +1 -0
  135. package/dist/adapters/progressive-renderer.js +426 -0
  136. package/dist/adapters/progressive-renderer.js.map +1 -0
  137. package/dist/adapters/shared.d.ts +27 -53
  138. package/dist/adapters/shared.d.ts.map +1 -1
  139. package/dist/adapters/shared.js +167 -91
  140. package/dist/adapters/shared.js.map +1 -1
  141. package/dist/adapters/slack/assistant.d.ts +21 -0
  142. package/dist/adapters/slack/assistant.d.ts.map +1 -0
  143. package/dist/adapters/slack/assistant.js +103 -0
  144. package/dist/adapters/slack/assistant.js.map +1 -0
  145. package/dist/adapters/slack/auto-reply-context.d.ts +14 -0
  146. package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -0
  147. package/dist/adapters/slack/auto-reply-context.js +21 -0
  148. package/dist/adapters/slack/auto-reply-context.js.map +1 -0
  149. package/dist/adapters/slack/blocks.d.ts +5 -0
  150. package/dist/adapters/slack/blocks.d.ts.map +1 -1
  151. package/dist/adapters/slack/blocks.js +144 -145
  152. package/dist/adapters/slack/blocks.js.map +1 -1
  153. package/dist/adapters/slack/bot.d.ts +60 -40
  154. package/dist/adapters/slack/bot.d.ts.map +1 -1
  155. package/dist/adapters/slack/bot.js +968 -588
  156. package/dist/adapters/slack/bot.js.map +1 -1
  157. package/dist/adapters/slack/context.d.ts +3 -9
  158. package/dist/adapters/slack/context.d.ts.map +1 -1
  159. package/dist/adapters/slack/context.js +8 -17
  160. package/dist/adapters/slack/context.js.map +1 -1
  161. package/dist/adapters/slack/jev-context.d.ts +17 -0
  162. package/dist/adapters/slack/jev-context.d.ts.map +1 -0
  163. package/dist/adapters/slack/jev-context.js +57 -0
  164. package/dist/adapters/slack/jev-context.js.map +1 -0
  165. package/dist/adapters/slack/markdown.d.ts +2 -0
  166. package/dist/adapters/slack/markdown.d.ts.map +1 -0
  167. package/dist/adapters/slack/markdown.js +43 -0
  168. package/dist/adapters/slack/markdown.js.map +1 -0
  169. package/dist/adapters/slack/persona.d.ts +6 -0
  170. package/dist/adapters/slack/persona.d.ts.map +1 -0
  171. package/dist/adapters/slack/persona.js +13 -0
  172. package/dist/adapters/slack/persona.js.map +1 -0
  173. package/dist/adapters/slack/response-lifecycle.d.ts +3 -4
  174. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  175. package/dist/adapters/slack/response-lifecycle.js +222 -348
  176. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  177. package/dist/adapters/slack/session.d.ts +3 -2
  178. package/dist/adapters/slack/session.d.ts.map +1 -1
  179. package/dist/adapters/slack/session.js +9 -13
  180. package/dist/adapters/slack/session.js.map +1 -1
  181. package/dist/adapters/slack/stream-limits.d.ts +10 -0
  182. package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
  183. package/dist/adapters/slack/stream-limits.js +22 -0
  184. package/dist/adapters/slack/stream-limits.js.map +1 -0
  185. package/dist/adapters/slack/task-intent.d.ts +19 -0
  186. package/dist/adapters/slack/task-intent.d.ts.map +1 -0
  187. package/dist/adapters/slack/task-intent.js +65 -0
  188. package/dist/adapters/slack/task-intent.js.map +1 -0
  189. package/dist/adapters/slack/task-status.d.ts +7 -0
  190. package/dist/adapters/slack/task-status.d.ts.map +1 -0
  191. package/dist/adapters/slack/task-status.js +96 -0
  192. package/dist/adapters/slack/task-status.js.map +1 -0
  193. package/dist/adapters/slack/tool-pack.d.ts +4 -0
  194. package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
  195. package/dist/adapters/slack/tool-pack.js +40 -0
  196. package/dist/adapters/slack/tool-pack.js.map +1 -0
  197. package/dist/adapters/slack/tools/blockkit.d.ts +17 -0
  198. package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
  199. package/dist/adapters/slack/tools/blockkit.js +98 -0
  200. package/dist/adapters/slack/tools/blockkit.js.map +1 -0
  201. package/dist/adapters/slack/types.d.ts +91 -5
  202. package/dist/adapters/slack/types.d.ts.map +1 -1
  203. package/dist/adapters/slack/types.js.map +1 -1
  204. package/dist/adapters/slack/update-diagnostics.d.ts +13 -0
  205. package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
  206. package/dist/adapters/slack/update-diagnostics.js +128 -0
  207. package/dist/adapters/slack/update-diagnostics.js.map +1 -0
  208. package/dist/adapters/telegram/bot.d.ts +12 -19
  209. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  210. package/dist/adapters/telegram/bot.js +114 -239
  211. package/dist/adapters/telegram/bot.js.map +1 -1
  212. package/dist/adapters/telegram/context.d.ts +3 -7
  213. package/dist/adapters/telegram/context.d.ts.map +1 -1
  214. package/dist/adapters/telegram/context.js +49 -191
  215. package/dist/adapters/telegram/context.js.map +1 -1
  216. package/dist/adapters/telegram/types.d.ts +24 -1
  217. package/dist/adapters/telegram/types.d.ts.map +1 -1
  218. package/dist/adapters/telegram/types.js.map +1 -1
  219. package/dist/adapters/types.d.ts +92 -17
  220. package/dist/adapters/types.d.ts.map +1 -1
  221. package/dist/adapters/types.js.map +1 -1
  222. package/dist/adapters/web/admin/client-assets.d.ts +4 -0
  223. package/dist/adapters/web/admin/client-assets.d.ts.map +1 -0
  224. package/dist/adapters/web/admin/client-assets.js +1766 -0
  225. package/dist/adapters/web/admin/client-assets.js.map +1 -0
  226. package/dist/adapters/web/admin/portal.d.ts +26 -0
  227. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  228. package/dist/adapters/web/admin/portal.js +1490 -0
  229. package/dist/adapters/web/admin/portal.js.map +1 -0
  230. package/dist/adapters/web/admin/provider-models.d.ts +10 -0
  231. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  232. package/dist/adapters/web/admin/provider-models.js +103 -0
  233. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  234. package/dist/adapters/web/admin/types.d.ts +54 -0
  235. package/dist/adapters/web/admin/types.d.ts.map +1 -0
  236. package/dist/adapters/web/admin/types.js.map +1 -0
  237. package/dist/adapters/web/login/oauth.d.ts +4 -0
  238. package/dist/adapters/web/login/oauth.d.ts.map +1 -0
  239. package/dist/adapters/web/login/oauth.js +219 -0
  240. package/dist/adapters/web/login/oauth.js.map +1 -0
  241. package/dist/adapters/web/login/portal.d.ts +10 -0
  242. package/dist/adapters/web/login/portal.d.ts.map +1 -0
  243. package/dist/adapters/web/login/portal.js +1336 -0
  244. package/dist/adapters/web/login/portal.js.map +1 -0
  245. package/dist/adapters/web/login/types.d.ts +34 -0
  246. package/dist/adapters/web/login/types.d.ts.map +1 -0
  247. package/dist/adapters/web/login/types.js.map +1 -0
  248. package/dist/adapters/web/portal-shell.d.ts +9 -0
  249. package/dist/adapters/web/portal-shell.d.ts.map +1 -0
  250. package/dist/adapters/web/portal-shell.js +428 -0
  251. package/dist/adapters/web/portal-shell.js.map +1 -0
  252. package/dist/adapters/web/server.d.ts +35 -0
  253. package/dist/adapters/web/server.d.ts.map +1 -0
  254. package/dist/adapters/web/server.js +80 -0
  255. package/dist/adapters/web/server.js.map +1 -0
  256. package/dist/adapters/web/session-view/portal.d.ts +19 -0
  257. package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
  258. package/dist/adapters/web/session-view/portal.js +1833 -0
  259. package/dist/adapters/web/session-view/portal.js.map +1 -0
  260. package/dist/adapters/web/session-view/types.d.ts +45 -0
  261. package/dist/adapters/web/session-view/types.d.ts.map +1 -0
  262. package/dist/adapters/web/session-view/types.js.map +1 -0
  263. package/dist/adapters/web/token-store.d.ts +10 -0
  264. package/dist/adapters/web/token-store.d.ts.map +1 -0
  265. package/dist/adapters/web/token-store.js +42 -0
  266. package/dist/adapters/web/token-store.js.map +1 -0
  267. package/dist/adapters/web/types.d.ts.map +1 -0
  268. package/dist/adapters/web/types.js.map +1 -0
  269. package/dist/cli/arg-grammar.d.ts +8 -0
  270. package/dist/cli/arg-grammar.d.ts.map +1 -0
  271. package/dist/cli/arg-grammar.js +47 -0
  272. package/dist/cli/arg-grammar.js.map +1 -0
  273. package/dist/cli/boot.d.ts +4 -0
  274. package/dist/cli/boot.d.ts.map +1 -0
  275. package/dist/cli/boot.js +79 -0
  276. package/dist/cli/boot.js.map +1 -0
  277. package/dist/cli/download.d.ts.map +1 -0
  278. package/dist/cli/download.js +84 -0
  279. package/dist/cli/download.js.map +1 -0
  280. package/dist/cli/migrate.d.ts +3 -0
  281. package/dist/cli/migrate.d.ts.map +1 -0
  282. package/dist/cli/migrate.js +74 -0
  283. package/dist/cli/migrate.js.map +1 -0
  284. package/dist/cli/office.d.ts +2 -0
  285. package/dist/cli/office.d.ts.map +1 -0
  286. package/dist/cli/office.js +30 -0
  287. package/dist/cli/office.js.map +1 -0
  288. package/dist/cli/onboard.d.ts +7 -0
  289. package/dist/cli/onboard.d.ts.map +1 -0
  290. package/dist/cli/onboard.js +192 -0
  291. package/dist/cli/onboard.js.map +1 -0
  292. package/dist/cli/process-lifecycle.d.ts +14 -0
  293. package/dist/cli/process-lifecycle.d.ts.map +1 -0
  294. package/dist/cli/process-lifecycle.js +61 -0
  295. package/dist/cli/process-lifecycle.js.map +1 -0
  296. package/dist/cli/types.d.ts +20 -0
  297. package/dist/cli/types.d.ts.map +1 -0
  298. package/dist/cli/types.js.map +1 -0
  299. package/dist/env-manifest.d.ts +14 -0
  300. package/dist/env-manifest.d.ts.map +1 -0
  301. package/dist/env-manifest.js +255 -0
  302. package/dist/env-manifest.js.map +1 -0
  303. package/dist/events/index.d.ts +105 -0
  304. package/dist/events/index.d.ts.map +1 -0
  305. package/dist/events/index.js +252 -0
  306. package/dist/events/index.js.map +1 -0
  307. package/dist/events/scheduler.d.ts +24 -0
  308. package/dist/events/scheduler.d.ts.map +1 -0
  309. package/dist/events/scheduler.js +221 -0
  310. package/dist/events/scheduler.js.map +1 -0
  311. package/dist/file-guards.d.ts +20 -0
  312. package/dist/file-guards.d.ts.map +1 -0
  313. package/dist/file-guards.js +166 -0
  314. package/dist/file-guards.js.map +1 -0
  315. package/dist/harness/budget-stop.d.ts +3 -0
  316. package/dist/harness/budget-stop.d.ts.map +1 -0
  317. package/dist/harness/budget-stop.js +36 -0
  318. package/dist/harness/budget-stop.js.map +1 -0
  319. package/dist/harness/execution-env.d.ts +4 -0
  320. package/dist/harness/execution-env.d.ts.map +1 -0
  321. package/dist/harness/execution-env.js +245 -0
  322. package/dist/harness/execution-env.js.map +1 -0
  323. package/dist/harness/execution-resolver.d.ts +23 -0
  324. package/dist/harness/execution-resolver.d.ts.map +1 -0
  325. package/dist/harness/execution-resolver.js +152 -0
  326. package/dist/harness/execution-resolver.js.map +1 -0
  327. package/dist/harness/http.d.ts +0 -12
  328. package/dist/harness/http.d.ts.map +1 -1
  329. package/dist/harness/http.js +0 -34
  330. package/dist/harness/http.js.map +1 -1
  331. package/dist/harness/index.d.ts +18 -17
  332. package/dist/harness/index.d.ts.map +1 -1
  333. package/dist/harness/index.js +11 -15
  334. package/dist/harness/index.js.map +1 -1
  335. package/dist/harness/jev.d.ts +67 -0
  336. package/dist/harness/jev.d.ts.map +1 -0
  337. package/dist/harness/jev.js +135 -0
  338. package/dist/harness/jev.js.map +1 -0
  339. package/dist/harness/loop-guard.d.ts +10 -0
  340. package/dist/harness/loop-guard.d.ts.map +1 -0
  341. package/dist/harness/loop-guard.js +111 -0
  342. package/dist/harness/loop-guard.js.map +1 -0
  343. package/dist/harness/mcp-result.d.ts +21 -0
  344. package/dist/harness/mcp-result.d.ts.map +1 -0
  345. package/dist/harness/mcp-result.js +193 -0
  346. package/dist/harness/mcp-result.js.map +1 -0
  347. package/dist/harness/mcp.d.ts +17 -0
  348. package/dist/harness/mcp.d.ts.map +1 -0
  349. package/dist/harness/mcp.js +287 -0
  350. package/dist/harness/mcp.js.map +1 -0
  351. package/dist/harness/models.d.ts +2 -19
  352. package/dist/harness/models.d.ts.map +1 -1
  353. package/dist/harness/models.js +43 -95
  354. package/dist/harness/models.js.map +1 -1
  355. package/dist/harness/open-connector.d.ts +3 -0
  356. package/dist/harness/open-connector.d.ts.map +1 -0
  357. package/dist/harness/open-connector.js +106 -0
  358. package/dist/harness/open-connector.js.map +1 -0
  359. package/dist/harness/presenter.d.ts +11 -0
  360. package/dist/harness/presenter.d.ts.map +1 -0
  361. package/dist/harness/presenter.js +867 -0
  362. package/dist/harness/presenter.js.map +1 -0
  363. package/dist/harness/prompt.d.ts +17 -0
  364. package/dist/harness/prompt.d.ts.map +1 -0
  365. package/dist/harness/prompt.js +348 -0
  366. package/dist/harness/prompt.js.map +1 -0
  367. package/dist/harness/run-events.d.ts +10 -0
  368. package/dist/harness/run-events.d.ts.map +1 -0
  369. package/dist/harness/run-events.js +126 -0
  370. package/dist/harness/run-events.js.map +1 -0
  371. package/dist/harness/runner.d.ts +2 -123
  372. package/dist/harness/runner.d.ts.map +1 -1
  373. package/dist/harness/runner.js +570 -414
  374. package/dist/harness/runner.js.map +1 -1
  375. package/dist/harness/session.d.ts +102 -0
  376. package/dist/harness/session.d.ts.map +1 -0
  377. package/dist/harness/session.js +720 -0
  378. package/dist/harness/session.js.map +1 -0
  379. package/dist/harness/skills.d.ts +7 -41
  380. package/dist/harness/skills.d.ts.map +1 -1
  381. package/dist/harness/skills.js +120 -69
  382. package/dist/harness/skills.js.map +1 -1
  383. package/dist/harness/subagent-profiles.d.ts +3 -0
  384. package/dist/harness/subagent-profiles.d.ts.map +1 -0
  385. package/dist/harness/subagent-profiles.js +260 -0
  386. package/dist/harness/subagent-profiles.js.map +1 -0
  387. package/dist/harness/subagent.d.ts +39 -0
  388. package/dist/harness/subagent.d.ts.map +1 -0
  389. package/dist/harness/subagent.js +613 -0
  390. package/dist/harness/subagent.js.map +1 -0
  391. package/dist/harness/tool-args.d.ts +2 -0
  392. package/dist/harness/tool-args.d.ts.map +1 -0
  393. package/dist/harness/tool-args.js +20 -0
  394. package/dist/harness/tool-args.js.map +1 -0
  395. package/dist/harness/tools/attach.d.ts +13 -0
  396. package/dist/harness/tools/attach.d.ts.map +1 -0
  397. package/dist/harness/tools/attach.js +39 -0
  398. package/dist/harness/tools/attach.js.map +1 -0
  399. package/dist/harness/tools/codemode.d.ts +3 -0
  400. package/dist/harness/tools/codemode.d.ts.map +1 -0
  401. package/dist/harness/tools/codemode.js +173 -0
  402. package/dist/harness/tools/codemode.js.map +1 -0
  403. package/dist/harness/tools/event.d.ts +28 -0
  404. package/dist/harness/tools/event.d.ts.map +1 -0
  405. package/dist/harness/tools/event.js +183 -0
  406. package/dist/harness/tools/event.js.map +1 -0
  407. package/dist/harness/tools/generate-image.d.ts +20 -0
  408. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  409. package/dist/harness/tools/generate-image.js +82 -0
  410. package/dist/harness/tools/generate-image.js.map +1 -0
  411. package/dist/harness/tools/history.d.ts +20 -0
  412. package/dist/harness/tools/history.d.ts.map +1 -0
  413. package/dist/harness/tools/history.js +293 -0
  414. package/dist/harness/tools/history.js.map +1 -0
  415. package/dist/harness/tools/host-fn-tool.d.ts +14 -0
  416. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  417. package/dist/harness/tools/host-fn-tool.js +39 -0
  418. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  419. package/dist/harness/tools/index.d.ts +34 -0
  420. package/dist/harness/tools/index.d.ts.map +1 -0
  421. package/dist/harness/tools/index.js +49 -0
  422. package/dist/harness/tools/index.js.map +1 -0
  423. package/dist/harness/tools/jev-browser.d.ts +41 -0
  424. package/dist/harness/tools/jev-browser.d.ts.map +1 -0
  425. package/dist/harness/tools/jev-browser.js +570 -0
  426. package/dist/harness/tools/jev-browser.js.map +1 -0
  427. package/dist/harness/tools/jev.d.ts +15 -0
  428. package/dist/harness/tools/jev.d.ts.map +1 -0
  429. package/dist/harness/tools/jev.js +98 -0
  430. package/dist/harness/tools/jev.js.map +1 -0
  431. package/dist/harness/tools/pi-tools.d.ts +8 -0
  432. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  433. package/dist/harness/tools/pi-tools.js +81 -0
  434. package/dist/harness/tools/pi-tools.js.map +1 -0
  435. package/dist/harness/tools/react.d.ts +12 -0
  436. package/dist/harness/tools/react.d.ts.map +1 -0
  437. package/dist/harness/tools/react.js +25 -0
  438. package/dist/harness/tools/react.js.map +1 -0
  439. package/dist/harness/tools/sandbox.d.ts +24 -0
  440. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  441. package/dist/harness/tools/sandbox.js +79 -0
  442. package/dist/harness/tools/sandbox.js.map +1 -0
  443. package/dist/harness/tools/secret-redaction.d.ts +9 -0
  444. package/dist/harness/tools/secret-redaction.d.ts.map +1 -0
  445. package/dist/harness/tools/secret-redaction.js +88 -0
  446. package/dist/harness/tools/secret-redaction.js.map +1 -0
  447. package/dist/harness/tools/subagent.d.ts +51 -0
  448. package/dist/harness/tools/subagent.d.ts.map +1 -0
  449. package/dist/harness/tools/subagent.js +581 -0
  450. package/dist/harness/tools/subagent.js.map +1 -0
  451. package/dist/harness/tools/task.d.ts +22 -0
  452. package/dist/harness/tools/task.d.ts.map +1 -0
  453. package/dist/harness/tools/task.js +80 -0
  454. package/dist/harness/tools/task.js.map +1 -0
  455. package/dist/harness/tools/tool-search.d.ts +5 -0
  456. package/dist/harness/tools/tool-search.d.ts.map +1 -0
  457. package/dist/harness/tools/tool-search.js +84 -0
  458. package/dist/harness/tools/tool-search.js.map +1 -0
  459. package/dist/harness/tools/types.d.ts +14 -0
  460. package/dist/harness/tools/types.d.ts.map +1 -0
  461. package/dist/harness/tools/types.js.map +1 -0
  462. package/dist/harness/types.d.ts +482 -29
  463. package/dist/harness/types.d.ts.map +1 -1
  464. package/dist/harness/types.js +1 -1
  465. package/dist/harness/types.js.map +1 -1
  466. package/dist/index.d.ts +31 -9
  467. package/dist/index.d.ts.map +1 -1
  468. package/dist/index.js +15 -7
  469. package/dist/index.js.map +1 -1
  470. package/dist/log.d.ts +0 -4
  471. package/dist/log.d.ts.map +1 -1
  472. package/dist/log.js +3 -28
  473. package/dist/log.js.map +1 -1
  474. package/dist/main.js +282 -258
  475. package/dist/main.js.map +1 -1
  476. package/dist/memory-capture/index.d.ts +15 -0
  477. package/dist/memory-capture/index.d.ts.map +1 -0
  478. package/dist/memory-capture/index.js +198 -0
  479. package/dist/memory-capture/index.js.map +1 -0
  480. package/dist/memory-capture/types.d.ts +27 -0
  481. package/dist/memory-capture/types.d.ts.map +1 -0
  482. package/dist/memory-capture/types.js +2 -0
  483. package/dist/memory-capture/types.js.map +1 -0
  484. package/dist/migrations/actor-vaults.d.ts +3 -0
  485. package/dist/migrations/actor-vaults.d.ts.map +1 -0
  486. package/dist/migrations/actor-vaults.js +43 -0
  487. package/dist/migrations/actor-vaults.js.map +1 -0
  488. package/dist/migrations/conversation-settings.d.ts +3 -0
  489. package/dist/migrations/conversation-settings.d.ts.map +1 -0
  490. package/dist/migrations/conversation-settings.js +31 -0
  491. package/dist/migrations/conversation-settings.js.map +1 -0
  492. package/dist/migrations/dream-checkpoints.d.ts +3 -0
  493. package/dist/migrations/dream-checkpoints.d.ts.map +1 -0
  494. package/dist/migrations/dream-checkpoints.js +23 -0
  495. package/dist/migrations/dream-checkpoints.js.map +1 -0
  496. package/dist/migrations/index.d.ts +14 -0
  497. package/dist/migrations/index.d.ts.map +1 -0
  498. package/dist/migrations/index.js +105 -0
  499. package/dist/migrations/index.js.map +1 -0
  500. package/dist/migrations/models-json.d.ts +3 -0
  501. package/dist/migrations/models-json.d.ts.map +1 -0
  502. package/dist/migrations/models-json.js +18 -0
  503. package/dist/migrations/models-json.js.map +1 -0
  504. package/dist/migrations/office-layout.d.ts +4 -0
  505. package/dist/migrations/office-layout.d.ts.map +1 -0
  506. package/dist/migrations/office-layout.js +94 -0
  507. package/dist/migrations/office-layout.js.map +1 -0
  508. package/dist/migrations/office-sessions.d.ts +3 -0
  509. package/dist/migrations/office-sessions.d.ts.map +1 -0
  510. package/dist/migrations/office-sessions.js +81 -0
  511. package/dist/migrations/office-sessions.js.map +1 -0
  512. package/dist/migrations/private-office-dirs.d.ts +3 -0
  513. package/dist/migrations/private-office-dirs.d.ts.map +1 -0
  514. package/dist/migrations/private-office-dirs.js +24 -0
  515. package/dist/migrations/private-office-dirs.js.map +1 -0
  516. package/dist/migrations/sandbox-containers.d.ts +3 -0
  517. package/dist/migrations/sandbox-containers.d.ts.map +1 -0
  518. package/dist/migrations/sandbox-containers.js +36 -0
  519. package/dist/migrations/sandbox-containers.js.map +1 -0
  520. package/dist/migrations/session-files.d.ts +28 -0
  521. package/dist/migrations/session-files.d.ts.map +1 -0
  522. package/dist/migrations/session-files.js +80 -0
  523. package/dist/migrations/session-files.js.map +1 -0
  524. package/dist/migrations/session-v4.d.ts +77 -0
  525. package/dist/migrations/session-v4.d.ts.map +1 -0
  526. package/dist/migrations/session-v4.js +177 -0
  527. package/dist/migrations/session-v4.js.map +1 -0
  528. package/dist/migrations/sessions-sqlite.d.ts +3 -0
  529. package/dist/migrations/sessions-sqlite.d.ts.map +1 -0
  530. package/dist/migrations/sessions-sqlite.js +215 -0
  531. package/dist/migrations/sessions-sqlite.js.map +1 -0
  532. package/dist/migrations/sessions-v3.d.ts +8 -0
  533. package/dist/migrations/sessions-v3.d.ts.map +1 -0
  534. package/dist/migrations/sessions-v3.js +350 -0
  535. package/dist/migrations/sessions-v3.js.map +1 -0
  536. package/dist/migrations/types.d.ts +25 -0
  537. package/dist/migrations/types.d.ts.map +1 -0
  538. package/dist/migrations/types.js +2 -0
  539. package/dist/migrations/types.js.map +1 -0
  540. package/dist/migrations/workspace-events.d.ts +3 -0
  541. package/dist/migrations/workspace-events.d.ts.map +1 -0
  542. package/dist/migrations/workspace-events.js +43 -0
  543. package/dist/migrations/workspace-events.js.map +1 -0
  544. package/dist/observability/index.d.ts +30 -0
  545. package/dist/observability/index.d.ts.map +1 -0
  546. package/dist/observability/index.js +273 -0
  547. package/dist/observability/index.js.map +1 -0
  548. package/dist/observability/instrument.js +9 -6
  549. package/dist/observability/instrument.js.map +1 -1
  550. package/dist/observability/otel.d.ts +10 -0
  551. package/dist/observability/otel.d.ts.map +1 -0
  552. package/dist/observability/otel.js +182 -0
  553. package/dist/observability/otel.js.map +1 -0
  554. package/dist/observability/sentry.d.ts +30 -18
  555. package/dist/observability/sentry.d.ts.map +1 -1
  556. package/dist/observability/sentry.js +94 -119
  557. package/dist/observability/sentry.js.map +1 -1
  558. package/dist/observability/types.d.ts +30 -19
  559. package/dist/observability/types.d.ts.map +1 -1
  560. package/dist/observability/types.js.map +1 -1
  561. package/dist/office/index.d.ts +49 -0
  562. package/dist/office/index.d.ts.map +1 -0
  563. package/dist/office/index.js +395 -0
  564. package/dist/office/index.js.map +1 -0
  565. package/dist/office/projection.d.ts +11 -0
  566. package/dist/office/projection.d.ts.map +1 -0
  567. package/dist/office/projection.js +145 -0
  568. package/dist/office/projection.js.map +1 -0
  569. package/dist/office/types.d.ts +44 -0
  570. package/dist/office/types.d.ts.map +1 -0
  571. package/dist/office/types.js +2 -0
  572. package/dist/office/types.js.map +1 -0
  573. package/dist/runtime/conversation-runtime.d.ts +0 -1
  574. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  575. package/dist/runtime/conversation-runtime.js +365 -155
  576. package/dist/runtime/conversation-runtime.js.map +1 -1
  577. package/dist/runtime/session-lifecycle.d.ts +65 -0
  578. package/dist/runtime/session-lifecycle.d.ts.map +1 -0
  579. package/dist/runtime/session-lifecycle.js +384 -0
  580. package/dist/runtime/session-lifecycle.js.map +1 -0
  581. package/dist/runtime/types.d.ts +42 -20
  582. package/dist/runtime/types.d.ts.map +1 -1
  583. package/dist/runtime/types.js.map +1 -1
  584. package/dist/sandbox/cloudflare.d.ts +4 -0
  585. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  586. package/dist/sandbox/cloudflare.js +59 -55
  587. package/dist/sandbox/cloudflare.js.map +1 -1
  588. package/dist/sandbox/container.d.ts +3 -0
  589. package/dist/sandbox/container.d.ts.map +1 -1
  590. package/dist/sandbox/container.js +39 -20
  591. package/dist/sandbox/container.js.map +1 -1
  592. package/dist/sandbox/host.d.ts +3 -0
  593. package/dist/sandbox/host.d.ts.map +1 -1
  594. package/dist/sandbox/host.js +42 -35
  595. package/dist/sandbox/host.js.map +1 -1
  596. package/dist/sandbox/identity.d.ts +12 -0
  597. package/dist/sandbox/identity.d.ts.map +1 -0
  598. package/dist/sandbox/identity.js +42 -0
  599. package/dist/sandbox/identity.js.map +1 -0
  600. package/dist/sandbox/index.d.ts +5 -15
  601. package/dist/sandbox/index.d.ts.map +1 -1
  602. package/dist/sandbox/index.js +5 -51
  603. package/dist/sandbox/index.js.map +1 -1
  604. package/dist/sandbox/layout.d.ts +5 -0
  605. package/dist/sandbox/layout.d.ts.map +1 -0
  606. package/dist/sandbox/layout.js +13 -0
  607. package/dist/sandbox/layout.js.map +1 -0
  608. package/dist/sandbox/provisioner.d.ts +64 -0
  609. package/dist/sandbox/provisioner.d.ts.map +1 -0
  610. package/dist/sandbox/provisioner.js +546 -0
  611. package/dist/sandbox/provisioner.js.map +1 -0
  612. package/dist/sandbox/registry.d.ts +12 -0
  613. package/dist/sandbox/registry.d.ts.map +1 -0
  614. package/dist/sandbox/registry.js +93 -0
  615. package/dist/sandbox/registry.js.map +1 -0
  616. package/dist/sandbox/types.d.ts +23 -25
  617. package/dist/sandbox/types.d.ts.map +1 -1
  618. package/dist/sandbox/types.js.map +1 -1
  619. package/dist/sandbox/utils.d.ts +21 -0
  620. package/dist/sandbox/utils.d.ts.map +1 -1
  621. package/dist/sandbox/utils.js +100 -8
  622. package/dist/sandbox/utils.js.map +1 -1
  623. package/dist/sessions/chat-history-sync.d.ts +19 -0
  624. package/dist/sessions/chat-history-sync.d.ts.map +1 -0
  625. package/dist/sessions/chat-history-sync.js +459 -0
  626. package/dist/sessions/chat-history-sync.js.map +1 -0
  627. package/dist/sessions/compaction-summary.d.ts +4 -0
  628. package/dist/sessions/compaction-summary.d.ts.map +1 -0
  629. package/dist/sessions/compaction-summary.js +16 -0
  630. package/dist/sessions/compaction-summary.js.map +1 -0
  631. package/dist/sessions/history-line.d.ts +10 -0
  632. package/dist/sessions/history-line.d.ts.map +1 -0
  633. package/dist/sessions/history-line.js +29 -0
  634. package/dist/sessions/history-line.js.map +1 -0
  635. package/dist/sessions/session-key.d.ts +19 -0
  636. package/dist/sessions/session-key.d.ts.map +1 -0
  637. package/dist/sessions/session-key.js +91 -0
  638. package/dist/sessions/session-key.js.map +1 -0
  639. package/dist/sessions/session-store.d.ts +73 -0
  640. package/dist/sessions/session-store.d.ts.map +1 -0
  641. package/dist/sessions/session-store.js +722 -0
  642. package/dist/sessions/session-store.js.map +1 -0
  643. package/dist/sessions/types.d.ts +90 -34
  644. package/dist/sessions/types.d.ts.map +1 -1
  645. package/dist/sessions/types.js +2 -1
  646. package/dist/sessions/types.js.map +1 -1
  647. package/dist/settings/apply.d.ts +9 -0
  648. package/dist/settings/apply.d.ts.map +1 -0
  649. package/dist/settings/apply.js +31 -0
  650. package/dist/settings/apply.js.map +1 -0
  651. package/dist/settings/index.d.ts +28 -0
  652. package/dist/settings/index.d.ts.map +1 -0
  653. package/dist/settings/index.js +320 -0
  654. package/dist/settings/index.js.map +1 -0
  655. package/dist/types.d.ts +209 -191
  656. package/dist/types.d.ts.map +1 -1
  657. package/dist/types.js +1 -3
  658. package/dist/types.js.map +1 -1
  659. package/dist/unknown-values.d.ts +3 -0
  660. package/dist/unknown-values.d.ts.map +1 -0
  661. package/dist/unknown-values.js +7 -0
  662. package/dist/unknown-values.js.map +1 -0
  663. package/dist/vault/index.d.ts +28 -11
  664. package/dist/vault/index.d.ts.map +1 -1
  665. package/dist/vault/index.js +291 -118
  666. package/dist/vault/index.js.map +1 -1
  667. package/dist/vault/types.d.ts +5 -19
  668. package/dist/vault/types.d.ts.map +1 -1
  669. package/dist/vault/types.js.map +1 -1
  670. package/package.json +87 -41
  671. package/dist/adapter.d.ts +0 -2
  672. package/dist/adapter.d.ts.map +0 -1
  673. package/dist/adapter.js +0 -2
  674. package/dist/adapter.js.map +0 -1
  675. package/dist/adapters/github/repo.d.ts +0 -19
  676. package/dist/adapters/github/repo.d.ts.map +0 -1
  677. package/dist/adapters/github/repo.js +0 -58
  678. package/dist/adapters/github/repo.js.map +0 -1
  679. package/dist/adapters/slack/tools/attach.d.ts +0 -12
  680. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  681. package/dist/adapters/slack/tools/attach.js +0 -39
  682. package/dist/adapters/slack/tools/attach.js.map +0 -1
  683. package/dist/adapters/streaming.d.ts +0 -18
  684. package/dist/adapters/streaming.d.ts.map +0 -1
  685. package/dist/adapters/streaming.js +0 -44
  686. package/dist/adapters/streaming.js.map +0 -1
  687. package/dist/adapters/telegram/html.d.ts +0 -3
  688. package/dist/adapters/telegram/html.d.ts.map +0 -1
  689. package/dist/adapters/telegram/html.js +0 -98
  690. package/dist/adapters/telegram/html.js.map +0 -1
  691. package/dist/agent-events.d.ts +0 -5
  692. package/dist/agent-events.d.ts.map +0 -1
  693. package/dist/agent-events.js +0 -26
  694. package/dist/agent-events.js.map +0 -1
  695. package/dist/agent.d.ts +0 -39
  696. package/dist/agent.d.ts.map +0 -1
  697. package/dist/agent.js +0 -1299
  698. package/dist/agent.js.map +0 -1
  699. package/dist/cli/ext-git.d.ts +0 -22
  700. package/dist/cli/ext-git.d.ts.map +0 -1
  701. package/dist/cli/ext-git.js +0 -76
  702. package/dist/cli/ext-git.js.map +0 -1
  703. package/dist/cli/ext.d.ts +0 -2
  704. package/dist/cli/ext.d.ts.map +0 -1
  705. package/dist/cli/ext.js +0 -217
  706. package/dist/cli/ext.js.map +0 -1
  707. package/dist/commands/admin.d.ts.map +0 -1
  708. package/dist/commands/admin.js +0 -30
  709. package/dist/commands/admin.js.map +0 -1
  710. package/dist/commands/auto-reply.d.ts +0 -8
  711. package/dist/commands/auto-reply.d.ts.map +0 -1
  712. package/dist/commands/auto-reply.js +0 -76
  713. package/dist/commands/auto-reply.js.map +0 -1
  714. package/dist/commands/extensions.d.ts +0 -14
  715. package/dist/commands/extensions.d.ts.map +0 -1
  716. package/dist/commands/extensions.js +0 -55
  717. package/dist/commands/extensions.js.map +0 -1
  718. package/dist/commands/login.d.ts +0 -5
  719. package/dist/commands/login.d.ts.map +0 -1
  720. package/dist/commands/login.js +0 -115
  721. package/dist/commands/login.js.map +0 -1
  722. package/dist/commands/model.d.ts +0 -10
  723. package/dist/commands/model.d.ts.map +0 -1
  724. package/dist/commands/model.js +0 -102
  725. package/dist/commands/model.js.map +0 -1
  726. package/dist/commands/new.d.ts.map +0 -1
  727. package/dist/commands/new.js +0 -25
  728. package/dist/commands/new.js.map +0 -1
  729. package/dist/commands/parse.d.ts +0 -7
  730. package/dist/commands/parse.d.ts.map +0 -1
  731. package/dist/commands/parse.js +0 -14
  732. package/dist/commands/parse.js.map +0 -1
  733. package/dist/commands/registry.d.ts +0 -5
  734. package/dist/commands/registry.d.ts.map +0 -1
  735. package/dist/commands/registry.js +0 -31
  736. package/dist/commands/registry.js.map +0 -1
  737. package/dist/commands/sandbox.d.ts +0 -7
  738. package/dist/commands/sandbox.d.ts.map +0 -1
  739. package/dist/commands/sandbox.js +0 -78
  740. package/dist/commands/sandbox.js.map +0 -1
  741. package/dist/commands/session-view.d.ts.map +0 -1
  742. package/dist/commands/session-view.js +0 -41
  743. package/dist/commands/session-view.js.map +0 -1
  744. package/dist/commands/types.d.ts +0 -66
  745. package/dist/commands/types.d.ts.map +0 -1
  746. package/dist/commands/types.js.map +0 -1
  747. package/dist/commands/utils.d.ts +0 -11
  748. package/dist/commands/utils.d.ts.map +0 -1
  749. package/dist/commands/utils.js +0 -29
  750. package/dist/commands/utils.js.map +0 -1
  751. package/dist/config.d.ts +0 -78
  752. package/dist/config.d.ts.map +0 -1
  753. package/dist/config.js +0 -450
  754. package/dist/config.js.map +0 -1
  755. package/dist/download.d.ts.map +0 -1
  756. package/dist/download.js +0 -89
  757. package/dist/download.js.map +0 -1
  758. package/dist/events.d.ts +0 -43
  759. package/dist/events.d.ts.map +0 -1
  760. package/dist/events.js +0 -456
  761. package/dist/events.js.map +0 -1
  762. package/dist/execution-resolver.d.ts +0 -21
  763. package/dist/execution-resolver.d.ts.map +0 -1
  764. package/dist/execution-resolver.js +0 -170
  765. package/dist/execution-resolver.js.map +0 -1
  766. package/dist/harness/auth.d.ts +0 -16
  767. package/dist/harness/auth.d.ts.map +0 -1
  768. package/dist/harness/auth.js +0 -86
  769. package/dist/harness/auth.js.map +0 -1
  770. package/dist/harness/extensions/loader.d.ts +0 -86
  771. package/dist/harness/extensions/loader.d.ts.map +0 -1
  772. package/dist/harness/extensions/loader.js +0 -525
  773. package/dist/harness/extensions/loader.js.map +0 -1
  774. package/dist/harness/extensions/registry.d.ts +0 -23
  775. package/dist/harness/extensions/registry.d.ts.map +0 -1
  776. package/dist/harness/extensions/registry.js +0 -45
  777. package/dist/harness/extensions/registry.js.map +0 -1
  778. package/dist/harness/extensions/types.d.ts +0 -248
  779. package/dist/harness/extensions/types.d.ts.map +0 -1
  780. package/dist/harness/extensions/types.js.map +0 -1
  781. package/dist/harness/session-store.d.ts +0 -77
  782. package/dist/harness/session-store.d.ts.map +0 -1
  783. package/dist/harness/session-store.js +0 -248
  784. package/dist/harness/session-store.js.map +0 -1
  785. package/dist/harness/settings.d.ts +0 -47
  786. package/dist/harness/settings.d.ts.map +0 -1
  787. package/dist/harness/settings.js +0 -29
  788. package/dist/harness/settings.js.map +0 -1
  789. package/dist/model-registry.d.ts +0 -4
  790. package/dist/model-registry.d.ts.map +0 -1
  791. package/dist/model-registry.js +0 -7
  792. package/dist/model-registry.js.map +0 -1
  793. package/dist/platform-messages.d.ts +0 -12
  794. package/dist/platform-messages.d.ts.map +0 -1
  795. package/dist/platform-messages.js +0 -36
  796. package/dist/platform-messages.js.map +0 -1
  797. package/dist/portal-shell.d.ts +0 -4
  798. package/dist/portal-shell.d.ts.map +0 -1
  799. package/dist/portal-shell.js +0 -366
  800. package/dist/portal-shell.js.map +0 -1
  801. package/dist/provisioner.d.ts +0 -61
  802. package/dist/provisioner.d.ts.map +0 -1
  803. package/dist/provisioner.js +0 -517
  804. package/dist/provisioner.js.map +0 -1
  805. package/dist/runtime/agent-run-controller.d.ts +0 -31
  806. package/dist/runtime/agent-run-controller.d.ts.map +0 -1
  807. package/dist/runtime/agent-run-controller.js +0 -195
  808. package/dist/runtime/agent-run-controller.js.map +0 -1
  809. package/dist/sandbox/errors.d.ts +0 -6
  810. package/dist/sandbox/errors.d.ts.map +0 -1
  811. package/dist/sandbox/errors.js +0 -11
  812. package/dist/sandbox/errors.js.map +0 -1
  813. package/dist/sandbox/firecracker.d.ts +0 -15
  814. package/dist/sandbox/firecracker.d.ts.map +0 -1
  815. package/dist/sandbox/firecracker.js +0 -212
  816. package/dist/sandbox/firecracker.js.map +0 -1
  817. package/dist/sandbox/image.d.ts +0 -3
  818. package/dist/sandbox/image.d.ts.map +0 -1
  819. package/dist/sandbox/image.js +0 -27
  820. package/dist/sandbox/image.js.map +0 -1
  821. package/dist/sandbox/path-context.d.ts +0 -3
  822. package/dist/sandbox/path-context.d.ts.map +0 -1
  823. package/dist/sandbox/path-context.js +0 -20
  824. package/dist/sandbox/path-context.js.map +0 -1
  825. package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
  826. package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
  827. package/dist/sessions/agent-memory-file-manager.js +0 -484
  828. package/dist/sessions/agent-memory-file-manager.js.map +0 -1
  829. package/dist/sessions/metadata.d.ts +0 -3
  830. package/dist/sessions/metadata.d.ts.map +0 -1
  831. package/dist/sessions/metadata.js +0 -11
  832. package/dist/sessions/metadata.js.map +0 -1
  833. package/dist/sessions/policy.d.ts +0 -6
  834. package/dist/sessions/policy.d.ts.map +0 -1
  835. package/dist/sessions/policy.js +0 -24
  836. package/dist/sessions/policy.js.map +0 -1
  837. package/dist/sessions/store.d.ts +0 -72
  838. package/dist/sessions/store.d.ts.map +0 -1
  839. package/dist/sessions/store.js +0 -193
  840. package/dist/sessions/store.js.map +0 -1
  841. package/dist/store.d.ts +0 -46
  842. package/dist/store.d.ts.map +0 -1
  843. package/dist/store.js +0 -177
  844. package/dist/store.js.map +0 -1
  845. package/dist/tools/bash.d.ts +0 -10
  846. package/dist/tools/bash.d.ts.map +0 -1
  847. package/dist/tools/bash.js +0 -80
  848. package/dist/tools/bash.js.map +0 -1
  849. package/dist/tools/edit.d.ts +0 -11
  850. package/dist/tools/edit.d.ts.map +0 -1
  851. package/dist/tools/edit.js +0 -131
  852. package/dist/tools/edit.js.map +0 -1
  853. package/dist/tools/event.d.ts +0 -56
  854. package/dist/tools/event.d.ts.map +0 -1
  855. package/dist/tools/event.js +0 -252
  856. package/dist/tools/event.js.map +0 -1
  857. package/dist/tools/github-pr.d.ts +0 -22
  858. package/dist/tools/github-pr.d.ts.map +0 -1
  859. package/dist/tools/github-pr.js +0 -53
  860. package/dist/tools/github-pr.js.map +0 -1
  861. package/dist/tools/index.d.ts +0 -25
  862. package/dist/tools/index.d.ts.map +0 -1
  863. package/dist/tools/index.js +0 -35
  864. package/dist/tools/index.js.map +0 -1
  865. package/dist/tools/react.d.ts +0 -15
  866. package/dist/tools/react.d.ts.map +0 -1
  867. package/dist/tools/react.js +0 -40
  868. package/dist/tools/react.js.map +0 -1
  869. package/dist/tools/read.d.ts +0 -11
  870. package/dist/tools/read.d.ts.map +0 -1
  871. package/dist/tools/read.js +0 -134
  872. package/dist/tools/read.js.map +0 -1
  873. package/dist/tools/sandbox.d.ts +0 -22
  874. package/dist/tools/sandbox.d.ts.map +0 -1
  875. package/dist/tools/sandbox.js +0 -73
  876. package/dist/tools/sandbox.js.map +0 -1
  877. package/dist/tools/truncate.d.ts +0 -33
  878. package/dist/tools/truncate.d.ts.map +0 -1
  879. package/dist/tools/truncate.js +0 -184
  880. package/dist/tools/truncate.js.map +0 -1
  881. package/dist/tools/types.d.ts +0 -54
  882. package/dist/tools/types.d.ts.map +0 -1
  883. package/dist/tools/types.js.map +0 -1
  884. package/dist/tools/write.d.ts +0 -10
  885. package/dist/tools/write.d.ts.map +0 -1
  886. package/dist/tools/write.js +0 -29
  887. package/dist/tools/write.js.map +0 -1
  888. package/dist/trigger.d.ts +0 -22
  889. package/dist/trigger.d.ts.map +0 -1
  890. package/dist/trigger.js +0 -100
  891. package/dist/trigger.js.map +0 -1
  892. package/dist/utils/date.d.ts +0 -10
  893. package/dist/utils/date.d.ts.map +0 -1
  894. package/dist/utils/date.js +0 -23
  895. package/dist/utils/date.js.map +0 -1
  896. package/dist/utils/env.d.ts +0 -3
  897. package/dist/utils/env.d.ts.map +0 -1
  898. package/dist/utils/env.js +0 -12
  899. package/dist/utils/env.js.map +0 -1
  900. package/dist/utils/file-guards.d.ts +0 -9
  901. package/dist/utils/file-guards.d.ts.map +0 -1
  902. package/dist/utils/file-guards.js +0 -59
  903. package/dist/utils/file-guards.js.map +0 -1
  904. package/dist/utils/fs-atomic.d.ts +0 -10
  905. package/dist/utils/fs-atomic.d.ts.map +0 -1
  906. package/dist/utils/fs-atomic.js +0 -45
  907. package/dist/utils/fs-atomic.js.map +0 -1
  908. package/dist/utils/html.d.ts +0 -2
  909. package/dist/utils/html.d.ts.map +0 -1
  910. package/dist/utils/html.js +0 -4
  911. package/dist/utils/html.js.map +0 -1
  912. package/dist/utils/http-body.d.ts +0 -10
  913. package/dist/utils/http-body.d.ts.map +0 -1
  914. package/dist/utils/http-body.js +0 -34
  915. package/dist/utils/http-body.js.map +0 -1
  916. package/dist/vault/routing.d.ts +0 -3
  917. package/dist/vault/routing.d.ts.map +0 -1
  918. package/dist/vault/routing.js +0 -13
  919. package/dist/vault/routing.js.map +0 -1
  920. package/dist/web/admin/portal.d.ts +0 -5
  921. package/dist/web/admin/portal.d.ts.map +0 -1
  922. package/dist/web/admin/portal.js +0 -2572
  923. package/dist/web/admin/portal.js.map +0 -1
  924. package/dist/web/admin/provider-models.d.ts +0 -10
  925. package/dist/web/admin/provider-models.d.ts.map +0 -1
  926. package/dist/web/admin/provider-models.js +0 -96
  927. package/dist/web/admin/provider-models.js.map +0 -1
  928. package/dist/web/admin/store.d.ts +0 -13
  929. package/dist/web/admin/store.d.ts.map +0 -1
  930. package/dist/web/admin/store.js +0 -14
  931. package/dist/web/admin/store.js.map +0 -1
  932. package/dist/web/admin/types.d.ts +0 -30
  933. package/dist/web/admin/types.d.ts.map +0 -1
  934. package/dist/web/admin/types.js.map +0 -1
  935. package/dist/web/agent-events/portal.d.ts +0 -3
  936. package/dist/web/agent-events/portal.d.ts.map +0 -1
  937. package/dist/web/agent-events/portal.js +0 -18
  938. package/dist/web/agent-events/portal.js.map +0 -1
  939. package/dist/web/login/oauth.d.ts +0 -6
  940. package/dist/web/login/oauth.d.ts.map +0 -1
  941. package/dist/web/login/oauth.js +0 -258
  942. package/dist/web/login/oauth.js.map +0 -1
  943. package/dist/web/login/portal.d.ts +0 -17
  944. package/dist/web/login/portal.d.ts.map +0 -1
  945. package/dist/web/login/portal.js +0 -1329
  946. package/dist/web/login/portal.js.map +0 -1
  947. package/dist/web/login/store.d.ts +0 -8
  948. package/dist/web/login/store.d.ts.map +0 -1
  949. package/dist/web/login/store.js +0 -15
  950. package/dist/web/login/store.js.map +0 -1
  951. package/dist/web/login/types.d.ts +0 -50
  952. package/dist/web/login/types.d.ts.map +0 -1
  953. package/dist/web/login/types.js.map +0 -1
  954. package/dist/web/request.d.ts +0 -3
  955. package/dist/web/request.d.ts.map +0 -1
  956. package/dist/web/request.js +0 -13
  957. package/dist/web/request.js.map +0 -1
  958. package/dist/web/server.d.ts +0 -28
  959. package/dist/web/server.d.ts.map +0 -1
  960. package/dist/web/server.js +0 -66
  961. package/dist/web/server.js.map +0 -1
  962. package/dist/web/session-view/command.d.ts +0 -4
  963. package/dist/web/session-view/command.d.ts.map +0 -1
  964. package/dist/web/session-view/command.js +0 -7
  965. package/dist/web/session-view/command.js.map +0 -1
  966. package/dist/web/session-view/portal.d.ts +0 -13
  967. package/dist/web/session-view/portal.d.ts.map +0 -1
  968. package/dist/web/session-view/portal.js +0 -1651
  969. package/dist/web/session-view/portal.js.map +0 -1
  970. package/dist/web/session-view/service.d.ts +0 -6
  971. package/dist/web/session-view/service.d.ts.map +0 -1
  972. package/dist/web/session-view/service.js +0 -498
  973. package/dist/web/session-view/service.js.map +0 -1
  974. package/dist/web/session-view/store.d.ts +0 -8
  975. package/dist/web/session-view/store.d.ts.map +0 -1
  976. package/dist/web/session-view/store.js +0 -15
  977. package/dist/web/session-view/store.js.map +0 -1
  978. package/dist/web/session-view/types.d.ts +0 -50
  979. package/dist/web/session-view/types.d.ts.map +0 -1
  980. package/dist/web/session-view/types.js.map +0 -1
  981. package/dist/web/token-store.d.ts +0 -13
  982. package/dist/web/token-store.d.ts.map +0 -1
  983. package/dist/web/token-store.js +0 -44
  984. package/dist/web/token-store.js.map +0 -1
  985. package/dist/web/types.d.ts.map +0 -1
  986. package/dist/web/types.js.map +0 -1
  987. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  988. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  989. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  990. /package/dist/{commands → adapters/commands}/types.js +0 -0
  991. /package/dist/{harness/extensions → adapters/web/admin}/types.js +0 -0
  992. /package/dist/{tools → adapters/web/login}/types.js +0 -0
  993. /package/dist/{web/admin → adapters/web/session-view}/types.js +0 -0
  994. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  995. /package/dist/{web/login → adapters/web}/types.js +0 -0
  996. /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
  997. /package/dist/{web/session-view → cli}/types.js +0 -0
  998. /package/dist/{web → harness/tools}/types.js +0 -0
package/dist/main.js CHANGED
@@ -1,39 +1,57 @@
1
1
  #!/usr/bin/env node
2
2
  import "./observability/instrument.js";
3
- import { join, resolve } from "path";
4
- import { mkdirSync, statSync, writeFileSync } from "fs";
5
- import { homedir } from "os";
6
- import { fileURLToPath } from "url";
7
- import { dirname, join as pathJoin } from "path";
8
- import { DiscordMessagingBot } from "./adapters/discord/bot.js";
3
+ import { existsSync, mkdirSync, statSync, writeFileSync } from "node:fs";
4
+ import { dirname, join } from "node:path";
5
+ import { fileURLToPath } from "node:url";
9
6
  import { GithubMessagingBot } from "./adapters/github/bot.js";
7
+ import { createGithubToolPack } from "./adapters/github/tool-pack.js";
8
+ import { parseGithubPolicy } from "./adapters/github/policy.js";
10
9
  import { TelegramMessagingBot } from "./adapters/telegram/bot.js";
11
10
  import { SlackMessagingBot as SlackMessagingBotClass } from "./adapters/slack/bot.js";
12
- import { downloadChannel } from "./download.js";
13
- import { EventsWatcher } from "./events.js";
11
+ import { createSlackToolPack } from "./adapters/slack/tool-pack.js";
12
+ import { SLACK_BLOCKKIT_TOOL } from "./adapters/slack/tools/blockkit.js";
13
+ import { GITHUB_CHECKS_TOOL } from "./adapters/github/tools/checks.js";
14
+ import { GITHUB_ISSUE_TOOL } from "./adapters/github/tools/issue.js";
15
+ import { GITHUB_PR_TOOL } from "./adapters/github/tools/pr.js";
16
+ import { GITHUB_READ_TOOL } from "./adapters/github/tools/read.js";
17
+ import { GITHUB_REVIEW_REPLY_TOOL } from "./adapters/github/tools/review-reply.js";
18
+ import { downloadChannel } from "./cli/download.js";
19
+ import { EventScheduler } from "./events/scheduler.js";
14
20
  import * as log from "./log.js";
15
- import { startWebServer } from "./web/server.js";
16
- import { InMemoryAdminTokenStore } from "./web/admin/store.js";
17
- import { InMemoryLinkTokenStore } from "./web/login/store.js";
18
- import { InMemorySessionViewTokenStore } from "./web/session-view/store.js";
19
- import { DockerContainerManager } from "./provisioner.js";
20
- import { assertStateDirOutsideWorkspace, createGlobalSettingsFile, loadGlobalSettings, MissingGlobalSettingsError, } from "./config.js";
21
- import { configureHttpDispatcher, defaultAuthPath, defaultModelsJsonPath, parseHttpIdleTimeoutMs, } from "./harness/index.js";
22
- import { existsSync, readFileSync } from "fs";
23
- import { readEnv, setEnvAliases } from "./utils/env.js";
24
- import { ensureDirExists, isRecord, readJsonFileIfExists } from "./utils/file-guards.js";
25
- import { SandboxError, parseSandboxArg, validateSandbox, } from "./sandbox/index.js";
21
+ import { createProcessShutdownHandler, runShutdownSteps } from "./cli/process-lifecycle.js";
22
+ import { closeWebServer, startWebServer } from "./adapters/web/server.js";
23
+ import { InMemoryAdminTokenStore } from "./adapters/web/admin/portal.js";
24
+ import { InMemoryLinkTokenStore } from "./adapters/web/login/portal.js";
25
+ import { InMemorySessionViewTokenStore } from "./adapters/web/session-view/portal.js";
26
+ import { DockerContainerManager } from "./sandbox/provisioner.js";
27
+ import { loadGlobalSettings, MissingGlobalSettingsError } from "./settings/index.js";
28
+ import { assertStateDirOutsideWorkspace } from "./file-guards.js";
29
+ import { resolveLinkBaseUrl, resolveLinkListenHost } from "./env-manifest.js";
30
+ import { configureHttpDispatcher, parseHttpIdleTimeoutMs } from "./harness/http.js";
31
+ import { defaultModelsJsonPath } from "./harness/models.js";
32
+ import { RunEventHub } from "./harness/run-events.js";
33
+ import { readEnv, setEnvAliases } from "./env-manifest.js";
34
+ import { ensureDirExists, readJsonFileIfExists } from "./file-guards.js";
35
+ import { SandboxError } from "./sandbox/utils.js";
36
+ import { validateSandbox } from "./sandbox/registry.js";
37
+ import { helpText, resolveBoot } from "./cli/boot.js";
38
+ import { runOnboardCommand } from "./cli/onboard.js";
39
+ import { envReport, noPlatformsMessage, platformIsActive } from "./env-manifest.js";
26
40
  import { FileVaultManager } from "./vault/index.js";
27
- import { runExtCommand } from "./cli/ext.js";
41
+ import { runMigrateCommand } from "./cli/migrate.js";
42
+ import { runOfficeCommand } from "./cli/office.js";
43
+ import { formatPendingMigrations, pendingMigrations } from "./migrations/index.js";
44
+ import { createWorkspace } from "./office/index.js";
28
45
  import { createConversationRuntime } from "./runtime/conversation-runtime.js";
29
- import { ChannelStore } from "./store.js";
30
- import * as Sentry from "@sentry/node";
46
+ import { captureError, shutdownObservability } from "./observability/index.js";
47
+ import { MemoryCapture } from "./memory-capture/index.js";
48
+ import { errorMessage, isRecord } from "./unknown-values.js";
31
49
  function getVersion() {
32
- // Try to find package.json in the dist directory or parent
50
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
33
51
  const possiblePaths = [
34
- pathJoin(dirname(fileURLToPath(import.meta.url)), "package.json"),
35
- pathJoin(dirname(fileURLToPath(import.meta.url)), "..", "package.json"),
36
- pathJoin(process.cwd(), "package.json"),
52
+ join(moduleDir, "package.json"),
53
+ join(dirname(moduleDir), "package.json"),
54
+ join(process.cwd(), "package.json"),
37
55
  ];
38
56
  for (const pkgPath of possiblePaths) {
39
57
  const pkg = readJsonFileIfExists(pkgPath, (value) => isRecord(value), () => "Ignoring package.json while resolving version");
@@ -46,63 +64,17 @@ const SLACK_APP_TOKEN = readEnv("SLACK_APP_TOKEN");
46
64
  const SLACK_BOT_TOKEN = readEnv("SLACK_BOT_TOKEN");
47
65
  const TELEGRAM_BOT_TOKEN = readEnv("TELEGRAM_BOT_TOKEN");
48
66
  const DISCORD_BOT_TOKEN = readEnv("DISCORD_BOT_TOKEN");
49
- const GITHUB_APP_ID = readEnv("GITHUB_APP_ID");
50
- const GITHUB_APP_PRIVATE_KEY = readEnv("GITHUB_APP_PRIVATE_KEY");
51
- const GITHUB_APP_PRIVATE_KEY_PATH = readEnv("GITHUB_APP_PRIVATE_KEY_PATH");
52
- const GITHUB_INSTALLATION_ID = readEnv("GITHUB_INSTALLATION_ID");
53
- const GITHUB_REPOS = readEnv("GITHUB_REPOS");
54
- const GITHUB_POLL_INTERVAL = readEnv("GITHUB_POLL_INTERVAL");
55
- const LINK_URL = readEnv("LINK_URL");
67
+ const GITHUB_AGENT_TOKEN = readEnv("GITHUB_AGENT_TOKEN");
68
+ const GITHUB_WEBHOOK_SECRET = readEnv("GITHUB_WEBHOOK_SECRET");
69
+ const LINK_BASE_URL = resolveLinkBaseUrl();
56
70
  const LINK_PORT_RAW = readEnv("LINK_PORT");
57
- const LINK_PORT = LINK_PORT_RAW ? parseInt(LINK_PORT_RAW, 10) : LINK_URL ? 8181 : undefined;
58
- function parseArgs() {
59
- const args = process.argv.slice(2);
60
- let sandbox = { type: "host" };
61
- let workingDir;
62
- let stateDirArg;
63
- let downloadChannelId;
64
- let showOnboard = false;
65
- let showVersion = false;
66
- for (let i = 0; i < args.length; i++) {
67
- const arg = args[i];
68
- if (arg === "--version" || arg === "-v" || arg === "-V") {
69
- showVersion = true;
70
- }
71
- else if (arg === "--onboard") {
72
- showOnboard = true;
73
- }
74
- else if (arg.startsWith("--sandbox=")) {
75
- sandbox = parseSandboxArg(arg.slice("--sandbox=".length));
76
- }
77
- else if (arg === "--sandbox") {
78
- sandbox = parseSandboxArg(args[++i] || "");
79
- }
80
- else if (arg.startsWith("--state-dir=")) {
81
- stateDirArg = arg.slice("--state-dir=".length);
82
- }
83
- else if (arg === "--state-dir") {
84
- stateDirArg = args[++i];
85
- }
86
- else if (arg.startsWith("--download=")) {
87
- downloadChannelId = arg.slice("--download=".length);
88
- }
89
- else if (arg === "--download") {
90
- downloadChannelId = args[++i];
91
- }
92
- else if (!arg.startsWith("-")) {
93
- workingDir = arg;
94
- }
95
- }
96
- return {
97
- workingDir: workingDir ? resolve(workingDir) : undefined,
98
- stateDir: stateDirArg ? resolve(stateDirArg) : undefined,
99
- sandbox,
100
- downloadChannel: downloadChannelId,
101
- showOnboard,
102
- showVersion,
103
- };
104
- }
71
+ const LINK_PORT = LINK_PORT_RAW ? parseInt(LINK_PORT_RAW, 10) : LINK_BASE_URL ? 8181 : undefined;
72
+ const OPENCONNECTOR_ENDPOINT = readEnv("OPENCONNECTOR_ENDPOINT");
73
+ const openConnector = OPENCONNECTOR_ENDPOINT
74
+ ? { url: OPENCONNECTOR_ENDPOINT }
75
+ : undefined;
105
76
  const WORLD_WRITABLE_MODE = 0o002;
77
+ const SHUTDOWN_DRAIN_TIMEOUT_MS = 5 * 60_000;
106
78
  function ensureSecureStateDir(path) {
107
79
  let stat;
108
80
  try {
@@ -157,83 +129,97 @@ function handleStartupError(error) {
157
129
  console.error(String(error));
158
130
  process.exit(1);
159
131
  }
160
- // `mikan ext …` manages extensions and exits; handle it before the normal
161
- // bot-mode argument parsing (which requires a workspace dir and tokens).
162
- if (process.argv[2] === "ext") {
163
- const code = await runExtCommand(process.argv.slice(3));
164
- process.exit(code);
165
- }
166
- let parsedArgs;
132
+ let plan;
167
133
  try {
168
- parsedArgs = parseArgs();
134
+ plan = resolveBoot();
169
135
  }
170
136
  catch (error) {
171
137
  handleStartupError(error);
172
138
  }
173
- // Global fetch: proxy support (HTTP_PROXY/HTTPS_PROXY/NO_PROXY) and idle
174
- // timeouts so a stalled LLM stream errors out instead of hanging a session.
139
+ if (plan.mode === "office") {
140
+ process.exit(runOfficeCommand(plan.officeArgs ?? []));
141
+ }
142
+ if (plan.mode === "migrate") {
143
+ process.exit(await runMigrateCommand(plan.migrateArgs ?? []));
144
+ }
175
145
  const httpIdleTimeoutMs = parseHttpIdleTimeoutMs(readEnv("HTTP_IDLE_TIMEOUT"));
176
146
  configureHttpDispatcher(httpIdleTimeoutMs);
177
- // Handle --version
178
- if (parsedArgs.showVersion) {
147
+ if (plan.mode === "help") {
148
+ console.log(helpText());
149
+ process.exit(0);
150
+ }
151
+ if (plan.mode === "env") {
152
+ console.log(envReport());
153
+ process.exit(0);
154
+ }
155
+ if (plan.mode === "version") {
179
156
  console.log(getVersion());
180
157
  process.exit(0);
181
158
  }
182
- // Handle --onboard mode
183
- if (parsedArgs.showOnboard) {
184
- const stateDir = parsedArgs.stateDir ?? join(homedir(), ".mikan");
159
+ if (plan.mode === "onboard") {
160
+ const stateDir = plan.stateDir;
185
161
  setEnvAliases("STATE_DIR", stateDir);
186
162
  ensureSecureStateDir(stateDir);
187
163
  try {
188
- const settingsPath = createGlobalSettingsFile(stateDir);
189
- console.log(`Created global settings at ${settingsPath}`);
190
- console.log("Review the file, then start mikan with your working directory.");
191
- process.exit(0);
164
+ process.exit(await runOnboardCommand(stateDir));
192
165
  }
193
166
  catch (err) {
194
- console.error(err instanceof Error ? err.message : String(err));
167
+ console.error(errorMessage(err));
195
168
  process.exit(1);
196
169
  }
197
170
  }
198
- // Handle --download mode (Slack only)
199
- if (parsedArgs.downloadChannel) {
171
+ if (plan.mode === "download" && plan.downloadChannel) {
200
172
  if (!SLACK_BOT_TOKEN) {
201
173
  console.error("Missing env: SLACK_BOT_TOKEN");
202
174
  process.exit(1);
203
175
  }
204
- await downloadChannel(parsedArgs.downloadChannel, SLACK_BOT_TOKEN);
176
+ await downloadChannel(plan.downloadChannel, SLACK_BOT_TOKEN);
205
177
  process.exit(0);
206
178
  }
207
- // Normal bot mode - require working dir
208
- if (!parsedArgs.workingDir) {
209
- console.error("Usage: mikan [--state-dir=<dir>] [--sandbox=host|container:<name>|image:<image>|firecracker:<vm-id>:<host-path>|cloudflare:<sandbox-id>] <working-directory>");
210
- console.error(" mikan --onboard [--state-dir=<dir>]");
211
- console.error(" mikan --download <channel-id>");
212
- process.exit(1);
213
- }
214
- const { workingDir, sandbox } = { workingDir: parsedArgs.workingDir, sandbox: parsedArgs.sandbox };
215
- const stateDir = parsedArgs.stateDir ?? join(homedir(), ".mikan");
179
+ const sandbox = plan.sandbox;
180
+ const stateDir = plan.stateDir;
181
+ const workingDir = plan.workingDir;
216
182
  setEnvAliases("STATE_DIR", stateDir);
217
183
  ensureSecureStateDir(stateDir);
184
+ if (!plan.workingDirExplicit) {
185
+ ensureDirExists(workingDir);
186
+ }
218
187
  try {
219
188
  assertStateDirOutsideWorkspace(stateDir, workingDir, sandbox.type);
220
189
  }
221
190
  catch (error) {
222
191
  handleStartupError(error);
223
192
  }
224
- // Validate platform tokens
225
- const hasSlack = !!(SLACK_APP_TOKEN && SLACK_BOT_TOKEN);
226
- const hasTelegram = !!TELEGRAM_BOT_TOKEN;
227
- const hasDiscord = !!DISCORD_BOT_TOKEN;
228
- const hasGithub = !!(GITHUB_APP_ID &&
229
- GITHUB_INSTALLATION_ID &&
230
- (GITHUB_APP_PRIVATE_KEY || GITHUB_APP_PRIVATE_KEY_PATH));
193
+ const hasSlack = platformIsActive("slack");
194
+ const hasTelegram = platformIsActive("telegram");
195
+ const hasDiscord = platformIsActive("discord");
196
+ const hasGithub = platformIsActive("github");
231
197
  if (!hasSlack && !hasTelegram && !hasDiscord && !hasGithub) {
232
- console.error("No platform tokens found. Set one of:\n" +
233
- " Slack: SLACK_APP_TOKEN + SLACK_BOT_TOKEN\n" +
234
- " Telegram: TELEGRAM_BOT_TOKEN\n" +
235
- " Discord: DISCORD_BOT_TOKEN\n" +
236
- " GitHub: GITHUB_APP_ID + GITHUB_INSTALLATION_ID + GITHUB_APP_PRIVATE_KEY(_PATH)");
198
+ console.error(noPlatformsMessage());
199
+ process.exit(1);
200
+ }
201
+ let githubPolicy;
202
+ try {
203
+ githubPolicy = hasGithub
204
+ ? parseGithubPolicy({
205
+ repos: readEnv("GITHUB_REPOS"),
206
+ publicRepos: readEnv("GITHUB_PUBLIC_REPOS"),
207
+ users: readEnv("GITHUB_USERS"),
208
+ minPermission: readEnv("GITHUB_MIN_PERMISSION"),
209
+ triggers: readEnv("GITHUB_TRIGGERS"),
210
+ capabilities: readEnv("GITHUB_CAPABILITIES"),
211
+ })
212
+ : undefined;
213
+ if (hasGithub && !LINK_PORT) {
214
+ throw new Error("GitHub receives webhooks on the link server: set LINK_PORT and LINK_URL");
215
+ }
216
+ }
217
+ catch (error) {
218
+ handleStartupError(error);
219
+ }
220
+ const pending = pendingMigrations(stateDir);
221
+ if (pending.length > 0) {
222
+ console.error(formatPendingMigrations({ pending, stateDir, workspaceRoot: workingDir, sandbox }));
237
223
  process.exit(1);
238
224
  }
239
225
  try {
@@ -242,11 +228,12 @@ try {
242
228
  catch (error) {
243
229
  handleStartupError(error);
244
230
  }
231
+ const workspace = createWorkspace({ root: workingDir, stateDir });
245
232
  const vaultManager = new FileVaultManager(stateDir);
246
233
  if (vaultManager.isEnabled()) {
247
234
  console.log(sandbox.type === "container"
248
235
  ? " Vault system enabled. Container vault active."
249
- : sandbox.type === "image" || sandbox.type === "firecracker" || sandbox.type === "cloudflare"
236
+ : sandbox.type === "image" || sandbox.type === "cloudflare"
250
237
  ? " Vault system enabled. Conversation-scoped credential routing active."
251
238
  : " Vault system enabled. Host mode will not inject vault env.");
252
239
  }
@@ -258,11 +245,12 @@ const startupConfig = (() => {
258
245
  handleStartupError(error);
259
246
  }
260
247
  })();
261
- const sandboxLimits = startupConfig.sandboxCpus || startupConfig.sandboxMemory
262
- ? { cpus: startupConfig.sandboxCpus, memory: startupConfig.sandboxMemory }
248
+ const sandboxSettings = startupConfig.sandbox;
249
+ const sandboxLimits = sandboxSettings?.cpus || sandboxSettings?.memory
250
+ ? { cpus: sandboxSettings?.cpus, memory: sandboxSettings?.memory }
263
251
  : undefined;
264
- const sandboxBoostLimits = startupConfig.sandboxBoostCpus || startupConfig.sandboxBoostMemory
265
- ? { cpus: startupConfig.sandboxBoostCpus, memory: startupConfig.sandboxBoostMemory }
252
+ const sandboxBoostLimits = sandboxSettings?.boost?.cpus || sandboxSettings?.boost?.memory
253
+ ? { cpus: sandboxSettings?.boost?.cpus, memory: sandboxSettings?.boost?.memory }
266
254
  : undefined;
267
255
  const provisioner = sandbox.type === "image"
268
256
  ? new DockerContainerManager(sandbox.image, {
@@ -270,11 +258,12 @@ const provisioner = sandbox.type === "image"
270
258
  boostLimits: sandboxBoostLimits,
271
259
  })
272
260
  : undefined;
261
+ const resourceController = sandbox.type === "image" ? provisioner : undefined;
273
262
  if (sandbox.type === "image") {
274
- ensureDirExists(join(workingDir, "skills"));
275
- ensureDirExists(join(workingDir, "events"));
263
+ ensureDirExists(workspace.skillsDir);
264
+ ensureDirExists(workspace.agentsDir);
276
265
  try {
277
- writeFileSync(join(workingDir, "MEMORY.md"), "", { flag: "wx" });
266
+ writeFileSync(workspace.memoryPath, "", { flag: "wx" });
278
267
  }
279
268
  catch (err) {
280
269
  if (err.code !== "EEXIST")
@@ -283,78 +272,90 @@ if (sandbox.type === "image") {
283
272
  }
284
273
  const linkTokenStore = new InMemoryLinkTokenStore();
285
274
  const sessionViewTokenStore = new InMemorySessionViewTokenStore();
275
+ const runEvents = new RunEventHub();
286
276
  const adminTokenStore = new InMemoryAdminTokenStore();
287
277
  setInterval(() => linkTokenStore.purge(), 5 * 60 * 1000).unref();
288
278
  setInterval(() => sessionViewTokenStore.purge(), 5 * 60 * 1000).unref();
289
279
  setInterval(() => adminTokenStore.purge(), 5 * 60 * 1000).unref();
290
280
  function portalBaseUrl() {
291
- if (LINK_URL)
292
- return LINK_URL.replace(/\/+$/, "");
281
+ if (LINK_BASE_URL)
282
+ return LINK_BASE_URL;
293
283
  if (LINK_PORT)
294
284
  return `http://localhost:${LINK_PORT}`;
295
285
  return undefined;
296
286
  }
297
- /** Idle timeout for managed image containers (10 minutes) */
298
- const IMAGE_IDLE_TIMEOUT_MS = 10 * 60 * 1000;
287
+ const MANAGED_SANDBOX_IDLE_TIMEOUT_MS = 10 * 60 * 1000;
299
288
  if (provisioner) {
300
- await provisioner.reconcile();
301
- await provisioner.stopIdle(IMAGE_IDLE_TIMEOUT_MS);
302
- setInterval(() => provisioner.stopIdle(IMAGE_IDLE_TIMEOUT_MS), IMAGE_IDLE_TIMEOUT_MS).unref();
289
+ await provisioner.reconcile(workspace.root);
290
+ await provisioner.stopIdle(MANAGED_SANDBOX_IDLE_TIMEOUT_MS);
291
+ setInterval(() => provisioner.stopIdle(MANAGED_SANDBOX_IDLE_TIMEOUT_MS), MANAGED_SANDBOX_IDLE_TIMEOUT_MS).unref();
303
292
  }
304
- // Declared before the runtime so the notifier closure can capture them;
305
- // bots register below once their platforms initialize.
306
- const bots = [];
307
293
  const botsByPlatform = {};
308
- /**
309
- * Resolve which platform bot to use: an explicit platform, or the sole
310
- * running one. Mirrors event-file platform resolution.
311
- */
312
- function resolvePlatformBot(op, platform) {
313
- const available = Object.keys(botsByPlatform);
314
- const key = platform?.trim().toLowerCase() || (available.length === 1 ? available[0] : undefined);
315
- const bot = key ? botsByPlatform[key] : undefined;
294
+ function requireGithubBot(op) {
295
+ const bot = botsByPlatform.github;
316
296
  if (!bot) {
317
- throw new Error(platform
318
- ? `${op}: unknown platform '${platform}' (available: ${available.join(", ") || "none"})`
319
- : `${op}: multiple platforms active (${available.join(", ")}); specify platform`);
297
+ throw new Error(`${op}: the GitHub platform is not running`);
320
298
  }
321
- return [key, bot];
322
- }
323
- /** Extension `api.notify` backend: post into a conversation without a run. */
324
- const platformNotifier = async (conversationId, text, platform) => {
325
- const [key, bot] = resolvePlatformBot("notify", platform);
326
- await bot.postMessage(conversationId, text);
327
- log.logInfo(`[notify] posted to ${key}/${conversationId} (${text.length} chars)`);
328
- };
329
- /** Extension `api.react` backend: add a reaction to a message. */
330
- const platformReactor = async (conversationId, messageTs, emoji, platform) => {
331
- const [key, bot] = resolvePlatformBot("react", platform);
332
- if (!bot.addReaction) {
333
- throw new Error(`react: platform '${key}' does not support reactions`);
334
- }
335
- await bot.addReaction(conversationId, messageTs, emoji);
336
- log.logInfo(`[react] :${emoji}: on ${key}/${conversationId}`);
337
- };
338
- /** `github_pr` tool backend: push a prepared branch and open a PR. */
339
- const platformPrCreator = async (conversationId, request) => {
340
- const bot = botsByPlatform.github;
299
+ return bot;
300
+ }
301
+ function requireSlackBot(op) {
302
+ const bot = botsByPlatform.slack;
341
303
  if (!bot) {
342
- throw new Error("github_pr: the GitHub platform is not running");
304
+ throw new Error(`${op}: the Slack platform is not running`);
343
305
  }
344
- return bot.pushAndCreatePr(conversationId, request);
345
- };
306
+ return bot;
307
+ }
308
+ function buildPlatformToolPackFactories() {
309
+ const factories = [];
310
+ if (hasSlack) {
311
+ const platformSlackOps = {
312
+ postBlocks: async (conversationId, { text, blocks, threadTs }) => {
313
+ const bot = requireSlackBot(SLACK_BLOCKKIT_TOOL);
314
+ const ts = threadTs
315
+ ? await bot.postInThreadBlocks(conversationId, threadTs, text, blocks)
316
+ : await bot.postMessageBlocks(conversationId, text, blocks);
317
+ bot.logBotResponse(conversationId, text, ts, threadTs, { slackBlocks: blocks });
318
+ return { ts };
319
+ },
320
+ updateBlocks: async (conversationId, { ts, text, blocks, threadTs }) => {
321
+ const bot = requireSlackBot(SLACK_BLOCKKIT_TOOL);
322
+ await bot.updateMessageBlocks(conversationId, ts, text, blocks);
323
+ bot.logBotResponse(conversationId, text, ts, threadTs, { slackBlocks: blocks });
324
+ },
325
+ ownsBlockKitMessage: (conversationId, ts, threadTs) => requireSlackBot(SLACK_BLOCKKIT_TOOL).ownsBlockKitMessage(conversationId, ts, threadTs),
326
+ };
327
+ factories.push(() => createSlackToolPack(platformSlackOps));
328
+ }
329
+ if (!githubPolicy)
330
+ return factories;
331
+ const githubCapabilities = githubPolicy.capabilities;
332
+ const platformGithubOps = {
333
+ createPullRequest: (conversationId, request) => requireGithubBot(GITHUB_PR_TOOL).ops.createPullRequest(conversationId, request),
334
+ getChecks: (conversationId, branch) => requireGithubBot(GITHUB_CHECKS_TOOL).ops.getChecks(conversationId, branch),
335
+ getJobLog: (conversationId, jobId) => requireGithubBot(GITHUB_CHECKS_TOOL).ops.getJobLog(conversationId, jobId),
336
+ replyToReviewThread: (conversationId, commentId, body) => requireGithubBot(GITHUB_REVIEW_REPLY_TOOL).ops.replyToReviewThread(conversationId, commentId, body),
337
+ readGithub: (conversationId, request) => requireGithubBot(GITHUB_READ_TOOL).ops.readGithub(conversationId, request),
338
+ manageIssue: (conversationId, request) => requireGithubBot(GITHUB_ISSUE_TOOL).ops.manageIssue(conversationId, request),
339
+ };
340
+ factories.push(() => createGithubToolPack(platformGithubOps, githubCapabilities));
341
+ return factories;
342
+ }
343
+ let eventScheduler;
346
344
  const handler = createConversationRuntime({
347
- workingDir,
345
+ workspace,
346
+ eventScheduler: () => eventScheduler,
348
347
  sandbox,
349
348
  vaultManager,
350
349
  provisioner,
350
+ resourceController,
351
351
  linkTokenStore,
352
352
  sessionViewTokenStore,
353
353
  adminTokenStore,
354
+ openConnector,
355
+ runEvents,
354
356
  portalBaseUrl: portalBaseUrl(),
355
- platformNotifier,
356
- platformReactor,
357
- platformPrCreator,
357
+ platformToolPackFactories: buildPlatformToolPackFactories(),
358
+ memoryCapture: (models) => new MemoryCapture(models),
358
359
  });
359
360
  const sandboxDesc = sandbox.type === "host"
360
361
  ? "host"
@@ -362,35 +363,15 @@ const sandboxDesc = sandbox.type === "host"
362
363
  ? `container:${sandbox.container}`
363
364
  : sandbox.type === "image"
364
365
  ? `image:${sandbox.image}`
365
- : sandbox.type === "firecracker"
366
- ? `firecracker:${sandbox.vmId}`
367
- : `cloudflare:${sandbox.sandboxId}`;
366
+ : `cloudflare:${sandbox.sandboxId}`;
368
367
  log.logStartup(workingDir, sandboxDesc);
369
368
  logHarnessStartupSummary();
370
- /**
371
- * One-look confirmation of the harness runtime surface, aimed at upgrade
372
- * verification: config moved from ~/.pi to ~/.mikan with no fallback, so a
373
- * missing auth.json here is the first thing to check when runs fail.
374
- */
375
369
  function logHarnessStartupSummary() {
376
370
  const proxy = process.env.HTTPS_PROXY ??
377
371
  process.env.https_proxy ??
378
372
  process.env.HTTP_PROXY ??
379
373
  process.env.http_proxy;
380
374
  log.logInfo(`HTTP dispatcher: idle timeout ${httpIdleTimeoutMs}ms${proxy ? `, proxy ${proxy}` : ", no proxy"}`);
381
- const authPath = defaultAuthPath();
382
- if (existsSync(authPath)) {
383
- try {
384
- const providers = Object.keys(JSON.parse(readFileSync(authPath, "utf-8")));
385
- log.logInfo(`Harness auth: ${authPath} (providers: ${providers.join(", ") || "none"})`);
386
- }
387
- catch {
388
- log.logWarning(`Harness auth: ${authPath} exists but is not valid JSON`);
389
- }
390
- }
391
- else {
392
- log.logInfo(`Harness auth: ${authPath} missing — provider keys come from env vars only`);
393
- }
394
375
  const modelsPath = defaultModelsJsonPath();
395
376
  log.logInfo(existsSync(modelsPath)
396
377
  ? `Harness models.json: ${modelsPath}`
@@ -402,14 +383,11 @@ if (hasSlack) {
402
383
  if (!slackMessagingBotToken || !slackAppToken) {
403
384
  throw new Error("Slack startup requires both SLACK_APP_TOKEN and SLACK_BOT_TOKEN");
404
385
  }
405
- const sharedStore = new ChannelStore({ workingDir, botToken: slackMessagingBotToken });
406
386
  const slackMessagingBot = new SlackMessagingBotClass(handler, {
407
387
  appToken: slackAppToken,
408
388
  botToken: slackMessagingBotToken,
409
- workingDir,
410
- store: sharedStore,
389
+ workspace,
411
390
  });
412
- bots.push(slackMessagingBot);
413
391
  botsByPlatform.slack = slackMessagingBot;
414
392
  log.logInfo("Platform: Slack");
415
393
  }
@@ -420,9 +398,8 @@ if (hasTelegram) {
420
398
  }
421
399
  const telegramMessagingBot = new TelegramMessagingBot(handler, {
422
400
  token: telegramToken,
423
- workingDir,
401
+ workspace,
424
402
  });
425
- bots.push(telegramMessagingBot);
426
403
  botsByPlatform.telegram = telegramMessagingBot;
427
404
  log.logInfo("Platform: Telegram");
428
405
  }
@@ -431,47 +408,27 @@ if (hasDiscord) {
431
408
  if (!discordToken) {
432
409
  throw new Error("Discord startup requires DISCORD_BOT_TOKEN");
433
410
  }
411
+ const { DiscordMessagingBot } = await import("./adapters/discord/bot.js");
434
412
  const discordMessagingBot = new DiscordMessagingBot(handler, {
435
413
  token: discordToken,
436
- workingDir,
414
+ workspace,
437
415
  });
438
- bots.push(discordMessagingBot);
439
416
  botsByPlatform.discord = discordMessagingBot;
440
417
  log.logInfo("Platform: Discord");
441
418
  }
442
- if (hasGithub) {
443
- if (!GITHUB_APP_ID || !GITHUB_INSTALLATION_ID) {
444
- throw new Error("GitHub startup requires GITHUB_APP_ID and GITHUB_INSTALLATION_ID");
445
- }
446
- // Env vars flatten PEM newlines to literal `\n`; a key file avoids that.
447
- const githubPrivateKey = GITHUB_APP_PRIVATE_KEY_PATH
448
- ? readFileSync(GITHUB_APP_PRIVATE_KEY_PATH, "utf-8")
449
- : GITHUB_APP_PRIVATE_KEY?.replace(/\\n/g, "\n");
450
- if (!githubPrivateKey) {
451
- throw new Error("GitHub startup requires GITHUB_APP_PRIVATE_KEY or GITHUB_APP_PRIVATE_KEY_PATH");
452
- }
453
- const pollIntervalSeconds = GITHUB_POLL_INTERVAL ? parseInt(GITHUB_POLL_INTERVAL, 10) : NaN;
454
- const githubMessagingBot = new GithubMessagingBot(handler, {
455
- appId: GITHUB_APP_ID,
456
- privateKey: githubPrivateKey,
457
- installationId: GITHUB_INSTALLATION_ID,
458
- repos: GITHUB_REPOS
459
- ? GITHUB_REPOS.split(",")
460
- .map((repo) => repo.trim())
461
- .filter(Boolean)
462
- : [],
463
- pollIntervalMs: (Number.isFinite(pollIntervalSeconds) && pollIntervalSeconds > 0 ? pollIntervalSeconds : 60) *
464
- 1000,
465
- workingDir,
466
- syncStatePath: join(stateDir, "github-sync.json"),
419
+ if (githubPolicy && GITHUB_AGENT_TOKEN) {
420
+ botsByPlatform.github = new GithubMessagingBot(handler, {
421
+ token: GITHUB_AGENT_TOKEN,
422
+ policy: githubPolicy,
423
+ workspace,
467
424
  });
468
- bots.push(githubMessagingBot);
469
- botsByPlatform.github = githubMessagingBot;
470
425
  log.logInfo("Platform: GitHub");
471
426
  }
472
- if (LINK_PORT) {
473
- startWebServer({
427
+ const githubBot = botsByPlatform.github;
428
+ const webServer = LINK_PORT
429
+ ? startWebServer({
474
430
  port: LINK_PORT,
431
+ host: resolveLinkListenHost(),
475
432
  linkTokenStore,
476
433
  vaultManager,
477
434
  notify: async (platform, conversationId, message) => {
@@ -480,29 +437,96 @@ if (LINK_PORT) {
480
437
  await bot.postMessage(conversationId, message);
481
438
  },
482
439
  sessionViewTokenStore,
483
- sessionViewInteractive: { handler, botsByPlatform },
484
- adminOptions: { adminTokenStore, workingDir, runtime: handler, sandbox, botsByPlatform },
485
- });
440
+ sessionViewInteractive: { handler, botsByPlatform, runEvents },
441
+ adminOptions: {
442
+ adminTokenStore,
443
+ workspace,
444
+ runtime: handler,
445
+ sandbox,
446
+ botsByPlatform,
447
+ eventScheduler: () => eventScheduler,
448
+ },
449
+ githubWebhook: GITHUB_WEBHOOK_SECRET && githubBot
450
+ ? {
451
+ secret: GITHUB_WEBHOOK_SECRET,
452
+ onDelivery: (delivery) => void githubBot.receive(delivery),
453
+ }
454
+ : undefined,
455
+ })
456
+ : undefined;
457
+ const WEB_SERVER_CLOSE_GRACE_MS = 5000;
458
+ function stopWebServer() {
459
+ if (!webServer)
460
+ return Promise.resolve();
461
+ return closeWebServer(webServer, WEB_SERVER_CLOSE_GRACE_MS);
486
462
  }
487
- // Start events watcher with explicit platform routing
488
- const eventsWatcher = new EventsWatcher(join(workingDir, "events"), botsByPlatform);
463
+ async function stopConversationIntake() {
464
+ const results = await Promise.allSettled([
465
+ ...Object.values(botsByPlatform).map((bot) => bot.stop()),
466
+ stopWebServer(),
467
+ ]);
468
+ const failures = results.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
469
+ if (failures.length > 0)
470
+ throw new AggregateError(failures, "Failed to stop conversation intake");
471
+ }
472
+ async function waitForGracefulDrain(drain) {
473
+ let timeout;
474
+ const settled = await Promise.race([
475
+ drain.then(() => true),
476
+ new Promise((resolve) => {
477
+ timeout = setTimeout(() => resolve(false), SHUTDOWN_DRAIN_TIMEOUT_MS);
478
+ }),
479
+ ]);
480
+ if (timeout)
481
+ clearTimeout(timeout);
482
+ return settled;
483
+ }
484
+ async function drainConversationWork(intakeStop) {
485
+ const gracefulDrain = Promise.allSettled([intakeStop]);
486
+ if (!(await waitForGracefulDrain(gracefulDrain))) {
487
+ const runtimeResult = await Promise.allSettled([handler.shutdown(0)]);
488
+ const failures = [
489
+ new Error(`Conversation work did not drain within ${SHUTDOWN_DRAIN_TIMEOUT_MS}ms`),
490
+ ...runtimeResult.flatMap((result) => (result.status === "rejected" ? [result.reason] : [])),
491
+ ];
492
+ throw new AggregateError(failures, "Failed to drain conversation work");
493
+ }
494
+ const results = [
495
+ ...(await gracefulDrain),
496
+ ...(await Promise.allSettled([handler.shutdown(SHUTDOWN_DRAIN_TIMEOUT_MS)])),
497
+ ];
498
+ const failures = results.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
499
+ if (failures.length > 0)
500
+ throw new AggregateError(failures, "Failed to drain conversation work");
501
+ }
502
+ eventScheduler = new EventScheduler(workspace, botsByPlatform);
489
503
  const slackMessagingBot = botsByPlatform.slack;
490
504
  if (slackMessagingBot) {
491
- slackMessagingBot.setEventsWatcher(eventsWatcher);
492
- }
493
- eventsWatcher.start();
494
- // Handle shutdown
495
- async function shutdown() {
496
- await handler.shutdown();
497
- eventsWatcher.stop();
498
- await Sentry.close(5000);
499
- process.exit(0);
505
+ slackMessagingBot.setEventScheduler(eventScheduler);
500
506
  }
501
- process.on("SIGINT", shutdown);
502
- process.on("SIGTERM", shutdown);
503
- // Start all bots
504
- await Promise.all(bots.map((bot) => bot.start().catch((err) => {
505
- log.logWarning("Failed to start bot", err instanceof Error ? err.message : String(err));
507
+ eventScheduler.start();
508
+ const shutdown = createProcessShutdownHandler({
509
+ stop: () => {
510
+ const intakeStop = stopConversationIntake();
511
+ return runShutdownSteps([
512
+ {
513
+ name: "event scheduler",
514
+ run: async () => {
515
+ eventScheduler?.stop();
516
+ },
517
+ },
518
+ { name: "conversation work", run: () => drainConversationWork(intakeStop) },
519
+ ]);
520
+ },
521
+ shutdownObservability: () => shutdownObservability(5000),
522
+ captureError,
523
+ warn: log.logWarning,
524
+ exit: (code) => process.exit(code),
525
+ });
526
+ process.on("SIGINT", () => void shutdown("SIGINT"));
527
+ process.on("SIGTERM", () => void shutdown("SIGTERM"));
528
+ await Promise.all(Object.values(botsByPlatform).map((bot) => bot.start().catch((err) => {
529
+ log.logWarning("Failed to start bot", errorMessage(err));
506
530
  process.exit(1);
507
531
  })));
508
532
  //# sourceMappingURL=main.js.map