@geminixiang/mikan 1.0.0-beta.7 → 1.0.0-beta.71

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 (856) hide show
  1. package/CHANGELOG.md +1052 -0
  2. package/README.md +98 -38
  3. package/dist/adapters/commands/admin.d.ts.map +1 -0
  4. package/dist/{commands → adapters/commands}/admin.js +11 -8
  5. package/dist/adapters/commands/admin.js.map +1 -0
  6. package/dist/{commands → adapters/commands}/auto-reply.d.ts +0 -3
  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 +166 -0
  13. package/dist/adapters/commands/login.js.map +1 -0
  14. package/dist/adapters/commands/manifest.d.ts +37 -0
  15. package/dist/adapters/commands/manifest.d.ts.map +1 -0
  16. package/dist/adapters/commands/manifest.js +155 -0
  17. package/dist/adapters/commands/manifest.js.map +1 -0
  18. package/dist/adapters/commands/model.d.ts +15 -0
  19. package/dist/adapters/commands/model.d.ts.map +1 -0
  20. package/dist/adapters/commands/model.js +153 -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 +41 -0
  24. package/dist/adapters/commands/new.js.map +1 -0
  25. package/dist/adapters/commands/registry.d.ts +5 -0
  26. package/dist/adapters/commands/registry.d.ts.map +1 -0
  27. package/dist/adapters/commands/registry.js +43 -0
  28. package/dist/adapters/commands/registry.js.map +1 -0
  29. package/dist/adapters/commands/sandbox.d.ts.map +1 -0
  30. package/dist/adapters/commands/sandbox.js +125 -0
  31. package/dist/adapters/commands/sandbox.js.map +1 -0
  32. package/dist/adapters/commands/session-view.d.ts.map +1 -0
  33. package/dist/{commands → adapters/commands}/session-view.js +23 -16
  34. package/dist/adapters/commands/session-view.js.map +1 -0
  35. package/dist/adapters/commands/types.d.ts +145 -0
  36. package/dist/adapters/commands/types.d.ts.map +1 -0
  37. package/dist/adapters/commands/types.js.map +1 -0
  38. package/dist/adapters/commands/utils.d.ts +14 -0
  39. package/dist/adapters/commands/utils.d.ts.map +1 -0
  40. package/dist/{commands → adapters/commands}/utils.js +18 -1
  41. package/dist/adapters/commands/utils.js.map +1 -0
  42. package/dist/adapters/discord/bot.d.ts +11 -8
  43. package/dist/adapters/discord/bot.d.ts.map +1 -1
  44. package/dist/adapters/discord/bot.js +223 -256
  45. package/dist/adapters/discord/bot.js.map +1 -1
  46. package/dist/adapters/discord/components.d.ts +28 -0
  47. package/dist/adapters/discord/components.d.ts.map +1 -0
  48. package/dist/adapters/discord/components.js +32 -0
  49. package/dist/adapters/discord/components.js.map +1 -0
  50. package/dist/adapters/discord/context.d.ts +2 -6
  51. package/dist/adapters/discord/context.d.ts.map +1 -1
  52. package/dist/adapters/discord/context.js +64 -218
  53. package/dist/adapters/discord/context.js.map +1 -1
  54. package/dist/adapters/discord/format.d.ts +3 -0
  55. package/dist/adapters/discord/format.d.ts.map +1 -0
  56. package/dist/adapters/discord/format.js +84 -0
  57. package/dist/adapters/discord/format.js.map +1 -0
  58. package/dist/adapters/discord/types.d.ts +8 -1
  59. package/dist/adapters/discord/types.d.ts.map +1 -1
  60. package/dist/adapters/discord/types.js.map +1 -1
  61. package/dist/adapters/github/bot.d.ts +102 -0
  62. package/dist/adapters/github/bot.d.ts.map +1 -0
  63. package/dist/adapters/github/bot.js +720 -0
  64. package/dist/adapters/github/bot.js.map +1 -0
  65. package/dist/adapters/github/client.d.ts +122 -0
  66. package/dist/adapters/github/client.d.ts.map +1 -0
  67. package/dist/adapters/github/client.js +301 -0
  68. package/dist/adapters/github/client.js.map +1 -0
  69. package/dist/adapters/github/context.d.ts +5 -0
  70. package/dist/adapters/github/context.d.ts.map +1 -0
  71. package/dist/adapters/github/context.js +101 -0
  72. package/dist/adapters/github/context.js.map +1 -0
  73. package/dist/adapters/github/github-ops.d.ts +78 -0
  74. package/dist/adapters/github/github-ops.d.ts.map +1 -0
  75. package/dist/adapters/github/github-ops.js +337 -0
  76. package/dist/adapters/github/github-ops.js.map +1 -0
  77. package/dist/adapters/github/ids.d.ts +34 -0
  78. package/dist/adapters/github/ids.d.ts.map +1 -0
  79. package/dist/adapters/github/ids.js +57 -0
  80. package/dist/adapters/github/ids.js.map +1 -0
  81. package/dist/adapters/github/repo.d.ts +33 -0
  82. package/dist/adapters/github/repo.d.ts.map +1 -0
  83. package/dist/adapters/github/repo.js +141 -0
  84. package/dist/adapters/github/repo.js.map +1 -0
  85. package/dist/adapters/github/tool-pack.d.ts +14 -0
  86. package/dist/adapters/github/tool-pack.d.ts.map +1 -0
  87. package/dist/adapters/github/tool-pack.js +55 -0
  88. package/dist/adapters/github/tool-pack.js.map +1 -0
  89. package/dist/adapters/github/tools/checks.d.ts +18 -0
  90. package/dist/adapters/github/tools/checks.d.ts.map +1 -0
  91. package/dist/adapters/github/tools/checks.js +86 -0
  92. package/dist/adapters/github/tools/checks.js.map +1 -0
  93. package/dist/adapters/github/tools/issue.d.ts +21 -0
  94. package/dist/adapters/github/tools/issue.d.ts.map +1 -0
  95. package/dist/adapters/github/tools/issue.js +48 -0
  96. package/dist/adapters/github/tools/issue.js.map +1 -0
  97. package/dist/adapters/github/tools/pr.d.ts +22 -0
  98. package/dist/adapters/github/tools/pr.d.ts.map +1 -0
  99. package/dist/adapters/github/tools/pr.js +48 -0
  100. package/dist/adapters/github/tools/pr.js.map +1 -0
  101. package/dist/adapters/github/tools/read.d.ts +21 -0
  102. package/dist/adapters/github/tools/read.d.ts.map +1 -0
  103. package/dist/adapters/github/tools/read.js +141 -0
  104. package/dist/adapters/github/tools/read.js.map +1 -0
  105. package/dist/adapters/github/tools/review-reply.d.ts +17 -0
  106. package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
  107. package/dist/adapters/github/tools/review-reply.js +38 -0
  108. package/dist/adapters/github/tools/review-reply.js.map +1 -0
  109. package/dist/adapters/github/tools/sync.d.ts +17 -0
  110. package/dist/adapters/github/tools/sync.d.ts.map +1 -0
  111. package/dist/adapters/github/tools/sync.js +34 -0
  112. package/dist/adapters/github/tools/sync.js.map +1 -0
  113. package/dist/adapters/github/types.d.ts +345 -0
  114. package/dist/adapters/github/types.d.ts.map +1 -0
  115. package/dist/adapters/github/types.js.map +1 -0
  116. package/dist/adapters/github/webhook.d.ts +20 -0
  117. package/dist/adapters/github/webhook.d.ts.map +1 -0
  118. package/dist/adapters/github/webhook.js +78 -0
  119. package/dist/adapters/github/webhook.js.map +1 -0
  120. package/dist/adapters/index.d.ts +12 -0
  121. package/dist/adapters/index.d.ts.map +1 -0
  122. package/dist/adapters/index.js +19 -0
  123. package/dist/adapters/index.js.map +1 -0
  124. package/dist/adapters/intake.d.ts +17 -6
  125. package/dist/adapters/intake.d.ts.map +1 -1
  126. package/dist/adapters/intake.js +96 -27
  127. package/dist/adapters/intake.js.map +1 -1
  128. package/dist/adapters/markdown-tables.d.ts +19 -0
  129. package/dist/adapters/markdown-tables.d.ts.map +1 -0
  130. package/dist/adapters/markdown-tables.js +152 -0
  131. package/dist/adapters/markdown-tables.js.map +1 -0
  132. package/dist/{platform-messages.d.ts → adapters/messages.d.ts} +3 -2
  133. package/dist/adapters/messages.d.ts.map +1 -0
  134. package/dist/{platform-messages.js → adapters/messages.js} +4 -1
  135. package/dist/adapters/messages.js.map +1 -0
  136. package/dist/adapters/progressive-renderer.d.ts +7 -0
  137. package/dist/adapters/progressive-renderer.d.ts.map +1 -0
  138. package/dist/adapters/progressive-renderer.js +443 -0
  139. package/dist/adapters/progressive-renderer.js.map +1 -0
  140. package/dist/adapters/shared.d.ts +37 -11
  141. package/dist/adapters/shared.d.ts.map +1 -1
  142. package/dist/adapters/shared.js +130 -24
  143. package/dist/adapters/shared.js.map +1 -1
  144. package/dist/adapters/slack/assistant.d.ts +73 -0
  145. package/dist/adapters/slack/assistant.d.ts.map +1 -0
  146. package/dist/adapters/slack/assistant.js +205 -0
  147. package/dist/adapters/slack/assistant.js.map +1 -0
  148. package/dist/adapters/slack/auto-reply-context.d.ts +21 -0
  149. package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -0
  150. package/dist/adapters/slack/auto-reply-context.js +28 -0
  151. package/dist/adapters/slack/auto-reply-context.js.map +1 -0
  152. package/dist/adapters/slack/blocks.d.ts +14 -0
  153. package/dist/adapters/slack/blocks.d.ts.map +1 -1
  154. package/dist/adapters/slack/blocks.js +104 -148
  155. package/dist/adapters/slack/blocks.js.map +1 -1
  156. package/dist/adapters/slack/bot.d.ts +154 -21
  157. package/dist/adapters/slack/bot.d.ts.map +1 -1
  158. package/dist/adapters/slack/bot.js +1037 -484
  159. package/dist/adapters/slack/bot.js.map +1 -1
  160. package/dist/adapters/slack/context.d.ts +2 -6
  161. package/dist/adapters/slack/context.d.ts.map +1 -1
  162. package/dist/adapters/slack/context.js +11 -17
  163. package/dist/adapters/slack/context.js.map +1 -1
  164. package/dist/adapters/slack/jev-context.d.ts +30 -0
  165. package/dist/adapters/slack/jev-context.d.ts.map +1 -0
  166. package/dist/adapters/slack/jev-context.js +67 -0
  167. package/dist/adapters/slack/jev-context.js.map +1 -0
  168. package/dist/adapters/slack/markdown.d.ts +3 -0
  169. package/dist/adapters/slack/markdown.d.ts.map +1 -0
  170. package/dist/adapters/slack/markdown.js +48 -0
  171. package/dist/adapters/slack/markdown.js.map +1 -0
  172. package/dist/adapters/slack/persona.d.ts +15 -0
  173. package/dist/adapters/slack/persona.d.ts.map +1 -0
  174. package/dist/adapters/slack/persona.js +22 -0
  175. package/dist/adapters/slack/persona.js.map +1 -0
  176. package/dist/adapters/slack/response-lifecycle.d.ts +1 -1
  177. package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
  178. package/dist/adapters/slack/response-lifecycle.js +261 -345
  179. package/dist/adapters/slack/response-lifecycle.js.map +1 -1
  180. package/dist/adapters/slack/session.d.ts.map +1 -1
  181. package/dist/adapters/slack/session.js +7 -11
  182. package/dist/adapters/slack/session.js.map +1 -1
  183. package/dist/adapters/slack/stream-limits.d.ts +35 -0
  184. package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
  185. package/dist/adapters/slack/stream-limits.js +56 -0
  186. package/dist/adapters/slack/stream-limits.js.map +1 -0
  187. package/dist/adapters/slack/task-intent.d.ts +32 -0
  188. package/dist/adapters/slack/task-intent.d.ts.map +1 -0
  189. package/dist/adapters/slack/task-intent.js +72 -0
  190. package/dist/adapters/slack/task-intent.js.map +1 -0
  191. package/dist/adapters/slack/task-status.d.ts +7 -0
  192. package/dist/adapters/slack/task-status.d.ts.map +1 -0
  193. package/dist/adapters/slack/task-status.js +107 -0
  194. package/dist/adapters/slack/task-status.js.map +1 -0
  195. package/dist/adapters/slack/tool-pack.d.ts +11 -0
  196. package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
  197. package/dist/adapters/slack/tool-pack.js +45 -0
  198. package/dist/adapters/slack/tool-pack.js.map +1 -0
  199. package/dist/adapters/slack/tools/blockkit.d.ts +14 -0
  200. package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
  201. package/dist/adapters/slack/tools/blockkit.js +106 -0
  202. package/dist/adapters/slack/tools/blockkit.js.map +1 -0
  203. package/dist/adapters/slack/types.d.ts +73 -2
  204. package/dist/adapters/slack/types.d.ts.map +1 -1
  205. package/dist/adapters/slack/types.js.map +1 -1
  206. package/dist/adapters/slack/update-diagnostics.d.ts +14 -0
  207. package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
  208. package/dist/adapters/slack/update-diagnostics.js +134 -0
  209. package/dist/adapters/slack/update-diagnostics.js.map +1 -0
  210. package/dist/adapters/telegram/bot.d.ts +10 -9
  211. package/dist/adapters/telegram/bot.d.ts.map +1 -1
  212. package/dist/adapters/telegram/bot.js +133 -202
  213. package/dist/adapters/telegram/bot.js.map +1 -1
  214. package/dist/adapters/telegram/context.d.ts +2 -6
  215. package/dist/adapters/telegram/context.d.ts.map +1 -1
  216. package/dist/adapters/telegram/context.js +53 -190
  217. package/dist/adapters/telegram/context.js.map +1 -1
  218. package/dist/adapters/telegram/types.d.ts +1 -1
  219. package/dist/adapters/telegram/types.d.ts.map +1 -1
  220. package/dist/adapters/telegram/types.js.map +1 -1
  221. package/dist/adapters/types.d.ts +144 -13
  222. package/dist/adapters/types.d.ts.map +1 -1
  223. package/dist/adapters/types.js.map +1 -1
  224. package/dist/adapters/web/admin/portal.d.ts +44 -0
  225. package/dist/adapters/web/admin/portal.d.ts.map +1 -0
  226. package/dist/adapters/web/admin/portal.js +3207 -0
  227. package/dist/adapters/web/admin/portal.js.map +1 -0
  228. package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
  229. package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
  230. package/dist/{web → adapters/web}/admin/provider-models.js +1 -1
  231. package/dist/adapters/web/admin/provider-models.js.map +1 -0
  232. package/dist/adapters/web/admin/types.d.ts +53 -0
  233. package/dist/adapters/web/admin/types.d.ts.map +1 -0
  234. package/dist/adapters/web/admin/types.js.map +1 -0
  235. package/dist/adapters/web/login/oauth.d.ts +5 -0
  236. package/dist/adapters/web/login/oauth.d.ts.map +1 -0
  237. package/dist/{web → adapters/web}/login/oauth.js +50 -85
  238. package/dist/adapters/web/login/oauth.js.map +1 -0
  239. package/dist/{web → adapters/web}/login/portal.d.ts +9 -3
  240. package/dist/adapters/web/login/portal.d.ts.map +1 -0
  241. package/dist/{web → adapters/web}/login/portal.js +161 -119
  242. package/dist/adapters/web/login/portal.js.map +1 -0
  243. package/dist/{web → adapters/web}/login/types.d.ts +1 -12
  244. package/dist/adapters/web/login/types.d.ts.map +1 -0
  245. package/dist/adapters/web/login/types.js.map +1 -0
  246. package/dist/adapters/web/portal-shell.d.ts +22 -0
  247. package/dist/adapters/web/portal-shell.d.ts.map +1 -0
  248. package/dist/{portal-shell.js → adapters/web/portal-shell.js} +78 -2
  249. package/dist/adapters/web/portal-shell.js.map +1 -0
  250. package/dist/{web → adapters/web}/server.d.ts +14 -8
  251. package/dist/adapters/web/server.d.ts.map +1 -0
  252. package/dist/{web → adapters/web}/server.js +14 -7
  253. package/dist/adapters/web/server.js.map +1 -0
  254. package/dist/adapters/web/session-view/portal.d.ts +20 -0
  255. package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
  256. package/dist/{web → adapters/web}/session-view/portal.js +633 -162
  257. package/dist/adapters/web/session-view/portal.js.map +1 -0
  258. package/dist/{web → adapters/web}/session-view/types.d.ts +11 -6
  259. package/dist/adapters/web/session-view/types.d.ts.map +1 -0
  260. package/dist/adapters/web/session-view/types.js.map +1 -0
  261. package/dist/adapters/web/token-store.d.ts.map +1 -0
  262. package/dist/{web → adapters/web}/token-store.js +1 -1
  263. package/dist/adapters/web/token-store.js.map +1 -0
  264. package/dist/adapters/web/types.d.ts.map +1 -0
  265. package/dist/adapters/web/types.js.map +1 -0
  266. package/dist/cli/arg-grammar.d.ts +11 -0
  267. package/dist/cli/arg-grammar.d.ts.map +1 -0
  268. package/dist/cli/arg-grammar.js +50 -0
  269. package/dist/cli/arg-grammar.js.map +1 -0
  270. package/dist/cli/boot.d.ts +5 -0
  271. package/dist/cli/boot.d.ts.map +1 -0
  272. package/dist/cli/boot.js +90 -0
  273. package/dist/cli/boot.js.map +1 -0
  274. package/dist/cli/download.d.ts.map +1 -0
  275. package/dist/cli/download.js +88 -0
  276. package/dist/cli/download.js.map +1 -0
  277. package/dist/cli/office.d.ts +2 -0
  278. package/dist/cli/office.d.ts.map +1 -0
  279. package/dist/cli/office.js +181 -0
  280. package/dist/cli/office.js.map +1 -0
  281. package/dist/cli/onboard.d.ts +10 -0
  282. package/dist/cli/onboard.d.ts.map +1 -0
  283. package/dist/cli/onboard.js +225 -0
  284. package/dist/cli/onboard.js.map +1 -0
  285. package/dist/cli/process-lifecycle.d.ts +19 -0
  286. package/dist/cli/process-lifecycle.d.ts.map +1 -0
  287. package/dist/cli/process-lifecycle.js +67 -0
  288. package/dist/cli/process-lifecycle.js.map +1 -0
  289. package/dist/cli/sessions.d.ts +2 -0
  290. package/dist/cli/sessions.d.ts.map +1 -0
  291. package/dist/cli/sessions.js +88 -0
  292. package/dist/cli/sessions.js.map +1 -0
  293. package/dist/cli/types.d.ts +25 -0
  294. package/dist/cli/types.d.ts.map +1 -0
  295. package/dist/cli/types.js.map +1 -0
  296. package/dist/dream/index.d.ts +20 -0
  297. package/dist/dream/index.d.ts.map +1 -0
  298. package/dist/dream/index.js +264 -0
  299. package/dist/dream/index.js.map +1 -0
  300. package/dist/dream/types.d.ts +30 -0
  301. package/dist/dream/types.d.ts.map +1 -0
  302. package/dist/dream/types.js +2 -0
  303. package/dist/dream/types.js.map +1 -0
  304. package/dist/env-manifest.d.ts +38 -0
  305. package/dist/env-manifest.d.ts.map +1 -0
  306. package/dist/env-manifest.js +260 -0
  307. package/dist/env-manifest.js.map +1 -0
  308. package/dist/events/index.d.ts +172 -0
  309. package/dist/events/index.d.ts.map +1 -0
  310. package/dist/events/index.js +340 -0
  311. package/dist/events/index.js.map +1 -0
  312. package/dist/events/scheduler.d.ts +34 -0
  313. package/dist/events/scheduler.d.ts.map +1 -0
  314. package/dist/events/scheduler.js +231 -0
  315. package/dist/events/scheduler.js.map +1 -0
  316. package/dist/file-guards.d.ts +26 -0
  317. package/dist/file-guards.d.ts.map +1 -0
  318. package/dist/file-guards.js +133 -0
  319. package/dist/file-guards.js.map +1 -0
  320. package/dist/harness/execution-env.d.ts +19 -0
  321. package/dist/harness/execution-env.d.ts.map +1 -0
  322. package/dist/harness/execution-env.js +262 -0
  323. package/dist/harness/execution-env.js.map +1 -0
  324. package/dist/harness/execution-resolver.d.ts +25 -0
  325. package/dist/harness/execution-resolver.d.ts.map +1 -0
  326. package/dist/harness/execution-resolver.js +156 -0
  327. package/dist/harness/execution-resolver.js.map +1 -0
  328. package/dist/harness/index.d.ts +18 -13
  329. package/dist/harness/index.d.ts.map +1 -1
  330. package/dist/harness/index.js +11 -11
  331. package/dist/harness/index.js.map +1 -1
  332. package/dist/harness/jev.d.ts +86 -0
  333. package/dist/harness/jev.d.ts.map +1 -0
  334. package/dist/harness/jev.js +167 -0
  335. package/dist/harness/jev.js.map +1 -0
  336. package/dist/harness/mcp.d.ts +38 -0
  337. package/dist/harness/mcp.d.ts.map +1 -0
  338. package/dist/harness/mcp.js +304 -0
  339. package/dist/harness/mcp.js.map +1 -0
  340. package/dist/harness/models.d.ts +7 -4
  341. package/dist/harness/models.d.ts.map +1 -1
  342. package/dist/harness/models.js +54 -55
  343. package/dist/harness/models.js.map +1 -1
  344. package/dist/harness/open-connector.d.ts +25 -0
  345. package/dist/harness/open-connector.d.ts.map +1 -0
  346. package/dist/harness/open-connector.js +178 -0
  347. package/dist/harness/open-connector.js.map +1 -0
  348. package/dist/harness/presenter.d.ts +31 -0
  349. package/dist/harness/presenter.d.ts.map +1 -0
  350. package/dist/harness/presenter.js +859 -0
  351. package/dist/harness/presenter.js.map +1 -0
  352. package/dist/harness/prompt.d.ts +30 -0
  353. package/dist/harness/prompt.d.ts.map +1 -0
  354. package/dist/harness/prompt.js +420 -0
  355. package/dist/harness/prompt.js.map +1 -0
  356. package/dist/harness/runner.d.ts +2 -123
  357. package/dist/harness/runner.d.ts.map +1 -1
  358. package/dist/harness/runner.js +551 -416
  359. package/dist/harness/runner.js.map +1 -1
  360. package/dist/harness/session.d.ts +122 -0
  361. package/dist/harness/session.d.ts.map +1 -0
  362. package/dist/harness/session.js +581 -0
  363. package/dist/harness/session.js.map +1 -0
  364. package/dist/harness/skills.d.ts +17 -28
  365. package/dist/harness/skills.d.ts.map +1 -1
  366. package/dist/harness/skills.js +104 -39
  367. package/dist/harness/skills.js.map +1 -1
  368. package/dist/harness/subagent-profiles.d.ts +8 -0
  369. package/dist/harness/subagent-profiles.d.ts.map +1 -0
  370. package/dist/harness/subagent-profiles.js +293 -0
  371. package/dist/harness/subagent-profiles.js.map +1 -0
  372. package/dist/harness/subagent.d.ts +64 -0
  373. package/dist/harness/subagent.d.ts.map +1 -0
  374. package/dist/harness/subagent.js +687 -0
  375. package/dist/harness/subagent.js.map +1 -0
  376. package/dist/harness/tools/attach.d.ts.map +1 -0
  377. package/dist/{adapters/slack → harness}/tools/attach.js +1 -1
  378. package/dist/harness/tools/attach.js.map +1 -0
  379. package/dist/{tools → harness/tools}/event.d.ts +4 -33
  380. package/dist/harness/tools/event.d.ts.map +1 -0
  381. package/dist/harness/tools/event.js +175 -0
  382. package/dist/harness/tools/event.js.map +1 -0
  383. package/dist/harness/tools/generate-image.d.ts +23 -0
  384. package/dist/harness/tools/generate-image.d.ts.map +1 -0
  385. package/dist/harness/tools/generate-image.js +65 -0
  386. package/dist/harness/tools/generate-image.js.map +1 -0
  387. package/dist/harness/tools/host-fn-tool.d.ts +21 -0
  388. package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
  389. package/dist/harness/tools/host-fn-tool.js +32 -0
  390. package/dist/harness/tools/host-fn-tool.js.map +1 -0
  391. package/dist/harness/tools/index.d.ts +41 -0
  392. package/dist/harness/tools/index.d.ts.map +1 -0
  393. package/dist/harness/tools/index.js +51 -0
  394. package/dist/harness/tools/index.js.map +1 -0
  395. package/dist/harness/tools/jev.d.ts +21 -0
  396. package/dist/harness/tools/jev.d.ts.map +1 -0
  397. package/dist/harness/tools/jev.js +109 -0
  398. package/dist/harness/tools/jev.js.map +1 -0
  399. package/dist/harness/tools/pi-tools.d.ts +18 -0
  400. package/dist/harness/tools/pi-tools.d.ts.map +1 -0
  401. package/dist/harness/tools/pi-tools.js +84 -0
  402. package/dist/harness/tools/pi-tools.js.map +1 -0
  403. package/dist/harness/tools/react.d.ts.map +1 -0
  404. package/dist/{tools → harness/tools}/react.js +6 -17
  405. package/dist/harness/tools/react.js.map +1 -0
  406. package/dist/{tools → harness/tools}/sandbox.d.ts +4 -4
  407. package/dist/harness/tools/sandbox.d.ts.map +1 -0
  408. package/dist/{tools → harness/tools}/sandbox.js +12 -8
  409. package/dist/harness/tools/sandbox.js.map +1 -0
  410. package/dist/harness/tools/subagent.d.ts +85 -0
  411. package/dist/harness/tools/subagent.d.ts.map +1 -0
  412. package/dist/harness/tools/subagent.js +677 -0
  413. package/dist/harness/tools/subagent.js.map +1 -0
  414. package/dist/harness/tools/task.d.ts +20 -0
  415. package/dist/harness/tools/task.d.ts.map +1 -0
  416. package/dist/harness/tools/task.js +79 -0
  417. package/dist/harness/tools/task.js.map +1 -0
  418. package/dist/harness/tools/types.d.ts +29 -0
  419. package/dist/harness/tools/types.d.ts.map +1 -0
  420. package/dist/harness/tools/types.js +2 -0
  421. package/dist/harness/tools/types.js.map +1 -0
  422. package/dist/harness/types.d.ts +384 -25
  423. package/dist/harness/types.d.ts.map +1 -1
  424. package/dist/harness/types.js +1 -1
  425. package/dist/harness/types.js.map +1 -1
  426. package/dist/index.d.ts +33 -9
  427. package/dist/index.d.ts.map +1 -1
  428. package/dist/index.js +19 -6
  429. package/dist/index.js.map +1 -1
  430. package/dist/log.d.ts.map +1 -1
  431. package/dist/log.js +4 -1
  432. package/dist/log.js.map +1 -1
  433. package/dist/main.js +357 -198
  434. package/dist/main.js.map +1 -1
  435. package/dist/observability/index.d.ts +33 -0
  436. package/dist/observability/index.d.ts.map +1 -0
  437. package/dist/observability/index.js +257 -0
  438. package/dist/observability/index.js.map +1 -0
  439. package/dist/observability/instrument.js +14 -6
  440. package/dist/observability/instrument.js.map +1 -1
  441. package/dist/observability/otel.d.ts +10 -0
  442. package/dist/observability/otel.d.ts.map +1 -0
  443. package/dist/observability/otel.js +183 -0
  444. package/dist/observability/otel.js.map +1 -0
  445. package/dist/observability/sentry.d.ts +40 -7
  446. package/dist/observability/sentry.d.ts.map +1 -1
  447. package/dist/observability/sentry.js +176 -32
  448. package/dist/observability/sentry.js.map +1 -1
  449. package/dist/observability/types.d.ts +24 -3
  450. package/dist/observability/types.d.ts.map +1 -1
  451. package/dist/observability/types.js.map +1 -1
  452. package/dist/office/index.d.ts +139 -0
  453. package/dist/office/index.d.ts.map +1 -0
  454. package/dist/office/index.js +1084 -0
  455. package/dist/office/index.js.map +1 -0
  456. package/dist/office/projection.d.ts +42 -0
  457. package/dist/office/projection.d.ts.map +1 -0
  458. package/dist/office/projection.js +182 -0
  459. package/dist/office/projection.js.map +1 -0
  460. package/dist/office/types.d.ts +116 -0
  461. package/dist/office/types.d.ts.map +1 -0
  462. package/dist/office/types.js +2 -0
  463. package/dist/office/types.js.map +1 -0
  464. package/dist/runtime/conversation-runtime.d.ts +1 -1
  465. package/dist/runtime/conversation-runtime.d.ts.map +1 -1
  466. package/dist/runtime/conversation-runtime.js +423 -152
  467. package/dist/runtime/conversation-runtime.js.map +1 -1
  468. package/dist/runtime/session-lifecycle.d.ts +76 -0
  469. package/dist/runtime/session-lifecycle.d.ts.map +1 -0
  470. package/dist/runtime/session-lifecycle.js +404 -0
  471. package/dist/runtime/session-lifecycle.js.map +1 -0
  472. package/dist/runtime/types.d.ts +63 -15
  473. package/dist/runtime/types.d.ts.map +1 -1
  474. package/dist/runtime/types.js.map +1 -1
  475. package/dist/sandbox/cloudflare.d.ts +4 -0
  476. package/dist/sandbox/cloudflare.d.ts.map +1 -1
  477. package/dist/sandbox/cloudflare.js +54 -52
  478. package/dist/sandbox/cloudflare.js.map +1 -1
  479. package/dist/sandbox/container.d.ts +3 -0
  480. package/dist/sandbox/container.d.ts.map +1 -1
  481. package/dist/sandbox/container.js +19 -7
  482. package/dist/sandbox/container.js.map +1 -1
  483. package/dist/sandbox/host.d.ts +3 -0
  484. package/dist/sandbox/host.d.ts.map +1 -1
  485. package/dist/sandbox/host.js +44 -35
  486. package/dist/sandbox/host.js.map +1 -1
  487. package/dist/sandbox/identity.d.ts +42 -0
  488. package/dist/sandbox/identity.d.ts.map +1 -0
  489. package/dist/sandbox/identity.js +77 -0
  490. package/dist/sandbox/identity.js.map +1 -0
  491. package/dist/sandbox/index.d.ts +24 -6
  492. package/dist/sandbox/index.d.ts.map +1 -1
  493. package/dist/sandbox/index.js +77 -17
  494. package/dist/sandbox/index.js.map +1 -1
  495. package/dist/sandbox/provisioner.d.ts +139 -0
  496. package/dist/sandbox/provisioner.d.ts.map +1 -0
  497. package/dist/{provisioner.js → sandbox/provisioner.js} +378 -24
  498. package/dist/sandbox/provisioner.js.map +1 -0
  499. package/dist/sandbox/types.d.ts +43 -9
  500. package/dist/sandbox/types.d.ts.map +1 -1
  501. package/dist/sandbox/types.js.map +1 -1
  502. package/dist/sandbox/utils.d.ts +24 -0
  503. package/dist/sandbox/utils.d.ts.map +1 -1
  504. package/dist/sandbox/utils.js +92 -1
  505. package/dist/sandbox/utils.js.map +1 -1
  506. package/dist/sessions/chat-history-sync.d.ts +23 -0
  507. package/dist/sessions/chat-history-sync.d.ts.map +1 -0
  508. package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +239 -175
  509. package/dist/sessions/chat-history-sync.js.map +1 -0
  510. package/dist/sessions/history-line.d.ts +29 -0
  511. package/dist/sessions/history-line.d.ts.map +1 -0
  512. package/dist/sessions/history-line.js +45 -0
  513. package/dist/sessions/history-line.js.map +1 -0
  514. package/dist/sessions/migrate-common.d.ts +43 -0
  515. package/dist/sessions/migrate-common.d.ts.map +1 -0
  516. package/dist/sessions/migrate-common.js +99 -0
  517. package/dist/sessions/migrate-common.js.map +1 -0
  518. package/dist/sessions/migrate-pi-084.d.ts +8 -0
  519. package/dist/sessions/migrate-pi-084.d.ts.map +1 -0
  520. package/dist/sessions/migrate-pi-084.js +302 -0
  521. package/dist/sessions/migrate-pi-084.js.map +1 -0
  522. package/dist/sessions/migrate-v3.d.ts +15 -0
  523. package/dist/sessions/migrate-v3.d.ts.map +1 -0
  524. package/dist/sessions/migrate-v3.js +419 -0
  525. package/dist/sessions/migrate-v3.js.map +1 -0
  526. package/dist/sessions/session-key.d.ts +33 -0
  527. package/dist/sessions/session-key.d.ts.map +1 -0
  528. package/dist/sessions/session-key.js +115 -0
  529. package/dist/sessions/session-key.js.map +1 -0
  530. package/dist/sessions/session-store.d.ts +61 -0
  531. package/dist/sessions/session-store.d.ts.map +1 -0
  532. package/dist/sessions/session-store.js +684 -0
  533. package/dist/sessions/session-store.js.map +1 -0
  534. package/dist/sessions/store.d.ts +17 -10
  535. package/dist/sessions/store.d.ts.map +1 -1
  536. package/dist/sessions/store.js +182 -47
  537. package/dist/sessions/store.js.map +1 -1
  538. package/dist/sessions/types.d.ts +74 -8
  539. package/dist/sessions/types.d.ts.map +1 -1
  540. package/dist/sessions/types.js +1 -1
  541. package/dist/sessions/types.js.map +1 -1
  542. package/dist/settings/apply.d.ts +16 -0
  543. package/dist/settings/apply.d.ts.map +1 -0
  544. package/dist/settings/apply.js +60 -0
  545. package/dist/settings/apply.js.map +1 -0
  546. package/dist/settings/index.d.ts +126 -0
  547. package/dist/settings/index.d.ts.map +1 -0
  548. package/dist/settings/index.js +422 -0
  549. package/dist/settings/index.js.map +1 -0
  550. package/dist/settings/migrate.d.ts +21 -0
  551. package/dist/settings/migrate.d.ts.map +1 -0
  552. package/dist/settings/migrate.js +86 -0
  553. package/dist/settings/migrate.js.map +1 -0
  554. package/dist/types.d.ts +330 -141
  555. package/dist/types.d.ts.map +1 -1
  556. package/dist/types.js +2 -2
  557. package/dist/types.js.map +1 -1
  558. package/dist/vault/index.d.ts +52 -2
  559. package/dist/vault/index.d.ts.map +1 -1
  560. package/dist/vault/index.js +218 -86
  561. package/dist/vault/index.js.map +1 -1
  562. package/dist/vault/types.d.ts +6 -2
  563. package/dist/vault/types.d.ts.map +1 -1
  564. package/dist/vault/types.js.map +1 -1
  565. package/package.json +79 -40
  566. package/dist/adapter.d.ts +0 -2
  567. package/dist/adapter.d.ts.map +0 -1
  568. package/dist/adapter.js +0 -2
  569. package/dist/adapter.js.map +0 -1
  570. package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
  571. package/dist/adapters/slack/tools/attach.js.map +0 -1
  572. package/dist/adapters/streaming.d.ts +0 -18
  573. package/dist/adapters/streaming.d.ts.map +0 -1
  574. package/dist/adapters/streaming.js +0 -44
  575. package/dist/adapters/streaming.js.map +0 -1
  576. package/dist/adapters/telegram/html.d.ts +0 -3
  577. package/dist/adapters/telegram/html.d.ts.map +0 -1
  578. package/dist/adapters/telegram/html.js +0 -98
  579. package/dist/adapters/telegram/html.js.map +0 -1
  580. package/dist/agent-events.d.ts +0 -5
  581. package/dist/agent-events.d.ts.map +0 -1
  582. package/dist/agent-events.js +0 -26
  583. package/dist/agent-events.js.map +0 -1
  584. package/dist/agent.d.ts +0 -39
  585. package/dist/agent.d.ts.map +0 -1
  586. package/dist/agent.js +0 -1291
  587. package/dist/agent.js.map +0 -1
  588. package/dist/cli/ext-git.d.ts +0 -22
  589. package/dist/cli/ext-git.d.ts.map +0 -1
  590. package/dist/cli/ext-git.js +0 -76
  591. package/dist/cli/ext-git.js.map +0 -1
  592. package/dist/cli/ext.d.ts +0 -2
  593. package/dist/cli/ext.d.ts.map +0 -1
  594. package/dist/cli/ext.js +0 -217
  595. package/dist/cli/ext.js.map +0 -1
  596. package/dist/commands/admin.d.ts.map +0 -1
  597. package/dist/commands/admin.js.map +0 -1
  598. package/dist/commands/auto-reply.d.ts.map +0 -1
  599. package/dist/commands/auto-reply.js +0 -76
  600. package/dist/commands/auto-reply.js.map +0 -1
  601. package/dist/commands/extensions.d.ts +0 -14
  602. package/dist/commands/extensions.d.ts.map +0 -1
  603. package/dist/commands/extensions.js +0 -55
  604. package/dist/commands/extensions.js.map +0 -1
  605. package/dist/commands/login.d.ts +0 -5
  606. package/dist/commands/login.d.ts.map +0 -1
  607. package/dist/commands/login.js +0 -115
  608. package/dist/commands/login.js.map +0 -1
  609. package/dist/commands/model.d.ts +0 -10
  610. package/dist/commands/model.d.ts.map +0 -1
  611. package/dist/commands/model.js +0 -102
  612. package/dist/commands/model.js.map +0 -1
  613. package/dist/commands/new.d.ts.map +0 -1
  614. package/dist/commands/new.js +0 -25
  615. package/dist/commands/new.js.map +0 -1
  616. package/dist/commands/parse.d.ts +0 -7
  617. package/dist/commands/parse.d.ts.map +0 -1
  618. package/dist/commands/parse.js +0 -14
  619. package/dist/commands/parse.js.map +0 -1
  620. package/dist/commands/registry.d.ts +0 -5
  621. package/dist/commands/registry.d.ts.map +0 -1
  622. package/dist/commands/registry.js +0 -31
  623. package/dist/commands/registry.js.map +0 -1
  624. package/dist/commands/sandbox.d.ts.map +0 -1
  625. package/dist/commands/sandbox.js +0 -78
  626. package/dist/commands/sandbox.js.map +0 -1
  627. package/dist/commands/session-view.d.ts.map +0 -1
  628. package/dist/commands/session-view.js.map +0 -1
  629. package/dist/commands/types.d.ts +0 -66
  630. package/dist/commands/types.d.ts.map +0 -1
  631. package/dist/commands/types.js.map +0 -1
  632. package/dist/commands/utils.d.ts +0 -11
  633. package/dist/commands/utils.d.ts.map +0 -1
  634. package/dist/commands/utils.js.map +0 -1
  635. package/dist/config.d.ts +0 -78
  636. package/dist/config.d.ts.map +0 -1
  637. package/dist/config.js +0 -450
  638. package/dist/config.js.map +0 -1
  639. package/dist/download.d.ts.map +0 -1
  640. package/dist/download.js +0 -89
  641. package/dist/download.js.map +0 -1
  642. package/dist/events.d.ts +0 -43
  643. package/dist/events.d.ts.map +0 -1
  644. package/dist/events.js +0 -456
  645. package/dist/events.js.map +0 -1
  646. package/dist/execution-resolver.d.ts +0 -21
  647. package/dist/execution-resolver.d.ts.map +0 -1
  648. package/dist/execution-resolver.js +0 -170
  649. package/dist/execution-resolver.js.map +0 -1
  650. package/dist/harness/auth.d.ts +0 -16
  651. package/dist/harness/auth.d.ts.map +0 -1
  652. package/dist/harness/auth.js +0 -86
  653. package/dist/harness/auth.js.map +0 -1
  654. package/dist/harness/extensions/loader.d.ts +0 -86
  655. package/dist/harness/extensions/loader.d.ts.map +0 -1
  656. package/dist/harness/extensions/loader.js +0 -525
  657. package/dist/harness/extensions/loader.js.map +0 -1
  658. package/dist/harness/extensions/registry.d.ts +0 -23
  659. package/dist/harness/extensions/registry.d.ts.map +0 -1
  660. package/dist/harness/extensions/registry.js +0 -45
  661. package/dist/harness/extensions/registry.js.map +0 -1
  662. package/dist/harness/extensions/types.d.ts +0 -248
  663. package/dist/harness/extensions/types.d.ts.map +0 -1
  664. package/dist/harness/extensions/types.js.map +0 -1
  665. package/dist/harness/session-store.d.ts +0 -77
  666. package/dist/harness/session-store.d.ts.map +0 -1
  667. package/dist/harness/session-store.js +0 -248
  668. package/dist/harness/session-store.js.map +0 -1
  669. package/dist/harness/settings.d.ts +0 -47
  670. package/dist/harness/settings.d.ts.map +0 -1
  671. package/dist/harness/settings.js +0 -29
  672. package/dist/harness/settings.js.map +0 -1
  673. package/dist/model-registry.d.ts +0 -4
  674. package/dist/model-registry.d.ts.map +0 -1
  675. package/dist/model-registry.js +0 -7
  676. package/dist/model-registry.js.map +0 -1
  677. package/dist/platform-messages.d.ts.map +0 -1
  678. package/dist/platform-messages.js.map +0 -1
  679. package/dist/portal-shell.d.ts +0 -4
  680. package/dist/portal-shell.d.ts.map +0 -1
  681. package/dist/portal-shell.js.map +0 -1
  682. package/dist/provisioner.d.ts +0 -61
  683. package/dist/provisioner.d.ts.map +0 -1
  684. package/dist/provisioner.js.map +0 -1
  685. package/dist/runtime/agent-run-controller.d.ts +0 -31
  686. package/dist/runtime/agent-run-controller.d.ts.map +0 -1
  687. package/dist/runtime/agent-run-controller.js +0 -195
  688. package/dist/runtime/agent-run-controller.js.map +0 -1
  689. package/dist/sandbox/errors.d.ts +0 -6
  690. package/dist/sandbox/errors.d.ts.map +0 -1
  691. package/dist/sandbox/errors.js +0 -11
  692. package/dist/sandbox/errors.js.map +0 -1
  693. package/dist/sandbox/firecracker.d.ts +0 -15
  694. package/dist/sandbox/firecracker.d.ts.map +0 -1
  695. package/dist/sandbox/firecracker.js +0 -212
  696. package/dist/sandbox/firecracker.js.map +0 -1
  697. package/dist/sandbox/image.d.ts +0 -3
  698. package/dist/sandbox/image.d.ts.map +0 -1
  699. package/dist/sandbox/image.js +0 -27
  700. package/dist/sandbox/image.js.map +0 -1
  701. package/dist/sandbox/path-context.d.ts +0 -3
  702. package/dist/sandbox/path-context.d.ts.map +0 -1
  703. package/dist/sandbox/path-context.js +0 -20
  704. package/dist/sandbox/path-context.js.map +0 -1
  705. package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
  706. package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
  707. package/dist/sessions/agent-memory-file-manager.js.map +0 -1
  708. package/dist/sessions/metadata.d.ts +0 -3
  709. package/dist/sessions/metadata.d.ts.map +0 -1
  710. package/dist/sessions/metadata.js +0 -11
  711. package/dist/sessions/metadata.js.map +0 -1
  712. package/dist/sessions/policy.d.ts +0 -6
  713. package/dist/sessions/policy.d.ts.map +0 -1
  714. package/dist/sessions/policy.js +0 -23
  715. package/dist/sessions/policy.js.map +0 -1
  716. package/dist/store.d.ts +0 -46
  717. package/dist/store.d.ts.map +0 -1
  718. package/dist/store.js +0 -177
  719. package/dist/store.js.map +0 -1
  720. package/dist/tools/bash.d.ts +0 -10
  721. package/dist/tools/bash.d.ts.map +0 -1
  722. package/dist/tools/bash.js +0 -80
  723. package/dist/tools/bash.js.map +0 -1
  724. package/dist/tools/edit.d.ts +0 -11
  725. package/dist/tools/edit.d.ts.map +0 -1
  726. package/dist/tools/edit.js +0 -131
  727. package/dist/tools/edit.js.map +0 -1
  728. package/dist/tools/event.d.ts.map +0 -1
  729. package/dist/tools/event.js +0 -252
  730. package/dist/tools/event.js.map +0 -1
  731. package/dist/tools/index.d.ts +0 -24
  732. package/dist/tools/index.d.ts.map +0 -1
  733. package/dist/tools/index.js +0 -31
  734. package/dist/tools/index.js.map +0 -1
  735. package/dist/tools/react.d.ts.map +0 -1
  736. package/dist/tools/react.js.map +0 -1
  737. package/dist/tools/read.d.ts +0 -11
  738. package/dist/tools/read.d.ts.map +0 -1
  739. package/dist/tools/read.js +0 -134
  740. package/dist/tools/read.js.map +0 -1
  741. package/dist/tools/sandbox.d.ts.map +0 -1
  742. package/dist/tools/sandbox.js.map +0 -1
  743. package/dist/tools/truncate.d.ts +0 -33
  744. package/dist/tools/truncate.d.ts.map +0 -1
  745. package/dist/tools/truncate.js +0 -184
  746. package/dist/tools/truncate.js.map +0 -1
  747. package/dist/tools/types.d.ts +0 -54
  748. package/dist/tools/types.d.ts.map +0 -1
  749. package/dist/tools/types.js.map +0 -1
  750. package/dist/tools/write.d.ts +0 -10
  751. package/dist/tools/write.d.ts.map +0 -1
  752. package/dist/tools/write.js +0 -29
  753. package/dist/tools/write.js.map +0 -1
  754. package/dist/trigger.d.ts +0 -22
  755. package/dist/trigger.d.ts.map +0 -1
  756. package/dist/trigger.js +0 -100
  757. package/dist/trigger.js.map +0 -1
  758. package/dist/utils/date.d.ts +0 -10
  759. package/dist/utils/date.d.ts.map +0 -1
  760. package/dist/utils/date.js +0 -23
  761. package/dist/utils/date.js.map +0 -1
  762. package/dist/utils/env.d.ts +0 -3
  763. package/dist/utils/env.d.ts.map +0 -1
  764. package/dist/utils/env.js +0 -12
  765. package/dist/utils/env.js.map +0 -1
  766. package/dist/utils/file-guards.d.ts +0 -9
  767. package/dist/utils/file-guards.d.ts.map +0 -1
  768. package/dist/utils/file-guards.js +0 -59
  769. package/dist/utils/file-guards.js.map +0 -1
  770. package/dist/utils/fs-atomic.d.ts +0 -10
  771. package/dist/utils/fs-atomic.d.ts.map +0 -1
  772. package/dist/utils/fs-atomic.js +0 -45
  773. package/dist/utils/fs-atomic.js.map +0 -1
  774. package/dist/utils/html.d.ts +0 -2
  775. package/dist/utils/html.d.ts.map +0 -1
  776. package/dist/utils/html.js +0 -4
  777. package/dist/utils/html.js.map +0 -1
  778. package/dist/utils/http-body.d.ts +0 -10
  779. package/dist/utils/http-body.d.ts.map +0 -1
  780. package/dist/utils/http-body.js +0 -34
  781. package/dist/utils/http-body.js.map +0 -1
  782. package/dist/vault/routing.d.ts +0 -3
  783. package/dist/vault/routing.d.ts.map +0 -1
  784. package/dist/vault/routing.js +0 -13
  785. package/dist/vault/routing.js.map +0 -1
  786. package/dist/web/admin/portal.d.ts +0 -5
  787. package/dist/web/admin/portal.d.ts.map +0 -1
  788. package/dist/web/admin/portal.js +0 -2572
  789. package/dist/web/admin/portal.js.map +0 -1
  790. package/dist/web/admin/provider-models.d.ts.map +0 -1
  791. package/dist/web/admin/provider-models.js.map +0 -1
  792. package/dist/web/admin/store.d.ts +0 -13
  793. package/dist/web/admin/store.d.ts.map +0 -1
  794. package/dist/web/admin/store.js +0 -14
  795. package/dist/web/admin/store.js.map +0 -1
  796. package/dist/web/admin/types.d.ts +0 -30
  797. package/dist/web/admin/types.d.ts.map +0 -1
  798. package/dist/web/admin/types.js.map +0 -1
  799. package/dist/web/agent-events/portal.d.ts +0 -3
  800. package/dist/web/agent-events/portal.d.ts.map +0 -1
  801. package/dist/web/agent-events/portal.js +0 -18
  802. package/dist/web/agent-events/portal.js.map +0 -1
  803. package/dist/web/login/oauth.d.ts +0 -6
  804. package/dist/web/login/oauth.d.ts.map +0 -1
  805. package/dist/web/login/oauth.js.map +0 -1
  806. package/dist/web/login/portal.d.ts.map +0 -1
  807. package/dist/web/login/portal.js.map +0 -1
  808. package/dist/web/login/store.d.ts +0 -8
  809. package/dist/web/login/store.d.ts.map +0 -1
  810. package/dist/web/login/store.js +0 -15
  811. package/dist/web/login/store.js.map +0 -1
  812. package/dist/web/login/types.d.ts.map +0 -1
  813. package/dist/web/login/types.js.map +0 -1
  814. package/dist/web/request.d.ts +0 -3
  815. package/dist/web/request.d.ts.map +0 -1
  816. package/dist/web/request.js +0 -13
  817. package/dist/web/request.js.map +0 -1
  818. package/dist/web/server.d.ts.map +0 -1
  819. package/dist/web/server.js.map +0 -1
  820. package/dist/web/session-view/command.d.ts +0 -4
  821. package/dist/web/session-view/command.d.ts.map +0 -1
  822. package/dist/web/session-view/command.js +0 -7
  823. package/dist/web/session-view/command.js.map +0 -1
  824. package/dist/web/session-view/portal.d.ts +0 -13
  825. package/dist/web/session-view/portal.d.ts.map +0 -1
  826. package/dist/web/session-view/portal.js.map +0 -1
  827. package/dist/web/session-view/service.d.ts +0 -6
  828. package/dist/web/session-view/service.d.ts.map +0 -1
  829. package/dist/web/session-view/service.js +0 -498
  830. package/dist/web/session-view/service.js.map +0 -1
  831. package/dist/web/session-view/store.d.ts +0 -8
  832. package/dist/web/session-view/store.d.ts.map +0 -1
  833. package/dist/web/session-view/store.js +0 -15
  834. package/dist/web/session-view/store.js.map +0 -1
  835. package/dist/web/session-view/types.d.ts.map +0 -1
  836. package/dist/web/session-view/types.js.map +0 -1
  837. package/dist/web/token-store.d.ts.map +0 -1
  838. package/dist/web/token-store.js.map +0 -1
  839. package/dist/web/types.d.ts.map +0 -1
  840. package/dist/web/types.js.map +0 -1
  841. /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
  842. /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
  843. /package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -0
  844. /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
  845. /package/dist/{commands → adapters/commands}/types.js +0 -0
  846. /package/dist/{harness/extensions → adapters/github}/types.js +0 -0
  847. /package/dist/{tools → adapters/web/admin}/types.js +0 -0
  848. /package/dist/{web/admin → adapters/web/login}/types.js +0 -0
  849. /package/dist/{web/login → adapters/web/session-view}/types.js +0 -0
  850. /package/dist/{web → adapters/web}/token-store.d.ts +0 -0
  851. /package/dist/{web → adapters/web}/types.d.ts +0 -0
  852. /package/dist/{web/session-view → adapters/web}/types.js +0 -0
  853. /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
  854. /package/dist/{web → cli}/types.js +0 -0
  855. /package/dist/{adapters/slack → harness}/tools/attach.d.ts +0 -0
  856. /package/dist/{tools → harness/tools}/react.d.ts +0 -0
package/dist/main.js CHANGED
@@ -1,38 +1,47 @@
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";
3
+ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
4
+ import { dirname, join } from "node:path";
5
+ import { fileURLToPath } from "node:url";
8
6
  import { DiscordMessagingBot } from "./adapters/discord/bot.js";
7
+ import { GithubMessagingBot } from "./adapters/github/bot.js";
8
+ import { createGithubToolPack } from "./adapters/github/tool-pack.js";
9
9
  import { TelegramMessagingBot } from "./adapters/telegram/bot.js";
10
10
  import { SlackMessagingBot as SlackMessagingBotClass } from "./adapters/slack/bot.js";
11
- import { downloadChannel } from "./download.js";
12
- import { EventsWatcher } from "./events.js";
11
+ import { createSlackToolPack } from "./adapters/slack/tool-pack.js";
12
+ import { downloadChannel } from "./cli/download.js";
13
+ import { DreamScheduler } from "./dream/index.js";
14
+ import { EventScheduler } from "./events/scheduler.js";
13
15
  import * as log from "./log.js";
14
- import { startWebServer } from "./web/server.js";
15
- import { InMemoryAdminTokenStore } from "./web/admin/store.js";
16
- import { InMemoryLinkTokenStore } from "./web/login/store.js";
17
- import { InMemorySessionViewTokenStore } from "./web/session-view/store.js";
18
- import { DockerContainerManager } from "./provisioner.js";
19
- import { assertStateDirOutsideWorkspace, createGlobalSettingsFile, loadGlobalSettings, MissingGlobalSettingsError, } from "./config.js";
20
- import { configureHttpDispatcher, defaultAuthPath, defaultModelsJsonPath, parseHttpIdleTimeoutMs, } from "./harness/index.js";
21
- import { existsSync, readFileSync } from "fs";
22
- import { readEnv, setEnvAliases } from "./utils/env.js";
23
- import { ensureDirExists, isRecord, readJsonFileIfExists } from "./utils/file-guards.js";
24
- import { SandboxError, parseSandboxArg, validateSandbox, } from "./sandbox/index.js";
16
+ import { createProcessShutdownHandler, runShutdownSteps } from "./cli/process-lifecycle.js";
17
+ import { startWebServer } from "./adapters/web/server.js";
18
+ import { InMemoryAdminTokenStore } from "./adapters/web/admin/portal.js";
19
+ import { InMemoryLinkTokenStore } from "./adapters/web/login/portal.js";
20
+ import { InMemorySessionViewTokenStore } from "./adapters/web/session-view/portal.js";
21
+ import { DockerContainerManager } from "./sandbox/provisioner.js";
22
+ import { loadGlobalSettings, MissingGlobalSettingsError } from "./settings/index.js";
23
+ import { assertStateDirOutsideWorkspace } from "./file-guards.js";
24
+ import { resolveLinkBaseUrl } from "./env-manifest.js";
25
+ import { configureHttpDispatcher, defaultModelsJsonPath, parseHttpIdleTimeoutMs, } from "./harness/index.js";
26
+ import { readEnv, setEnvAliases } from "./env-manifest.js";
27
+ import { ensureDirExists, isRecord, readJsonFileIfExists } from "./file-guards.js";
28
+ import { SandboxError, validateSandbox } from "./sandbox/index.js";
29
+ import { helpText, resolveBoot } from "./cli/boot.js";
30
+ import { runOnboardCommand } from "./cli/onboard.js";
31
+ import { envReport, noPlatformsMessage, platformIsActive } from "./env-manifest.js";
25
32
  import { FileVaultManager } from "./vault/index.js";
26
- import { runExtCommand } from "./cli/ext.js";
33
+ import { runOfficeCommand } from "./cli/office.js";
34
+ import { runSessionsCommand } from "./cli/sessions.js";
35
+ import { buildContainerBindTranslator, createWorkspace, formatUnmigratedOfficesError, migrateLegacyOffices, OfficeRegistry, } from "./office/index.js";
27
36
  import { createConversationRuntime } from "./runtime/conversation-runtime.js";
28
- import { ChannelStore } from "./store.js";
29
- import * as Sentry from "@sentry/node";
37
+ import { captureError, shutdownObservability } from "./observability/index.js";
30
38
  function getVersion() {
31
39
  // Try to find package.json in the dist directory or parent
40
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
32
41
  const possiblePaths = [
33
- pathJoin(dirname(fileURLToPath(import.meta.url)), "package.json"),
34
- pathJoin(dirname(fileURLToPath(import.meta.url)), "..", "package.json"),
35
- pathJoin(process.cwd(), "package.json"),
42
+ join(moduleDir, "package.json"),
43
+ join(dirname(moduleDir), "package.json"),
44
+ join(process.cwd(), "package.json"),
36
45
  ];
37
46
  for (const pkgPath of possiblePaths) {
38
47
  const pkg = readJsonFileIfExists(pkgPath, (value) => isRecord(value), () => "Ignoring package.json while resolving version");
@@ -45,57 +54,28 @@ const SLACK_APP_TOKEN = readEnv("SLACK_APP_TOKEN");
45
54
  const SLACK_BOT_TOKEN = readEnv("SLACK_BOT_TOKEN");
46
55
  const TELEGRAM_BOT_TOKEN = readEnv("TELEGRAM_BOT_TOKEN");
47
56
  const DISCORD_BOT_TOKEN = readEnv("DISCORD_BOT_TOKEN");
48
- const LINK_URL = readEnv("LINK_URL");
57
+ const GITHUB_APP_ID = readEnv("GITHUB_APP_ID");
58
+ const GITHUB_APP_PRIVATE_KEY = readEnv("GITHUB_APP_PRIVATE_KEY");
59
+ const GITHUB_APP_PRIVATE_KEY_PATH = readEnv("GITHUB_APP_PRIVATE_KEY_PATH");
60
+ const GITHUB_INSTALLATION_ID = readEnv("GITHUB_INSTALLATION_ID");
61
+ const GITHUB_REPOS = readEnv("GITHUB_REPOS");
62
+ const GITHUB_POLL_INTERVAL = readEnv("GITHUB_POLL_INTERVAL");
63
+ const GITHUB_WEBHOOK_SECRET = readEnv("GITHUB_WEBHOOK_SECRET");
64
+ // Externally-visible base URL of the link/OAuth server; the env read and
65
+ // trailing-slash normalization live in config.resolveLinkBaseUrl.
66
+ const LINK_BASE_URL = resolveLinkBaseUrl();
49
67
  const LINK_PORT_RAW = readEnv("LINK_PORT");
50
- const LINK_PORT = LINK_PORT_RAW ? parseInt(LINK_PORT_RAW, 10) : LINK_URL ? 8181 : undefined;
51
- function parseArgs() {
52
- const args = process.argv.slice(2);
53
- let sandbox = { type: "host" };
54
- let workingDir;
55
- let stateDirArg;
56
- let downloadChannelId;
57
- let showOnboard = false;
58
- let showVersion = false;
59
- for (let i = 0; i < args.length; i++) {
60
- const arg = args[i];
61
- if (arg === "--version" || arg === "-v" || arg === "-V") {
62
- showVersion = true;
63
- }
64
- else if (arg === "--onboard") {
65
- showOnboard = true;
66
- }
67
- else if (arg.startsWith("--sandbox=")) {
68
- sandbox = parseSandboxArg(arg.slice("--sandbox=".length));
69
- }
70
- else if (arg === "--sandbox") {
71
- sandbox = parseSandboxArg(args[++i] || "");
72
- }
73
- else if (arg.startsWith("--state-dir=")) {
74
- stateDirArg = arg.slice("--state-dir=".length);
75
- }
76
- else if (arg === "--state-dir") {
77
- stateDirArg = args[++i];
78
- }
79
- else if (arg.startsWith("--download=")) {
80
- downloadChannelId = arg.slice("--download=".length);
81
- }
82
- else if (arg === "--download") {
83
- downloadChannelId = args[++i];
84
- }
85
- else if (!arg.startsWith("-")) {
86
- workingDir = arg;
87
- }
88
- }
89
- return {
90
- workingDir: workingDir ? resolve(workingDir) : undefined,
91
- stateDir: stateDirArg ? resolve(stateDirArg) : undefined,
92
- sandbox,
93
- downloadChannel: downloadChannelId,
94
- showOnboard,
95
- showVersion,
96
- };
97
- }
68
+ const LINK_PORT = LINK_PORT_RAW ? parseInt(LINK_PORT_RAW, 10) : LINK_BASE_URL ? 8181 : undefined;
69
+ const OPENCONNECTOR_ENDPOINT = readEnv("OPENCONNECTOR_ENDPOINT");
70
+ const openConnector = OPENCONNECTOR_ENDPOINT
71
+ ? { url: OPENCONNECTOR_ENDPOINT }
72
+ : undefined;
98
73
  const WORLD_WRITABLE_MODE = 0o002;
74
+ // How long in-flight runs (and messages already queued behind them) may keep
75
+ // running after a shutdown signal before they are aborted. pm2 fork-mode reload
76
+ // is sequential, so this is also the window where no process is connected to
77
+ // the platforms; Slack's documented redelivery schedule ends at five minutes.
78
+ const SHUTDOWN_DRAIN_TIMEOUT_MS = 5 * 60_000;
99
79
  function ensureSecureStateDir(path) {
100
80
  let stat;
101
81
  try {
@@ -150,38 +130,44 @@ function handleStartupError(error) {
150
130
  console.error(String(error));
151
131
  process.exit(1);
152
132
  }
153
- // `mikan ext …` manages extensions and exits; handle it before the normal
154
- // bot-mode argument parsing (which requires a workspace dir and tokens).
155
- if (process.argv[2] === "ext") {
156
- const code = await runExtCommand(process.argv.slice(3));
157
- process.exit(code);
158
- }
159
- let parsedArgs;
133
+ let plan;
160
134
  try {
161
- parsedArgs = parseArgs();
135
+ plan = resolveBoot();
162
136
  }
163
137
  catch (error) {
164
138
  handleStartupError(error);
165
139
  }
140
+ // `mikan office …` inspects/claims conversation offices and exits.
141
+ if (plan.mode === "office") {
142
+ process.exit(runOfficeCommand(plan.officeArgs ?? []));
143
+ }
144
+ // `mikan sessions …` migrates/maintains session files and exits.
145
+ if (plan.mode === "sessions") {
146
+ process.exit(await runSessionsCommand(plan.sessionsArgs ?? []));
147
+ }
166
148
  // Global fetch: proxy support (HTTP_PROXY/HTTPS_PROXY/NO_PROXY) and idle
167
149
  // timeouts so a stalled LLM stream errors out instead of hanging a session.
168
150
  const httpIdleTimeoutMs = parseHttpIdleTimeoutMs(readEnv("HTTP_IDLE_TIMEOUT"));
169
151
  configureHttpDispatcher(httpIdleTimeoutMs);
170
- // Handle --version
171
- if (parsedArgs.showVersion) {
152
+ if (plan.mode === "help") {
153
+ console.log(helpText());
154
+ process.exit(0);
155
+ }
156
+ if (plan.mode === "env") {
157
+ console.log(envReport());
158
+ process.exit(0);
159
+ }
160
+ if (plan.mode === "version") {
172
161
  console.log(getVersion());
173
162
  process.exit(0);
174
163
  }
175
- // Handle --onboard mode
176
- if (parsedArgs.showOnboard) {
177
- const stateDir = parsedArgs.stateDir ?? join(homedir(), ".mikan");
164
+ // Handle onboard mode
165
+ if (plan.mode === "onboard") {
166
+ const stateDir = plan.stateDir;
178
167
  setEnvAliases("STATE_DIR", stateDir);
179
168
  ensureSecureStateDir(stateDir);
180
169
  try {
181
- const settingsPath = createGlobalSettingsFile(stateDir);
182
- console.log(`Created global settings at ${settingsPath}`);
183
- console.log("Review the file, then start mikan with your working directory.");
184
- process.exit(0);
170
+ process.exit(await runOnboardCommand(stateDir));
185
171
  }
186
172
  catch (err) {
187
173
  console.error(err instanceof Error ? err.message : String(err));
@@ -189,53 +175,89 @@ if (parsedArgs.showOnboard) {
189
175
  }
190
176
  }
191
177
  // Handle --download mode (Slack only)
192
- if (parsedArgs.downloadChannel) {
178
+ if (plan.mode === "download" && plan.downloadChannel) {
193
179
  if (!SLACK_BOT_TOKEN) {
194
180
  console.error("Missing env: SLACK_BOT_TOKEN");
195
181
  process.exit(1);
196
182
  }
197
- await downloadChannel(parsedArgs.downloadChannel, SLACK_BOT_TOKEN);
183
+ await downloadChannel(plan.downloadChannel, SLACK_BOT_TOKEN);
198
184
  process.exit(0);
199
185
  }
200
- // Normal bot mode - require working dir
201
- if (!parsedArgs.workingDir) {
202
- console.error("Usage: mikan [--state-dir=<dir>] [--sandbox=host|container:<name>|image:<image>|firecracker:<vm-id>:<host-path>|cloudflare:<sandbox-id>] <working-directory>");
203
- console.error(" mikan --onboard [--state-dir=<dir>]");
204
- console.error(" mikan --download <channel-id>");
205
- process.exit(1);
206
- }
207
- const { workingDir, sandbox } = { workingDir: parsedArgs.workingDir, sandbox: parsedArgs.sandbox };
208
- const stateDir = parsedArgs.stateDir ?? join(homedir(), ".mikan");
186
+ // Normal bot mode - working dir is optional and defaults under the state dir
187
+ const sandbox = plan.sandbox;
188
+ const stateDir = plan.stateDir;
189
+ const workingDir = plan.workingDir;
209
190
  setEnvAliases("STATE_DIR", stateDir);
210
191
  ensureSecureStateDir(stateDir);
192
+ if (!plan.workingDirExplicit) {
193
+ ensureDirExists(workingDir);
194
+ }
211
195
  try {
212
196
  assertStateDirOutsideWorkspace(stateDir, workingDir, sandbox.type);
213
197
  }
214
198
  catch (error) {
215
199
  handleStartupError(error);
216
200
  }
217
- // Validate platform tokens
218
- const hasSlack = !!(SLACK_APP_TOKEN && SLACK_BOT_TOKEN);
219
- const hasTelegram = !!TELEGRAM_BOT_TOKEN;
220
- const hasDiscord = !!DISCORD_BOT_TOKEN;
221
- if (!hasSlack && !hasTelegram && !hasDiscord) {
222
- console.error("No platform tokens found. Set one of:\n" +
223
- " Slack: SLACK_APP_TOKEN + SLACK_BOT_TOKEN\n" +
224
- " Telegram: TELEGRAM_BOT_TOKEN\n" +
225
- " Discord: DISCORD_BOT_TOKEN");
201
+ // Validate platform tokens — activation rules live in the env manifest.
202
+ const hasSlack = platformIsActive("slack");
203
+ const hasTelegram = platformIsActive("telegram");
204
+ const hasDiscord = platformIsActive("discord");
205
+ const hasGithub = platformIsActive("github");
206
+ if (!hasSlack && !hasTelegram && !hasDiscord && !hasGithub) {
207
+ console.error(noPlatformsMessage());
226
208
  process.exit(1);
227
209
  }
210
+ // Move legacy raw-id conversation directories to the office-key layout before
211
+ // anything touches the workspace. Runs every boot; a completed migration is a
212
+ // no-op. Unowned or failed offices are fatal: after the layout flip a legacy
213
+ // directory is invisible to the runtime, and booting anyway would present
214
+ // those conversations as silently empty.
215
+ const enabledPlatforms = [
216
+ ...(hasSlack ? ["slack"] : []),
217
+ ...(hasTelegram ? ["telegram"] : []),
218
+ ...(hasDiscord ? ["discord"] : []),
219
+ ...(hasGithub ? ["github"] : []),
220
+ ];
221
+ const officeMigration = (() => {
222
+ try {
223
+ return migrateLegacyOffices({ workspaceRoot: workingDir, stateDir, enabledPlatforms });
224
+ }
225
+ catch (error) {
226
+ handleStartupError(error);
227
+ }
228
+ })();
229
+ if (officeMigration.unowned.length > 0 ||
230
+ officeMigration.failed.length > 0 ||
231
+ officeMigration.vaultConflicts.length > 0 ||
232
+ officeMigration.stateDirConflicts.length > 0) {
233
+ console.error(formatUnmigratedOfficesError(officeMigration));
234
+ process.exit(1);
235
+ }
236
+ if (officeMigration.migrated.length > 0 || officeMigration.recovered.length > 0) {
237
+ console.log(` Office layout migration: ${officeMigration.migrated.length} moved, ` +
238
+ `${officeMigration.recovered.length} recovered.`);
239
+ }
240
+ if (officeMigration.vaultKeysMigrated.length > 0) {
241
+ console.log(` Vault keys migrated to office keys: ${officeMigration.vaultKeysMigrated.length}.`);
242
+ }
243
+ if (officeMigration.stateDirsMigrated.length > 0) {
244
+ console.log(` Host state dirs migrated to office keys: ${officeMigration.stateDirsMigrated.length}.`);
245
+ }
228
246
  try {
229
247
  await validateSandbox(sandbox);
230
248
  }
231
249
  catch (error) {
232
250
  handleStartupError(error);
233
251
  }
252
+ // The one Workspace value for this process: workspace-global paths plus the
253
+ // per-conversation Office factory. Constructed after the office migration so
254
+ // every office it materializes lands in the office-key layout.
255
+ const workspace = createWorkspace({ root: workingDir, stateDir });
234
256
  const vaultManager = new FileVaultManager(stateDir);
235
257
  if (vaultManager.isEnabled()) {
236
258
  console.log(sandbox.type === "container"
237
259
  ? " Vault system enabled. Container vault active."
238
- : sandbox.type === "image" || sandbox.type === "firecracker" || sandbox.type === "cloudflare"
260
+ : sandbox.type === "image" || sandbox.type === "cloudflare"
239
261
  ? " Vault system enabled. Conversation-scoped credential routing active."
240
262
  : " Vault system enabled. Host mode will not inject vault env.");
241
263
  }
@@ -247,11 +269,12 @@ const startupConfig = (() => {
247
269
  handleStartupError(error);
248
270
  }
249
271
  })();
250
- const sandboxLimits = startupConfig.sandboxCpus || startupConfig.sandboxMemory
251
- ? { cpus: startupConfig.sandboxCpus, memory: startupConfig.sandboxMemory }
272
+ const sandboxSettings = startupConfig.sandbox;
273
+ const sandboxLimits = sandboxSettings?.cpus || sandboxSettings?.memory
274
+ ? { cpus: sandboxSettings?.cpus, memory: sandboxSettings?.memory }
252
275
  : undefined;
253
- const sandboxBoostLimits = startupConfig.sandboxBoostCpus || startupConfig.sandboxBoostMemory
254
- ? { cpus: startupConfig.sandboxBoostCpus, memory: startupConfig.sandboxBoostMemory }
276
+ const sandboxBoostLimits = sandboxSettings?.boost?.cpus || sandboxSettings?.boost?.memory
277
+ ? { cpus: sandboxSettings?.boost?.cpus, memory: sandboxSettings?.boost?.memory }
255
278
  : undefined;
256
279
  const provisioner = sandbox.type === "image"
257
280
  ? new DockerContainerManager(sandbox.image, {
@@ -259,11 +282,25 @@ const provisioner = sandbox.type === "image"
259
282
  boostLimits: sandboxBoostLimits,
260
283
  })
261
284
  : undefined;
285
+ // Containers provisioned before the office migration mount the renamed
286
+ // legacy paths. Their writable layers (everything installed inside) are
287
+ // preserved: each container is committed and recreated with translated
288
+ // mounts — on demand before its next message, and via a background sweep
289
+ // after the bots start.
290
+ const registryOffices = new OfficeRegistry(stateDir).getOffices();
291
+ if (provisioner && registryOffices.length > 0) {
292
+ provisioner.armContainerLayoutMigration(buildContainerBindTranslator({
293
+ offices: registryOffices,
294
+ workspaceRoot: workingDir,
295
+ stateDir,
296
+ }));
297
+ }
298
+ const resourceController = sandbox.type === "image" ? provisioner : undefined;
262
299
  if (sandbox.type === "image") {
263
- ensureDirExists(join(workingDir, "skills"));
264
- ensureDirExists(join(workingDir, "events"));
300
+ ensureDirExists(workspace.skillsDir);
301
+ ensureDirExists(workspace.agentsDir);
265
302
  try {
266
- writeFileSync(join(workingDir, "MEMORY.md"), "", { flag: "wx" });
303
+ writeFileSync(workspace.memoryPath, "", { flag: "wx" });
267
304
  }
268
305
  catch (err) {
269
306
  if (err.code !== "EEXIST")
@@ -277,64 +314,90 @@ setInterval(() => linkTokenStore.purge(), 5 * 60 * 1000).unref();
277
314
  setInterval(() => sessionViewTokenStore.purge(), 5 * 60 * 1000).unref();
278
315
  setInterval(() => adminTokenStore.purge(), 5 * 60 * 1000).unref();
279
316
  function portalBaseUrl() {
280
- if (LINK_URL)
281
- return LINK_URL.replace(/\/+$/, "");
317
+ if (LINK_BASE_URL)
318
+ return LINK_BASE_URL;
282
319
  if (LINK_PORT)
283
320
  return `http://localhost:${LINK_PORT}`;
284
321
  return undefined;
285
322
  }
286
- /** Idle timeout for managed image containers (10 minutes) */
287
- const IMAGE_IDLE_TIMEOUT_MS = 10 * 60 * 1000;
323
+ /** Idle timeout for managed sandboxes (10 minutes) */
324
+ const MANAGED_SANDBOX_IDLE_TIMEOUT_MS = 10 * 60 * 1000;
288
325
  if (provisioner) {
289
326
  await provisioner.reconcile();
290
- await provisioner.stopIdle(IMAGE_IDLE_TIMEOUT_MS);
291
- setInterval(() => provisioner.stopIdle(IMAGE_IDLE_TIMEOUT_MS), IMAGE_IDLE_TIMEOUT_MS).unref();
327
+ await provisioner.stopIdle(MANAGED_SANDBOX_IDLE_TIMEOUT_MS);
328
+ setInterval(() => provisioner.stopIdle(MANAGED_SANDBOX_IDLE_TIMEOUT_MS), MANAGED_SANDBOX_IDLE_TIMEOUT_MS).unref();
292
329
  }
293
- // Declared before the runtime so the notifier closure can capture them;
294
- // bots register below once their platforms initialize.
295
- const bots = [];
296
330
  const botsByPlatform = {};
297
- /**
298
- * Resolve which platform bot to use: an explicit platform, or the sole
299
- * running one. Mirrors event-file platform resolution.
300
- */
301
- function resolvePlatformBot(op, platform) {
302
- const available = Object.keys(botsByPlatform);
303
- const key = platform?.trim().toLowerCase() || (available.length === 1 ? available[0] : undefined);
304
- const bot = key ? botsByPlatform[key] : undefined;
331
+ /** github_* tool backends: PR push/create and CI checks, host-side. */
332
+ function requireGithubBot(op) {
333
+ const bot = botsByPlatform.github;
305
334
  if (!bot) {
306
- throw new Error(platform
307
- ? `${op}: unknown platform '${platform}' (available: ${available.join(", ") || "none"})`
308
- : `${op}: multiple platforms active (${available.join(", ")}); specify platform`);
335
+ throw new Error(`${op}: the GitHub platform is not running`);
309
336
  }
310
- return [key, bot];
311
- }
312
- /** Extension `api.notify` backend: post into a conversation without a run. */
313
- const platformNotifier = async (conversationId, text, platform) => {
314
- const [key, bot] = resolvePlatformBot("notify", platform);
315
- await bot.postMessage(conversationId, text);
316
- log.logInfo(`[notify] posted to ${key}/${conversationId} (${text.length} chars)`);
317
- };
318
- /** Extension `api.react` backend: add a reaction to a message. */
319
- const platformReactor = async (conversationId, messageTs, emoji, platform) => {
320
- const [key, bot] = resolvePlatformBot("react", platform);
321
- if (!bot.addReaction) {
322
- throw new Error(`react: platform '${key}' does not support reactions`);
337
+ return bot;
338
+ }
339
+ /** slack_* tool backends: Block Kit posting/updating, host-side. */
340
+ function requireSlackBot(op) {
341
+ const bot = botsByPlatform.slack;
342
+ if (!bot) {
343
+ throw new Error(`${op}: the Slack platform is not running`);
344
+ }
345
+ return bot;
346
+ }
347
+ /**
348
+ * Platform capability pack factories — only when the corresponding bot is
349
+ * configured. Factories, not instances: each runner materializes its own
350
+ * pack so per-run bind state never crosses conversations.
351
+ */
352
+ function buildPlatformToolPackFactories() {
353
+ const factories = [];
354
+ if (hasSlack) {
355
+ const platformSlackOps = {
356
+ postBlocks: async (conversationId, { text, blocks, threadTs }) => {
357
+ const bot = requireSlackBot("slack_blockkit");
358
+ const ts = threadTs
359
+ ? await bot.postInThreadBlocks(conversationId, threadTs, text, blocks)
360
+ : await bot.postMessageBlocks(conversationId, text, blocks);
361
+ bot.logBotResponse(conversationId, text, ts, threadTs, blocks);
362
+ return { ts };
363
+ },
364
+ updateBlocks: async (conversationId, { ts, text, blocks, threadTs }) => {
365
+ const bot = requireSlackBot("slack_blockkit");
366
+ await bot.updateMessageBlocks(conversationId, ts, text, blocks);
367
+ bot.logBotResponse(conversationId, text, ts, threadTs, blocks);
368
+ },
369
+ ownsBlockKitMessage: (conversationId, ts, threadTs) => requireSlackBot("slack_blockkit").ownsBlockKitMessage(conversationId, ts, threadTs),
370
+ };
371
+ factories.push(() => createSlackToolPack(platformSlackOps));
323
372
  }
324
- await bot.addReaction(conversationId, messageTs, emoji);
325
- log.logInfo(`[react] :${emoji}: on ${key}/${conversationId}`);
326
- };
373
+ if (!hasGithub)
374
+ return factories;
375
+ const platformGithubOps = {
376
+ pushAndCreatePr: (conversationId, request) => requireGithubBot("github_pr").ops.pushAndCreatePr(conversationId, request),
377
+ getChecks: (conversationId, branch) => requireGithubBot("github_checks").ops.getChecks(conversationId, branch),
378
+ getJobLog: (conversationId, jobId) => requireGithubBot("github_checks").ops.getJobLog(conversationId, jobId),
379
+ replyToReviewThread: (conversationId, commentId, body) => requireGithubBot("github_review_reply").ops.replyToReviewThread(conversationId, commentId, body),
380
+ syncRepo: (conversationId, branch) => requireGithubBot("github_sync").ops.syncRepo(conversationId, branch),
381
+ readGithub: (conversationId, request) => requireGithubBot("github_read").ops.readGithub(conversationId, request),
382
+ manageIssue: (conversationId, request) => requireGithubBot("github_issue").ops.manageIssue(conversationId, request),
383
+ };
384
+ factories.push(() => createGithubToolPack(platformGithubOps));
385
+ return factories;
386
+ }
387
+ let eventScheduler;
327
388
  const handler = createConversationRuntime({
328
- workingDir,
389
+ workspace,
390
+ eventScheduler: () => eventScheduler,
329
391
  sandbox,
330
392
  vaultManager,
331
393
  provisioner,
394
+ resourceController,
332
395
  linkTokenStore,
333
396
  sessionViewTokenStore,
334
397
  adminTokenStore,
398
+ openConnector,
335
399
  portalBaseUrl: portalBaseUrl(),
336
- platformNotifier,
337
- platformReactor,
400
+ platformToolPackFactories: buildPlatformToolPackFactories(),
338
401
  });
339
402
  const sandboxDesc = sandbox.type === "host"
340
403
  ? "host"
@@ -342,9 +405,7 @@ const sandboxDesc = sandbox.type === "host"
342
405
  ? `container:${sandbox.container}`
343
406
  : sandbox.type === "image"
344
407
  ? `image:${sandbox.image}`
345
- : sandbox.type === "firecracker"
346
- ? `firecracker:${sandbox.vmId}`
347
- : `cloudflare:${sandbox.sandboxId}`;
408
+ : `cloudflare:${sandbox.sandboxId}`;
348
409
  log.logStartup(workingDir, sandboxDesc);
349
410
  logHarnessStartupSummary();
350
411
  /**
@@ -358,19 +419,6 @@ function logHarnessStartupSummary() {
358
419
  process.env.HTTP_PROXY ??
359
420
  process.env.http_proxy;
360
421
  log.logInfo(`HTTP dispatcher: idle timeout ${httpIdleTimeoutMs}ms${proxy ? `, proxy ${proxy}` : ", no proxy"}`);
361
- const authPath = defaultAuthPath();
362
- if (existsSync(authPath)) {
363
- try {
364
- const providers = Object.keys(JSON.parse(readFileSync(authPath, "utf-8")));
365
- log.logInfo(`Harness auth: ${authPath} (providers: ${providers.join(", ") || "none"})`);
366
- }
367
- catch {
368
- log.logWarning(`Harness auth: ${authPath} exists but is not valid JSON`);
369
- }
370
- }
371
- else {
372
- log.logInfo(`Harness auth: ${authPath} missing — provider keys come from env vars only`);
373
- }
374
422
  const modelsPath = defaultModelsJsonPath();
375
423
  log.logInfo(existsSync(modelsPath)
376
424
  ? `Harness models.json: ${modelsPath}`
@@ -382,14 +430,11 @@ if (hasSlack) {
382
430
  if (!slackMessagingBotToken || !slackAppToken) {
383
431
  throw new Error("Slack startup requires both SLACK_APP_TOKEN and SLACK_BOT_TOKEN");
384
432
  }
385
- const sharedStore = new ChannelStore({ workingDir, botToken: slackMessagingBotToken });
386
433
  const slackMessagingBot = new SlackMessagingBotClass(handler, {
387
434
  appToken: slackAppToken,
388
435
  botToken: slackMessagingBotToken,
389
- workingDir,
390
- store: sharedStore,
436
+ workspace,
391
437
  });
392
- bots.push(slackMessagingBot);
393
438
  botsByPlatform.slack = slackMessagingBot;
394
439
  log.logInfo("Platform: Slack");
395
440
  }
@@ -400,9 +445,8 @@ if (hasTelegram) {
400
445
  }
401
446
  const telegramMessagingBot = new TelegramMessagingBot(handler, {
402
447
  token: telegramToken,
403
- workingDir,
448
+ workspace,
404
449
  });
405
- bots.push(telegramMessagingBot);
406
450
  botsByPlatform.telegram = telegramMessagingBot;
407
451
  log.logInfo("Platform: Telegram");
408
452
  }
@@ -413,14 +457,48 @@ if (hasDiscord) {
413
457
  }
414
458
  const discordMessagingBot = new DiscordMessagingBot(handler, {
415
459
  token: discordToken,
416
- workingDir,
460
+ workspace,
417
461
  });
418
- bots.push(discordMessagingBot);
419
462
  botsByPlatform.discord = discordMessagingBot;
420
463
  log.logInfo("Platform: Discord");
421
464
  }
422
- if (LINK_PORT) {
423
- startWebServer({
465
+ if (hasGithub) {
466
+ if (!GITHUB_APP_ID || !GITHUB_INSTALLATION_ID) {
467
+ throw new Error("GitHub startup requires GITHUB_APP_ID and GITHUB_INSTALLATION_ID");
468
+ }
469
+ // Env vars flatten PEM newlines to literal `\n`; a key file avoids that.
470
+ const githubPrivateKey = GITHUB_APP_PRIVATE_KEY_PATH
471
+ ? readFileSync(GITHUB_APP_PRIVATE_KEY_PATH, "utf-8")
472
+ : GITHUB_APP_PRIVATE_KEY?.replace(/\\n/g, "\n");
473
+ if (!githubPrivateKey) {
474
+ throw new Error("GitHub startup requires GITHUB_APP_PRIVATE_KEY or GITHUB_APP_PRIVATE_KEY_PATH");
475
+ }
476
+ const pollIntervalSeconds = GITHUB_POLL_INTERVAL ? parseInt(GITHUB_POLL_INTERVAL, 10) : NaN;
477
+ const githubMessagingBot = new GithubMessagingBot(handler, {
478
+ appId: GITHUB_APP_ID,
479
+ privateKey: githubPrivateKey,
480
+ installationId: GITHUB_INSTALLATION_ID,
481
+ repos: GITHUB_REPOS
482
+ ? GITHUB_REPOS.split(",")
483
+ .map((repo) => repo.trim())
484
+ .filter(Boolean)
485
+ : [],
486
+ pollIntervalMs: (Number.isFinite(pollIntervalSeconds) && pollIntervalSeconds > 0 ? pollIntervalSeconds : 60) *
487
+ 1000,
488
+ workspace,
489
+ syncStatePath: join(stateDir, "github-sync.json"),
490
+ });
491
+ botsByPlatform.github = githubMessagingBot;
492
+ log.logInfo("Platform: GitHub");
493
+ }
494
+ const githubBotForWebhook = botsByPlatform.github;
495
+ if (GITHUB_WEBHOOK_SECRET && (!githubBotForWebhook || !LINK_PORT)) {
496
+ log.logWarning("GITHUB_WEBHOOK_SECRET is set but " +
497
+ (githubBotForWebhook ? "LINK_PORT is not" : "the GitHub platform is not enabled") +
498
+ " — the webhook endpoint will not be served");
499
+ }
500
+ const webServer = LINK_PORT
501
+ ? startWebServer({
424
502
  port: LINK_PORT,
425
503
  linkTokenStore,
426
504
  vaultManager,
@@ -431,28 +509,109 @@ if (LINK_PORT) {
431
509
  },
432
510
  sessionViewTokenStore,
433
511
  sessionViewInteractive: { handler, botsByPlatform },
434
- adminOptions: { adminTokenStore, workingDir, runtime: handler, sandbox, botsByPlatform },
512
+ adminOptions: {
513
+ adminTokenStore,
514
+ workspace,
515
+ runtime: handler,
516
+ sandbox,
517
+ botsByPlatform,
518
+ eventScheduler: () => eventScheduler,
519
+ },
520
+ githubWebhook: GITHUB_WEBHOOK_SECRET && githubBotForWebhook
521
+ ? {
522
+ secret: GITHUB_WEBHOOK_SECRET,
523
+ onPoke: () => githubBotForWebhook.requestPoll(),
524
+ }
525
+ : undefined,
526
+ })
527
+ : undefined;
528
+ function closeWebServer() {
529
+ if (!webServer)
530
+ return Promise.resolve();
531
+ return new Promise((resolve, reject) => {
532
+ webServer.close((error) => (error ? reject(error) : resolve()));
435
533
  });
436
534
  }
437
- // Start events watcher with explicit platform routing
438
- const eventsWatcher = new EventsWatcher(join(workingDir, "events"), botsByPlatform);
535
+ async function stopConversationIntake() {
536
+ const results = await Promise.allSettled([
537
+ ...Object.values(botsByPlatform).map((bot) => bot.stop()),
538
+ closeWebServer(),
539
+ ]);
540
+ const failures = results.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
541
+ if (failures.length > 0)
542
+ throw new AggregateError(failures, "Failed to stop conversation intake");
543
+ }
544
+ async function waitForGracefulDrain(drain) {
545
+ let timeout;
546
+ const settled = await Promise.race([
547
+ drain.then(() => true),
548
+ new Promise((resolve) => {
549
+ timeout = setTimeout(() => resolve(false), SHUTDOWN_DRAIN_TIMEOUT_MS);
550
+ }),
551
+ ]);
552
+ if (timeout)
553
+ clearTimeout(timeout);
554
+ return settled;
555
+ }
556
+ async function drainConversationWork(intakeStop) {
557
+ const dreamStop = dreamScheduler.stop();
558
+ const gracefulDrain = Promise.allSettled([intakeStop, dreamStop]);
559
+ if (!(await waitForGracefulDrain(gracefulDrain))) {
560
+ const runtimeResult = await Promise.allSettled([handler.shutdown(0)]);
561
+ const failures = [
562
+ new Error(`Conversation work did not drain within ${SHUTDOWN_DRAIN_TIMEOUT_MS}ms`),
563
+ ...runtimeResult.flatMap((result) => (result.status === "rejected" ? [result.reason] : [])),
564
+ ];
565
+ throw new AggregateError(failures, "Failed to drain conversation work");
566
+ }
567
+ const results = [
568
+ ...(await gracefulDrain),
569
+ ...(await Promise.allSettled([handler.shutdown(SHUTDOWN_DRAIN_TIMEOUT_MS)])),
570
+ ];
571
+ const failures = results.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
572
+ if (failures.length > 0)
573
+ throw new AggregateError(failures, "Failed to drain conversation work");
574
+ }
575
+ // Start the event scheduler; office event stores notify it through the runtime.
576
+ eventScheduler = new EventScheduler(workspace, botsByPlatform);
439
577
  const slackMessagingBot = botsByPlatform.slack;
440
578
  if (slackMessagingBot) {
441
- slackMessagingBot.setEventsWatcher(eventsWatcher);
442
- }
443
- eventsWatcher.start();
444
- // Handle shutdown
445
- async function shutdown() {
446
- await handler.shutdown();
447
- eventsWatcher.stop();
448
- await Sentry.close(5000);
449
- process.exit(0);
579
+ slackMessagingBot.setEventScheduler(eventScheduler);
450
580
  }
451
- process.on("SIGINT", shutdown);
452
- process.on("SIGTERM", shutdown);
581
+ eventScheduler.start();
582
+ const dreamScheduler = new DreamScheduler(workspace, handler);
583
+ dreamScheduler.start();
584
+ // Handle shutdown. A second signal is an explicit request to stop waiting.
585
+ const shutdown = createProcessShutdownHandler({
586
+ stop: () => {
587
+ const intakeStop = stopConversationIntake();
588
+ return runShutdownSteps([
589
+ {
590
+ name: "event scheduler",
591
+ run: async () => {
592
+ eventScheduler?.stop();
593
+ },
594
+ },
595
+ { name: "conversation work", run: () => drainConversationWork(intakeStop) },
596
+ ]);
597
+ },
598
+ shutdownObservability: () => shutdownObservability(5000),
599
+ captureError,
600
+ warn: log.logWarning,
601
+ exit: (code) => process.exit(code),
602
+ });
603
+ process.on("SIGINT", () => void shutdown("SIGINT"));
604
+ process.on("SIGTERM", () => void shutdown("SIGTERM"));
453
605
  // Start all bots
454
- await Promise.all(bots.map((bot) => bot.start().catch((err) => {
606
+ await Promise.all(Object.values(botsByPlatform).map((bot) => bot.start().catch((err) => {
455
607
  log.logWarning("Failed to start bot", err instanceof Error ? err.message : String(err));
456
608
  process.exit(1);
457
609
  })));
610
+ // Drain the container layout migration off the hot path; every unit is
611
+ // idempotent, so an interrupted sweep simply resumes on the next boot.
612
+ if (provisioner) {
613
+ void provisioner.sweepContainerLayoutMigration().catch((err) => {
614
+ log.logWarning("Container layout sweep failed", err instanceof Error ? err.message : String(err));
615
+ });
616
+ }
458
617
  //# sourceMappingURL=main.js.map