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

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 +342 -424
  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 +204 -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 +339 -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 +725 -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 +5 -0
  400. package/dist/harness/tools/codemode.d.ts.map +1 -0
  401. package/dist/harness/tools/codemode.js +229 -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 +83 -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 +6 -0
  456. package/dist/harness/tools/tool-search.d.ts.map +1 -0
  457. package/dist/harness/tools/tool-search.js +89 -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 +488 -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 +721 -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 +322 -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
@@ -1,440 +1,596 @@
1
- /**
2
- * MikanAgentSession — mikan's agent run loop.
3
- *
4
- * Owns a pi-agent-core `Agent` and layers on the behaviors mikan needs for
5
- * long-lived chat conversations:
6
- *
7
- * - message persistence into the conversation's {@link SessionStore}
8
- * - automatic context compaction (threshold and overflow recovery), using
9
- * pi-agent-core's compaction pipeline over the session tree
10
- * - automatic retry with exponential backoff on transient provider errors
11
- * - extension hook dispatch ({@link ExtensionRegistry})
12
- *
13
- * Events mirror the agent's lifecycle events plus `compaction_start/_end`
14
- * and `auto_retry_start/_end`, preserving the event surface mikan's
15
- * platform adapters already render.
16
- */
17
- import { Agent, calculateContextTokens, compact, convertToLlm, estimateContextTokens, getOrThrow, prepareCompaction, shouldCompact, } from "@earendil-works/pi-agent-core";
18
- import { isContextOverflow, } from "@earendil-works/pi-ai";
1
+ import { MikanModels } from "./models.js";
2
+ import { SessionStore } from "../sessions/session-store.js";
3
+ import { CONTROL_INPUT_CUSTOM_TYPE, RUN_CAUSE_CUSTOM_TYPE, } from "../sessions/types.js";
4
+ import { MikanAgentSession, DEFAULT_EVENT_BUDGET } from "./session.js";
5
+ import { runSubagent, DEFAULT_GLOBAL_SUBAGENT_SLOTS, SubagentSlotPool } from "./subagent.js";
6
+ import { loadSubagentProfiles } from "./subagent-profiles.js";
7
+ import { createMikanTools } from "./tools/index.js";
8
+ import { createSubagentTool } from "./tools/subagent.js";
9
+ import { createHistoryTool } from "./tools/history.js";
10
+ import { adaptAgentTool } from "./tools/pi-tools.js";
11
+ import { withSecretRedaction } from "./tools/secret-redaction.js";
12
+ import { createSandboxExecutionEnv } from "./execution-env.js";
13
+ import { mkdir } from "node:fs/promises";
14
+ import { join } from "node:path";
15
+ import { ActorExecutionResolver } from "./execution-resolver.js";
16
+ import { assertSandboxSupportsWorkspacePolicy, createExecutor, getUnresolvedSandboxPathContext, } from "../sandbox/registry.js";
17
+ import { resolveWorkspaceProjection } from "../office/projection.js";
18
+ import { createHash } from "node:crypto";
19
+ import { resolveConversationSettings } from "../settings/index.js";
20
+ import { ensureDefaultOpenConnector } from "./open-connector.js";
21
+ import { OfficeEventStore } from "../events/index.js";
22
+ import { addLifecycleEvent, updateActiveSpanAttribution } from "../observability/index.js";
23
+ import { conversationIdOf, isThreadSessionKey } from "../sessions/session-key.js";
24
+ import { START_TASK_TOOL, TASK_STATUS_TOOL } from "./tools/task.js";
25
+ import { loadMikanSkills } from "./skills.js";
26
+ import { normalizeAttachRuntimePath, withStagedRuntimeFile, buildPromptPayload, buildSystemPrompt, buildTurnInstructions, getMemory, resolveTriggerAttribution, } from "./prompt.js";
27
+ import { attachSessionEventHandlers, activateRunPresentation, createRunState, finalizeRunResponse, getFinalAssistantText, isEventTriggerAttribution, reportUsageSummary, } from "./presenter.js";
19
28
  import * as log from "../log.js";
20
- import { resolveHarnessSettings } from "./settings.js";
21
- // Transient provider failures worth retrying: overload/rate-limit responses,
22
- // 5xx statuses, and network/stream interruptions.
23
- const RETRYABLE_ERROR_PATTERN = /overloaded|provider.?returned.?error|rate.?limit|too many requests|429|500|502|503|504|service.?unavailable|server.?error|internal.?error|network.?error|connection.?error|connection.?refused|connection.?lost|websocket.?closed|websocket.?error|other side closed|fetch failed|upstream.?connect|reset before headers|socket hang up|ended without|stream ended before message_stop|http2 request did not get a response|timed? out|timeout|terminated|retry delay/i;
24
- function sleep(ms, signal) {
25
- return new Promise((resolve, reject) => {
26
- if (signal.aborted) {
27
- reject(new Error("aborted"));
28
- return;
29
- }
30
- const timer = setTimeout(() => {
31
- signal.removeEventListener("abort", onAbort);
32
- resolve();
33
- }, ms);
34
- const onAbort = () => {
35
- clearTimeout(timer);
36
- reject(new Error("aborted"));
37
- };
38
- signal.addEventListener("abort", onAbort, { once: true });
29
+ import { errorMessage } from "../unknown-values.js";
30
+ const globalSubagentSlots = new SubagentSlotPool(DEFAULT_GLOBAL_SUBAGENT_SLOTS);
31
+ async function createConfiguredAgentSession(params) {
32
+ const { workspaceDir, systemPrompt, model, thinkingLevel, tools, toolContext, sessionStore, models, } = params;
33
+ const loadedProfiles = loadSubagentProfiles(workspaceDir);
34
+ for (const diagnostic of loadedProfiles.diagnostics) {
35
+ log.logWarning(`Subagent profile ignored: ${diagnostic.path}`, diagnostic.message);
36
+ }
37
+ const availableToolNames = new Set(tools.map((tool) => tool.name));
38
+ const runnableProfiles = new Map([...loadedProfiles.profiles].filter(([, profile]) => profile.tools.every((tool) => availableToolNames.has(tool))));
39
+ let session;
40
+ const subagentTool = createSubagentTool(async (request, hooks) => runSubagent({
41
+ request,
42
+ onActivity: hooks?.onActivity,
43
+ defaultModel: model,
44
+ thinkingLevel,
45
+ models,
46
+ availableTools: tools.filter((tool) => ![START_TASK_TOOL, TASK_STATUS_TOOL].includes(tool.name)),
47
+ profiles: runnableProfiles,
48
+ slots: globalSubagentSlots,
49
+ toolContext,
50
+ parentEntries: await session.sessionStore.getContextEntries(),
51
+ onUsage: session.captureExternalUsageSink(),
52
+ }), runnableProfiles);
53
+ session = new MikanAgentSession({
54
+ systemPrompt,
55
+ model,
56
+ thinkingLevel,
57
+ tools: [...tools, adaptAgentTool(subagentTool)],
58
+ toolContext,
59
+ models,
60
+ sessionStore,
39
61
  });
62
+ return session;
40
63
  }
41
- export class MikanAgentSession {
42
- constructor(options) {
43
- this.listeners = new Set();
44
- this.retryAttempt = 0;
45
- this.overflowRecoveryAttempted = false;
46
- this.tally = { tokens: 0, costUsd: 0, llmCalls: 0, startedAt: 0 };
47
- this.runBudget = {};
48
- this.models = options.models;
49
- this.sessionStore = options.sessionStore;
50
- this.settings = resolveHarnessSettings(options.settings);
51
- this.extensions = options.extensions;
52
- const tools = [...options.tools, ...(options.extensions?.getContributedTools() ?? [])];
53
- this.agent = new Agent({
54
- initialState: {
55
- systemPrompt: options.systemPrompt,
56
- model: options.model,
57
- thinkingLevel: options.thinkingLevel,
58
- tools,
59
- },
60
- convertToLlm,
61
- streamFn: (model, context, streamOptions) => this.models.models.streamSimple(model, context, streamOptions),
62
- beforeToolCall: async ({ toolCall, args }) => {
63
- if (!this.extensions?.hasHandlers("tool_call"))
64
- return undefined;
65
- const result = await this.extensions.emit("tool_call", {
66
- toolCallId: toolCall.id,
67
- toolName: toolCall.name,
68
- args,
69
- });
70
- return result ?? undefined;
71
- },
72
- afterToolCall: async ({ toolCall, args, result, isError }) => {
73
- if (this.extensions?.hasHandlers("tool_result")) {
74
- await this.extensions.emit("tool_result", {
75
- toolCallId: toolCall.id,
76
- toolName: toolCall.name,
77
- args,
78
- content: result.content,
79
- isError,
80
- });
81
- }
82
- return undefined;
83
- },
84
- });
85
- this.agent.subscribe(async (event) => {
86
- await this.handleAgentEvent(event);
64
+ function createRunnerExecutionContext(sandboxConfig, vaultManager, provisioner, workspace) {
65
+ const executionResolver = vaultManager && sandboxConfig.type !== "host"
66
+ ? new ActorExecutionResolver(sandboxConfig, vaultManager, provisioner, workspace)
67
+ : undefined;
68
+ let activeExecutor = executionResolver !== undefined
69
+ ? createExecutor({ type: "host" })
70
+ : createExecutor(sandboxConfig);
71
+ const executor = {
72
+ exec(command, options) {
73
+ return activeExecutor.exec(command, options);
74
+ },
75
+ readFile(path, options) {
76
+ return activeExecutor.readFile(path, options);
77
+ },
78
+ readFileBase64(path, options) {
79
+ return activeExecutor.readFileBase64(path, options);
80
+ },
81
+ writeFile(path, content, options) {
82
+ return activeExecutor.writeFile(path, content, options);
83
+ },
84
+ getWorkspacePath(hostPath) {
85
+ return activeExecutor.getWorkspacePath(hostPath);
86
+ },
87
+ getSandboxConfig() {
88
+ return activeExecutor.getSandboxConfig();
89
+ },
90
+ getPathContext(hostWorkspaceRoot) {
91
+ return activeExecutor.getPathContext(hostWorkspaceRoot);
92
+ },
93
+ };
94
+ return {
95
+ executor,
96
+ async resolveForRun(context) {
97
+ if (executionResolver) {
98
+ const decision = await executionResolver.resolve(context);
99
+ activeExecutor = decision.executor;
100
+ return {
101
+ pathContext: decision.pathContext,
102
+ projection: decision.projection,
103
+ };
104
+ }
105
+ const office = workspace.office(context.address);
106
+ const projection = resolveWorkspaceProjection(office);
107
+ assertSandboxSupportsWorkspacePolicy(sandboxConfig, projection.visibility, office.key);
108
+ return {
109
+ pathContext: executor.getPathContext(workspace.root),
110
+ projection,
111
+ };
112
+ },
113
+ };
114
+ }
115
+ const THREAD_SESSION_NAME_MAX_CHARS = 80;
116
+ function buildThreadSessionName(message) {
117
+ const firstLine = message?.text
118
+ ?.split("\n")
119
+ .map((line) => line.trim())
120
+ .find(Boolean);
121
+ if (!firstLine)
122
+ return undefined;
123
+ const chars = Array.from(firstLine);
124
+ const title = chars.length > THREAD_SESSION_NAME_MAX_CHARS
125
+ ? `${chars.slice(0, THREAD_SESSION_NAME_MAX_CHARS).join("")}…`
126
+ : firstLine;
127
+ const userLabel = message?.userName || message?.user || "unknown";
128
+ return `[${userLabel}]: ${title}`;
129
+ }
130
+ async function ensureDefaultMcpServers(options) {
131
+ if (options.trustModel === "open-trigger")
132
+ return;
133
+ try {
134
+ await ensureDefaultOpenConnector({
135
+ office: options.office,
136
+ platformWorkspaceId: options.platformWorkspaceId,
137
+ defaultServer: options.openConnector,
138
+ signal: options.signal,
87
139
  });
88
140
  }
89
- /** Conversation transcript currently held by the agent. */
90
- get messages() {
91
- return this.agent.state.messages;
141
+ catch (error) {
142
+ options.signal?.throwIfAborted();
143
+ log.logWarning(`[${options.office.address.conversationId}] OpenConnector default provisioning failed`, errorMessage(error));
92
144
  }
93
- get model() {
94
- return this.agent.state.model;
95
- }
96
- subscribe(listener) {
97
- this.listeners.add(listener);
98
- return () => this.listeners.delete(listener);
145
+ }
146
+ async function preparePromptContext(params) {
147
+ const { message, platform, office, executor, resolveForRun, session } = params;
148
+ const conversationId = office.address.conversationId;
149
+ const decision = await resolveForRun({
150
+ address: message.address,
151
+ userId: message.userId,
152
+ trustModel: platform.trustModel,
153
+ });
154
+ const { pathContext, projection } = decision;
155
+ const memory = getMemory(projection);
156
+ const conversationSkillLoad = loadMikanSkills(office, pathContext.runtimeWorkspaceRoot, projection);
157
+ const triggerAttribution = resolveTriggerAttribution(message);
158
+ const systemPrompt = buildSystemPrompt({
159
+ workspacePath: pathContext.runtimeWorkspaceRoot,
160
+ office,
161
+ memory,
162
+ sandboxConfig: executor.getSandboxConfig(),
163
+ platform,
164
+ skills: conversationSkillLoad.skills,
165
+ projection,
166
+ skippedSkillLinks: conversationSkillLoad.skippedSkillLinks,
167
+ });
168
+ session.setSystemPrompt(systemPrompt);
169
+ const promptHash = createHash("sha256").update(systemPrompt).digest("hex").slice(0, 8);
170
+ log.logInfo(`[${conversationId}] System prompt (base): ${systemPrompt.length} chars, sha ${promptHash}`);
171
+ return { pathContext, memory, systemPrompt, triggerAttribution };
172
+ }
173
+ function bindRunCapabilities(params, pathContext) {
174
+ const { message, responder, platform, office, executor, setEventContext, setSandboxContext, setUploadFunction, setImageUploadFunction, setReactFunction, bindTasks, bindPlatformToolPacks, } = params;
175
+ setEventContext({
176
+ platform: platform.name,
177
+ conversationId: office.address.conversationId,
178
+ conversationKind: message.conversationKind,
179
+ userId: message.userId,
180
+ });
181
+ setSandboxContext({ address: message.address, userId: message.userId });
182
+ setUploadFunction(async (filePath, title) => {
183
+ const runtimePath = normalizeAttachRuntimePath(filePath, pathContext.runtimeWorkspaceRoot);
184
+ await withStagedRuntimeFile(executor, runtimePath, (stagedPath) => responder.uploadFile(stagedPath, title));
185
+ });
186
+ setImageUploadFunction(async (hostPath, title) => {
187
+ await responder.uploadFile(hostPath, title);
188
+ });
189
+ bindTasks(responder);
190
+ setReactFunction(responder.react ? async (emoji) => responder.react(emoji) : null);
191
+ bindPlatformToolPacks({
192
+ conversationId: office.address.conversationId,
193
+ platformName: platform.name,
194
+ threadTs: message.threadTs,
195
+ });
196
+ }
197
+ async function prepareRunContext(params) {
198
+ const { message, platform, office, executor } = params;
199
+ const sessionConversation = conversationIdOf(message.sessionKey);
200
+ await mkdir(join(office.dir, "scratch"), { recursive: true });
201
+ const { pathContext, memory, systemPrompt, triggerAttribution } = await preparePromptContext(params);
202
+ bindRunCapabilities(params, pathContext);
203
+ log.logInfo(`Context sizes - system: ${systemPrompt.length} chars, memory: ${memory.length} chars`);
204
+ log.logInfo(`Channels: ${platform.channels.length}, Users: ${platform.users.length}`);
205
+ const { userMessage, imageAttachments } = await buildPromptPayload(message, pathContext.runtimeWorkspaceRoot, pathContext, (runtimePath) => executor.readFileBase64(runtimePath));
206
+ const turnInstructions = buildTurnInstructions(message.id.startsWith("event:"));
207
+ const finalUserMessage = turnInstructions ? `${turnInstructions}\n\n${userMessage}` : userMessage;
208
+ return {
209
+ sessionConversation,
210
+ userMessage: finalUserMessage,
211
+ imageAttachments,
212
+ triggerAttribution,
213
+ };
214
+ }
215
+ async function buildInitialSystemPrompt(params) {
216
+ const { office, pathContext, projection, sandboxConfig } = params;
217
+ const memory = getMemory(projection);
218
+ const { skills, skippedSkillLinks } = loadMikanSkills(office, pathContext.runtimeWorkspaceRoot, projection);
219
+ return buildSystemPrompt({
220
+ workspacePath: pathContext.runtimeWorkspaceRoot,
221
+ office,
222
+ memory,
223
+ sandboxConfig,
224
+ platform: {
225
+ name: "chat",
226
+ formattingGuide: "",
227
+ channels: [],
228
+ users: [],
229
+ trustModel: "membership",
230
+ },
231
+ skills,
232
+ projection,
233
+ skippedSkillLinks,
234
+ });
235
+ }
236
+ async function rollbackRunnerResource(label, cleanup) {
237
+ try {
238
+ await cleanup();
99
239
  }
100
- /** Replace the agent transcript from the persisted session tree. */
101
- reloadFromSession() {
102
- const context = this.sessionStore.buildSessionContext();
103
- if (context.messages.length > 0) {
104
- this.agent.state.messages = context.messages;
105
- }
106
- return context.messages.length;
240
+ catch (error) {
241
+ log.logWarning(`Runner rollback failed to ${label}`, String(error));
107
242
  }
108
- /**
109
- * Send a user prompt and run the agent loop to completion, including
110
- * automatic retries and compaction. Resolves when the turn (and any
111
- * recovery continuations) settles.
112
- *
113
- * @param options.budget Per-run resource ceilings that override the session
114
- * defaults. Autonomous (event / trigger) runs should pass a budget so a
115
- * runaway loop is stopped even with no human watching.
116
- */
117
- async prompt(text, options) {
118
- if (this.agent.state.isStreaming) {
119
- throw new Error("Agent is already processing a prompt");
120
- }
121
- const model = this.agent.state.model;
122
- await this.ensureAuthConfigured(model);
123
- this.retryAttempt = 0;
124
- this.overflowRecoveryAttempted = false;
125
- this.runBudget = { ...this.settings.budget, ...options?.budget };
126
- this.budgetExceededReason = undefined;
127
- this.tally = { tokens: 0, costUsd: 0, llmCalls: 0, startedAt: Date.now() };
128
- // A previous turn may have ended over the threshold (for example after an
129
- // abort); compact before adding new context on top.
130
- const lastAssistant = this.findLastAssistantMessage();
131
- if (lastAssistant && lastAssistant.stopReason !== "error") {
132
- await this.checkThresholdCompaction(lastAssistant);
133
- }
134
- let systemPrompt = this.agent.state.systemPrompt;
135
- if (this.extensions?.hasHandlers("before_agent_start")) {
136
- const result = await this.extensions.emit("before_agent_start", {
137
- prompt: text,
138
- images: options?.images,
139
- systemPrompt,
140
- });
141
- if (result?.systemPrompt && result.systemPrompt !== systemPrompt) {
142
- // An extension rewrote the system prompt for this turn. Log the new
143
- // size so the diagnostic in agent.ts (which logs the pre-hook prompt)
144
- // isn't mistaken for the final prompt sent to the model.
145
- log.logInfo(`Extension rewrote system prompt: ${systemPrompt.length} → ${result.systemPrompt.length} chars`);
146
- systemPrompt = result.systemPrompt;
147
- this.agent.state.systemPrompt = systemPrompt;
148
- }
149
- }
150
- const userMessage = {
151
- role: "user",
152
- content: [{ type: "text", text }, ...(options?.images ?? [])],
153
- timestamp: Date.now(),
154
- };
155
- await this.agent.prompt([userMessage]);
156
- while (await this.handlePostRun()) {
157
- await this.agent.continue();
158
- }
159
- if (this.extensions?.hasHandlers("turn_end")) {
160
- await this.extensions.emit("turn_end", { messages: this.agent.state.messages });
243
+ }
244
+ async function openRunnerSessionManager(params) {
245
+ const { office, sessionKey, threadRootMessage } = params;
246
+ const sessionManager = await SessionStore.open(office, sessionKey);
247
+ try {
248
+ const threadSessionName = buildThreadSessionName(threadRootMessage);
249
+ if (isThreadSessionKey(sessionKey) &&
250
+ threadSessionName &&
251
+ (await sessionManager.getSessionName()) !== threadSessionName) {
252
+ await sessionManager.setSessionName(threadSessionName);
161
253
  }
254
+ return sessionManager;
162
255
  }
163
- /** Abort the active run, pending retry backoff, and in-flight compaction. */
164
- abort() {
165
- this.retryAbortController?.abort();
166
- this.compactionAbortController?.abort();
167
- this.agent.abort();
168
- }
169
- async ensureAuthConfigured(model) {
170
- const auth = await this.models.getAuth(model);
171
- if (!auth) {
172
- throw new Error(`No credentials for provider "${model.provider}". Set the provider API key environment variable or add it to auth.json.`);
173
- }
256
+ catch (error) {
257
+ await rollbackRunnerResource("close the session writer", () => sessionManager.close());
258
+ throw error;
174
259
  }
175
- async emit(event) {
176
- for (const listener of this.listeners) {
177
- try {
178
- await listener(event);
179
- }
180
- catch (err) {
181
- log.logWarning("Harness event listener failed", err instanceof Error ? err.message : String(err));
182
- }
183
- }
260
+ }
261
+ async function createRunnerAgentSession(params) {
262
+ const { workspaceDir, systemPrompt, model, agentConfig, tools, toolContext, sessionManager, modelRegistry, signal, } = params;
263
+ const mcpTools = await sessionManager.connectMcp(agentConfig.mcpServers ?? {}, signal);
264
+ return createConfiguredAgentSession({
265
+ workspaceDir,
266
+ systemPrompt,
267
+ model,
268
+ thinkingLevel: agentConfig.thinkingLevel,
269
+ tools: [...tools, ...mcpTools.map(withSecretRedaction)],
270
+ toolContext,
271
+ sessionStore: sessionManager,
272
+ models: modelRegistry,
273
+ });
274
+ }
275
+ async function runPreparedTurn(params) {
276
+ const { prepared, presentation, message, responder, platform, runState, session, model, agentConfig, sessionUuid, conversationId, office, sessionView, } = params;
277
+ if (runState.logCtx) {
278
+ log.logAgentRunStart(runState.logCtx, model.provider, model.id, model.name);
184
279
  }
185
- async handleAgentEvent(event) {
186
- await this.emit(event);
187
- if (event.type !== "message_end")
188
- return;
189
- const message = event.message;
190
- if (message.role === "user" || message.role === "assistant" || message.role === "toolResult") {
191
- this.sessionStore.appendMessage(message);
192
- }
193
- else if (message.role === "custom") {
194
- const custom = message;
195
- this.sessionStore.appendCustomMessageEntry(custom.customType, custom.content, custom.display, custom.details);
196
- }
197
- if (this.extensions?.hasHandlers("message_end")) {
198
- await this.extensions.emit("message_end", { message });
199
- }
200
- if (message.role === "assistant") {
201
- this.recordUsage(message);
202
- await this.enforceBudget();
203
- if (message.stopReason !== "error") {
204
- this.overflowRecoveryAttempted = false;
205
- if (this.retryAttempt > 0) {
206
- await this.emit({ type: "auto_retry_end", success: true, attempt: this.retryAttempt });
207
- this.retryAttempt = 0;
208
- }
280
+ updateActiveSpanAttribution({
281
+ provider: model.provider,
282
+ model: model.id,
283
+ channel_id: prepared.sessionConversation,
284
+ session_id: sessionUuid,
285
+ "mikan.input.message_count": 1,
286
+ "mikan.input.characters": prepared.userMessage.length,
287
+ "mikan.input.attachment_count": message.attachments?.length ?? 0,
288
+ "mikan.input.image_count": prepared.imageAttachments.length,
289
+ "mikan.input.has_text": prepared.userMessage.length > 0,
290
+ });
291
+ addLifecycleEvent("agent.prompt.sent", {
292
+ provider: model.provider,
293
+ model: agentConfig.model,
294
+ channel_id: prepared.sessionConversation,
295
+ session_id: sessionUuid,
296
+ attachment_count: message.attachments?.length ?? 0,
297
+ image_attachment_count: prepared.imageAttachments.length,
298
+ });
299
+ const isEventRun = message.id.startsWith("event:");
300
+ await session.sessionStore.appendCustomEntry(RUN_CAUSE_CUSTOM_TYPE, { messageId: message.id });
301
+ await session.prompt(prepared.userMessage, {
302
+ allowTaskHandoff: responder.startTask !== undefined,
303
+ allowTaskStatus: responder.getTaskStatus !== undefined,
304
+ images: prepared.imageAttachments.length > 0 ? prepared.imageAttachments : undefined,
305
+ budget: isEventRun ? DEFAULT_EVENT_BUDGET : undefined,
306
+ });
307
+ await presentation.wait();
308
+ if (session.getLastRunStats().status === "aborted")
309
+ runState.stopReason = "aborted";
310
+ const sessionViewTokenStore = sessionView?.tokenStore;
311
+ const sessionViewPortalBaseUrl = sessionView?.portalBaseUrl;
312
+ let sessionViewLink;
313
+ const createSessionViewLink = sessionViewTokenStore && sessionViewPortalBaseUrl
314
+ ? () => {
315
+ if (!sessionViewLink) {
316
+ const token = sessionViewTokenStore.create({
317
+ platform: platform.name,
318
+ platformUserId: message.userId,
319
+ conversationId,
320
+ sessionKey: message.sessionKey,
321
+ office,
322
+ platformUserName: message.userName,
323
+ });
324
+ sessionViewLink = `${sessionViewPortalBaseUrl}/session?token=${token.token}`;
209
325
  }
326
+ return sessionViewLink;
210
327
  }
328
+ : undefined;
329
+ await finalizeRunResponse(responder, session, runState, {
330
+ initialTask: message.id.startsWith("task:"),
331
+ triggerSessionLink: isEventTriggerAttribution(prepared.triggerAttribution)
332
+ ? createSessionViewLink?.()
333
+ : undefined,
334
+ createOverflowLink: createSessionViewLink,
335
+ platform: platform.name,
336
+ model,
337
+ sessionConversation: prepared.sessionConversation,
338
+ sessionUuid,
339
+ });
340
+ await reportUsageSummary({
341
+ session,
342
+ runState,
343
+ responder,
344
+ platform,
345
+ model,
346
+ sessionConversation: prepared.sessionConversation,
347
+ sessionUuid,
348
+ waitForQueue: presentation.wait,
349
+ });
350
+ return {
351
+ stopReason: runState.stopReason,
352
+ errorMessage: runState.errorMessage,
353
+ finalText: getFinalAssistantText(session),
354
+ };
355
+ }
356
+ async function steerRun(session, activeMessage, message) {
357
+ if (!activeMessage)
358
+ return false;
359
+ await session.sessionStore.appendCustomEntry(CONTROL_INPUT_CUSTOM_TYPE, {
360
+ messageId: message.id,
361
+ });
362
+ if (!session.isActiveRun)
363
+ throw new Error("Task is preparing or settling. Please retry this update shortly.");
364
+ if (message.userId !== activeMessage.userId)
365
+ throw new Error("Only the task's current actor can guide this run.");
366
+ if (message.attachments?.length)
367
+ throw new Error("Stop the task before continuing with new attachments.");
368
+ if (!(await session.steer(`[${message.userName ?? message.userId}]: ${message.text}`))) {
369
+ throw new Error("Task settled while receiving this update. Please send it again to continue.");
211
370
  }
212
- /** Fold one assistant turn's usage into the running per-run tally. */
213
- recordUsage(message) {
214
- this.tally.llmCalls += 1;
215
- const usage = message.usage;
216
- if (!usage)
217
- return;
218
- this.tally.tokens += usage.input + usage.output + usage.cacheRead + usage.cacheWrite;
219
- this.tally.costUsd += usage.cost?.total ?? 0;
220
- }
221
- /** Compare the tally against the run budget; abort the run when a cap is exceeded. */
222
- async enforceBudget() {
223
- if (this.budgetExceededReason)
224
- return;
225
- const reason = this.overBudgetReason();
226
- if (!reason)
227
- return;
228
- this.budgetExceededReason = reason;
229
- await this.emit({
230
- type: "budget_exceeded",
231
- reason,
232
- tokens: this.tally.tokens,
233
- costUsd: this.tally.costUsd,
234
- llmCalls: this.tally.llmCalls,
235
- durationMs: Date.now() - this.tally.startedAt,
236
- });
237
- log.logWarning("Run budget exceeded — aborting", reason);
238
- this.agent.abort();
239
- }
240
- overBudgetReason() {
241
- const { maxTokens, maxCostUsd, maxDurationMs, maxLlmCalls } = this.runBudget;
242
- if (maxLlmCalls !== undefined && this.tally.llmCalls >= maxLlmCalls) {
243
- return `${this.tally.llmCalls} LLM calls >= ${maxLlmCalls} limit`;
244
- }
245
- if (maxTokens !== undefined && this.tally.tokens >= maxTokens) {
246
- return `${this.tally.tokens} tokens >= ${maxTokens} limit`;
247
- }
248
- if (maxCostUsd !== undefined && this.tally.costUsd >= maxCostUsd) {
249
- return `cost ${this.tally.costUsd.toFixed(2)} USD >= ${maxCostUsd} USD limit`;
250
- }
251
- if (maxDurationMs !== undefined && Date.now() - this.tally.startedAt >= maxDurationMs) {
252
- return `${Date.now() - this.tally.startedAt}ms >= ${maxDurationMs}ms limit`;
253
- }
254
- return undefined;
255
- }
256
- findLastAssistantMessage() {
257
- const messages = this.agent.state.messages;
258
- for (let i = messages.length - 1; i >= 0; i--) {
259
- const message = messages[i];
260
- if (message.role === "assistant")
261
- return message;
262
- }
263
- return undefined;
371
+ return true;
372
+ }
373
+ async function publishRunLifecycle(publish, message, run) {
374
+ publish?.({
375
+ type: "run_started",
376
+ userName: message.userName ?? message.userId,
377
+ text: message.text,
378
+ });
379
+ try {
380
+ return await run();
264
381
  }
265
- /** Decide what to do after a run settles. Returns true when the agent should continue. */
266
- async handlePostRun() {
267
- // A run stopped for going over budget must not be retried or compacted back
268
- // into another continuation — that would defeat the circuit breaker.
269
- if (this.budgetExceededReason)
270
- return false;
271
- const lastAssistant = this.findLastAssistantMessage();
272
- if (!lastAssistant)
273
- return false;
274
- if (lastAssistant.stopReason === "error") {
275
- const contextWindow = this.agent.state.model.contextWindow || 0;
276
- if (isContextOverflow(lastAssistant, contextWindow)) {
277
- return this.handleOverflow();
278
- }
279
- if (this.isRetryableError(lastAssistant)) {
280
- return this.prepareRetry(lastAssistant);
281
- }
282
- return false;
283
- }
284
- return this.checkThresholdCompaction(lastAssistant);
382
+ finally {
383
+ publish?.({ type: "run_ended" });
285
384
  }
286
- async handleOverflow() {
287
- if (this.overflowRecoveryAttempted) {
288
- await this.emit({
289
- type: "compaction_end",
290
- reason: "overflow",
291
- aborted: false,
292
- errorMessage: "Context overflow recovery failed after one compact-and-retry attempt. Try /new or a larger-context model.",
385
+ }
386
+ function prepareRunnerTurn(params, message, responder, platform) {
387
+ const { office, executor, resolveForRun, session, toolBindings } = params;
388
+ return prepareRunContext({
389
+ message,
390
+ responder,
391
+ platform,
392
+ office,
393
+ executor,
394
+ resolveForRun,
395
+ session,
396
+ setEventContext: toolBindings.setEventContext,
397
+ setSandboxContext: toolBindings.setSandboxContext,
398
+ setUploadFunction: toolBindings.setUploadFunction,
399
+ setImageUploadFunction: toolBindings.setImageUploadFunction,
400
+ setReactFunction: toolBindings.setReactFunction,
401
+ bindTasks: toolBindings.bindTasks,
402
+ bindPlatformToolPacks: toolBindings.bindPlatformToolPacks,
403
+ });
404
+ }
405
+ function createRunnerInterface(params) {
406
+ const { conversationId, sessionKey, office, sessionUuid, sessionView, runEvents, runState, session, model, agentConfig, sessionManager, chatSessionManager, } = params;
407
+ const publishRunEvent = runEvents
408
+ ? (event) => runEvents.publish(office.address, sessionKey, event)
409
+ : undefined;
410
+ let activeMessage;
411
+ let stopped = false;
412
+ return {
413
+ steer: (message) => steerRun(session, activeMessage, message),
414
+ async syncChatHistory(currentMessageId) {
415
+ await chatSessionManager.syncSessionManager({
416
+ office,
417
+ sessionKey,
418
+ sessionManager,
419
+ currentMessageId,
293
420
  });
294
- return false;
295
- }
296
- this.overflowRecoveryAttempted = true;
297
- this.dropTrailingErrorMessage();
298
- return this.runCompaction("overflow", true);
299
- }
300
- async checkThresholdCompaction(lastAssistant) {
301
- const settings = this.settings.compaction;
302
- if (!settings.enabled)
303
- return false;
304
- const contextWindow = this.agent.state.model.contextWindow || 0;
305
- if (contextWindow <= 0)
306
- return false;
307
- let contextTokens = lastAssistant.usage ? calculateContextTokens(lastAssistant.usage) : 0;
308
- if (contextTokens === 0) {
309
- const estimate = estimateContextTokens(this.agent.state.messages);
310
- if (estimate.lastUsageIndex === null)
311
- return false;
312
- contextTokens = estimate.tokens;
313
- }
314
- if (!shouldCompact(contextTokens, contextWindow, settings))
315
- return false;
316
- return this.runCompaction("threshold", false);
317
- }
318
- async runCompaction(reason, willRetry) {
319
- let started = false;
320
- try {
321
- const pathEntries = this.sessionStore.getBranch();
322
- const preparation = getOrThrow(prepareCompaction(pathEntries, this.settings.compaction));
323
- if (!preparation)
324
- return false;
325
- await this.emit({ type: "compaction_start", reason });
326
- started = true;
327
- this.compactionAbortController = new AbortController();
328
- const signal = this.compactionAbortController.signal;
329
- const result = getOrThrow(await compact(preparation, this.models.models, this.agent.state.model, undefined, signal, this.agent.state.thinkingLevel));
330
- if (signal.aborted) {
331
- await this.emit({ type: "compaction_end", reason, aborted: true });
332
- return false;
333
- }
334
- const entryId = this.sessionStore.appendCompaction(result.summary, result.firstKeptEntryId, result.tokensBefore, result.details);
335
- const context = this.sessionStore.buildSessionContext();
336
- this.agent.state.messages = context.messages;
337
- if (this.extensions?.hasHandlers("session_compact")) {
338
- const entry = this.sessionStore.getEntry(entryId);
339
- if (entry?.type === "compaction") {
340
- await this.extensions.emit("session_compact", {
341
- entry: entry,
342
- reason,
421
+ },
422
+ async run(message, responder, platform) {
423
+ activeMessage = message;
424
+ stopped = false;
425
+ let presentation;
426
+ return publishRunLifecycle(publishRunEvent, message, async () => {
427
+ try {
428
+ const prepared = await prepareRunnerTurn(params, message, responder, platform);
429
+ if (stopped)
430
+ return { stopReason: "aborted" };
431
+ presentation = activateRunPresentation(runState, {
432
+ responder,
433
+ sessionConversation: prepared.sessionConversation,
434
+ userName: message.userName,
435
+ sessionUuid,
436
+ triggerAttribution: prepared.triggerAttribution,
437
+ publishRunEvent,
438
+ });
439
+ return await runPreparedTurn({
440
+ prepared,
441
+ presentation,
442
+ message,
443
+ responder,
444
+ platform,
445
+ runState,
446
+ session,
447
+ model,
448
+ agentConfig,
449
+ sessionUuid,
450
+ conversationId,
451
+ office,
452
+ sessionView,
343
453
  });
344
454
  }
345
- }
346
- await this.emit({
347
- type: "compaction_end",
348
- reason,
349
- result: {
350
- summary: result.summary,
351
- firstKeptEntryId: result.firstKeptEntryId,
352
- tokensBefore: result.tokensBefore,
353
- },
354
- aborted: false,
355
- });
356
- if (willRetry) {
357
- this.dropTrailingErrorMessage();
358
- return true;
359
- }
360
- return this.agent.hasQueuedMessages();
361
- }
362
- catch (error) {
363
- const errorMessage = error instanceof Error ? error.message : "compaction failed";
364
- if (started) {
365
- await this.emit({
366
- type: "compaction_end",
367
- reason,
368
- aborted: false,
369
- errorMessage: reason === "overflow"
370
- ? `Context overflow recovery failed: ${errorMessage}`
371
- : `Auto-compaction failed: ${errorMessage}`,
372
- });
373
- }
374
- else {
375
- log.logWarning("Compaction preparation failed", errorMessage);
376
- }
377
- return false;
378
- }
379
- finally {
380
- this.compactionAbortController = undefined;
381
- }
382
- }
383
- isRetryableError(message) {
384
- if (message.stopReason !== "error" || !message.errorMessage)
385
- return false;
386
- return RETRYABLE_ERROR_PATTERN.test(message.errorMessage);
387
- }
388
- async prepareRetry(message) {
389
- const settings = this.settings.retry;
390
- if (!settings.enabled)
391
- return false;
392
- this.retryAttempt++;
393
- if (this.retryAttempt > settings.maxRetries) {
394
- this.retryAttempt--;
395
- await this.emit({
396
- type: "auto_retry_end",
397
- success: false,
398
- attempt: this.retryAttempt,
399
- finalError: message.errorMessage,
455
+ finally {
456
+ activeMessage = undefined;
457
+ presentation?.dispose();
458
+ }
400
459
  });
401
- this.retryAttempt = 0;
402
- return false;
403
- }
404
- const delayMs = settings.baseDelayMs * 2 ** (this.retryAttempt - 1);
405
- await this.emit({
406
- type: "auto_retry_start",
407
- attempt: this.retryAttempt,
408
- maxAttempts: settings.maxRetries,
409
- delayMs,
410
- errorMessage: message.errorMessage || "Unknown error",
460
+ },
461
+ abort() {
462
+ stopped = true;
463
+ session.abort();
464
+ },
465
+ async dispose() {
466
+ await sessionManager.close();
467
+ },
468
+ getCurrentStep() {
469
+ const first = runState.pendingTools.values().next().value;
470
+ if (!first)
471
+ return undefined;
472
+ return {
473
+ toolName: first.toolName,
474
+ label: first.args?.label,
475
+ };
476
+ },
477
+ };
478
+ }
479
+ async function finishRunnerCreation(params) {
480
+ const { options, conversationId, workspaceDir, executor, resolveForRun, model, modelRegistry, agentConfig, systemPrompt, sessionManager, toolBindings, platformToolRoles, toolContext, } = params;
481
+ const { sessionKey, office, sessionView, chatHistory, runEvents } = options;
482
+ try {
483
+ const sessionUuid = sessionManager.getSessionId();
484
+ const session = await createRunnerAgentSession({
485
+ workspaceDir,
486
+ systemPrompt,
487
+ model,
488
+ agentConfig,
489
+ tools: [
490
+ ...toolBindings.tools,
491
+ withSecretRedaction(adaptAgentTool(createHistoryTool({ office, sessionKey }))),
492
+ ],
493
+ toolContext,
494
+ sessionManager,
495
+ modelRegistry,
496
+ conversationId,
497
+ signal: options.signal,
498
+ });
499
+ options.signal?.throwIfAborted();
500
+ const runState = createRunState();
501
+ attachSessionEventHandlers({ session, runState, model, agentConfig, platformToolRoles });
502
+ return createRunnerInterface({
503
+ conversationId,
504
+ sessionKey,
505
+ office,
506
+ sessionUuid,
507
+ sessionView,
508
+ runEvents,
509
+ runState,
510
+ executor,
511
+ resolveForRun,
512
+ session,
513
+ model,
514
+ agentConfig,
515
+ sessionManager,
516
+ chatSessionManager: chatHistory,
517
+ toolBindings,
411
518
  });
412
- this.dropTrailingErrorMessage();
413
- this.retryAbortController = new AbortController();
414
- try {
415
- await sleep(delayMs, this.retryAbortController.signal);
416
- }
417
- catch {
418
- const attempt = this.retryAttempt;
419
- this.retryAttempt = 0;
420
- await this.emit({
421
- type: "auto_retry_end",
422
- success: false,
423
- attempt,
424
- finalError: "Retry cancelled",
425
- });
426
- return false;
427
- }
428
- finally {
429
- this.retryAbortController = undefined;
430
- }
431
- return true;
432
519
  }
433
- dropTrailingErrorMessage() {
434
- const messages = this.agent.state.messages;
435
- if (messages.length > 0 && messages[messages.length - 1].role === "assistant") {
436
- this.agent.state.messages = messages.slice(0, -1);
437
- }
520
+ catch (error) {
521
+ await rollbackRunnerResource("close the session writer", () => sessionManager.close());
522
+ throw error;
438
523
  }
439
524
  }
525
+ export async function createRunner(options) {
526
+ options.signal?.throwIfAborted();
527
+ const { sandboxConfig, sessionKey, office, trustModel, sessionScope, vaultManager, provisioner, resourceController, platformToolPackFactories, } = options;
528
+ const conversationId = office.address.conversationId;
529
+ const workspaceDir = office.workspace.root;
530
+ await ensureDefaultMcpServers({
531
+ office,
532
+ trustModel,
533
+ platformWorkspaceId: options.platformWorkspaceId,
534
+ openConnector: options.openConnector,
535
+ signal: options.signal,
536
+ });
537
+ options.signal?.throwIfAborted();
538
+ const resolvedAgentConfig = resolveConversationSettings(office);
539
+ const agentConfig = {
540
+ ...resolvedAgentConfig,
541
+ mcpServers: trustModel === "open-trigger" ? {} : (resolvedAgentConfig.mcpServers ?? {}),
542
+ };
543
+ const projection = resolveWorkspaceProjection(office);
544
+ assertSandboxSupportsWorkspacePolicy(sandboxConfig, projection.visibility, office.key);
545
+ const { executor, resolveForRun } = createRunnerExecutionContext(sandboxConfig, vaultManager, provisioner, office.workspace);
546
+ const pathContext = getUnresolvedSandboxPathContext(sandboxConfig, workspaceDir);
547
+ const toolContext = {
548
+ env: createSandboxExecutionEnv(executor, sandboxConfig.type, pathContext.runtimeWorkspaceRoot),
549
+ };
550
+ const modelRegistry = options.models ?? MikanModels.create();
551
+ if (modelRegistry.getError()) {
552
+ log.logWarning("models.json load error", modelRegistry.getError());
553
+ }
554
+ const model = modelRegistry.resolve(agentConfig.provider, agentConfig.model);
555
+ const platformToolPacks = (platformToolPackFactories ?? []).map((createPack) => createPack());
556
+ const toolBindings = createMikanTools(executor, new OfficeEventStore(office, options.eventScheduler), { sandbox: sandboxConfig, resourceController: resourceController ?? provisioner }, platformToolPacks, {
557
+ model,
558
+ getApiKey: () => modelRegistry.getApiKeyForProvider(model.provider),
559
+ outputDir: office.dir,
560
+ });
561
+ const systemPrompt = await buildInitialSystemPrompt({
562
+ office,
563
+ pathContext,
564
+ projection,
565
+ sandboxConfig,
566
+ });
567
+ options.signal?.throwIfAborted();
568
+ const { threadRootMessage } = sessionScope;
569
+ const sessionManager = await openRunnerSessionManager({
570
+ office,
571
+ sessionKey,
572
+ threadRootMessage,
573
+ });
574
+ return finishRunnerCreation({
575
+ options,
576
+ conversationId,
577
+ workspaceDir,
578
+ executor,
579
+ resolveForRun,
580
+ model,
581
+ modelRegistry,
582
+ agentConfig,
583
+ systemPrompt,
584
+ sessionManager,
585
+ toolBindings,
586
+ platformToolRoles: collectPlatformToolRoles(platformToolPacks),
587
+ toolContext,
588
+ });
589
+ }
590
+ function collectPlatformToolRoles(packs) {
591
+ return {
592
+ platformTools: new Set(packs.flatMap((pack) => pack.tools.map((tool) => tool.name))),
593
+ finalResponseTools: new Set(packs.flatMap((pack) => pack.finalResponseTools ?? [])),
594
+ };
595
+ }
440
596
  //# sourceMappingURL=runner.js.map